PageSourceSearch

https://www.stiftung-gedenkstaetten.de/.resources/buchenwald-base-…/js/main~2026-07-22-08-03-18-000~cache.js

js stiftung-gedenkstaetten.de collected 2026-10-02 03:37:00 UTC 1,449,267 bytes, 46,061 lines download raw bytes

vendor: 4,114 bytes, lines 1-114
1/**
2* @vue/shared v3.5.16
3* (c) 2018-present Yuxi (Evan) You and Vue contributors
4* @license MIT
5**/
6/*! #__NO_SIDE_EFFECTS__ */
7// @__NO_SIDE_EFFECTS__
8function makeMap(str) {
9  const map = /* @__PURE__ */ Object.create(null);
10  for (const key of str.split(",")) map[key] = 1;
11  return (val) => val in map;
12}
13const EMPTY_OBJ = {};
14const EMPTY_ARR = [];
15const NOOP = () => {
16};
17const NO = () => false;
18const isOn = (key) => key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // uppercase letter
19(key.charCodeAt(2) > 122 || key.charCodeAt(2) < 97);
20const isModelListener = (key) => key.startsWith("onUpdate:");
21const extend$5 = Object.assign;
22const remove = (arr, el) => {
23  const i = arr.indexOf(el);
24  if (i > -1) {
25    arr.splice(i, 1);
26  }
27};
28const hasOwnProperty$4 = Object.prototype.hasOwnProperty;
29const hasOwn$2 = (val, key) => hasOwnProperty$4.call(val, key);
30const isArray$3 = Array.isArray;
31const isMap = (val) => toTypeString$2(val) === "[object Map]";
32const isSet = (val) => toTypeString$2(val) === "[object Set]";
33const isDate$2 = (val) => toTypeString$2(val) === "[object Date]";
34const isRegExp$3 = (val) => toTypeString$2(val) === "[object RegExp]";
35const isFunction$3 = (val) => typeof val === "function";
36const isString$3 = (val) => typeof val === "string";
37const isSymbol$2 = (val) => typeof val === "symbol";
38const isObject$9 = (val) => val !== null && typeof val === "object";
39const isPromise$2 = (val) => {
40  return (isObject$9(val) || isFunction$3(val)) && isFunction$3(val.then) && isFunction$3(val.catch);
41};
42const objectToString$4 = Object.prototype.toString;
43const toTypeString$2 = (value) => objectToString$4.call(value);
44const toRawType = (value) => {
45  return toTypeString$2(value).slice(8, -1);
46};
47const isPlainObject$3 = (val) => toTypeString$2(val) === "[object Object]";
48const isIntegerKey = (key) => isString$3(key) && key !== "NaN" && key[0] !== "-" && "" + parseInt(key, 10) === key;
49const isReservedProp = /* @__PURE__ */ makeMap(
50  // the leading comma is intentional so empty string "" is also included
51  ",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"
52);
53const isBuiltInDirective = /* @__PURE__ */ makeMap(
54  "bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo"
55);
56const cacheStringFunction = (fn) => {
57  const cache2 = /* @__PURE__ */ Object.create(null);
58  return (str) => {
59    const hit = cache2[str];
60    return hit || (cache2[str] = fn(str));
61  };
62};
63const camelizeRE = /-(\w)/g;
64const camelize = cacheStringFunction(
65  (str) => {
66    return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : "");
67  }
68);
69const hyphenateRE = /\B([A-Z])/g;
70const hyphenate = cacheStringFunction(
71  (str) => str.replace(hyphenateRE, "-$1").toLowerCase()
72);
73const capitalize$1 = cacheStringFunction((str) => {
74  return str.charAt(0).toUpperCase() + str.slice(1);
75});
76const toHandlerKey = cacheStringFunction(
77  (str) => {
78    const s = str ? `on${capitalize$1(str)}` : ``;
79    return s;
80  }
81);
82const hasChanged = (value, oldValue) => !Object.is(value, oldValue);
83const invokeArrayFns = (fns, ...arg) => {
84  for (let i = 0; i < fns.length; i++) {
85    fns[i](...arg);
86  }
87};
88const def = (obj, key, value, writable = false) => {
89  Object.defineProperty(obj, key, {
90    configurable: true,
91    enumerable: false,
92    writable,
93    value
94  });
95};
96const looseToNumber = (val) => {
97  const n = parseFloat(val);
98  return isNaN(n) ? val : n;
99};
100const toNumber$2 = (val) => {
101  const n = isString$3(val) ? Number(val) : NaN;
102  return isNaN(n) ? val : n;
103};
104let _globalThis$2;
105const getGlobalThis$2 = () => {
106  return _globalThis$2 || (_globalThis$2 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : {});
107};
108function genCacheKey(source, options2) {
109  return source + JSON.stringify(
110    options2,
111    (_, val) => typeof val === "function" ? val.toString() : val
112  );
113}
114const GLOBALS_ALLOWED = "Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decode
vendor: 4,106 bytes, lines 114-191
114URI,decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt,console,Error,Symbol";
115const isGloballyAllowed = /* @__PURE__ */ makeMap(GLOBALS_ALLOWED);
116function normalizeStyle(value) {
117  if (isArray$3(value)) {
118    const res = {};
119    for (let i = 0; i < value.length; i++) {
120      const item = value[i];
121      const normalized = isString$3(item) ? parseStringStyle(item) : normalizeStyle(item);
122      if (normalized) {
123        for (const key in normalized) {
124          res[key] = normalized[key];
125        }
126      }
127    }
128    return res;
129  } else if (isString$3(value) || isObject$9(value)) {
130    return value;
131  }
132}
133const listDelimiterRE = /;(?![^(]*\))/g;
134const propertyDelimiterRE = /:([^]+)/;
135const styleCommentRE = /\/\*[^]*?\*\//g;
136function parseStringStyle(cssText) {
137  const ret = {};
138  cssText.replace(styleCommentRE, "").split(listDelimiterRE).forEach((item) => {
139    if (item) {
140      const tmp = item.split(propertyDelimiterRE);
141      tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());
142    }
143  });
144  return ret;
145}
146function normalizeClass(value) {
147  let res = "";
148  if (isString$3(value)) {
149    res = value;
150  } else if (isArray$3(value)) {
151    for (let i = 0; i < value.length; i++) {
152      const normalized = normalizeClass(value[i]);
153      if (normalized) {
154        res += normalized + " ";
155      }
156    }
157  } else if (isObject$9(value)) {
158    for (const name in value) {
159      if (value[name]) {
160        res += name + " ";
161      }
162    }
163  }
164  return res.trim();
165}
166function normalizeProps(props2) {
167  if (!props2) return null;
168  let { class: klass, style } = props2;
169  if (klass && !isString$3(klass)) {
170    props2.class = normalizeClass(klass);
171  }
172  if (style) {
173    props2.style = normalizeStyle(style);
174  }
175  return props2;
176}
177const HTML_TAGS = "html,body,base,head,link,meta,style,title,address,article,aside,footer,header,hgroup,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,output,progress,select,textarea,details,dialog,menu,summary,template,blockquote,iframe,tfoot";
178const SVG_TAGS = "svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,feDistantLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,text,textPath,title,tspan,unknown,use,view";
179const MATH_TAGS = "annotation,annotation-xml,maction,maligngroup,malignmark,math,menclose,merror,mfenced,mfrac,mfraction,mglyph,mi,mlabeledtr,mlongdiv,mmultiscripts,mn,mo,mover,mpadded,mphantom,mprescripts,mroot,mrow,ms,mscarries,mscarry,msgroup,msline,mspace,msqrt,msrow,mstack,mstyle,msub,msubsup,msup,mtable,mtd,mtext,mtr,munder,munderover,none,semantics";
180const VOID_TAGS = "area,base,br,col,embed,hr,img,input,link,meta,param,source,track,wbr";
181const isHTMLTag = /* @__PURE__ */ makeMap(HTML_TAGS);
182const isSVGTag = /* @__PURE__ */ makeMap(SVG_TAGS);
183const isMathMLTag = /* @__PURE__ */ makeMap(MATH_TAGS);
184const isVoidTag = /* @__PURE__ */ makeMap(VOID_TAGS);
185const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;
186const isSpecialBooleanAttr = /* @__PURE__ */ makeMap(specialBooleanAttrs);
187function includeBooleanAttr(value) {
188  return !!value || value === "";
189}
190function looseCompareArrays(a, b) {
191  if (a.length !== b.length) return false;
vendor: 2,708 bytes, lines 192-280
192  let equal2 = true;
193  for (let i = 0; equal2 && i < a.length; i++) {
194    equal2 = looseEqual(a[i], b[i]);
195  }
196  return equal2;
197}
198function looseEqual(a, b) {
199  if (a === b) return true;
200  let aValidType = isDate$2(a);
201  let bValidType = isDate$2(b);
202  if (aValidType || bValidType) {
203    return aValidType && bValidType ? a.getTime() === b.getTime() : false;
204  }
205  aValidType = isSymbol$2(a);
206  bValidType = isSymbol$2(b);
207  if (aValidType || bValidType) {
208    return a === b;
209  }
210  aValidType = isArray$3(a);
211  bValidType = isArray$3(b);
212  if (aValidType || bValidType) {
213    return aValidType && bValidType ? looseCompareArrays(a, b) : false;
214  }
215  aValidType = isObject$9(a);
216  bValidType = isObject$9(b);
217  if (aValidType || bValidType) {
218    if (!aValidType || !bValidType) {
219      return false;
220    }
221    const aKeysCount = Object.keys(a).length;
222    const bKeysCount = Object.keys(b).length;
223    if (aKeysCount !== bKeysCount) {
224      return false;
225    }
226    for (const key in a) {
227      const aHasKey = a.hasOwnProperty(key);
228      const bHasKey = b.hasOwnProperty(key);
229      if (aHasKey && !bHasKey || !aHasKey && bHasKey || !looseEqual(a[key], b[key])) {
230        return false;
231      }
232    }
233  }
234  return String(a) === String(b);
235}
236function looseIndexOf(arr, val) {
237  return arr.findIndex((item) => looseEqual(item, val));
238}
239const isRef$1 = (val) => {
240  return !!(val && val["__v_isRef"] === true);
241};
242const toDisplayString$1 = (val) => {
243  return isString$3(val) ? val : val == null ? "" : isArray$3(val) || isObject$9(val) && (val.toString === objectToString$4 || !isFunction$3(val.toString)) ? isRef$1(val) ? toDisplayString$1(val.value) : JSON.stringify(val, replacer, 2) : String(val);
244};
245const replacer = (_key, val) => {
246  if (isRef$1(val)) {
247    return replacer(_key, val.value);
248  } else if (isMap(val)) {
249    return {
250      [`Map(${val.size})`]: [...val.entries()].reduce(
251        (entries, [key, val2], i) => {
252          entries[stringifySymbol(key, i) + " =>"] = val2;
253          return entries;
254        },
255        {}
256      )
257    };
258  } else if (isSet(val)) {
259    return {
260      [`Set(${val.size})`]: [...val.values()].map((v) => stringifySymbol(v))
261    };
262  } else if (isSymbol$2(val)) {
263    return stringifySymbol(val);
264  } else if (isObject$9(val) && !isArray$3(val) && !isPlainObject$3(val)) {
265    return String(val);
266  }
267  return val;
268};
269const stringifySymbol = (v, i = "") => {
270  var _a;
271  return (
272    // Symbol.description in es2019+ so we need to cast here to pass
273    // the lib: es2016 check
274    isSymbol$2(v) ? `Symbol(${(_a = v.description) != null ? _a : i})` : v
275  );
276};
277/**
278* @vue/reactivity v3.5.16
279* (c) 2018-present Yuxi (Evan) You and Vue contributors
280* @license MIT
281**/
282let activeEffectScope;
283class EffectScope {
284  constructor(detached = false) {
285    this.detached = detached;
286    this._active = true;
287    this._on = 0;
288    this.effects = [];
289    this.cleanups = [];
290    this._isPaused = false;
291    this.parent = activeEffectScope;
292    if (!detached && activeEffectScope) {
293      this.index = (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(
294        this
295      ) - 1;
296    }
297  }
298  get active() {
299    return this._active;
300  }
301  pause() {
302    if (this._active) {
303      this._isPaused = true;
304      let i, l;
305      if (this.scopes) {
306        for (i = 0, l = this.scopes.length; i < l; i++) {
307          this.scopes[i].pause();
308        }
309      }
310      for (i = 0, l = this.effects.length; i < l; i++) {
311        this.effects[i].pause();
312      }
313    }
314  }
315  /**
316   * Resumes the effect scope, including all child scopes and effects.
317   */
318  resume() {
319    if (this._active) {
320      if (this._isPaused) {
321        this._isPaused = false;
322        let i, l;
323        if (this.scopes) {
324          for (i = 0, l = this.scopes.length; i < l; i++) {
325            this.scopes[i].resume();
326          }
327        }
328        for (i = 0, l = this.effects.length; i < l; i++) {
329          this.effects[i].resume();
330        }
331      }
332    }
333  }
334  run(fn) {
335    if (this._active) {
336      const currentEffectScope = activeEffectScope;
337      try {
338        activeEffectScope = this;
339        return fn();
340      } finally {
341        activeEffectScope = currentEffectScope;
342      }
343    }
344  }
345  /**
346   * This should only be called on non-detached scopes
347   * @internal
348   */
349  on() {
350    if (++this._on === 1) {
351      this.prevScope = activeEffectScope;
352      activeEffectScope = this;
353    }
354  }
355  /**
356   * This should only be called on non-detached scopes
357   * @internal
358   */
359  off() {
360    if (this._on > 0 && --this._on === 0) {
361      activeEffectScope = this.prevScope;
362      this.prevScope = void 0;
363    }
364  }
365  stop(fromParent) {
366    if (this._active) {
367      this._active = false;
368      let i, l;
369      for (i = 0, l = this.effects.length; i < l; i++) {
370        this.effects[i].stop();
371      }
372      this.effects.length = 0;
373      for (i = 0, l = this.cleanups.length; i < l; i++) {
374        this.cleanups[i]();
375      }
376      this.cleanups.length = 0;
377      if (this.scopes) {
378        for (i = 0, l = this.scopes.length; i < l; i++) {
379          this.scopes[i].stop(true);
380        }
381        this.scopes.length = 0;
382      }
383      if (!this.detached && this.parent && !fromParent) {
384        const last = this.parent.scopes.pop();
385        if (last && last !== this) {
386          this.parent.scopes[this.index] = last;
387          last.index = this.index;
388        }
389      }
390      this.parent = void 0;
391    }
392  }
393}
394function effectScope(detached) {
395  return new EffectScope(detached);
396}
397function getCurrentScope() {
398  return activeEffectScope;
399}
400function onScopeDispose(fn, failSilently = false) {
401  if (activeEffectScope) {
402    activeEffectScope.cleanups.push(fn);
403  }
404}
405let activeSub;
406const pausedQueueEffects = /* @__PURE__ */ new WeakSet();
407class ReactiveEffect {
408  constructor(fn) {
409    this.fn = fn;
410    this.deps = void 0;
411    this.depsTail = void 0;
412    this.flags = 1 | 4;
413    this.next = void 0;
414    this.cleanup = void 0;
415    this.scheduler = void 0;
416    if (activeEffectScope && activeEffectScope.active) {
417      activeEffectScope.effects.push(this);
418    }
419  }
420  pause() {
421    this.flags |= 64;
422  }
423  resume() {
424    if (this.flags & 64) {
425      this.flags &= -65;
426      if (pausedQueueEffects.has(this)) {
427        pausedQueueEffects.delete(this);
428        this.trigger();
429      }
430    }
431  }
432  /**
433   * @internal
434   */
435  notify() {
436    if (this.flags & 2 && !(this.flags & 32)) {
437      return;
438    }
439    if (!(this.flags & 8)) {
440      batch(this);
441    }
442  }
443  run() {
444    if (!(this.flags & 1)) {
445      return this.fn();
446    }
447    this.flags |= 2;
448    cleanupEffect(this);
449    prepareDeps(this);
450    const prevEffect = activeSub;
451    const prevShouldTrack = shouldTrack;
452    activeSub = this;
453    shouldTrack = true;
454    try {
455      return this.fn();
456    } finally {
457      cleanupDeps(this);
458      activeSub = prevEffect;
459      shouldTrack = prevShouldTrack;
460      this.flags &= -3;
461    }
462  }
463  stop() {
464    if (this.flags & 1) {
465      for (let link = this.deps; link; link = link.nextDep) {
466        removeSub(link);
467      }
468      this.deps = this.depsTail = void 0;
469      cleanupEffect(this);
470      this.onStop && this.onStop();
471      this.flags &= -2;
472    }
473  }
474  trigger() {
475    if (this.flags & 64) {
vendor: 4,413 bytes, lines 476-679
476      pausedQueueEffects.add(this);
477    } else if (this.scheduler) {
478      this.scheduler();
479    } else {
480      this.runIfDirty();
481    }
482  }
483  /**
484   * @internal
485   */
486  runIfDirty() {
487    if (isDirty(this)) {
488      this.run();
489    }
490  }
491  get dirty() {
492    return isDirty(this);
493  }
494}
495let batchDepth = 0;
496let batchedSub;
497let batchedComputed;
498function batch(sub, isComputed = false) {
499  sub.flags |= 8;
500  if (isComputed) {
501    sub.next = batchedComputed;
502    batchedComputed = sub;
503    return;
504  }
505  sub.next = batchedSub;
506  batchedSub = sub;
507}
508function startBatch() {
509  batchDepth++;
510}
511function endBatch() {
512  if (--batchDepth > 0) {
513    return;
514  }
515  if (batchedComputed) {
516    let e = batchedComputed;
517    batchedComputed = void 0;
518    while (e) {
519      const next = e.next;
520      e.next = void 0;
521      e.flags &= -9;
522      e = next;
523    }
524  }
525  let error;
526  while (batchedSub) {
527    let e = batchedSub;
528    batchedSub = void 0;
529    while (e) {
530      const next = e.next;
531      e.next = void 0;
532      e.flags &= -9;
533      if (e.flags & 1) {
534        try {
535          ;
536          e.trigger();
537        } catch (err) {
538          if (!error) error = err;
539        }
540      }
541      e = next;
542    }
543  }
544  if (error) throw error;
545}
546function prepareDeps(sub) {
547  for (let link = sub.deps; link; link = link.nextDep) {
548    link.version = -1;
549    link.prevActiveLink = link.dep.activeLink;
550    link.dep.activeLink = link;
551  }
552}
553function cleanupDeps(sub) {
554  let head;
555  let tail = sub.depsTail;
556  let link = tail;
557  while (link) {
558    const prev = link.prevDep;
559    if (link.version === -1) {
560      if (link === tail) tail = prev;
561      removeSub(link);
562      removeDep(link);
563    } else {
564      head = link;
565    }
566    link.dep.activeLink = link.prevActiveLink;
567    link.prevActiveLink = void 0;
568    link = prev;
569  }
570  sub.deps = head;
571  sub.depsTail = tail;
572}
573function isDirty(sub) {
574  for (let link = sub.deps; link; link = link.nextDep) {
575    if (link.dep.version !== link.version || link.dep.computed && (refreshComputed(link.dep.computed) || link.dep.version !== link.version)) {
576      return true;
577    }
578  }
579  if (sub._dirty) {
580    return true;
581  }
582  return false;
583}
584function refreshComputed(computed2) {
585  if (computed2.flags & 4 && !(computed2.flags & 16)) {
586    return;
587  }
588  computed2.flags &= -17;
589  if (computed2.globalVersion === globalVersion) {
590    return;
591  }
592  computed2.globalVersion = globalVersion;
593  if (!computed2.isSSR && computed2.flags & 128 && (!computed2.deps && !computed2._dirty || !isDirty(computed2))) {
594    return;
595  }
596  computed2.flags |= 2;
597  const dep = computed2.dep;
598  const prevSub = activeSub;
599  const prevShouldTrack = shouldTrack;
600  activeSub = computed2;
601  shouldTrack = true;
602  try {
603    prepareDeps(computed2);
604    const value = computed2.fn(computed2._value);
605    if (dep.version === 0 || hasChanged(value, computed2._value)) {
606      computed2.flags |= 128;
607      computed2._value = value;
608      dep.version++;
609    }
610  } catch (err) {
611    dep.version++;
612    throw err;
613  } finally {
614    activeSub = prevSub;
615    shouldTrack = prevShouldTrack;
616    cleanupDeps(computed2);
617    computed2.flags &= -3;
618  }
619}
620function removeSub(link, soft = false) {
621  const { dep, prevSub, nextSub } = link;
622  if (prevSub) {
623    prevSub.nextSub = nextSub;
624    link.prevSub = void 0;
625  }
626  if (nextSub) {
627    nextSub.prevSub = prevSub;
628    link.nextSub = void 0;
629  }
630  if (dep.subs === link) {
631    dep.subs = prevSub;
632    if (!prevSub && dep.computed) {
633      dep.computed.flags &= -5;
634      for (let l = dep.computed.deps; l; l = l.nextDep) {
635        removeSub(l, true);
636      }
637    }
638  }
639  if (!soft && !--dep.sc && dep.map) {
640    dep.map.delete(dep.key);
641  }
642}
643function removeDep(link) {
644  const { prevDep, nextDep } = link;
645  if (prevDep) {
646    prevDep.nextDep = nextDep;
647    link.prevDep = void 0;
648  }
649  if (nextDep) {
650    nextDep.prevDep = prevDep;
651    link.nextDep = void 0;
652  }
653}
654function effect(fn, options2) {
655  if (fn.effect instanceof ReactiveEffect) {
656    fn = fn.effect.fn;
657  }
658  const e = new ReactiveEffect(fn);
659  if (options2) {
660    extend$5(e, options2);
661  }
662  try {
663    e.run();
664  } catch (err) {
665    e.stop();
666    throw err;
667  }
668  const runner = e.run.bind(e);
669  runner.effect = e;
670  return runner;
671}
672function stop(runner) {
673  runner.effect.stop();
674}
675let shouldTrack = true;
676const trackStack = [];
677function pauseTracking() {
678  trackStack.push(shouldTrack);
679  shouldTrack = false;
vendor: 3,753 bytes, lines 680-837
680}
681function resetTracking() {
682  const last = trackStack.pop();
683  shouldTrack = last === void 0 ? true : last;
684}
685function cleanupEffect(e) {
686  const { cleanup } = e;
687  e.cleanup = void 0;
688  if (cleanup) {
689    const prevSub = activeSub;
690    activeSub = void 0;
691    try {
692      cleanup();
693    } finally {
694      activeSub = prevSub;
695    }
696  }
697}
698let globalVersion = 0;
699class Link {
700  constructor(sub, dep) {
701    this.sub = sub;
702    this.dep = dep;
703    this.version = dep.version;
704    this.nextDep = this.prevDep = this.nextSub = this.prevSub = this.prevActiveLink = void 0;
705  }
706}
707class Dep {
708  constructor(computed2) {
709    this.computed = computed2;
710    this.version = 0;
711    this.activeLink = void 0;
712    this.subs = void 0;
713    this.map = void 0;
714    this.key = void 0;
715    this.sc = 0;
716  }
717  track(debugInfo) {
718    if (!activeSub || !shouldTrack || activeSub === this.computed) {
719      return;
720    }
721    let link = this.activeLink;
722    if (link === void 0 || link.sub !== activeSub) {
723      link = this.activeLink = new Link(activeSub, this);
724      if (!activeSub.deps) {
725        activeSub.deps = activeSub.depsTail = link;
726      } else {
727        link.prevDep = activeSub.depsTail;
728        activeSub.depsTail.nextDep = link;
729        activeSub.depsTail = link;
730      }
731      addSub(link);
732    } else if (link.version === -1) {
733      link.version = this.version;
734      if (link.nextDep) {
735        const next = link.nextDep;
736        next.prevDep = link.prevDep;
737        if (link.prevDep) {
738          link.prevDep.nextDep = next;
739        }
740        link.prevDep = activeSub.depsTail;
741        link.nextDep = void 0;
742        activeSub.depsTail.nextDep = link;
743        activeSub.depsTail = link;
744        if (activeSub.deps === link) {
745          activeSub.deps = next;
746        }
747      }
748    }
749    return link;
750  }
751  trigger(debugInfo) {
752    this.version++;
753    globalVersion++;
754    this.notify(debugInfo);
755  }
756  notify(debugInfo) {
757    startBatch();
758    try {
759      if (false) ;
760      for (let link = this.subs; link; link = link.prevSub) {
761        if (link.sub.notify()) {
762          ;
763          link.sub.dep.notify();
764        }
765      }
766    } finally {
767      endBatch();
768    }
769  }
770}
771function addSub(link) {
772  link.dep.sc++;
773  if (link.sub.flags & 4) {
774    const computed2 = link.dep.computed;
775    if (computed2 && !link.dep.subs) {
776      computed2.flags |= 4 | 16;
777      for (let l = computed2.deps; l; l = l.nextDep) {
778        addSub(l);
779      }
780    }
781    const currentTail = link.dep.subs;
782    if (currentTail !== link) {
783      link.prevSub = currentTail;
784      if (currentTail) currentTail.nextSub = link;
785    }
786    link.dep.subs = link;
787  }
788}
789const targetMap = /* @__PURE__ */ new WeakMap();
790const ITERATE_KEY = Symbol(
791  ""
792);
793const MAP_KEY_ITERATE_KEY = Symbol(
794  ""
795);
796const ARRAY_ITERATE_KEY = Symbol(
797  ""
798);
799function track(target, type, key) {
800  if (shouldTrack && activeSub) {
801    let depsMap = targetMap.get(target);
802    if (!depsMap) {
803      targetMap.set(target, depsMap = /* @__PURE__ */ new Map());
804    }
805    let dep = depsMap.get(key);
806    if (!dep) {
807      depsMap.set(key, dep = new Dep());
808      dep.map = depsMap;
809      dep.key = key;
810    }
811    {
812      dep.track();
813    }
814  }
815}
816function trigger(target, type, key, newValue, oldValue, oldTarget) {
817  const depsMap = targetMap.get(target);
818  if (!depsMap) {
819    globalVersion++;
820    return;
821  }
822  const run = (dep) => {
823    if (dep) {
824      {
825        dep.trigger();
826      }
827    }
828  };
829  startBatch();
830  if (type === "clear") {
831    depsMap.forEach(run);
832  } else {
833    const targetIsArray = isArray$3(target);
834    const isArrayIndex = targetIsArray && isIntegerKey(key);
835    if (targetIsArray && key === "length") {
836      const newLength = Number(newValue);
837      depsMap.forEach((dep, key2) => {
838        if (key2 === "length" || key2 === ARRAY_ITERATE_KEY || !isSymbol$2(key2) && key2 >= newLength) {
839          run(dep);
840        }
841      });
842    } else {
843      if (key !== void 0 || depsMap.has(void 0)) {
844        run(depsMap.get(key));
845      }
846      if (isArrayIndex) {
847        run(depsMap.get(ARRAY_ITERATE_KEY));
848      }
849      switch (type) {
850        case "add":
851          if (!targetIsArray) {
852            run(depsMap.get(ITERATE_KEY));
853            if (isMap(target)) {
854              run(depsMap.get(MAP_KEY_ITERATE_KEY));
855            }
856          } else if (isArrayIndex) {
857            run(depsMap.get("length"));
858          }
859          break;
860        case "delete":
861          if (!targetIsArray) {
862            run(depsMap.get(ITERATE_KEY));
863            if (isMap(target)) {
864              run(depsMap.get(MAP_KEY_ITERATE_KEY));
865            }
866          }
867          break;
868        case "set":
869          if (isMap(target)) {
870            run(depsMap.get(ITERATE_KEY));
871          }
872          break;
873      }
874    }
875  }
876  endBatch();
877}
878function getDepFromReactive(object, key) {
879  const depMap = targetMap.get(object);
880  return depMap && depMap.get(key);
881}
882function reactiveReadArray(array) {
883  const raw = toRaw(array);
884  if (raw === array) return raw;
885  track(raw, "iterate", ARRAY_ITERATE_KEY);
886  return isShallow(array) ? raw : raw.map(toReactive);
887}
888function shallowReadArray(arr) {
889  track(arr = toRaw(arr), "iterate", ARRAY_ITERATE_KEY);
890  return arr;
891}
892const arrayInstrumentations = {
893  __proto__: null,
894  [Symbol.iterator]() {
895    return iterator$1(this, Symbol.iterator, toReactive);
896  },
897  concat(...args) {
898    return reactiveReadArray(this).concat(
899      ...args.map((x) => isArray$3(x) ? reactiveReadArray(x) : x)
900    );
901  },
902  entries() {
903    return iterator$1(this, "entries", (value) => {
904      value[1] = toReactive(value[1]);
905      return value;
906    });
907  },
908  every(fn, thisArg) {
909    return apply$1(this, "every", fn, thisArg, void 0, arguments);
910  },
911  filter(fn, thisArg) {
912    return apply$1(this, "filter", fn, thisArg, (v) => v.map(toReactive), arguments);
913  },
914  find(fn, thisArg) {
915    return apply$1(this, "find", fn, thisArg, toReactive, arguments);
916  },
917  findIndex(fn, thisArg) {
918    return apply$1(this, "findIndex", fn, thisArg, void 0, arguments);
919  },
920  findLast(fn, thisArg) {
921    return apply$1(this, "findLast", fn, thisArg, toReactive, arguments);
922  },
923  findLastIndex(fn, thisArg) {
924    return apply$1(this, "findLastIndex", fn, thisArg, void 0, arguments);
925  },
926  // flat, flatMap could benefit from ARRAY_ITERATE but are not straight-forward to implement
927  forEach(fn, thisArg) {
928    return apply$1(this, "forEach", fn, thisArg, void 0, arguments);
929  },
930  includes(...args) {
931    return searchProxy(this, "includes", args);
932  },
933  indexOf(...args) {
934    return searchProxy(this, "indexOf", args);
935  },
936  join(separator) {
937    return reactiveReadArray(this).join(separator);
938  },
939  // keys() iterator only reads `length`, no optimisation required
940  lastIndexOf(...args) {
941    return searchProxy(this, "lastIndexOf", args);
942  },
943  map(fn, thisArg) {
944    return apply$1(this, "map", fn, thisArg, void 0, arguments);
945  },
946  pop() {
947    return noTracking(this, "pop");
948  },
949  push(...args) {
950    return noTracking(this, "push", args);
951  },
952  reduce(fn, ...args) {
953    return reduce(this, "reduce", fn, args);
954  },
955  reduceRight(fn, ...args) {
956    return reduce(this, "reduceRight", fn, args);
957  },
958  shift() {
959    return noTracking(this, "shift");
960  },
961  // slice could use ARRAY_ITERATE but also seems to beg for range tracking
962  some(fn, thisArg) {
963    return apply$1(this, "some", fn, thisArg, void 0, arguments);
964  },
965  splice(...args) {
966    return noTracking(this, "splice", args);
967  },
968  toReversed() {
969    return reactiveReadArray(this).toReversed();
970  },
971  toSorted(comparer) {
972    return reactiveReadArray(this).toSorted(comparer);
973  },
974  toSpliced(...args) {
975    return reactiveReadArray(this).toSpliced(...args);
976  },
977  unshift(...args) {
978    return noTracking(this, "unshift", args);
979  },
980  values() {
981    return iterator$1(this, "values", toReactive);
982  }
983};
984function iterator$1(self2, method, wrapValue) {
985  const arr = shallowReadArray(self2);
986  const iter = arr[method]();
987  if (arr !== self2 && !isShallow(self2)) {
988    iter._next = iter.next;
989    iter.next = () => {
990      const result = iter._next();
991      if (result.value) {
992        result.value = wrapValue(result.value);
993      }
994      return result;
995    };
996  }
997  return iter;
998}
999const arrayProto = Array.prototype;
1000function apply$1(self2, method, fn, thisArg, wrappedRetFn, args) {
1001  const arr = shallowReadArray(self2);
1002  const needsWrap = arr !== self2 && !isShallow(self2);
1003  const methodFn = arr[method];
1004  if (methodFn !== arrayProto[method]) {
1005    const result2 = methodFn.apply(self2, args);
1006    return needsWrap ? toReactive(result2) : result2;
1007  }
1008  let wrappedFn = fn;
1009  if (arr !== self2) {
1010    if (needsWrap) {
1011      wrappedFn = function(item, index2) {
1012        return fn.call(this, toReactive(item), index2, self2);
1013      };
1014    } else if (fn.length > 2) {
1015      wrappedFn = function(item, index2) {
1016        return fn.call(this, item, index2, self2);
1017      };
1018    }
1019  }
1020  const result = methodFn.call(arr, wrappedFn, thisArg);
1021  return needsWrap && wrappedRetFn ? wrappedRetFn(result) : result;
1022}
1023function reduce(self2, method, fn, args) {
1024  const arr = shallowReadArray(self2);
1025  let wrappedFn = fn;
1026  if (arr !== self2) {
1027    if (!isShallow(self2)) {
1028      wrappedFn = function(acc, item, index2) {
1029        return fn.call(this, acc, toReactive(item), index2, self2);
1030      };
1031    } else if (fn.length > 3) {
1032      wrappedFn = function(acc, item, index2) {
1033        return fn.call(this, acc, item, index2, self2);
1034      };
1035    }
1036  }
1037  return arr[method](wrappedFn, ...args);
1038}
1039function searchProxy(self2, method, args) {
1040  const arr = toRaw(self2);
1041  track(arr, "iterate", ARRAY_ITERATE_KEY);
1042  const res = arr[method](...args);
1043  if ((res === -1 || res === false) && isProxy(args[0])) {
1044    args[0] = toRaw(args[0]);
1045    return arr[method](...args);
1046  }
1047  return res;
1048}
1049function noTracking(self2, method, args = []) {
1050  pauseTracking();
1051  startBatch();
1052  const res = toRaw(self2)[method].apply(self2, args);
1053  endBatch();
1054  resetTracking();
1055  return res;
1056}
1057const isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);
1058const builtInSymbols = new Set(
1059  /* @__PURE__ */ Object.getOwnPropertyNames(Symbol).filter((key) => key !== "arguments" && key !== "caller").map((key) => Symbol[key]).filter(isSymbol$2)
1060);
1061function hasOwnProperty$3(key) {
1062  if (!isSymbol$2(key)) key = String(key);
1063  const obj = toRaw(this);
1064  track(obj, "has", key);
1065  return obj.hasOwnProperty(key);
1066}
1067class BaseReactiveHandler {
1068  constructor(_isReadonly = false, _isShallow = false) {
1069    this._isReadonly = _isReadonly;
1070    this._isShallow = _isShallow;
1071  }
1072  get(target, key, receiver) {
1073    if (key === "__v_skip") return target["__v_skip"];
1074    const isReadonly2 = this._isReadonly, isShallow2 = this._isShallow;
1075    if (key === "__v_isReactive") {
1076      return !isReadonly2;
1077    } else if (key === "__v_isReadonly") {
1078      return isReadonly2;
1079    } else if (key === "__v_isShallow") {
1080      return isShallow2;
1081    } else if (key === "__v_raw") {
1082      if (receiver === (isReadonly2 ? isShallow2 ? shallowReadonlyMap : readonlyMap : isShallow2 ? shallowReactiveMap : reactiveMap).get(target) || // receiver is not the reactive proxy, but has the same prototype
1083      // this means the receiver is a user proxy of the reactive proxy
1084      Object.getPrototypeOf(target) === Object.getPrototypeOf(receiver)) {
1085        return target;
1086      }
1087      return;
1088    }
1089    const targetIsArray = isArray$3(target);
1090    if (!isReadonly2) {
1091      let fn;
1092      if (targetIsArray && (fn = arrayInstrumentations[key])) {
1093        return fn;
1094      }
1095      if (key === "hasOwnProperty") {
1096        return hasOwnProperty$3;
1097      }
1098    }
1099    const res = Reflect.get(
1100      target,
1101      key,
1102      // if this is a proxy wrapping a ref, return methods using the raw ref
1103      // as receiver so that we don't have to call `toRaw` on the ref in all
1104      // its class methods
1105      isRef(target) ? target : receiver
1106    );
1107    if (isSymbol$2(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {
1108      return res;
1109    }
1110    if (!isReadonly2) {
1111      track(target, "get", key);
1112    }
1113    if (isShallow2) {
1114      return res;
1115    }
1116    if (isRef(res)) {
1117      return targetIsArray && isIntegerKey(key) ? res : res.value;
1118    }
1119    if (isObject$9(res)) {
1120      return isReadonly2 ? readonly(res) : reactive(res);
1121    }
1122    return res;
1123  }
1124}
1125class MutableReactiveHandler extends BaseReactiveHandler {
1126  constructor(isShallow2 = false) {
1127    super(false, isShallow2);
1128  }
1129  set(target, key, value, receiver) {
1130    let oldValue = target[key];
1131    if (!this._isShallow) {
1132      const isOldValueReadonly = isReadonly(oldValue);
1133      if (!isShallow(value) && !isReadonly(value)) {
1134        oldValue = toRaw(oldValue);
1135        value = toRaw(value);
1136      }
1137      if (!isArray$3(target) && isRef(oldValue) && !isRef(value)) {
1138        if (isOldValueReadonly) {
1139          return false;
1140        } else {
1141          oldValue.value = value;
1142          return true;
1143        }
1144      }
1145    }
1146    const hadKey = isArray$3(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn$2(target, key);
1147    const result = Reflect.set(
1148      target,
1149      key,
1150      value,
1151      isRef(target) ? target : receiver
1152    );
1153    if (target === toRaw(receiver)) {
1154      if (!hadKey) {
1155        trigger(target, "add", key, value);
1156      } else if (hasChanged(value, oldValue)) {
1157        trigger(target, "set", key, value);
1158      }
1159    }
1160    return result;
1161  }
1162  deleteProperty(target, key) {
1163    const hadKey = hasOwn$2(target, key);
1164    target[key];
1165    const result = Reflect.deleteProperty(target, key);
1166    if (result && hadKey) {
1167      trigger(target, "delete", key, void 0);
1168    }
1169    return result;
1170  }
1171  has(target, key) {
1172    const result = Reflect.has(target, key);
1173    if (!isSymbol$2(key) || !builtInSymbols.has(key)) {
1174      track(target, "has", key);
1175    }
1176    return result;
1177  }
1178  ownKeys(target) {
1179    track(
1180      target,
1181      "iterate",
1182      isArray$3(target) ? "length" : ITERATE_KEY
1183    );
1184    return Reflect.ownKeys(target);
1185  }
1186}
1187class ReadonlyReactiveHandler extends BaseReactiveHandler {
1188  constructor(isShallow2 = false) {
1189    super(true, isShallow2);
1190  }
1191  set(target, key) {
1192    return true;
1193  }
1194  deleteProperty(target, key) {
1195    return true;
1196  }
1197}
1198const mutableHandlers = /* @__PURE__ */ new MutableReactiveHandler();
1199const readonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler();
1200const shallowReactiveHandlers = /* @__PURE__ */ new MutableReactiveHandler(true);
1201const shallowReadonlyHandlers = /* @__PURE__ */ new ReadonlyReactiveHandler(true);
1202const toShallow = (value) => value;
1203const getProto = (v) => Reflect.getPrototypeOf(v);
1204function createIterableMethod(method, isReadonly2, isShallow2) {
1205  return function(...args) {
1206    const target = this["__v_raw"];
1207    const rawTarget = toRaw(target);
1208    const targetIsMap = isMap(rawTarget);
1209    const isPair = method === "entries" || method === Symbol.iterator && targetIsMap;
1210    const isKeyOnly = method === "keys" && targetIsMap;
1211    const innerIterator = target[method](...args);
1212    const wrap = isShallow2 ? toShallow : isReadonly2 ? toReadonly : toReactive;
1213    !isReadonly2 && track(
1214      rawTarget,
1215      "iterate",
1216      isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY
1217    );
1218    return {
1219      // iterator protocol
1220      next() {
1221        const { value, done } = innerIterator.next();
1222        return done ? { value, done } : {
1223          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),
1224          done
1225        };
1226      },
1227      // iterable protocol
1228      [Symbol.iterator]() {
1229        return this;
1230      }
1231    };
1232  };
1233}
1234function createReadonlyMethod(type) {
1235  return function(...args) {
1236    return type === "delete" ? false : type === "clear" ? void 0 : this;
1237  };
1238}
1239function createInstrumentations(readonly2, shallow) {
1240  const instrumentations = {
1241    get(key) {
1242      const target = this["__v_raw"];
1243      const rawTarget = toRaw(target);
1244      const rawKey = toRaw(key);
1245      if (!readonly2) {
1246        if (hasChanged(key, rawKey)) {
1247          track(rawTarget, "get", key);
1248        }
1249        track(rawTarget, "get", rawKey);
1250      }
1251      const { has } = getProto(rawTarget);
1252      const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive;
1253      if (has.call(rawTarget, key)) {
1254        return wrap(target.get(key));
1255      } else if (has.call(rawTarget, rawKey)) {
1256        return wrap(target.get(rawKey));
1257      } else if (target !== rawTarget) {
1258        target.get(key);
1259      }
1260    },
1261    get size() {
1262      const target = this["__v_raw"];
1263      !readonly2 && track(toRaw(target), "iterate", ITERATE_KEY);
1264      return Reflect.get(target, "size", target);
1265    },
1266    has(key) {
1267      const target = this["__v_raw"];
1268      const rawTarget = toRaw(target);
1269      const rawKey = toRaw(key);
1270      if (!readonly2) {
1271        if (hasChanged(key, rawKey)) {
1272          track(rawTarget, "has", key);
1273        }
1274        track(rawTarget, "has", rawKey);
1275      }
1276      return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);
1277    },
vendor: 16,931 bytes, lines 1278-1906
1278    forEach(callback, thisArg) {
1279      const observed = this;
1280      const target = observed["__v_raw"];
1281      const rawTarget = toRaw(target);
1282      const wrap = shallow ? toShallow : readonly2 ? toReadonly : toReactive;
1283      !readonly2 && track(rawTarget, "iterate", ITERATE_KEY);
1284      return target.forEach((value, key) => {
1285        return callback.call(thisArg, wrap(value), wrap(key), observed);
1286      });
1287    }
1288  };
1289  extend$5(
1290    instrumentations,
1291    readonly2 ? {
1292      add: createReadonlyMethod("add"),
1293      set: createReadonlyMethod("set"),
1294      delete: createReadonlyMethod("delete"),
1295      clear: createReadonlyMethod("clear")
1296    } : {
1297      add(value) {
1298        if (!shallow && !isShallow(value) && !isReadonly(value)) {
1299          value = toRaw(value);
1300        }
1301        const target = toRaw(this);
1302        const proto = getProto(target);
1303        const hadKey = proto.has.call(target, value);
1304        if (!hadKey) {
1305          target.add(value);
1306          trigger(target, "add", value, value);
1307        }
1308        return this;
1309      },
1310      set(key, value) {
1311        if (!shallow && !isShallow(value) && !isReadonly(value)) {
1312          value = toRaw(value);
1313        }
1314        const target = toRaw(this);
1315        const { has, get: get2 } = getProto(target);
1316        let hadKey = has.call(target, key);
1317        if (!hadKey) {
1318          key = toRaw(key);
1319          hadKey = has.call(target, key);
1320        }
1321        const oldValue = get2.call(target, key);
1322        target.set(key, value);
1323        if (!hadKey) {
1324          trigger(target, "add", key, value);
1325        } else if (hasChanged(value, oldValue)) {
1326          trigger(target, "set", key, value);
1327        }
1328        return this;
1329      },
1330      delete(key) {
1331        const target = toRaw(this);
1332        const { has, get: get2 } = getProto(target);
1333        let hadKey = has.call(target, key);
1334        if (!hadKey) {
1335          key = toRaw(key);
1336          hadKey = has.call(target, key);
1337        }
1338        get2 ? get2.call(target, key) : void 0;
1339        const result = target.delete(key);
1340        if (hadKey) {
1341          trigger(target, "delete", key, void 0);
1342        }
1343        return result;
1344      },
1345      clear() {
1346        const target = toRaw(this);
1347        const hadItems = target.size !== 0;
1348        const result = target.clear();
1349        if (hadItems) {
1350          trigger(
1351            target,
1352            "clear",
1353            void 0,
1354            void 0
1355          );
1356        }
1357        return result;
1358      }
1359    }
1360  );
1361  const iteratorMethods = [
1362    "keys",
1363    "values",
1364    "entries",
1365    Symbol.iterator
1366  ];
1367  iteratorMethods.forEach((method) => {
1368    instrumentations[method] = createIterableMethod(method, readonly2, shallow);
1369  });
1370  return instrumentations;
1371}
1372function createInstrumentationGetter(isReadonly2, shallow) {
1373  const instrumentations = createInstrumentations(isReadonly2, shallow);
1374  return (target, key, receiver) => {
1375    if (key === "__v_isReactive") {
1376      return !isReadonly2;
1377    } else if (key === "__v_isReadonly") {
1378      return isReadonly2;
1379    } else if (key === "__v_raw") {
1380      return target;
1381    }
1382    return Reflect.get(
1383      hasOwn$2(instrumentations, key) && key in target ? instrumentations : target,
1384      key,
1385      receiver
1386    );
1387  };
1388}
1389const mutableCollectionHandlers = {
1390  get: /* @__PURE__ */ createInstrumentationGetter(false, false)
1391};
1392const shallowCollectionHandlers = {
1393  get: /* @__PURE__ */ createInstrumentationGetter(false, true)
1394};
1395const readonlyCollectionHandlers = {
1396  get: /* @__PURE__ */ createInstrumentationGetter(true, false)
1397};
1398const shallowReadonlyCollectionHandlers = {
1399  get: /* @__PURE__ */ createInstrumentationGetter(true, true)
1400};
1401const reactiveMap = /* @__PURE__ */ new WeakMap();
1402const shallowReactiveMap = /* @__PURE__ */ new WeakMap();
1403const readonlyMap = /* @__PURE__ */ new WeakMap();
1404const shallowReadonlyMap = /* @__PURE__ */ new WeakMap();
1405function targetTypeMap(rawType) {
1406  switch (rawType) {
1407    case "Object":
1408    case "Array":
1409      return 1;
1410    case "Map":
1411    case "Set":
1412    case "WeakMap":
1413    case "WeakSet":
1414      return 2;
1415    default:
1416      return 0;
1417  }
1418}
1419function getTargetType(value) {
1420  return value["__v_skip"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));
1421}
1422function reactive(target) {
1423  if (isReadonly(target)) {
1424    return target;
1425  }
1426  return createReactiveObject(
1427    target,
1428    false,
1429    mutableHandlers,
1430    mutableCollectionHandlers,
1431    reactiveMap
1432  );
1433}
1434function shallowReactive(target) {
1435  return createReactiveObject(
1436    target,
1437    false,
1438    shallowReactiveHandlers,
1439    shallowCollectionHandlers,
1440    shallowReactiveMap
1441  );
1442}
1443function readonly(target) {
1444  return createReactiveObject(
1445    target,
1446    true,
1447    readonlyHandlers,
1448    readonlyCollectionHandlers,
1449    readonlyMap
1450  );
1451}
1452function shallowReadonly(target) {
1453  return createReactiveObject(
1454    target,
1455    true,
1456    shallowReadonlyHandlers,
1457    shallowReadonlyCollectionHandlers,
1458    shallowReadonlyMap
1459  );
1460}
1461function createReactiveObject(target, isReadonly2, baseHandlers, collectionHandlers, proxyMap) {
1462  if (!isObject$9(target)) {
1463    return target;
1464  }
1465  if (target["__v_raw"] && !(isReadonly2 && target["__v_isReactive"])) {
1466    return target;
1467  }
1468  const targetType = getTargetType(target);
1469  if (targetType === 0) {
1470    return target;
1471  }
1472  const existingProxy = proxyMap.get(target);
1473  if (existingProxy) {
1474    return existingProxy;
1475  }
1476  const proxy = new Proxy(
1477    target,
1478    targetType === 2 ? collectionHandlers : baseHandlers
1479  );
1480  proxyMap.set(target, proxy);
1481  return proxy;
1482}
1483function isReactive(value) {
1484  if (isReadonly(value)) {
1485    return isReactive(value["__v_raw"]);
1486  }
1487  return !!(value && value["__v_isReactive"]);
1488}
1489function isReadonly(value) {
1490  return !!(value && value["__v_isReadonly"]);
1491}
1492function isShallow(value) {
1493  return !!(value && value["__v_isShallow"]);
1494}
1495function isProxy(value) {
1496  return value ? !!value["__v_raw"] : false;
1497}
1498function toRaw(observed) {
1499  const raw = observed && observed["__v_raw"];
1500  return raw ? toRaw(raw) : observed;
1501}
1502function markRaw(value) {
1503  if (!hasOwn$2(value, "__v_skip") && Object.isExtensible(value)) {
1504    def(value, "__v_skip", true);
1505  }
1506  return value;
1507}
1508const toReactive = (value) => isObject$9(value) ? reactive(value) : value;
1509const toReadonly = (value) => isObject$9(value) ? readonly(value) : value;
1510function isRef(r) {
1511  return r ? r["__v_isRef"] === true : false;
1512}
1513function ref(value) {
1514  return createRef(value, false);
1515}
1516function shallowRef(value) {
1517  return createRef(value, true);
1518}
1519function createRef(rawValue, shallow) {
1520  if (isRef(rawValue)) {
1521    return rawValue;
1522  }
1523  return new RefImpl(rawValue, shallow);
1524}
1525class RefImpl {
1526  constructor(value, isShallow2) {
1527    this.dep = new Dep();
1528    this["__v_isRef"] = true;
1529    this["__v_isShallow"] = false;
1530    this._rawValue = isShallow2 ? value : toRaw(value);
1531    this._value = isShallow2 ? value : toReactive(value);
1532    this["__v_isShallow"] = isShallow2;
1533  }
1534  get value() {
1535    {
1536      this.dep.track();
1537    }
1538    return this._value;
1539  }
1540  set value(newValue) {
1541    const oldValue = this._rawValue;
1542    const useDirectValue = this["__v_isShallow"] || isShallow(newValue) || isReadonly(newValue);
1543    newValue = useDirectValue ? newValue : toRaw(newValue);
1544    if (hasChanged(newValue, oldValue)) {
1545      this._rawValue = newValue;
1546      this._value = useDirectValue ? newValue : toReactive(newValue);
1547      {
1548        this.dep.trigger();
1549      }
1550    }
1551  }
1552}
1553function triggerRef(ref2) {
1554  if (ref2.dep) {
1555    {
1556      ref2.dep.trigger();
1557    }
1558  }
1559}
1560function unref(ref2) {
1561  return isRef(ref2) ? ref2.value : ref2;
1562}
1563function toValue(source) {
1564  return isFunction$3(source) ? source() : unref(source);
1565}
1566const shallowUnwrapHandlers = {
1567  get: (target, key, receiver) => key === "__v_raw" ? target : unref(Reflect.get(target, key, receiver)),
1568  set: (target, key, value, receiver) => {
1569    const oldValue = target[key];
1570    if (isRef(oldValue) && !isRef(value)) {
1571      oldValue.value = value;
1572      return true;
1573    } else {
1574      return Reflect.set(target, key, value, receiver);
1575    }
1576  }
1577};
1578function proxyRefs(objectWithRefs) {
1579  return isReactive(objectWithRefs) ? objectWithRefs : new Proxy(objectWithRefs, shallowUnwrapHandlers);
1580}
1581class CustomRefImpl {
1582  constructor(factory) {
1583    this["__v_isRef"] = true;
1584    this._value = void 0;
1585    const dep = this.dep = new Dep();
1586    const { get: get2, set } = factory(dep.track.bind(dep), dep.trigger.bind(dep));
1587    this._get = get2;
1588    this._set = set;
1589  }
1590  get value() {
1591    return this._value = this._get();
1592  }
1593  set value(newVal) {
1594    this._set(newVal);
1595  }
1596}
1597function customRef(factory) {
1598  return new CustomRefImpl(factory);
1599}
1600function toRefs(object) {
1601  const ret = isArray$3(object) ? new Array(object.length) : {};
1602  for (const key in object) {
1603    ret[key] = propertyToRef(object, key);
1604  }
1605  return ret;
1606}
1607class ObjectRefImpl {
1608  constructor(_object, _key, _defaultValue) {
1609    this._object = _object;
1610    this._key = _key;
1611    this._defaultValue = _defaultValue;
1612    this["__v_isRef"] = true;
1613    this._value = void 0;
1614  }
1615  get value() {
1616    const val = this._object[this._key];
1617    return this._value = val === void 0 ? this._defaultValue : val;
1618  }
1619  set value(newVal) {
1620    this._object[this._key] = newVal;
1621  }
1622  get dep() {
1623    return getDepFromReactive(toRaw(this._object), this._key);
1624  }
1625}
1626class GetterRefImpl {
1627  constructor(_getter) {
1628    this._getter = _getter;
1629    this["__v_isRef"] = true;
1630    this["__v_isReadonly"] = true;
1631    this._value = void 0;
1632  }
1633  get value() {
1634    return this._value = this._getter();
1635  }
1636}
1637function toRef(source, key, defaultValue) {
1638  if (isRef(source)) {
1639    return source;
1640  } else if (isFunction$3(source)) {
1641    return new GetterRefImpl(source);
1642  } else if (isObject$9(source) && arguments.length > 1) {
1643    return propertyToRef(source, key, defaultValue);
1644  } else {
1645    return ref(source);
1646  }
1647}
1648function propertyToRef(source, key, defaultValue) {
1649  const val = source[key];
1650  return isRef(val) ? val : new ObjectRefImpl(source, key, defaultValue);
1651}
1652class ComputedRefImpl {
1653  constructor(fn, setter, isSSR) {
1654    this.fn = fn;
1655    this.setter = setter;
1656    this._value = void 0;
1657    this.dep = new Dep(this);
1658    this.__v_isRef = true;
1659    this.deps = void 0;
1660    this.depsTail = void 0;
1661    this.flags = 16;
1662    this.globalVersion = globalVersion - 1;
1663    this.next = void 0;
1664    this.effect = this;
1665    this["__v_isReadonly"] = !setter;
1666    this.isSSR = isSSR;
1667  }
1668  /**
1669   * @internal
1670   */
1671  notify() {
1672    this.flags |= 16;
1673    if (!(this.flags & 8) && // avoid infinite self recursion
1674    activeSub !== this) {
1675      batch(this, true);
1676      return true;
1677    }
1678  }
1679  get value() {
1680    const link = this.dep.track();
1681    refreshComputed(this);
1682    if (link) {
1683      link.version = this.dep.version;
1684    }
1685    return this._value;
1686  }
1687  set value(newValue) {
1688    if (this.setter) {
1689      this.setter(newValue);
1690    }
1691  }
1692}
1693function computed$1(getterOrOptions, debugOptions, isSSR = false) {
1694  let getter;
1695  let setter;
1696  if (isFunction$3(getterOrOptions)) {
1697    getter = getterOrOptions;
1698  } else {
1699    getter = getterOrOptions.get;
1700    setter = getterOrOptions.set;
1701  }
1702  const cRef = new ComputedRefImpl(getter, setter, isSSR);
1703  return cRef;
1704}
1705const TrackOpTypes = {
1706  "GET": "get",
1707  "HAS": "has",
1708  "ITERATE": "iterate"
1709};
1710const TriggerOpTypes = {
1711  "SET": "set",
1712  "ADD": "add",
1713  "DELETE": "delete",
1714  "CLEAR": "clear"
1715};
1716const INITIAL_WATCHER_VALUE = {};
1717const cleanupMap = /* @__PURE__ */ new WeakMap();
1718let activeWatcher = void 0;
1719function getCurrentWatcher() {
1720  return activeWatcher;
1721}
1722function onWatcherCleanup(cleanupFn, failSilently = false, owner = activeWatcher) {
1723  if (owner) {
1724    let cleanups = cleanupMap.get(owner);
1725    if (!cleanups) cleanupMap.set(owner, cleanups = []);
1726    cleanups.push(cleanupFn);
1727  }
1728}
1729function watch$1(source, cb, options2 = EMPTY_OBJ) {
1730  const { immediate, deep, once, scheduler, augmentJob, call } = options2;
1731  const reactiveGetter = (source2) => {
1732    if (deep) return source2;
1733    if (isShallow(source2) || deep === false || deep === 0)
1734      return traverse(source2, 1);
1735    return traverse(source2);
1736  };
1737  let effect2;
1738  let getter;
1739  let cleanup;
1740  let boundCleanup;
1741  let forceTrigger = false;
1742  let isMultiSource = false;
1743  if (isRef(source)) {
1744    getter = () => source.value;
1745    forceTrigger = isShallow(source);
1746  } else if (isReactive(source)) {
1747    getter = () => reactiveGetter(source);
1748    forceTrigger = true;
1749  } else if (isArray$3(source)) {
1750    isMultiSource = true;
1751    forceTrigger = source.some((s) => isReactive(s) || isShallow(s));
1752    getter = () => source.map((s) => {
1753      if (isRef(s)) {
1754        return s.value;
1755      } else if (isReactive(s)) {
1756        return reactiveGetter(s);
1757      } else if (isFunction$3(s)) {
1758        return call ? call(s, 2) : s();
1759      } else ;
1760    });
1761  } else if (isFunction$3(source)) {
1762    if (cb) {
1763      getter = call ? () => call(source, 2) : source;
1764    } else {
1765      getter = () => {
1766        if (cleanup) {
1767          pauseTracking();
1768          try {
1769            cleanup();
1770          } finally {
1771            resetTracking();
1772          }
1773        }
1774        const currentEffect = activeWatcher;
1775        activeWatcher = effect2;
1776        try {
1777          return call ? call(source, 3, [boundCleanup]) : source(boundCleanup);
1778        } finally {
1779          activeWatcher = currentEffect;
1780        }
1781      };
1782    }
1783  } else {
1784    getter = NOOP;
1785  }
1786  if (cb && deep) {
1787    const baseGetter = getter;
1788    const depth = deep === true ? Infinity : deep;
1789    getter = () => traverse(baseGetter(), depth);
1790  }
1791  const scope = getCurrentScope();
1792  const watchHandle = () => {
1793    effect2.stop();
1794    if (scope && scope.active) {
1795      remove(scope.effects, effect2);
1796    }
1797  };
1798  if (once && cb) {
1799    const _cb = cb;
1800    cb = (...args) => {
1801      _cb(...args);
1802      watchHandle();
1803    };
1804  }
1805  let oldValue = isMultiSource ? new Array(source.length).fill(INITIAL_WATCHER_VALUE) : INITIAL_WATCHER_VALUE;
1806  const job = (immediateFirstRun) => {
1807    if (!(effect2.flags & 1) || !effect2.dirty && !immediateFirstRun) {
1808      return;
1809    }
1810    if (cb) {
1811      const newValue = effect2.run();
1812      if (deep || forceTrigger || (isMultiSource ? newValue.some((v, i) => hasChanged(v, oldValue[i])) : hasChanged(newValue, oldValue))) {
1813        if (cleanup) {
1814          cleanup();
1815        }
1816        const currentWatcher = activeWatcher;
1817        activeWatcher = effect2;
1818        try {
1819          const args = [
1820            newValue,
1821            // pass undefined as the old value when it's changed for the first time
1822            oldValue === INITIAL_WATCHER_VALUE ? void 0 : isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE ? [] : oldValue,
1823            boundCleanup
1824          ];
1825          oldValue = newValue;
1826          call ? call(cb, 3, args) : (
1827            // @ts-expect-error
1828            cb(...args)
1829          );
1830        } finally {
1831          activeWatcher = currentWatcher;
1832        }
1833      }
1834    } else {
1835      effect2.run();
1836    }
1837  };
1838  if (augmentJob) {
1839    augmentJob(job);
1840  }
1841  effect2 = new ReactiveEffect(getter);
1842  effect2.scheduler = scheduler ? () => scheduler(job, false) : job;
1843  boundCleanup = (fn) => onWatcherCleanup(fn, false, effect2);
1844  cleanup = effect2.onStop = () => {
1845    const cleanups = cleanupMap.get(effect2);
1846    if (cleanups) {
1847      if (call) {
1848        call(cleanups, 4);
1849      } else {
1850        for (const cleanup2 of cleanups) cleanup2();
1851      }
1852      cleanupMap.delete(effect2);
1853    }
1854  };
1855  if (cb) {
1856    if (immediate) {
1857      job(true);
1858    } else {
1859      oldValue = effect2.run();
1860    }
1861  } else if (scheduler) {
1862    scheduler(job.bind(null, true), true);
1863  } else {
1864    effect2.run();
1865  }
1866  watchHandle.pause = effect2.pause.bind(effect2);
1867  watchHandle.resume = effect2.resume.bind(effect2);
1868  watchHandle.stop = watchHandle;
1869  return watchHandle;
1870}
1871function traverse(value, depth = Infinity, seen2) {
1872  if (depth <= 0 || !isObject$9(value) || value["__v_skip"]) {
1873    return value;
1874  }
1875  seen2 = seen2 || /* @__PURE__ */ new Set();
1876  if (seen2.has(value)) {
1877    return value;
1878  }
1879  seen2.add(value);
1880  depth--;
1881  if (isRef(value)) {
1882    traverse(value.value, depth, seen2);
1883  } else if (isArray$3(value)) {
1884    for (let i = 0; i < value.length; i++) {
1885      traverse(value[i], depth, seen2);
1886    }
1887  } else if (isSet(value) || isMap(value)) {
1888    value.forEach((v) => {
1889      traverse(v, depth, seen2);
1890    });
1891  } else if (isPlainObject$3(value)) {
1892    for (const key in value) {
1893      traverse(value[key], depth, seen2);
1894    }
1895    for (const key of Object.getOwnPropertySymbols(value)) {
1896      if (Object.prototype.propertyIsEnumerable.call(value, key)) {
1897        traverse(value[key], depth, seen2);
1898      }
1899    }
1900  }
1901  return value;
1902}
1903/**
1904* @vue/runtime-core v3.5.16
1905* (c) 2018-present Yuxi (Evan) You and Vue contributors
1906* @license MIT
vendor: 4,602 bytes, lines 1907-2070
1907**/
1908const stack$1 = [];
1909function pushWarningContext(vnode) {
1910  stack$1.push(vnode);
1911}
1912function popWarningContext() {
1913  stack$1.pop();
1914}
1915let isWarning = false;
1916function warn$1(msg, ...args) {
1917  if (isWarning) return;
1918  isWarning = true;
1919  pauseTracking();
1920  const instance = stack$1.length ? stack$1[stack$1.length - 1].component : null;
1921  const appWarnHandler = instance && instance.appContext.config.warnHandler;
1922  const trace = getComponentTrace();
1923  if (appWarnHandler) {
1924    callWithErrorHandling(
1925      appWarnHandler,
1926      instance,
1927      11,
1928      [
1929        // eslint-disable-next-line no-restricted-syntax
1930        msg + args.map((a) => {
1931          var _a, _b;
1932          return (_b = (_a = a.toString) == null ? void 0 : _a.call(a)) != null ? _b : JSON.stringify(a);
1933        }).join(""),
1934        instance && instance.proxy,
1935        trace.map(
1936          ({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`
1937        ).join("\n"),
1938        trace
1939      ]
1940    );
1941  } else {
1942    const warnArgs = [`[Vue warn]: ${msg}`, ...args];
1943    if (trace.length && // avoid spamming console during tests
1944    true) {
1945      warnArgs.push(`
1946`, ...formatTrace(trace));
1947    }
1948    console.warn(...warnArgs);
1949  }
1950  resetTracking();
1951  isWarning = false;
1952}
1953function getComponentTrace() {
1954  let currentVNode = stack$1[stack$1.length - 1];
1955  if (!currentVNode) {
1956    return [];
1957  }
1958  const normalizedStack = [];
1959  while (currentVNode) {
1960    const last = normalizedStack[0];
1961    if (last && last.vnode === currentVNode) {
1962      last.recurseCount++;
1963    } else {
1964      normalizedStack.push({
1965        vnode: currentVNode,
1966        recurseCount: 0
1967      });
1968    }
1969    const parentInstance = currentVNode.component && currentVNode.component.parent;
1970    currentVNode = parentInstance && parentInstance.vnode;
1971  }
1972  return normalizedStack;
1973}
1974function formatTrace(trace) {
1975  const logs = [];
1976  trace.forEach((entry, i) => {
1977    logs.push(...i === 0 ? [] : [`
1978`], ...formatTraceEntry(entry));
1979  });
1980  return logs;
1981}
1982function formatTraceEntry({ vnode, recurseCount }) {
1983  const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;
1984  const isRoot = vnode.component ? vnode.component.parent == null : false;
1985  const open = ` at <${formatComponentName(
1986    vnode.component,
1987    vnode.type,
1988    isRoot
1989  )}`;
1990  const close = `>` + postfix;
1991  return vnode.props ? [open, ...formatProps(vnode.props), close] : [open + close];
1992}
1993function formatProps(props2) {
1994  const res = [];
1995  const keys = Object.keys(props2);
1996  keys.slice(0, 3).forEach((key) => {
1997    res.push(...formatProp(key, props2[key]));
1998  });
1999  if (keys.length > 3) {
2000    res.push(` ...`);
2001  }
2002  return res;
2003}
2004function formatProp(key, value, raw) {
2005  if (isString$3(value)) {
2006    value = JSON.stringify(value);
2007    return raw ? value : [`${key}=${value}`];
2008  } else if (typeof value === "number" || typeof value === "boolean" || value == null) {
2009    return raw ? value : [`${key}=${value}`];
2010  } else if (isRef(value)) {
2011    value = formatProp(key, toRaw(value.value), true);
2012    return raw ? value : [`${key}=Ref<`, value, `>`];
2013  } else if (isFunction$3(value)) {
2014    return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];
2015  } else {
2016    value = toRaw(value);
2017    return raw ? value : [`${key}=`, value];
2018  }
2019}
2020function assertNumber(val, type) {
2021  return;
2022}
2023const ErrorCodes = {
2024  "SETUP_FUNCTION": 0,
2025  "0": "SETUP_FUNCTION",
2026  "RENDER_FUNCTION": 1,
2027  "1": "RENDER_FUNCTION",
2028  "NATIVE_EVENT_HANDLER": 5,
2029  "5": "NATIVE_EVENT_HANDLER",
2030  "COMPONENT_EVENT_HANDLER": 6,
2031  "6": "COMPONENT_EVENT_HANDLER",
2032  "VNODE_HOOK": 7,
2033  "7": "VNODE_HOOK",
2034  "DIRECTIVE_HOOK": 8,
2035  "8": "DIRECTIVE_HOOK",
2036  "TRANSITION_HOOK": 9,
2037  "9": "TRANSITION_HOOK",
2038  "APP_ERROR_HANDLER": 10,
2039  "10": "APP_ERROR_HANDLER",
2040  "APP_WARN_HANDLER": 11,
2041  "11": "APP_WARN_HANDLER",
2042  "FUNCTION_REF": 12,
2043  "12": "FUNCTION_REF",
2044  "ASYNC_COMPONENT_LOADER": 13,
2045  "13": "ASYNC_COMPONENT_LOADER",
2046  "SCHEDULER": 14,
2047  "14": "SCHEDULER",
2048  "COMPONENT_UPDATE": 15,
2049  "15": "COMPONENT_UPDATE",
2050  "APP_UNMOUNT_CLEANUP": 16,
2051  "16": "APP_UNMOUNT_CLEANUP"
2052};
2053const ErrorTypeStrings$1 = {
2054  ["sp"]: "serverPrefetch hook",
2055  ["bc"]: "beforeCreate hook",
2056  ["c"]: "created hook",
2057  ["bm"]: "beforeMount hook",
2058  ["m"]: "mounted hook",
2059  ["bu"]: "beforeUpdate hook",
2060  ["u"]: "updated",
2061  ["bum"]: "beforeUnmount hook",
2062  ["um"]: "unmounted hook",
2063  ["a"]: "activated hook",
2064  ["da"]: "deactivated hook",
2065  ["ec"]: "errorCaptured hook",
2066  ["rtc"]: "renderTracked hook",
2067  ["rtg"]: "renderTriggered hook",
2068  [0]: "setup function",
2069  [1]: "render function",
2070  [2]: "watcher getter",
vendor: 1,486 bytes, lines 2071-2118
2071  [3]: "watcher callback",
2072  [4]: "watcher cleanup function",
2073  [5]: "native event handler",
2074  [6]: "component event handler",
2075  [7]: "vnode hook",
2076  [8]: "directive hook",
2077  [9]: "transition hook",
2078  [10]: "app errorHandler",
2079  [11]: "app warnHandler",
2080  [12]: "ref function",
2081  [13]: "async component loader",
2082  [14]: "scheduler flush",
2083  [15]: "component update",
2084  [16]: "app unmount cleanup function"
2085};
2086function callWithErrorHandling(fn, instance, type, args) {
2087  try {
2088    return args ? fn(...args) : fn();
2089  } catch (err) {
2090    handleError(err, instance, type);
2091  }
2092}
2093function callWithAsyncErrorHandling(fn, instance, type, args) {
2094  if (isFunction$3(fn)) {
2095    const res = callWithErrorHandling(fn, instance, type, args);
2096    if (res && isPromise$2(res)) {
2097      res.catch((err) => {
2098        handleError(err, instance, type);
2099      });
2100    }
2101    return res;
2102  }
2103  if (isArray$3(fn)) {
2104    const values = [];
2105    for (let i = 0; i < fn.length; i++) {
2106      values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));
2107    }
2108    return values;
2109  }
2110}
2111function handleError(err, instance, type, throwInDev = true) {
2112  const contextVNode = instance ? instance.vnode : null;
2113  const { errorHandler, throwUnhandledErrorInProduction } = instance && instance.appContext.config || EMPTY_OBJ;
2114  if (instance) {
2115    let cur = instance.parent;
2116    const exposedInstance = instance.proxy;
2117    const errorInfo = `https://vuejs.org/error-reference/#runtime-${type}`;
2118    while (cur) {
2119      const errorCapturedHooks = cur.ec;
2120      if (errorCapturedHooks) {
2121        for (let i = 0; i < errorCapturedHooks.length; i++) {
2122          if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {
2123            return;
2124          }
2125        }
2126      }
2127      cur = cur.parent;
2128    }
2129    if (errorHandler) {
2130      pauseTracking();
2131      callWithErrorHandling(errorHandler, null, 10, [
2132        err,
2133        exposedInstance,
2134        errorInfo
2135      ]);
2136      resetTracking();
2137      return;
2138    }
2139  }
2140  logError(err, type, contextVNode, throwInDev, throwUnhandledErrorInProduction);
2141}
2142function logError(err, type, contextVNode, throwInDev = true, throwInProd = false) {
2143  if (throwInProd) {
2144    throw err;
2145  } else {
2146    console.error(err);
2147  }
2148}
2149const queue = [];
2150let flushIndex = -1;
2151const pendingPostFlushCbs = [];
2152let activePostFlushCbs = null;
2153let postFlushIndex = 0;
2154const resolvedPromise = /* @__PURE__ */ Promise.resolve();
2155let currentFlushPromise = null;
2156function nextTick$1(fn) {
2157  const p2 = currentFlushPromise || resolvedPromise;
2158  return fn ? p2.then(this ? fn.bind(this) : fn) : p2;
2159}
2160function findInsertionIndex(id) {
2161  let start = flushIndex + 1;
2162  let end = queue.length;
2163  while (start < end) {
2164    const middle = start + end >>> 1;
2165    const middleJob = queue[middle];
2166    const middleJobId = getId(middleJob);
2167    if (middleJobId < id || middleJobId === id && middleJob.flags & 2) {
2168      start = middle + 1;
2169    } else {
2170      end = middle;
2171    }
2172  }
2173  return start;
2174}
2175function queueJob(job) {
2176  if (!(job.flags & 1)) {
2177    const jobId = getId(job);
2178    const lastJob = queue[queue.length - 1];
2179    if (!lastJob || // fast path when the job id is larger than the tail
2180    !(job.flags & 2) && jobId >= getId(lastJob)) {
2181      queue.push(job);
2182    } else {
2183      queue.splice(findInsertionIndex(jobId), 0, job);
2184    }
2185    job.flags |= 1;
2186    queueFlush();
2187  }
2188}
2189function queueFlush() {
2190  if (!currentFlushPromise) {
2191    currentFlushPromise = resolvedPromise.then(flushJobs);
2192  }
2193}
2194function queuePostFlushCb(cb) {
2195  if (!isArray$3(cb)) {
2196    if (activePostFlushCbs && cb.id === -1) {
2197      activePostFlushCbs.splice(postFlushIndex + 1, 0, cb);
2198    } else if (!(cb.flags & 1)) {
2199      pendingPostFlushCbs.push(cb);
2200      cb.flags |= 1;
2201    }
2202  } else {
2203    pendingPostFlushCbs.push(...cb);
2204  }
2205  queueFlush();
2206}
2207function flushPreFlushCbs(instance, seen2, i = flushIndex + 1) {
2208  for (; i < queue.length; i++) {
2209    const cb = queue[i];
2210    if (cb && cb.flags & 2) {
2211      if (instance && cb.id !== instance.uid) {
2212        continue;
2213      }
2214      queue.splice(i, 1);
2215      i--;
2216      if (cb.flags & 4) {
2217        cb.flags &= -2;
2218      }
2219      cb();
2220      if (!(cb.flags & 4)) {
2221        cb.flags &= -2;
2222      }
2223    }
2224  }
2225}
2226function flushPostFlushCbs(seen2) {
2227  if (pendingPostFlushCbs.length) {
2228    const deduped = [...new Set(pendingPostFlushCbs)].sort(
2229      (a, b) => getId(a) - getId(b)
2230    );
2231    pendingPostFlushCbs.length = 0;
2232    if (activePostFlushCbs) {
2233      activePostFlushCbs.push(...deduped);
2234      return;
2235    }
2236    activePostFlushCbs = deduped;
2237    for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {
2238      const cb = activePostFlushCbs[postFlushIndex];
2239      if (cb.flags & 4) {
2240        cb.flags &= -2;
2241      }
2242      if (!(cb.flags & 8)) cb();
2243      cb.flags &= -2;
2244    }
2245    activePostFlushCbs = null;
2246    postFlushIndex = 0;
2247  }
2248}
2249const getId = (job) => job.id == null ? job.flags & 2 ? -1 : Infinity : job.id;
2250function flushJobs(seen2) {
2251  try {
2252    for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {
2253      const job = queue[flushIndex];
2254      if (job && !(job.flags & 8)) {
2255        if (false) ;
2256        if (job.flags & 4) {
2257          job.flags &= ~1;
2258        }
2259        callWithErrorHandling(
2260          job,
2261          job.i,
2262          job.i ? 15 : 14
2263        );
2264        if (!(job.flags & 4)) {
2265          job.flags &= ~1;
2266        }
2267      }
2268    }
2269  } finally {
2270    for (; flushIndex < queue.length; flushIndex++) {
2271      const job = queue[flushIndex];
2272      if (job) {
2273        job.flags &= -2;
2274      }
2275    }
2276    flushIndex = -1;
2277    queue.length = 0;
2278    flushPostFlushCbs();
2279    currentFlushPromise = null;
2280    if (queue.length || pendingPostFlushCbs.length) {
2281      flushJobs();
2282    }
2283  }
2284}
2285let devtools$1;
2286let buffer = [];
2287function setDevtoolsHook$1(hook, target) {
2288  var _a, _b;
2289  devtools$1 = hook;
2290  if (devtools$1) {
2291    devtools$1.enabled = true;
2292    buffer.forEach(({ event, args }) => devtools$1.emit(event, ...args));
2293    buffer = [];
2294  } else if (
2295    // handle late devtools injection - only do this if we are in an actual
2296    // browser environment to avoid the timer handle stalling test runner exit
2297    // (#4815)
2298    typeof window !== "undefined" && // some envs mock window but not fully
2299    window.HTMLElement && // also exclude jsdom
2300    // eslint-disable-next-line no-restricted-syntax
2301    !((_b = (_a = window.navigator) == null ? void 0 : _a.userAgent) == null ? void 0 : _b.includes("jsdom"))
2302  ) {
2303    const replay = target.__VUE_DEVTOOLS_HOOK_REPLAY__ = target.__VUE_DEVTOOLS_HOOK_REPLAY__ || [];
2304    replay.push((newHook) => {
2305      setDevtoolsHook$1(newHook, target);
2306    });
2307    setTimeout(() => {
2308      if (!devtools$1) {
2309        target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;
2310        buffer = [];
2311      }
2312    }, 3e3);
2313  } else {
2314    buffer = [];
2315  }
2316}
2317let currentRenderingInstance = null;
2318let currentScopeId = null;
2319function setCurrentRenderingInstance(instance) {
2320  const prev = currentRenderingInstance;
2321  currentRenderingInstance = instance;
2322  currentScopeId = instance && instance.type.__scopeId || null;
2323  return prev;
2324}
2325function pushScopeId(id) {
2326  currentScopeId = id;
2327}
2328function popScopeId() {
2329  currentScopeId = null;
2330}
2331const withScopeId = (_id) => withCtx;
2332function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot) {
2333  if (!ctx) return fn;
2334  if (fn._n) {
2335    return fn;
2336  }
2337  const renderFnWithContext = (...args) => {
2338    if (renderFnWithContext._d) {
2339      setBlockTracking(-1);
2340    }
2341    const prevInstance = setCurrentRenderingInstance(ctx);
2342    let res;
2343    try {
2344      res = fn(...args);
2345    } finally {
2346      setCurrentRenderingInstance(prevInstance);
2347      if (renderFnWithContext._d) {
2348        setBlockTracking(1);
2349      }
2350    }
2351    return res;
2352  };
2353  renderFnWithContext._n = true;
2354  renderFnWithContext._c = true;
2355  renderFnWithContext._d = true;
2356  return renderFnWithContext;
2357}
2358function withDirectives(vnode, directives) {
2359  if (currentRenderingInstance === null) {
2360    return vnode;
2361  }
2362  const instance = getComponentPublicInstance(currentRenderingInstance);
2363  const bindings = vnode.dirs || (vnode.dirs = []);
2364  for (let i = 0; i < directives.length; i++) {
2365    let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];
2366    if (dir) {
2367      if (isFunction$3(dir)) {
2368        dir = {
2369          mounted: dir,
2370          updated: dir
2371        };
2372      }
2373      if (dir.deep) {
2374        traverse(value);
2375      }
2376      bindings.push({
2377        dir,
2378        instance,
2379        value,
2380        oldValue: void 0,
2381        arg,
2382        modifiers
2383      });
2384    }
2385  }
2386  return vnode;
2387}
2388function invokeDirectiveHook(vnode, prevVNode, instance, name) {
2389  const bindings = vnode.dirs;
2390  const oldBindings = prevVNode && prevVNode.dirs;
2391  for (let i = 0; i < bindings.length; i++) {
2392    const binding = bindings[i];
2393    if (oldBindings) {
2394      binding.oldValue = oldBindings[i].value;
2395    }
2396    let hook = binding.dir[name];
2397    if (hook) {
2398      pauseTracking();
2399      callWithAsyncErrorHandling(hook, instance, 8, [
2400        vnode.el,
2401        binding,
2402        vnode,
2403        prevVNode
2404      ]);
2405      resetTracking();
2406    }
2407  }
2408}
2409const TeleportEndKey = Symbol("_vte");
2410const isTeleport = (type) => type.__isTeleport;
2411const isTeleportDisabled = (props2) => props2 && (props2.disabled || props2.disabled === "");
2412const isTeleportDeferred = (props2) => props2 && (props2.defer || props2.defer === "");
2413const isTargetSVG = (target) => typeof SVGElement !== "undefined" && target instanceof SVGElement;
2414const isTargetMathML = (target) => typeof MathMLElement === "function" && target instanceof MathMLElement;
2415const resolveTarget = (props2, select2) => {
2416  const targetSelector = props2 && props2.to;
2417  if (isString$3(targetSelector)) {
2418    if (!select2) {
2419      return null;
2420    } else {
2421      const target = select2(targetSelector);
2422      return target;
2423    }
2424  } else {
2425    return targetSelector;
2426  }
2427};
2428const TeleportImpl = {
2429  name: "Teleport",
2430  __isTeleport: true,
2431  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, internals) {
2432    const {
2433      mc: mountChildren,
2434      pc: patchChildren,
2435      pbc: patchBlockChildren,
2436      o: { insert, querySelector, createText, createComment }
2437    } = internals;
2438    const disabled = isTeleportDisabled(n2.props);
2439    let { shapeFlag, children, dynamicChildren } = n2;
2440    if (n1 == null) {
2441      const placeholder = n2.el = createText("");
2442      const mainAnchor = n2.anchor = createText("");
2443      insert(placeholder, container, anchor);
2444      insert(mainAnchor, container, anchor);
2445      const mount = (container2, anchor2) => {
2446        if (shapeFlag & 16) {
2447          if (parentComponent && parentComponent.isCE) {
2448            parentComponent.ce._teleportTarget = container2;
2449          }
2450          mountChildren(
2451            children,
2452            container2,
2453            anchor2,
2454            parentComponent,
2455            parentSuspense,
2456            namespace,
2457            slotScopeIds,
2458            optimized
2459          );
2460        }
2461      };
2462      const mountToTarget = () => {
2463        const target = n2.target = resolveTarget(n2.props, querySelector);
2464        const targetAnchor = prepareAnchor(target, n2, createText, insert);
2465        if (target) {
2466          if (namespace !== "svg" && isTargetSVG(target)) {
2467            namespace = "svg";
2468          } else if (namespace !== "mathml" && isTargetMathML(target)) {
2469            namespace = "mathml";
2470          }
2471          if (!disabled) {
2472            mount(target, targetAnchor);
2473            updateCssVars(n2, false);
2474          }
2475        }
2476      };
2477      if (disabled) {
2478        mount(container, mainAnchor);
2479        updateCssVars(n2, true);
2480      }
2481      if (isTeleportDeferred(n2.props)) {
2482        n2.el.__isMounted = false;
2483        queuePostRenderEffect(() => {
2484          mountToTarget();
2485          delete n2.el.__isMounted;
2486        }, parentSuspense);
2487      } else {
2488        mountToTarget();
2489      }
2490    } else {
2491      if (isTeleportDeferred(n2.props) && n1.el.__isMounted === false) {
2492        queuePostRenderEffect(() => {
2493          TeleportImpl.process(
2494            n1,
2495            n2,
2496            container,
2497            anchor,
2498            parentComponent,
2499            parentSuspense,
2500            namespace,
2501            slotScopeIds,
2502            optimized,
2503            internals
2504          );
2505        }, parentSuspense);
2506        return;
2507      }
2508      n2.el = n1.el;
2509      n2.targetStart = n1.targetStart;
2510      const mainAnchor = n2.anchor = n1.anchor;
2511      const target = n2.target = n1.target;
2512      const targetAnchor = n2.targetAnchor = n1.targetAnchor;
2513      const wasDisabled = isTeleportDisabled(n1.props);
2514      const currentContainer = wasDisabled ? container : target;
2515      const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;
2516      if (namespace === "svg" || isTargetSVG(target)) {
2517        namespace = "svg";
2518      } else if (namespace === "mathml" || isTargetMathML(target)) {
2519        namespace = "mathml";
2520      }
2521      if (dynamicChildren) {
2522        patchBlockChildren(
2523          n1.dynamicChildren,
2524          dynamicChildren,
2525          currentContainer,
2526          parentComponent,
2527          parentSuspense,
2528          namespace,
2529          slotScopeIds
2530        );
2531        traverseStaticChildren(n1, n2, true);
2532      } else if (!optimized) {
2533        patchChildren(
2534          n1,
2535          n2,
2536          currentContainer,
2537          currentAnchor,
2538          parentComponent,
2539          parentSuspense,
2540          namespace,
2541          slotScopeIds,
2542          false
2543        );
2544      }
2545      if (disabled) {
2546        if (!wasDisabled) {
2547          moveTeleport(
2548            n2,
2549            container,
2550            mainAnchor,
2551            internals,
2552            1
2553          );
2554        } else {
2555          if (n2.props && n1.props && n2.props.to !== n1.props.to) {
2556            n2.props.to = n1.props.to;
2557          }
2558        }
2559      } else {
2560        if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {
2561          const nextTarget = n2.target = resolveTarget(
2562            n2.props,
2563            querySelector
2564          );
2565          if (nextTarget) {
2566            moveTeleport(
2567              n2,
2568              nextTarget,
2569              null,
2570              internals,
2571              0
2572            );
2573          }
2574        } else if (wasDisabled) {
2575          moveTeleport(
2576            n2,
2577            target,
2578            targetAnchor,
2579            internals,
2580            1
2581          );
2582        }
2583      }
2584      updateCssVars(n2, disabled);
2585    }
2586  },
2587  remove(vnode, parentComponent, parentSuspense, { um: unmount, o: { remove: hostRemove } }, doRemove) {
2588    const {
2589      shapeFlag,
2590      children,
2591      anchor,
2592      targetStart,
2593      targetAnchor,
2594      target,
2595      props: props2
2596    } = vnode;
2597    if (target) {
2598      hostRemove(targetStart);
2599      hostRemove(targetAnchor);
2600    }
2601    doRemove && hostRemove(anchor);
2602    if (shapeFlag & 16) {
2603      const shouldRemove = doRemove || !isTeleportDisabled(props2);
2604      for (let i = 0; i < children.length; i++) {
2605        const child = children[i];
2606        unmount(
2607          child,
2608          parentComponent,
2609          parentSuspense,
2610          shouldRemove,
2611          !!child.dynamicChildren
2612        );
2613      }
2614    }
2615  },
2616  move: moveTeleport,
2617  hydrate: hydrateTeleport
2618};
2619function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2) {
2620  if (moveType === 0) {
2621    insert(vnode.targetAnchor, container, parentAnchor);
2622  }
2623  const { el, anchor, shapeFlag, children, props: props2 } = vnode;
2624  const isReorder = moveType === 2;
2625  if (isReorder) {
2626    insert(el, container, parentAnchor);
2627  }
2628  if (!isReorder || isTeleportDisabled(props2)) {
2629    if (shapeFlag & 16) {
2630      for (let i = 0; i < children.length; i++) {
2631        move(
2632          children[i],
2633          container,
2634          parentAnchor,
2635          2
2636        );
2637      }
2638    }
2639  }
2640  if (isReorder) {
2641    insert(anchor, container, parentAnchor);
2642  }
2643}
2644function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, {
2645  o: { nextSibling, parentNode, querySelector, insert, createText }
2646}, hydrateChildren) {
2647  const target = vnode.target = resolveTarget(
2648    vnode.props,
2649    querySelector
2650  );
2651  if (target) {
2652    const disabled = isTeleportDisabled(vnode.props);
2653    const targetNode = target._lpa || target.firstChild;
2654    if (vnode.shapeFlag & 16) {
2655      if (disabled) {
2656        vnode.anchor = hydrateChildren(
2657          nextSibling(node),
2658          vnode,
2659          parentNode(node),
2660          parentComponent,
2661          parentSuspense,
2662          slotScopeIds,
2663          optimized
2664        );
2665        vnode.targetStart = targetNode;
2666        vnode.targetAnchor = targetNode && nextSibling(targetNode);
2667      } else {
2668        vnode.anchor = nextSibling(node);
2669        let targetAnchor = targetNode;
2670        while (targetAnchor) {
2671          if (targetAnchor && targetAnchor.nodeType === 8) {
2672            if (targetAnchor.data === "teleport start anchor") {
2673              vnode.targetStart = targetAnchor;
2674            } else if (targetAnchor.data === "teleport anchor") {
2675              vnode.targetAnchor = targetAnchor;
2676              target._lpa = vnode.targetAnchor && nextSibling(vnode.targetAnchor);
2677              break;
2678            }
2679          }
2680          targetAnchor = nextSibling(targetAnchor);
2681        }
2682        if (!vnode.targetAnchor) {
2683          prepareAnchor(target, vnode, createText, insert);
2684        }
2685        hydrateChildren(
2686          targetNode && nextSibling(targetNode),
2687          vnode,
2688          target,
2689          parentComponent,
2690          parentSuspense,
2691          slotScopeIds,
2692          optimized
2693        );
2694      }
2695    }
2696    updateCssVars(vnode, disabled);
2697  }
2698  return vnode.anchor && nextSibling(vnode.anchor);
2699}
2700const Teleport = TeleportImpl;
2701function updateCssVars(vnode, isDisabled) {
2702  const ctx = vnode.ctx;
2703  if (ctx && ctx.ut) {
2704    let node, anchor;
2705    if (isDisabled) {
2706      node = vnode.el;
2707      anchor = vnode.anchor;
2708    } else {
2709      node = vnode.targetStart;
2710      anchor = vnode.targetAnchor;
2711    }
2712    while (node && node !== anchor) {
2713      if (node.nodeType === 1) node.setAttribute("data-v-owner", ctx.uid);
2714      node = node.nextSibling;
2715    }
2716    ctx.ut();
2717  }
2718}
2719function prepareAnchor(target, vnode, createText, insert) {
2720  const targetStart = vnode.targetStart = createText("");
2721  const targetAnchor = vnode.targetAnchor = createText("");
2722  targetStart[TeleportEndKey] = targetAnchor;
2723  if (target) {
2724    insert(targetStart, target);
2725    insert(targetAnchor, target);
2726  }
2727  return targetAnchor;
2728}
2729const leaveCbKey = Symbol("_leaveCb");
2730const enterCbKey$1 = Symbol("_enterCb");
2731function useTransitionState() {
2732  const state2 = {
2733    isMounted: false,
2734    isLeaving: false,
2735    isUnmounting: false,
2736    leavingVNodes: /* @__PURE__ */ new Map()
2737  };
2738  onMounted(() => {
2739    state2.isMounted = true;
2740  });
2741  onBeforeUnmount(() => {
2742    state2.isUnmounting = true;
2743  });
2744  return state2;
2745}
2746const TransitionHookValidator = [Function, Array];
2747const BaseTransitionPropsValidators = {
2748  mode: String,
2749  appear: Boolean,
2750  persisted: Boolean,
2751  // enter
2752  onBeforeEnter: TransitionHookValidator,
2753  onEnter: TransitionHookValidator,
2754  onAfterEnter: TransitionHookValidator,
2755  onEnterCancelled: TransitionHookValidator,
2756  // leave
2757  onBeforeLeave: TransitionHookValidator,
2758  onLeave: TransitionHookValidator,
2759  onAfterLeave: TransitionHookValidator,
2760  onLeaveCancelled: TransitionHookValidator,
2761  // appear
2762  onBeforeAppear: TransitionHookValidator,
2763  onAppear: TransitionHookValidator,
2764  onAfterAppear: TransitionHookValidator,
2765  onAppearCancelled: TransitionHookValidator
2766};
2767const recursiveGetSubtree = (instance) => {
2768  const subTree = instance.subTree;
2769  return subTree.component ? recursiveGetSubtree(subTree.component) : subTree;
2770};
2771const BaseTransitionImpl = {
2772  name: `BaseTransition`,
2773  props: BaseTransitionPropsValidators,
2774  setup(props2, { slots }) {
2775    const instance = getCurrentInstance();
2776    const state2 = useTransitionState();
2777    return () => {
2778      const children = slots.default && getTransitionRawChildren(slots.default(), true);
2779      if (!children || !children.length) {
2780        return;
2781      }
2782      const child = findNonCommentChild(children);
2783      const rawProps = toRaw(props2);
2784      const { mode } = rawProps;
2785      if (state2.isLeaving) {
2786        return emptyPlaceholder(child);
2787      }
2788      const innerChild = getInnerChild$1(child);
2789      if (!innerChild) {
2790        return emptyPlaceholder(child);
2791      }
2792      let enterHooks = resolveTransitionHooks(
2793        innerChild,
2794        rawProps,
2795        state2,
2796        instance,
2797        // #11061, ensure enterHooks is fresh after clone
2798        (hooks) => enterHooks = hooks
2799      );
2800      if (innerChild.type !== Comment) {
2801        setTransitionHooks(innerChild, enterHooks);
2802      }
2803      let oldInnerChild = instance.subTree && getInnerChild$1(instance.subTree);
2804      if (oldInnerChild && oldInnerChild.type !== Comment && !isSameVNodeType(innerChild, oldInnerChild) && recursiveGetSubtree(instance).type !== Comment) {
vendor: 4,448 bytes, lines 2805-2968
2805        let leavingHooks = resolveTransitionHooks(
2806          oldInnerChild,
2807          rawProps,
2808          state2,
2809          instance
2810        );
2811        setTransitionHooks(oldInnerChild, leavingHooks);
2812        if (mode === "out-in" && innerChild.type !== Comment) {
2813          state2.isLeaving = true;
2814          leavingHooks.afterLeave = () => {
2815            state2.isLeaving = false;
2816            if (!(instance.job.flags & 8)) {
2817              instance.update();
2818            }
2819            delete leavingHooks.afterLeave;
2820            oldInnerChild = void 0;
2821          };
2822          return emptyPlaceholder(child);
2823        } else if (mode === "in-out" && innerChild.type !== Comment) {
2824          leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {
2825            const leavingVNodesCache = getLeavingNodesForType(
2826              state2,
2827              oldInnerChild
2828            );
2829            leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;
2830            el[leaveCbKey] = () => {
2831              earlyRemove();
2832              el[leaveCbKey] = void 0;
2833              delete enterHooks.delayedLeave;
2834              oldInnerChild = void 0;
2835            };
2836            enterHooks.delayedLeave = () => {
2837              delayedLeave();
2838              delete enterHooks.delayedLeave;
2839              oldInnerChild = void 0;
2840            };
2841          };
2842        } else {
2843          oldInnerChild = void 0;
2844        }
2845      } else if (oldInnerChild) {
2846        oldInnerChild = void 0;
2847      }
2848      return child;
2849    };
2850  }
2851};
2852function findNonCommentChild(children) {
2853  let child = children[0];
2854  if (children.length > 1) {
2855    for (const c of children) {
2856      if (c.type !== Comment) {
2857        child = c;
2858        break;
2859      }
2860    }
2861  }
2862  return child;
2863}
2864const BaseTransition = BaseTransitionImpl;
2865function getLeavingNodesForType(state2, vnode) {
2866  const { leavingVNodes } = state2;
2867  let leavingVNodesCache = leavingVNodes.get(vnode.type);
2868  if (!leavingVNodesCache) {
2869    leavingVNodesCache = /* @__PURE__ */ Object.create(null);
2870    leavingVNodes.set(vnode.type, leavingVNodesCache);
2871  }
2872  return leavingVNodesCache;
2873}
2874function resolveTransitionHooks(vnode, props2, state2, instance, postClone) {
2875  const {
2876    appear,
2877    mode,
2878    persisted = false,
2879    onBeforeEnter,
2880    onEnter,
2881    onAfterEnter,
2882    onEnterCancelled,
2883    onBeforeLeave,
2884    onLeave,
2885    onAfterLeave,
2886    onLeaveCancelled,
2887    onBeforeAppear,
2888    onAppear,
2889    onAfterAppear,
2890    onAppearCancelled
2891  } = props2;
2892  const key = String(vnode.key);
2893  const leavingVNodesCache = getLeavingNodesForType(state2, vnode);
2894  const callHook2 = (hook, args) => {
2895    hook && callWithAsyncErrorHandling(
2896      hook,
2897      instance,
2898      9,
2899      args
2900    );
2901  };
2902  const callAsyncHook = (hook, args) => {
2903    const done = args[1];
2904    callHook2(hook, args);
2905    if (isArray$3(hook)) {
2906      if (hook.every((hook2) => hook2.length <= 1)) done();
2907    } else if (hook.length <= 1) {
2908      done();
2909    }
2910  };
2911  const hooks = {
2912    mode,
2913    persisted,
2914    beforeEnter(el) {
2915      let hook = onBeforeEnter;
2916      if (!state2.isMounted) {
2917        if (appear) {
2918          hook = onBeforeAppear || onBeforeEnter;
2919        } else {
2920          return;
2921        }
2922      }
2923      if (el[leaveCbKey]) {
2924        el[leaveCbKey](
2925          true
2926          /* cancelled */
2927        );
2928      }
2929      const leavingVNode = leavingVNodesCache[key];
2930      if (leavingVNode && isSameVNodeType(vnode, leavingVNode) && leavingVNode.el[leaveCbKey]) {
2931        leavingVNode.el[leaveCbKey]();
2932      }
2933      callHook2(hook, [el]);
2934    },
2935    enter(el) {
2936      let hook = onEnter;
2937      let afterHook = onAfterEnter;
2938      let cancelHook = onEnterCancelled;
2939      if (!state2.isMounted) {
2940        if (appear) {
2941          hook = onAppear || onEnter;
2942          afterHook = onAfterAppear || onAfterEnter;
2943          cancelHook = onAppearCancelled || onEnterCancelled;
2944        } else {
2945          return;
2946        }
2947      }
2948      let called = false;
2949      const done = el[enterCbKey$1] = (cancelled) => {
2950        if (called) return;
2951        called = true;
2952        if (cancelled) {
2953          callHook2(cancelHook, [el]);
2954        } else {
2955          callHook2(afterHook, [el]);
2956        }
2957        if (hooks.delayedLeave) {
2958          hooks.delayedLeave();
2959        }
2960        el[enterCbKey$1] = void 0;
2961      };
2962      if (hook) {
2963        callAsyncHook(hook, [el, done]);
2964      } else {
2965        done();
2966      }
2967    },
2968    leave(el, remove2) {
vendor: 2,276 bytes, lines 2969-3057
2969      const key2 = String(vnode.key);
2970      if (el[enterCbKey$1]) {
2971        el[enterCbKey$1](
2972          true
2973          /* cancelled */
2974        );
2975      }
2976      if (state2.isUnmounting) {
2977        return remove2();
2978      }
2979      callHook2(onBeforeLeave, [el]);
2980      let called = false;
2981      const done = el[leaveCbKey] = (cancelled) => {
2982        if (called) return;
2983        called = true;
2984        remove2();
2985        if (cancelled) {
2986          callHook2(onLeaveCancelled, [el]);
2987        } else {
2988          callHook2(onAfterLeave, [el]);
2989        }
2990        el[leaveCbKey] = void 0;
2991        if (leavingVNodesCache[key2] === vnode) {
2992          delete leavingVNodesCache[key2];
2993        }
2994      };
2995      leavingVNodesCache[key2] = vnode;
2996      if (onLeave) {
2997        callAsyncHook(onLeave, [el, done]);
2998      } else {
2999        done();
3000      }
3001    },
3002    clone(vnode2) {
3003      const hooks2 = resolveTransitionHooks(
3004        vnode2,
3005        props2,
3006        state2,
3007        instance,
3008        postClone
3009      );
3010      if (postClone) postClone(hooks2);
3011      return hooks2;
3012    }
3013  };
3014  return hooks;
3015}
3016function emptyPlaceholder(vnode) {
3017  if (isKeepAlive(vnode)) {
3018    vnode = cloneVNode(vnode);
3019    vnode.children = null;
3020    return vnode;
3021  }
3022}
3023function getInnerChild$1(vnode) {
3024  if (!isKeepAlive(vnode)) {
3025    if (isTeleport(vnode.type) && vnode.children) {
3026      return findNonCommentChild(vnode.children);
3027    }
3028    return vnode;
3029  }
3030  if (vnode.component) {
3031    return vnode.component.subTree;
3032  }
3033  const { shapeFlag, children } = vnode;
3034  if (children) {
3035    if (shapeFlag & 16) {
3036      return children[0];
3037    }
3038    if (shapeFlag & 32 && isFunction$3(children.default)) {
3039      return children.default();
3040    }
3041  }
3042}
3043function setTransitionHooks(vnode, hooks) {
3044  if (vnode.shapeFlag & 6 && vnode.component) {
3045    vnode.transition = hooks;
3046    setTransitionHooks(vnode.component.subTree, hooks);
3047  } else if (vnode.shapeFlag & 128) {
3048    vnode.ssContent.transition = hooks.clone(vnode.ssContent);
3049    vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);
3050  } else {
3051    vnode.transition = hooks;
3052  }
3053}
3054function getTransitionRawChildren(children, keepComment = false, parentKey) {
3055  let ret = [];
3056  let keyedFragmentCount = 0;
3057  for (let i = 0; i < children.length; i++) {
3058    let child = children[i];
3059    const key = parentKey == null ? child.key : String(parentKey) + String(child.key != null ? child.key : i);
3060    if (child.type === Fragment) {
3061      if (child.patchFlag & 128) keyedFragmentCount++;
3062      ret = ret.concat(
3063        getTransitionRawChildren(child.children, keepComment, key)
3064      );
3065    } else if (keepComment || child.type !== Comment) {
3066      ret.push(key != null ? cloneVNode(child, { key }) : child);
3067    }
3068  }
3069  if (keyedFragmentCount > 1) {
3070    for (let i = 0; i < ret.length; i++) {
3071      ret[i].patchFlag = -2;
3072    }
3073  }
3074  return ret;
3075}
3076/*! #__NO_SIDE_EFFECTS__ */
3077// @__NO_SIDE_EFFECTS__
3078function defineComponent(options2, extraOptions) {
3079  return isFunction$3(options2) ? (
3080    // #8236: extend call and options.name access are considered side-effects
3081    // by Rollup, so we have to wrap it in a pure-annotated IIFE.
3082    /* @__PURE__ */ (() => extend$5({ name: options2.name }, extraOptions, { setup: options2 }))()
3083  ) : options2;
3084}
3085function useId() {
3086  const i = getCurrentInstance();
3087  if (i) {
3088    return (i.appContext.config.idPrefix || "v") + "-" + i.ids[0] + i.ids[1]++;
3089  }
3090  return "";
3091}
3092function markAsyncBoundary(instance) {
3093  instance.ids = [instance.ids[0] + instance.ids[2]++ + "-", 0, 0];
3094}
3095function useTemplateRef(key) {
3096  const i = getCurrentInstance();
3097  const r = shallowRef(null);
3098  if (i) {
3099    const refs = i.refs === EMPTY_OBJ ? i.refs = {} : i.refs;
3100    {
3101      Object.defineProperty(refs, key, {
3102        enumerable: true,
3103        get: () => r.value,
3104        set: (val) => r.value = val
3105      });
3106    }
3107  }
3108  const ret = r;
3109  return ret;
3110}
3111function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {
3112  if (isArray$3(rawRef)) {
3113    rawRef.forEach(
3114      (r, i) => setRef(
3115        r,
3116        oldRawRef && (isArray$3(oldRawRef) ? oldRawRef[i] : oldRawRef),
3117        parentSuspense,
3118        vnode,
3119        isUnmount
3120      )
3121    );
3122    return;
3123  }
3124  if (isAsyncWrapper(vnode) && !isUnmount) {
3125    if (vnode.shapeFlag & 512 && vnode.type.__asyncResolved && vnode.component.subTree.component) {
3126      setRef(rawRef, oldRawRef, parentSuspense, vnode.component.subTree);
3127    }
3128    return;
3129  }
3130  const refValue = vnode.shapeFlag & 4 ? getComponentPublicInstance(vnode.component) : vnode.el;
3131  const value = isUnmount ? null : refValue;
3132  const { i: owner, r: ref3 } = rawRef;
3133  const oldRef = oldRawRef && oldRawRef.r;
3134  const refs = owner.refs === EMPTY_OBJ ? owner.refs = {} : owner.refs;
3135  const setupState = owner.setupState;
3136  const rawSetupState = toRaw(setupState);
3137  const canSetSetupRef = setupState === EMPTY_OBJ ? () => false : (key) => {
3138    return hasOwn$2(rawSetupState, key);
3139  };
3140  if (oldRef != null && oldRef !== ref3) {
3141    if (isString$3(oldRef)) {
3142      refs[oldRef] = null;
3143      if (canSetSetupRef(oldRef)) {
3144        setupState[oldRef] = null;
3145      }
3146    } else if (isRef(oldRef)) {
3147      oldRef.value = null;
3148    }
3149  }
3150  if (isFunction$3(ref3)) {
3151    callWithErrorHandling(ref3, owner, 12, [value, refs]);
3152  } else {
3153    const _isString = isString$3(ref3);
3154    const _isRef = isRef(ref3);
3155    if (_isString || _isRef) {
3156      const doSet = () => {
3157        if (rawRef.f) {
3158          const existing = _isString ? canSetSetupRef(ref3) ? setupState[ref3] : refs[ref3] : ref3.value;
3159          if (isUnmount) {
3160            isArray$3(existing) && remove(existing, refValue);
3161          } else {
3162            if (!isArray$3(existing)) {
3163              if (_isString) {
3164                refs[ref3] = [refValue];
3165                if (canSetSetupRef(ref3)) {
3166                  setupState[ref3] = refs[ref3];
3167                }
3168              } else {
3169                ref3.value = [refValue];
3170                if (rawRef.k) refs[rawRef.k] = ref3.value;
3171              }
3172            } else if (!existing.includes(refValue)) {
3173              existing.push(refValue);
3174            }
3175          }
3176        } else if (_isString) {
3177          refs[ref3] = value;
3178          if (canSetSetupRef(ref3)) {
3179            setupState[ref3] = value;
3180          }
3181        } else if (_isRef) {
3182          ref3.value = value;
3183          if (rawRef.k) refs[rawRef.k] = value;
3184        } else ;
3185      };
3186      if (value) {
3187        doSet.id = -1;
3188        queuePostRenderEffect(doSet, parentSuspense);
3189      } else {
3190        doSet();
3191      }
3192    }
3193  }
3194}
3195let hasLoggedMismatchError = false;
vendor: 6,767 bytes, lines 3196-3408
3196const logMismatchError = () => {
3197  if (hasLoggedMismatchError) {
3198    return;
3199  }
3200  console.error("Hydration completed but contains mismatches.");
3201  hasLoggedMismatchError = true;
3202};
3203const isSVGContainer = (container) => container.namespaceURI.includes("svg") && container.tagName !== "foreignObject";
3204const isMathMLContainer = (container) => container.namespaceURI.includes("MathML");
3205const getContainerType = (container) => {
3206  if (container.nodeType !== 1) return void 0;
3207  if (isSVGContainer(container)) return "svg";
3208  if (isMathMLContainer(container)) return "mathml";
3209  return void 0;
3210};
3211const isComment = (node) => node.nodeType === 8;
3212function createHydrationFunctions(rendererInternals) {
3213  const {
3214    mt: mountComponent,
3215    p: patch,
3216    o: {
3217      patchProp: patchProp2,
3218      createText,
3219      nextSibling,
3220      parentNode,
3221      remove: remove2,
3222      insert,
3223      createComment
3224    }
3225  } = rendererInternals;
3226  const hydrate2 = (vnode, container) => {
3227    if (!container.hasChildNodes()) {
3228      patch(null, vnode, container);
3229      flushPostFlushCbs();
3230      container._vnode = vnode;
3231      return;
3232    }
3233    hydrateNode(container.firstChild, vnode, null, null, null);
3234    flushPostFlushCbs();
3235    container._vnode = vnode;
3236  };
3237  const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {
3238    optimized = optimized || !!vnode.dynamicChildren;
3239    const isFragmentStart = isComment(node) && node.data === "[";
3240    const onMismatch = () => handleMismatch(
3241      node,
3242      vnode,
3243      parentComponent,
3244      parentSuspense,
3245      slotScopeIds,
3246      isFragmentStart
3247    );
3248    const { type, ref: ref3, shapeFlag, patchFlag } = vnode;
3249    let domType = node.nodeType;
3250    vnode.el = node;
3251    if (patchFlag === -2) {
3252      optimized = false;
3253      vnode.dynamicChildren = null;
3254    }
3255    let nextNode = null;
3256    switch (type) {
3257      case Text:
3258        if (domType !== 3) {
3259          if (vnode.children === "") {
3260            insert(vnode.el = createText(""), parentNode(node), node);
3261            nextNode = node;
3262          } else {
3263            nextNode = onMismatch();
3264          }
3265        } else {
3266          if (node.data !== vnode.children) {
3267            logMismatchError();
3268            node.data = vnode.children;
3269          }
3270          nextNode = nextSibling(node);
3271        }
3272        break;
3273      case Comment:
3274        if (isTemplateNode2(node)) {
3275          nextNode = nextSibling(node);
3276          replaceNode(
3277            vnode.el = node.content.firstChild,
3278            node,
3279            parentComponent
3280          );
3281        } else if (domType !== 8 || isFragmentStart) {
3282          nextNode = onMismatch();
3283        } else {
3284          nextNode = nextSibling(node);
3285        }
3286        break;
3287      case Static:
3288        if (isFragmentStart) {
3289          node = nextSibling(node);
3290          domType = node.nodeType;
3291        }
3292        if (domType === 1 || domType === 3) {
3293          nextNode = node;
3294          const needToAdoptContent = !vnode.children.length;
3295          for (let i = 0; i < vnode.staticCount; i++) {
3296            if (needToAdoptContent)
3297              vnode.children += nextNode.nodeType === 1 ? nextNode.outerHTML : nextNode.data;
3298            if (i === vnode.staticCount - 1) {
3299              vnode.anchor = nextNode;
3300            }
3301            nextNode = nextSibling(nextNode);
3302          }
3303          return isFragmentStart ? nextSibling(nextNode) : nextNode;
3304        } else {
3305          onMismatch();
3306        }
3307        break;
3308      case Fragment:
3309        if (!isFragmentStart) {
3310          nextNode = onMismatch();
3311        } else {
3312          nextNode = hydrateFragment(
3313            node,
3314            vnode,
3315            parentComponent,
3316            parentSuspense,
3317            slotScopeIds,
3318            optimized
3319          );
3320        }
3321        break;
3322      default:
3323        if (shapeFlag & 1) {
3324          if ((domType !== 1 || vnode.type.toLowerCase() !== node.tagName.toLowerCase()) && !isTemplateNode2(node)) {
3325            nextNode = onMismatch();
3326          } else {
3327            nextNode = hydrateElement(
3328              node,
3329              vnode,
3330              parentComponent,
3331              parentSuspense,
3332              slotScopeIds,
3333              optimized
3334            );
3335          }
3336        } else if (shapeFlag & 6) {
3337          vnode.slotScopeIds = slotScopeIds;
3338          const container = parentNode(node);
3339          if (isFragmentStart) {
3340            nextNode = locateClosingAnchor(node);
3341          } else if (isComment(node) && node.data === "teleport start") {
3342            nextNode = locateClosingAnchor(node, node.data, "teleport end");
3343          } else {
3344            nextNode = nextSibling(node);
3345          }
3346          mountComponent(
3347            vnode,
3348            container,
3349            null,
3350            parentComponent,
3351            parentSuspense,
3352            getContainerType(container),
3353            optimized
3354          );
3355          if (isAsyncWrapper(vnode) && !vnode.type.__asyncResolved) {
3356            let subTree;
3357            if (isFragmentStart) {
3358              subTree = createVNode(Fragment);
3359              subTree.anchor = nextNode ? nextNode.previousSibling : container.lastChild;
3360            } else {
3361              subTree = node.nodeType === 3 ? createTextVNode("") : createVNode("div");
3362            }
3363            subTree.el = node;
3364            vnode.component.subTree = subTree;
3365          }
3366        } else if (shapeFlag & 64) {
3367          if (domType !== 8) {
3368            nextNode = onMismatch();
3369          } else {
3370            nextNode = vnode.type.hydrate(
3371              node,
3372              vnode,
3373              parentComponent,
3374              parentSuspense,
3375              slotScopeIds,
3376              optimized,
3377              rendererInternals,
3378              hydrateChildren
3379            );
3380          }
3381        } else if (shapeFlag & 128) {
3382          nextNode = vnode.type.hydrate(
3383            node,
3384            vnode,
3385            parentComponent,
3386            parentSuspense,
3387            getContainerType(parentNode(node)),
3388            slotScopeIds,
3389            optimized,
3390            rendererInternals,
3391            hydrateNode
3392          );
3393        } else ;
3394    }
3395    if (ref3 != null) {
3396      setRef(ref3, null, parentSuspense, vnode);
3397    }
3398    return nextNode;
3399  };
3400  const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
3401    optimized = optimized || !!vnode.dynamicChildren;
3402    const { type, props: props2, patchFlag, shapeFlag, dirs, transition: transition2 } = vnode;
3403    const forcePatch = type === "input" || type === "option";
3404    if (forcePatch || patchFlag !== -1) {
3405      if (dirs) {
3406        invokeDirectiveHook(vnode, null, parentComponent, "created");
3407      }
3408      let needCallTransitionHooks = false;
vendor: 13,835 bytes, lines 3409-3889
3409      if (isTemplateNode2(el)) {
3410        needCallTransitionHooks = needTransition(
3411          null,
3412          // no need check parentSuspense in hydration
3413          transition2
3414        ) && parentComponent && parentComponent.vnode.props && parentComponent.vnode.props.appear;
3415        const content = el.content.firstChild;
3416        if (needCallTransitionHooks) {
3417          const cls = content.getAttribute("class");
3418          if (cls) content.$cls = cls;
3419          transition2.beforeEnter(content);
3420        }
3421        replaceNode(content, el, parentComponent);
3422        vnode.el = el = content;
3423      }
3424      if (shapeFlag & 16 && // skip if element has innerHTML / textContent
3425      !(props2 && (props2.innerHTML || props2.textContent))) {
3426        let next = hydrateChildren(
3427          el.firstChild,
3428          vnode,
3429          el,
3430          parentComponent,
3431          parentSuspense,
3432          slotScopeIds,
3433          optimized
3434        );
3435        while (next) {
3436          if (!isMismatchAllowed(
3437            el,
3438            1
3439            /* CHILDREN */
3440          )) {
3441            logMismatchError();
3442          }
3443          const cur = next;
3444          next = next.nextSibling;
3445          remove2(cur);
3446        }
3447      } else if (shapeFlag & 8) {
3448        let clientText = vnode.children;
3449        if (clientText[0] === "\n" && (el.tagName === "PRE" || el.tagName === "TEXTAREA")) {
3450          clientText = clientText.slice(1);
3451        }
3452        if (el.textContent !== clientText) {
3453          if (!isMismatchAllowed(
3454            el,
3455            0
3456            /* TEXT */
3457          )) {
3458            logMismatchError();
3459          }
3460          el.textContent = vnode.children;
3461        }
3462      }
3463      if (props2) {
3464        if (forcePatch || !optimized || patchFlag & (16 | 32)) {
3465          const isCustomElement = el.tagName.includes("-");
3466          for (const key in props2) {
3467            if (forcePatch && (key.endsWith("value") || key === "indeterminate") || isOn(key) && !isReservedProp(key) || // force hydrate v-bind with .prop modifiers
3468            key[0] === "." || isCustomElement) {
3469              patchProp2(el, key, null, props2[key], void 0, parentComponent);
3470            }
3471          }
3472        } else if (props2.onClick) {
3473          patchProp2(
3474            el,
3475            "onClick",
3476            null,
3477            props2.onClick,
3478            void 0,
3479            parentComponent
3480          );
3481        } else if (patchFlag & 4 && isReactive(props2.style)) {
3482          for (const key in props2.style) props2.style[key];
3483        }
3484      }
3485      let vnodeHooks;
3486      if (vnodeHooks = props2 && props2.onVnodeBeforeMount) {
3487        invokeVNodeHook(vnodeHooks, parentComponent, vnode);
3488      }
3489      if (dirs) {
3490        invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
3491      }
3492      if ((vnodeHooks = props2 && props2.onVnodeMounted) || dirs || needCallTransitionHooks) {
3493        queueEffectWithSuspense(() => {
3494          vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);
3495          needCallTransitionHooks && transition2.enter(el);
3496          dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
3497        }, parentSuspense);
3498      }
3499    }
3500    return el.nextSibling;
3501  };
3502  const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {
3503    optimized = optimized || !!parentVNode.dynamicChildren;
3504    const children = parentVNode.children;
3505    const l = children.length;
3506    for (let i = 0; i < l; i++) {
3507      const vnode = optimized ? children[i] : children[i] = normalizeVNode(children[i]);
3508      const isText = vnode.type === Text;
3509      if (node) {
3510        if (isText && !optimized) {
3511          if (i + 1 < l && normalizeVNode(children[i + 1]).type === Text) {
3512            insert(
3513              createText(
3514                node.data.slice(vnode.children.length)
3515              ),
3516              container,
3517              nextSibling(node)
3518            );
3519            node.data = vnode.children;
3520          }
3521        }
3522        node = hydrateNode(
3523          node,
3524          vnode,
3525          parentComponent,
3526          parentSuspense,
3527          slotScopeIds,
3528          optimized
3529        );
3530      } else if (isText && !vnode.children) {
3531        insert(vnode.el = createText(""), container);
3532      } else {
3533        if (!isMismatchAllowed(
3534          container,
3535          1
3536          /* CHILDREN */
3537        )) {
3538          logMismatchError();
3539        }
3540        patch(
3541          null,
3542          vnode,
3543          container,
3544          null,
3545          parentComponent,
3546          parentSuspense,
3547          getContainerType(container),
3548          slotScopeIds
3549        );
3550      }
3551    }
3552    return node;
3553  };
3554  const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {
3555    const { slotScopeIds: fragmentSlotScopeIds } = vnode;
3556    if (fragmentSlotScopeIds) {
3557      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
3558    }
3559    const container = parentNode(node);
3560    const next = hydrateChildren(
3561      nextSibling(node),
3562      vnode,
3563      container,
3564      parentComponent,
3565      parentSuspense,
3566      slotScopeIds,
3567      optimized
3568    );
3569    if (next && isComment(next) && next.data === "]") {
3570      return nextSibling(vnode.anchor = next);
3571    } else {
3572      logMismatchError();
3573      insert(vnode.anchor = createComment(`]`), container, next);
3574      return next;
3575    }
3576  };
3577  const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {
3578    if (!isMismatchAllowed(
3579      node.parentElement,
3580      1
3581      /* CHILDREN */
3582    )) {
3583      logMismatchError();
3584    }
3585    vnode.el = null;
3586    if (isFragment) {
3587      const end = locateClosingAnchor(node);
3588      while (true) {
3589        const next2 = nextSibling(node);
3590        if (next2 && next2 !== end) {
3591          remove2(next2);
3592        } else {
3593          break;
3594        }
3595      }
3596    }
3597    const next = nextSibling(node);
3598    const container = parentNode(node);
3599    remove2(node);
3600    patch(
3601      null,
3602      vnode,
3603      container,
3604      next,
3605      parentComponent,
3606      parentSuspense,
3607      getContainerType(container),
3608      slotScopeIds
3609    );
3610    if (parentComponent) {
3611      parentComponent.vnode.el = vnode.el;
3612      updateHOCHostEl(parentComponent, vnode.el);
3613    }
3614    return next;
3615  };
3616  const locateClosingAnchor = (node, open = "[", close = "]") => {
3617    let match = 0;
3618    while (node) {
3619      node = nextSibling(node);
3620      if (node && isComment(node)) {
3621        if (node.data === open) match++;
3622        if (node.data === close) {
3623          if (match === 0) {
3624            return nextSibling(node);
3625          } else {
3626            match--;
3627          }
3628        }
3629      }
3630    }
3631    return node;
3632  };
3633  const replaceNode = (newNode, oldNode, parentComponent) => {
3634    const parentNode2 = oldNode.parentNode;
3635    if (parentNode2) {
3636      parentNode2.replaceChild(newNode, oldNode);
3637    }
3638    let parent = parentComponent;
3639    while (parent) {
3640      if (parent.vnode.el === oldNode) {
3641        parent.vnode.el = parent.subTree.el = newNode;
3642      }
3643      parent = parent.parent;
3644    }
3645  };
3646  const isTemplateNode2 = (node) => {
3647    return node.nodeType === 1 && node.tagName === "TEMPLATE";
3648  };
3649  return [hydrate2, hydrateNode];
3650}
3651const allowMismatchAttr = "data-allow-mismatch";
3652const MismatchTypeString = {
3653  [
3654    0
3655    /* TEXT */
3656  ]: "text",
3657  [
3658    1
3659    /* CHILDREN */
3660  ]: "children",
3661  [
3662    2
3663    /* CLASS */
3664  ]: "class",
3665  [
3666    3
3667    /* STYLE */
3668  ]: "style",
3669  [
3670    4
3671    /* ATTRIBUTE */
3672  ]: "attribute"
3673};
3674function isMismatchAllowed(el, allowedType) {
3675  if (allowedType === 0 || allowedType === 1) {
3676    while (el && !el.hasAttribute(allowMismatchAttr)) {
3677      el = el.parentElement;
3678    }
3679  }
3680  const allowedAttr = el && el.getAttribute(allowMismatchAttr);
3681  if (allowedAttr == null) {
3682    return false;
3683  } else if (allowedAttr === "") {
3684    return true;
3685  } else {
3686    const list = allowedAttr.split(",");
3687    if (allowedType === 0 && list.includes("children")) {
3688      return true;
3689    }
3690    return allowedAttr.split(",").includes(MismatchTypeString[allowedType]);
3691  }
3692}
3693const requestIdleCallback = getGlobalThis$2().requestIdleCallback || ((cb) => setTimeout(cb, 1));
3694const cancelIdleCallback = getGlobalThis$2().cancelIdleCallback || ((id) => clearTimeout(id));
3695const hydrateOnIdle = (timeout = 1e4) => (hydrate2) => {
3696  const id = requestIdleCallback(hydrate2, { timeout });
3697  return () => cancelIdleCallback(id);
3698};
3699function elementIsVisibleInViewport(el) {
3700  const { top, left, bottom, right } = el.getBoundingClientRect();
3701  const { innerHeight, innerWidth } = window;
3702  return (top > 0 && top < innerHeight || bottom > 0 && bottom < innerHeight) && (left > 0 && left < innerWidth || right > 0 && right < innerWidth);
3703}
3704const hydrateOnVisible = (opts) => (hydrate2, forEach2) => {
3705  const ob = new IntersectionObserver((entries) => {
3706    for (const e of entries) {
3707      if (!e.isIntersecting) continue;
3708      ob.disconnect();
3709      hydrate2();
3710      break;
3711    }
3712  }, opts);
3713  forEach2((el) => {
3714    if (!(el instanceof Element)) return;
3715    if (elementIsVisibleInViewport(el)) {
3716      hydrate2();
3717      ob.disconnect();
3718      return false;
3719    }
3720    ob.observe(el);
3721  });
3722  return () => ob.disconnect();
3723};
3724const hydrateOnMediaQuery = (query) => (hydrate2) => {
3725  if (query) {
3726    const mql = matchMedia(query);
3727    if (mql.matches) {
3728      hydrate2();
3729    } else {
3730      mql.addEventListener("change", hydrate2, { once: true });
3731      return () => mql.removeEventListener("change", hydrate2);
3732    }
3733  }
3734};
3735const hydrateOnInteraction = (interactions = []) => (hydrate2, forEach2) => {
3736  if (isString$3(interactions)) interactions = [interactions];
3737  let hasHydrated = false;
3738  const doHydrate = (e) => {
3739    if (!hasHydrated) {
3740      hasHydrated = true;
3741      teardown();
3742      hydrate2();
3743      e.target.dispatchEvent(new e.constructor(e.type, e));
3744    }
3745  };
3746  const teardown = () => {
3747    forEach2((el) => {
3748      for (const i of interactions) {
3749        el.removeEventListener(i, doHydrate);
3750      }
3751    });
3752  };
3753  forEach2((el) => {
3754    for (const i of interactions) {
3755      el.addEventListener(i, doHydrate, { once: true });
3756    }
3757  });
3758  return teardown;
3759};
3760function forEachElement(node, cb) {
3761  if (isComment(node) && node.data === "[") {
3762    let depth = 1;
3763    let next = node.nextSibling;
3764    while (next) {
3765      if (next.nodeType === 1) {
3766        const result = cb(next);
3767        if (result === false) {
3768          break;
3769        }
3770      } else if (isComment(next)) {
3771        if (next.data === "]") {
3772          if (--depth === 0) break;
3773        } else if (next.data === "[") {
3774          depth++;
3775        }
3776      }
3777      next = next.nextSibling;
3778    }
3779  } else {
3780    cb(node);
3781  }
3782}
3783const isAsyncWrapper = (i) => !!i.type.__asyncLoader;
3784/*! #__NO_SIDE_EFFECTS__ */
3785// @__NO_SIDE_EFFECTS__
3786function defineAsyncComponent(source) {
3787  if (isFunction$3(source)) {
3788    source = { loader: source };
3789  }
3790  const {
3791    loader,
3792    loadingComponent,
3793    errorComponent,
3794    delay = 200,
3795    hydrate: hydrateStrategy,
3796    timeout,
3797    // undefined = never times out
3798    suspensible = true,
3799    onError: userOnError
3800  } = source;
3801  let pendingRequest = null;
3802  let resolvedComp;
3803  let retries = 0;
3804  const retry = () => {
3805    retries++;
3806    pendingRequest = null;
3807    return load();
3808  };
3809  const load = () => {
3810    let thisRequest;
3811    return pendingRequest || (thisRequest = pendingRequest = loader().catch((err) => {
3812      err = err instanceof Error ? err : new Error(String(err));
3813      if (userOnError) {
3814        return new Promise((resolve2, reject) => {
3815          const userRetry = () => resolve2(retry());
3816          const userFail = () => reject(err);
3817          userOnError(err, userRetry, userFail, retries + 1);
3818        });
3819      } else {
3820        throw err;
3821      }
3822    }).then((comp) => {
3823      if (thisRequest !== pendingRequest && pendingRequest) {
3824        return pendingRequest;
3825      }
3826      if (comp && (comp.__esModule || comp[Symbol.toStringTag] === "Module")) {
3827        comp = comp.default;
3828      }
3829      resolvedComp = comp;
3830      return comp;
3831    }));
3832  };
3833  return /* @__PURE__ */ defineComponent({
3834    name: "AsyncComponentWrapper",
3835    __asyncLoader: load,
3836    __asyncHydrate(el, instance, hydrate2) {
3837      const doHydrate = hydrateStrategy ? () => {
3838        const performHydrate = () => {
3839          hydrate2();
3840        };
3841        const teardown = hydrateStrategy(
3842          performHydrate,
3843          (cb) => forEachElement(el, cb)
3844        );
3845        if (teardown) {
3846          (instance.bum || (instance.bum = [])).push(teardown);
3847        }
3848        (instance.u || (instance.u = [])).push(() => true);
3849      } : hydrate2;
3850      if (resolvedComp) {
3851        doHydrate();
3852      } else {
3853        load().then(() => !instance.isUnmounted && doHydrate());
3854      }
3855    },
3856    get __asyncResolved() {
3857      return resolvedComp;
3858    },
3859    setup() {
3860      const instance = currentInstance;
3861      markAsyncBoundary(instance);
3862      if (resolvedComp) {
3863        return () => createInnerComp(resolvedComp, instance);
3864      }
3865      const onError = (err) => {
3866        pendingRequest = null;
3867        handleError(
3868          err,
3869          instance,
3870          13,
3871          !errorComponent
3872        );
3873      };
3874      if (suspensible && instance.suspense || isInSSRComponentSetup) {
3875        return load().then((comp) => {
3876          return () => createInnerComp(comp, instance);
3877        }).catch((err) => {
3878          onError(err);
3879          return () => errorComponent ? createVNode(errorComponent, {
3880            error: err
3881          }) : null;
3882        });
3883      }
3884      const loaded = ref(false);
3885      const error = ref();
3886      const delayed = ref(!!delay);
3887      if (delay) {
3888        setTimeout(() => {
3889          delayed.value = false;
3890        }, delay);
3891      }
3892      if (timeout != null) {
3893        setTimeout(() => {
3894          if (!loaded.value && !error.value) {
3895            const err = new Error(
3896              `Async component timed out after ${timeout}ms.`
3897            );
3898            onError(err);
3899            error.value = err;
3900          }
3901        }, timeout);
3902      }
3903      load().then(() => {
3904        loaded.value = true;
3905        if (instance.parent && isKeepAlive(instance.parent.vnode)) {
3906          instance.parent.update();
3907        }
3908      }).catch((err) => {
3909        onError(err);
3910        error.value = err;
3911      });
3912      return () => {
3913        if (loaded.value && resolvedComp) {
3914          return createInnerComp(resolvedComp, instance);
3915        } else if (error.value && errorComponent) {
3916          return createVNode(errorComponent, {
3917            error: error.value
3918          });
3919        } else if (loadingComponent && !delayed.value) {
3920          return createVNode(loadingComponent);
3921        }
3922      };
3923    }
3924  });
3925}
3926function createInnerComp(comp, parent) {
3927  const { ref: ref22, props: props2, children, ce } = parent.vnode;
3928  const vnode = createVNode(comp, props2, children);
3929  vnode.ref = ref22;
3930  vnode.ce = ce;
3931  delete parent.vnode.ce;
3932  return vnode;
3933}
3934const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;
3935const KeepAliveImpl = {
3936  name: `KeepAlive`,
3937  // Marker for special handling inside the renderer. We are not using a ===
3938  // check directly on KeepAlive in the renderer, because importing it directly
3939  // would prevent it from being tree-shaken.
3940  __isKeepAlive: true,
3941  props: {
3942    include: [String, RegExp, Array],
3943    exclude: [String, RegExp, Array],
3944    max: [String, Number]
3945  },
3946  setup(props2, { slots }) {
3947    const instance = getCurrentInstance();
3948    const sharedContext = instance.ctx;
3949    if (!sharedContext.renderer) {
3950      return () => {
3951        const children = slots.default && slots.default();
3952        return children && children.length === 1 ? children[0] : children;
3953      };
3954    }
3955    const cache2 = /* @__PURE__ */ new Map();
3956    const keys = /* @__PURE__ */ new Set();
3957    let current = null;
3958    const parentSuspense = instance.suspense;
3959    const {
3960      renderer: {
3961        p: patch,
3962        m: move,
3963        um: _unmount,
3964        o: { createElement: createElement2 }
3965      }
3966    } = sharedContext;
3967    const storageContainer = createElement2("div");
3968    sharedContext.activate = (vnode, container, anchor, namespace, optimized) => {
3969      const instance2 = vnode.component;
3970      move(vnode, container, anchor, 0, parentSuspense);
3971      patch(
3972        instance2.vnode,
3973        vnode,
3974        container,
3975        anchor,
3976        instance2,
3977        parentSuspense,
3978        namespace,
3979        vnode.slotScopeIds,
3980        optimized
3981      );
3982      queuePostRenderEffect(() => {
3983        instance2.isDeactivated = false;
3984        if (instance2.a) {
3985          invokeArrayFns(instance2.a);
3986        }
3987        const vnodeHook = vnode.props && vnode.props.onVnodeMounted;
3988        if (vnodeHook) {
3989          invokeVNodeHook(vnodeHook, instance2.parent, vnode);
3990        }
3991      }, parentSuspense);
3992    };
3993    sharedContext.deactivate = (vnode) => {
3994      const instance2 = vnode.component;
3995      invalidateMount(instance2.m);
3996      invalidateMount(instance2.a);
3997      move(vnode, storageContainer, null, 1, parentSuspense);
3998      queuePostRenderEffect(() => {
3999        if (instance2.da) {
4000          invokeArrayFns(instance2.da);
4001        }
4002        const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;
4003        if (vnodeHook) {
4004          invokeVNodeHook(vnodeHook, instance2.parent, vnode);
4005        }
4006        instance2.isDeactivated = true;
4007      }, parentSuspense);
4008    };
4009    function unmount(vnode) {
4010      resetShapeFlag(vnode);
4011      _unmount(vnode, instance, parentSuspense, true);
4012    }
4013    function pruneCache(filter2) {
4014      cache2.forEach((vnode, key) => {
4015        const name = getComponentName(vnode.type);
4016        if (name && !filter2(name)) {
4017          pruneCacheEntry(key);
4018        }
4019      });
4020    }
4021    function pruneCacheEntry(key) {
vendor: 3,951 bytes, lines 4022-4145
4022      const cached = cache2.get(key);
4023      if (cached && (!current || !isSameVNodeType(cached, current))) {
4024        unmount(cached);
4025      } else if (current) {
4026        resetShapeFlag(current);
4027      }
4028      cache2.delete(key);
4029      keys.delete(key);
4030    }
4031    watch(
4032      () => [props2.include, props2.exclude],
4033      ([include, exclude]) => {
4034        include && pruneCache((name) => matches(include, name));
4035        exclude && pruneCache((name) => !matches(exclude, name));
4036      },
4037      // prune post-render after `current` has been updated
4038      { flush: "post", deep: true }
4039    );
4040    let pendingCacheKey = null;
4041    const cacheSubtree = () => {
4042      if (pendingCacheKey != null) {
4043        if (isSuspense(instance.subTree.type)) {
4044          queuePostRenderEffect(() => {
4045            cache2.set(pendingCacheKey, getInnerChild(instance.subTree));
4046          }, instance.subTree.suspense);
4047        } else {
4048          cache2.set(pendingCacheKey, getInnerChild(instance.subTree));
4049        }
4050      }
4051    };
4052    onMounted(cacheSubtree);
4053    onUpdated(cacheSubtree);
4054    onBeforeUnmount(() => {
4055      cache2.forEach((cached) => {
4056        const { subTree, suspense } = instance;
4057        const vnode = getInnerChild(subTree);
4058        if (cached.type === vnode.type && cached.key === vnode.key) {
4059          resetShapeFlag(vnode);
4060          const da = vnode.component.da;
4061          da && queuePostRenderEffect(da, suspense);
4062          return;
4063        }
4064        unmount(cached);
4065      });
4066    });
4067    return () => {
4068      pendingCacheKey = null;
4069      if (!slots.default) {
4070        return current = null;
4071      }
4072      const children = slots.default();
4073      const rawVNode = children[0];
4074      if (children.length > 1) {
4075        current = null;
4076        return children;
4077      } else if (!isVNode$1(rawVNode) || !(rawVNode.shapeFlag & 4) && !(rawVNode.shapeFlag & 128)) {
4078        current = null;
4079        return rawVNode;
4080      }
4081      let vnode = getInnerChild(rawVNode);
4082      if (vnode.type === Comment) {
4083        current = null;
4084        return vnode;
4085      }
4086      const comp = vnode.type;
4087      const name = getComponentName(
4088        isAsyncWrapper(vnode) ? vnode.type.__asyncResolved || {} : comp
4089      );
4090      const { include, exclude, max } = props2;
4091      if (include && (!name || !matches(include, name)) || exclude && name && matches(exclude, name)) {
4092        vnode.shapeFlag &= -257;
4093        current = vnode;
4094        return rawVNode;
4095      }
4096      const key = vnode.key == null ? comp : vnode.key;
4097      const cachedVNode = cache2.get(key);
4098      if (vnode.el) {
4099        vnode = cloneVNode(vnode);
4100        if (rawVNode.shapeFlag & 128) {
4101          rawVNode.ssContent = vnode;
4102        }
4103      }
4104      pendingCacheKey = key;
4105      if (cachedVNode) {
4106        vnode.el = cachedVNode.el;
4107        vnode.component = cachedVNode.component;
4108        if (vnode.transition) {
4109          setTransitionHooks(vnode, vnode.transition);
4110        }
4111        vnode.shapeFlag |= 512;
4112        keys.delete(key);
4113        keys.add(key);
4114      } else {
4115        keys.add(key);
4116        if (max && keys.size > parseInt(max, 10)) {
4117          pruneCacheEntry(keys.values().next().value);
4118        }
4119      }
4120      vnode.shapeFlag |= 256;
4121      current = vnode;
4122      return isSuspense(rawVNode.type) ? rawVNode : vnode;
4123    };
4124  }
4125};
4126const KeepAlive = KeepAliveImpl;
4127function matches(pattern, name) {
4128  if (isArray$3(pattern)) {
4129    return pattern.some((p2) => matches(p2, name));
4130  } else if (isString$3(pattern)) {
4131    return pattern.split(",").includes(name);
4132  } else if (isRegExp$3(pattern)) {
4133    pattern.lastIndex = 0;
4134    return pattern.test(name);
4135  }
4136  return false;
4137}
4138function onActivated(hook, target) {
4139  registerKeepAliveHook(hook, "a", target);
4140}
4141function onDeactivated(hook, target) {
4142  registerKeepAliveHook(hook, "da", target);
4143}
4144function registerKeepAliveHook(hook, type, target = currentInstance) {
4145  const wrappedHook = hook.__wdc || (hook.__wdc = () => {
vendor: 3,954 bytes, lines 4146-4278
4146    let current = target;
4147    while (current) {
4148      if (current.isDeactivated) {
4149        return;
4150      }
4151      current = current.parent;
4152    }
4153    return hook();
4154  });
4155  injectHook(type, wrappedHook, target);
4156  if (target) {
4157    let current = target.parent;
4158    while (current && current.parent) {
4159      if (isKeepAlive(current.parent.vnode)) {
4160        injectToKeepAliveRoot(wrappedHook, type, target, current);
4161      }
4162      current = current.parent;
4163    }
4164  }
4165}
4166function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {
4167  const injected = injectHook(
4168    type,
4169    hook,
4170    keepAliveRoot,
4171    true
4172    /* prepend */
4173  );
4174  onUnmounted(() => {
4175    remove(keepAliveRoot[type], injected);
4176  }, target);
4177}
4178function resetShapeFlag(vnode) {
4179  vnode.shapeFlag &= -257;
4180  vnode.shapeFlag &= -513;
4181}
4182function getInnerChild(vnode) {
4183  return vnode.shapeFlag & 128 ? vnode.ssContent : vnode;
4184}
4185function injectHook(type, hook, target = currentInstance, prepend = false) {
4186  if (target) {
4187    const hooks = target[type] || (target[type] = []);
4188    const wrappedHook = hook.__weh || (hook.__weh = (...args) => {
4189      pauseTracking();
4190      const reset2 = setCurrentInstance(target);
4191      const res = callWithAsyncErrorHandling(hook, target, type, args);
4192      reset2();
4193      resetTracking();
4194      return res;
4195    });
4196    if (prepend) {
4197      hooks.unshift(wrappedHook);
4198    } else {
4199      hooks.push(wrappedHook);
4200    }
4201    return wrappedHook;
4202  }
4203}
4204const createHook = (lifecycle) => (hook, target = currentInstance) => {
4205  if (!isInSSRComponentSetup || lifecycle === "sp") {
4206    injectHook(lifecycle, (...args) => hook(...args), target);
4207  }
4208};
4209const onBeforeMount = createHook("bm");
4210const onMounted = createHook("m");
4211const onBeforeUpdate = createHook(
4212  "bu"
4213);
4214const onUpdated = createHook("u");
4215const onBeforeUnmount = createHook(
4216  "bum"
4217);
4218const onUnmounted = createHook("um");
4219const onServerPrefetch = createHook(
4220  "sp"
4221);
4222const onRenderTriggered = createHook("rtg");
4223const onRenderTracked = createHook("rtc");
4224function onErrorCaptured(hook, target = currentInstance) {
4225  injectHook("ec", hook, target);
4226}
4227const COMPONENTS = "components";
4228const DIRECTIVES = "directives";
4229function resolveComponent(name, maybeSelfReference) {
4230  return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;
4231}
4232const NULL_DYNAMIC_COMPONENT = Symbol.for("v-ndc");
4233function resolveDynamicComponent(component) {
4234  if (isString$3(component)) {
4235    return resolveAsset(COMPONENTS, component, false) || component;
4236  } else {
4237    return component || NULL_DYNAMIC_COMPONENT;
4238  }
4239}
4240function resolveDirective(name) {
4241  return resolveAsset(DIRECTIVES, name);
4242}
4243function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {
4244  const instance = currentRenderingInstance || currentInstance;
4245  if (instance) {
4246    const Component = instance.type;
4247    if (type === COMPONENTS) {
4248      const selfName = getComponentName(
4249        Component,
4250        false
4251      );
4252      if (selfName && (selfName === name || selfName === camelize(name) || selfName === capitalize$1(camelize(name)))) {
4253        return Component;
4254      }
4255    }
4256    const res = (
4257      // local registration
4258      // check instance[type] first which is resolved for options API
4259      resolve(instance[type] || Component[type], name) || // global registration
4260      resolve(instance.appContext[type], name)
4261    );
4262    if (!res && maybeSelfReference) {
4263      return Component;
4264    }
4265    return res;
4266  }
4267}
4268function resolve(registry, name) {
4269  return registry && (registry[name] || registry[camelize(name)] || registry[capitalize$1(camelize(name))]);
4270}
4271function renderList(source, renderItem, cache2, index2) {
4272  let ret;
4273  const cached = cache2 && cache2[index2];
4274  const sourceIsArray = isArray$3(source);
4275  if (sourceIsArray || isString$3(source)) {
4276    const sourceIsReactiveArray = sourceIsArray && isReactive(source);
4277    let needsWrap = false;
4278    let isReadonlySource = false;
vendor: 1,645 bytes, lines 4279-4336
4279    if (sourceIsReactiveArray) {
4280      needsWrap = !isShallow(source);
4281      isReadonlySource = isReadonly(source);
4282      source = shallowReadArray(source);
4283    }
4284    ret = new Array(source.length);
4285    for (let i = 0, l = source.length; i < l; i++) {
4286      ret[i] = renderItem(
4287        needsWrap ? isReadonlySource ? toReadonly(toReactive(source[i])) : toReactive(source[i]) : source[i],
4288        i,
4289        void 0,
4290        cached && cached[i]
4291      );
4292    }
4293  } else if (typeof source === "number") {
4294    ret = new Array(source);
4295    for (let i = 0; i < source; i++) {
4296      ret[i] = renderItem(i + 1, i, void 0, cached && cached[i]);
4297    }
4298  } else if (isObject$9(source)) {
4299    if (source[Symbol.iterator]) {
4300      ret = Array.from(
4301        source,
4302        (item, i) => renderItem(item, i, void 0, cached && cached[i])
4303      );
4304    } else {
4305      const keys = Object.keys(source);
4306      ret = new Array(keys.length);
4307      for (let i = 0, l = keys.length; i < l; i++) {
4308        const key = keys[i];
4309        ret[i] = renderItem(source[key], key, i, cached && cached[i]);
4310      }
4311    }
4312  } else {
4313    ret = [];
4314  }
4315  if (cache2) {
4316    cache2[index2] = ret;
4317  }
4318  return ret;
4319}
4320function createSlots(slots, dynamicSlots) {
4321  for (let i = 0; i < dynamicSlots.length; i++) {
4322    const slot = dynamicSlots[i];
4323    if (isArray$3(slot)) {
4324      for (let j = 0; j < slot.length; j++) {
4325        slots[slot[j].name] = slot[j].fn;
4326      }
4327    } else if (slot) {
4328      slots[slot.name] = slot.key ? (...args) => {
4329        const res = slot.fn(...args);
4330        if (res) res.key = slot.key;
4331        return res;
4332      } : slot.fn;
4333    }
4334  }
4335  return slots;
4336}
4337function renderSlot(slots, name, props2 = {}, fallback, noSlotted) {
4338  if (currentRenderingInstance.ce || currentRenderingInstance.parent && isAsyncWrapper(currentRenderingInstance.parent) && currentRenderingInstance.parent.ce) {
4339    if (name !== "default") props2.name = name;
4340    return openBlock(), createBlock(
4341      Fragment,
4342      null,
4343      [createVNode("slot", props2, fallback && fallback())],
4344      64
4345    );
4346  }
4347  let slot = slots[name];
4348  if (slot && slot._c) {
4349    slot._d = false;
4350  }
4351  openBlock();
4352  const validSlotContent = slot && ensureValidVNode(slot(props2));
4353  const slotKey = props2.key || // slot content array of a dynamic conditional slot may have a branch
4354  // key attached in the `createSlots` helper, respect that
4355  validSlotContent && validSlotContent.key;
4356  const rendered = createBlock(
4357    Fragment,
4358    {
4359      key: (slotKey && !isSymbol$2(slotKey) ? slotKey : `_${name}`) + // #7256 force differentiate fallback content from actual content
4360      (!validSlotContent && fallback ? "_fb" : "")
4361    },
4362    validSlotContent || (fallback ? fallback() : []),
4363    validSlotContent && slots._ === 1 ? 64 : -2
4364  );
4365  if (!noSlotted && rendered.scopeId) {
4366    rendered.slotScopeIds = [rendered.scopeId + "-s"];
4367  }
4368  if (slot && slot._c) {
4369    slot._d = true;
4370  }
4371  return rendered;
4372}
4373function ensureValidVNode(vnodes) {
4374  return vnodes.some((child) => {
4375    if (!isVNode$1(child)) return true;
4376    if (child.type === Comment) return false;
4377    if (child.type === Fragment && !ensureValidVNode(child.children))
4378      return false;
4379    return true;
4380  }) ? vnodes : null;
4381}
4382function toHandlers(obj, preserveCaseIfNecessary) {
4383  const ret = {};
4384  for (const key in obj) {
4385    ret[preserveCaseIfNecessary && /[A-Z]/.test(key) ? `on:${key}` : toHandlerKey(key)] = obj[key];
4386  }
4387  return ret;
4388}
4389const getPublicInstance = (i) => {
4390  if (!i) return null;
4391  if (isStatefulComponent(i)) return getComponentPublicInstance(i);
4392  return getPublicInstance(i.parent);
4393};
4394const publicPropertiesMap = (
4395  // Move PURE marker to new line to workaround compiler discarding it
4396  // due to type annotation
4397  /* @__PURE__ */ extend$5(/* @__PURE__ */ Object.create(null), {
4398    $: (i) => i,
4399    $el: (i) => i.vnode.el,
4400    $data: (i) => i.data,
4401    $props: (i) => i.props,
4402    $attrs: (i) => i.attrs,
4403    $slots: (i) => i.slots,
4404    $refs: (i) => i.refs,
4405    $parent: (i) => getPublicInstance(i.parent),
4406    $root: (i) => getPublicInstance(i.root),
4407    $host: (i) => i.ce,
4408    $emit: (i) => i.emit,
4409    $options: (i) => resolveMergedOptions(i),
4410    $forceUpdate: (i) => i.f || (i.f = () => {
4411      queueJob(i.update);
4412    }),
4413    $nextTick: (i) => i.n || (i.n = nextTick$1.bind(i.proxy)),
4414    $watch: (i) => instanceWatch.bind(i)
4415  })
4416);
4417const hasSetupBinding = (state2, key) => state2 !== EMPTY_OBJ && !state2.__isScriptSetup && hasOwn$2(state2, key);
4418const PublicInstanceProxyHandlers = {
4419  get({ _: instance }, key) {
4420    if (key === "__v_skip") {
4421      return true;
4422    }
4423    const { ctx, setupState, data, props: props2, accessCache, type, appContext } = instance;
4424    let normalizedProps;
4425    if (key[0] !== "$") {
4426      const n = accessCache[key];
4427      if (n !== void 0) {
4428        switch (n) {
4429          case 1:
4430            return setupState[key];
4431          case 2:
4432            return data[key];
4433          case 4:
4434            return ctx[key];
4435          case 3:
4436            return props2[key];
4437        }
4438      } else if (hasSetupBinding(setupState, key)) {
4439        accessCache[key] = 1;
4440        return setupState[key];
4441      } else if (data !== EMPTY_OBJ && hasOwn$2(data, key)) {
4442        accessCache[key] = 2;
4443        return data[key];
4444      } else if (
4445        // only cache other properties when instance has declared (thus stable)
4446        // props
4447        (normalizedProps = instance.propsOptions[0]) && hasOwn$2(normalizedProps, key)
4448      ) {
4449        accessCache[key] = 3;
4450        return props2[key];
4451      } else if (ctx !== EMPTY_OBJ && hasOwn$2(ctx, key)) {
4452        accessCache[key] = 4;
4453        return ctx[key];
4454      } else if (shouldCacheAccess) {
4455        accessCache[key] = 0;
4456      }
4457    }
4458    const publicGetter = publicPropertiesMap[key];
4459    let cssModule, globalProperties;
4460    if (publicGetter) {
4461      if (key === "$attrs") {
4462        track(instance.attrs, "get", "");
4463      }
4464      return publicGetter(instance);
4465    } else if (
4466      // css module (injected by vue-loader)
4467      (cssModule = type.__cssModules) && (cssModule = cssModule[key])
4468    ) {
4469      return cssModule;
4470    } else if (ctx !== EMPTY_OBJ && hasOwn$2(ctx, key)) {
4471      accessCache[key] = 4;
4472      return ctx[key];
4473    } else if (
4474      // global properties
4475      globalProperties = appContext.config.globalProperties, hasOwn$2(globalProperties, key)
4476    ) {
4477      {
4478        return globalProperties[key];
4479      }
4480    } else ;
4481  },
4482  set({ _: instance }, key, value) {
4483    const { data, setupState, ctx } = instance;
4484    if (hasSetupBinding(setupState, key)) {
4485      setupState[key] = value;
4486      return true;
4487    } else if (data !== EMPTY_OBJ && hasOwn$2(data, key)) {
4488      data[key] = value;
4489      return true;
4490    } else if (hasOwn$2(instance.props, key)) {
4491      return false;
4492    }
4493    if (key[0] === "$" && key.slice(1) in instance) {
4494      return false;
4495    } else {
4496      {
4497        ctx[key] = value;
4498      }
4499    }
4500    return true;
4501  },
4502  has({
4503    _: { data, setupState, accessCache, ctx, appContext, propsOptions }
4504  }, key) {
4505    let normalizedProps;
4506    return !!accessCache[key] || data !== EMPTY_OBJ && hasOwn$2(data, key) || hasSetupBinding(setupState, key) || (normalizedProps = propsOptions[0]) && hasOwn$2(normalizedProps, key) || hasOwn$2(ctx, key) || hasOwn$2(publicPropertiesMap, key) || hasOwn$2(appContext.config.globalProperties, key);
4507  },
4508  defineProperty(target, key, descriptor) {
4509    if (descriptor.get != null) {
4510      target._.accessCache[key] = 0;
4511    } else if (hasOwn$2(descriptor, "value")) {
4512      this.set(target, key, descriptor.value, null);
4513    }
4514    return Reflect.defineProperty(target, key, descriptor);
4515  }
4516};
4517const RuntimeCompiledPublicInstanceProxyHandlers = /* @__PURE__ */ extend$5({}, PublicInstanceProxyHandlers, {
4518  get(target, key) {
4519    if (key === Symbol.unscopables) {
4520      return;
4521    }
4522    return PublicInstanceProxyHandlers.get(target, key, target);
4523  },
4524  has(_, key) {
4525    const has = key[0] !== "_" && !isGloballyAllowed(key);
4526    return has;
4527  }
4528});
4529function defineProps() {
4530  return null;
4531}
4532function defineEmits() {
4533  return null;
4534}
4535function defineExpose(exposed) {
4536}
4537function defineOptions(options2) {
4538}
4539function defineSlots() {
4540  return null;
4541}
4542function defineModel() {
4543}
4544function withDefaults(props2, defaults2) {
4545  return null;
4546}
4547function useSlots() {
4548  return getContext().slots;
4549}
4550function useAttrs() {
4551  return getContext().attrs;
4552}
4553function getContext() {
4554  const i = getCurrentInstance();
4555  return i.setupContext || (i.setupContext = createSetupContext(i));
4556}
4557function normalizePropsOrEmits(props2) {
4558  return isArray$3(props2) ? props2.reduce(
4559    (normalized, p2) => (normalized[p2] = null, normalized),
4560    {}
4561  ) : props2;
4562}
4563function mergeDefaults(raw, defaults2) {
4564  const props2 = normalizePropsOrEmits(raw);
4565  for (const key in defaults2) {
4566    if (key.startsWith("__skip")) continue;
4567    let opt = props2[key];
4568    if (opt) {
4569      if (isArray$3(opt) || isFunction$3(opt)) {
4570        opt = props2[key] = { type: opt, default: defaults2[key] };
4571      } else {
4572        opt.default = defaults2[key];
4573      }
4574    } else if (opt === null) {
4575      opt = props2[key] = { default: defaults2[key] };
4576    } else ;
4577    if (opt && defaults2[`__skip_${key}`]) {
4578      opt.skipFactory = true;
4579    }
4580  }
4581  return props2;
4582}
4583function mergeModels(a, b) {
4584  if (!a || !b) return a || b;
4585  if (isArray$3(a) && isArray$3(b)) return a.concat(b);
4586  return extend$5({}, normalizePropsOrEmits(a), normalizePropsOrEmits(b));
4587}
4588function createPropsRestProxy(props2, excludedKeys) {
4589  const ret = {};
4590  for (const key in props2) {
4591    if (!excludedKeys.includes(key)) {
4592      Object.defineProperty(ret, key, {
4593        enumerable: true,
4594        get: () => props2[key]
4595      });
4596    }
4597  }
4598  return ret;
4599}
4600function withAsyncContext(getAwaitable) {
4601  const ctx = getCurrentInstance();
4602  let awaitable = getAwaitable();
4603  unsetCurrentInstance();
vendor: 6,144 bytes, lines 4604-4821
4604  if (isPromise$2(awaitable)) {
4605    awaitable = awaitable.catch((e) => {
4606      setCurrentInstance(ctx);
4607      throw e;
4608    });
4609  }
4610  return [awaitable, () => setCurrentInstance(ctx)];
4611}
4612let shouldCacheAccess = true;
4613function applyOptions(instance) {
4614  const options2 = resolveMergedOptions(instance);
4615  const publicThis = instance.proxy;
4616  const ctx = instance.ctx;
4617  shouldCacheAccess = false;
4618  if (options2.beforeCreate) {
4619    callHook$1(options2.beforeCreate, instance, "bc");
4620  }
4621  const {
4622    // state
4623    data: dataOptions,
4624    computed: computedOptions,
4625    methods,
4626    watch: watchOptions,
4627    provide: provideOptions,
4628    inject: injectOptions,
4629    // lifecycle
4630    created,
4631    beforeMount,
4632    mounted,
4633    beforeUpdate,
4634    updated,
4635    activated,
4636    deactivated,
4637    beforeDestroy,
4638    beforeUnmount,
4639    destroyed,
4640    unmounted,
4641    render: render2,
4642    renderTracked,
4643    renderTriggered,
4644    errorCaptured,
4645    serverPrefetch,
4646    // public API
4647    expose,
4648    inheritAttrs,
4649    // assets
4650    components,
4651    directives,
4652    filters
4653  } = options2;
4654  const checkDuplicateProperties = null;
4655  if (injectOptions) {
4656    resolveInjections(injectOptions, ctx, checkDuplicateProperties);
4657  }
4658  if (methods) {
4659    for (const key in methods) {
4660      const methodHandler = methods[key];
4661      if (isFunction$3(methodHandler)) {
4662        {
4663          ctx[key] = methodHandler.bind(publicThis);
4664        }
4665      }
4666    }
4667  }
4668  if (dataOptions) {
4669    const data = dataOptions.call(publicThis, publicThis);
4670    if (!isObject$9(data)) ;
4671    else {
4672      instance.data = reactive(data);
4673    }
4674  }
4675  shouldCacheAccess = true;
4676  if (computedOptions) {
4677    for (const key in computedOptions) {
4678      const opt = computedOptions[key];
4679      const get2 = isFunction$3(opt) ? opt.bind(publicThis, publicThis) : isFunction$3(opt.get) ? opt.get.bind(publicThis, publicThis) : NOOP;
4680      const set = !isFunction$3(opt) && isFunction$3(opt.set) ? opt.set.bind(publicThis) : NOOP;
4681      const c = computed({
4682        get: get2,
4683        set
4684      });
4685      Object.defineProperty(ctx, key, {
4686        enumerable: true,
4687        configurable: true,
4688        get: () => c.value,
4689        set: (v) => c.value = v
4690      });
4691    }
4692  }
4693  if (watchOptions) {
4694    for (const key in watchOptions) {
4695      createWatcher(watchOptions[key], ctx, publicThis, key);
4696    }
4697  }
4698  if (provideOptions) {
4699    const provides = isFunction$3(provideOptions) ? provideOptions.call(publicThis) : provideOptions;
4700    Reflect.ownKeys(provides).forEach((key) => {
4701      provide(key, provides[key]);
4702    });
4703  }
4704  if (created) {
4705    callHook$1(created, instance, "c");
4706  }
4707  function registerLifecycleHook(register2, hook) {
4708    if (isArray$3(hook)) {
4709      hook.forEach((_hook) => register2(_hook.bind(publicThis)));
4710    } else if (hook) {
4711      register2(hook.bind(publicThis));
4712    }
4713  }
4714  registerLifecycleHook(onBeforeMount, beforeMount);
4715  registerLifecycleHook(onMounted, mounted);
4716  registerLifecycleHook(onBeforeUpdate, beforeUpdate);
4717  registerLifecycleHook(onUpdated, updated);
4718  registerLifecycleHook(onActivated, activated);
4719  registerLifecycleHook(onDeactivated, deactivated);
4720  registerLifecycleHook(onErrorCaptured, errorCaptured);
4721  registerLifecycleHook(onRenderTracked, renderTracked);
4722  registerLifecycleHook(onRenderTriggered, renderTriggered);
4723  registerLifecycleHook(onBeforeUnmount, beforeUnmount);
4724  registerLifecycleHook(onUnmounted, unmounted);
4725  registerLifecycleHook(onServerPrefetch, serverPrefetch);
4726  if (isArray$3(expose)) {
4727    if (expose.length) {
4728      const exposed = instance.exposed || (instance.exposed = {});
4729      expose.forEach((key) => {
4730        Object.defineProperty(exposed, key, {
4731          get: () => publicThis[key],
4732          set: (val) => publicThis[key] = val
4733        });
4734      });
4735    } else if (!instance.exposed) {
4736      instance.exposed = {};
4737    }
4738  }
4739  if (render2 && instance.render === NOOP) {
4740    instance.render = render2;
4741  }
4742  if (inheritAttrs != null) {
4743    instance.inheritAttrs = inheritAttrs;
4744  }
4745  if (components) instance.components = components;
4746  if (directives) instance.directives = directives;
4747  if (serverPrefetch) {
4748    markAsyncBoundary(instance);
4749  }
4750}
4751function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP) {
4752  if (isArray$3(injectOptions)) {
4753    injectOptions = normalizeInject(injectOptions);
4754  }
4755  for (const key in injectOptions) {
4756    const opt = injectOptions[key];
4757    let injected;
4758    if (isObject$9(opt)) {
4759      if ("default" in opt) {
4760        injected = inject(
4761          opt.from || key,
4762          opt.default,
4763          true
4764        );
4765      } else {
4766        injected = inject(opt.from || key);
4767      }
4768    } else {
4769      injected = inject(opt);
4770    }
4771    if (isRef(injected)) {
4772      Object.defineProperty(ctx, key, {
4773        enumerable: true,
4774        configurable: true,
4775        get: () => injected.value,
4776        set: (v) => injected.value = v
4777      });
4778    } else {
4779      ctx[key] = injected;
4780    }
4781  }
4782}
4783function callHook$1(hook, instance, type) {
4784  callWithAsyncErrorHandling(
4785    isArray$3(hook) ? hook.map((h2) => h2.bind(instance.proxy)) : hook.bind(instance.proxy),
4786    instance,
4787    type
4788  );
4789}
4790function createWatcher(raw, ctx, publicThis, key) {
4791  let getter = key.includes(".") ? createPathGetter(publicThis, key) : () => publicThis[key];
4792  if (isString$3(raw)) {
4793    const handler = ctx[raw];
4794    if (isFunction$3(handler)) {
4795      {
4796        watch(getter, handler);
4797      }
4798    }
4799  } else if (isFunction$3(raw)) {
4800    {
4801      watch(getter, raw.bind(publicThis));
4802    }
4803  } else if (isObject$9(raw)) {
4804    if (isArray$3(raw)) {
4805      raw.forEach((r) => createWatcher(r, ctx, publicThis, key));
4806    } else {
4807      const handler = isFunction$3(raw.handler) ? raw.handler.bind(publicThis) : ctx[raw.handler];
4808      if (isFunction$3(handler)) {
4809        watch(getter, handler, raw);
4810      }
4811    }
4812  } else ;
4813}
4814function resolveMergedOptions(instance) {
4815  const base = instance.type;
4816  const { mixins, extends: extendsOptions } = base;
4817  const {
4818    mixins: globalMixins,
4819    optionsCache: cache2,
4820    config: { optionMergeStrategies }
4821  } = instance.appContext;
vendor: 2,852 bytes, lines 4822-4932
4822  const cached = cache2.get(base);
4823  let resolved;
4824  if (cached) {
4825    resolved = cached;
4826  } else if (!globalMixins.length && !mixins && !extendsOptions) {
4827    {
4828      resolved = base;
4829    }
4830  } else {
4831    resolved = {};
4832    if (globalMixins.length) {
4833      globalMixins.forEach(
4834        (m) => mergeOptions(resolved, m, optionMergeStrategies, true)
4835      );
4836    }
4837    mergeOptions(resolved, base, optionMergeStrategies);
4838  }
4839  if (isObject$9(base)) {
4840    cache2.set(base, resolved);
4841  }
4842  return resolved;
4843}
4844function mergeOptions(to, from, strats, asMixin = false) {
4845  const { mixins, extends: extendsOptions } = from;
4846  if (extendsOptions) {
4847    mergeOptions(to, extendsOptions, strats, true);
4848  }
4849  if (mixins) {
4850    mixins.forEach(
4851      (m) => mergeOptions(to, m, strats, true)
4852    );
4853  }
4854  for (const key in from) {
4855    if (asMixin && key === "expose") ;
4856    else {
4857      const strat = internalOptionMergeStrats[key] || strats && strats[key];
4858      to[key] = strat ? strat(to[key], from[key]) : from[key];
4859    }
4860  }
4861  return to;
4862}
4863const internalOptionMergeStrats = {
4864  data: mergeDataFn,
4865  props: mergeEmitsOrPropsOptions,
4866  emits: mergeEmitsOrPropsOptions,
4867  // objects
4868  methods: mergeObjectOptions,
4869  computed: mergeObjectOptions,
4870  // lifecycle
4871  beforeCreate: mergeAsArray$1,
4872  created: mergeAsArray$1,
4873  beforeMount: mergeAsArray$1,
4874  mounted: mergeAsArray$1,
4875  beforeUpdate: mergeAsArray$1,
4876  updated: mergeAsArray$1,
4877  beforeDestroy: mergeAsArray$1,
4878  beforeUnmount: mergeAsArray$1,
4879  destroyed: mergeAsArray$1,
4880  unmounted: mergeAsArray$1,
4881  activated: mergeAsArray$1,
4882  deactivated: mergeAsArray$1,
4883  errorCaptured: mergeAsArray$1,
4884  serverPrefetch: mergeAsArray$1,
4885  // assets
4886  components: mergeObjectOptions,
4887  directives: mergeObjectOptions,
4888  // watch
4889  watch: mergeWatchOptions,
4890  // provide / inject
4891  provide: mergeDataFn,
4892  inject: mergeInject
4893};
4894function mergeDataFn(to, from) {
4895  if (!from) {
4896    return to;
4897  }
4898  if (!to) {
4899    return from;
4900  }
4901  return function mergedDataFn() {
4902    return extend$5(
4903      isFunction$3(to) ? to.call(this, this) : to,
4904      isFunction$3(from) ? from.call(this, this) : from
4905    );
4906  };
4907}
4908function mergeInject(to, from) {
4909  return mergeObjectOptions(normalizeInject(to), normalizeInject(from));
4910}
4911function normalizeInject(raw) {
4912  if (isArray$3(raw)) {
4913    const res = {};
4914    for (let i = 0; i < raw.length; i++) {
4915      res[raw[i]] = raw[i];
4916    }
4917    return res;
4918  }
4919  return raw;
4920}
4921function mergeAsArray$1(to, from) {
4922  return to ? [...new Set([].concat(to, from))] : from;
4923}
4924function mergeObjectOptions(to, from) {
4925  return to ? extend$5(/* @__PURE__ */ Object.create(null), to, from) : from;
4926}
4927function mergeEmitsOrPropsOptions(to, from) {
4928  if (to) {
4929    if (isArray$3(to) && isArray$3(from)) {
4930      return [.../* @__PURE__ */ new Set([...to, ...from])];
4931    }
4932    return extend$5(
vendor: 6,207 bytes, lines 4933-5139
4933      /* @__PURE__ */ Object.create(null),
4934      normalizePropsOrEmits(to),
4935      normalizePropsOrEmits(from != null ? from : {})
4936    );
4937  } else {
4938    return from;
4939  }
4940}
4941function mergeWatchOptions(to, from) {
4942  if (!to) return from;
4943  if (!from) return to;
4944  const merged = extend$5(/* @__PURE__ */ Object.create(null), to);
4945  for (const key in from) {
4946    merged[key] = mergeAsArray$1(to[key], from[key]);
4947  }
4948  return merged;
4949}
4950function createAppContext() {
4951  return {
4952    app: null,
4953    config: {
4954      isNativeTag: NO,
4955      performance: false,
4956      globalProperties: {},
4957      optionMergeStrategies: {},
4958      errorHandler: void 0,
4959      warnHandler: void 0,
4960      compilerOptions: {}
4961    },
4962    mixins: [],
4963    components: {},
4964    directives: {},
4965    provides: /* @__PURE__ */ Object.create(null),
4966    optionsCache: /* @__PURE__ */ new WeakMap(),
4967    propsCache: /* @__PURE__ */ new WeakMap(),
4968    emitsCache: /* @__PURE__ */ new WeakMap()
4969  };
4970}
4971let uid$1 = 0;
4972function createAppAPI(render2, hydrate2) {
4973  return function createApp2(rootComponent, rootProps = null) {
4974    if (!isFunction$3(rootComponent)) {
4975      rootComponent = extend$5({}, rootComponent);
4976    }
4977    if (rootProps != null && !isObject$9(rootProps)) {
4978      rootProps = null;
4979    }
4980    const context = createAppContext();
4981    const installedPlugins = /* @__PURE__ */ new WeakSet();
4982    const pluginCleanupFns = [];
4983    let isMounted = false;
4984    const app2 = context.app = {
4985      _uid: uid$1++,
4986      _component: rootComponent,
4987      _props: rootProps,
4988      _container: null,
4989      _context: context,
4990      _instance: null,
4991      version,
4992      get config() {
4993        return context.config;
4994      },
4995      set config(v) {
4996      },
4997      use(plugin, ...options2) {
4998        if (installedPlugins.has(plugin)) ;
4999        else if (plugin && isFunction$3(plugin.install)) {
5000          installedPlugins.add(plugin);
5001          plugin.install(app2, ...options2);
5002        } else if (isFunction$3(plugin)) {
5003          installedPlugins.add(plugin);
5004          plugin(app2, ...options2);
5005        } else ;
5006        return app2;
5007      },
5008      mixin(mixin) {
5009        {
5010          if (!context.mixins.includes(mixin)) {
5011            context.mixins.push(mixin);
5012          }
5013        }
5014        return app2;
5015      },
5016      component(name, component) {
5017        if (!component) {
5018          return context.components[name];
5019        }
5020        context.components[name] = component;
5021        return app2;
5022      },
5023      directive(name, directive) {
5024        if (!directive) {
5025          return context.directives[name];
5026        }
5027        context.directives[name] = directive;
5028        return app2;
5029      },
5030      mount(rootContainer, isHydrate, namespace) {
5031        if (!isMounted) {
5032          const vnode = app2._ceVNode || createVNode(rootComponent, rootProps);
5033          vnode.appContext = context;
5034          if (namespace === true) {
5035            namespace = "svg";
5036          } else if (namespace === false) {
5037            namespace = void 0;
5038          }
5039          if (isHydrate && hydrate2) {
5040            hydrate2(vnode, rootContainer);
5041          } else {
5042            render2(vnode, rootContainer, namespace);
5043          }
5044          isMounted = true;
5045          app2._container = rootContainer;
5046          rootContainer.__vue_app__ = app2;
5047          return getComponentPublicInstance(vnode.component);
5048        }
5049      },
5050      onUnmount(cleanupFn) {
5051        pluginCleanupFns.push(cleanupFn);
5052      },
5053      unmount() {
5054        if (isMounted) {
5055          callWithAsyncErrorHandling(
5056            pluginCleanupFns,
5057            app2._instance,
5058            16
5059          );
5060          render2(null, app2._container);
5061          delete app2._container.__vue_app__;
5062        }
5063      },
5064      provide(key, value) {
5065        context.provides[key] = value;
5066        return app2;
5067      },
5068      runWithContext(fn) {
5069        const lastApp = currentApp;
5070        currentApp = app2;
5071        try {
5072          return fn();
5073        } finally {
5074          currentApp = lastApp;
5075        }
5076      }
5077    };
5078    return app2;
5079  };
5080}
5081let currentApp = null;
5082function provide(key, value) {
5083  if (!currentInstance) ;
5084  else {
5085    let provides = currentInstance.provides;
5086    const parentProvides = currentInstance.parent && currentInstance.parent.provides;
5087    if (parentProvides === provides) {
5088      provides = currentInstance.provides = Object.create(parentProvides);
5089    }
5090    provides[key] = value;
5091  }
5092}
5093function inject(key, defaultValue, treatDefaultAsFactory = false) {
5094  const instance = currentInstance || currentRenderingInstance;
5095  if (instance || currentApp) {
5096    let provides = currentApp ? currentApp._context.provides : instance ? instance.parent == null || instance.ce ? instance.vnode.appContext && instance.vnode.appContext.provides : instance.parent.provides : void 0;
5097    if (provides && key in provides) {
5098      return provides[key];
5099    } else if (arguments.length > 1) {
5100      return treatDefaultAsFactory && isFunction$3(defaultValue) ? defaultValue.call(instance && instance.proxy) : defaultValue;
5101    } else ;
5102  }
5103}
5104function hasInjectionContext() {
5105  return !!(currentInstance || currentRenderingInstance || currentApp);
5106}
5107const internalObjectProto = {};
5108const createInternalObject = () => Object.create(internalObjectProto);
5109const isInternalObject = (obj) => Object.getPrototypeOf(obj) === internalObjectProto;
5110function initProps(instance, rawProps, isStateful, isSSR = false) {
5111  const props2 = {};
5112  const attrs = createInternalObject();
5113  instance.propsDefaults = /* @__PURE__ */ Object.create(null);
5114  setFullProps(instance, rawProps, props2, attrs);
5115  for (const key in instance.propsOptions[0]) {
5116    if (!(key in props2)) {
5117      props2[key] = void 0;
5118    }
5119  }
5120  if (isStateful) {
5121    instance.props = isSSR ? props2 : shallowReactive(props2);
5122  } else {
5123    if (!instance.type.props) {
5124      instance.props = attrs;
5125    } else {
5126      instance.props = props2;
5127    }
5128  }
5129  instance.attrs = attrs;
5130}
5131function updateProps(instance, rawProps, rawPrevProps, optimized) {
5132  const {
5133    props: props2,
5134    attrs,
5135    vnode: { patchFlag }
5136  } = instance;
5137  const rawCurrentProps = toRaw(props2);
5138  const [options2] = instance.propsOptions;
5139  let hasAttrsChanged = false;
vendor: 4,486 bytes, lines 5140-5292
5140  if (
5141    // always force full diff in dev
5142    // - #1942 if hmr is enabled with sfc component
5143    // - vite#872 non-sfc component used by sfc component
5144    (optimized || patchFlag > 0) && !(patchFlag & 16)
5145  ) {
5146    if (patchFlag & 8) {
5147      const propsToUpdate = instance.vnode.dynamicProps;
5148      for (let i = 0; i < propsToUpdate.length; i++) {
5149        let key = propsToUpdate[i];
5150        if (isEmitListener(instance.emitsOptions, key)) {
5151          continue;
5152        }
5153        const value = rawProps[key];
5154        if (options2) {
5155          if (hasOwn$2(attrs, key)) {
5156            if (value !== attrs[key]) {
5157              attrs[key] = value;
5158              hasAttrsChanged = true;
5159            }
5160          } else {
5161            const camelizedKey = camelize(key);
5162            props2[camelizedKey] = resolvePropValue(
5163              options2,
5164              rawCurrentProps,
5165              camelizedKey,
5166              value,
5167              instance,
5168              false
5169            );
5170          }
5171        } else {
5172          if (value !== attrs[key]) {
5173            attrs[key] = value;
5174            hasAttrsChanged = true;
5175          }
5176        }
5177      }
5178    }
5179  } else {
5180    if (setFullProps(instance, rawProps, props2, attrs)) {
5181      hasAttrsChanged = true;
5182    }
5183    let kebabKey;
5184    for (const key in rawCurrentProps) {
5185      if (!rawProps || // for camelCase
5186      !hasOwn$2(rawProps, key) && // it's possible the original props was passed in as kebab-case
5187      // and converted to camelCase (#955)
5188      ((kebabKey = hyphenate(key)) === key || !hasOwn$2(rawProps, kebabKey))) {
5189        if (options2) {
5190          if (rawPrevProps && // for camelCase
5191          (rawPrevProps[key] !== void 0 || // for kebab-case
5192          rawPrevProps[kebabKey] !== void 0)) {
5193            props2[key] = resolvePropValue(
5194              options2,
5195              rawCurrentProps,
5196              key,
5197              void 0,
5198              instance,
5199              true
5200            );
5201          }
5202        } else {
5203          delete props2[key];
5204        }
5205      }
5206    }
5207    if (attrs !== rawCurrentProps) {
5208      for (const key in attrs) {
5209        if (!rawProps || !hasOwn$2(rawProps, key) && true) {
5210          delete attrs[key];
5211          hasAttrsChanged = true;
5212        }
5213      }
5214    }
5215  }
5216  if (hasAttrsChanged) {
5217    trigger(instance.attrs, "set", "");
5218  }
5219}
5220function setFullProps(instance, rawProps, props2, attrs) {
5221  const [options2, needCastKeys] = instance.propsOptions;
5222  let hasAttrsChanged = false;
5223  let rawCastValues;
5224  if (rawProps) {
5225    for (let key in rawProps) {
5226      if (isReservedProp(key)) {
5227        continue;
5228      }
5229      const value = rawProps[key];
5230      let camelKey;
5231      if (options2 && hasOwn$2(options2, camelKey = camelize(key))) {
5232        if (!needCastKeys || !needCastKeys.includes(camelKey)) {
5233          props2[camelKey] = value;
5234        } else {
5235          (rawCastValues || (rawCastValues = {}))[camelKey] = value;
5236        }
5237      } else if (!isEmitListener(instance.emitsOptions, key)) {
5238        if (!(key in attrs) || value !== attrs[key]) {
5239          attrs[key] = value;
5240          hasAttrsChanged = true;
5241        }
5242      }
5243    }
5244  }
5245  if (needCastKeys) {
5246    const rawCurrentProps = toRaw(props2);
5247    const castValues = rawCastValues || EMPTY_OBJ;
5248    for (let i = 0; i < needCastKeys.length; i++) {
5249      const key = needCastKeys[i];
5250      props2[key] = resolvePropValue(
5251        options2,
5252        rawCurrentProps,
5253        key,
5254        castValues[key],
5255        instance,
5256        !hasOwn$2(castValues, key)
5257      );
5258    }
5259  }
5260  return hasAttrsChanged;
5261}
5262function resolvePropValue(options2, props2, key, value, instance, isAbsent) {
5263  const opt = options2[key];
5264  if (opt != null) {
5265    const hasDefault = hasOwn$2(opt, "default");
5266    if (hasDefault && value === void 0) {
5267      const defaultValue = opt.default;
5268      if (opt.type !== Function && !opt.skipFactory && isFunction$3(defaultValue)) {
5269        const { propsDefaults } = instance;
5270        if (key in propsDefaults) {
5271          value = propsDefaults[key];
5272        } else {
5273          const reset2 = setCurrentInstance(instance);
5274          value = propsDefaults[key] = defaultValue.call(
5275            null,
5276            props2
5277          );
5278          reset2();
5279        }
5280      } else {
5281        value = defaultValue;
5282      }
5283      if (instance.ce) {
5284        instance.ce._setProp(key, value);
5285      }
5286    }
5287    if (opt[
5288      0
5289      /* shouldCast */
5290    ]) {
5291      if (isAbsent && !hasDefault) {
5292        value = false;
vendor: 15,450 bytes, lines 5293-5828
5293      } else if (opt[
5294        1
5295        /* shouldCastTrue */
5296      ] && (value === "" || value === hyphenate(key))) {
5297        value = true;
5298      }
5299    }
5300  }
5301  return value;
5302}
5303const mixinPropsCache = /* @__PURE__ */ new WeakMap();
5304function normalizePropsOptions(comp, appContext, asMixin = false) {
5305  const cache2 = asMixin ? mixinPropsCache : appContext.propsCache;
5306  const cached = cache2.get(comp);
5307  if (cached) {
5308    return cached;
5309  }
5310  const raw = comp.props;
5311  const normalized = {};
5312  const needCastKeys = [];
5313  let hasExtends = false;
5314  if (!isFunction$3(comp)) {
5315    const extendProps = (raw2) => {
5316      hasExtends = true;
5317      const [props2, keys] = normalizePropsOptions(raw2, appContext, true);
5318      extend$5(normalized, props2);
5319      if (keys) needCastKeys.push(...keys);
5320    };
5321    if (!asMixin && appContext.mixins.length) {
5322      appContext.mixins.forEach(extendProps);
5323    }
5324    if (comp.extends) {
5325      extendProps(comp.extends);
5326    }
5327    if (comp.mixins) {
5328      comp.mixins.forEach(extendProps);
5329    }
5330  }
5331  if (!raw && !hasExtends) {
5332    if (isObject$9(comp)) {
5333      cache2.set(comp, EMPTY_ARR);
5334    }
5335    return EMPTY_ARR;
5336  }
5337  if (isArray$3(raw)) {
5338    for (let i = 0; i < raw.length; i++) {
5339      const normalizedKey = camelize(raw[i]);
5340      if (validatePropName(normalizedKey)) {
5341        normalized[normalizedKey] = EMPTY_OBJ;
5342      }
5343    }
5344  } else if (raw) {
5345    for (const key in raw) {
5346      const normalizedKey = camelize(key);
5347      if (validatePropName(normalizedKey)) {
5348        const opt = raw[key];
5349        const prop = normalized[normalizedKey] = isArray$3(opt) || isFunction$3(opt) ? { type: opt } : extend$5({}, opt);
5350        const propType = prop.type;
5351        let shouldCast = false;
5352        let shouldCastTrue = true;
5353        if (isArray$3(propType)) {
5354          for (let index2 = 0; index2 < propType.length; ++index2) {
5355            const type = propType[index2];
5356            const typeName = isFunction$3(type) && type.name;
5357            if (typeName === "Boolean") {
5358              shouldCast = true;
5359              break;
5360            } else if (typeName === "String") {
5361              shouldCastTrue = false;
5362            }
5363          }
5364        } else {
5365          shouldCast = isFunction$3(propType) && propType.name === "Boolean";
5366        }
5367        prop[
5368          0
5369          /* shouldCast */
5370        ] = shouldCast;
5371        prop[
5372          1
5373          /* shouldCastTrue */
5374        ] = shouldCastTrue;
5375        if (shouldCast || hasOwn$2(prop, "default")) {
5376          needCastKeys.push(normalizedKey);
5377        }
5378      }
5379    }
5380  }
5381  const res = [normalized, needCastKeys];
5382  if (isObject$9(comp)) {
5383    cache2.set(comp, res);
5384  }
5385  return res;
5386}
5387function validatePropName(key) {
5388  if (key[0] !== "$" && !isReservedProp(key)) {
5389    return true;
5390  }
5391  return false;
5392}
5393const isInternalKey = (key) => key[0] === "_" || key === "$stable";
5394const normalizeSlotValue = (value) => isArray$3(value) ? value.map(normalizeVNode) : [normalizeVNode(value)];
5395const normalizeSlot = (key, rawSlot, ctx) => {
5396  if (rawSlot._n) {
5397    return rawSlot;
5398  }
5399  const normalized = withCtx((...args) => {
5400    if (false) ;
5401    return normalizeSlotValue(rawSlot(...args));
5402  }, ctx);
5403  normalized._c = false;
5404  return normalized;
5405};
5406const normalizeObjectSlots = (rawSlots, slots, instance) => {
5407  const ctx = rawSlots._ctx;
5408  for (const key in rawSlots) {
5409    if (isInternalKey(key)) continue;
5410    const value = rawSlots[key];
5411    if (isFunction$3(value)) {
5412      slots[key] = normalizeSlot(key, value, ctx);
5413    } else if (value != null) {
5414      const normalized = normalizeSlotValue(value);
5415      slots[key] = () => normalized;
5416    }
5417  }
5418};
5419const normalizeVNodeSlots = (instance, children) => {
5420  const normalized = normalizeSlotValue(children);
5421  instance.slots.default = () => normalized;
5422};
5423const assignSlots = (slots, children, optimized) => {
5424  for (const key in children) {
5425    if (optimized || !isInternalKey(key)) {
5426      slots[key] = children[key];
5427    }
5428  }
5429};
5430const initSlots = (instance, children, optimized) => {
5431  const slots = instance.slots = createInternalObject();
5432  if (instance.vnode.shapeFlag & 32) {
5433    const type = children._;
5434    if (type) {
5435      assignSlots(slots, children, optimized);
5436      if (optimized) {
5437        def(slots, "_", type, true);
5438      }
5439    } else {
5440      normalizeObjectSlots(children, slots);
5441    }
5442  } else if (children) {
5443    normalizeVNodeSlots(instance, children);
5444  }
5445};
5446const updateSlots = (instance, children, optimized) => {
5447  const { vnode, slots } = instance;
5448  let needDeletionCheck = true;
5449  let deletionComparisonTarget = EMPTY_OBJ;
5450  if (vnode.shapeFlag & 32) {
5451    const type = children._;
5452    if (type) {
5453      if (optimized && type === 1) {
5454        needDeletionCheck = false;
5455      } else {
5456        assignSlots(slots, children, optimized);
5457      }
5458    } else {
5459      needDeletionCheck = !children.$stable;
5460      normalizeObjectSlots(children, slots);
5461    }
5462    deletionComparisonTarget = children;
5463  } else if (children) {
5464    normalizeVNodeSlots(instance, children);
5465    deletionComparisonTarget = { default: 1 };
5466  }
5467  if (needDeletionCheck) {
5468    for (const key in slots) {
5469      if (!isInternalKey(key) && deletionComparisonTarget[key] == null) {
5470        delete slots[key];
5471      }
5472    }
5473  }
5474};
5475const queuePostRenderEffect = queueEffectWithSuspense;
5476function createRenderer(options2) {
5477  return baseCreateRenderer(options2);
5478}
5479function createHydrationRenderer(options2) {
5480  return baseCreateRenderer(options2, createHydrationFunctions);
5481}
5482function baseCreateRenderer(options2, createHydrationFns) {
5483  const target = getGlobalThis$2();
5484  target.__VUE__ = true;
5485  const {
5486    insert: hostInsert,
5487    remove: hostRemove,
5488    patchProp: hostPatchProp,
5489    createElement: hostCreateElement,
5490    createText: hostCreateText,
5491    createComment: hostCreateComment,
5492    setText: hostSetText,
5493    setElementText: hostSetElementText,
5494    parentNode: hostParentNode,
5495    nextSibling: hostNextSibling,
5496    setScopeId: hostSetScopeId = NOOP,
5497    insertStaticContent: hostInsertStaticContent
5498  } = options2;
5499  const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, namespace = void 0, slotScopeIds = null, optimized = !!n2.dynamicChildren) => {
5500    if (n1 === n2) {
5501      return;
5502    }
5503    if (n1 && !isSameVNodeType(n1, n2)) {
5504      anchor = getNextHostNode(n1);
5505      unmount(n1, parentComponent, parentSuspense, true);
5506      n1 = null;
5507    }
5508    if (n2.patchFlag === -2) {
5509      optimized = false;
5510      n2.dynamicChildren = null;
5511    }
5512    const { type, ref: ref3, shapeFlag } = n2;
5513    switch (type) {
5514      case Text:
5515        processText(n1, n2, container, anchor);
5516        break;
5517      case Comment:
5518        processCommentNode(n1, n2, container, anchor);
5519        break;
5520      case Static:
5521        if (n1 == null) {
5522          mountStaticNode(n2, container, anchor, namespace);
5523        }
5524        break;
5525      case Fragment:
5526        processFragment(
5527          n1,
5528          n2,
5529          container,
5530          anchor,
5531          parentComponent,
5532          parentSuspense,
5533          namespace,
5534          slotScopeIds,
5535          optimized
5536        );
5537        break;
5538      default:
5539        if (shapeFlag & 1) {
5540          processElement(
5541            n1,
5542            n2,
5543            container,
5544            anchor,
5545            parentComponent,
5546            parentSuspense,
5547            namespace,
5548            slotScopeIds,
5549            optimized
5550          );
5551        } else if (shapeFlag & 6) {
5552          processComponent(
5553            n1,
5554            n2,
5555            container,
5556            anchor,
5557            parentComponent,
5558            parentSuspense,
5559            namespace,
5560            slotScopeIds,
5561            optimized
5562          );
5563        } else if (shapeFlag & 64) {
5564          type.process(
5565            n1,
5566            n2,
5567            container,
5568            anchor,
5569            parentComponent,
5570            parentSuspense,
5571            namespace,
5572            slotScopeIds,
5573            optimized,
5574            internals
5575          );
5576        } else if (shapeFlag & 128) {
5577          type.process(
5578            n1,
5579            n2,
5580            container,
5581            anchor,
5582            parentComponent,
5583            parentSuspense,
5584            namespace,
5585            slotScopeIds,
5586            optimized,
5587            internals
5588          );
5589        } else ;
5590    }
5591    if (ref3 != null && parentComponent) {
5592      setRef(ref3, n1 && n1.ref, parentSuspense, n2 || n1, !n2);
5593    }
5594  };
5595  const processText = (n1, n2, container, anchor) => {
5596    if (n1 == null) {
5597      hostInsert(
5598        n2.el = hostCreateText(n2.children),
5599        container,
5600        anchor
5601      );
5602    } else {
5603      const el = n2.el = n1.el;
5604      if (n2.children !== n1.children) {
5605        hostSetText(el, n2.children);
5606      }
5607    }
5608  };
5609  const processCommentNode = (n1, n2, container, anchor) => {
5610    if (n1 == null) {
5611      hostInsert(
5612        n2.el = hostCreateComment(n2.children || ""),
5613        container,
5614        anchor
5615      );
5616    } else {
5617      n2.el = n1.el;
5618    }
5619  };
5620  const mountStaticNode = (n2, container, anchor, namespace) => {
5621    [n2.el, n2.anchor] = hostInsertStaticContent(
5622      n2.children,
5623      container,
5624      anchor,
5625      namespace,
5626      n2.el,
5627      n2.anchor
5628    );
5629  };
5630  const moveStaticNode = ({ el, anchor }, container, nextSibling) => {
5631    let next;
5632    while (el && el !== anchor) {
5633      next = hostNextSibling(el);
5634      hostInsert(el, container, nextSibling);
5635      el = next;
5636    }
5637    hostInsert(anchor, container, nextSibling);
5638  };
5639  const removeStaticNode = ({ el, anchor }) => {
5640    let next;
5641    while (el && el !== anchor) {
5642      next = hostNextSibling(el);
5643      hostRemove(el);
5644      el = next;
5645    }
5646    hostRemove(anchor);
5647  };
5648  const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
5649    if (n2.type === "svg") {
5650      namespace = "svg";
5651    } else if (n2.type === "math") {
5652      namespace = "mathml";
5653    }
5654    if (n1 == null) {
5655      mountElement(
5656        n2,
5657        container,
5658        anchor,
5659        parentComponent,
5660        parentSuspense,
5661        namespace,
5662        slotScopeIds,
5663        optimized
5664      );
5665    } else {
5666      patchElement(
5667        n1,
5668        n2,
5669        parentComponent,
5670        parentSuspense,
5671        namespace,
5672        slotScopeIds,
5673        optimized
5674      );
5675    }
5676  };
5677  const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
5678    let el;
5679    let vnodeHook;
5680    const { props: props2, shapeFlag, transition: transition2, dirs } = vnode;
5681    el = vnode.el = hostCreateElement(
5682      vnode.type,
5683      namespace,
5684      props2 && props2.is,
5685      props2
5686    );
5687    if (shapeFlag & 8) {
5688      hostSetElementText(el, vnode.children);
5689    } else if (shapeFlag & 16) {
5690      mountChildren(
5691        vnode.children,
5692        el,
5693        null,
5694        parentComponent,
5695        parentSuspense,
5696        resolveChildrenNamespace(vnode, namespace),
5697        slotScopeIds,
5698        optimized
5699      );
5700    }
5701    if (dirs) {
5702      invokeDirectiveHook(vnode, null, parentComponent, "created");
5703    }
5704    setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);
5705    if (props2) {
5706      for (const key in props2) {
5707        if (key !== "value" && !isReservedProp(key)) {
5708          hostPatchProp(el, key, null, props2[key], namespace, parentComponent);
5709        }
5710      }
5711      if ("value" in props2) {
5712        hostPatchProp(el, "value", null, props2.value, namespace);
5713      }
5714      if (vnodeHook = props2.onVnodeBeforeMount) {
5715        invokeVNodeHook(vnodeHook, parentComponent, vnode);
5716      }
5717    }
5718    if (dirs) {
5719      invokeDirectiveHook(vnode, null, parentComponent, "beforeMount");
5720    }
5721    const needCallTransitionHooks = needTransition(parentSuspense, transition2);
5722    if (needCallTransitionHooks) {
5723      transition2.beforeEnter(el);
5724    }
5725    hostInsert(el, container, anchor);
5726    if ((vnodeHook = props2 && props2.onVnodeMounted) || needCallTransitionHooks || dirs) {
5727      queuePostRenderEffect(() => {
5728        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
5729        needCallTransitionHooks && transition2.enter(el);
5730        dirs && invokeDirectiveHook(vnode, null, parentComponent, "mounted");
5731      }, parentSuspense);
5732    }
5733  };
5734  const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {
5735    if (scopeId) {
5736      hostSetScopeId(el, scopeId);
5737    }
5738    if (slotScopeIds) {
5739      for (let i = 0; i < slotScopeIds.length; i++) {
5740        hostSetScopeId(el, slotScopeIds[i]);
5741      }
5742    }
5743    if (parentComponent) {
5744      let subTree = parentComponent.subTree;
5745      if (vnode === subTree || isSuspense(subTree.type) && (subTree.ssContent === vnode || subTree.ssFallback === vnode)) {
5746        const parentVNode = parentComponent.vnode;
5747        setScopeId(
5748          el,
5749          parentVNode,
5750          parentVNode.scopeId,
5751          parentVNode.slotScopeIds,
5752          parentComponent.parent
5753        );
5754      }
5755    }
5756  };
5757  const mountChildren = (children, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, start = 0) => {
5758    for (let i = start; i < children.length; i++) {
5759      const child = children[i] = optimized ? cloneIfMounted(children[i]) : normalizeVNode(children[i]);
5760      patch(
5761        null,
5762        child,
5763        container,
5764        anchor,
5765        parentComponent,
5766        parentSuspense,
5767        namespace,
5768        slotScopeIds,
5769        optimized
5770      );
5771    }
5772  };
5773  const patchElement = (n1, n2, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
5774    const el = n2.el = n1.el;
5775    let { patchFlag, dynamicChildren, dirs } = n2;
5776    patchFlag |= n1.patchFlag & 16;
5777    const oldProps = n1.props || EMPTY_OBJ;
5778    const newProps = n2.props || EMPTY_OBJ;
5779    let vnodeHook;
5780    parentComponent && toggleRecurse(parentComponent, false);
5781    if (vnodeHook = newProps.onVnodeBeforeUpdate) {
5782      invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
5783    }
5784    if (dirs) {
5785      invokeDirectiveHook(n2, n1, parentComponent, "beforeUpdate");
5786    }
5787    parentComponent && toggleRecurse(parentComponent, true);
5788    if (oldProps.innerHTML && newProps.innerHTML == null || oldProps.textContent && newProps.textContent == null) {
5789      hostSetElementText(el, "");
5790    }
5791    if (dynamicChildren) {
5792      patchBlockChildren(
5793        n1.dynamicChildren,
5794        dynamicChildren,
5795        el,
5796        parentComponent,
5797        parentSuspense,
5798        resolveChildrenNamespace(n2, namespace),
5799        slotScopeIds
5800      );
5801    } else if (!optimized) {
5802      patchChildren(
5803        n1,
5804        n2,
5805        el,
5806        null,
5807        parentComponent,
5808        parentSuspense,
5809        resolveChildrenNamespace(n2, namespace),
5810        slotScopeIds,
5811        false
5812      );
5813    }
5814    if (patchFlag > 0) {
5815      if (patchFlag & 16) {
5816        patchProps(el, oldProps, newProps, parentComponent, namespace);
5817      } else {
5818        if (patchFlag & 2) {
5819          if (oldProps.class !== newProps.class) {
5820            hostPatchProp(el, "class", null, newProps.class, namespace);
5821          }
5822        }
5823        if (patchFlag & 4) {
5824          hostPatchProp(el, "style", oldProps.style, newProps.style, namespace);
5825        }
5826        if (patchFlag & 8) {
5827          const propsToUpdate = n2.dynamicProps;
5828          for (let i = 0; i < propsToUpdate.length; i++) {
vendor: 4,703 bytes, lines 5829-5952
5829            const key = propsToUpdate[i];
5830            const prev = oldProps[key];
5831            const next = newProps[key];
5832            if (next !== prev || key === "value") {
5833              hostPatchProp(el, key, prev, next, namespace, parentComponent);
5834            }
5835          }
5836        }
5837      }
5838      if (patchFlag & 1) {
5839        if (n1.children !== n2.children) {
5840          hostSetElementText(el, n2.children);
5841        }
5842      }
5843    } else if (!optimized && dynamicChildren == null) {
5844      patchProps(el, oldProps, newProps, parentComponent, namespace);
5845    }
5846    if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {
5847      queuePostRenderEffect(() => {
5848        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);
5849        dirs && invokeDirectiveHook(n2, n1, parentComponent, "updated");
5850      }, parentSuspense);
5851    }
5852  };
5853  const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, namespace, slotScopeIds) => {
5854    for (let i = 0; i < newChildren.length; i++) {
5855      const oldVNode = oldChildren[i];
5856      const newVNode = newChildren[i];
5857      const container = (
5858        // oldVNode may be an errored async setup() component inside Suspense
5859        // which will not have a mounted element
5860        oldVNode.el && // - In the case of a Fragment, we need to provide the actual parent
5861        // of the Fragment itself so it can move its children.
5862        (oldVNode.type === Fragment || // - In the case of different nodes, there is going to be a replacement
5863        // which also requires the correct parent container
5864        !isSameVNodeType(oldVNode, newVNode) || // - In the case of a component, it could contain anything.
5865        oldVNode.shapeFlag & (6 | 64 | 128)) ? hostParentNode(oldVNode.el) : (
5866          // In other cases, the parent container is not actually used so we
5867          // just pass the block element here to avoid a DOM parentNode call.
5868          fallbackContainer
5869        )
5870      );
5871      patch(
5872        oldVNode,
5873        newVNode,
5874        container,
5875        null,
5876        parentComponent,
5877        parentSuspense,
5878        namespace,
5879        slotScopeIds,
5880        true
5881      );
5882    }
5883  };
5884  const patchProps = (el, oldProps, newProps, parentComponent, namespace) => {
5885    if (oldProps !== newProps) {
5886      if (oldProps !== EMPTY_OBJ) {
5887        for (const key in oldProps) {
5888          if (!isReservedProp(key) && !(key in newProps)) {
5889            hostPatchProp(
5890              el,
5891              key,
5892              oldProps[key],
5893              null,
5894              namespace,
5895              parentComponent
5896            );
5897          }
5898        }
5899      }
5900      for (const key in newProps) {
5901        if (isReservedProp(key)) continue;
5902        const next = newProps[key];
5903        const prev = oldProps[key];
5904        if (next !== prev && key !== "value") {
5905          hostPatchProp(el, key, prev, next, namespace, parentComponent);
5906        }
5907      }
5908      if ("value" in newProps) {
5909        hostPatchProp(el, "value", oldProps.value, newProps.value, namespace);
5910      }
5911    }
5912  };
5913  const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
5914    const fragmentStartAnchor = n2.el = n1 ? n1.el : hostCreateText("");
5915    const fragmentEndAnchor = n2.anchor = n1 ? n1.anchor : hostCreateText("");
5916    let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;
5917    if (fragmentSlotScopeIds) {
5918      slotScopeIds = slotScopeIds ? slotScopeIds.concat(fragmentSlotScopeIds) : fragmentSlotScopeIds;
5919    }
5920    if (n1 == null) {
5921      hostInsert(fragmentStartAnchor, container, anchor);
5922      hostInsert(fragmentEndAnchor, container, anchor);
5923      mountChildren(
5924        // #10007
5925        // such fragment like `<></>` will be compiled into
5926        // a fragment which doesn't have a children.
5927        // In this case fallback to an empty array
5928        n2.children || [],
5929        container,
5930        fragmentEndAnchor,
5931        parentComponent,
5932        parentSuspense,
5933        namespace,
5934        slotScopeIds,
5935        optimized
5936      );
5937    } else {
5938      if (patchFlag > 0 && patchFlag & 64 && dynamicChildren && // #2715 the previous fragment could've been a BAILed one as a result
5939      // of renderSlot() with no valid children
5940      n1.dynamicChildren) {
5941        patchBlockChildren(
5942          n1.dynamicChildren,
5943          dynamicChildren,
5944          container,
5945          parentComponent,
5946          parentSuspense,
5947          namespace,
5948          slotScopeIds
5949        );
5950        if (
5951          // #2080 if the stable fragment has a key, it's a <template v-for> that may
5952          //  get moved around. Make sure all root level vnodes inherit el.
vendor: 12,391 bytes, lines 5953-6393
5953          // #2134 or if it's a component root, it may also get moved around
5954          // as the component is being moved.
5955          n2.key != null || parentComponent && n2 === parentComponent.subTree
5956        ) {
5957          traverseStaticChildren(
5958            n1,
5959            n2,
5960            true
5961            /* shallow */
5962          );
5963        }
5964      } else {
5965        patchChildren(
5966          n1,
5967          n2,
5968          container,
5969          fragmentEndAnchor,
5970          parentComponent,
5971          parentSuspense,
5972          namespace,
5973          slotScopeIds,
5974          optimized
5975        );
5976      }
5977    }
5978  };
5979  const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
5980    n2.slotScopeIds = slotScopeIds;
5981    if (n1 == null) {
5982      if (n2.shapeFlag & 512) {
5983        parentComponent.ctx.activate(
5984          n2,
5985          container,
5986          anchor,
5987          namespace,
5988          optimized
5989        );
5990      } else {
5991        mountComponent(
5992          n2,
5993          container,
5994          anchor,
5995          parentComponent,
5996          parentSuspense,
5997          namespace,
5998          optimized
5999        );
6000      }
6001    } else {
6002      updateComponent(n1, n2, optimized);
6003    }
6004  };
6005  const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, namespace, optimized) => {
6006    const instance = initialVNode.component = createComponentInstance(
6007      initialVNode,
6008      parentComponent,
6009      parentSuspense
6010    );
6011    if (isKeepAlive(initialVNode)) {
6012      instance.ctx.renderer = internals;
6013    }
6014    {
6015      setupComponent(instance, false, optimized);
6016    }
6017    if (instance.asyncDep) {
6018      parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect, optimized);
6019      if (!initialVNode.el) {
6020        const placeholder = instance.subTree = createVNode(Comment);
6021        processCommentNode(null, placeholder, container, anchor);
6022      }
6023    } else {
6024      setupRenderEffect(
6025        instance,
6026        initialVNode,
6027        container,
6028        anchor,
6029        parentSuspense,
6030        namespace,
6031        optimized
6032      );
6033    }
6034  };
6035  const updateComponent = (n1, n2, optimized) => {
6036    const instance = n2.component = n1.component;
6037    if (shouldUpdateComponent(n1, n2, optimized)) {
6038      if (instance.asyncDep && !instance.asyncResolved) {
6039        updateComponentPreRender(instance, n2, optimized);
6040        return;
6041      } else {
6042        instance.next = n2;
6043        instance.update();
6044      }
6045    } else {
6046      n2.el = n1.el;
6047      instance.vnode = n2;
6048    }
6049  };
6050  const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, namespace, optimized) => {
6051    const componentUpdateFn = () => {
6052      if (!instance.isMounted) {
6053        let vnodeHook;
6054        const { el, props: props2 } = initialVNode;
6055        const { bm, m, parent, root: root2, type } = instance;
6056        const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);
6057        toggleRecurse(instance, false);
6058        if (bm) {
6059          invokeArrayFns(bm);
6060        }
6061        if (!isAsyncWrapperVNode && (vnodeHook = props2 && props2.onVnodeBeforeMount)) {
6062          invokeVNodeHook(vnodeHook, parent, initialVNode);
6063        }
6064        toggleRecurse(instance, true);
6065        if (el && hydrateNode) {
6066          const hydrateSubTree = () => {
6067            instance.subTree = renderComponentRoot(instance);
6068            hydrateNode(
6069              el,
6070              instance.subTree,
6071              instance,
6072              parentSuspense,
6073              null
6074            );
6075          };
6076          if (isAsyncWrapperVNode && type.__asyncHydrate) {
6077            type.__asyncHydrate(
6078              el,
6079              instance,
6080              hydrateSubTree
6081            );
6082          } else {
6083            hydrateSubTree();
6084          }
6085        } else {
6086          if (root2.ce) {
6087            root2.ce._injectChildStyle(type);
6088          }
6089          const subTree = instance.subTree = renderComponentRoot(instance);
6090          patch(
6091            null,
6092            subTree,
6093            container,
6094            anchor,
6095            instance,
6096            parentSuspense,
6097            namespace
6098          );
6099          initialVNode.el = subTree.el;
6100        }
6101        if (m) {
6102          queuePostRenderEffect(m, parentSuspense);
6103        }
6104        if (!isAsyncWrapperVNode && (vnodeHook = props2 && props2.onVnodeMounted)) {
6105          const scopedInitialVNode = initialVNode;
6106          queuePostRenderEffect(
6107            () => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode),
6108            parentSuspense
6109          );
6110        }
6111        if (initialVNode.shapeFlag & 256 || parent && isAsyncWrapper(parent.vnode) && parent.vnode.shapeFlag & 256) {
6112          instance.a && queuePostRenderEffect(instance.a, parentSuspense);
6113        }
6114        instance.isMounted = true;
6115        initialVNode = container = anchor = null;
6116      } else {
6117        let { next, bu, u, parent, vnode } = instance;
6118        {
6119          const nonHydratedAsyncRoot = locateNonHydratedAsyncRoot(instance);
6120          if (nonHydratedAsyncRoot) {
6121            if (next) {
6122              next.el = vnode.el;
6123              updateComponentPreRender(instance, next, optimized);
6124            }
6125            nonHydratedAsyncRoot.asyncDep.then(() => {
6126              if (!instance.isUnmounted) {
6127                componentUpdateFn();
6128              }
6129            });
6130            return;
6131          }
6132        }
6133        let originNext = next;
6134        let vnodeHook;
6135        toggleRecurse(instance, false);
6136        if (next) {
6137          next.el = vnode.el;
6138          updateComponentPreRender(instance, next, optimized);
6139        } else {
6140          next = vnode;
6141        }
6142        if (bu) {
6143          invokeArrayFns(bu);
6144        }
6145        if (vnodeHook = next.props && next.props.onVnodeBeforeUpdate) {
6146          invokeVNodeHook(vnodeHook, parent, next, vnode);
6147        }
6148        toggleRecurse(instance, true);
6149        const nextTree = renderComponentRoot(instance);
6150        const prevTree = instance.subTree;
6151        instance.subTree = nextTree;
6152        patch(
6153          prevTree,
6154          nextTree,
6155          // parent may have changed if it's in a teleport
6156          hostParentNode(prevTree.el),
6157          // anchor may have changed if it's in a fragment
6158          getNextHostNode(prevTree),
6159          instance,
6160          parentSuspense,
6161          namespace
6162        );
6163        next.el = nextTree.el;
6164        if (originNext === null) {
6165          updateHOCHostEl(instance, nextTree.el);
6166        }
6167        if (u) {
6168          queuePostRenderEffect(u, parentSuspense);
6169        }
6170        if (vnodeHook = next.props && next.props.onVnodeUpdated) {
6171          queuePostRenderEffect(
6172            () => invokeVNodeHook(vnodeHook, parent, next, vnode),
6173            parentSuspense
6174          );
6175        }
6176      }
6177    };
6178    instance.scope.on();
6179    const effect2 = instance.effect = new ReactiveEffect(componentUpdateFn);
6180    instance.scope.off();
6181    const update4 = instance.update = effect2.run.bind(effect2);
6182    const job = instance.job = effect2.runIfDirty.bind(effect2);
6183    job.i = instance;
6184    job.id = instance.uid;
6185    effect2.scheduler = () => queueJob(job);
6186    toggleRecurse(instance, true);
6187    update4();
6188  };
6189  const updateComponentPreRender = (instance, nextVNode, optimized) => {
6190    nextVNode.component = instance;
6191    const prevProps = instance.vnode.props;
6192    instance.vnode = nextVNode;
6193    instance.next = null;
6194    updateProps(instance, nextVNode.props, prevProps, optimized);
6195    updateSlots(instance, nextVNode.children, optimized);
6196    pauseTracking();
6197    flushPreFlushCbs(instance);
6198    resetTracking();
6199  };
6200  const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized = false) => {
6201    const c1 = n1 && n1.children;
6202    const prevShapeFlag = n1 ? n1.shapeFlag : 0;
6203    const c2 = n2.children;
6204    const { patchFlag, shapeFlag } = n2;
6205    if (patchFlag > 0) {
6206      if (patchFlag & 128) {
6207        patchKeyedChildren(
6208          c1,
6209          c2,
6210          container,
6211          anchor,
6212          parentComponent,
6213          parentSuspense,
6214          namespace,
6215          slotScopeIds,
6216          optimized
6217        );
6218        return;
6219      } else if (patchFlag & 256) {
6220        patchUnkeyedChildren(
6221          c1,
6222          c2,
6223          container,
6224          anchor,
6225          parentComponent,
6226          parentSuspense,
6227          namespace,
6228          slotScopeIds,
6229          optimized
6230        );
6231        return;
6232      }
6233    }
6234    if (shapeFlag & 8) {
6235      if (prevShapeFlag & 16) {
6236        unmountChildren(c1, parentComponent, parentSuspense);
6237      }
6238      if (c2 !== c1) {
6239        hostSetElementText(container, c2);
6240      }
6241    } else {
6242      if (prevShapeFlag & 16) {
6243        if (shapeFlag & 16) {
6244          patchKeyedChildren(
6245            c1,
6246            c2,
6247            container,
6248            anchor,
6249            parentComponent,
6250            parentSuspense,
6251            namespace,
6252            slotScopeIds,
6253            optimized
6254          );
6255        } else {
6256          unmountChildren(c1, parentComponent, parentSuspense, true);
6257        }
6258      } else {
6259        if (prevShapeFlag & 8) {
6260          hostSetElementText(container, "");
6261        }
6262        if (shapeFlag & 16) {
6263          mountChildren(
6264            c2,
6265            container,
6266            anchor,
6267            parentComponent,
6268            parentSuspense,
6269            namespace,
6270            slotScopeIds,
6271            optimized
6272          );
6273        }
6274      }
6275    }
6276  };
6277  const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
6278    c1 = c1 || EMPTY_ARR;
6279    c2 = c2 || EMPTY_ARR;
6280    const oldLength = c1.length;
6281    const newLength = c2.length;
6282    const commonLength = Math.min(oldLength, newLength);
6283    let i;
6284    for (i = 0; i < commonLength; i++) {
6285      const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
6286      patch(
6287        c1[i],
6288        nextChild,
6289        container,
6290        null,
6291        parentComponent,
6292        parentSuspense,
6293        namespace,
6294        slotScopeIds,
6295        optimized
6296      );
6297    }
6298    if (oldLength > newLength) {
6299      unmountChildren(
6300        c1,
6301        parentComponent,
6302        parentSuspense,
6303        true,
6304        false,
6305        commonLength
6306      );
6307    } else {
6308      mountChildren(
6309        c2,
6310        container,
6311        anchor,
6312        parentComponent,
6313        parentSuspense,
6314        namespace,
6315        slotScopeIds,
6316        optimized,
6317        commonLength
6318      );
6319    }
6320  };
6321  const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized) => {
6322    let i = 0;
6323    const l2 = c2.length;
6324    let e1 = c1.length - 1;
6325    let e2 = l2 - 1;
6326    while (i <= e1 && i <= e2) {
6327      const n1 = c1[i];
6328      const n2 = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
6329      if (isSameVNodeType(n1, n2)) {
6330        patch(
6331          n1,
6332          n2,
6333          container,
6334          null,
6335          parentComponent,
6336          parentSuspense,
6337          namespace,
6338          slotScopeIds,
6339          optimized
6340        );
6341      } else {
6342        break;
6343      }
6344      i++;
6345    }
6346    while (i <= e1 && i <= e2) {
6347      const n1 = c1[e1];
6348      const n2 = c2[e2] = optimized ? cloneIfMounted(c2[e2]) : normalizeVNode(c2[e2]);
6349      if (isSameVNodeType(n1, n2)) {
6350        patch(
6351          n1,
6352          n2,
6353          container,
6354          null,
6355          parentComponent,
6356          parentSuspense,
6357          namespace,
6358          slotScopeIds,
6359          optimized
6360        );
6361      } else {
6362        break;
6363      }
6364      e1--;
6365      e2--;
6366    }
6367    if (i > e1) {
6368      if (i <= e2) {
6369        const nextPos = e2 + 1;
6370        const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;
6371        while (i <= e2) {
6372          patch(
6373            null,
6374            c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]),
6375            container,
6376            anchor,
6377            parentComponent,
6378            parentSuspense,
6379            namespace,
6380            slotScopeIds,
6381            optimized
6382          );
6383          i++;
6384        }
6385      }
6386    } else if (i > e2) {
6387      while (i <= e1) {
6388        unmount(c1[i], parentComponent, parentSuspense, true);
6389        i++;
6390      }
6391    } else {
6392      const s1 = i;
6393      const s2 = i;
vendor: 4,636 bytes, lines 6394-6546
6394      const keyToNewIndexMap = /* @__PURE__ */ new Map();
6395      for (i = s2; i <= e2; i++) {
6396        const nextChild = c2[i] = optimized ? cloneIfMounted(c2[i]) : normalizeVNode(c2[i]);
6397        if (nextChild.key != null) {
6398          keyToNewIndexMap.set(nextChild.key, i);
6399        }
6400      }
6401      let j;
6402      let patched = 0;
6403      const toBePatched = e2 - s2 + 1;
6404      let moved = false;
6405      let maxNewIndexSoFar = 0;
6406      const newIndexToOldIndexMap = new Array(toBePatched);
6407      for (i = 0; i < toBePatched; i++) newIndexToOldIndexMap[i] = 0;
6408      for (i = s1; i <= e1; i++) {
6409        const prevChild = c1[i];
6410        if (patched >= toBePatched) {
6411          unmount(prevChild, parentComponent, parentSuspense, true);
6412          continue;
6413        }
6414        let newIndex;
6415        if (prevChild.key != null) {
6416          newIndex = keyToNewIndexMap.get(prevChild.key);
6417        } else {
6418          for (j = s2; j <= e2; j++) {
6419            if (newIndexToOldIndexMap[j - s2] === 0 && isSameVNodeType(prevChild, c2[j])) {
6420              newIndex = j;
6421              break;
6422            }
6423          }
6424        }
6425        if (newIndex === void 0) {
6426          unmount(prevChild, parentComponent, parentSuspense, true);
6427        } else {
6428          newIndexToOldIndexMap[newIndex - s2] = i + 1;
6429          if (newIndex >= maxNewIndexSoFar) {
6430            maxNewIndexSoFar = newIndex;
6431          } else {
6432            moved = true;
6433          }
6434          patch(
6435            prevChild,
6436            c2[newIndex],
6437            container,
6438            null,
6439            parentComponent,
6440            parentSuspense,
6441            namespace,
6442            slotScopeIds,
6443            optimized
6444          );
6445          patched++;
6446        }
6447      }
6448      const increasingNewIndexSequence = moved ? getSequence(newIndexToOldIndexMap) : EMPTY_ARR;
6449      j = increasingNewIndexSequence.length - 1;
6450      for (i = toBePatched - 1; i >= 0; i--) {
6451        const nextIndex = s2 + i;
6452        const nextChild = c2[nextIndex];
6453        const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;
6454        if (newIndexToOldIndexMap[i] === 0) {
6455          patch(
6456            null,
6457            nextChild,
6458            container,
6459            anchor,
6460            parentComponent,
6461            parentSuspense,
6462            namespace,
6463            slotScopeIds,
6464            optimized
6465          );
6466        } else if (moved) {
6467          if (j < 0 || i !== increasingNewIndexSequence[j]) {
6468            move(nextChild, container, anchor, 2);
6469          } else {
6470            j--;
6471          }
6472        }
6473      }
6474    }
6475  };
6476  const move = (vnode, container, anchor, moveType, parentSuspense = null) => {
6477    const { el, type, transition: transition2, children, shapeFlag } = vnode;
6478    if (shapeFlag & 6) {
6479      move(vnode.component.subTree, container, anchor, moveType);
6480      return;
6481    }
6482    if (shapeFlag & 128) {
6483      vnode.suspense.move(container, anchor, moveType);
6484      return;
6485    }
6486    if (shapeFlag & 64) {
6487      type.move(vnode, container, anchor, internals);
6488      return;
6489    }
6490    if (type === Fragment) {
6491      hostInsert(el, container, anchor);
6492      for (let i = 0; i < children.length; i++) {
6493        move(children[i], container, anchor, moveType);
6494      }
6495      hostInsert(vnode.anchor, container, anchor);
6496      return;
6497    }
6498    if (type === Static) {
6499      moveStaticNode(vnode, container, anchor);
6500      return;
6501    }
6502    const needTransition2 = moveType !== 2 && shapeFlag & 1 && transition2;
6503    if (needTransition2) {
6504      if (moveType === 0) {
6505        transition2.beforeEnter(el);
6506        hostInsert(el, container, anchor);
6507        queuePostRenderEffect(() => transition2.enter(el), parentSuspense);
6508      } else {
6509        const { leave, delayLeave, afterLeave } = transition2;
6510        const remove22 = () => {
6511          if (vnode.ctx.isUnmounted) {
6512            hostRemove(el);
6513          } else {
6514            hostInsert(el, container, anchor);
6515          }
6516        };
6517        const performLeave = () => {
6518          leave(el, () => {
6519            remove22();
6520            afterLeave && afterLeave();
6521          });
6522        };
6523        if (delayLeave) {
6524          delayLeave(el, remove22, performLeave);
6525        } else {
6526          performLeave();
6527        }
6528      }
6529    } else {
6530      hostInsert(el, container, anchor);
6531    }
6532  };
6533  const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {
6534    const {
6535      type,
6536      props: props2,
6537      ref: ref3,
6538      children,
6539      dynamicChildren,
6540      shapeFlag,
6541      patchFlag,
6542      dirs,
6543      cacheIndex
6544    } = vnode;
6545    if (patchFlag === -2) {
6546      optimized = false;
6547    }
6548    if (ref3 != null) {
6549      pauseTracking();
6550      setRef(ref3, null, parentSuspense, vnode, true);
6551      resetTracking();
6552    }
6553    if (cacheIndex != null) {
6554      parentComponent.renderCache[cacheIndex] = void 0;
6555    }
6556    if (shapeFlag & 256) {
6557      parentComponent.ctx.deactivate(vnode);
6558      return;
6559    }
6560    const shouldInvokeDirs = shapeFlag & 1 && dirs;
6561    const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);
6562    let vnodeHook;
6563    if (shouldInvokeVnodeHook && (vnodeHook = props2 && props2.onVnodeBeforeUnmount)) {
6564      invokeVNodeHook(vnodeHook, parentComponent, vnode);
6565    }
6566    if (shapeFlag & 6) {
6567      unmountComponent(vnode.component, parentSuspense, doRemove);
6568    } else {
6569      if (shapeFlag & 128) {
6570        vnode.suspense.unmount(parentSuspense, doRemove);
6571        return;
6572      }
6573      if (shouldInvokeDirs) {
6574        invokeDirectiveHook(vnode, null, parentComponent, "beforeUnmount");
6575      }
6576      if (shapeFlag & 64) {
6577        vnode.type.remove(
6578          vnode,
6579          parentComponent,
6580          parentSuspense,
6581          internals,
6582          doRemove
6583        );
6584      } else if (dynamicChildren && // #5154
6585      // when v-once is used inside a block, setBlockTracking(-1) marks the
6586      // parent block with hasOnce: true
6587      // so that it doesn't take the fast path during unmount - otherwise
6588      // components nested in v-once are never unmounted.
6589      !dynamicChildren.hasOnce && // #1153: fast path should not be taken for non-stable (v-for) fragments
6590      (type !== Fragment || patchFlag > 0 && patchFlag & 64)) {
6591        unmountChildren(
6592          dynamicChildren,
6593          parentComponent,
6594          parentSuspense,
6595          false,
6596          true
6597        );
6598      } else if (type === Fragment && patchFlag & (128 | 256) || !optimized && shapeFlag & 16) {
6599        unmountChildren(children, parentComponent, parentSuspense);
6600      }
6601      if (doRemove) {
6602        remove2(vnode);
6603      }
6604    }
6605    if (shouldInvokeVnodeHook && (vnodeHook = props2 && props2.onVnodeUnmounted) || shouldInvokeDirs) {
6606      queuePostRenderEffect(() => {
6607        vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);
6608        shouldInvokeDirs && invokeDirectiveHook(vnode, null, parentComponent, "unmounted");
6609      }, parentSuspense);
6610    }
6611  };
6612  const remove2 = (vnode) => {
6613    const { type, el, anchor, transition: transition2 } = vnode;
6614    if (type === Fragment) {
6615      {
6616        removeFragment(el, anchor);
6617      }
6618      return;
6619    }
6620    if (type === Static) {
6621      removeStaticNode(vnode);
6622      return;
6623    }
6624    const performRemove = () => {
6625      hostRemove(el);
6626      if (transition2 && !transition2.persisted && transition2.afterLeave) {
6627        transition2.afterLeave();
6628      }
6629    };
6630    if (vnode.shapeFlag & 1 && transition2 && !transition2.persisted) {
6631      const { leave, delayLeave } = transition2;
6632      const performLeave = () => leave(el, performRemove);
6633      if (delayLeave) {
6634        delayLeave(vnode.el, performRemove, performLeave);
6635      } else {
6636        performLeave();
6637      }
6638    } else {
6639      performRemove();
6640    }
6641  };
6642  const removeFragment = (cur, end) => {
6643    let next;
6644    while (cur !== end) {
6645      next = hostNextSibling(cur);
6646      hostRemove(cur);
6647      cur = next;
6648    }
6649    hostRemove(end);
6650  };
6651  const unmountComponent = (instance, parentSuspense, doRemove) => {
6652    const {
6653      bum,
6654      scope,
6655      job,
6656      subTree,
6657      um,
6658      m,
6659      a,
6660      parent,
6661      slots: { __: slotCacheKeys }
6662    } = instance;
6663    invalidateMount(m);
6664    invalidateMount(a);
6665    if (bum) {
6666      invokeArrayFns(bum);
6667    }
6668    if (parent && isArray$3(slotCacheKeys)) {
6669      slotCacheKeys.forEach((v) => {
6670        parent.renderCache[v] = void 0;
6671      });
6672    }
6673    scope.stop();
6674    if (job) {
6675      job.flags |= 8;
6676      unmount(subTree, instance, parentSuspense, doRemove);
6677    }
6678    if (um) {
6679      queuePostRenderEffect(um, parentSuspense);
6680    }
6681    queuePostRenderEffect(() => {
6682      instance.isUnmounted = true;
6683    }, parentSuspense);
6684    if (parentSuspense && parentSuspense.pendingBranch && !parentSuspense.isUnmounted && instance.asyncDep && !instance.asyncResolved && instance.suspenseId === parentSuspense.pendingId) {
6685      parentSuspense.deps--;
6686      if (parentSuspense.deps === 0) {
6687        parentSuspense.resolve();
6688      }
6689    }
6690  };
6691  const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {
6692    for (let i = start; i < children.length; i++) {
6693      unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);
6694    }
6695  };
6696  const getNextHostNode = (vnode) => {
6697    if (vnode.shapeFlag & 6) {
6698      return getNextHostNode(vnode.component.subTree);
6699    }
6700    if (vnode.shapeFlag & 128) {
6701      return vnode.suspense.next();
6702    }
6703    const el = hostNextSibling(vnode.anchor || vnode.el);
6704    const teleportEnd = el && el[TeleportEndKey];
6705    return teleportEnd ? hostNextSibling(teleportEnd) : el;
6706  };
6707  let isFlushing = false;
vendor: 15,333 bytes, lines 6708-7270
6708  const render2 = (vnode, container, namespace) => {
6709    if (vnode == null) {
6710      if (container._vnode) {
6711        unmount(container._vnode, null, null, true);
6712      }
6713    } else {
6714      patch(
6715        container._vnode || null,
6716        vnode,
6717        container,
6718        null,
6719        null,
6720        null,
6721        namespace
6722      );
6723    }
6724    container._vnode = vnode;
6725    if (!isFlushing) {
6726      isFlushing = true;
6727      flushPreFlushCbs();
6728      flushPostFlushCbs();
6729      isFlushing = false;
6730    }
6731  };
6732  const internals = {
6733    p: patch,
6734    um: unmount,
6735    m: move,
6736    r: remove2,
6737    mt: mountComponent,
6738    mc: mountChildren,
6739    pc: patchChildren,
6740    pbc: patchBlockChildren,
6741    n: getNextHostNode,
6742    o: options2
6743  };
6744  let hydrate2;
6745  let hydrateNode;
6746  if (createHydrationFns) {
6747    [hydrate2, hydrateNode] = createHydrationFns(
6748      internals
6749    );
6750  }
6751  return {
6752    render: render2,
6753    hydrate: hydrate2,
6754    createApp: createAppAPI(render2, hydrate2)
6755  };
6756}
6757function resolveChildrenNamespace({ type, props: props2 }, currentNamespace) {
6758  return currentNamespace === "svg" && type === "foreignObject" || currentNamespace === "mathml" && type === "annotation-xml" && props2 && props2.encoding && props2.encoding.includes("html") ? void 0 : currentNamespace;
6759}
6760function toggleRecurse({ effect: effect2, job }, allowed) {
6761  if (allowed) {
6762    effect2.flags |= 32;
6763    job.flags |= 4;
6764  } else {
6765    effect2.flags &= -33;
6766    job.flags &= -5;
6767  }
6768}
6769function needTransition(parentSuspense, transition2) {
6770  return (!parentSuspense || parentSuspense && !parentSuspense.pendingBranch) && transition2 && !transition2.persisted;
6771}
6772function traverseStaticChildren(n1, n2, shallow = false) {
6773  const ch1 = n1.children;
6774  const ch2 = n2.children;
6775  if (isArray$3(ch1) && isArray$3(ch2)) {
6776    for (let i = 0; i < ch1.length; i++) {
6777      const c1 = ch1[i];
6778      let c2 = ch2[i];
6779      if (c2.shapeFlag & 1 && !c2.dynamicChildren) {
6780        if (c2.patchFlag <= 0 || c2.patchFlag === 32) {
6781          c2 = ch2[i] = cloneIfMounted(ch2[i]);
6782          c2.el = c1.el;
6783        }
6784        if (!shallow && c2.patchFlag !== -2)
6785          traverseStaticChildren(c1, c2);
6786      }
6787      if (c2.type === Text) {
6788        c2.el = c1.el;
6789      }
6790      if (c2.type === Comment && !c2.el) {
6791        c2.el = c1.el;
6792      }
6793    }
6794  }
6795}
6796function getSequence(arr) {
6797  const p2 = arr.slice();
6798  const result = [0];
6799  let i, j, u, v, c;
6800  const len = arr.length;
6801  for (i = 0; i < len; i++) {
6802    const arrI = arr[i];
6803    if (arrI !== 0) {
6804      j = result[result.length - 1];
6805      if (arr[j] < arrI) {
6806        p2[i] = j;
6807        result.push(i);
6808        continue;
6809      }
6810      u = 0;
6811      v = result.length - 1;
6812      while (u < v) {
6813        c = u + v >> 1;
6814        if (arr[result[c]] < arrI) {
6815          u = c + 1;
6816        } else {
6817          v = c;
6818        }
6819      }
6820      if (arrI < arr[result[u]]) {
6821        if (u > 0) {
6822          p2[i] = result[u - 1];
6823        }
6824        result[u] = i;
6825      }
6826    }
6827  }
6828  u = result.length;
6829  v = result[u - 1];
6830  while (u-- > 0) {
6831    result[u] = v;
6832    v = p2[v];
6833  }
6834  return result;
6835}
6836function locateNonHydratedAsyncRoot(instance) {
6837  const subComponent = instance.subTree.component;
6838  if (subComponent) {
6839    if (subComponent.asyncDep && !subComponent.asyncResolved) {
6840      return subComponent;
6841    } else {
6842      return locateNonHydratedAsyncRoot(subComponent);
6843    }
6844  }
6845}
6846function invalidateMount(hooks) {
6847  if (hooks) {
6848    for (let i = 0; i < hooks.length; i++)
6849      hooks[i].flags |= 8;
6850  }
6851}
6852const ssrContextKey = Symbol.for("v-scx");
6853const useSSRContext = () => {
6854  {
6855    const ctx = inject(ssrContextKey);
6856    return ctx;
6857  }
6858};
6859function watchEffect(effect2, options2) {
6860  return doWatch(effect2, null, options2);
6861}
6862function watchPostEffect(effect2, options2) {
6863  return doWatch(
6864    effect2,
6865    null,
6866    { flush: "post" }
6867  );
6868}
6869function watchSyncEffect(effect2, options2) {
6870  return doWatch(
6871    effect2,
6872    null,
6873    { flush: "sync" }
6874  );
6875}
6876function watch(source, cb, options2) {
6877  return doWatch(source, cb, options2);
6878}
6879function doWatch(source, cb, options2 = EMPTY_OBJ) {
6880  const { immediate, deep, flush, once } = options2;
6881  const baseWatchOptions = extend$5({}, options2);
6882  const runsImmediately = cb && immediate || !cb && flush !== "post";
6883  let ssrCleanup;
6884  if (isInSSRComponentSetup) {
6885    if (flush === "sync") {
6886      const ctx = useSSRContext();
6887      ssrCleanup = ctx.__watcherHandles || (ctx.__watcherHandles = []);
6888    } else if (!runsImmediately) {
6889      const watchStopHandle = () => {
6890      };
6891      watchStopHandle.stop = NOOP;
6892      watchStopHandle.resume = NOOP;
6893      watchStopHandle.pause = NOOP;
6894      return watchStopHandle;
6895    }
6896  }
6897  const instance = currentInstance;
6898  baseWatchOptions.call = (fn, type, args) => callWithAsyncErrorHandling(fn, instance, type, args);
6899  let isPre = false;
6900  if (flush === "post") {
6901    baseWatchOptions.scheduler = (job) => {
6902      queuePostRenderEffect(job, instance && instance.suspense);
6903    };
6904  } else if (flush !== "sync") {
6905    isPre = true;
6906    baseWatchOptions.scheduler = (job, isFirstRun) => {
6907      if (isFirstRun) {
6908        job();
6909      } else {
6910        queueJob(job);
6911      }
6912    };
6913  }
6914  baseWatchOptions.augmentJob = (job) => {
6915    if (cb) {
6916      job.flags |= 4;
6917    }
6918    if (isPre) {
6919      job.flags |= 2;
6920      if (instance) {
6921        job.id = instance.uid;
6922        job.i = instance;
6923      }
6924    }
6925  };
6926  const watchHandle = watch$1(source, cb, baseWatchOptions);
6927  if (isInSSRComponentSetup) {
6928    if (ssrCleanup) {
6929      ssrCleanup.push(watchHandle);
6930    } else if (runsImmediately) {
6931      watchHandle();
6932    }
6933  }
6934  return watchHandle;
6935}
6936function instanceWatch(source, value, options2) {
6937  const publicThis = this.proxy;
6938  const getter = isString$3(source) ? source.includes(".") ? createPathGetter(publicThis, source) : () => publicThis[source] : source.bind(publicThis, publicThis);
6939  let cb;
6940  if (isFunction$3(value)) {
6941    cb = value;
6942  } else {
6943    cb = value.handler;
6944    options2 = value;
6945  }
6946  const reset2 = setCurrentInstance(this);
6947  const res = doWatch(getter, cb.bind(publicThis), options2);
6948  reset2();
6949  return res;
6950}
6951function createPathGetter(ctx, path) {
6952  const segments = path.split(".");
6953  return () => {
6954    let cur = ctx;
6955    for (let i = 0; i < segments.length && cur; i++) {
6956      cur = cur[segments[i]];
6957    }
6958    return cur;
6959  };
6960}
6961function useModel(props2, name, options2 = EMPTY_OBJ) {
6962  const i = getCurrentInstance();
6963  const camelizedName = camelize(name);
6964  const hyphenatedName = hyphenate(name);
6965  const modifiers = getModelModifiers(props2, camelizedName);
6966  const res = customRef((track2, trigger2) => {
6967    let localValue;
6968    let prevSetValue = EMPTY_OBJ;
6969    let prevEmittedValue;
6970    watchSyncEffect(() => {
6971      const propValue = props2[camelizedName];
6972      if (hasChanged(localValue, propValue)) {
6973        localValue = propValue;
6974        trigger2();
6975      }
6976    });
6977    return {
6978      get() {
6979        track2();
6980        return options2.get ? options2.get(localValue) : localValue;
6981      },
6982      set(value) {
6983        const emittedValue = options2.set ? options2.set(value) : value;
6984        if (!hasChanged(emittedValue, localValue) && !(prevSetValue !== EMPTY_OBJ && hasChanged(value, prevSetValue))) {
6985          return;
6986        }
6987        const rawProps = i.vnode.props;
6988        if (!(rawProps && // check if parent has passed v-model
6989        (name in rawProps || camelizedName in rawProps || hyphenatedName in rawProps) && (`onUpdate:${name}` in rawProps || `onUpdate:${camelizedName}` in rawProps || `onUpdate:${hyphenatedName}` in rawProps))) {
6990          localValue = value;
6991          trigger2();
6992        }
6993        i.emit(`update:${name}`, emittedValue);
6994        if (hasChanged(value, emittedValue) && hasChanged(value, prevSetValue) && !hasChanged(emittedValue, prevEmittedValue)) {
6995          trigger2();
6996        }
6997        prevSetValue = value;
6998        prevEmittedValue = emittedValue;
6999      }
7000    };
7001  });
7002  res[Symbol.iterator] = () => {
7003    let i2 = 0;
7004    return {
7005      next() {
7006        if (i2 < 2) {
7007          return { value: i2++ ? modifiers || EMPTY_OBJ : res, done: false };
7008        } else {
7009          return { done: true };
7010        }
7011      }
7012    };
7013  };
7014  return res;
7015}
7016const getModelModifiers = (props2, modelName) => {
7017  return modelName === "modelValue" || modelName === "model-value" ? props2.modelModifiers : props2[`${modelName}Modifiers`] || props2[`${camelize(modelName)}Modifiers`] || props2[`${hyphenate(modelName)}Modifiers`];
7018};
7019function emit(instance, event, ...rawArgs) {
7020  if (instance.isUnmounted) return;
7021  const props2 = instance.vnode.props || EMPTY_OBJ;
7022  let args = rawArgs;
7023  const isModelListener2 = event.startsWith("update:");
7024  const modifiers = isModelListener2 && getModelModifiers(props2, event.slice(7));
7025  if (modifiers) {
7026    if (modifiers.trim) {
7027      args = rawArgs.map((a) => isString$3(a) ? a.trim() : a);
7028    }
7029    if (modifiers.number) {
7030      args = rawArgs.map(looseToNumber);
7031    }
7032  }
7033  let handlerName;
7034  let handler = props2[handlerName = toHandlerKey(event)] || // also try camelCase event handler (#2249)
7035  props2[handlerName = toHandlerKey(camelize(event))];
7036  if (!handler && isModelListener2) {
7037    handler = props2[handlerName = toHandlerKey(hyphenate(event))];
7038  }
7039  if (handler) {
7040    callWithAsyncErrorHandling(
7041      handler,
7042      instance,
7043      6,
7044      args
7045    );
7046  }
7047  const onceHandler = props2[handlerName + `Once`];
7048  if (onceHandler) {
7049    if (!instance.emitted) {
7050      instance.emitted = {};
7051    } else if (instance.emitted[handlerName]) {
7052      return;
7053    }
7054    instance.emitted[handlerName] = true;
7055    callWithAsyncErrorHandling(
7056      onceHandler,
7057      instance,
7058      6,
7059      args
7060    );
7061  }
7062}
7063function normalizeEmitsOptions(comp, appContext, asMixin = false) {
7064  const cache2 = appContext.emitsCache;
7065  const cached = cache2.get(comp);
7066  if (cached !== void 0) {
7067    return cached;
7068  }
7069  const raw = comp.emits;
7070  let normalized = {};
7071  let hasExtends = false;
7072  if (!isFunction$3(comp)) {
7073    const extendEmits = (raw2) => {
7074      const normalizedFromExtend = normalizeEmitsOptions(raw2, appContext, true);
7075      if (normalizedFromExtend) {
7076        hasExtends = true;
7077        extend$5(normalized, normalizedFromExtend);
7078      }
7079    };
7080    if (!asMixin && appContext.mixins.length) {
7081      appContext.mixins.forEach(extendEmits);
7082    }
7083    if (comp.extends) {
7084      extendEmits(comp.extends);
7085    }
7086    if (comp.mixins) {
7087      comp.mixins.forEach(extendEmits);
7088    }
7089  }
7090  if (!raw && !hasExtends) {
7091    if (isObject$9(comp)) {
7092      cache2.set(comp, null);
7093    }
7094    return null;
7095  }
7096  if (isArray$3(raw)) {
7097    raw.forEach((key) => normalized[key] = null);
7098  } else {
7099    extend$5(normalized, raw);
7100  }
7101  if (isObject$9(comp)) {
7102    cache2.set(comp, normalized);
7103  }
7104  return normalized;
7105}
7106function isEmitListener(options2, key) {
7107  if (!options2 || !isOn(key)) {
7108    return false;
7109  }
7110  key = key.slice(2).replace(/Once$/, "");
7111  return hasOwn$2(options2, key[0].toLowerCase() + key.slice(1)) || hasOwn$2(options2, hyphenate(key)) || hasOwn$2(options2, key);
7112}
7113function markAttrsAccessed() {
7114}
7115function renderComponentRoot(instance) {
7116  const {
7117    type: Component,
7118    vnode,
7119    proxy,
7120    withProxy,
7121    propsOptions: [propsOptions],
7122    slots,
7123    attrs,
7124    emit: emit2,
7125    render: render2,
7126    renderCache,
7127    props: props2,
7128    data,
7129    setupState,
7130    ctx,
7131    inheritAttrs
7132  } = instance;
7133  const prev = setCurrentRenderingInstance(instance);
7134  let result;
7135  let fallthroughAttrs;
7136  try {
7137    if (vnode.shapeFlag & 4) {
7138      const proxyToUse = withProxy || proxy;
7139      const thisProxy = false ? new Proxy(proxyToUse, {
7140        get(target, key, receiver) {
7141          warn$1(
7142            `Property '${String(
7143              key
7144            )}' was accessed via 'this'. Avoid using 'this' in templates.`
7145          );
7146          return Reflect.get(target, key, receiver);
7147        }
7148      }) : proxyToUse;
7149      result = normalizeVNode(
7150        render2.call(
7151          thisProxy,
7152          proxyToUse,
7153          renderCache,
7154          false ? shallowReadonly(props2) : props2,
7155          setupState,
7156          data,
7157          ctx
7158        )
7159      );
7160      fallthroughAttrs = attrs;
7161    } else {
7162      const render22 = Component;
7163      if (false) ;
7164      result = normalizeVNode(
7165        render22.length > 1 ? render22(
7166          false ? shallowReadonly(props2) : props2,
7167          false ? {
7168            get attrs() {
7169              markAttrsAccessed();
7170              return shallowReadonly(attrs);
7171            },
7172            slots,
7173            emit: emit2
7174          } : { attrs, slots, emit: emit2 }
7175        ) : render22(
7176          false ? shallowReadonly(props2) : props2,
7177          null
7178        )
7179      );
7180      fallthroughAttrs = Component.props ? attrs : getFunctionalFallthrough(attrs);
7181    }
7182  } catch (err) {
7183    blockStack.length = 0;
7184    handleError(err, instance, 1);
7185    result = createVNode(Comment);
7186  }
7187  let root2 = result;
7188  if (fallthroughAttrs && inheritAttrs !== false) {
7189    const keys = Object.keys(fallthroughAttrs);
7190    const { shapeFlag } = root2;
7191    if (keys.length) {
7192      if (shapeFlag & (1 | 6)) {
7193        if (propsOptions && keys.some(isModelListener)) {
7194          fallthroughAttrs = filterModelListeners(
7195            fallthroughAttrs,
7196            propsOptions
7197          );
7198        }
7199        root2 = cloneVNode(root2, fallthroughAttrs, false, true);
7200      }
7201    }
7202  }
7203  if (vnode.dirs) {
7204    root2 = cloneVNode(root2, null, false, true);
7205    root2.dirs = root2.dirs ? root2.dirs.concat(vnode.dirs) : vnode.dirs;
7206  }
7207  if (vnode.transition) {
7208    setTransitionHooks(root2, vnode.transition);
7209  }
7210  {
7211    result = root2;
7212  }
7213  setCurrentRenderingInstance(prev);
7214  return result;
7215}
7216function filterSingleRoot(children, recurse = true) {
7217  let singleRoot;
7218  for (let i = 0; i < children.length; i++) {
7219    const child = children[i];
7220    if (isVNode$1(child)) {
7221      if (child.type !== Comment || child.children === "v-if") {
7222        if (singleRoot) {
7223          return;
7224        } else {
7225          singleRoot = child;
7226        }
7227      }
7228    } else {
7229      return;
7230    }
7231  }
7232  return singleRoot;
7233}
7234const getFunctionalFallthrough = (attrs) => {
7235  let res;
7236  for (const key in attrs) {
7237    if (key === "class" || key === "style" || isOn(key)) {
7238      (res || (res = {}))[key] = attrs[key];
7239    }
7240  }
7241  return res;
7242};
7243const filterModelListeners = (attrs, props2) => {
7244  const res = {};
7245  for (const key in attrs) {
7246    if (!isModelListener(key) || !(key.slice(9) in props2)) {
7247      res[key] = attrs[key];
7248    }
7249  }
7250  return res;
7251};
7252function shouldUpdateComponent(prevVNode, nextVNode, optimized) {
7253  const { props: prevProps, children: prevChildren, component } = prevVNode;
7254  const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;
7255  const emits = component.emitsOptions;
7256  if (nextVNode.dirs || nextVNode.transition) {
7257    return true;
7258  }
7259  if (optimized && patchFlag >= 0) {
7260    if (patchFlag & 1024) {
7261      return true;
7262    }
7263    if (patchFlag & 16) {
7264      if (!prevProps) {
7265        return !!nextProps;
7266      }
7267      return hasPropsChanged(prevProps, nextProps, emits);
7268    } else if (patchFlag & 8) {
7269      const dynamicProps = nextVNode.dynamicProps;
7270      for (let i = 0; i < dynamicProps.length; i++) {
7271        const key = dynamicProps[i];
7272        if (nextProps[key] !== prevProps[key] && !isEmitListener(emits, key)) {
7273          return true;
7274        }
7275      }
7276    }
7277  } else {
7278    if (prevChildren || nextChildren) {
7279      if (!nextChildren || !nextChildren.$stable) {
7280        return true;
7281      }
7282    }
7283    if (prevProps === nextProps) {
7284      return false;
7285    }
7286    if (!prevProps) {
7287      return !!nextProps;
7288    }
7289    if (!nextProps) {
7290      return true;
7291    }
7292    return hasPropsChanged(prevProps, nextProps, emits);
7293  }
7294  return false;
7295}
7296function hasPropsChanged(prevProps, nextProps, emitsOptions) {
7297  const nextKeys = Object.keys(nextProps);
7298  if (nextKeys.length !== Object.keys(prevProps).length) {
7299    return true;
7300  }
7301  for (let i = 0; i < nextKeys.length; i++) {
7302    const key = nextKeys[i];
7303    if (nextProps[key] !== prevProps[key] && !isEmitListener(emitsOptions, key)) {
7304      return true;
7305    }
7306  }
7307  return false;
7308}
7309function updateHOCHostEl({ vnode, parent }, el) {
7310  while (parent) {
7311    const root2 = parent.subTree;
7312    if (root2.suspense && root2.suspense.activeBranch === vnode) {
7313      root2.el = vnode.el;
7314    }
7315    if (root2 === vnode) {
7316      (vnode = parent.vnode).el = el;
7317      parent = parent.parent;
7318    } else {
7319      break;
7320    }
7321  }
7322}
7323const isSuspense = (type) => type.__isSuspense;
7324let suspenseId = 0;
7325const SuspenseImpl = {
7326  name: "Suspense",
7327  // In order to make Suspense tree-shakable, we need to avoid importing it
7328  // directly in the renderer. The renderer checks for the __isSuspense flag
7329  // on a vnode's type and calls the `process` method, passing in renderer
7330  // internals.
7331  __isSuspense: true,
7332  process(n1, n2, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
7333    if (n1 == null) {
7334      mountSuspense(
7335        n2,
7336        container,
7337        anchor,
7338        parentComponent,
7339        parentSuspense,
7340        namespace,
7341        slotScopeIds,
7342        optimized,
7343        rendererInternals
7344      );
7345    } else {
7346      if (parentSuspense && parentSuspense.deps > 0 && !n1.suspense.isInFallback) {
7347        n2.suspense = n1.suspense;
7348        n2.suspense.vnode = n2;
7349        n2.el = n1.el;
7350        return;
7351      }
7352      patchSuspense(
7353        n1,
7354        n2,
7355        container,
7356        anchor,
7357        parentComponent,
7358        namespace,
7359        slotScopeIds,
7360        optimized,
7361        rendererInternals
7362      );
7363    }
7364  },
7365  hydrate: hydrateSuspense,
7366  normalize: normalizeSuspenseChildren
7367};
7368const Suspense = SuspenseImpl;
7369function triggerEvent(vnode, name) {
7370  const eventListener = vnode.props && vnode.props[name];
7371  if (isFunction$3(eventListener)) {
7372    eventListener();
7373  }
7374}
7375function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals) {
7376  const {
7377    p: patch,
7378    o: { createElement: createElement2 }
7379  } = rendererInternals;
7380  const hiddenContainer = createElement2("div");
7381  const suspense = vnode.suspense = createSuspenseBoundary(
7382    vnode,
7383    parentSuspense,
7384    parentComponent,
7385    container,
7386    hiddenContainer,
7387    anchor,
7388    namespace,
7389    slotScopeIds,
7390    optimized,
7391    rendererInternals
7392  );
7393  patch(
7394    null,
7395    suspense.pendingBranch = vnode.ssContent,
7396    hiddenContainer,
7397    null,
7398    parentComponent,
7399    suspense,
7400    namespace,
7401    slotScopeIds
7402  );
7403  if (suspense.deps > 0) {
7404    triggerEvent(vnode, "onPending");
7405    triggerEvent(vnode, "onFallback");
7406    patch(
7407      null,
7408      vnode.ssFallback,
7409      container,
7410      anchor,
7411      parentComponent,
7412      null,
7413      // fallback tree will not have suspense context
7414      namespace,
7415      slotScopeIds
7416    );
7417    setActiveBranch(suspense, vnode.ssFallback);
7418  } else {
7419    suspense.resolve(false, true);
7420  }
7421}
7422function patchSuspense(n1, n2, container, anchor, parentComponent, namespace, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement: createElement2 } }) {
7423  const suspense = n2.suspense = n1.suspense;
7424  suspense.vnode = n2;
7425  n2.el = n1.el;
7426  const newBranch = n2.ssContent;
7427  const newFallback = n2.ssFallback;
7428  const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;
7429  if (pendingBranch) {
7430    suspense.pendingBranch = newBranch;
7431    if (isSameVNodeType(newBranch, pendingBranch)) {
7432      patch(
7433        pendingBranch,
7434        newBranch,
7435        suspense.hiddenContainer,
7436        null,
7437        parentComponent,
7438        suspense,
7439        namespace,
7440        slotScopeIds,
7441        optimized
7442      );
7443      if (suspense.deps <= 0) {
7444        suspense.resolve();
7445      } else if (isInFallback) {
7446        if (!isHydrating) {
7447          patch(
7448            activeBranch,
7449            newFallback,
7450            container,
7451            anchor,
7452            parentComponent,
7453            null,
7454            // fallback tree will not have suspense context
7455            namespace,
7456            slotScopeIds,
7457            optimized
7458          );
vendor: 1,066 bytes, lines 7459-7499
7459          setActiveBranch(suspense, newFallback);
7460        }
7461      }
7462    } else {
7463      suspense.pendingId = suspenseId++;
7464      if (isHydrating) {
7465        suspense.isHydrating = false;
7466        suspense.activeBranch = pendingBranch;
7467      } else {
7468        unmount(pendingBranch, parentComponent, suspense);
7469      }
7470      suspense.deps = 0;
7471      suspense.effects.length = 0;
7472      suspense.hiddenContainer = createElement2("div");
7473      if (isInFallback) {
7474        patch(
7475          null,
7476          newBranch,
7477          suspense.hiddenContainer,
7478          null,
7479          parentComponent,
7480          suspense,
7481          namespace,
7482          slotScopeIds,
7483          optimized
7484        );
7485        if (suspense.deps <= 0) {
7486          suspense.resolve();
7487        } else {
7488          patch(
7489            activeBranch,
7490            newFallback,
7491            container,
7492            anchor,
7493            parentComponent,
7494            null,
7495            // fallback tree will not have suspense context
7496            namespace,
7497            slotScopeIds,
7498            optimized
7499          );
7500          setActiveBranch(suspense, newFallback);
7501        }
7502      } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
7503        patch(
7504          activeBranch,
7505          newBranch,
7506          container,
7507          anchor,
7508          parentComponent,
7509          suspense,
7510          namespace,
7511          slotScopeIds,
7512          optimized
7513        );
7514        suspense.resolve(true);
7515      } else {
7516        patch(
7517          null,
7518          newBranch,
7519          suspense.hiddenContainer,
7520          null,
7521          parentComponent,
7522          suspense,
7523          namespace,
7524          slotScopeIds,
7525          optimized
7526        );
7527        if (suspense.deps <= 0) {
7528          suspense.resolve();
7529        }
7530      }
7531    }
7532  } else {
7533    if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {
7534      patch(
7535        activeBranch,
7536        newBranch,
7537        container,
7538        anchor,
7539        parentComponent,
7540        suspense,
7541        namespace,
7542        slotScopeIds,
7543        optimized
7544      );
7545      setActiveBranch(suspense, newBranch);
7546    } else {
7547      triggerEvent(n2, "onPending");
7548      suspense.pendingBranch = newBranch;
7549      if (newBranch.shapeFlag & 512) {
7550        suspense.pendingId = newBranch.component.suspenseId;
7551      } else {
7552        suspense.pendingId = suspenseId++;
7553      }
7554      patch(
7555        null,
7556        newBranch,
7557        suspense.hiddenContainer,
7558        null,
7559        parentComponent,
7560        suspense,
7561        namespace,
7562        slotScopeIds,
7563        optimized
7564      );
7565      if (suspense.deps <= 0) {
7566        suspense.resolve();
7567      } else {
7568        const { timeout, pendingId } = suspense;
7569        if (timeout > 0) {
7570          setTimeout(() => {
7571            if (suspense.pendingId === pendingId) {
7572              suspense.fallback(newFallback);
7573            }
7574          }, timeout);
7575        } else if (timeout === 0) {
7576          suspense.fallback(newFallback);
7577        }
7578      }
7579    }
7580  }
7581}
7582function createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, namespace, slotScopeIds, optimized, rendererInternals, isHydrating = false) {
7583  const {
7584    p: patch,
7585    m: move,
7586    um: unmount,
7587    n: next,
7588    o: { parentNode, remove: remove2 }
7589  } = rendererInternals;
7590  let parentSuspenseId;
7591  const isSuspensible = isVNodeSuspensible(vnode);
7592  if (isSuspensible) {
7593    if (parentSuspense && parentSuspense.pendingBranch) {
7594      parentSuspenseId = parentSuspense.pendingId;
7595      parentSuspense.deps++;
7596    }
7597  }
7598  const timeout = vnode.props ? toNumber$2(vnode.props.timeout) : void 0;
7599  const initialAnchor = anchor;
7600  const suspense = {
7601    vnode,
7602    parent: parentSuspense,
7603    parentComponent,
7604    namespace,
7605    container,
7606    hiddenContainer,
7607    deps: 0,
7608    pendingId: suspenseId++,
7609    timeout: typeof timeout === "number" ? timeout : -1,
7610    activeBranch: null,
7611    pendingBranch: null,
7612    isInFallback: !isHydrating,
7613    isHydrating,
7614    isUnmounted: false,
7615    effects: [],
7616    resolve(resume = false, sync = false) {
7617      const {
7618        vnode: vnode2,
7619        activeBranch,
7620        pendingBranch,
7621        pendingId,
7622        effects,
7623        parentComponent: parentComponent2,
7624        container: container2
7625      } = suspense;
7626      let delayEnter = false;
7627      if (suspense.isHydrating) {
7628        suspense.isHydrating = false;
7629      } else if (!resume) {
7630        delayEnter = activeBranch && pendingBranch.transition && pendingBranch.transition.mode === "out-in";
7631        if (delayEnter) {
7632          activeBranch.transition.afterLeave = () => {
7633            if (pendingId === suspense.pendingId) {
7634              move(
7635                pendingBranch,
7636                container2,
7637                anchor === initialAnchor ? next(activeBranch) : anchor,
7638                0
7639              );
7640              queuePostFlushCb(effects);
7641            }
7642          };
7643        }
7644        if (activeBranch) {
7645          if (parentNode(activeBranch.el) === container2) {
7646            anchor = next(activeBranch);
7647          }
7648          unmount(activeBranch, parentComponent2, suspense, true);
7649        }
7650        if (!delayEnter) {
7651          move(pendingBranch, container2, anchor, 0);
7652        }
7653      }
7654      setActiveBranch(suspense, pendingBranch);
7655      suspense.pendingBranch = null;
7656      suspense.isInFallback = false;
7657      let parent = suspense.parent;
7658      let hasUnresolvedAncestor = false;
7659      while (parent) {
7660        if (parent.pendingBranch) {
7661          parent.effects.push(...effects);
7662          hasUnresolvedAncestor = true;
7663          break;
7664        }
7665        parent = parent.parent;
7666      }
7667      if (!hasUnresolvedAncestor && !delayEnter) {
7668        queuePostFlushCb(effects);
7669      }
7670      suspense.effects = [];
7671      if (isSuspensible) {
7672        if (parentSuspense && parentSuspense.pendingBranch && parentSuspenseId === parentSuspense.pendingId) {
7673          parentSuspense.deps--;
7674          if (parentSuspense.deps === 0 && !sync) {
7675            parentSuspense.resolve();
7676          }
7677        }
7678      }
7679      triggerEvent(vnode2, "onResolve");
7680    },
7681    fallback(fallbackVNode) {
7682      if (!suspense.pendingBranch) {
7683        return;
7684      }
7685      const { vnode: vnode2, activeBranch, parentComponent: parentComponent2, container: container2, namespace: namespace2 } = suspense;
7686      triggerEvent(vnode2, "onFallback");
7687      const anchor2 = next(activeBranch);
7688      const mountFallback = () => {
7689        if (!suspense.isInFallback) {
7690          return;
7691        }
7692        patch(
7693          null,
7694          fallbackVNode,
7695          container2,
7696          anchor2,
7697          parentComponent2,
7698          null,
7699          // fallback tree will not have suspense context
7700          namespace2,
7701          slotScopeIds,
7702          optimized
7703        );
7704        setActiveBranch(suspense, fallbackVNode);
7705      };
7706      const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === "out-in";
7707      if (delayEnter) {
7708        activeBranch.transition.afterLeave = mountFallback;
7709      }
7710      suspense.isInFallback = true;
7711      unmount(
7712        activeBranch,
7713        parentComponent2,
7714        null,
7715        // no suspense so unmount hooks fire now
7716        true
7717        // shouldRemove
7718      );
7719      if (!delayEnter) {
7720        mountFallback();
7721      }
7722    },
vendor: 11,200 bytes, lines 7723-8091
7723    move(container2, anchor2, type) {
7724      suspense.activeBranch && move(suspense.activeBranch, container2, anchor2, type);
7725      suspense.container = container2;
7726    },
7727    next() {
7728      return suspense.activeBranch && next(suspense.activeBranch);
7729    },
7730    registerDep(instance, setupRenderEffect, optimized2) {
7731      const isInPendingSuspense = !!suspense.pendingBranch;
7732      if (isInPendingSuspense) {
7733        suspense.deps++;
7734      }
7735      const hydratedEl = instance.vnode.el;
7736      instance.asyncDep.catch((err) => {
7737        handleError(err, instance, 0);
7738      }).then((asyncSetupResult) => {
7739        if (instance.isUnmounted || suspense.isUnmounted || suspense.pendingId !== instance.suspenseId) {
7740          return;
7741        }
7742        instance.asyncResolved = true;
7743        const { vnode: vnode2 } = instance;
7744        handleSetupResult(instance, asyncSetupResult, false);
7745        if (hydratedEl) {
7746          vnode2.el = hydratedEl;
7747        }
7748        const placeholder = !hydratedEl && instance.subTree.el;
7749        setupRenderEffect(
7750          instance,
7751          vnode2,
7752          // component may have been moved before resolve.
7753          // if this is not a hydration, instance.subTree will be the comment
7754          // placeholder.
7755          parentNode(hydratedEl || instance.subTree.el),
7756          // anchor will not be used if this is hydration, so only need to
7757          // consider the comment placeholder case.
7758          hydratedEl ? null : next(instance.subTree),
7759          suspense,
7760          namespace,
7761          optimized2
7762        );
7763        if (placeholder) {
7764          remove2(placeholder);
7765        }
7766        updateHOCHostEl(instance, vnode2.el);
7767        if (isInPendingSuspense && --suspense.deps === 0) {
7768          suspense.resolve();
7769        }
7770      });
7771    },
7772    unmount(parentSuspense2, doRemove) {
7773      suspense.isUnmounted = true;
7774      if (suspense.activeBranch) {
7775        unmount(
7776          suspense.activeBranch,
7777          parentComponent,
7778          parentSuspense2,
7779          doRemove
7780        );
7781      }
7782      if (suspense.pendingBranch) {
7783        unmount(
7784          suspense.pendingBranch,
7785          parentComponent,
7786          parentSuspense2,
7787          doRemove
7788        );
7789      }
7790    }
7791  };
7792  return suspense;
7793}
7794function hydrateSuspense(node, vnode, parentComponent, parentSuspense, namespace, slotScopeIds, optimized, rendererInternals, hydrateNode) {
7795  const suspense = vnode.suspense = createSuspenseBoundary(
7796    vnode,
7797    parentSuspense,
7798    parentComponent,
7799    node.parentNode,
7800    // eslint-disable-next-line no-restricted-globals
7801    document.createElement("div"),
7802    null,
7803    namespace,
7804    slotScopeIds,
7805    optimized,
7806    rendererInternals,
7807    true
7808  );
7809  const result = hydrateNode(
7810    node,
7811    suspense.pendingBranch = vnode.ssContent,
7812    parentComponent,
7813    suspense,
7814    slotScopeIds,
7815    optimized
7816  );
7817  if (suspense.deps === 0) {
7818    suspense.resolve(false, true);
7819  }
7820  return result;
7821}
7822function normalizeSuspenseChildren(vnode) {
7823  const { shapeFlag, children } = vnode;
7824  const isSlotChildren = shapeFlag & 32;
7825  vnode.ssContent = normalizeSuspenseSlot(
7826    isSlotChildren ? children.default : children
7827  );
7828  vnode.ssFallback = isSlotChildren ? normalizeSuspenseSlot(children.fallback) : createVNode(Comment);
7829}
7830function normalizeSuspenseSlot(s) {
7831  let block;
7832  if (isFunction$3(s)) {
7833    const trackBlock = isBlockTreeEnabled && s._c;
7834    if (trackBlock) {
7835      s._d = false;
7836      openBlock();
7837    }
7838    s = s();
7839    if (trackBlock) {
7840      s._d = true;
7841      block = currentBlock;
7842      closeBlock();
7843    }
7844  }
7845  if (isArray$3(s)) {
7846    const singleChild = filterSingleRoot(s);
7847    s = singleChild;
7848  }
7849  s = normalizeVNode(s);
7850  if (block && !s.dynamicChildren) {
7851    s.dynamicChildren = block.filter((c) => c !== s);
7852  }
7853  return s;
7854}
7855function queueEffectWithSuspense(fn, suspense) {
7856  if (suspense && suspense.pendingBranch) {
7857    if (isArray$3(fn)) {
7858      suspense.effects.push(...fn);
7859    } else {
7860      suspense.effects.push(fn);
7861    }
7862  } else {
7863    queuePostFlushCb(fn);
7864  }
7865}
7866function setActiveBranch(suspense, branch) {
7867  suspense.activeBranch = branch;
7868  const { vnode, parentComponent } = suspense;
7869  let el = branch.el;
7870  while (!el && branch.component) {
7871    branch = branch.component.subTree;
7872    el = branch.el;
7873  }
7874  vnode.el = el;
7875  if (parentComponent && parentComponent.subTree === vnode) {
7876    parentComponent.vnode.el = el;
7877    updateHOCHostEl(parentComponent, el);
7878  }
7879}
7880function isVNodeSuspensible(vnode) {
7881  const suspensible = vnode.props && vnode.props.suspensible;
7882  return suspensible != null && suspensible !== false;
7883}
7884const Fragment = Symbol.for("v-fgt");
7885const Text = Symbol.for("v-txt");
7886const Comment = Symbol.for("v-cmt");
7887const Static = Symbol.for("v-stc");
7888const blockStack = [];
7889let currentBlock = null;
7890function openBlock(disableTracking = false) {
7891  blockStack.push(currentBlock = disableTracking ? null : []);
7892}
7893function closeBlock() {
7894  blockStack.pop();
7895  currentBlock = blockStack[blockStack.length - 1] || null;
7896}
7897let isBlockTreeEnabled = 1;
7898function setBlockTracking(value, inVOnce = false) {
7899  isBlockTreeEnabled += value;
7900  if (value < 0 && currentBlock && inVOnce) {
7901    currentBlock.hasOnce = true;
7902  }
7903}
7904function setupBlock(vnode) {
7905  vnode.dynamicChildren = isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;
7906  closeBlock();
7907  if (isBlockTreeEnabled > 0 && currentBlock) {
7908    currentBlock.push(vnode);
7909  }
7910  return vnode;
7911}
7912function createElementBlock(type, props2, children, patchFlag, dynamicProps, shapeFlag) {
7913  return setupBlock(
7914    createBaseVNode(
7915      type,
7916      props2,
7917      children,
7918      patchFlag,
7919      dynamicProps,
7920      shapeFlag,
7921      true
7922    )
7923  );
7924}
7925function createBlock(type, props2, children, patchFlag, dynamicProps) {
7926  return setupBlock(
7927    createVNode(
7928      type,
7929      props2,
7930      children,
7931      patchFlag,
7932      dynamicProps,
7933      true
7934    )
7935  );
7936}
7937function isVNode$1(value) {
7938  return value ? value.__v_isVNode === true : false;
7939}
7940function isSameVNodeType(n1, n2) {
7941  return n1.type === n2.type && n1.key === n2.key;
7942}
7943function transformVNodeArgs(transformer) {
7944}
7945const normalizeKey = ({ key }) => key != null ? key : null;
7946const normalizeRef = ({
7947  ref: ref3,
7948  ref_key,
7949  ref_for
7950}) => {
7951  if (typeof ref3 === "number") {
7952    ref3 = "" + ref3;
7953  }
7954  return ref3 != null ? isString$3(ref3) || isRef(ref3) || isFunction$3(ref3) ? { i: currentRenderingInstance, r: ref3, k: ref_key, f: !!ref_for } : ref3 : null;
7955};
7956function createBaseVNode(type, props2 = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1, isBlockNode = false, needFullChildrenNormalization = false) {
7957  const vnode = {
7958    __v_isVNode: true,
7959    __v_skip: true,
7960    type,
7961    props: props2,
7962    key: props2 && normalizeKey(props2),
7963    ref: props2 && normalizeRef(props2),
7964    scopeId: currentScopeId,
7965    slotScopeIds: null,
7966    children,
7967    component: null,
7968    suspense: null,
7969    ssContent: null,
7970    ssFallback: null,
7971    dirs: null,
7972    transition: null,
7973    el: null,
7974    anchor: null,
7975    target: null,
7976    targetStart: null,
7977    targetAnchor: null,
7978    staticCount: 0,
7979    shapeFlag,
7980    patchFlag,
7981    dynamicProps,
7982    dynamicChildren: null,
7983    appContext: null,
7984    ctx: currentRenderingInstance
7985  };
7986  if (needFullChildrenNormalization) {
7987    normalizeChildren(vnode, children);
7988    if (shapeFlag & 128) {
7989      type.normalize(vnode);
7990    }
7991  } else if (children) {
7992    vnode.shapeFlag |= isString$3(children) ? 8 : 16;
7993  }
7994  if (isBlockTreeEnabled > 0 && // avoid a block node from tracking itself
7995  !isBlockNode && // has current parent block
7996  currentBlock && // presence of a patch flag indicates this node needs patching on updates.
7997  // component nodes also should always be patched, because even if the
7998  // component doesn't need to update, it needs to persist the instance on to
7999  // the next vnode so that it can be properly unmounted later.
8000  (vnode.patchFlag > 0 || shapeFlag & 6) && // the EVENTS flag is only for hydration and if it is the only flag, the
8001  // vnode should not be considered dynamic due to handler caching.
8002  vnode.patchFlag !== 32) {
8003    currentBlock.push(vnode);
8004  }
8005  return vnode;
8006}
8007const createVNode = _createVNode;
8008function _createVNode(type, props2 = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {
8009  if (!type || type === NULL_DYNAMIC_COMPONENT) {
8010    type = Comment;
8011  }
8012  if (isVNode$1(type)) {
8013    const cloned = cloneVNode(
8014      type,
8015      props2,
8016      true
8017      /* mergeRef: true */
8018    );
8019    if (children) {
8020      normalizeChildren(cloned, children);
8021    }
8022    if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {
8023      if (cloned.shapeFlag & 6) {
8024        currentBlock[currentBlock.indexOf(type)] = cloned;
8025      } else {
8026        currentBlock.push(cloned);
8027      }
8028    }
8029    cloned.patchFlag = -2;
8030    return cloned;
8031  }
8032  if (isClassComponent(type)) {
8033    type = type.__vccOpts;
8034  }
8035  if (props2) {
8036    props2 = guardReactiveProps(props2);
8037    let { class: klass, style } = props2;
8038    if (klass && !isString$3(klass)) {
8039      props2.class = normalizeClass(klass);
8040    }
8041    if (isObject$9(style)) {
8042      if (isProxy(style) && !isArray$3(style)) {
8043        style = extend$5({}, style);
8044      }
8045      props2.style = normalizeStyle(style);
8046    }
8047  }
8048  const shapeFlag = isString$3(type) ? 1 : isSuspense(type) ? 128 : isTeleport(type) ? 64 : isObject$9(type) ? 4 : isFunction$3(type) ? 2 : 0;
8049  return createBaseVNode(
8050    type,
8051    props2,
8052    children,
8053    patchFlag,
8054    dynamicProps,
8055    shapeFlag,
8056    isBlockNode,
8057    true
8058  );
8059}
8060function guardReactiveProps(props2) {
8061  if (!props2) return null;
8062  return isProxy(props2) || isInternalObject(props2) ? extend$5({}, props2) : props2;
8063}
8064function cloneVNode(vnode, extraProps, mergeRef = false, cloneTransition = false) {
8065  const { props: props2, ref: ref3, patchFlag, children, transition: transition2 } = vnode;
8066  const mergedProps = extraProps ? mergeProps(props2 || {}, extraProps) : props2;
8067  const cloned = {
8068    __v_isVNode: true,
8069    __v_skip: true,
8070    type: vnode.type,
8071    props: mergedProps,
8072    key: mergedProps && normalizeKey(mergedProps),
8073    ref: extraProps && extraProps.ref ? (
8074      // #2078 in the case of <component :is="vnode" ref="extra"/>
8075      // if the vnode itself already has a ref, cloneVNode will need to merge
8076      // the refs so the single vnode can be set on multiple refs
8077      mergeRef && ref3 ? isArray$3(ref3) ? ref3.concat(normalizeRef(extraProps)) : [ref3, normalizeRef(extraProps)] : normalizeRef(extraProps)
8078    ) : ref3,
8079    scopeId: vnode.scopeId,
8080    slotScopeIds: vnode.slotScopeIds,
8081    children,
8082    target: vnode.target,
8083    targetStart: vnode.targetStart,
8084    targetAnchor: vnode.targetAnchor,
8085    staticCount: vnode.staticCount,
8086    shapeFlag: vnode.shapeFlag,
8087    // if the vnode is cloned with extra props, we can no longer assume its
8088    // existing patch flag to be reliable and need to add the FULL_PROPS flag.
8089    // note: preserve flag for fragments since they use the flag for children
8090    // fast paths only.
8091    patchFlag: extraProps && vnode.type !== Fragment ? patchFlag === -1 ? 16 
vendor: 4,098 bytes, lines 8091-8224
8091: patchFlag | 16 : patchFlag,
8092    dynamicProps: vnode.dynamicProps,
8093    dynamicChildren: vnode.dynamicChildren,
8094    appContext: vnode.appContext,
8095    dirs: vnode.dirs,
8096    transition: transition2,
8097    // These should technically only be non-null on mounted VNodes. However,
8098    // they *should* be copied for kept-alive vnodes. So we just always copy
8099    // them since them being non-null during a mount doesn't affect the logic as
8100    // they will simply be overwritten.
8101    component: vnode.component,
8102    suspense: vnode.suspense,
8103    ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),
8104    ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),
8105    el: vnode.el,
8106    anchor: vnode.anchor,
8107    ctx: vnode.ctx,
8108    ce: vnode.ce
8109  };
8110  if (transition2 && cloneTransition) {
8111    setTransitionHooks(
8112      cloned,
8113      transition2.clone(cloned)
8114    );
8115  }
8116  return cloned;
8117}
8118function createTextVNode(text = " ", flag = 0) {
8119  return createVNode(Text, null, text, flag);
8120}
8121function createStaticVNode(content, numberOfNodes) {
8122  const vnode = createVNode(Static, null, content);
8123  vnode.staticCount = numberOfNodes;
8124  return vnode;
8125}
8126function createCommentVNode(text = "", asBlock = false) {
8127  return asBlock ? (openBlock(), createBlock(Comment, null, text)) : createVNode(Comment, null, text);
8128}
8129function normalizeVNode(child) {
8130  if (child == null || typeof child === "boolean") {
8131    return createVNode(Comment);
8132  } else if (isArray$3(child)) {
8133    return createVNode(
8134      Fragment,
8135      null,
8136      // #3666, avoid reference pollution when reusing vnode
8137      child.slice()
8138    );
8139  } else if (isVNode$1(child)) {
8140    return cloneIfMounted(child);
8141  } else {
8142    return createVNode(Text, null, String(child));
8143  }
8144}
8145function cloneIfMounted(child) {
8146  return child.el === null && child.patchFlag !== -1 || child.memo ? child : cloneVNode(child);
8147}
8148function normalizeChildren(vnode, children) {
8149  let type = 0;
8150  const { shapeFlag } = vnode;
8151  if (children == null) {
8152    children = null;
8153  } else if (isArray$3(children)) {
8154    type = 16;
8155  } else if (typeof children === "object") {
8156    if (shapeFlag & (1 | 64)) {
8157      const slot = children.default;
8158      if (slot) {
8159        slot._c && (slot._d = false);
8160        normalizeChildren(vnode, slot());
8161        slot._c && (slot._d = true);
8162      }
8163      return;
8164    } else {
8165      type = 32;
8166      const slotFlag = children._;
8167      if (!slotFlag && !isInternalObject(children)) {
8168        children._ctx = currentRenderingInstance;
8169      } else if (slotFlag === 3 && currentRenderingInstance) {
8170        if (currentRenderingInstance.slots._ === 1) {
8171          children._ = 1;
8172        } else {
8173          children._ = 2;
8174          vnode.patchFlag |= 1024;
8175        }
8176      }
8177    }
8178  } else if (isFunction$3(children)) {
8179    children = { default: children, _ctx: currentRenderingInstance };
8180    type = 32;
8181  } else {
8182    children = String(children);
8183    if (shapeFlag & 64) {
8184      type = 16;
8185      children = [createTextVNode(children)];
8186    } else {
8187      type = 8;
8188    }
8189  }
8190  vnode.children = children;
8191  vnode.shapeFlag |= type;
8192}
8193function mergeProps(...args) {
8194  const ret = {};
8195  for (let i = 0; i < args.length; i++) {
8196    const toMerge = args[i];
8197    for (const key in toMerge) {
8198      if (key === "class") {
8199        if (ret.class !== toMerge.class) {
8200          ret.class = normalizeClass([ret.class, toMerge.class]);
8201        }
8202      } else if (key === "style") {
8203        ret.style = normalizeStyle([ret.style, toMerge.style]);
8204      } else if (isOn(key)) {
8205        const existing = ret[key];
8206        const incoming = toMerge[key];
8207        if (incoming && existing !== incoming && !(isArray$3(existing) && existing.includes(incoming))) {
8208          ret[key] = existing ? [].concat(existing, incoming) : incoming;
8209        }
8210      } else if (key !== "") {
8211        ret[key] = toMerge[key];
8212      }
8213    }
8214  }
8215  return ret;
8216}
8217function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {
8218  callWithAsyncErrorHandling(hook, instance, 7, [
8219    vnode,
8220    prevVNode
8221  ]);
8222}
8223const emptyAppContext = createAppContext();
8224let uid = 0;
vendor: 5,170 bytes, lines 8225-8408
8225function createComponentInstance(vnode, parent, suspense) {
8226  const type = vnode.type;
8227  const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;
8228  const instance = {
8229    uid: uid++,
8230    vnode,
8231    type,
8232    parent,
8233    appContext,
8234    root: null,
8235    // to be immediately set
8236    next: null,
8237    subTree: null,
8238    // will be set synchronously right after creation
8239    effect: null,
8240    update: null,
8241    // will be set synchronously right after creation
8242    job: null,
8243    scope: new EffectScope(
8244      true
8245      /* detached */
8246    ),
8247    render: null,
8248    proxy: null,
8249    exposed: null,
8250    exposeProxy: null,
8251    withProxy: null,
8252    provides: parent ? parent.provides : Object.create(appContext.provides),
8253    ids: parent ? parent.ids : ["", 0, 0],
8254    accessCache: null,
8255    renderCache: [],
8256    // local resolved assets
8257    components: null,
8258    directives: null,
8259    // resolved props and emits options
8260    propsOptions: normalizePropsOptions(type, appContext),
8261    emitsOptions: normalizeEmitsOptions(type, appContext),
8262    // emit
8263    emit: null,
8264    // to be set immediately
8265    emitted: null,
8266    // props default value
8267    propsDefaults: EMPTY_OBJ,
8268    // inheritAttrs
8269    inheritAttrs: type.inheritAttrs,
8270    // state
8271    ctx: EMPTY_OBJ,
8272    data: EMPTY_OBJ,
8273    props: EMPTY_OBJ,
8274    attrs: EMPTY_OBJ,
8275    slots: EMPTY_OBJ,
8276    refs: EMPTY_OBJ,
8277    setupState: EMPTY_OBJ,
8278    setupContext: null,
8279    // suspense related
8280    suspense,
8281    suspenseId: suspense ? suspense.pendingId : 0,
8282    asyncDep: null,
8283    asyncResolved: false,
8284    // lifecycle hooks
8285    // not using enums here because it results in computed properties
8286    isMounted: false,
8287    isUnmounted: false,
8288    isDeactivated: false,
8289    bc: null,
8290    c: null,
8291    bm: null,
8292    m: null,
8293    bu: null,
8294    u: null,
8295    um: null,
8296    bum: null,
8297    da: null,
8298    a: null,
8299    rtg: null,
8300    rtc: null,
8301    ec: null,
8302    sp: null
8303  };
8304  {
8305    instance.ctx = { _: instance };
8306  }
8307  instance.root = parent ? parent.root : instance;
8308  instance.emit = emit.bind(null, instance);
8309  if (vnode.ce) {
8310    vnode.ce(instance);
8311  }
8312  return instance;
8313}
8314let currentInstance = null;
8315const getCurrentInstance = () => currentInstance || currentRenderingInstance;
8316let internalSetCurrentInstance;
8317let setInSSRSetupState;
8318{
8319  const g = getGlobalThis$2();
8320  const registerGlobalSetter = (key, setter) => {
8321    let setters;
8322    if (!(setters = g[key])) setters = g[key] = [];
8323    setters.push(setter);
8324    return (v) => {
8325      if (setters.length > 1) setters.forEach((set) => set(v));
8326      else setters[0](v);
8327    };
8328  };
8329  internalSetCurrentInstance = registerGlobalSetter(
8330    `__VUE_INSTANCE_SETTERS__`,
8331    (v) => currentInstance = v
8332  );
8333  setInSSRSetupState = registerGlobalSetter(
8334    `__VUE_SSR_SETTERS__`,
8335    (v) => isInSSRComponentSetup = v
8336  );
8337}
8338const setCurrentInstance = (instance) => {
8339  const prev = currentInstance;
8340  internalSetCurrentInstance(instance);
8341  instance.scope.on();
8342  return () => {
8343    instance.scope.off();
8344    internalSetCurrentInstance(prev);
8345  };
8346};
8347const unsetCurrentInstance = () => {
8348  currentInstance && currentInstance.scope.off();
8349  internalSetCurrentInstance(null);
8350};
8351function isStatefulComponent(instance) {
8352  return instance.vnode.shapeFlag & 4;
8353}
8354let isInSSRComponentSetup = false;
8355function setupComponent(instance, isSSR = false, optimized = false) {
8356  isSSR && setInSSRSetupState(isSSR);
8357  const { props: props2, children } = instance.vnode;
8358  const isStateful = isStatefulComponent(instance);
8359  initProps(instance, props2, isStateful, isSSR);
8360  initSlots(instance, children, optimized || isSSR);
8361  const setupResult = isStateful ? setupStatefulComponent(instance, isSSR) : void 0;
8362  isSSR && setInSSRSetupState(false);
8363  return setupResult;
8364}
8365function setupStatefulComponent(instance, isSSR) {
8366  const Component = instance.type;
8367  instance.accessCache = /* @__PURE__ */ Object.create(null);
8368  instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers);
8369  const { setup } = Component;
8370  if (setup) {
8371    pauseTracking();
8372    const setupContext = instance.setupContext = setup.length > 1 ? createSetupContext(instance) : null;
8373    const reset2 = setCurrentInstance(instance);
8374    const setupResult = callWithErrorHandling(
8375      setup,
8376      instance,
8377      0,
8378      [
8379        instance.props,
8380        setupContext
8381      ]
8382    );
8383    const isAsyncSetup = isPromise$2(setupResult);
8384    resetTracking();
8385    reset2();
8386    if ((isAsyncSetup || instance.sp) && !isAsyncWrapper(instance)) {
8387      markAsyncBoundary(instance);
8388    }
8389    if (isAsyncSetup) {
8390      setupResult.then(unsetCurrentInstance, unsetCurrentInstance);
8391      if (isSSR) {
8392        return setupResult.then((resolvedResult) => {
8393          handleSetupResult(instance, resolvedResult, isSSR);
8394        }).catch((e) => {
8395          handleError(e, instance, 0);
8396        });
8397      } else {
8398        instance.asyncDep = setupResult;
8399      }
8400    } else {
8401      handleSetupResult(instance, setupResult, isSSR);
8402    }
8403  } else {
8404    finishComponentSetup(instance, isSSR);
8405  }
8406}
8407function handleSetupResult(instance, setupResult, isSSR) {
8408  if (isFunction$3(setupResult)) {
8409    if (instance.type.__ssrInlineRender) {
8410      instance.ssrRender = setupResult;
8411    } else {
8412      instance.render = setupResult;
8413    }
8414  } else if (isObject$9(setupResult)) {
8415    instance.setupState = proxyRefs(setupResult);
8416  } else ;
8417  finishComponentSetup(instance, isSSR);
8418}
8419let compile$2;
8420let installWithProxy;
8421function registerRuntimeCompiler(_compile) {
8422  compile$2 = _compile;
8423  installWithProxy = (i) => {
8424    if (i.render._rc) {
8425      i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);
8426    }
8427  };
8428}
8429const isRuntimeOnly = () => !compile$2;
8430function finishComponentSetup(instance, isSSR, skipOptions) {
8431  const Component = instance.type;
8432  if (!instance.render) {
8433    if (!isSSR && compile$2 && !Component.render) {
8434      const template = Component.template || resolveMergedOptions(instance).template;
8435      if (template) {
8436        const { isCustomElement, compilerOptions } = instance.appContext.config;
8437        const { delimiters, compilerOptions: componentCompilerOptions } = Component;
8438        const finalCompilerOptions = extend$5(
8439          extend$5(
8440            {
8441              isCustomElement,
8442              delimiters
8443            },
8444            compilerOptions
8445          ),
8446          componentCompilerOptions
8447        );
8448        Component.render = compile$2(template, finalCompilerOptions);
8449      }
8450    }
8451    instance.render = Component.render || NOOP;
8452    if (installWithProxy) {
8453      installWithProxy(instance);
8454    }
8455  }
8456  {
8457    const reset2 = setCurrentInstance(instance);
8458    pauseTracking();
8459    try {
8460      applyOptions(instance);
8461    } finally {
8462      resetTracking();
8463      reset2();
8464    }
8465  }
8466}
8467const attrsProxyHandlers = {
8468  get(target, key) {
8469    track(target, "get", "");
8470    return target[key];
8471  }
8472};
8473function createSetupContext(instance) {
8474  const expose = (exposed) => {
8475    instance.exposed = exposed || {};
8476  };
8477  {
8478    return {
8479      attrs: new Proxy(instance.attrs, attrsProxyHandlers),
8480      slots: instance.slots,
8481      emit: instance.emit,
8482      expose
8483    };
8484  }
8485}
8486function getComponentPublicInstance(instance) {
8487  if (instance.exposed) {
8488    return instance.exposeProxy || (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {
8489      get(target, key) {
8490        if (key in target) {
8491          return target[key];
8492        } else if (key in publicPropertiesMap) {
8493          return publicPropertiesMap[key](instance);
8494        }
8495      },
8496      has(target, key) {
8497        return key in target || key in publicPropertiesMap;
8498      }
8499    }));
8500  } else {
8501    return instance.proxy;
8502  }
8503}
8504const classifyRE = /(?:^|[-_])(\w)/g;
8505const classify = (str) => str.replace(classifyRE, (c) => c.toUpperCase()).replace(/[-_]/g, "");
8506function getComponentName(Component, includeInferred = true) {
8507  return isFunction$3(Component) ? Component.displayName || Component.name : Component.name || includeInferred && Component.__name;
8508}
8509function formatComponentName(instance, Component, isRoot = false) {
8510  let name = getComponentName(Component);
8511  if (!name && Component.__file) {
8512    const match = Component.__file.match(/([^/\\]+)\.\w+$/);
8513    if (match) {
8514      name = match[1];
8515    }
8516  }
8517  if (!name && instance && instance.parent) {
8518    const inferFromRegistry = (registry) => {
8519      for (const key in registry) {
8520        if (registry[key] === Component) {
8521          return key;
8522        }
8523      }
8524    };
8525    name = inferFromRegistry(
8526      instance.components || instance.parent.type.components
8527    ) || inferFromRegistry(instance.appContext.components);
8528  }
8529  return name ? classify(name) : isRoot ? `App` : `Anonymous`;
8530}
8531function isClassComponent(value) {
8532  return isFunction$3(value) && "__vccOpts" in value;
8533}
8534const computed = (getterOrOptions, debugOptions) => {
8535  const c = computed$1(getterOrOptions, debugOptions, isInSSRComponentSetup);
8536  return c;
8537};
8538function h(type, propsOrChildren, children) {
8539  const l = arguments.length;
8540  if (l === 2) {
8541    if (isObject$9(propsOrChildren) && !isArray$3(propsOrChildren)) {
8542      if (isVNode$1(propsOrChildren)) {
8543        return createVNode(type, null, [propsOrChildren]);
8544      }
8545      return createVNode(type, propsOrChildren);
8546    } else {
8547      return createVNode(type, null, propsOrChildren);
8548    }
8549  } else {
8550    if (l > 3) {
8551      children = Array.prototype.slice.call(arguments, 2);
8552    } else if (l === 3 && isVNode$1(children)) {
8553      children = [children];
8554    }
8555    return createVNode(type, propsOrChildren, children);
8556  }
8557}
8558function initCustomFormatter() {
8559  {
8560    return;
8561  }
8562}
8563function withMemo(memo, render2, cache2, index2) {
vendor: 1,181 bytes, lines 8564-8612
8564  const cached = cache2[index2];
8565  if (cached && isMemoSame(cached, memo)) {
8566    return cached;
8567  }
8568  const ret = render2();
8569  ret.memo = memo.slice();
8570  ret.cacheIndex = index2;
8571  return cache2[index2] = ret;
8572}
8573function isMemoSame(cached, memo) {
8574  const prev = cached.memo;
8575  if (prev.length != memo.length) {
8576    return false;
8577  }
8578  for (let i = 0; i < prev.length; i++) {
8579    if (hasChanged(prev[i], memo[i])) {
8580      return false;
8581    }
8582  }
8583  if (isBlockTreeEnabled > 0 && currentBlock) {
8584    currentBlock.push(cached);
8585  }
8586  return true;
8587}
8588const version = "3.5.16";
8589const warn$2 = NOOP;
8590const ErrorTypeStrings = ErrorTypeStrings$1;
8591const devtools$2 = devtools$1;
8592const setDevtoolsHook = setDevtoolsHook$1;
8593const _ssrUtils = {
8594  createComponentInstance,
8595  setupComponent,
8596  renderComponentRoot,
8597  setCurrentRenderingInstance,
8598  isVNode: isVNode$1,
8599  normalizeVNode,
8600  getComponentPublicInstance,
8601  ensureValidVNode,
8602  pushWarningContext,
8603  popWarningContext
8604};
8605const ssrUtils = _ssrUtils;
8606const resolveFilter = null;
8607const compatUtils = null;
8608const DeprecationTypes = null;
8609/**
8610* @vue/runtime-dom v3.5.16
8611* (c) 2018-present Yuxi (Evan) You and Vue contributors
8612* @license MIT
vendor: 5,408 bytes, lines 8613-8781
8613**/
8614let policy = void 0;
8615const tt = typeof window !== "undefined" && window.trustedTypes;
8616if (tt) {
8617  try {
8618    policy = /* @__PURE__ */ tt.createPolicy("vue", {
8619      createHTML: (val) => val
8620    });
8621  } catch (e) {
8622  }
8623}
8624const unsafeToTrustedHTML = policy ? (val) => policy.createHTML(val) : (val) => val;
8625const svgNS = "http://www.w3.org/2000/svg";
8626const mathmlNS = "http://www.w3.org/1998/Math/MathML";
8627const doc = typeof document !== "undefined" ? document : null;
8628const templateContainer = doc && /* @__PURE__ */ doc.createElement("template");
8629const nodeOps = {
8630  insert: (child, parent, anchor) => {
8631    parent.insertBefore(child, anchor || null);
8632  },
8633  remove: (child) => {
8634    const parent = child.parentNode;
8635    if (parent) {
8636      parent.removeChild(child);
8637    }
8638  },
8639  createElement: (tag, namespace, is, props2) => {
8640    const el = namespace === "svg" ? doc.createElementNS(svgNS, tag) : namespace === "mathml" ? doc.createElementNS(mathmlNS, tag) : is ? doc.createElement(tag, { is }) : doc.createElement(tag);
8641    if (tag === "select" && props2 && props2.multiple != null) {
8642      el.setAttribute("multiple", props2.multiple);
8643    }
8644    return el;
8645  },
8646  createText: (text) => doc.createTextNode(text),
8647  createComment: (text) => doc.createComment(text),
8648  setText: (node, text) => {
8649    node.nodeValue = text;
8650  },
8651  setElementText: (el, text) => {
8652    el.textContent = text;
8653  },
8654  parentNode: (node) => node.parentNode,
8655  nextSibling: (node) => node.nextSibling,
8656  querySelector: (selector) => doc.querySelector(selector),
8657  setScopeId(el, id) {
8658    el.setAttribute(id, "");
8659  },
8660  // __UNSAFE__
8661  // Reason: innerHTML.
8662  // Static content here can only come from compiled templates.
8663  // As long as the user only uses trusted templates, this is safe.
8664  insertStaticContent(content, parent, anchor, namespace, start, end) {
8665    const before = anchor ? anchor.previousSibling : parent.lastChild;
8666    if (start && (start === end || start.nextSibling)) {
8667      while (true) {
8668        parent.insertBefore(start.cloneNode(true), anchor);
8669        if (start === end || !(start = start.nextSibling)) break;
8670      }
8671    } else {
8672      templateContainer.innerHTML = unsafeToTrustedHTML(
8673        namespace === "svg" ? `<svg>${content}</svg>` : namespace === "mathml" ? `<math>${content}</math>` : content
8674      );
8675      const template = templateContainer.content;
8676      if (namespace === "svg" || namespace === "mathml") {
8677        const wrapper = template.firstChild;
8678        while (wrapper.firstChild) {
8679          template.appendChild(wrapper.firstChild);
8680        }
8681        template.removeChild(wrapper);
8682      }
8683      parent.insertBefore(template, anchor);
8684    }
8685    return [
8686      // first
8687      before ? before.nextSibling : parent.firstChild,
8688      // last
8689      anchor ? anchor.previousSibling : parent.lastChild
8690    ];
8691  }
8692};
8693const TRANSITION$1 = "transition";
8694const ANIMATION = "animation";
8695const vtcKey = Symbol("_vtc");
8696const DOMTransitionPropsValidators = {
8697  name: String,
8698  type: String,
8699  css: {
8700    type: Boolean,
8701    default: true
8702  },
8703  duration: [String, Number, Object],
8704  enterFromClass: String,
8705  enterActiveClass: String,
8706  enterToClass: String,
8707  appearFromClass: String,
8708  appearActiveClass: String,
8709  appearToClass: String,
8710  leaveFromClass: String,
8711  leaveActiveClass: String,
8712  leaveToClass: String
8713};
8714const TransitionPropsValidators = /* @__PURE__ */ extend$5(
8715  {},
8716  BaseTransitionPropsValidators,
8717  DOMTransitionPropsValidators
8718);
8719const decorate$1 = (t) => {
8720  t.displayName = "Transition";
8721  t.props = TransitionPropsValidators;
8722  return t;
8723};
8724const Transition = /* @__PURE__ */ decorate$1(
8725  (props2, { slots }) => h(BaseTransition, resolveTransitionProps(props2), slots)
8726);
8727const callHook = (hook, args = []) => {
8728  if (isArray$3(hook)) {
8729    hook.forEach((h2) => h2(...args));
8730  } else if (hook) {
8731    hook(...args);
8732  }
8733};
8734const hasExplicitCallback = (hook) => {
8735  return hook ? isArray$3(hook) ? hook.some((h2) => h2.length > 1) : hook.length > 1 : false;
8736};
8737function resolveTransitionProps(rawProps) {
8738  const baseProps = {};
8739  for (const key in rawProps) {
8740    if (!(key in DOMTransitionPropsValidators)) {
8741      baseProps[key] = rawProps[key];
8742    }
8743  }
8744  if (rawProps.css === false) {
8745    return baseProps;
8746  }
8747  const {
8748    name = "v",
8749    type,
8750    duration,
8751    enterFromClass = `${name}-enter-from`,
8752    enterActiveClass = `${name}-enter-active`,
8753    enterToClass = `${name}-enter-to`,
8754    appearFromClass = enterFromClass,
8755    appearActiveClass = enterActiveClass,
8756    appearToClass = enterToClass,
8757    leaveFromClass = `${name}-leave-from`,
8758    leaveActiveClass = `${name}-leave-active`,
8759    leaveToClass = `${name}-leave-to`
8760  } = rawProps;
8761  const durations = normalizeDuration(duration);
8762  const enterDuration = durations && durations[0];
8763  const leaveDuration = durations && durations[1];
8764  const {
8765    onBeforeEnter,
8766    onEnter,
8767    onEnterCancelled,
8768    onLeave,
8769    onLeaveCancelled,
8770    onBeforeAppear = onBeforeEnter,
8771    onAppear = onEnter,
8772    onAppearCancelled = onEnterCancelled
8773  } = baseProps;
8774  const finishEnter = (el, isAppear, done, isCancelled) => {
8775    el._enterCancelled = isCancelled;
8776    removeTransitionClass(el, isAppear ? appearToClass : enterToClass);
8777    removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);
8778    done && done();
8779  };
8780  const finishLeave = (el, done) => {
8781    el._isLeaving = false;
vendor: 8,673 bytes, lines 8782-9074
8782    removeTransitionClass(el, leaveFromClass);
8783    removeTransitionClass(el, leaveToClass);
8784    removeTransitionClass(el, leaveActiveClass);
8785    done && done();
8786  };
8787  const makeEnterHook = (isAppear) => {
8788    return (el, done) => {
8789      const hook = isAppear ? onAppear : onEnter;
8790      const resolve2 = () => finishEnter(el, isAppear, done);
8791      callHook(hook, [el, resolve2]);
8792      nextFrame(() => {
8793        removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);
8794        addTransitionClass(el, isAppear ? appearToClass : enterToClass);
8795        if (!hasExplicitCallback(hook)) {
8796          whenTransitionEnds(el, type, enterDuration, resolve2);
8797        }
8798      });
8799    };
8800  };
8801  return extend$5(baseProps, {
8802    onBeforeEnter(el) {
8803      callHook(onBeforeEnter, [el]);
8804      addTransitionClass(el, enterFromClass);
8805      addTransitionClass(el, enterActiveClass);
8806    },
8807    onBeforeAppear(el) {
8808      callHook(onBeforeAppear, [el]);
8809      addTransitionClass(el, appearFromClass);
8810      addTransitionClass(el, appearActiveClass);
8811    },
8812    onEnter: makeEnterHook(false),
8813    onAppear: makeEnterHook(true),
8814    onLeave(el, done) {
8815      el._isLeaving = true;
8816      const resolve2 = () => finishLeave(el, done);
8817      addTransitionClass(el, leaveFromClass);
8818      if (!el._enterCancelled) {
8819        forceReflow();
8820        addTransitionClass(el, leaveActiveClass);
8821      } else {
8822        addTransitionClass(el, leaveActiveClass);
8823        forceReflow();
8824      }
8825      nextFrame(() => {
8826        if (!el._isLeaving) {
8827          return;
8828        }
8829        removeTransitionClass(el, leaveFromClass);
8830        addTransitionClass(el, leaveToClass);
8831        if (!hasExplicitCallback(onLeave)) {
8832          whenTransitionEnds(el, type, leaveDuration, resolve2);
8833        }
8834      });
8835      callHook(onLeave, [el, resolve2]);
8836    },
8837    onEnterCancelled(el) {
8838      finishEnter(el, false, void 0, true);
8839      callHook(onEnterCancelled, [el]);
8840    },
8841    onAppearCancelled(el) {
8842      finishEnter(el, true, void 0, true);
8843      callHook(onAppearCancelled, [el]);
8844    },
8845    onLeaveCancelled(el) {
8846      finishLeave(el);
8847      callHook(onLeaveCancelled, [el]);
8848    }
8849  });
8850}
8851function normalizeDuration(duration) {
8852  if (duration == null) {
8853    return null;
8854  } else if (isObject$9(duration)) {
8855    return [NumberOf(duration.enter), NumberOf(duration.leave)];
8856  } else {
8857    const n = NumberOf(duration);
8858    return [n, n];
8859  }
8860}
8861function NumberOf(val) {
8862  const res = toNumber$2(val);
8863  return res;
8864}
8865function addTransitionClass(el, cls) {
8866  cls.split(/\s+/).forEach((c) => c && el.classList.add(c));
8867  (el[vtcKey] || (el[vtcKey] = /* @__PURE__ */ new Set())).add(cls);
8868}
8869function removeTransitionClass(el, cls) {
8870  cls.split(/\s+/).forEach((c) => c && el.classList.remove(c));
8871  const _vtc = el[vtcKey];
8872  if (_vtc) {
8873    _vtc.delete(cls);
8874    if (!_vtc.size) {
8875      el[vtcKey] = void 0;
8876    }
8877  }
8878}
8879function nextFrame(cb) {
8880  requestAnimationFrame(() => {
8881    requestAnimationFrame(cb);
8882  });
8883}
8884let endId = 0;
8885function whenTransitionEnds(el, expectedType, explicitTimeout, resolve2) {
8886  const id = el._endId = ++endId;
8887  const resolveIfNotStale = () => {
8888    if (id === el._endId) {
8889      resolve2();
8890    }
8891  };
8892  if (explicitTimeout != null) {
8893    return setTimeout(resolveIfNotStale, explicitTimeout);
8894  }
8895  const { type, timeout, propCount } = getTransitionInfo(el, expectedType);
8896  if (!type) {
8897    return resolve2();
8898  }
8899  const endEvent = type + "end";
8900  let ended = 0;
8901  const end = () => {
8902    el.removeEventListener(endEvent, onEnd);
8903    resolveIfNotStale();
8904  };
8905  const onEnd = (e) => {
8906    if (e.target === el && ++ended >= propCount) {
8907      end();
8908    }
8909  };
8910  setTimeout(() => {
8911    if (ended < propCount) {
8912      end();
8913    }
8914  }, timeout + 1);
8915  el.addEventListener(endEvent, onEnd);
8916}
8917function getTransitionInfo(el, expectedType) {
8918  const styles = window.getComputedStyle(el);
8919  const getStyleProperties = (key) => (styles[key] || "").split(", ");
8920  const transitionDelays = getStyleProperties(`${TRANSITION$1}Delay`);
8921  const transitionDurations = getStyleProperties(`${TRANSITION$1}Duration`);
8922  const transitionTimeout = getTimeout(transitionDelays, transitionDurations);
8923  const animationDelays = getStyleProperties(`${ANIMATION}Delay`);
8924  const animationDurations = getStyleProperties(`${ANIMATION}Duration`);
8925  const animationTimeout = getTimeout(animationDelays, animationDurations);
8926  let type = null;
8927  let timeout = 0;
8928  let propCount = 0;
8929  if (expectedType === TRANSITION$1) {
8930    if (transitionTimeout > 0) {
8931      type = TRANSITION$1;
8932      timeout = transitionTimeout;
8933      propCount = transitionDurations.length;
8934    }
8935  } else if (expectedType === ANIMATION) {
8936    if (animationTimeout > 0) {
8937      type = ANIMATION;
8938      timeout = animationTimeout;
8939      propCount = animationDurations.length;
8940    }
8941  } else {
8942    timeout = Math.max(transitionTimeout, animationTimeout);
8943    type = timeout > 0 ? transitionTimeout > animationTimeout ? TRANSITION$1 : ANIMATION : null;
8944    propCount = type ? type === TRANSITION$1 ? transitionDurations.length : animationDurations.length : 0;
8945  }
8946  const hasTransform = type === TRANSITION$1 && /\b(transform|all)(,|$)/.test(
8947    getStyleProperties(`${TRANSITION$1}Property`).toString()
8948  );
8949  return {
8950    type,
8951    timeout,
8952    propCount,
8953    hasTransform
8954  };
8955}
8956function getTimeout(delays, durations) {
8957  while (delays.length < durations.length) {
8958    delays = delays.concat(delays);
8959  }
8960  return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));
8961}
8962function toMs(s) {
8963  if (s === "auto") return 0;
8964  return Number(s.slice(0, -1).replace(",", ".")) * 1e3;
8965}
8966function forceReflow() {
8967  return document.body.offsetHeight;
8968}
8969function patchClass(el, value, isSVG) {
8970  const transitionClasses = el[vtcKey];
8971  if (transitionClasses) {
8972    value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(" ");
8973  }
8974  if (value == null) {
8975    el.removeAttribute("class");
8976  } else if (isSVG) {
8977    el.setAttribute("class", value);
8978  } else {
8979    el.className = value;
8980  }
8981}
8982const vShowOriginalDisplay = Symbol("_vod");
8983const vShowHidden = Symbol("_vsh");
8984const vShow = {
8985  beforeMount(el, { value }, { transition: transition2 }) {
8986    el[vShowOriginalDisplay] = el.style.display === "none" ? "" : el.style.display;
8987    if (transition2 && value) {
8988      transition2.beforeEnter(el);
8989    } else {
8990      setDisplay(el, value);
8991    }
8992  },
8993  mounted(el, { value }, { transition: transition2 }) {
8994    if (transition2 && value) {
8995      transition2.enter(el);
8996    }
8997  },
8998  updated(el, { value, oldValue }, { transition: transition2 }) {
8999    if (!value === !oldValue) return;
9000    if (transition2) {
9001      if (value) {
9002        transition2.beforeEnter(el);
9003        setDisplay(el, true);
9004        transition2.enter(el);
9005      } else {
9006        transition2.leave(el, () => {
9007          setDisplay(el, false);
9008        });
9009      }
9010    } else {
9011      setDisplay(el, value);
9012    }
9013  },
9014  beforeUnmount(el, { value }) {
9015    setDisplay(el, value);
9016  }
9017};
9018function setDisplay(el, value) {
9019  el.style.display = value ? el[vShowOriginalDisplay] : "none";
9020  el[vShowHidden] = !value;
9021}
9022function initVShowForSSR() {
9023  vShow.getSSRProps = ({ value }) => {
9024    if (!value) {
9025      return { style: { display: "none" } };
9026    }
9027  };
9028}
9029const CSS_VAR_TEXT = Symbol("");
9030function useCssVars(getter) {
9031  const instance = getCurrentInstance();
9032  if (!instance) {
9033    return;
9034  }
9035  const updateTeleports = instance.ut = (vars = getter(instance.proxy)) => {
9036    Array.from(
9037      document.querySelectorAll(`[data-v-owner="${instance.uid}"]`)
9038    ).forEach((node) => setVarsOnNode(node, vars));
9039  };
9040  const setVars = () => {
9041    const vars = getter(instance.proxy);
9042    if (instance.ce) {
9043      setVarsOnNode(instance.ce, vars);
9044    } else {
9045      setVarsOnVNode(instance.subTree, vars);
9046    }
9047    updateTeleports(vars);
9048  };
9049  onBeforeUpdate(() => {
9050    queuePostFlushCb(setVars);
9051  });
9052  onMounted(() => {
9053    watch(setVars, NOOP, { flush: "post" });
9054    const ob = new MutationObserver(setVars);
9055    ob.observe(instance.subTree.el.parentNode, { childList: true });
9056    onUnmounted(() => ob.disconnect());
9057  });
9058}
9059function setVarsOnVNode(vnode, vars) {
9060  if (vnode.shapeFlag & 128) {
9061    const suspense = vnode.suspense;
9062    vnode = suspense.activeBranch;
9063    if (suspense.pendingBranch && !suspense.isHydrating) {
9064      suspense.effects.push(() => {
9065        setVarsOnVNode(suspense.activeBranch, vars);
9066      });
9067    }
9068  }
9069  while (vnode.component) {
9070    vnode = vnode.component.subTree;
9071  }
9072  if (vnode.shapeFlag & 1 && vnode.el) {
9073    setVarsOnNode(vnode.el, vars);
9074  } else if (vnode.type === Fragment) {
9075    vnode.children.forEach((c) => setVarsOnVNode(c, vars));
9076  } else if (vnode.type === Static) {
9077    let { el, anchor } = vnode;
9078    while (el) {
9079      setVarsOnNode(el, vars);
9080      if (el === anchor) break;
9081      el = el.nextSibling;
9082    }
9083  }
9084}
9085function setVarsOnNode(el, vars) {
9086  if (el.nodeType === 1) {
9087    const style = el.style;
9088    let cssText = "";
9089    for (const key in vars) {
9090      style.setProperty(`--${key}`, vars[key]);
9091      cssText += `--${key}: ${vars[key]};`;
9092    }
9093    style[CSS_VAR_TEXT] = cssText;
9094  }
9095}
9096const displayRE = /(^|;)\s*display\s*:/;
9097function patchStyle(el, prev, next) {
9098  const style = el.style;
9099  const isCssString = isString$3(next);
9100  let hasControlledDisplay = false;
9101  if (next && !isCssString) {
9102    if (prev) {
9103      if (!isString$3(prev)) {
9104        for (const key in prev) {
9105          if (next[key] == null) {
9106            setStyle(style, key, "");
9107          }
9108        }
9109      } else {
9110        for (const prevStyle of prev.split(";")) {
9111          const key = prevStyle.slice(0, prevStyle.indexOf(":")).trim();
9112          if (next[key] == null) {
9113            setStyle(style, key, "");
9114          }
9115        }
9116      }
9117    }
9118    for (const key in next) {
9119      if (key === "display") {
9120        hasControlledDisplay = true;
9121      }
9122      setStyle(style, key, next[key]);
9123    }
9124  } else {
9125    if (isCssString) {
9126      if (prev !== next) {
9127        const cssVarText = style[CSS_VAR_TEXT];
9128        if (cssVarText) {
9129          next += ";" + cssVarText;
9130        }
9131        style.cssText = next;
9132        hasControlledDisplay = displayRE.test(next);
9133      }
9134    } else if (prev) {
9135      el.removeAttribute("style");
9136    }
9137  }
9138  if (vShowOriginalDisplay in el) {
9139    el[vShowOriginalDisplay] = hasControlledDisplay ? style.display : "";
9140    if (el[vShowHidden]) {
9141      style.display = "none";
9142    }
9143  }
9144}
9145const importantRE = /\s*!important$/;
9146function setStyle(style, name, val) {
9147  if (isArray$3(val)) {
9148    val.forEach((v) => setStyle(style, name, v));
9149  } else {
9150    if (val == null) val = "";
9151    if (name.startsWith("--")) {
9152      style.setProperty(name, val);
9153    } else {
9154      const prefixed = autoPrefix(style, name);
9155      if (importantRE.test(val)) {
9156        style.setProperty(
9157          hyphenate(prefixed),
9158          val.replace(importantRE, ""),
9159          "important"
9160        );
9161      } else {
9162        style[prefixed] = val;
9163      }
9164    }
9165  }
9166}
9167const prefixes = ["Webkit", "Moz", "ms"];
9168const prefixCache = {};
9169function autoPrefix(style, rawName) {
9170  const cached = prefixCache[rawName];
9171  if (cached) {
9172    return cached;
9173  }
9174  let name = camelize(rawName);
9175  if (name !== "filter" && name in style) {
9176    return prefixCache[rawName] = name;
9177  }
9178  name = capitalize$1(name);
9179  for (let i = 0; i < prefixes.length; i++) {
9180    const prefixed = prefixes[i] + name;
9181    if (prefixed in style) {
9182      return prefixCache[rawName] = prefixed;
9183    }
9184  }
9185  return rawName;
9186}
9187const xlinkNS = "http://www.w3.org/1999/xlink";
9188function patchAttr(el, key, value, isSVG, instance, isBoolean2 = isSpecialBooleanAttr(key)) {
9189  if (isSVG && key.startsWith("xlink:")) {
9190    if (value == null) {
9191      el.removeAttributeNS(xlinkNS, key.slice(6, key.length));
9192    } else {
9193      el.setAttributeNS(xlinkNS, key, value);
9194    }
9195  } else {
9196    if (value == null || isBoolean2 && !includeBooleanAttr(value)) {
9197      el.removeAttribute(key);
9198    } else {
9199      el.setAttribute(
9200        key,
9201        isBoolean2 ? "" : isSymbol$2(value) ? String(value) : value
9202      );
9203    }
9204  }
9205}
9206function patchDOMProp(el, key, value, parentComponent, attrName) {
9207  if (key === "innerHTML" || key === "textContent") {
9208    if (value != null) {
9209      el[key] = key === "innerHTML" ? unsafeToTrustedHTML(value) : value;
9210    }
9211    return;
9212  }
9213  const tag = el.tagName;
9214  if (key === "value" && tag !== "PROGRESS" && // custom elements may use _value internally
9215  !tag.includes("-")) {
9216    const oldValue = tag === "OPTION" ? el.getAttribute("value") || "" : el.value;
9217    const newValue = value == null ? (
9218      // #11647: value should be set as empty string for null and undefined,
9219      // but <input type="checkbox"> should be set as 'on'.
9220      el.type === "checkbox" ? "on" : ""
9221    ) : String(value);
9222    if (oldValue !== newValue || !("_value" in el)) {
9223      el.value = newValue;
9224    }
9225    if (value == null) {
9226      el.removeAttribute(key);
9227    }
9228    el._value = value;
9229    return;
9230  }
9231  let needRemove = false;
vendor: 2,672 bytes, lines 9232-9325
9232  if (value === "" || value == null) {
9233    const type = typeof el[key];
9234    if (type === "boolean") {
9235      value = includeBooleanAttr(value);
9236    } else if (value == null && type === "string") {
9237      value = "";
9238      needRemove = true;
9239    } else if (type === "number") {
9240      value = 0;
9241      needRemove = true;
9242    }
9243  }
9244  try {
9245    el[key] = value;
9246  } catch (e) {
9247  }
9248  needRemove && el.removeAttribute(attrName || key);
9249}
9250function addEventListener(el, event, handler, options2) {
9251  el.addEventListener(event, handler, options2);
9252}
9253function removeEventListener(el, event, handler, options2) {
9254  el.removeEventListener(event, handler, options2);
9255}
9256const veiKey = Symbol("_vei");
9257function patchEvent(el, rawName, prevValue, nextValue, instance = null) {
9258  const invokers = el[veiKey] || (el[veiKey] = {});
9259  const existingInvoker = invokers[rawName];
9260  if (nextValue && existingInvoker) {
9261    existingInvoker.value = nextValue;
9262  } else {
9263    const [name, options2] = parseName(rawName);
9264    if (nextValue) {
9265      const invoker = invokers[rawName] = createInvoker(
9266        nextValue,
9267        instance
9268      );
9269      addEventListener(el, name, invoker, options2);
9270    } else if (existingInvoker) {
9271      removeEventListener(el, name, existingInvoker, options2);
9272      invokers[rawName] = void 0;
9273    }
9274  }
9275}
9276const optionsModifierRE = /(?:Once|Passive|Capture)$/;
9277function parseName(name) {
9278  let options2;
9279  if (optionsModifierRE.test(name)) {
9280    options2 = {};
9281    let m;
9282    while (m = name.match(optionsModifierRE)) {
9283      name = name.slice(0, name.length - m[0].length);
9284      options2[m[0].toLowerCase()] = true;
9285    }
9286  }
9287  const event = name[2] === ":" ? name.slice(3) : hyphenate(name.slice(2));
9288  return [event, options2];
9289}
9290let cachedNow = 0;
9291const p = /* @__PURE__ */ Promise.resolve();
9292const getNow = () => cachedNow || (p.then(() => cachedNow = 0), cachedNow = Date.now());
9293function createInvoker(initialValue, instance) {
9294  const invoker = (e) => {
9295    if (!e._vts) {
9296      e._vts = Date.now();
9297    } else if (e._vts <= invoker.attached) {
9298      return;
9299    }
9300    callWithAsyncErrorHandling(
9301      patchStopImmediatePropagation(e, invoker.value),
9302      instance,
9303      5,
9304      [e]
9305    );
9306  };
9307  invoker.value = initialValue;
9308  invoker.attached = getNow();
9309  return invoker;
9310}
9311function patchStopImmediatePropagation(e, value) {
9312  if (isArray$3(value)) {
9313    const originalStop = e.stopImmediatePropagation;
9314    e.stopImmediatePropagation = () => {
9315      originalStop.call(e);
9316      e._stopped = true;
9317    };
9318    return value.map(
9319      (fn) => (e2) => !e2._stopped && fn && fn(e2)
9320    );
9321  } else {
9322    return value;
9323  }
9324}
9325const isNativeOn = (key) =>
9325 key.charCodeAt(0) === 111 && key.charCodeAt(1) === 110 && // lowercase letter
9326key.charCodeAt(2) > 96 && key.charCodeAt(2) < 123;
9327const patchProp = (el, key, prevValue, nextValue, namespace, parentComponent) => {
9328  const isSVG = namespace === "svg";
9329  if (key === "class") {
9330    patchClass(el, nextValue, isSVG);
9331  } else if (key === "style") {
9332    patchStyle(el, prevValue, nextValue);
9333  } else if (isOn(key)) {
9334    if (!isModelListener(key)) {
9335      patchEvent(el, key, prevValue, nextValue, parentComponent);
9336    }
9337  } else if (key[0] === "." ? (key = key.slice(1), true) : key[0] === "^" ? (key = key.slice(1), false) : shouldSetAsProp(el, key, nextValue, isSVG)) {
9338    patchDOMProp(el, key, nextValue);
9339    if (!el.tagName.includes("-") && (key === "value" || key === "checked" || key === "selected")) {
9340      patchAttr(el, key, nextValue, isSVG, parentComponent, key !== "value");
9341    }
9342  } else if (
9343    // #11081 force set props for possible async custom element
9344    el._isVueCE && (/[A-Z]/.test(key) || !isString$3(nextValue))
9345  ) {
9346    patchDOMProp(el, camelize(key), nextValue, parentComponent, key);
9347  } else {
9348    if (key === "true-value") {
9349      el._trueValue = nextValue;
9350    } else if (key === "false-value") {
9351      el._falseValue = nextValue;
9352    }
9353    patchAttr(el, key, nextValue, isSVG);
9354  }
9355};
9356function shouldSetAsProp(el, key, value, isSVG) {
9357  if (isSVG) {
9358    if (key === "innerHTML" || key === "textContent") {
9359      return true;
9360    }
9361    if (key in el && isNativeOn(key) && isFunction$3(value)) {
9362      return true;
9363    }
9364    return false;
9365  }
9366  if (key === "spellcheck" || key === "draggable" || key === "translate" || key === "autocorrect") {
9367    return false;
9368  }
9369  if (key === "form") {
9370    return false;
9371  }
9372  if (key === "list" && el.tagName === "INPUT") {
9373    return false;
9374  }
9375  if (key === "type" && el.tagName === "TEXTAREA") {
9376    return false;
9377  }
9378  if (key === "width" || key === "height") {
9379    const tag = el.tagName;
9380    if (tag === "IMG" || tag === "VIDEO" || tag === "CANVAS" || tag === "SOURCE") {
9381      return false;
9382    }
9383  }
9384  if (isNativeOn(key) && isString$3(value)) {
9385    return false;
9386  }
9387  return key in el;
9388}
9389const REMOVAL = {};
9390/*! #__NO_SIDE_EFFECTS__ */
9391// @__NO_SIDE_EFFECTS__
9392function defineCustomElement(options2, extraOptions, _createApp) {
9393  const Comp = /* @__PURE__ */ defineComponent(options2, extraOptions);
9394  if (isPlainObject$3(Comp)) extend$5(Comp, extraOptions);
9395  class VueCustomElement extends VueElement {
9396    constructor(initialProps) {
9397      super(Comp, initialProps, _createApp);
9398    }
9399  }
9400  VueCustomElement.def = Comp;
9401  return VueCustomElement;
9402}
9403/*! #__NO_SIDE_EFFECTS__ */
9404const defineSSRCustomElement = /* @__NO_SIDE_EFFECTS__ */ (options2, extraOptions) => {
9405  return /* @__PURE__ */ defineCustomElement(options2, extraOptions, createSSRApp);
9406};
9407const BaseClass = typeof HTMLElement !== "undefined" ? HTMLElement : class {
9408};
9409class VueElement extends BaseClass {
9410  constructor(_def, _props = {}, _createApp = createApp) {
9411    super();
9412    this._def = _def;
9413    this._props = _props;
9414    this._createApp = _createApp;
9415    this._isVueCE = true;
9416    this._instance = null;
9417    this._app = null;
9418    this._nonce = this._def.nonce;
9419    this._connected = false;
9420    this._resolved = false;
9421    this._numberProps = null;
9422    this._styleChildren = /* @__PURE__ */ new WeakSet();
9423    this._ob = null;
9424    if (this.shadowRoot && _createApp !== createApp) {
9425      this._root = this.shadowRoot;
9426    } else {
9427      if (_def.shadowRoot !== false) {
9428        this.attachShadow({ mode: "open" });
9429        this._root = this.shadowRoot;
9430      } else {
9431        this._root = this;
9432      }
9433    }
9434  }
9435  connectedCallback() {
9436    if (!this.isConnected) return;
9437    if (!this.shadowRoot && !this._resolved) {
9438      this._parseSlots();
9439    }
9440    this._connected = true;
9441    let parent = this;
9442    while (parent = parent && (parent.parentNode || parent.host)) {
9443      if (parent instanceof VueElement) {
9444        this._parent = parent;
9445        break;
9446      }
9447    }
9448    if (!this._instance) {
9449      if (this._resolved) {
9450        this._mount(this._def);
9451      } else {
9452        if (parent && parent._pendingResolve) {
9453          this._pendingResolve = parent._pendingResolve.then(() => {
9454            this._pendingResolve = void 0;
9455            this._resolveDef();
9456          });
9457        } else {
9458          this._resolveDef();
9459        }
9460      }
9461    }
9462  }
9463  _setParent(parent = this._parent) {
9464    if (parent) {
9465      this._instance.parent = parent._instance;
9466      this._inheritParentContext(parent);
9467    }
9468  }
9469  _inheritParentContext(parent = this._parent) {
9470    if (parent && this._app) {
9471      Object.setPrototypeOf(
9472        this._app._context.provides,
9473        parent._instance.provides
9474      );
9475    }
9476  }
9477  disconnectedCallback() {
9478    this._connected = false;
9479    nextTick$1(() => {
9480      if (!this._connected) {
9481        if (this._ob) {
9482          this._ob.disconnect();
9483          this._ob = null;
9484        }
9485        this._app && this._app.unmount();
9486        if (this._instance) this._instance.ce = void 0;
9487        this._app = this._instance = null;
9488      }
9489    });
9490  }
9491  /**
9492   * resolve inner component definition (handle possible async component)
9493   */
9494  _resolveDef() {
9495    if (this._pendingResolve) {
9496      return;
9497    }
9498    for (let i = 0; i < this.attributes.length; i++) {
9499      this._setAttr(this.attributes[i].name);
9500    }
9501    this._ob = new MutationObserver((mutations2) => {
9502      for (const m of mutations2) {
9503        this._setAttr(m.attributeName);
9504      }
9505    });
9506    this._ob.observe(this, { attributes: true });
9507    const resolve2 = (def2, isAsync = false) => {
9508      this._resolved = true;
9509      this._pendingResolve = void 0;
9510      const { props: props2, styles } = def2;
9511      let numberProps;
9512      if (props2 && !isArray$3(props2)) {
9513        for (const key in props2) {
9514          const opt = props2[key];
9515          if (opt === Number || opt && opt.type === Number) {
9516            if (key in this._props) {
9517              this._props[key] = toNumber$2(this._props[key]);
9518            }
9519            (numberProps || (numberProps = /* @__PURE__ */ Object.create(null)))[camelize(key)] = true;
9520          }
9521        }
9522      }
9523      this._numberProps = numberProps;
9524      this._resolveProps(def2);
9525      if (this.shadowRoot) {
9526        this._applyStyles(styles);
9527      }
9528      this._mount(def2);
9529    };
9530    const asyncDef = this._def.__asyncLoader;
9531    if (asyncDef) {
9532      this._pendingResolve = asyncDef().then(
9533        (def2) => resolve2(this._def = def2, true)
9534      );
9535    } else {
9536      resolve2(this._def);
9537    }
9538  }
9539  _mount(def2) {
9540    this._app = this._createApp(def2);
9541    this._inheritParentContext();
9542    if (def2.configureApp) {
9543      def2.configureApp(this._app);
9544    }
9545    this._app._ceVNode = this._createVNode();
9546    this._app.mount(this._root);
9547    const exposed = this._instance && this._instance.exposed;
9548    if (!exposed) return;
9549    for (const key in exposed) {
9550      if (!hasOwn$2(this, key)) {
9551        Object.defineProperty(this, key, {
9552          // unwrap ref to be consistent with public instance behavior
9553          get: () => unref(exposed[key])
9554        });
9555      }
9556    }
9557  }
9558  _resolveProps(def2) {
9559    const { props: props2 } = def2;
9560    const declaredPropKeys = isArray$3(props2) ? props2 : Object.keys(props2 || {});
9561    for (const key of Object.keys(this)) {
9562      if (key[0] !== "_" && declaredPropKeys.includes(key)) {
9563        this._setProp(key, this[key]);
9564      }
9565    }
9566    for (const key of declaredPropKeys.map(camelize)) {
9567      Object.defineProperty(this, key, {
9568        get() {
9569          return this._getProp(key);
9570        },
9571        set(val) {
9572          this._setProp(key, val, true, true);
9573        }
9574      });
9575    }
9576  }
9577  _setAttr(key) {
9578    if (key.startsWith("data-v-")) return;
9579    const has = this.hasAttribute(key);
9580    let value = has ? this.getAttribute(key) : REMOVAL;
9581    const camelKey = camelize(key);
9582    if (has && this._numberProps && this._numberProps[camelKey]) {
9583      value = toNumber$2(value);
9584    }
9585    this._setProp(camelKey, value, false, true);
9586  }
9587  /**
9588   * @internal
9589   */
9590  _getProp(key) {
9591    return this._props[key];
9592  }
9593  /**
9594   * @internal
9595   */
9596  _setProp(key, val, shouldReflect = true, shouldUpdate = false) {
9597    if (val !== this._props[key]) {
9598      if (val === REMOVAL) {
9599        delete this._props[key];
9600      } else {
9601        this._props[key] = val;
9602        if (key === "key" && this._app) {
9603          this._app._ceVNode.key = val;
9604        }
9605      }
9606      if (shouldUpdate && this._instance) {
9607        this._update();
9608      }
9609      if (shouldReflect) {
9610        const ob = this._ob;
9611        ob && ob.disconnect();
9612        if (val === true) {
9613          this.setAttribute(hyphenate(key), "");
9614        } else if (typeof val === "string" || typeof val === "number") {
9615          this.setAttribute(hyphenate(key), val + "");
9616        } else if (!val) {
9617          this.removeAttribute(hyphenate(key));
9618        }
9619        ob && ob.observe(this, { attributes: true });
9620      }
9621    }
9622  }
9623  _update() {
9624    const vnode = this._createVNode();
9625    if (this._app) vnode.appContext = this._app._context;
9626    render(vnode, this._root);
9627  }
9628  _createVNode() {
9629    const baseProps = {};
9630    if (!this.shadowRoot) {
9631      baseProps.onVnodeMounted = baseProps.onVnodeUpdated = this._renderSlots.bind(this);
9632    }
9633    const vnode = createVNode(this._def, extend$5(baseProps, this._props));
9634    if (!this._instance) {
9635      vnode.ce = (instance) => {
9636        this._instance = instance;
9637        instance.ce = this;
9638        instance.isCE = true;
9639        const dispatch2 = (event, args) => {
9640          this.dispatchEvent(
9641            new CustomEvent(
9642              event,
9643              isPlainObject$3(args[0]) ? extend$5({ detail: args }, args[0]) : { detail: args }
9644            )
9645          );
9646        };
9647        instance.emit = (event, ...args) => {
9648          dispatch2(event, args);
9649          if (hyphenate(event) !== event) {
9650            dispatch2(hyphenate(event), args);
9651          }
9652        };
9653        this._setParent();
9654      };
9655    }
9656    return vnode;
9657  }
9658  _applyStyles(styles, owner) {
9659    if (!styles) return;
9660    if (owner) {
9661      if (owner === this._def || this._styleChildren.has(owner)) {
9662        return;
9663      }
9664      this._styleChildren.add(owner);
9665    }
9666    const nonce = this._nonce;
9667    for (let i = styles.length - 1; i >= 0; i--) {
9668      const s = document.createElement("style");
9669      if (nonce) s.setAttribute("nonce", nonce);
9670      s.textContent = styles[i];
9671      this.shadowRoot.prepend(s);
9672    }
9673  }
9674  /**
9675   * Only called when shadowRoot is false
9676   */
9677  _parseSlots() {
9678    const slots = this._slots = {};
9679    let n;
9680    while (n = this.firstChild) {
9681      const slotName = n.nodeType === 1 && n.getAttribute("slot") || "default";
9682      (slots[slotName] || (slots[slotName] = [])).push(n);
9683      this.removeChild(n);
9684    }
9685  }
9686  /**
9687   * Only called when shadowRoot is false
9688   */
9689  _renderSlots() {
9690    const outlets = (this._teleportTarget || this).querySelectorAll("slot");
9691    const scopeId = this._instance.type.__scopeId;
9692    for (let i = 0; i < outlets.length; i++) {
9693      const o = outlets[i];
9694      const slotName = o.getAttribute("name") || "default";
9695      const content = this._slots[slotName];
9696      const parent = o.parentNode;
9697      if (content) {
9698        for (const n of content) {
9699          if (scopeId && n.nodeType === 1) {
9700            const id = scopeId + "-s";
9701            const walker = document.createTreeWalker(n, 1);
9702            n.setAttribute(id, "");
9703            let child;
9704            while (child = walker.nextNode()) {
9705              child.setAttribute(id, "");
9706            }
9707          }
9708          parent.insertBefore(n, o);
9709        }
9710      } else {
9711        while (o.firstChild) parent.insertBefore(o.firstChild, o);
9712      }
9713      parent.removeChild(o);
9714    }
9715  }
9716  /**
9717   * @internal
9718   */
9719  _injectChildStyle(comp) {
9720    this._applyStyles(comp.styles, comp);
9721  }
9722  /**
9723   * @internal
9724   */
9725  _removeChildStyle(comp) {
9726  }
9727}
9728function useHost(caller) {
9729  const instance = getCurrentInstance();
9730  const el = instance && instance.ce;
9731  if (el) {
9732    return el;
9733  }
9734  return null;
9735}
9736function useShadowRoot() {
9737  const el = useHost();
9738  return el && el.shadowRoot;
9739}
9740function useCssModule(name = "$style") {
9741  {
9742    const instance = getCurrentInstance();
9743    if (!instance) {
9744      return EMPTY_OBJ;
9745    }
9746    const modules = instance.type.__cssModules;
9747    if (!modules) {
9748      return EMPTY_OBJ;
9749    }
9750    const mod = modules[name];
9751    if (!mod) {
9752      return EMPTY_OBJ;
9753    }
9754    return mod;
9755  }
9756}
9757const positionMap = /* @__PURE__ */ new WeakMap();
9758const newPositionMap = /* @__PURE__ */ new WeakMap();
9759const moveCbKey = Symbol("_moveCb");
9760const enterCbKey = Symbol("_enterCb");
9761const decorate = (t) => {
9762  delete t.props.mode;
9763  return t;
9764};
9765const TransitionGroupImpl = /* @__PURE__ */ decorate({
9766  name: "TransitionGroup",
9767  props: /* @__PURE__ */ extend$5({}, TransitionPropsValidators, {
9768    tag: String,
9769    moveClass: String
9770  }),
9771  setup(props2, { slots }) {
9772    const instance = getCurrentInstance();
9773    const state2 = useTransitionState();
9774    let prevChildren;
9775    let children;
9776    onUpdated(() => {
9777      if (!prevChildren.length) {
9778        return;
9779      }
9780      const moveClass = props2.moveClass || `${props2.name || "v"}-move`;
9781      if (!hasCSSTransform(
9782        prevChildren[0].el,
9783        instance.vnode.el,
9784        moveClass
9785      )) {
9786        prevChildren = [];
9787        return;
9788      }
9789      prevChildren.forEach(callPendingCbs);
9790      prevChildren.forEach(recordPosition);
9791      const movedChildren = prevChildren.filter(applyTranslation);
9792      forceReflow();
9793      movedChildren.forEach((c) => {
9794        const el = c.el;
9795        const style = el.style;
9796        addTransitionClass(el, moveClass);
9797        style.transform = style.webkitTransform = style.transitionDuration = "";
9798        const cb = el[moveCbKey] = (e) => {
9799          if (e && e.target !== el) {
9800            return;
9801          }
9802          if (!e || /transform$/.test(e.propertyName)) {
9803            el.removeEventListener("transitionend", cb);
9804            el[moveCbKey] = null;
9805            removeTransitionClass(el, moveClass);
9806          }
9807        };
9808        el.addEventListener("transitionend", cb);
9809      });
9810      prevChildren = [];
9811    });
9812    return () => {
9813      const rawProps = toRaw(props2);
9814      const cssTransitionProps = resolveTransitionProps(rawProps);
9815      let tag = rawProps.tag || Fragment;
9816      prevChildren = [];
9817      if (children) {
9818        for (let i = 0; i < children.length; i++) {
9819          const child = children[i];
9820          if (child.el && child.el instanceof Element) {
9821            prevChildren.push(child);
9822            setTransitionHooks(
9823              child,
9824              resolveTransitionHooks(
9825                child,
9826                cssTransitionProps,
9827                state2,
9828                instance
9829              )
9830            );
9831            positionMap.set(
9832              child,
9833              child.el.getBoundingClientRect()
9834            );
9835          }
9836        }
9837      }
9838      children = slots.default ? getTransitionRawChildren(slots.default()) : [];
9839      for (let i = 0; i < children.length; i++) {
9840        const child = children[i];
9841        if (child.key != null) {
9842          setTransitionHooks(
9843            child,
9844            resolveTransitionHooks(child, cssTransitionProps, state2, instance)
9845          );
9846        }
9847      }
9848      return createVNode(tag, null, children);
9849    };
9850  }
9851});
9852const TransitionGroup = TransitionGroupImpl;
9853function callPendingCbs(c) {
9854  const el = c.el;
9855  if (el[moveCbKey]) {
9856    el[moveCbKey]();
9857  }
9858  if (el[enterCbKey]) {
9859    el[enterCbKey]();
9860  }
9861}
9862function recordPosition(c) {
9863  newPositionMap.set(c, c.el.getBoundingClientRect());
9864}
9865function applyTranslation(c) {
9866  const oldPos = positionMap.get(c);
9867  const newPos = newPositionMap.get(c);
9868  const dx = oldPos.left - newPos.left;
9869  const dy = oldPos.top - newPos.top;
9870  if (dx || dy) {
9871    const s = c.el.style;
9872    s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;
9873    s.transitionDuration = "0s";
9874    return c;
9875  }
9876}
9877function hasCSSTransform(el, root2, moveClass) {
9878  const clone = el.cloneNode();
9879  const _vtc = el[vtcKey];
9880  if (_vtc) {
9881    _vtc.forEach((cls) => {
9882      cls.split(/\s+/).forEach((c) => c && clone.classList.remove(c));
9883    });
9884  }
9885  moveClass.split(/\s+/).forEach((c) => c && clone.classList.add(c));
9886  clone.style.display = "none";
9887  const container = root2.nodeType === 1 ? root2 : root2.parentNode;
9888  container.appendChild(clone);
9889  const { hasTransform } = getTransitionInfo(clone);
9890  container.removeChild(clone);
9891  return hasTransform;
9892}
9893const getModelAssigner = (vnode) => {
9894  const fn = vnode.props["onUpdate:modelValue"] || false;
9895  return isArray$3(fn) ? (value) => invokeArrayFns(fn, value) : fn;
9896};
9897function onCompositionStart(e) {
9898  e.target.composing = true;
9899}
9900function onCompositionEnd(e) {
9901  const target = e.target;
9902  if (target.composing) {
9903    target.composing = false;
9904    target.dispatchEvent(new Event("input"));
9905  }
9906}
9907const assignKey = Symbol("_assign");
9908const vModelText = {
9909  created(el, { modifiers: { lazy: lazy2, trim: trim2, number: number2 } }, vnode) {
9910    el[assignKey] = getModelAssigner(vnode);
9911    const castToNumber = number2 || vnode.props && vnode.props.type === "number";
9912    addEventListener(el, lazy2 ? "change" : "input", (e) => {
9913      if (e.target.composing) return;
9914      let domValue = el.value;
9915      if (trim2) {
9916        domValue = domValue.trim();
9917      }
9918      if (castToNumber) {
9919        domValue = looseToNumber(domValue);
9920      }
9921      el[assignKey](domValue);
9922    });
9923    if (trim2) {
9924      addEventListener(el, "change", () => {
9925        el.value = el.value.trim();
9926      });
9927    }
9928    if (!lazy2) {
9929      addEventListener(el, "compositionstart", onCompositionStart);
9930      addEventListener(el, "compositionend", onCompositionEnd);
9931      addEventListener(el, "change", onCompositionEnd);
9932    }
9933  },
9934  // set value on mounted so it's after min/max for type="range"
9935  mounted(el, { value }) {
9936    el.value = value == null ? "" : value;
9937  },
9938  beforeUpdate(el, { value, oldValue, modifiers: { lazy: lazy2, trim: trim2, number: number2 } }, vnode) {
9939    el[assignKey] = getModelAssigner(vnode);
9940    if (el.composing) return;
9941    const elValue = (number2 || el.type === "number") && !/^0\d/.test(el.value) ? looseToNumber(el.value) : el.value;
9942    const newValue = value == null ? "" : value;
9943    if (elValue === newValue) {
9944      return;
9945    }
9946    if (document.activeElement === el && el.type !== "range") {
9947      if (lazy2 && value === oldValue) {
9948        return;
9949      }
9950      if (trim2 && el.value.trim() === newValue) {
9951        return;
9952      }
9953    }
9954    el.value = newValue;
9955  }
9956};
9957const vModelCheckbox = {
9958  // #4096 array checkboxes need to be deep traversed
9959  deep: true,
9960  created(el, _, vnode) {
9961    el[assignKey] = getModelAssigner(vnode);
9962    addEventListener(el, "change", () => {
9963      const modelValue = el._modelValue;
9964      const elementValue = getValue(el);
9965      const checked = el.checked;
9966      const assign2 = el[assignKey];
9967      if (isArray$3(modelValue)) {
9968        const index2 = looseIndexOf(modelValue, elementValue);
9969        const found = index2 !== -1;
9970        if (checked && !found) {
9971          assign2(modelValue.concat(elementValue));
9972        } else if (!checked && found) {
9973          const filtered = [...modelValue];
9974          filtered.splice(index2, 1);
9975          assign2(filtered);
9976        }
9977      } else if (isSet(modelValue)) {
9978        const cloned = new Set(modelValue);
9979        if (checked) {
9980          cloned.add(elementValue);
9981        } else {
9982          cloned.delete(elementValue);
9983        }
9984        assign2(cloned);
9985      } else {
9986        assign2(getCheckboxValue(el, checked));
9987      }
9988    });
9989  },
9990  // set initial checked on mount to wait for true-value/false-value
9991  mounted: setChecked,
9992  beforeUpdate(el, binding, vnode) {
9993    el[assignKey] = getModelAssigner(vnode);
9994    setChecked(el, binding, vnode);
9995  }
9996};
9997function setChecked(el, { value, oldValue }, vnode) {
9998  el._modelValue = value;
9999  let checked;
10000  if (isArray$3(value)) {
10001    checked = looseIndexOf(value, vnode.props.value) > -1;
10002  } else if (isSet(value)) {
10003    checked = value.has(vnode.props.value);
10004  } else {
10005    if (value === oldValue) return;
10006    checked = looseEqual(value, getCheckboxValue(el, true));
10007  }
10008  if (el.checked !== checked) {
10009    el.checked = checked;
10010  }
10011}
10012const vModelRadio = {
10013  created(el, { value }, vnode) {
10014    el.checked = looseEqual(value, vnode.props.value);
10015    el[assignKey] = getModelAssigner(vnode);
10016    addEventListener(el, "change", () => {
10017      el[assignKey](getValue(el));
10018    });
10019  },
10020  beforeUpdate(el, { value, oldValue }, vnode) {
10021    el[assignKey] = getModelAssigner(vnode);
10022    if (value !== oldValue) {
10023      el.checked = looseEqual(value, vnode.props.value);
10024    }
10025  }
10026};
10027const vModelSelect = {
10028  // <select multiple> value need to be deep traversed
10029  deep: true,
10030  created(el, { value, modifiers: { number: number2 } }, vnode) {
10031    const isSetModel = isSet(value);
10032    addEventListener(el, "change", () => {
10033      const selectedVal = Array.prototype.filter.call(el.options, (o) => o.selected).map(
10034        (o) => number2 ? looseToNumber(getValue(o)) : getValue(o)
10035      );
10036      el[assignKey](
10037        el.multiple ? isSetModel ? new Set(selectedVal) : selectedVal : selectedVal[0]
10038      );
10039      el._assigning = true;
10040      nextTick$1(() => {
10041        el._assigning = false;
vendor: 5,094 bytes, lines 10042-10212
10042      });
10043    });
10044    el[assignKey] = getModelAssigner(vnode);
10045  },
10046  // set value in mounted & updated because <select> relies on its children
10047  // <option>s.
10048  mounted(el, { value }) {
10049    setSelected(el, value);
10050  },
10051  beforeUpdate(el, _binding, vnode) {
10052    el[assignKey] = getModelAssigner(vnode);
10053  },
10054  updated(el, { value }) {
10055    if (!el._assigning) {
10056      setSelected(el, value);
10057    }
10058  }
10059};
10060function setSelected(el, value) {
10061  const isMultiple = el.multiple;
10062  const isArrayValue = isArray$3(value);
10063  if (isMultiple && !isArrayValue && !isSet(value)) {
10064    return;
10065  }
10066  for (let i = 0, l = el.options.length; i < l; i++) {
10067    const option = el.options[i];
10068    const optionValue = getValue(option);
10069    if (isMultiple) {
10070      if (isArrayValue) {
10071        const optionType = typeof optionValue;
10072        if (optionType === "string" || optionType === "number") {
10073          option.selected = value.some((v) => String(v) === String(optionValue));
10074        } else {
10075          option.selected = looseIndexOf(value, optionValue) > -1;
10076        }
10077      } else {
10078        option.selected = value.has(optionValue);
10079      }
10080    } else if (looseEqual(getValue(option), value)) {
10081      if (el.selectedIndex !== i) el.selectedIndex = i;
10082      return;
10083    }
10084  }
10085  if (!isMultiple && el.selectedIndex !== -1) {
10086    el.selectedIndex = -1;
10087  }
10088}
10089function getValue(el) {
10090  return "_value" in el ? el._value : el.value;
10091}
10092function getCheckboxValue(el, checked) {
10093  const key = checked ? "_trueValue" : "_falseValue";
10094  return key in el ? el[key] : checked;
10095}
10096const vModelDynamic = {
10097  created(el, binding, vnode) {
10098    callModelHook(el, binding, vnode, null, "created");
10099  },
10100  mounted(el, binding, vnode) {
10101    callModelHook(el, binding, vnode, null, "mounted");
10102  },
10103  beforeUpdate(el, binding, vnode, prevVNode) {
10104    callModelHook(el, binding, vnode, prevVNode, "beforeUpdate");
10105  },
10106  updated(el, binding, vnode, prevVNode) {
10107    callModelHook(el, binding, vnode, prevVNode, "updated");
10108  }
10109};
10110function resolveDynamicModel(tagName, type) {
10111  switch (tagName) {
10112    case "SELECT":
10113      return vModelSelect;
10114    case "TEXTAREA":
10115      return vModelText;
10116    default:
10117      switch (type) {
10118        case "checkbox":
10119          return vModelCheckbox;
10120        case "radio":
10121          return vModelRadio;
10122        default:
10123          return vModelText;
10124      }
10125  }
10126}
10127function callModelHook(el, binding, vnode, prevVNode, hook) {
10128  const modelToUse = resolveDynamicModel(
10129    el.tagName,
10130    vnode.props && vnode.props.type
10131  );
10132  const fn = modelToUse[hook];
10133  fn && fn(el, binding, vnode, prevVNode);
10134}
10135function initVModelForSSR() {
10136  vModelText.getSSRProps = ({ value }) => ({ value });
10137  vModelRadio.getSSRProps = ({ value }, vnode) => {
10138    if (vnode.props && looseEqual(vnode.props.value, value)) {
10139      return { checked: true };
10140    }
10141  };
10142  vModelCheckbox.getSSRProps = ({ value }, vnode) => {
10143    if (isArray$3(value)) {
10144      if (vnode.props && looseIndexOf(value, vnode.props.value) > -1) {
10145        return { checked: true };
10146      }
10147    } else if (isSet(value)) {
10148      if (vnode.props && value.has(vnode.props.value)) {
10149        return { checked: true };
10150      }
10151    } else if (value) {
10152      return { checked: true };
10153    }
10154  };
10155  vModelDynamic.getSSRProps = (binding, vnode) => {
10156    if (typeof vnode.type !== "string") {
10157      return;
10158    }
10159    const modelToUse = resolveDynamicModel(
10160      // resolveDynamicModel expects an uppercase tag name, but vnode.type is lowercase
10161      vnode.type.toUpperCase(),
10162      vnode.props && vnode.props.type
10163    );
10164    if (modelToUse.getSSRProps) {
10165      return modelToUse.getSSRProps(binding, vnode);
10166    }
10167  };
10168}
10169const systemModifiers = ["ctrl", "shift", "alt", "meta"];
10170const modifierGuards = {
10171  stop: (e) => e.stopPropagation(),
10172  prevent: (e) => e.preventDefault(),
10173  self: (e) => e.target !== e.currentTarget,
10174  ctrl: (e) => !e.ctrlKey,
10175  shift: (e) => !e.shiftKey,
10176  alt: (e) => !e.altKey,
10177  meta: (e) => !e.metaKey,
10178  left: (e) => "button" in e && e.button !== 0,
10179  middle: (e) => "button" in e && e.button !== 1,
10180  right: (e) => "button" in e && e.button !== 2,
10181  exact: (e, modifiers) => systemModifiers.some((m) => e[`${m}Key`] && !modifiers.includes(m))
10182};
10183const withModifiers = (fn, modifiers) => {
10184  const cache2 = fn._withMods || (fn._withMods = {});
10185  const cacheKey = modifiers.join(".");
10186  return cache2[cacheKey] || (cache2[cacheKey] = (event, ...args) => {
10187    for (let i = 0; i < modifiers.length; i++) {
10188      const guard = modifierGuards[modifiers[i]];
10189      if (guard && guard(event, modifiers)) return;
10190    }
10191    return fn(event, ...args);
10192  });
10193};
10194const keyNames = {
10195  esc: "escape",
10196  space: " ",
10197  up: "arrow-up",
10198  left: "arrow-left",
10199  right: "arrow-right",
10200  down: "arrow-down",
10201  delete: "backspace"
10202};
10203const withKeys = (fn, modifiers) => {
10204  const cache2 = fn._withKeys || (fn._withKeys = {});
10205  const cacheKey = modifiers.join(".");
10206  return cache2[cacheKey] || (cache2[cacheKey] = (event) => {
10207    if (!("key" in event)) {
10208      return;
10209    }
10210    const eventKey = hyphenate(event.key);
10211    if (modifiers.some(
10212      (k) =>
10212 k === eventKey || keyNames[k] === eventKey
10213    )) {
10214      return fn(event);
10215    }
10216  });
10217};
10218const rendererOptions = /* @__PURE__ */ extend$5({ patchProp }, nodeOps);
10219let renderer;
10220let enabledHydration = false;
10221function ensureRenderer() {
10222  return renderer || (renderer = createRenderer(rendererOptions));
10223}
10224function ensureHydrationRenderer() {
10225  renderer = enabledHydration ? renderer : createHydrationRenderer(rendererOptions);
10226  enabledHydration = true;
10227  return renderer;
10228}
10229const render = (...args) => {
10230  ensureRenderer().render(...args);
10231};
10232const hydrate = (...args) => {
10233  ensureHydrationRenderer().hydrate(...args);
10234};
10235const createApp = (...args) => {
10236  const app2 = ensureRenderer().createApp(...args);
10237  const { mount } = app2;
10238  app2.mount = (containerOrSelector) => {
10239    const container = normalizeContainer(containerOrSelector);
10240    if (!container) return;
10241    const component = app2._component;
10242    if (!isFunction$3(component) && !component.render && !component.template) {
10243      component.template = container.innerHTML;
10244    }
10245    if (container.nodeType === 1) {
10246      container.textContent = "";
10247    }
10248    const proxy = mount(container, false, resolveRootNamespace(container));
10249    if (container instanceof Element) {
10250      container.removeAttribute("v-cloak");
10251      container.setAttribute("data-v-app", "");
10252    }
10253    return proxy;
10254  };
10255  return app2;
10256};
10257const createSSRApp = (...args) => {
10258  const app2 = ensureHydrationRenderer().createApp(...args);
10259  const { mount } = app2;
10260  app2.mount = (containerOrSelector) => {
10261    const container = normalizeContainer(containerOrSelector);
10262    if (container) {
10263      return mount(container, true, resolveRootNamespace(container));
10264    }
10265  };
10266  return app2;
10267};
10268function resolveRootNamespace(container) {
10269  if (container instanceof SVGElement) {
10270    return "svg";
10271  }
10272  if (typeof MathMLElement === "function" && container instanceof MathMLElement) {
10273    return "mathml";
10274  }
10275}
10276function normalizeContainer(container) {
10277  if (isString$3(container)) {
10278    const res = document.querySelector(container);
10279    return res;
10280  }
10281  return container;
10282}
10283let ssrDirectiveInitialized = false;
10284const initDirectivesForSSR = () => {
10285  if (!ssrDirectiveInitialized) {
10286    ssrDirectiveInitialized = true;
10287    initVModelForSSR();
10288    initVShowForSSR();
10289  }
10290};
10291const runtimeDom = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
10292  __proto__: null,
10293  BaseTransition,
10294  BaseTransitionPropsValidators,
10295  Comment,
10296  DeprecationTypes,
10297  EffectScope,
10298  ErrorCodes,
10299  ErrorTypeStrings,
10300  Fragment,
10301  KeepAlive,
10302  ReactiveEffect,
10303  Static,
10304  Suspense,
10305  Teleport,
10306  Text,
10307  TrackOpTypes,
10308  Transition,
10309  TransitionGroup,
10310  TriggerOpTypes,
10311  VueElement,
10312  assertNumber,
10313  callWithAsyncErrorHandling,
10314  callWithErrorHandling,
10315  camelize,
10316  capitalize: capitalize$1,
10317  cloneVNode,
10318  compatUtils,
10319  computed,
10320  createApp,
10321  createBlock,
10322  createCommentVNode,
10323  createElementBlock,
10324  createElementVNode: createBaseVNode,
10325  createHydrationRenderer,
10326  createPropsRestProxy,
10327  createRenderer,
10328  createSSRApp,
10329  createSlots,
10330  createStaticVNode,
10331  createTextVNode,
10332  createVNode,
10333  customRef,
10334  defineAsyncComponent,
10335  defineComponent,
10336  defineCustomElement,
10337  defineEmits,
10338  defineExpose,
10339  defineModel,
10340  defineOptions,
10341  defineProps,
10342  defineSSRCustomElement,
10343  defineSlots,
10344  devtools: devtools$2,
10345  effect,
10346  effectScope,
10347  getCurrentInstance,
10348  getCurrentScope,
10349  getCurrentWatcher,
10350  getTransitionRawChildren,
10351  guardReactiveProps,
10352  h,
10353  handleError,
10354  hasInjectionContext,
10355  hydrate,
10356  hydrateOnIdle,
10357  hydrateOnInteraction,
10358  hydrateOnMediaQuery,
10359  hydrateOnVisible,
10360  initCustomFormatter,
10361  initDirectivesForSSR,
10362  inject,
10363  isMemoSame,
10364  isProxy,
10365  isReactive,
10366  isReadonly,
10367  isRef,
10368  isRuntimeOnly,
10369  isShallow,
10370  isVNode: isVNode$1,
10371  markRaw,
10372  mergeDefaults,
10373  mergeModels,
10374  mergeProps,
10375  nextTick: nextTick$1,
10376  normalizeClass,
10377  normalizeProps,
10378  normalizeStyle,
10379  onActivated,
10380  onBeforeMount,
10381  onBeforeUnmount,
10382  onBeforeUpdate,
10383  onDeactivated,
10384  onErrorCaptured,
10385  onMounted,
10386  onRenderTracked,
10387  onRenderTriggered,
10388  onScopeDispose,
10389  onServerPrefetch,
10390  onUnmounted,
10391  onUpdated,
10392  onWatcherCleanup,
10393  openBlock,
10394  popScopeId,
10395  provide,
10396  proxyRefs,
10397  pushScopeId,
10398  queuePostFlushCb,
10399  reactive,
10400  readonly,
10401  ref,
10402  registerRuntimeCompiler,
10403  render,
10404  renderList,
10405  renderSlot,
10406  resolveComponent,
10407  resolveDirective,
10408  resolveDynamicComponent,
10409  resolveFilter,
10410  resolveTransitionHooks,
10411  setBlockTracking,
10412  setDevtoolsHook,
10413  setTransitionHooks,
10414  shallowReactive,
10415  shallowReadonly,
10416  shallowRef,
10417  ssrContextKey,
10418  ssrUtils,
10419  stop,
10420  toDisplayString: toDisplayString$1,
10421  toHandlerKey,
10422  toHandlers,
10423  toRaw,
10424  toRef,
10425  toRefs,
10426  toValue,
10427  transformVNodeArgs,
10428  triggerRef,
10429  unref,
10430  useAttrs,
10431  useCssModule,
10432  useCssVars,
10433  useHost,
10434  useId,
10435  useModel,
10436  useSSRContext,
10437  useShadowRoot,
10438  useSlots,
10439  useTemplateRef,
10440  useTransitionState,
10441  vModelCheckbox,
10442  vModelDynamic,
10443  vModelRadio,
10444  vModelSelect,
10445  vModelText,
10446  vShow,
10447  version,
10448  warn: warn$2,
10449  watch,
10450  watchEffect,
10451  watchPostEffect,
10452  watchSyncEffect,
10453  withAsyncContext,
10454  withCtx,
10455  withDefaults,
10456  withDirectives,
10457  withKeys,
10458  withMemo,
10459  withModifiers,
10460  withScopeId
10461}, Symbol.toStringTag, { value: "Module" }));
10462/**
10463* @vue/compiler-core v3.5.16
10464* (c) 2018-present Yuxi (Evan) You and Vue contributors
10465* @license MIT
vendor: 27,127 bytes, lines 10466-11501
10466**/
10467const FRAGMENT = Symbol(``);
10468const TELEPORT = Symbol(``);
10469const SUSPENSE = Symbol(``);
10470const KEEP_ALIVE = Symbol(``);
10471const BASE_TRANSITION = Symbol(
10472  ``
10473);
10474const OPEN_BLOCK = Symbol(``);
10475const CREATE_BLOCK = Symbol(``);
10476const CREATE_ELEMENT_BLOCK = Symbol(
10477  ``
10478);
10479const CREATE_VNODE = Symbol(``);
10480const CREATE_ELEMENT_VNODE = Symbol(
10481  ``
10482);
10483const CREATE_COMMENT = Symbol(
10484  ``
10485);
10486const CREATE_TEXT = Symbol(
10487  ``
10488);
10489const CREATE_STATIC = Symbol(
10490  ``
10491);
10492const RESOLVE_COMPONENT = Symbol(
10493  ``
10494);
10495const RESOLVE_DYNAMIC_COMPONENT = Symbol(
10496  ``
10497);
10498const RESOLVE_DIRECTIVE = Symbol(
10499  ``
10500);
10501const RESOLVE_FILTER = Symbol(
10502  ``
10503);
10504const WITH_DIRECTIVES = Symbol(
10505  ``
10506);
10507const RENDER_LIST = Symbol(``);
10508const RENDER_SLOT = Symbol(``);
10509const CREATE_SLOTS = Symbol(``);
10510const TO_DISPLAY_STRING = Symbol(
10511  ``
10512);
10513const MERGE_PROPS = Symbol(``);
10514const NORMALIZE_CLASS = Symbol(
10515  ``
10516);
10517const NORMALIZE_STYLE = Symbol(
10518  ``
10519);
10520const NORMALIZE_PROPS = Symbol(
10521  ``
10522);
10523const GUARD_REACTIVE_PROPS = Symbol(
10524  ``
10525);
10526const TO_HANDLERS = Symbol(``);
10527const CAMELIZE = Symbol(``);
10528const CAPITALIZE = Symbol(``);
10529const TO_HANDLER_KEY = Symbol(
10530  ``
10531);
10532const SET_BLOCK_TRACKING = Symbol(
10533  ``
10534);
10535const PUSH_SCOPE_ID = Symbol(``);
10536const POP_SCOPE_ID = Symbol(``);
10537const WITH_CTX = Symbol(``);
10538const UNREF = Symbol(``);
10539const IS_REF = Symbol(``);
10540const WITH_MEMO = Symbol(``);
10541const IS_MEMO_SAME = Symbol(``);
10542const helperNameMap = {
10543  [FRAGMENT]: `Fragment`,
10544  [TELEPORT]: `Teleport`,
10545  [SUSPENSE]: `Suspense`,
10546  [KEEP_ALIVE]: `KeepAlive`,
10547  [BASE_TRANSITION]: `BaseTransition`,
10548  [OPEN_BLOCK]: `openBlock`,
10549  [CREATE_BLOCK]: `createBlock`,
10550  [CREATE_ELEMENT_BLOCK]: `createElementBlock`,
10551  [CREATE_VNODE]: `createVNode`,
10552  [CREATE_ELEMENT_VNODE]: `createElementVNode`,
10553  [CREATE_COMMENT]: `createCommentVNode`,
10554  [CREATE_TEXT]: `createTextVNode`,
10555  [CREATE_STATIC]: `createStaticVNode`,
10556  [RESOLVE_COMPONENT]: `resolveComponent`,
10557  [RESOLVE_DYNAMIC_COMPONENT]: `resolveDynamicComponent`,
10558  [RESOLVE_DIRECTIVE]: `resolveDirective`,
10559  [RESOLVE_FILTER]: `resolveFilter`,
10560  [WITH_DIRECTIVES]: `withDirectives`,
10561  [RENDER_LIST]: `renderList`,
10562  [RENDER_SLOT]: `renderSlot`,
10563  [CREATE_SLOTS]: `createSlots`,
10564  [TO_DISPLAY_STRING]: `toDisplayString`,
10565  [MERGE_PROPS]: `mergeProps`,
10566  [NORMALIZE_CLASS]: `normalizeClass`,
10567  [NORMALIZE_STYLE]: `normalizeStyle`,
10568  [NORMALIZE_PROPS]: `normalizeProps`,
10569  [GUARD_REACTIVE_PROPS]: `guardReactiveProps`,
10570  [TO_HANDLERS]: `toHandlers`,
10571  [CAMELIZE]: `camelize`,
10572  [CAPITALIZE]: `capitalize`,
10573  [TO_HANDLER_KEY]: `toHandlerKey`,
10574  [SET_BLOCK_TRACKING]: `setBlockTracking`,
10575  [PUSH_SCOPE_ID]: `pushScopeId`,
10576  [POP_SCOPE_ID]: `popScopeId`,
10577  [WITH_CTX]: `withCtx`,
10578  [UNREF]: `unref`,
10579  [IS_REF]: `isRef`,
10580  [WITH_MEMO]: `withMemo`,
10581  [IS_MEMO_SAME]: `isMemoSame`
10582};
10583function registerRuntimeHelpers(helpers) {
10584  Object.getOwnPropertySymbols(helpers).forEach((s) => {
10585    helperNameMap[s] = helpers[s];
10586  });
10587}
10588const locStub = {
10589  start: { line: 1, column: 1, offset: 0 },
10590  end: { line: 1, column: 1, offset: 0 },
10591  source: ""
10592};
10593function createRoot(children, source = "") {
10594  return {
10595    type: 0,
10596    source,
10597    children,
10598    helpers: /* @__PURE__ */ new Set(),
10599    components: [],
10600    directives: [],
10601    hoists: [],
10602    imports: [],
10603    cached: [],
10604    temps: 0,
10605    codegenNode: void 0,
10606    loc: locStub
10607  };
10608}
10609function createVNodeCall(context, tag, props2, children, patchFlag, dynamicProps, directives, isBlock = false, disableTracking = false, isComponent2 = false, loc = locStub) {
10610  if (context) {
10611    if (isBlock) {
10612      context.helper(OPEN_BLOCK);
10613      context.helper(getVNodeBlockHelper(context.inSSR, isComponent2));
10614    } else {
10615      context.helper(getVNodeHelper(context.inSSR, isComponent2));
10616    }
10617    if (directives) {
10618      context.helper(WITH_DIRECTIVES);
10619    }
10620  }
10621  return {
10622    type: 13,
10623    tag,
10624    props: props2,
10625    children,
10626    patchFlag,
10627    dynamicProps,
10628    directives,
10629    isBlock,
10630    disableTracking,
10631    isComponent: isComponent2,
10632    loc
10633  };
10634}
10635function createArrayExpression(elements, loc = locStub) {
10636  return {
10637    type: 17,
10638    loc,
10639    elements
10640  };
10641}
10642function createObjectExpression(properties, loc = locStub) {
10643  return {
10644    type: 15,
10645    loc,
10646    properties
10647  };
10648}
10649function createObjectProperty(key, value) {
10650  return {
10651    type: 16,
10652    loc: locStub,
10653    key: isString$3(key) ? createSimpleExpression(key, true) : key,
10654    value
10655  };
10656}
10657function createSimpleExpression(content, isStatic = false, loc = locStub, constType = 0) {
10658  return {
10659    type: 4,
10660    loc,
10661    content,
10662    isStatic,
10663    constType: isStatic ? 3 : constType
10664  };
10665}
10666function createCompoundExpression(children, loc = locStub) {
10667  return {
10668    type: 8,
10669    loc,
10670    children
10671  };
10672}
10673function createCallExpression(callee, args = [], loc = locStub) {
10674  return {
10675    type: 14,
10676    loc,
10677    callee,
10678    arguments: args
10679  };
10680}
10681function createFunctionExpression(params, returns = void 0, newline = false, isSlot = false, loc = locStub) {
10682  return {
10683    type: 18,
10684    params,
10685    returns,
10686    newline,
10687    isSlot,
10688    loc
10689  };
10690}
10691function createConditionalExpression(test2, consequent, alternate, newline = true) {
10692  return {
10693    type: 19,
10694    test: test2,
10695    consequent,
10696    alternate,
10697    newline,
10698    loc: locStub
10699  };
10700}
10701function createCacheExpression(index2, value, needPauseTracking = false, inVOnce = false) {
10702  return {
10703    type: 20,
10704    index: index2,
10705    value,
10706    needPauseTracking,
10707    inVOnce,
10708    needArraySpread: false,
10709    loc: locStub
10710  };
10711}
10712function createBlockStatement(body) {
10713  return {
10714    type: 21,
10715    body,
10716    loc: locStub
10717  };
10718}
10719function getVNodeHelper(ssr, isComponent2) {
10720  return ssr || isComponent2 ? CREATE_VNODE : CREATE_ELEMENT_VNODE;
10721}
10722function getVNodeBlockHelper(ssr, isComponent2) {
10723  return ssr || isComponent2 ? CREATE_BLOCK : CREATE_ELEMENT_BLOCK;
10724}
10725function convertToBlock(node, { helper, removeHelper, inSSR }) {
10726  if (!node.isBlock) {
10727    node.isBlock = true;
10728    removeHelper(getVNodeHelper(inSSR, node.isComponent));
10729    helper(OPEN_BLOCK);
10730    helper(getVNodeBlockHelper(inSSR, node.isComponent));
10731  }
10732}
10733const defaultDelimitersOpen = new Uint8Array([123, 123]);
10734const defaultDelimitersClose = new Uint8Array([125, 125]);
10735function isTagStartChar(c) {
10736  return c >= 97 && c <= 122 || c >= 65 && c <= 90;
10737}
10738function isWhitespace(c) {
10739  return c === 32 || c === 10 || c === 9 || c === 12 || c === 13;
10740}
10741function isEndOfTagSection(c) {
10742  return c === 47 || c === 62 || isWhitespace(c);
10743}
10744function toCharCodes(str) {
10745  const ret = new Uint8Array(str.length);
10746  for (let i = 0; i < str.length; i++) {
10747    ret[i] = str.charCodeAt(i);
10748  }
10749  return ret;
10750}
10751const Sequences = {
10752  Cdata: new Uint8Array([67, 68, 65, 84, 65, 91]),
10753  // CDATA[
10754  CdataEnd: new Uint8Array([93, 93, 62]),
10755  // ]]>
10756  CommentEnd: new Uint8Array([45, 45, 62]),
10757  // `-->`
10758  ScriptEnd: new Uint8Array([60, 47, 115, 99, 114, 105, 112, 116]),
10759  // `<\/script`
10760  StyleEnd: new Uint8Array([60, 47, 115, 116, 121, 108, 101]),
10761  // `</style`
10762  TitleEnd: new Uint8Array([60, 47, 116, 105, 116, 108, 101]),
10763  // `</title`
10764  TextareaEnd: new Uint8Array([
10765    60,
10766    47,
10767    116,
10768    101,
10769    120,
10770    116,
10771    97,
10772    114,
10773    101,
10774    97
10775  ])
10776  // `</textarea
10777};
10778class Tokenizer {
10779  constructor(stack2, cbs) {
10780    this.stack = stack2;
10781    this.cbs = cbs;
10782    this.state = 1;
10783    this.buffer = "";
10784    this.sectionStart = 0;
10785    this.index = 0;
10786    this.entityStart = 0;
10787    this.baseState = 1;
10788    this.inRCDATA = false;
10789    this.inXML = false;
10790    this.inVPre = false;
10791    this.newlines = [];
10792    this.mode = 0;
10793    this.delimiterOpen = defaultDelimitersOpen;
10794    this.delimiterClose = defaultDelimitersClose;
10795    this.delimiterIndex = -1;
10796    this.currentSequence = void 0;
10797    this.sequenceIndex = 0;
10798  }
10799  get inSFCRoot() {
10800    return this.mode === 2 && this.stack.length === 0;
10801  }
10802  reset() {
10803    this.state = 1;
10804    this.mode = 0;
10805    this.buffer = "";
10806    this.sectionStart = 0;
10807    this.index = 0;
10808    this.baseState = 1;
10809    this.inRCDATA = false;
10810    this.currentSequence = void 0;
10811    this.newlines.length = 0;
10812    this.delimiterOpen = defaultDelimitersOpen;
10813    this.delimiterClose = defaultDelimitersClose;
10814  }
10815  /**
10816   * Generate Position object with line / column information using recorded
10817   * newline positions. We know the index is always going to be an already
10818   * processed index, so all the newlines up to this index should have been
10819   * recorded.
10820   */
10821  getPos(index2) {
10822    let line = 1;
10823    let column = index2 + 1;
10824    for (let i = this.newlines.length - 1; i >= 0; i--) {
10825      const newlineIndex = this.newlines[i];
10826      if (index2 > newlineIndex) {
10827        line = i + 2;
10828        column = index2 - newlineIndex;
10829        break;
10830      }
10831    }
10832    return {
10833      column,
10834      line,
10835      offset: index2
10836    };
10837  }
10838  peek() {
10839    return this.buffer.charCodeAt(this.index + 1);
10840  }
10841  stateText(c) {
10842    if (c === 60) {
10843      if (this.index > this.sectionStart) {
10844        this.cbs.ontext(this.sectionStart, this.index);
10845      }
10846      this.state = 5;
10847      this.sectionStart = this.index;
10848    } else if (!this.inVPre && c === this.delimiterOpen[0]) {
10849      this.state = 2;
10850      this.delimiterIndex = 0;
10851      this.stateInterpolationOpen(c);
10852    }
10853  }
10854  stateInterpolationOpen(c) {
10855    if (c === this.delimiterOpen[this.delimiterIndex]) {
10856      if (this.delimiterIndex === this.delimiterOpen.length - 1) {
10857        const start = this.index + 1 - this.delimiterOpen.length;
10858        if (start > this.sectionStart) {
10859          this.cbs.ontext(this.sectionStart, start);
10860        }
10861        this.state = 3;
10862        this.sectionStart = start;
10863      } else {
10864        this.delimiterIndex++;
10865      }
10866    } else if (this.inRCDATA) {
10867      this.state = 32;
10868      this.stateInRCDATA(c);
10869    } else {
10870      this.state = 1;
10871      this.stateText(c);
10872    }
10873  }
10874  stateInterpolation(c) {
10875    if (c === this.delimiterClose[0]) {
10876      this.state = 4;
10877      this.delimiterIndex = 0;
10878      this.stateInterpolationClose(c);
10879    }
10880  }
10881  stateInterpolationClose(c) {
10882    if (c === this.delimiterClose[this.delimiterIndex]) {
10883      if (this.delimiterIndex === this.delimiterClose.length - 1) {
10884        this.cbs.oninterpolation(this.sectionStart, this.index + 1);
10885        if (this.inRCDATA) {
10886          this.state = 32;
10887        } else {
10888          this.state = 1;
10889        }
10890        this.sectionStart = this.index + 1;
10891      } else {
10892        this.delimiterIndex++;
10893      }
10894    } else {
10895      this.state = 3;
10896      this.stateInterpolation(c);
10897    }
10898  }
10899  stateSpecialStartSequence(c) {
10900    const isEnd = this.sequenceIndex === this.currentSequence.length;
10901    const isMatch = isEnd ? (
10902      // If we are at the end of the sequence, make sure the tag name has ended
10903      isEndOfTagSection(c)
10904    ) : (
10905      // Otherwise, do a case-insensitive comparison
10906      (c | 32) === this.currentSequence[this.sequenceIndex]
10907    );
10908    if (!isMatch) {
10909      this.inRCDATA = false;
10910    } else if (!isEnd) {
10911      this.sequenceIndex++;
10912      return;
10913    }
10914    this.sequenceIndex = 0;
10915    this.state = 6;
10916    this.stateInTagName(c);
10917  }
10918  /** Look for an end tag. For <title> and <textarea>, also decode entities. */
10919  stateInRCDATA(c) {
10920    if (this.sequenceIndex === this.currentSequence.length) {
10921      if (c === 62 || isWhitespace(c)) {
10922        const endOfText = this.index - this.currentSequence.length;
10923        if (this.sectionStart < endOfText) {
10924          const actualIndex = this.index;
10925          this.index = endOfText;
10926          this.cbs.ontext(this.sectionStart, endOfText);
10927          this.index = actualIndex;
10928        }
10929        this.sectionStart = endOfText + 2;
10930        this.stateInClosingTagName(c);
10931        this.inRCDATA = false;
10932        return;
10933      }
10934      this.sequenceIndex = 0;
10935    }
10936    if ((c | 32) === this.currentSequence[this.sequenceIndex]) {
10937      this.sequenceIndex += 1;
10938    } else if (this.sequenceIndex === 0) {
10939      if (this.currentSequence === Sequences.TitleEnd || this.currentSequence === Sequences.TextareaEnd && !this.inSFCRoot) {
10940        if (!this.inVPre && c === this.delimiterOpen[0]) {
10941          this.state = 2;
10942          this.delimiterIndex = 0;
10943          this.stateInterpolationOpen(c);
10944        }
10945      } else if (this.fastForwardTo(60)) {
10946        this.sequenceIndex = 1;
10947      }
10948    } else {
10949      this.sequenceIndex = Number(c === 60);
10950    }
10951  }
10952  stateCDATASequence(c) {
10953    if (c === Sequences.Cdata[this.sequenceIndex]) {
10954      if (++this.sequenceIndex === Sequences.Cdata.length) {
10955        this.state = 28;
10956        this.currentSequence = Sequences.CdataEnd;
10957        this.sequenceIndex = 0;
10958        this.sectionStart = this.index + 1;
10959      }
10960    } else {
10961      this.sequenceIndex = 0;
10962      this.state = 23;
10963      this.stateInDeclaration(c);
10964    }
10965  }
10966  /**
10967   * When we wait for one specific character, we can speed things up
10968   * by skipping through the buffer until we find it.
10969   *
10970   * @returns Whether the character was found.
10971   */
10972  fastForwardTo(c) {
10973    while (++this.index < this.buffer.length) {
10974      const cc = this.buffer.charCodeAt(this.index);
10975      if (cc === 10) {
10976        this.newlines.push(this.index);
10977      }
10978      if (cc === c) {
10979        return true;
10980      }
10981    }
10982    this.index = this.buffer.length - 1;
10983    return false;
10984  }
10985  /**
10986   * Comments and CDATA end with `-->` and `]]>`.
10987   *
10988   * Their common qualities are:
10989   * - Their end sequences have a distinct character they start with.
10990   * - That character is then repeated, so we have to check multiple repeats.
10991   * - All characters but the start character of the sequence can be skipped.
10992   */
10993  stateInCommentLike(c) {
10994    if (c === this.currentSequence[this.sequenceIndex]) {
10995      if (++this.sequenceIndex === this.currentSequence.length) {
10996        if (this.currentSequence === Sequences.CdataEnd) {
10997          this.cbs.oncdata(this.sectionStart, this.index - 2);
10998        } else {
10999          this.cbs.oncomment(this.sectionStart, this.index - 2);
11000        }
11001        this.sequenceIndex = 0;
11002        this.sectionStart = this.index + 1;
11003        this.state = 1;
11004      }
11005    } else if (this.sequenceIndex === 0) {
11006      if (this.fastForwardTo(this.currentSequence[0])) {
11007        this.sequenceIndex = 1;
11008      }
11009    } else if (c !== this.currentSequence[this.sequenceIndex - 1]) {
11010      this.sequenceIndex = 0;
11011    }
11012  }
11013  startSpecial(sequence, offset) {
11014    this.enterRCDATA(sequence, offset);
11015    this.state = 31;
11016  }
11017  enterRCDATA(sequence, offset) {
11018    this.inRCDATA = true;
11019    this.currentSequence = sequence;
11020    this.sequenceIndex = offset;
11021  }
11022  stateBeforeTagName(c) {
11023    if (c === 33) {
11024      this.state = 22;
11025      this.sectionStart = this.index + 1;
11026    } else if (c === 63) {
11027      this.state = 24;
11028      this.sectionStart = this.index + 1;
11029    } else if (isTagStartChar(c)) {
11030      this.sectionStart = this.index;
11031      if (this.mode === 0) {
11032        this.state = 6;
11033      } else if (this.inSFCRoot) {
11034        this.state = 34;
11035      } else if (!this.inXML) {
11036        if (c === 116) {
11037          this.state = 30;
11038        } else {
11039          this.state = c === 115 ? 29 : 6;
11040        }
11041      } else {
11042        this.state = 6;
11043      }
11044    } else if (c === 47) {
11045      this.state = 8;
11046    } else {
11047      this.state = 1;
11048      this.stateText(c);
11049    }
11050  }
11051  stateInTagName(c) {
11052    if (isEndOfTagSection(c)) {
11053      this.handleTagName(c);
11054    }
11055  }
11056  stateInSFCRootTagName(c) {
11057    if (isEndOfTagSection(c)) {
11058      const tag = this.buffer.slice(this.sectionStart, this.index);
11059      if (tag !== "template") {
11060        this.enterRCDATA(toCharCodes(`</` + tag), 0);
11061      }
11062      this.handleTagName(c);
11063    }
11064  }
11065  handleTagName(c) {
11066    this.cbs.onopentagname(this.sectionStart, this.index);
11067    this.sectionStart = -1;
11068    this.state = 11;
11069    this.stateBeforeAttrName(c);
11070  }
11071  stateBeforeClosingTagName(c) {
11072    if (isWhitespace(c)) ;
11073    else if (c === 62) {
11074      this.state = 1;
11075      this.sectionStart = this.index + 1;
11076    } else {
11077      this.state = isTagStartChar(c) ? 9 : 27;
11078      this.sectionStart = this.index;
11079    }
11080  }
11081  stateInClosingTagName(c) {
11082    if (c === 62 || isWhitespace(c)) {
11083      this.cbs.onclosetag(this.sectionStart, this.index);
11084      this.sectionStart = -1;
11085      this.state = 10;
11086      this.stateAfterClosingTagName(c);
11087    }
11088  }
11089  stateAfterClosingTagName(c) {
11090    if (c === 62) {
11091      this.state = 1;
11092      this.sectionStart = this.index + 1;
11093    }
11094  }
11095  stateBeforeAttrName(c) {
11096    if (c === 62) {
11097      this.cbs.onopentagend(this.index);
11098      if (this.inRCDATA) {
11099        this.state = 32;
11100      } else {
11101        this.state = 1;
11102      }
11103      this.sectionStart = this.index + 1;
11104    } else if (c === 47) {
11105      this.state = 7;
11106    } else if (c === 60 && this.peek() === 47) {
11107      this.cbs.onopentagend(this.index);
11108      this.state = 5;
11109      this.sectionStart = this.index;
11110    } else if (!isWhitespace(c)) {
11111      this.handleAttrStart(c);
11112    }
11113  }
11114  handleAttrStart(c) {
11115    if (c === 118 && this.peek() === 45) {
11116      this.state = 13;
11117      this.sectionStart = this.index;
11118    } else if (c === 46 || c === 58 || c === 64 || c === 35) {
11119      this.cbs.ondirname(this.index, this.index + 1);
11120      this.state = 14;
11121      this.sectionStart = this.index + 1;
11122    } else {
11123      this.state = 12;
11124      this.sectionStart = this.index;
11125    }
11126  }
11127  stateInSelfClosingTag(c) {
11128    if (c === 62) {
11129      this.cbs.onselfclosingtag(this.index);
11130      this.state = 1;
11131      this.sectionStart = this.index + 1;
11132      this.inRCDATA = false;
11133    } else if (!isWhitespace(c)) {
11134      this.state = 11;
11135      this.stateBeforeAttrName(c);
11136    }
11137  }
11138  stateInAttrName(c) {
11139    if (c === 61 || isEndOfTagSection(c)) {
11140      this.cbs.onattribname(this.sectionStart, this.index);
11141      this.handleAttrNameEnd(c);
11142    }
11143  }
11144  stateInDirName(c) {
11145    if (c === 61 || isEndOfTagSection(c)) {
11146      this.cbs.ondirname(this.sectionStart, this.index);
11147      this.handleAttrNameEnd(c);
11148    } else if (c === 58) {
11149      this.cbs.ondirname(this.sectionStart, this.index);
11150      this.state = 14;
11151      this.sectionStart = this.index + 1;
11152    } else if (c === 46) {
11153      this.cbs.ondirname(this.sectionStart, this.index);
11154      this.state = 16;
11155      this.sectionStart = this.index + 1;
11156    }
11157  }
11158  stateInDirArg(c) {
11159    if (c === 61 || isEndOfTagSection(c)) {
11160      this.cbs.ondirarg(this.sectionStart, this.index);
11161      this.handleAttrNameEnd(c);
11162    } else if (c === 91) {
11163      this.state = 15;
11164    } else if (c === 46) {
11165      this.cbs.ondirarg(this.sectionStart, this.index);
11166      this.state = 16;
11167      this.sectionStart = this.index + 1;
11168    }
11169  }
11170  stateInDynamicDirArg(c) {
11171    if (c === 93) {
11172      this.state = 14;
11173    } else if (c === 61 || isEndOfTagSection(c)) {
11174      this.cbs.ondirarg(this.sectionStart, this.index + 1);
11175      this.handleAttrNameEnd(c);
11176    }
11177  }
11178  stateInDirModifier(c) {
11179    if (c === 61 || isEndOfTagSection(c)) {
11180      this.cbs.ondirmodifier(this.sectionStart, this.index);
11181      this.handleAttrNameEnd(c);
11182    } else if (c === 46) {
11183      this.cbs.ondirmodifier(this.sectionStart, this.index);
11184      this.sectionStart = this.index + 1;
11185    }
11186  }
11187  handleAttrNameEnd(c) {
11188    this.sectionStart = this.index;
11189    this.state = 17;
11190    this.cbs.onattribnameend(this.index);
11191    this.stateAfterAttrName(c);
11192  }
11193  stateAfterAttrName(c) {
11194    if (c === 61) {
11195      this.state = 18;
11196    } else if (c === 47 || c === 62) {
11197      this.cbs.onattribend(0, this.sectionStart);
11198      this.sectionStart = -1;
11199      this.state = 11;
11200      this.stateBeforeAttrName(c);
11201    } else if (!isWhitespace(c)) {
11202      this.cbs.onattribend(0, this.sectionStart);
11203      this.handleAttrStart(c);
11204    }
11205  }
11206  stateBeforeAttrValue(c) {
11207    if (c === 34) {
11208      this.state = 19;
11209      this.sectionStart = this.index + 1;
11210    } else if (c === 39) {
11211      this.state = 20;
11212      this.sectionStart = this.index + 1;
11213    } else if (!isWhitespace(c)) {
11214      this.sectionStart = this.index;
11215      this.state = 21;
11216      this.stateInAttrValueNoQuotes(c);
11217    }
11218  }
11219  handleInAttrValue(c, quote) {
11220    if (c === quote || this.fastForwardTo(quote)) {
11221      this.cbs.onattribdata(this.sectionStart, this.index);
11222      this.sectionStart = -1;
11223      this.cbs.onattribend(
11224        quote === 34 ? 3 : 2,
11225        this.index + 1
11226      );
11227      this.state = 11;
11228    }
11229  }
11230  stateInAttrValueDoubleQuotes(c) {
11231    this.handleInAttrValue(c, 34);
11232  }
11233  stateInAttrValueSingleQuotes(c) {
11234    this.handleInAttrValue(c, 39);
11235  }
11236  stateInAttrValueNoQuotes(c) {
11237    if (isWhitespace(c) || c === 62) {
11238      this.cbs.onattribdata(this.sectionStart, this.index);
11239      this.sectionStart = -1;
11240      this.cbs.onattribend(1, this.index);
11241      this.state = 11;
11242      this.stateBeforeAttrName(c);
11243    } else if (c === 39 || c === 60 || c === 61 || c === 96) {
11244      this.cbs.onerr(
11245        18,
11246        this.index
11247      );
11248    } else ;
11249  }
11250  stateBeforeDeclaration(c) {
11251    if (c === 91) {
11252      this.state = 26;
11253      this.sequenceIndex = 0;
11254    } else {
11255      this.state = c === 45 ? 25 : 23;
11256    }
11257  }
11258  stateInDeclaration(c) {
11259    if (c === 62 || this.fastForwardTo(62)) {
11260      this.state = 1;
11261      this.sectionStart = this.index + 1;
11262    }
11263  }
11264  stateInProcessingInstruction(c) {
11265    if (c === 62 || this.fastForwardTo(62)) {
11266      this.cbs.onprocessinginstruction(this.sectionStart, this.index);
11267      this.state = 1;
11268      this.sectionStart = this.index + 1;
11269    }
11270  }
11271  stateBeforeComment(c) {
11272    if (c === 45) {
11273      this.state = 28;
11274      this.currentSequence = Sequences.CommentEnd;
11275      this.sequenceIndex = 2;
11276      this.sectionStart = this.index + 1;
11277    } else {
11278      this.state = 23;
11279    }
11280  }
11281  stateInSpecialComment(c) {
11282    if (c === 62 || this.fastForwardTo(62)) {
11283      this.cbs.oncomment(this.sectionStart, this.index);
11284      this.state = 1;
11285      this.sectionStart = this.index + 1;
11286    }
11287  }
11288  stateBeforeSpecialS(c) {
11289    if (c === Sequences.ScriptEnd[3]) {
11290      this.startSpecial(Sequences.ScriptEnd, 4);
11291    } else if (c === Sequences.StyleEnd[3]) {
11292      this.startSpecial(Sequences.StyleEnd, 4);
11293    } else {
11294      this.state = 6;
11295      this.stateInTagName(c);
11296    }
11297  }
11298  stateBeforeSpecialT(c) {
11299    if (c === Sequences.TitleEnd[3]) {
11300      this.startSpecial(Sequences.TitleEnd, 4);
11301    } else if (c === Sequences.TextareaEnd[3]) {
11302      this.startSpecial(Sequences.TextareaEnd, 4);
11303    } else {
11304      this.state = 6;
11305      this.stateInTagName(c);
11306    }
11307  }
11308  startEntity() {
11309  }
11310  stateInEntity() {
11311  }
11312  /**
11313   * Iterates through the buffer, calling the function corresponding to the current state.
11314   *
11315   * States that are more likely to be hit are higher up, as a performance improvement.
11316   */
11317  parse(input) {
11318    this.buffer = input;
11319    while (this.index < this.buffer.length) {
11320      const c = this.buffer.charCodeAt(this.index);
11321      if (c === 10) {
11322        this.newlines.push(this.index);
11323      }
11324      switch (this.state) {
11325        case 1: {
11326          this.stateText(c);
11327          break;
11328        }
11329        case 2: {
11330          this.stateInterpolationOpen(c);
11331          break;
11332        }
11333        case 3: {
11334          this.stateInterpolation(c);
11335          break;
11336        }
11337        case 4: {
11338          this.stateInterpolationClose(c);
11339          break;
11340        }
11341        case 31: {
11342          this.stateSpecialStartSequence(c);
11343          break;
11344        }
11345        case 32: {
11346          this.stateInRCDATA(c);
11347          break;
11348        }
11349        case 26: {
11350          this.stateCDATASequence(c);
11351          break;
11352        }
11353        case 19: {
11354          this.stateInAttrValueDoubleQuotes(c);
11355          break;
11356        }
11357        case 12: {
11358          this.stateInAttrName(c);
11359          break;
11360        }
11361        case 13: {
11362          this.stateInDirName(c);
11363          break;
11364        }
11365        case 14: {
11366          this.stateInDirArg(c);
11367          break;
11368        }
11369        case 15: {
11370          this.stateInDynamicDirArg(c);
11371          break;
11372        }
11373        case 16: {
11374          this.stateInDirModifier(c);
11375          break;
11376        }
11377        case 28: {
11378          this.stateInCommentLike(c);
11379          break;
11380        }
11381        case 27: {
11382          this.stateInSpecialComment(c);
11383          break;
11384        }
11385        case 11: {
11386          this.stateBeforeAttrName(c);
11387          break;
11388        }
11389        case 6: {
11390          this.stateInTagName(c);
11391          break;
11392        }
11393        case 34: {
11394          this.stateInSFCRootTagName(c);
11395          break;
11396        }
11397        case 9: {
11398          this.stateInClosingTagName(c);
11399          break;
11400        }
11401        case 5: {
11402          this.stateBeforeTagName(c);
11403          break;
11404        }
11405        case 17: {
11406          this.stateAfterAttrName(c);
11407          break;
11408        }
11409        case 20: {
11410          this.stateInAttrValueSingleQuotes(c);
11411          break;
11412        }
11413        case 18: {
11414          this.stateBeforeAttrValue(c);
11415          break;
11416        }
11417        case 8: {
11418          this.stateBeforeClosingTagName(c);
11419          break;
11420        }
11421        case 10: {
11422          this.stateAfterClosingTagName(c);
11423          break;
11424        }
11425        case 29: {
11426          this.stateBeforeSpecialS(c);
11427          break;
11428        }
11429        case 30: {
11430          this.stateBeforeSpecialT(c);
11431          break;
11432        }
11433        case 21: {
11434          this.stateInAttrValueNoQuotes(c);
11435          break;
11436        }
11437        case 7: {
11438          this.stateInSelfClosingTag(c);
11439          break;
11440        }
11441        case 23: {
11442          this.stateInDeclaration(c);
11443          break;
11444        }
11445        case 22: {
11446          this.stateBeforeDeclaration(c);
11447          break;
11448        }
11449        case 25: {
11450          this.stateBeforeComment(c);
11451          break;
11452        }
11453        case 24: {
11454          this.stateInProcessingInstruction(c);
11455          break;
11456        }
11457        case 33: {
11458          this.stateInEntity();
11459          break;
11460        }
11461      }
11462      this.index++;
11463    }
11464    this.cleanup();
11465    this.finish();
11466  }
11467  /**
11468   * Remove data that has already been consumed from the buffer.
11469   */
11470  cleanup() {
11471    if (this.sectionStart !== this.index) {
11472      if (this.state === 1 || this.state === 32 && this.sequenceIndex === 0) {
11473        this.cbs.ontext(this.sectionStart, this.index);
11474        this.sectionStart = this.index;
11475      } else if (this.state === 19 || this.state === 20 || this.state === 21) {
11476        this.cbs.onattribdata(this.sectionStart, this.index);
11477        this.sectionStart = this.index;
11478      }
11479    }
11480  }
11481  finish() {
11482    this.handleTrailingData();
11483    this.cbs.onend();
11484  }
11485  /** Handle any trailing data. */
11486  handleTrailingData() {
11487    const endIndex = this.buffer.length;
11488    if (this.sectionStart >= endIndex) {
11489      return;
11490    }
11491    if (this.state === 28) {
11492      if (this.currentSequence === Sequences.CdataEnd) {
11493        this.cbs.oncdata(this.sectionStart, endIndex);
11494      } else {
11495        this.cbs.oncomment(this.sectionStart, endIndex);
11496      }
11497    } else if (this.state === 6 || this.state === 11 || this.state === 18 || this.state === 17 || this.state === 12 || this.state === 13 || this.state === 14 || this.state === 15 || this.state === 16 || this.state === 20 || this.state === 19 || this.state === 21 || this.state === 9) ;
11498    else {
11499      this.cbs.ontext(this.sectionStart, endIndex);
11500    }
11501  }
vendor: 5,164 bytes, lines 11502-11667
11502  emitCodePoint(cp, consumed) {
11503  }
11504}
11505function getCompatValue(key, { compatConfig }) {
11506  const value = compatConfig && compatConfig[key];
11507  if (key === "MODE") {
11508    return value || 3;
11509  } else {
11510    return value;
11511  }
11512}
11513function isCompatEnabled(key, context) {
11514  const mode = getCompatValue("MODE", context);
11515  const value = getCompatValue(key, context);
11516  return mode === 3 ? value === true : value !== false;
11517}
11518function checkCompatEnabled(key, context, loc, ...args) {
11519  const enabled = isCompatEnabled(key, context);
11520  return enabled;
11521}
11522function defaultOnError$1(error) {
11523  throw error;
11524}
11525function defaultOnWarn(msg) {
11526}
11527function createCompilerError(code, loc, messages, additionalMessage) {
11528  const msg = `https://vuejs.org/error-reference/#compiler-${code}`;
11529  const error = new SyntaxError(String(msg));
11530  error.code = code;
11531  error.loc = loc;
11532  return error;
11533}
11534const isStaticExp = (p2) => p2.type === 4 && p2.isStatic;
11535function isCoreComponent(tag) {
11536  switch (tag) {
11537    case "Teleport":
11538    case "teleport":
11539      return TELEPORT;
11540    case "Suspense":
11541    case "suspense":
11542      return SUSPENSE;
11543    case "KeepAlive":
11544    case "keep-alive":
11545      return KEEP_ALIVE;
11546    case "BaseTransition":
11547    case "base-transition":
11548      return BASE_TRANSITION;
11549  }
11550}
11551const nonIdentifierRE = /^\d|[^\$\w\xA0-\uFFFF]/;
11552const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name);
11553const validFirstIdentCharRE = /[A-Za-z_$\xA0-\uFFFF]/;
11554const validIdentCharRE = /[\.\?\w$\xA0-\uFFFF]/;
11555const whitespaceRE = /\s+[.[]\s*|\s*[.[]\s+/g;
11556const getExpSource = (exp) => exp.type === 4 ? exp.content : exp.loc.source;
11557const isMemberExpressionBrowser = (exp) => {
11558  const path = getExpSource(exp).trim().replace(whitespaceRE, (s) => s.trim());
11559  let state2 = 0;
11560  let stateStack = [];
11561  let currentOpenBracketCount = 0;
11562  let currentOpenParensCount = 0;
11563  let currentStringType = null;
11564  for (let i = 0; i < path.length; i++) {
11565    const char = path.charAt(i);
11566    switch (state2) {
11567      case 0:
11568        if (char === "[") {
11569          stateStack.push(state2);
11570          state2 = 1;
11571          currentOpenBracketCount++;
11572        } else if (char === "(") {
11573          stateStack.push(state2);
11574          state2 = 2;
11575          currentOpenParensCount++;
11576        } else if (!(i === 0 ? validFirstIdentCharRE : validIdentCharRE).test(char)) {
11577          return false;
11578        }
11579        break;
11580      case 1:
11581        if (char === `'` || char === `"` || char === "`") {
11582          stateStack.push(state2);
11583          state2 = 3;
11584          currentStringType = char;
11585        } else if (char === `[`) {
11586          currentOpenBracketCount++;
11587        } else if (char === `]`) {
11588          if (!--currentOpenBracketCount) {
11589            state2 = stateStack.pop();
11590          }
11591        }
11592        break;
11593      case 2:
11594        if (char === `'` || char === `"` || char === "`") {
11595          stateStack.push(state2);
11596          state2 = 3;
11597          currentStringType = char;
11598        } else if (char === `(`) {
11599          currentOpenParensCount++;
11600        } else if (char === `)`) {
11601          if (i === path.length - 1) {
11602            return false;
11603          }
11604          if (!--currentOpenParensCount) {
11605            state2 = stateStack.pop();
11606          }
11607        }
11608        break;
11609      case 3:
11610        if (char === currentStringType) {
11611          state2 = stateStack.pop();
11612          currentStringType = null;
11613        }
11614        break;
11615    }
11616  }
11617  return !currentOpenBracketCount && !currentOpenParensCount;
11618};
11619const isMemberExpression = isMemberExpressionBrowser;
11620const fnExpRE = /^\s*(async\s*)?(\([^)]*?\)|[\w$_]+)\s*(:[^=]+)?=>|^\s*(async\s+)?function(?:\s+[\w$]+)?\s*\(/;
11621const isFnExpressionBrowser = (exp) => fnExpRE.test(getExpSource(exp));
11622const isFnExpression = isFnExpressionBrowser;
11623function findDir(node, name, allowEmpty = false) {
11624  for (let i = 0; i < node.props.length; i++) {
11625    const p2 = node.props[i];
11626    if (p2.type === 7 && (allowEmpty || p2.exp) && (isString$3(name) ? p2.name === name : name.test(p2.name))) {
11627      return p2;
11628    }
11629  }
11630}
11631function findProp(node, name, dynamicOnly = false, allowEmpty = false) {
11632  for (let i = 0; i < node.props.length; i++) {
11633    const p2 = node.props[i];
11634    if (p2.type === 6) {
11635      if (dynamicOnly) continue;
11636      if (p2.name === name && (p2.value || allowEmpty)) {
11637        return p2;
11638      }
11639    } else if (p2.name === "bind" && (p2.exp || allowEmpty) && isStaticArgOf(p2.arg, name)) {
11640      return p2;
11641    }
11642  }
11643}
11644function isStaticArgOf(arg, name) {
11645  return !!(arg && isStaticExp(arg) && arg.content === name);
11646}
11647function hasDynamicKeyVBind(node) {
11648  return node.props.some(
11649    (p2) => p2.type === 7 && p2.name === "bind" && (!p2.arg || // v-bind="obj"
11650    p2.arg.type !== 4 || // v-bind:[_ctx.foo]
11651    !p2.arg.isStatic)
11652    // v-bind:[foo]
11653  );
11654}
11655function isText$1(node) {
11656  return node.type === 5 || node.type === 2;
11657}
11658function isVSlot(p2) {
11659  return p2.type === 7 && p2.name === "slot";
11660}
11661function isTemplateNode(node) {
11662  return node.type === 1 && node.tagType === 3;
11663}
11664function isSlotOutlet(node) {
11665  return node.type === 1 && node.tagType === 2;
11666}
11667const propsHelperSet = /* @__PURE__ */ new Set([NORMALIZE_PROPS, GUARD_REACTIVE_PROP
vendor: 2,202 bytes, lines 11667-11739
11667S]);
11668function getUnnormalizedProps(props2, callPath = []) {
11669  if (props2 && !isString$3(props2) && props2.type === 14) {
11670    const callee = props2.callee;
11671    if (!isString$3(callee) && propsHelperSet.has(callee)) {
11672      return getUnnormalizedProps(
11673        props2.arguments[0],
11674        callPath.concat(props2)
11675      );
11676    }
11677  }
11678  return [props2, callPath];
11679}
11680function injectProp(node, prop, context) {
11681  let propsWithInjection;
11682  let props2 = node.type === 13 ? node.props : node.arguments[2];
11683  let callPath = [];
11684  let parentCall;
11685  if (props2 && !isString$3(props2) && props2.type === 14) {
11686    const ret = getUnnormalizedProps(props2);
11687    props2 = ret[0];
11688    callPath = ret[1];
11689    parentCall = callPath[callPath.length - 1];
11690  }
11691  if (props2 == null || isString$3(props2)) {
11692    propsWithInjection = createObjectExpression([prop]);
11693  } else if (props2.type === 14) {
11694    const first = props2.arguments[0];
11695    if (!isString$3(first) && first.type === 15) {
11696      if (!hasProp(prop, first)) {
11697        first.properties.unshift(prop);
11698      }
11699    } else {
11700      if (props2.callee === TO_HANDLERS) {
11701        propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
11702          createObjectExpression([prop]),
11703          props2
11704        ]);
11705      } else {
11706        props2.arguments.unshift(createObjectExpression([prop]));
11707      }
11708    }
11709    !propsWithInjection && (propsWithInjection = props2);
11710  } else if (props2.type === 15) {
11711    if (!hasProp(prop, props2)) {
11712      props2.properties.unshift(prop);
11713    }
11714    propsWithInjection = props2;
11715  } else {
11716    propsWithInjection = createCallExpression(context.helper(MERGE_PROPS), [
11717      createObjectExpression([prop]),
11718      props2
11719    ]);
11720    if (parentCall && parentCall.callee === GUARD_REACTIVE_PROPS) {
11721      parentCall = callPath[callPath.length - 2];
11722    }
11723  }
11724  if (node.type === 13) {
11725    if (parentCall) {
11726      parentCall.arguments[0] = propsWithInjection;
11727    } else {
11728      node.props = propsWithInjection;
11729    }
11730  } else {
11731    if (parentCall) {
11732      parentCall.arguments[0] = propsWithInjection;
11733    } else {
11734      node.arguments[2] = propsWithInjection;
11735    }
11736  }
11737}
11738function hasProp(prop, props2) {
11739  let result = false;
vendor: 5,372 bytes, lines 11740-11939
11740  if (prop.key.type === 4) {
11741    const propKeyName = prop.key.content;
11742    result = props2.properties.some(
11743      (p2) => p2.key.type === 4 && p2.key.content === propKeyName
11744    );
11745  }
11746  return result;
11747}
11748function toValidAssetId(name, type) {
11749  return `_${type}_${name.replace(/[^\w]/g, (searchValue, replaceValue) => {
11750    return searchValue === "-" ? "_" : name.charCodeAt(replaceValue).toString();
11751  })}`;
11752}
11753function getMemoedVNodeCall(node) {
11754  if (node.type === 14 && node.callee === WITH_MEMO) {
11755    return node.arguments[1].returns;
11756  } else {
11757    return node;
11758  }
11759}
11760const forAliasRE = /([\s\S]*?)\s+(?:in|of)\s+(\S[\s\S]*)/;
11761const defaultParserOptions = {
11762  parseMode: "base",
11763  ns: 0,
11764  delimiters: [`{{`, `}}`],
11765  getNamespace: () => 0,
11766  isVoidTag: NO,
11767  isPreTag: NO,
11768  isIgnoreNewlineTag: NO,
11769  isCustomElement: NO,
11770  onError: defaultOnError$1,
11771  onWarn: defaultOnWarn,
11772  comments: false,
11773  prefixIdentifiers: false
11774};
11775let currentOptions = defaultParserOptions;
11776let currentRoot = null;
11777let currentInput = "";
11778let currentOpenTag = null;
11779let currentProp = null;
11780let currentAttrValue = "";
11781let currentAttrStartIndex = -1;
11782let currentAttrEndIndex = -1;
11783let inPre = 0;
11784let inVPre = false;
11785let currentVPreBoundary = null;
11786const stack = [];
11787const tokenizer = new Tokenizer(stack, {
11788  onerr: emitError,
11789  ontext(start, end) {
11790    onText(getSlice(start, end), start, end);
11791  },
11792  ontextentity(char, start, end) {
11793    onText(char, start, end);
11794  },
11795  oninterpolation(start, end) {
11796    if (inVPre) {
11797      return onText(getSlice(start, end), start, end);
11798    }
11799    let innerStart = start + tokenizer.delimiterOpen.length;
11800    let innerEnd = end - tokenizer.delimiterClose.length;
11801    while (isWhitespace(currentInput.charCodeAt(innerStart))) {
11802      innerStart++;
11803    }
11804    while (isWhitespace(currentInput.charCodeAt(innerEnd - 1))) {
11805      innerEnd--;
11806    }
11807    let exp = getSlice(innerStart, innerEnd);
11808    if (exp.includes("&")) {
11809      {
11810        exp = currentOptions.decodeEntities(exp, false);
11811      }
11812    }
11813    addNode({
11814      type: 5,
11815      content: createExp(exp, false, getLoc(innerStart, innerEnd)),
11816      loc: getLoc(start, end)
11817    });
11818  },
11819  onopentagname(start, end) {
11820    const name = getSlice(start, end);
11821    currentOpenTag = {
11822      type: 1,
11823      tag: name,
11824      ns: currentOptions.getNamespace(name, stack[0], currentOptions.ns),
11825      tagType: 0,
11826      // will be refined on tag close
11827      props: [],
11828      children: [],
11829      loc: getLoc(start - 1, end),
11830      codegenNode: void 0
11831    };
11832  },
11833  onopentagend(end) {
11834    endOpenTag(end);
11835  },
11836  onclosetag(start, end) {
11837    const name = getSlice(start, end);
11838    if (!currentOptions.isVoidTag(name)) {
11839      let found = false;
11840      for (let i = 0; i < stack.length; i++) {
11841        const e = stack[i];
11842        if (e.tag.toLowerCase() === name.toLowerCase()) {
11843          found = true;
11844          if (i > 0) {
11845            emitError(24, stack[0].loc.start.offset);
11846          }
11847          for (let j = 0; j <= i; j++) {
11848            const el = stack.shift();
11849            onCloseTag(el, end, j < i);
11850          }
11851          break;
11852        }
11853      }
11854      if (!found) {
11855        emitError(23, backTrack(start, 60));
11856      }
11857    }
11858  },
11859  onselfclosingtag(end) {
11860    const name = currentOpenTag.tag;
11861    currentOpenTag.isSelfClosing = true;
11862    endOpenTag(end);
11863    if (stack[0] && stack[0].tag === name) {
11864      onCloseTag(stack.shift(), end);
11865    }
11866  },
11867  onattribname(start, end) {
11868    currentProp = {
11869      type: 6,
11870      name: getSlice(start, end),
11871      nameLoc: getLoc(start, end),
11872      value: void 0,
11873      loc: getLoc(start)
11874    };
11875  },
11876  ondirname(start, end) {
11877    const raw = getSlice(start, end);
11878    const name = raw === "." || raw === ":" ? "bind" : raw === "@" ? "on" : raw === "#" ? "slot" : raw.slice(2);
11879    if (!inVPre && name === "") {
11880      emitError(26, start);
11881    }
11882    if (inVPre || name === "") {
11883      currentProp = {
11884        type: 6,
11885        name: raw,
11886        nameLoc: getLoc(start, end),
11887        value: void 0,
11888        loc: getLoc(start)
11889      };
11890    } else {
11891      currentProp = {
11892        type: 7,
11893        name,
11894        rawName: raw,
11895        exp: void 0,
11896        arg: void 0,
11897        modifiers: raw === "." ? [createSimpleExpression("prop")] : [],
11898        loc: getLoc(start)
11899      };
11900      if (name === "pre") {
11901        inVPre = tokenizer.inVPre = true;
11902        currentVPreBoundary = currentOpenTag;
11903        const props2 = currentOpenTag.props;
11904        for (let i = 0; i < props2.length; i++) {
11905          if (props2[i].type === 7) {
11906            props2[i] = dirToAttr(props2[i]);
11907          }
11908        }
11909      }
11910    }
11911  },
11912  ondirarg(start, end) {
11913    if (start === end) return;
11914    const arg = getSlice(start, end);
11915    if (inVPre) {
11916      currentProp.name += arg;
11917      setLocEnd(currentProp.nameLoc, end);
11918    } else {
11919      const isStatic = arg[0] !== `[`;
11920      currentProp.arg = createExp(
11921        isStatic ? arg : arg.slice(1, -1),
11922        isStatic,
11923        getLoc(start, end),
11924        isStatic ? 3 : 0
11925      );
11926    }
11927  },
11928  ondirmodifier(start, end) {
11929    const mod = getSlice(start, end);
11930    if (inVPre) {
11931      currentProp.name += "." + mod;
11932      setLocEnd(currentProp.nameLoc, end);
11933    } else if (currentProp.name === "slot") {
11934      const arg = currentProp.arg;
11935      if (arg) {
11936        arg.content += "." + mod;
11937        setLocEnd(arg.loc, end);
11938      }
11939    } else {
vendor: 9,319 bytes, lines 11940-12249
11940      const exp = createSimpleExpression(mod, true, getLoc(start, end));
11941      currentProp.modifiers.push(exp);
11942    }
11943  },
11944  onattribdata(start, end) {
11945    currentAttrValue += getSlice(start, end);
11946    if (currentAttrStartIndex < 0) currentAttrStartIndex = start;
11947    currentAttrEndIndex = end;
11948  },
11949  onattribentity(char, start, end) {
11950    currentAttrValue += char;
11951    if (currentAttrStartIndex < 0) currentAttrStartIndex = start;
11952    currentAttrEndIndex = end;
11953  },
11954  onattribnameend(end) {
11955    const start = currentProp.loc.start.offset;
11956    const name = getSlice(start, end);
11957    if (currentProp.type === 7) {
11958      currentProp.rawName = name;
11959    }
11960    if (currentOpenTag.props.some(
11961      (p2) => (p2.type === 7 ? p2.rawName : p2.name) === name
11962    )) {
11963      emitError(2, start);
11964    }
11965  },
11966  onattribend(quote, end) {
11967    if (currentOpenTag && currentProp) {
11968      setLocEnd(currentProp.loc, end);
11969      if (quote !== 0) {
11970        if (currentAttrValue.includes("&")) {
11971          currentAttrValue = currentOptions.decodeEntities(
11972            currentAttrValue,
11973            true
11974          );
11975        }
11976        if (currentProp.type === 6) {
11977          if (currentProp.name === "class") {
11978            currentAttrValue = condense(currentAttrValue).trim();
11979          }
11980          if (quote === 1 && !currentAttrValue) {
11981            emitError(13, end);
11982          }
11983          currentProp.value = {
11984            type: 2,
11985            content: currentAttrValue,
11986            loc: quote === 1 ? getLoc(currentAttrStartIndex, currentAttrEndIndex) : getLoc(currentAttrStartIndex - 1, currentAttrEndIndex + 1)
11987          };
11988          if (tokenizer.inSFCRoot && currentOpenTag.tag === "template" && currentProp.name === "lang" && currentAttrValue && currentAttrValue !== "html") {
11989            tokenizer.enterRCDATA(toCharCodes(`</template`), 0);
11990          }
11991        } else {
11992          let expParseMode = 0;
11993          currentProp.exp = createExp(
11994            currentAttrValue,
11995            false,
11996            getLoc(currentAttrStartIndex, currentAttrEndIndex),
11997            0,
11998            expParseMode
11999          );
12000          if (currentProp.name === "for") {
12001            currentProp.forParseResult = parseForExpression(currentProp.exp);
12002          }
12003          let syncIndex = -1;
12004          if (currentProp.name === "bind" && (syncIndex = currentProp.modifiers.findIndex(
12005            (mod) => mod.content === "sync"
12006          )) > -1 && checkCompatEnabled(
12007            "COMPILER_V_BIND_SYNC",
12008            currentOptions,
12009            currentProp.loc,
12010            currentProp.arg.loc.source
12011          )) {
12012            currentProp.name = "model";
12013            currentProp.modifiers.splice(syncIndex, 1);
12014          }
12015        }
12016      }
12017      if (currentProp.type !== 7 || currentProp.name !== "pre") {
12018        currentOpenTag.props.push(currentProp);
12019      }
12020    }
12021    currentAttrValue = "";
12022    currentAttrStartIndex = currentAttrEndIndex = -1;
12023  },
12024  oncomment(start, end) {
12025    if (currentOptions.comments) {
12026      addNode({
12027        type: 3,
12028        content: getSlice(start, end),
12029        loc: getLoc(start - 4, end + 3)
12030      });
12031    }
12032  },
12033  onend() {
12034    const end = currentInput.length;
12035    for (let index2 = 0; index2 < stack.length; index2++) {
12036      onCloseTag(stack[index2], end - 1);
12037      emitError(24, stack[index2].loc.start.offset);
12038    }
12039  },
12040  oncdata(start, end) {
12041    if (stack[0].ns !== 0) {
12042      onText(getSlice(start, end), start, end);
12043    } else {
12044      emitError(1, start - 9);
12045    }
12046  },
12047  onprocessinginstruction(start) {
12048    if ((stack[0] ? stack[0].ns : currentOptions.ns) === 0) {
12049      emitError(
12050        21,
12051        start - 1
12052      );
12053    }
12054  }
12055});
12056const forIteratorRE = /,([^,\}\]]*)(?:,([^,\}\]]*))?$/;
12057const stripParensRE = /^\(|\)$/g;
12058function parseForExpression(input) {
12059  const loc = input.loc;
12060  const exp = input.content;
12061  const inMatch = exp.match(forAliasRE);
12062  if (!inMatch) return;
12063  const [, LHS, RHS] = inMatch;
12064  const createAliasExpression = (content, offset, asParam = false) => {
12065    const start = loc.start.offset + offset;
12066    const end = start + content.length;
12067    return createExp(
12068      content,
12069      false,
12070      getLoc(start, end),
12071      0,
12072      asParam ? 1 : 0
12073      /* Normal */
12074    );
12075  };
12076  const result = {
12077    source: createAliasExpression(RHS.trim(), exp.indexOf(RHS, LHS.length)),
12078    value: void 0,
12079    key: void 0,
12080    index: void 0,
12081    finalized: false
12082  };
12083  let valueContent = LHS.trim().replace(stripParensRE, "").trim();
12084  const trimmedOffset = LHS.indexOf(valueContent);
12085  const iteratorMatch = valueContent.match(forIteratorRE);
12086  if (iteratorMatch) {
12087    valueContent = valueContent.replace(forIteratorRE, "").trim();
12088    const keyContent = iteratorMatch[1].trim();
12089    let keyOffset;
12090    if (keyContent) {
12091      keyOffset = exp.indexOf(keyContent, trimmedOffset + valueContent.length);
12092      result.key = createAliasExpression(keyContent, keyOffset, true);
12093    }
12094    if (iteratorMatch[2]) {
12095      const indexContent = iteratorMatch[2].trim();
12096      if (indexContent) {
12097        result.index = createAliasExpression(
12098          indexContent,
12099          exp.indexOf(
12100            indexContent,
12101            result.key ? keyOffset + keyContent.length : trimmedOffset + valueContent.length
12102          ),
12103          true
12104        );
12105      }
12106    }
12107  }
12108  if (valueContent) {
12109    result.value = createAliasExpression(valueContent, trimmedOffset, true);
12110  }
12111  return result;
12112}
12113function getSlice(start, end) {
12114  return currentInput.slice(start, end);
12115}
12116function endOpenTag(end) {
12117  if (tokenizer.inSFCRoot) {
12118    currentOpenTag.innerLoc = getLoc(end + 1, end + 1);
12119  }
12120  addNode(currentOpenTag);
12121  const { tag, ns } = currentOpenTag;
12122  if (ns === 0 && currentOptions.isPreTag(tag)) {
12123    inPre++;
12124  }
12125  if (currentOptions.isVoidTag(tag)) {
12126    onCloseTag(currentOpenTag, end);
12127  } else {
12128    stack.unshift(currentOpenTag);
12129    if (ns === 1 || ns === 2) {
12130      tokenizer.inXML = true;
12131    }
12132  }
12133  currentOpenTag = null;
12134}
12135function onText(content, start, end) {
12136  {
12137    const tag = stack[0] && stack[0].tag;
12138    if (tag !== "script" && tag !== "style" && content.includes("&")) {
12139      content = currentOptions.decodeEntities(content, false);
12140    }
12141  }
12142  const parent = stack[0] || currentRoot;
12143  const lastNode = parent.children[parent.children.length - 1];
12144  if (lastNode && lastNode.type === 2) {
12145    lastNode.content += content;
12146    setLocEnd(lastNode.loc, end);
12147  } else {
12148    parent.children.push({
12149      type: 2,
12150      content,
12151      loc: getLoc(start, end)
12152    });
12153  }
12154}
12155function onCloseTag(el, end, isImplied = false) {
12156  if (isImplied) {
12157    setLocEnd(el.loc, backTrack(end, 60));
12158  } else {
12159    setLocEnd(el.loc, lookAhead(end, 62) + 1);
12160  }
12161  if (tokenizer.inSFCRoot) {
12162    if (el.children.length) {
12163      el.innerLoc.end = extend$5({}, el.children[el.children.length - 1].loc.end);
12164    } else {
12165      el.innerLoc.end = extend$5({}, el.innerLoc.start);
12166    }
12167    el.innerLoc.source = getSlice(
12168      el.innerLoc.start.offset,
12169      el.innerLoc.end.offset
12170    );
12171  }
12172  const { tag, ns, children } = el;
12173  if (!inVPre) {
12174    if (tag === "slot") {
12175      el.tagType = 2;
12176    } else if (isFragmentTemplate(el)) {
12177      el.tagType = 3;
12178    } else if (isComponent(el)) {
12179      el.tagType = 1;
12180    }
12181  }
12182  if (!tokenizer.inRCDATA) {
12183    el.children = condenseWhitespace(children);
12184  }
12185  if (ns === 0 && currentOptions.isIgnoreNewlineTag(tag)) {
12186    const first = children[0];
12187    if (first && first.type === 2) {
12188      first.content = first.content.replace(/^\r?\n/, "");
12189    }
12190  }
12191  if (ns === 0 && currentOptions.isPreTag(tag)) {
12192    inPre--;
12193  }
12194  if (currentVPreBoundary === el) {
12195    inVPre = tokenizer.inVPre = false;
12196    currentVPreBoundary = null;
12197  }
12198  if (tokenizer.inXML && (stack[0] ? stack[0].ns : currentOptions.ns) === 0) {
12199    tokenizer.inXML = false;
12200  }
12201  {
12202    const props2 = el.props;
12203    if (!tokenizer.inSFCRoot && isCompatEnabled(
12204      "COMPILER_NATIVE_TEMPLATE",
12205      currentOptions
12206    ) && el.tag === "template" && !isFragmentTemplate(el)) {
12207      const parent = stack[0] || currentRoot;
12208      const index2 = parent.children.indexOf(el);
12209      parent.children.splice(index2, 1, ...el.children);
12210    }
12211    const inlineTemplateProp = props2.find(
12212      (p2) => p2.type === 6 && p2.name === "inline-template"
12213    );
12214    if (inlineTemplateProp && checkCompatEnabled(
12215      "COMPILER_INLINE_TEMPLATE",
12216      currentOptions,
12217      inlineTemplateProp.loc
12218    ) && el.children.length) {
12219      inlineTemplateProp.value = {
12220        type: 2,
12221        content: getSlice(
12222          el.children[0].loc.start.offset,
12223          el.children[el.children.length - 1].loc.end.offset
12224        ),
12225        loc: inlineTemplateProp.loc
12226      };
12227    }
12228  }
12229}
12230function lookAhead(index2, c) {
12231  let i = index2;
12232  while (currentInput.charCodeAt(i) !== c && i < currentInput.length - 1) i++;
12233  return i;
12234}
12235function backTrack(index2, c) {
12236  let i = index2;
12237  while (currentInput.charCodeAt(i) !== c && i >= 0) i--;
12238  return i;
12239}
12240const specialTemplateDir = /* @__PURE__ */ new Set(["if", "else", "else-if", "for", "slot"]);
12241function isFragmentTemplate({ tag, props: props2 }) {
12242  if (tag === "template") {
12243    for (let i = 0; i < props2.length; i++) {
12244      if (props2[i].type === 7 && specialTemplateDir.has(props2[i].name)) {
12245        return true;
12246      }
12247    }
12248  }
12249  return false;
vendor: 4,323 bytes, lines 12250-12407
12250}
12251function isComponent({ tag, props: props2 }) {
12252  if (currentOptions.isCustomElement(tag)) {
12253    return false;
12254  }
12255  if (tag === "component" || isUpperCase(tag.charCodeAt(0)) || isCoreComponent(tag) || currentOptions.isBuiltInComponent && currentOptions.isBuiltInComponent(tag) || currentOptions.isNativeTag && !currentOptions.isNativeTag(tag)) {
12256    return true;
12257  }
12258  for (let i = 0; i < props2.length; i++) {
12259    const p2 = props2[i];
12260    if (p2.type === 6) {
12261      if (p2.name === "is" && p2.value) {
12262        if (p2.value.content.startsWith("vue:")) {
12263          return true;
12264        } else if (checkCompatEnabled(
12265          "COMPILER_IS_ON_ELEMENT",
12266          currentOptions,
12267          p2.loc
12268        )) {
12269          return true;
12270        }
12271      }
12272    } else if (
12273      // :is on plain element - only treat as component in compat mode
12274      p2.name === "bind" && isStaticArgOf(p2.arg, "is") && checkCompatEnabled(
12275        "COMPILER_IS_ON_ELEMENT",
12276        currentOptions,
12277        p2.loc
12278      )
12279    ) {
12280      return true;
12281    }
12282  }
12283  return false;
12284}
12285function isUpperCase(c) {
12286  return c > 64 && c < 91;
12287}
12288const windowsNewlineRE = /\r\n/g;
12289function condenseWhitespace(nodes, tag) {
12290  const shouldCondense = currentOptions.whitespace !== "preserve";
12291  let removedWhitespace = false;
12292  for (let i = 0; i < nodes.length; i++) {
12293    const node = nodes[i];
12294    if (node.type === 2) {
12295      if (!inPre) {
12296        if (isAllWhitespace(node.content)) {
12297          const prev = nodes[i - 1] && nodes[i - 1].type;
12298          const next = nodes[i + 1] && nodes[i + 1].type;
12299          if (!prev || !next || shouldCondense && (prev === 3 && (next === 3 || next === 1) || prev === 1 && (next === 3 || next === 1 && hasNewlineChar(node.content)))) {
12300            removedWhitespace = true;
12301            nodes[i] = null;
12302          } else {
12303            node.content = " ";
12304          }
12305        } else if (shouldCondense) {
12306          node.content = condense(node.content);
12307        }
12308      } else {
12309        node.content = node.content.replace(windowsNewlineRE, "\n");
12310      }
12311    }
12312  }
12313  return removedWhitespace ? nodes.filter(Boolean) : nodes;
12314}
12315function isAllWhitespace(str) {
12316  for (let i = 0; i < str.length; i++) {
12317    if (!isWhitespace(str.charCodeAt(i))) {
12318      return false;
12319    }
12320  }
12321  return true;
12322}
12323function hasNewlineChar(str) {
12324  for (let i = 0; i < str.length; i++) {
12325    const c = str.charCodeAt(i);
12326    if (c === 10 || c === 13) {
12327      return true;
12328    }
12329  }
12330  return false;
12331}
12332function condense(str) {
12333  let ret = "";
12334  let prevCharIsWhitespace = false;
12335  for (let i = 0; i < str.length; i++) {
12336    if (isWhitespace(str.charCodeAt(i))) {
12337      if (!prevCharIsWhitespace) {
12338        ret += " ";
12339        prevCharIsWhitespace = true;
12340      }
12341    } else {
12342      ret += str[i];
12343      prevCharIsWhitespace = false;
12344    }
12345  }
12346  return ret;
12347}
12348function addNode(node) {
12349  (stack[0] || currentRoot).children.push(node);
12350}
12351function getLoc(start, end) {
12352  return {
12353    start: tokenizer.getPos(start),
12354    // @ts-expect-error allow late attachment
12355    end: end == null ? end : tokenizer.getPos(end),
12356    // @ts-expect-error allow late attachment
12357    source: end == null ? end : getSlice(start, end)
12358  };
12359}
12360function cloneLoc(loc) {
12361  return getLoc(loc.start.offset, loc.end.offset);
12362}
12363function setLocEnd(loc, end) {
12364  loc.end = tokenizer.getPos(end);
12365  loc.source = getSlice(loc.start.offset, end);
12366}
12367function dirToAttr(dir) {
12368  const attr = {
12369    type: 6,
12370    name: dir.rawName,
12371    nameLoc: getLoc(
12372      dir.loc.start.offset,
12373      dir.loc.start.offset + dir.rawName.length
12374    ),
12375    value: void 0,
12376    loc: dir.loc
12377  };
12378  if (dir.exp) {
12379    const loc = dir.exp.loc;
12380    if (loc.end.offset < dir.loc.end.offset) {
12381      loc.start.offset--;
12382      loc.start.column--;
12383      loc.end.offset++;
12384      loc.end.column++;
12385    }
12386    attr.value = {
12387      type: 2,
12388      content: dir.exp.content,
12389      loc
12390    };
12391  }
12392  return attr;
12393}
12394function createExp(content, isStatic = false, loc, constType = 0, parseMode = 0) {
12395  const exp = createSimpleExpression(content, isStatic, loc, constType);
12396  return exp;
12397}
12398function emitError(code, index2, message) {
12399  currentOptions.onError(
12400    createCompilerError(code, getLoc(index2, index2))
12401  );
12402}
12403function reset() {
12404  tokenizer.reset();
12405  currentOpenTag = null;
12406  currentProp = null;
12407  currentAttrValue = "";
vendor: 4,561 bytes, lines 12408-12530
12408  currentAttrStartIndex = -1;
12409  currentAttrEndIndex = -1;
12410  stack.length = 0;
12411}
12412function baseParse(input, options2) {
12413  reset();
12414  currentInput = input;
12415  currentOptions = extend$5({}, defaultParserOptions);
12416  if (options2) {
12417    let key;
12418    for (key in options2) {
12419      if (options2[key] != null) {
12420        currentOptions[key] = options2[key];
12421      }
12422    }
12423  }
12424  tokenizer.mode = currentOptions.parseMode === "html" ? 1 : currentOptions.parseMode === "sfc" ? 2 : 0;
12425  tokenizer.inXML = currentOptions.ns === 1 || currentOptions.ns === 2;
12426  const delimiters = options2 && options2.delimiters;
12427  if (delimiters) {
12428    tokenizer.delimiterOpen = toCharCodes(delimiters[0]);
12429    tokenizer.delimiterClose = toCharCodes(delimiters[1]);
12430  }
12431  const root2 = currentRoot = createRoot([], input);
12432  tokenizer.parse(currentInput);
12433  root2.loc = getLoc(0, input.length);
12434  root2.children = condenseWhitespace(root2.children);
12435  currentRoot = null;
12436  return root2;
12437}
12438function cacheStatic(root2, context) {
12439  walk(
12440    root2,
12441    void 0,
12442    context,
12443    // Root node is unfortunately non-hoistable due to potential parent
12444    // fallthrough attributes.
12445    isSingleElementRoot(root2, root2.children[0])
12446  );
12447}
12448function isSingleElementRoot(root2, child) {
12449  const { children } = root2;
12450  return children.length === 1 && child.type === 1 && !isSlotOutlet(child);
12451}
12452function walk(node, parent, context, doNotHoistNode = false, inFor = false) {
12453  const { children } = node;
12454  const toCache = [];
12455  for (let i = 0; i < children.length; i++) {
12456    const child = children[i];
12457    if (child.type === 1 && child.tagType === 0) {
12458      const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
12459      if (constantType > 0) {
12460        if (constantType >= 2) {
12461          child.codegenNode.patchFlag = -1;
12462          toCache.push(child);
12463          continue;
12464        }
12465      } else {
12466        const codegenNode = child.codegenNode;
12467        if (codegenNode.type === 13) {
12468          const flag = codegenNode.patchFlag;
12469          if ((flag === void 0 || flag === 512 || flag === 1) && getGeneratedPropsConstantType(child, context) >= 2) {
12470            const props2 = getNodeProps(child);
12471            if (props2) {
12472              codegenNode.props = context.hoist(props2);
12473            }
12474          }
12475          if (codegenNode.dynamicProps) {
12476            codegenNode.dynamicProps = context.hoist(codegenNode.dynamicProps);
12477          }
12478        }
12479      }
12480    } else if (child.type === 12) {
12481      const constantType = doNotHoistNode ? 0 : getConstantType(child, context);
12482      if (constantType >= 2) {
12483        toCache.push(child);
12484        continue;
12485      }
12486    }
12487    if (child.type === 1) {
12488      const isComponent2 = child.tagType === 1;
12489      if (isComponent2) {
12490        context.scopes.vSlot++;
12491      }
12492      walk(child, node, context, false, inFor);
12493      if (isComponent2) {
12494        context.scopes.vSlot--;
12495      }
12496    } else if (child.type === 11) {
12497      walk(child, node, context, child.children.length === 1, true);
12498    } else if (child.type === 9) {
12499      for (let i2 = 0; i2 < child.branches.length; i2++) {
12500        walk(
12501          child.branches[i2],
12502          node,
12503          context,
12504          child.branches[i2].children.length === 1,
12505          inFor
12506        );
12507      }
12508    }
12509  }
12510  let cachedAsArray = false;
12511  const slotCacheKeys = [];
12512  if (toCache.length === children.length && node.type === 1) {
12513    if (node.tagType === 0 && node.codegenNode && node.codegenNode.type === 13 && isArray$3(node.codegenNode.children)) {
12514      node.codegenNode.children = getCacheExpression(
12515        createArrayExpression(node.codegenNode.children)
12516      );
12517      cachedAsArray = true;
12518    } else if (node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray$3(node.codegenNode.children) && node.codegenNode.children.type === 15) {
12519      const slot = getSlotNode(node.codegenNode, "default");
12520      if (slot) {
12521        slotCacheKeys.push(context.cached.length);
12522        slot.returns = getCacheExpression(
12523          createArrayExpression(slot.returns)
12524        );
12525        cachedAsArray = true;
12526      }
12527    } else if (node.tagType === 3 && parent && parent.type === 1 && parent.tagType === 1 && parent.codegenNode && parent.codegenNode.type === 13 && parent.codegenNode.children && !isArray$3(parent.codegenNode.children) && parent.codegenNode.children.type === 15) {
12528      const slotName = findDir(node, "slot", true);
12529      const slot = slotName && slotName.arg && getSlotNode(parent.codegenNode, slotName.arg);
12530      if (slot) {
12531        slotCacheKeys.push(context.cached.length);
12532        slot.returns = getCacheExpression(
12533          createArrayExpression(slot.returns)
12534        );
12535        cachedAsArray = true;
12536      }
12537    }
12538  }
12539  if (!cachedAsArray) {
12540    for (const child of toCache) {
12541      slotCacheKeys.push(context.cached.length);
12542      child.codegenNode = context.cache(child.codegenNode);
12543    }
12544  }
12545  if (slotCacheKeys.length && node.type === 1 && node.tagType === 1 && node.codegenNode && node.codegenNode.type === 13 && node.codegenNode.children && !isArray$3(node.codegenNode.children) && node.codegenNode.children.type === 15) {
12546    node.codegenNode.children.properties.push(
12547      createObjectProperty(
12548        `__`,
12549        createSimpleExpression(JSON.stringify(slotCacheKeys), false)
12550      )
12551    );
12552  }
12553  function getCacheExpression(value) {
12554    const exp = context.cache(value);
12555    if (inFor && context.hmr) {
12556      exp.needArraySpread = true;
12557    }
12558    return exp;
12559  }
12560  function getSlotNode(node2, name) {
12561    if (node2.children && !isArray$3(node2.children) && node2.children.type === 15) {
12562      const slot = node2.children.properties.find(
12563        (p2) => p2.key === name || p2.key.content === name
12564      );
12565      return slot && slot.value;
12566    }
12567  }
12568  if (toCache.length && context.transformHoist) {
12569    context.transformHoist(children, context, node);
12570  }
12571}
12572function getConstantType(node, context) {
12573  const { constantCache } = context;
12574  switch (node.type) {
12575    case 1:
12576      if (node.tagType !== 0) {
12577        return 0;
12578      }
12579      const cached = constantCache.get(node);
12580      if (cached !== void 0) {
12581        return cached;
12582      }
12583      const codegenNode = node.codegenNode;
12584      if (codegenNode.type !== 13) {
12585        return 0;
12586      }
12587      if (codegenNode.isBlock && node.tag !== "svg" && node.tag !== "foreignObject" && node.tag !== "math") {
12588        return 0;
12589      }
12590      if (codegenNode.patchFlag === void 0) {
12591        let returnType2 = 3;
12592        const generatedPropsType = getGeneratedPropsConstantType(node, context);
12593        if (generatedPropsType === 0) {
12594          constantCache.set(node, 0);
12595          return 0;
12596        }
12597        if (generatedPropsType < returnType2) {
12598          returnType2 = generatedPropsType;
12599        }
12600        for (let i = 0; i < node.children.length; i++) {
12601          const childType = getConstantType(node.children[i], context);
12602          if (childType === 0) {
12603            constantCache.set(node, 0);
12604            return 0;
12605          }
12606          if (childType < returnType2) {
12607            returnType2 = childType;
12608          }
12609        }
12610        if (returnType2 > 1) {
12611          for (let i = 0; i < node.props.length; i++) {
12612            const p2 = node.props[i];
12613            if (p2.type === 7 && p2.name === "bind" && p2.exp) {
12614              const expType = getConstantType(p2.exp, context);
12615              if (expType === 0) {
12616                constantCache.set(node, 0);
12617                return 0;
12618              }
12619              if (expType < returnType2) {
12620                returnType2 = expType;
12621              }
12622            }
12623          }
12624        }
12625        if (codegenNode.isBlock) {
12626          for (let i = 0; i < node.props.length; i++) {
12627            const p2 = node.props[i];
12628            if (p2.type === 7) {
12629              constantCache.set(node, 0);
12630              return 0;
12631            }
12632          }
12633          context.removeHelper(OPEN_BLOCK);
12634          context.removeHelper(
12635            getVNodeBlockHelper(context.inSSR, codegenNode.isComponent)
12636          );
12637          codegenNode.isBlock = false;
12638          context.helper(getVNodeHelper(context.inSSR, codegenNode.isComponent));
12639        }
12640        constantCache.set(node, returnType2);
12641        return returnType2;
12642      } else {
12643        constantCache.set(node, 0);
12644        return 0;
12645      }
12646    case 2:
12647    case 3:
12648      return 3;
12649    case 9:
12650    case 11:
12651    case 10:
12652      return 0;
12653    case 5:
12654    case 12:
12655      return getConstantType(node.content, context);
12656    case 4:
12657      return node.constType;
12658    case 8:
12659      let returnType = 3;
12660      for (let i = 0; i < node.children.length; i++) {
12661        const child = node.children[i];
12662        if (isString$3(child) || isSymbol$2(child)) {
12663          continue;
12664        }
vendor: 5,417 bytes, lines 12665-12877
12665        const childType = getConstantType(child, context);
12666        if (childType === 0) {
12667          return 0;
12668        } else if (childType < returnType) {
12669          returnType = childType;
12670        }
12671      }
12672      return returnType;
12673    case 20:
12674      return 2;
12675    default:
12676      return 0;
12677  }
12678}
12679const allowHoistedHelperSet = /* @__PURE__ */ new Set([
12680  NORMALIZE_CLASS,
12681  NORMALIZE_STYLE,
12682  NORMALIZE_PROPS,
12683  GUARD_REACTIVE_PROPS
12684]);
12685function getConstantTypeOfHelperCall(value, context) {
12686  if (value.type === 14 && !isString$3(value.callee) && allowHoistedHelperSet.has(value.callee)) {
12687    const arg = value.arguments[0];
12688    if (arg.type === 4) {
12689      return getConstantType(arg, context);
12690    } else if (arg.type === 14) {
12691      return getConstantTypeOfHelperCall(arg, context);
12692    }
12693  }
12694  return 0;
12695}
12696function getGeneratedPropsConstantType(node, context) {
12697  let returnType = 3;
12698  const props2 = getNodeProps(node);
12699  if (props2 && props2.type === 15) {
12700    const { properties } = props2;
12701    for (let i = 0; i < properties.length; i++) {
12702      const { key, value } = properties[i];
12703      const keyType = getConstantType(key, context);
12704      if (keyType === 0) {
12705        return keyType;
12706      }
12707      if (keyType < returnType) {
12708        returnType = keyType;
12709      }
12710      let valueType;
12711      if (value.type === 4) {
12712        valueType = getConstantType(value, context);
12713      } else if (value.type === 14) {
12714        valueType = getConstantTypeOfHelperCall(value, context);
12715      } else {
12716        valueType = 0;
12717      }
12718      if (valueType === 0) {
12719        return valueType;
12720      }
12721      if (valueType < returnType) {
12722        returnType = valueType;
12723      }
12724    }
12725  }
12726  return returnType;
12727}
12728function getNodeProps(node) {
12729  const codegenNode = node.codegenNode;
12730  if (codegenNode.type === 13) {
12731    return codegenNode.props;
12732  }
12733}
12734function createTransformContext(root2, {
12735  filename = "",
12736  prefixIdentifiers = false,
12737  hoistStatic = false,
12738  hmr = false,
12739  cacheHandlers = false,
12740  nodeTransforms = [],
12741  directiveTransforms = {},
12742  transformHoist = null,
12743  isBuiltInComponent = NOOP,
12744  isCustomElement = NOOP,
12745  expressionPlugins = [],
12746  scopeId = null,
12747  slotted = true,
12748  ssr = false,
12749  inSSR = false,
12750  ssrCssVars = ``,
12751  bindingMetadata = EMPTY_OBJ,
12752  inline = false,
12753  isTS = false,
12754  onError = defaultOnError$1,
12755  onWarn = defaultOnWarn,
12756  compatConfig
12757}) {
12758  const nameMatch = filename.replace(/\?.*$/, "").match(/([^/\\]+)\.\w+$/);
12759  const context = {
12760    // options
12761    filename,
12762    selfName: nameMatch && capitalize$1(camelize(nameMatch[1])),
12763    prefixIdentifiers,
12764    hoistStatic,
12765    hmr,
12766    cacheHandlers,
12767    nodeTransforms,
12768    directiveTransforms,
12769    transformHoist,
12770    isBuiltInComponent,
12771    isCustomElement,
12772    expressionPlugins,
12773    scopeId,
12774    slotted,
12775    ssr,
12776    inSSR,
12777    ssrCssVars,
12778    bindingMetadata,
12779    inline,
12780    isTS,
12781    onError,
12782    onWarn,
12783    compatConfig,
12784    // state
12785    root: root2,
12786    helpers: /* @__PURE__ */ new Map(),
12787    components: /* @__PURE__ */ new Set(),
12788    directives: /* @__PURE__ */ new Set(),
12789    hoists: [],
12790    imports: [],
12791    cached: [],
12792    constantCache: /* @__PURE__ */ new WeakMap(),
12793    temps: 0,
12794    identifiers: /* @__PURE__ */ Object.create(null),
12795    scopes: {
12796      vFor: 0,
12797      vSlot: 0,
12798      vPre: 0,
12799      vOnce: 0
12800    },
12801    parent: null,
12802    grandParent: null,
12803    currentNode: root2,
12804    childIndex: 0,
12805    inVOnce: false,
12806    // methods
12807    helper(name) {
12808      const count = context.helpers.get(name) || 0;
12809      context.helpers.set(name, count + 1);
12810      return name;
12811    },
12812    removeHelper(name) {
12813      const count = context.helpers.get(name);
12814      if (count) {
12815        const currentCount = count - 1;
12816        if (!currentCount) {
12817          context.helpers.delete(name);
12818        } else {
12819          context.helpers.set(name, currentCount);
12820        }
12821      }
12822    },
12823    helperString(name) {
12824      return `_${helperNameMap[context.helper(name)]}`;
12825    },
12826    replaceNode(node) {
12827      context.parent.children[context.childIndex] = context.currentNode = node;
12828    },
12829    removeNode(node) {
12830      const list = context.parent.children;
12831      const removalIndex = node ? list.indexOf(node) : context.currentNode ? context.childIndex : -1;
12832      if (!node || node === context.currentNode) {
12833        context.currentNode = null;
12834        context.onNodeRemoved();
12835      } else {
12836        if (context.childIndex > removalIndex) {
12837          context.childIndex--;
12838          context.onNodeRemoved();
12839        }
12840      }
12841      context.parent.children.splice(removalIndex, 1);
12842    },
12843    onNodeRemoved: NOOP,
12844    addIdentifiers(exp) {
12845    },
12846    removeIdentifiers(exp) {
12847    },
12848    hoist(exp) {
12849      if (isString$3(exp)) exp = createSimpleExpression(exp);
12850      context.hoists.push(exp);
12851      const identifier = createSimpleExpression(
12852        `_hoisted_${context.hoists.length}`,
12853        false,
12854        exp.loc,
12855        2
12856      );
12857      identifier.hoisted = exp;
12858      return identifier;
12859    },
12860    cache(exp, isVNode2 = false, inVOnce = false) {
12861      const cacheExp = createCacheExpression(
12862        context.cached.length,
12863        exp,
12864        isVNode2,
12865        inVOnce
12866      );
12867      context.cached.push(cacheExp);
12868      return cacheExp;
12869    }
12870  };
12871  {
12872    context.filters = /* @__PURE__ */ new Set();
12873  }
12874  return context;
12875}
12876function transform$1(root2, options2) {
12877  const context = createTransformContext(root2, options2);
vendor: 5,118 bytes, lines 12878-13090
12878  traverseNode$1(root2, context);
12879  if (options2.hoistStatic) {
12880    cacheStatic(root2, context);
12881  }
12882  if (!options2.ssr) {
12883    createRootCodegen(root2, context);
12884  }
12885  root2.helpers = /* @__PURE__ */ new Set([...context.helpers.keys()]);
12886  root2.components = [...context.components];
12887  root2.directives = [...context.directives];
12888  root2.imports = context.imports;
12889  root2.hoists = context.hoists;
12890  root2.temps = context.temps;
12891  root2.cached = context.cached;
12892  root2.transformed = true;
12893  {
12894    root2.filters = [...context.filters];
12895  }
12896}
12897function createRootCodegen(root2, context) {
12898  const { helper } = context;
12899  const { children } = root2;
12900  if (children.length === 1) {
12901    const child = children[0];
12902    if (isSingleElementRoot(root2, child) && child.codegenNode) {
12903      const codegenNode = child.codegenNode;
12904      if (codegenNode.type === 13) {
12905        convertToBlock(codegenNode, context);
12906      }
12907      root2.codegenNode = codegenNode;
12908    } else {
12909      root2.codegenNode = child;
12910    }
12911  } else if (children.length > 1) {
12912    let patchFlag = 64;
12913    root2.codegenNode = createVNodeCall(
12914      context,
12915      helper(FRAGMENT),
12916      void 0,
12917      root2.children,
12918      patchFlag,
12919      void 0,
12920      void 0,
12921      true,
12922      void 0,
12923      false
12924    );
12925  } else ;
12926}
12927function traverseChildren(parent, context) {
12928  let i = 0;
12929  const nodeRemoved = () => {
12930    i--;
12931  };
12932  for (; i < parent.children.length; i++) {
12933    const child = parent.children[i];
12934    if (isString$3(child)) continue;
12935    context.grandParent = context.parent;
12936    context.parent = parent;
12937    context.childIndex = i;
12938    context.onNodeRemoved = nodeRemoved;
12939    traverseNode$1(child, context);
12940  }
12941}
12942function traverseNode$1(node, context) {
12943  context.currentNode = node;
12944  const { nodeTransforms } = context;
12945  const exitFns = [];
12946  for (let i2 = 0; i2 < nodeTransforms.length; i2++) {
12947    const onExit = nodeTransforms[i2](node, context);
12948    if (onExit) {
12949      if (isArray$3(onExit)) {
12950        exitFns.push(...onExit);
12951      } else {
12952        exitFns.push(onExit);
12953      }
12954    }
12955    if (!context.currentNode) {
12956      return;
12957    } else {
12958      node = context.currentNode;
12959    }
12960  }
12961  switch (node.type) {
12962    case 3:
12963      if (!context.ssr) {
12964        context.helper(CREATE_COMMENT);
12965      }
12966      break;
12967    case 5:
12968      if (!context.ssr) {
12969        context.helper(TO_DISPLAY_STRING);
12970      }
12971      break;
12972    // for container types, further traverse downwards
12973    case 9:
12974      for (let i2 = 0; i2 < node.branches.length; i2++) {
12975        traverseNode$1(node.branches[i2], context);
12976      }
12977      break;
12978    case 10:
12979    case 11:
12980    case 1:
12981    case 0:
12982      traverseChildren(node, context);
12983      break;
12984  }
12985  context.currentNode = node;
12986  let i = exitFns.length;
12987  while (i--) {
12988    exitFns[i]();
12989  }
12990}
12991function createStructuralDirectiveTransform(name, fn) {
12992  const matches2 = isString$3(name) ? (n) => n === name : (n) => name.test(n);
12993  return (node, context) => {
12994    if (node.type === 1) {
12995      const { props: props2 } = node;
12996      if (node.tagType === 3 && props2.some(isVSlot)) {
12997        return;
12998      }
12999      const exitFns = [];
13000      for (let i = 0; i < props2.length; i++) {
13001        const prop = props2[i];
13002        if (prop.type === 7 && matches2(prop.name)) {
13003          props2.splice(i, 1);
13004          i--;
13005          const onExit = fn(node, prop, context);
13006          if (onExit) exitFns.push(onExit);
13007        }
13008      }
13009      return exitFns;
13010    }
13011  };
13012}
13013const PURE_ANNOTATION = `/*@__PURE__*/`;
13014const aliasHelper = (s) => `${helperNameMap[s]}: _${helperNameMap[s]}`;
13015function createCodegenContext(ast, {
13016  mode = "function",
13017  prefixIdentifiers = mode === "module",
13018  sourceMap = false,
13019  filename = `template.vue.html`,
13020  scopeId = null,
13021  optimizeImports = false,
13022  runtimeGlobalName = `Vue`,
13023  runtimeModuleName = `vue`,
13024  ssrRuntimeModuleName = "vue/server-renderer",
13025  ssr = false,
13026  isTS = false,
13027  inSSR = false
13028}) {
13029  const context = {
13030    mode,
13031    prefixIdentifiers,
13032    sourceMap,
13033    filename,
13034    scopeId,
13035    optimizeImports,
13036    runtimeGlobalName,
13037    runtimeModuleName,
13038    ssrRuntimeModuleName,
13039    ssr,
13040    isTS,
13041    inSSR,
13042    source: ast.source,
13043    code: ``,
13044    column: 1,
13045    line: 1,
13046    offset: 0,
13047    indentLevel: 0,
13048    pure: false,
13049    map: void 0,
13050    helper(key) {
13051      return `_${helperNameMap[key]}`;
13052    },
13053    push(code, newlineIndex = -2, node) {
13054      context.code += code;
13055    },
13056    indent() {
13057      newline(++context.indentLevel);
13058    },
13059    deindent(withoutNewLine = false) {
13060      if (withoutNewLine) {
13061        --context.indentLevel;
13062      } else {
13063        newline(--context.indentLevel);
13064      }
13065    },
13066    newline() {
13067      newline(context.indentLevel);
13068    }
13069  };
13070  function newline(n) {
13071    context.push(
13072      "\n" + `  `.repeat(n),
13073      0
13074      /* Start */
13075    );
13076  }
13077  return context;
13078}
13079function generate$1(ast, options2 = {}) {
13080  const context = createCodegenContext(ast, options2);
13081  if (options2.onContextCreated) options2.onContextCreated(context);
13082  const {
13083    mode,
13084    push,
13085    prefixIdentifiers,
13086    indent,
13087    deindent,
13088    newline,
13089    scopeId,
13090    ssr
vendor: 6,416 bytes, lines 13091-13371
13091  } = context;
13092  const helpers = Array.from(ast.helpers);
13093  const hasHelpers = helpers.length > 0;
13094  const useWithBlock = !prefixIdentifiers && mode !== "module";
13095  const preambleContext = context;
13096  {
13097    genFunctionPreamble(ast, preambleContext);
13098  }
13099  const functionName = ssr ? `ssrRender` : `render`;
13100  const args = ssr ? ["_ctx", "_push", "_parent", "_attrs"] : ["_ctx", "_cache"];
13101  const signature = args.join(", ");
13102  {
13103    push(`function ${functionName}(${signature}) {`);
13104  }
13105  indent();
13106  if (useWithBlock) {
13107    push(`with (_ctx) {`);
13108    indent();
13109    if (hasHelpers) {
13110      push(
13111        `const { ${helpers.map(aliasHelper).join(", ")} } = _Vue
13112`,
13113        -1
13114        /* End */
13115      );
13116      newline();
13117    }
13118  }
13119  if (ast.components.length) {
13120    genAssets(ast.components, "component", context);
13121    if (ast.directives.length || ast.temps > 0) {
13122      newline();
13123    }
13124  }
13125  if (ast.directives.length) {
13126    genAssets(ast.directives, "directive", context);
13127    if (ast.temps > 0) {
13128      newline();
13129    }
13130  }
13131  if (ast.filters && ast.filters.length) {
13132    newline();
13133    genAssets(ast.filters, "filter", context);
13134    newline();
13135  }
13136  if (ast.temps > 0) {
13137    push(`let `);
13138    for (let i = 0; i < ast.temps; i++) {
13139      push(`${i > 0 ? `, ` : ``}_temp${i}`);
13140    }
13141  }
13142  if (ast.components.length || ast.directives.length || ast.temps) {
13143    push(
13144      `
13145`,
13146      0
13147      /* Start */
13148    );
13149    newline();
13150  }
13151  if (!ssr) {
13152    push(`return `);
13153  }
13154  if (ast.codegenNode) {
13155    genNode(ast.codegenNode, context);
13156  } else {
13157    push(`null`);
13158  }
13159  if (useWithBlock) {
13160    deindent();
13161    push(`}`);
13162  }
13163  deindent();
13164  push(`}`);
13165  return {
13166    ast,
13167    code: context.code,
13168    preamble: ``,
13169    map: context.map ? context.map.toJSON() : void 0
13170  };
13171}
13172function genFunctionPreamble(ast, context) {
13173  const {
13174    ssr,
13175    prefixIdentifiers,
13176    push,
13177    newline,
13178    runtimeModuleName,
13179    runtimeGlobalName,
13180    ssrRuntimeModuleName
13181  } = context;
13182  const VueBinding = runtimeGlobalName;
13183  const helpers = Array.from(ast.helpers);
13184  if (helpers.length > 0) {
13185    {
13186      push(
13187        `const _Vue = ${VueBinding}
13188`,
13189        -1
13190        /* End */
13191      );
13192      if (ast.hoists.length) {
13193        const staticHelpers = [
13194          CREATE_VNODE,
13195          CREATE_ELEMENT_VNODE,
13196          CREATE_COMMENT,
13197          CREATE_TEXT,
13198          CREATE_STATIC
13199        ].filter((helper) => helpers.includes(helper)).map(aliasHelper).join(", ");
13200        push(
13201          `const { ${staticHelpers} } = _Vue
13202`,
13203          -1
13204          /* End */
13205        );
13206      }
13207    }
13208  }
13209  genHoists(ast.hoists, context);
13210  newline();
13211  push(`return `);
13212}
13213function genAssets(assets, type, { helper, push, newline, isTS }) {
13214  const resolver = helper(
13215    type === "filter" ? RESOLVE_FILTER : type === "component" ? RESOLVE_COMPONENT : RESOLVE_DIRECTIVE
13216  );
13217  for (let i = 0; i < assets.length; i++) {
13218    let id = assets[i];
13219    const maybeSelfReference = id.endsWith("__self");
13220    if (maybeSelfReference) {
13221      id = id.slice(0, -6);
13222    }
13223    push(
13224      `const ${toValidAssetId(id, type)} = ${resolver}(${JSON.stringify(id)}${maybeSelfReference ? `, true` : ``})${isTS ? `!` : ``}`
13225    );
13226    if (i < assets.length - 1) {
13227      newline();
13228    }
13229  }
13230}
13231function genHoists(hoists, context) {
13232  if (!hoists.length) {
13233    return;
13234  }
13235  context.pure = true;
13236  const { push, newline } = context;
13237  newline();
13238  for (let i = 0; i < hoists.length; i++) {
13239    const exp = hoists[i];
13240    if (exp) {
13241      push(`const _hoisted_${i + 1} = `);
13242      genNode(exp, context);
13243      newline();
13244    }
13245  }
13246  context.pure = false;
13247}
13248function genNodeListAsArray(nodes, context) {
13249  const multilines = nodes.length > 3 || false;
13250  context.push(`[`);
13251  multilines && context.indent();
13252  genNodeList(nodes, context, multilines);
13253  multilines && context.deindent();
13254  context.push(`]`);
13255}
13256function genNodeList(nodes, context, multilines = false, comma = true) {
13257  const { push, newline } = context;
13258  for (let i = 0; i < nodes.length; i++) {
13259    const node = nodes[i];
13260    if (isString$3(node)) {
13261      push(
13262        node,
13263        -3
13264        /* Unknown */
13265      );
13266    } else if (isArray$3(node)) {
13267      genNodeListAsArray(node, context);
13268    } else {
13269      genNode(node, context);
13270    }
13271    if (i < nodes.length - 1) {
13272      if (multilines) {
13273        comma && push(",");
13274        newline();
13275      } else {
13276        comma && push(", ");
13277      }
13278    }
13279  }
13280}
13281function genNode(node, context) {
13282  if (isString$3(node)) {
13283    context.push(
13284      node,
13285      -3
13286      /* Unknown */
13287    );
13288    return;
13289  }
13290  if (isSymbol$2(node)) {
13291    context.push(context.helper(node));
13292    return;
13293  }
13294  switch (node.type) {
13295    case 1:
13296    case 9:
13297    case 11:
13298      genNode(node.codegenNode, context);
13299      break;
13300    case 2:
13301      genText(node, context);
13302      break;
13303    case 4:
13304      genExpression(node, context);
13305      break;
13306    case 5:
13307      genInterpolation(node, context);
13308      break;
13309    case 12:
13310      genNode(node.codegenNode, context);
13311      break;
13312    case 8:
13313      genCompoundExpression(node, context);
13314      break;
13315    case 3:
13316      genComment(node, context);
13317      break;
13318    case 13:
13319      genVNodeCall(node, context);
13320      break;
13321    case 14:
13322      genCallExpression(node, context);
13323      break;
13324    case 15:
13325      genObjectExpression(node, context);
13326      break;
13327    case 17:
13328      genArrayExpression(node, context);
13329      break;
13330    case 18:
13331      genFunctionExpression(node, context);
13332      break;
13333    case 19:
13334      genConditionalExpression(node, context);
13335      break;
13336    case 20:
13337      genCacheExpression(node, context);
13338      break;
13339    case 21:
13340      genNodeList(node.body, context, true, false);
13341      break;
13342  }
13343}
13344function genText(node, context) {
13345  context.push(JSON.stringify(node.content), -3, node);
13346}
13347function genExpression(node, context) {
13348  const { content, isStatic } = node;
13349  context.push(
13350    isStatic ? JSON.stringify(content) : content,
13351    -3,
13352    node
13353  );
13354}
13355function genInterpolation(node, context) {
13356  const { push, helper, pure } = context;
13357  if (pure) push(PURE_ANNOTATION);
13358  push(`${helper(TO_DISPLAY_STRING)}(`);
13359  genNode(node.content, context);
13360  push(`)`);
13361}
13362function genCompoundExpression(node, context) {
13363  for (let i = 0; i < node.children.length; i++) {
13364    const child = node.children[i];
13365    if (isString$3(child)) {
13366      context.push(
13367        child,
13368        -3
13369        /* Unknown */
13370      );
13371    } else {
vendor: 4,141 bytes, lines 13372-13540
13372      genNode(child, context);
13373    }
13374  }
13375}
13376function genExpressionAsPropertyKey(node, context) {
13377  const { push } = context;
13378  if (node.type === 8) {
13379    push(`[`);
13380    genCompoundExpression(node, context);
13381    push(`]`);
13382  } else if (node.isStatic) {
13383    const text = isSimpleIdentifier(node.content) ? node.content : JSON.stringify(node.content);
13384    push(text, -2, node);
13385  } else {
13386    push(`[${node.content}]`, -3, node);
13387  }
13388}
13389function genComment(node, context) {
13390  const { push, helper, pure } = context;
13391  if (pure) {
13392    push(PURE_ANNOTATION);
13393  }
13394  push(
13395    `${helper(CREATE_COMMENT)}(${JSON.stringify(node.content)})`,
13396    -3,
13397    node
13398  );
13399}
13400function genVNodeCall(node, context) {
13401  const { push, helper, pure } = context;
13402  const {
13403    tag,
13404    props: props2,
13405    children,
13406    patchFlag,
13407    dynamicProps,
13408    directives,
13409    isBlock,
13410    disableTracking,
13411    isComponent: isComponent2
13412  } = node;
13413  let patchFlagString;
13414  if (patchFlag) {
13415    {
13416      patchFlagString = String(patchFlag);
13417    }
13418  }
13419  if (directives) {
13420    push(helper(WITH_DIRECTIVES) + `(`);
13421  }
13422  if (isBlock) {
13423    push(`(${helper(OPEN_BLOCK)}(${disableTracking ? `true` : ``}), `);
13424  }
13425  if (pure) {
13426    push(PURE_ANNOTATION);
13427  }
13428  const callHelper = isBlock ? getVNodeBlockHelper(context.inSSR, isComponent2) : getVNodeHelper(context.inSSR, isComponent2);
13429  push(helper(callHelper) + `(`, -2, node);
13430  genNodeList(
13431    genNullableArgs([tag, props2, children, patchFlagString, dynamicProps]),
13432    context
13433  );
13434  push(`)`);
13435  if (isBlock) {
13436    push(`)`);
13437  }
13438  if (directives) {
13439    push(`, `);
13440    genNode(directives, context);
13441    push(`)`);
13442  }
13443}
13444function genNullableArgs(args) {
13445  let i = args.length;
13446  while (i--) {
13447    if (args[i] != null) break;
13448  }
13449  return args.slice(0, i + 1).map((arg) => arg || `null`);
13450}
13451function genCallExpression(node, context) {
13452  const { push, helper, pure } = context;
13453  const callee = isString$3(node.callee) ? node.callee : helper(node.callee);
13454  if (pure) {
13455    push(PURE_ANNOTATION);
13456  }
13457  push(callee + `(`, -2, node);
13458  genNodeList(node.arguments, context);
13459  push(`)`);
13460}
13461function genObjectExpression(node, context) {
13462  const { push, indent, deindent, newline } = context;
13463  const { properties } = node;
13464  if (!properties.length) {
13465    push(`{}`, -2, node);
13466    return;
13467  }
13468  const multilines = properties.length > 1 || false;
13469  push(multilines ? `{` : `{ `);
13470  multilines && indent();
13471  for (let i = 0; i < properties.length; i++) {
13472    const { key, value } = properties[i];
13473    genExpressionAsPropertyKey(key, context);
13474    push(`: `);
13475    genNode(value, context);
13476    if (i < properties.length - 1) {
13477      push(`,`);
13478      newline();
13479    }
13480  }
13481  multilines && deindent();
13482  push(multilines ? `}` : ` }`);
13483}
13484function genArrayExpression(node, context) {
13485  genNodeListAsArray(node.elements, context);
13486}
13487function genFunctionExpression(node, context) {
13488  const { push, indent, deindent } = context;
13489  const { params, returns, body, newline, isSlot } = node;
13490  if (isSlot) {
13491    push(`_${helperNameMap[WITH_CTX]}(`);
13492  }
13493  push(`(`, -2, node);
13494  if (isArray$3(params)) {
13495    genNodeList(params, context);
13496  } else if (params) {
13497    genNode(params, context);
13498  }
13499  push(`) => `);
13500  if (newline || body) {
13501    push(`{`);
13502    indent();
13503  }
13504  if (returns) {
13505    if (newline) {
13506      push(`return `);
13507    }
13508    if (isArray$3(returns)) {
13509      genNodeListAsArray(returns, context);
13510    } else {
13511      genNode(returns, context);
13512    }
13513  } else if (body) {
13514    genNode(body, context);
13515  }
13516  if (newline || body) {
13517    deindent();
13518    push(`}`);
13519  }
13520  if (isSlot) {
13521    if (node.isNonScopedSlot) {
13522      push(`, undefined, true`);
13523    }
13524    push(`)`);
13525  }
13526}
13527function genConditionalExpression(node, context) {
13528  const { test: test2, consequent, alternate, newline: needNewline } = node;
13529  const { push, indent, deindent, newline } = context;
13530  if (test2.type === 4) {
13531    const needsParens = !isSimpleIdentifier(test2.content);
13532    needsParens && push(`(`);
13533    genExpression(test2, context);
13534    needsParens && push(`)`);
13535  } else {
13536    push(`(`);
13537    genNode(test2, context);
13538    push(`)`);
13539  }
13540  needNewline && indent();
vendor: 4,143 bytes, lines 13541-13684
13541  context.indentLevel++;
13542  needNewline || push(` `);
13543  push(`? `);
13544  genNode(consequent, context);
13545  context.indentLevel--;
13546  needNewline && newline();
13547  needNewline || push(` `);
13548  push(`: `);
13549  const isNested = alternate.type === 19;
13550  if (!isNested) {
13551    context.indentLevel++;
13552  }
13553  genNode(alternate, context);
13554  if (!isNested) {
13555    context.indentLevel--;
13556  }
13557  needNewline && deindent(
13558    true
13559    /* without newline */
13560  );
13561}
13562function genCacheExpression(node, context) {
13563  const { push, helper, indent, deindent, newline } = context;
13564  const { needPauseTracking, needArraySpread } = node;
13565  if (needArraySpread) {
13566    push(`[...(`);
13567  }
13568  push(`_cache[${node.index}] || (`);
13569  if (needPauseTracking) {
13570    indent();
13571    push(`${helper(SET_BLOCK_TRACKING)}(-1`);
13572    if (node.inVOnce) push(`, true`);
13573    push(`),`);
13574    newline();
13575    push(`(`);
13576  }
13577  push(`_cache[${node.index}] = `);
13578  genNode(node.value, context);
13579  if (needPauseTracking) {
13580    push(`).cacheIndex = ${node.index},`);
13581    newline();
13582    push(`${helper(SET_BLOCK_TRACKING)}(1),`);
13583    newline();
13584    push(`_cache[${node.index}]`);
13585    deindent();
13586  }
13587  push(`)`);
13588  if (needArraySpread) {
13589    push(`)]`);
13590  }
13591}
13592new RegExp(
13593  "\\b" + "arguments,await,break,case,catch,class,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,let,new,return,super,switch,throw,try,var,void,while,with,yield".split(",").join("\\b|\\b") + "\\b"
13594);
13595const transformIf = createStructuralDirectiveTransform(
13596  /^(if|else|else-if)$/,
13597  (node, dir, context) => {
13598    return processIf(node, dir, context, (ifNode, branch, isRoot) => {
13599      const siblings = context.parent.children;
13600      let i = siblings.indexOf(ifNode);
13601      let key = 0;
13602      while (i-- >= 0) {
13603        const sibling = siblings[i];
13604        if (sibling && sibling.type === 9) {
13605          key += sibling.branches.length;
13606        }
13607      }
13608      return () => {
13609        if (isRoot) {
13610          ifNode.codegenNode = createCodegenNodeForBranch(
13611            branch,
13612            key,
13613            context
13614          );
13615        } else {
13616          const parentCondition = getParentCondition(ifNode.codegenNode);
13617          parentCondition.alternate = createCodegenNodeForBranch(
13618            branch,
13619            key + ifNode.branches.length - 1,
13620            context
13621          );
13622        }
13623      };
13624    });
13625  }
13626);
13627function processIf(node, dir, context, processCodegen) {
13628  if (dir.name !== "else" && (!dir.exp || !dir.exp.content.trim())) {
13629    const loc = dir.exp ? dir.exp.loc : node.loc;
13630    context.onError(
13631      createCompilerError(28, dir.loc)
13632    );
13633    dir.exp = createSimpleExpression(`true`, false, loc);
13634  }
13635  if (dir.name === "if") {
13636    const branch = createIfBranch(node, dir);
13637    const ifNode = {
13638      type: 9,
13639      loc: cloneLoc(node.loc),
13640      branches: [branch]
13641    };
13642    context.replaceNode(ifNode);
13643    if (processCodegen) {
13644      return processCodegen(ifNode, branch, true);
13645    }
13646  } else {
13647    const siblings = context.parent.children;
13648    let i = siblings.indexOf(node);
13649    while (i-- >= -1) {
13650      const sibling = siblings[i];
13651      if (sibling && sibling.type === 3) {
13652        context.removeNode(sibling);
13653        continue;
13654      }
13655      if (sibling && sibling.type === 2 && !sibling.content.trim().length) {
13656        context.removeNode(sibling);
13657        continue;
13658      }
13659      if (sibling && sibling.type === 9) {
13660        if (dir.name === "else-if" && sibling.branches[sibling.branches.length - 1].condition === void 0) {
13661          context.onError(
13662            createCompilerError(30, node.loc)
13663          );
13664        }
13665        context.removeNode();
13666        const branch = createIfBranch(node, dir);
13667        sibling.branches.push(branch);
13668        const onExit = processCodegen && processCodegen(sibling, branch, false);
13669        traverseNode$1(branch, context);
13670        if (onExit) onExit();
13671        context.currentNode = null;
13672      } else {
13673        context.onError(
13674          createCompilerError(30, node.loc)
13675        );
13676      }
13677      break;
13678    }
13679  }
13680}
13681function createIfBranch(node, dir) {
13682  const isTemplateIf = node.tagType === 3;
13683  return {
13684    type: 10,
13685    loc: node.loc,
13686    condition: dir.name === "else" ? void 0 : dir.exp,
13687    children: isTemplateIf && !findDir(node, "for") ? node.children : [node],
13688    userKey: findProp(node, `key`),
13689    isTemplateIf
13690  };
13691}
13692function createCodegenNodeForBranch(branch, keyIndex, context) {
13693  if (branch.condition) {
13694    return createConditionalExpression(
13695      branch.condition,
13696      createChildrenCodegenNode(branch, keyIndex, context),
13697      // make sure to pass in asBlock: true so that the comment node call
13698      // closes the current block.
13699      createCallExpression(context.helper(CREATE_COMMENT), [
13700        '""',
13701        "true"
13702      ])
13703    );
13704  } else {
13705    return createChildrenCodegenNode(branch, keyIndex, context);
13706  }
13707}
13708function createChildrenCodegenNode(branch, keyIndex, context) {
13709  const { helper } = context;
13710  const keyProperty = createObjectProperty(
13711    `key`,
13712    createSimpleExpression(
13713      `${keyIndex}`,
13714      false,
13715      locStub,
13716      2
13717    )
13718  );
13719  const { children } = branch;
13720  const firstChild = children[0];
13721  const needFragmentWrapper = children.length !== 1 || firstChild.type !== 1;
13722  if (needFragmentWrapper) {
13723    if (children.length === 1 && firstChild.type === 11) {
13724      const vnodeCall = firstChild.codegenNode;
13725      injectProp(vnodeCall, keyProperty, context);
13726      return vnodeCall;
13727    } else {
13728      let patchFlag = 64;
13729      return createVNodeCall(
13730        context,
13731        helper(FRAGMENT),
13732        createObjectExpression([keyProperty]),
13733        children,
13734        patchFlag,
13735        void 0,
13736        void 0,
13737        true,
13738        false,
13739        false,
13740        branch.loc
13741      );
13742    }
13743  } else {
13744    const ret = firstChild.codegenNode;
13745    const vnodeCall = getMemoedVNodeCall(ret);
13746    if (vnodeCall.type === 13) {
13747      convertToBlock(vnodeCall, context);
13748    }
13749    injectProp(vnodeCall, keyProperty, context);
13750    return ret;
13751  }
13752}
13753function getParentCondition(node) {
13754  while (true) {
13755    if (node.type === 19) {
13756      if (node.alternate.type === 19) {
13757        node = node.alternate;
13758      } else {
13759        return node;
13760      }
13761    } else if (node.type === 20) {
13762      node = node.value;
13763    }
13764  }
13765}
13766const transformBind = (dir, _node, context) => {
13767  const { modifiers, loc } = dir;
13768  const arg = dir.arg;
13769  let { exp } = dir;
13770  if (exp && exp.type === 4 && !exp.content.trim()) {
13771    {
13772      exp = void 0;
13773    }
13774  }
13775  if (!exp) {
13776    if (arg.type !== 4 || !arg.isStatic) {
13777      context.onError(
13778        createCompilerError(
13779          52,
13780          arg.loc
13781        )
13782      );
13783      return {
13784        props: [
13785          createObjectProperty(arg, createSimpleExpression("", true, loc))
13786        ]
13787      };
13788    }
13789    transformBindShorthand(dir);
13790    exp = dir.exp;
13791  }
13792  if (arg.type !== 4) {
13793    arg.children.unshift(`(`);
13794    arg.children.push(`) || ""`);
13795  } else if (!arg.isStatic) {
13796    arg.content = `${arg.content} || ""`;
13797  }
13798  if (modifiers.some((mod) => mod.content === "camel")) {
13799    if (arg.type === 4) {
13800      if (arg.isStatic) {
13801        arg.content = camelize(arg.content);
13802      } else {
13803        arg.content = `${context.helperString(CAMELIZE)}(${arg.content})`;
13804      }
13805    } else {
13806      arg.children.unshift(`${context.helperString(CAMELIZE)}(`);
13807      arg.children.push(`)`);
13808    }
13809  }
13810  if (!context.inSSR) {
13811    if (modifiers.some((mod) => mod.content === "prop")) {
13812      injectPrefix(arg, ".");
13813    }
13814    if (modifiers.some((mod) => mod.content === "attr")) {
13815      injectPrefix(arg, "^");
13816    }
13817  }
13818  return {
13819    props: [createObjectProperty(arg, exp)]
13820  };
13821};
13822const transformBindShorthand = (dir, context) => {
13823  const arg = dir.arg;
13824  const propName = camelize(arg.content);
13825  dir.exp = createSimpleExpression(propName, false, arg.loc);
13826};
13827const injectPrefix = (arg, prefix) => {
13828  if (arg.type === 4) {
13829    if (arg.isStatic) {
13830      arg.content = prefix + arg.content;
13831    } else {
13832      arg.content = `\`${prefix}\${${arg.content}}\``;
13833    }
13834  } else {
13835    arg.children.unshift(`'${prefix}' + (`);
13836    arg.children.push(`)`);
13837  }
13838};
13839const transformFor = createStructuralDirectiveTransform(
13840  "for",
13841  (node, dir, context) => {
13842    const { helper, removeHelper } = context;
13843    return processFor(node, dir, context, (forNode) => {
13844      const renderExp = createCallExpression(helper(RENDER_LIST), [
13845        forNode.source
13846      ]);
13847      const isTemplate = isTemplateNode(node);
13848      const memo = findDir(node, "memo");
13849      const keyProp = findProp(node, `key`, false, true);
13850      const isDirKey = keyProp && keyProp.type === 7;
13851      if (isDirKey && !keyProp.exp) {
13852        transformBindShorthand(keyProp);
13853      }
13854      let keyExp = keyProp && (keyProp.type === 6 ? keyProp.value ? createSimpleExpression(keyProp.value.content, true) : void 0 : keyProp.exp);
13855      const keyProperty = keyProp && keyExp ? createObjectProperty(`key`, keyExp) : null;
13856      const isStableFragment = forNode.source.type === 4 && forNode.source.constType > 0;
13857      const fragmentFlag = isStableFragment ? 64 : keyProp ? 128 : 256;
13858      forNode.codegenNode = createVNodeCall(
13859        context,
13860        helper(FRAGMENT),
13861        void 0,
13862        renderExp,
13863        fragmentFlag,
13864        void 0,
13865        void 0,
13866        true,
13867        !isStableFragment,
13868        false,
13869        node.loc
13870      );
13871      return () => {
13872        let childBlock;
13873        const { children } = forNode;
13874        const needFragmentWrapper = children.length !== 1 || children[0].type !== 1;
13875        const slotOutlet = isSlotOutlet(node) ? node : isTemplate && node.children.length === 1 && isSlotOutlet(node.children[0]) ? node.children[0] : null;
13876        if (slotOutlet) {
13877          childBlock = slotOutlet.codegenNode;
13878          if (isTemplate && keyProperty) {
13879            injectProp(childBlock, keyProperty, context);
13880          }
13881        } else if (needFragmentWrapper) {
13882          childBlock = createVNodeCall(
13883            context,
13884            helper(FRAGMENT),
13885            keyProperty ? createObjectExpression([keyProperty]) : void 0,
13886            node.children,
13887            64,
13888            void 0,
13889            void 0,
13890            true,
13891            void 0,
13892            false
13893          );
13894        } else {
13895          childBlock = children[0].codegenNode;
13896          if (isTemplate && keyProperty) {
13897            injectProp(childBlock, keyProperty, context);
13898          }
13899          if (childBlock.isBlock !== !isStableFragment) {
13900            if (childBlock.isBlock) {
13901              removeHelper(OPEN_BLOCK);
13902              removeHelper(
13903                getVNodeBlockHelper(context.inSSR, childBlock.isComponent)
13904              );
13905            } else {
13906              removeHelper(
13907                getVNodeHelper(context.inSSR, childBlock.isComponent)
13908              );
13909            }
13910          }
13911          childBlock.isBlock = !isStableFragment;
13912          if (childBlock.isBlock) {
13913            helper(OPEN_BLOCK);
13914            helper(getVNodeBlockHelper(context.inSSR, childBlock.isComponent));
13915          } else {
13916            helper(getVNodeHelper(context.inSSR, childBlock.isComponent));
13917          }
13918        }
13919        if (memo) {
13920          const loop2 = createFunctionExpression(
13921            createForLoopParams(forNode.parseResult, [
13922              createSimpleExpression(`_cached`)
13923            ])
13924          );
13925          loop2.body = createBlockStatement([
13926            createCompoundExpression([`const _memo = (`, memo.exp, `)`]),
13927            createCompoundExpression([
13928              `if (_cached`,
13929              ...keyExp ? [` && _cached.key === `, keyExp] : [],
13930              ` && ${context.helperString(
13931                IS_MEMO_SAME
13932              )}(_cached, _memo)) return _cached`
13933            ]),
13934            createCompoundExpression([`const _item = `, childBlock]),
13935            createSimpleExpression(`_item.memo = _memo`),
13936            createSimpleExpression(`return _item`)
13937          ]);
13938          renderExp.arguments.push(
13939            loop2,
13940            createSimpleExpression(`_cache`),
13941            createSimpleExpression(String(context.cached.length))
13942          );
13943          context.cached.push(null);
13944        } else {
13945          renderExp.arguments.push(
13946            createFunctionExpression(
13947              createForLoopParams(forNode.parseResult),
13948              childBlock,
13949              true
13950            )
13951          );
13952        }
13953      };
13954    });
13955  }
13956);
vendor: 5,911 bytes, lines 13957-14162
13957function processFor(node, dir, context, processCodegen) {
13958  if (!dir.exp) {
13959    context.onError(
13960      createCompilerError(31, dir.loc)
13961    );
13962    return;
13963  }
13964  const parseResult = dir.forParseResult;
13965  if (!parseResult) {
13966    context.onError(
13967      createCompilerError(32, dir.loc)
13968    );
13969    return;
13970  }
13971  finalizeForParseResult(parseResult);
13972  const { addIdentifiers, removeIdentifiers, scopes } = context;
13973  const { source, value, key, index: index2 } = parseResult;
13974  const forNode = {
13975    type: 11,
13976    loc: dir.loc,
13977    source,
13978    valueAlias: value,
13979    keyAlias: key,
13980    objectIndexAlias: index2,
13981    parseResult,
13982    children: isTemplateNode(node) ? node.children : [node]
13983  };
13984  context.replaceNode(forNode);
13985  scopes.vFor++;
13986  const onExit = processCodegen && processCodegen(forNode);
13987  return () => {
13988    scopes.vFor--;
13989    if (onExit) onExit();
13990  };
13991}
13992function finalizeForParseResult(result, context) {
13993  if (result.finalized) return;
13994  result.finalized = true;
13995}
13996function createForLoopParams({ value, key, index: index2 }, memoArgs = []) {
13997  return createParamsList([value, key, index2, ...memoArgs]);
13998}
13999function createParamsList(args) {
14000  let i = args.length;
14001  while (i--) {
14002    if (args[i]) break;
14003  }
14004  return args.slice(0, i + 1).map((arg, i2) => arg || createSimpleExpression(`_`.repeat(i2 + 1), false));
14005}
14006const defaultFallback = createSimpleExpression(`undefined`, false);
14007const trackSlotScopes = (node, context) => {
14008  if (node.type === 1 && (node.tagType === 1 || node.tagType === 3)) {
14009    const vSlot = findDir(node, "slot");
14010    if (vSlot) {
14011      vSlot.exp;
14012      context.scopes.vSlot++;
14013      return () => {
14014        context.scopes.vSlot--;
14015      };
14016    }
14017  }
14018};
14019const buildClientSlotFn = (props2, _vForExp, children, loc) => createFunctionExpression(
14020  props2,
14021  children,
14022  false,
14023  true,
14024  children.length ? children[0].loc : loc
14025);
14026function buildSlots(node, context, buildSlotFn = buildClientSlotFn) {
14027  context.helper(WITH_CTX);
14028  const { children, loc } = node;
14029  const slotsProperties = [];
14030  const dynamicSlots = [];
14031  let hasDynamicSlots = context.scopes.vSlot > 0 || context.scopes.vFor > 0;
14032  const onComponentSlot = findDir(node, "slot", true);
14033  if (onComponentSlot) {
14034    const { arg, exp } = onComponentSlot;
14035    if (arg && !isStaticExp(arg)) {
14036      hasDynamicSlots = true;
14037    }
14038    slotsProperties.push(
14039      createObjectProperty(
14040        arg || createSimpleExpression("default", true),
14041        buildSlotFn(exp, void 0, children, loc)
14042      )
14043    );
14044  }
14045  let hasTemplateSlots = false;
14046  let hasNamedDefaultSlot = false;
14047  const implicitDefaultChildren = [];
14048  const seenSlotNames = /* @__PURE__ */ new Set();
14049  let conditionalBranchIndex = 0;
14050  for (let i = 0; i < children.length; i++) {
14051    const slotElement = children[i];
14052    let slotDir;
14053    if (!isTemplateNode(slotElement) || !(slotDir = findDir(slotElement, "slot", true))) {
14054      if (slotElement.type !== 3) {
14055        implicitDefaultChildren.push(slotElement);
14056      }
14057      continue;
14058    }
14059    if (onComponentSlot) {
14060      context.onError(
14061        createCompilerError(37, slotDir.loc)
14062      );
14063      break;
14064    }
14065    hasTemplateSlots = true;
14066    const { children: slotChildren, loc: slotLoc } = slotElement;
14067    const {
14068      arg: slotName = createSimpleExpression(`default`, true),
14069      exp: slotProps,
14070      loc: dirLoc
14071    } = slotDir;
14072    let staticSlotName;
14073    if (isStaticExp(slotName)) {
14074      staticSlotName = slotName ? slotName.content : `default`;
14075    } else {
14076      hasDynamicSlots = true;
14077    }
14078    const vFor = findDir(slotElement, "for");
14079    const slotFunction = buildSlotFn(slotProps, vFor, slotChildren, slotLoc);
14080    let vIf;
14081    let vElse;
14082    if (vIf = findDir(slotElement, "if")) {
14083      hasDynamicSlots = true;
14084      dynamicSlots.push(
14085        createConditionalExpression(
14086          vIf.exp,
14087          buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++),
14088          defaultFallback
14089        )
14090      );
14091    } else if (vElse = findDir(
14092      slotElement,
14093      /^else(-if)?$/,
14094      true
14095      /* allowEmpty */
14096    )) {
14097      let j = i;
14098      let prev;
14099      while (j--) {
14100        prev = children[j];
14101        if (prev.type !== 3) {
14102          break;
14103        }
14104      }
14105      if (prev && isTemplateNode(prev) && findDir(prev, /^(else-)?if$/)) {
14106        let conditional = dynamicSlots[dynamicSlots.length - 1];
14107        while (conditional.alternate.type === 19) {
14108          conditional = conditional.alternate;
14109        }
14110        conditional.alternate = vElse.exp ? createConditionalExpression(
14111          vElse.exp,
14112          buildDynamicSlot(
14113            slotName,
14114            slotFunction,
14115            conditionalBranchIndex++
14116          ),
14117          defaultFallback
14118        ) : buildDynamicSlot(slotName, slotFunction, conditionalBranchIndex++);
14119      } else {
14120        context.onError(
14121          createCompilerError(30, vElse.loc)
14122        );
14123      }
14124    } else if (vFor) {
14125      hasDynamicSlots = true;
14126      const parseResult = vFor.forParseResult;
14127      if (parseResult) {
14128        finalizeForParseResult(parseResult);
14129        dynamicSlots.push(
14130          createCallExpression(context.helper(RENDER_LIST), [
14131            parseResult.source,
14132            createFunctionExpression(
14133              createForLoopParams(parseResult),
14134              buildDynamicSlot(slotName, slotFunction),
14135              true
14136            )
14137          ])
14138        );
14139      } else {
14140        context.onError(
14141          createCompilerError(
14142            32,
14143            vFor.loc
14144          )
14145        );
14146      }
14147    } else {
14148      if (staticSlotName) {
14149        if (seenSlotNames.has(staticSlotName)) {
14150          context.onError(
14151            createCompilerError(
14152              38,
14153              dirLoc
14154            )
14155          );
14156          continue;
14157        }
14158        seenSlotNames.add(staticSlotName);
14159        if (staticSlotName === "default") {
14160          hasNamedDefaultSlot = true;
14161        }
14162      }
14163      slotsProperties.push(createObjectProperty(slotName, slotFunction));
14164    }
14165  }
14166  if (!onComponentSlot) {
14167    const buildDefaultSlotProperty = (props2, children2) => {
14168      const fn = buildSlotFn(props2, void 0, children2, loc);
14169      if (context.compatConfig) {
14170        fn.isNonScopedSlot = true;
14171      }
14172      return createObjectProperty(`default`, fn);
14173    };
14174    if (!hasTemplateSlots) {
14175      slotsProperties.push(buildDefaultSlotProperty(void 0, children));
14176    } else if (implicitDefaultChildren.length && // #3766
14177    // with whitespace: 'preserve', whitespaces between slots will end up in
14178    // implicitDefaultChildren. Ignore if all implicit children are whitespaces.
14179    implicitDefaultChildren.some((node2) => isNonWhitespaceContent(node2))) {
14180      if (hasNamedDefaultSlot) {
14181        context.onError(
14182          createCompilerError(
14183            39,
14184            implicitDefaultChildren[0].loc
14185          )
14186        );
14187      } else {
14188        slotsProperties.push(
14189          buildDefaultSlotProperty(void 0, implicitDefaultChildren)
14190        );
14191      }
14192    }
14193  }
14194  const slotFlag = hasDynamicSlots ? 2 : hasForwardedSlots(node.children) ? 3 : 1;
14195  let slots = createObjectExpression(
14196    slotsProperties.concat(
14197      createObjectProperty(
14198        `_`,
14199        // 2 = compiled but dynamic = can skip normalization, but must run diff
14200        // 1 = compiled and static = can skip normalization AND diff as optimized
14201        createSimpleExpression(
14202          slotFlag + ``,
14203          false
14204        )
14205      )
14206    ),
14207    loc
14208  );
14209  if (dynamicSlots.length) {
14210    slots = createCallExpression(context.helper(CREATE_SLOTS), [
14211      slots,
14212      createArrayExpression(dynamicSlots)
14213    ]);
14214  }
14215  return {
14216    slots,
14217    hasDynamicSlots
14218  };
14219}
14220function buildDynamicSlot(name, fn, index2) {
14221  const props2 = [
14222    createObjectProperty(`name`, name),
14223    createObjectProperty(`fn`, fn)
14224  ];
14225  if (index2 != null) {
14226    props2.push(
14227      createObjectProperty(`key`, createSimpleExpression(String(index2), true))
14228    );
14229  }
14230  return createObjectExpression(props2);
14231}
14232function hasForwardedSlots(children) {
14233  for (let i = 0; i < children.length; i++) {
14234    const child = children[i];
14235    switch (child.type) {
14236      case 1:
14237        if (child.tagType === 2 || hasForwardedSlots(child.children)) {
14238          return true;
14239        }
14240        break;
14241      case 9:
14242        if (hasForwardedSlots(child.branches)) return true;
14243        break;
14244      case 10:
14245      case 11:
14246        if (hasForwardedSlots(child.children)) return true;
14247        break;
14248    }
14249  }
14250  return false;
14251}
14252function isNonWhitespaceContent(node) {
14253  if (node.type !== 2 && node.type !== 12)
14254    return true;
14255  return node.type === 2 ? !!node.content.trim() : isNonWhitespaceContent(node.content);
14256}
14257const directiveImportMap = /* @__PURE__ */ new WeakMap();
14258const transformElement = (node, context) => {
14259  return function postTransformElement() {
14260    node = context.currentNode;
14261    if (!(node.type === 1 && (node.tagType === 0 || node.tagType === 1))) {
14262      return;
14263    }
14264    const { tag, props: props2 } = node;
14265    const isComponent2 = node.tagType === 1;
14266    let vnodeTag = isComponent2 ? resolveComponentType(node, context) : `"${tag}"`;
14267    const isDynamicComponent = isObject$9(vnodeTag) && vnodeTag.callee === RESOLVE_DYNAMIC_COMPONENT;
14268    let vnodeProps;
14269    let vnodeChildren;
14270    let patchFlag = 0;
14271    let vnodeDynamicProps;
14272    let dynamicPropNames;
14273    let vnodeDirectives;
14274    let shouldUseBlock = (
14275      // dynamic component may resolve to plain elements
14276      isDynamicComponent || vnodeTag === TELEPORT || vnodeTag === SUSPENSE || !isComponent2 && // <svg> and <foreignObject> must be forced into blocks so that block
14277      // updates inside get proper isSVG flag at runtime. (#639, #643)
14278      // This is technically web-specific, but splitting the logic out of core
14279      // leads to too much unnecessary complexity.
14280      (tag === "svg" || tag === "foreignObject" || tag === "math")
14281    );
14282    if (props2.length > 0) {
14283      const propsBuildResult = buildProps(
14284        node,
14285        context,
14286        void 0,
14287        isComponent2,
14288        isDynamicComponent
14289      );
14290      vnodeProps = propsBuildResult.props;
14291      patchFlag = propsBuildResult.patchFlag;
14292      dynamicPropNames = propsBuildResult.dynamicPropNames;
14293      const directives = propsBuildResult.directives;
14294      vnodeDirectives = directives && directives.length ? createArrayExpression(
14295        directives.map((dir) => buildDirectiveArgs(dir, context))
14296      ) : void 0;
14297      if (propsBuildResult.shouldUseBlock) {
14298        shouldUseBlock = true;
14299      }
14300    }
14301    if (node.children.length > 0) {
14302      if (vnodeTag === KEEP_ALIVE) {
14303        shouldUseBlock = true;
14304        patchFlag |= 1024;
14305      }
14306      const shouldBuildAsSlots = isComponent2 && // Teleport is not a real component and has dedicated runtime handling
14307      vnodeTag !== TELEPORT && // explained above.
14308      vnodeTag !== KEEP_ALIVE;
14309      if (shouldBuildAsSlots) {
14310        const { slots, hasDynamicSlots } = buildSlots(node, context);
14311        vnodeChildren = slots;
14312        if (hasDynamicSlots) {
14313          patchFlag |= 1024;
14314        }
14315      } else if (node.children.length === 1 && vnodeTag !== TELEPORT) {
14316        const child = node.children[0];
14317        const type = child.type;
14318        const hasDynamicTextChild = type === 5 || type === 8;
vendor: 6,704 bytes, lines 14319-14542
14319        if (hasDynamicTextChild && getConstantType(child, context) === 0) {
14320          patchFlag |= 1;
14321        }
14322        if (hasDynamicTextChild || type === 2) {
14323          vnodeChildren = child;
14324        } else {
14325          vnodeChildren = node.children;
14326        }
14327      } else {
14328        vnodeChildren = node.children;
14329      }
14330    }
14331    if (dynamicPropNames && dynamicPropNames.length) {
14332      vnodeDynamicProps = stringifyDynamicPropNames(dynamicPropNames);
14333    }
14334    node.codegenNode = createVNodeCall(
14335      context,
14336      vnodeTag,
14337      vnodeProps,
14338      vnodeChildren,
14339      patchFlag === 0 ? void 0 : patchFlag,
14340      vnodeDynamicProps,
14341      vnodeDirectives,
14342      !!shouldUseBlock,
14343      false,
14344      isComponent2,
14345      node.loc
14346    );
14347  };
14348};
14349function resolveComponentType(node, context, ssr = false) {
14350  let { tag } = node;
14351  const isExplicitDynamic = isComponentTag(tag);
14352  const isProp = findProp(
14353    node,
14354    "is",
14355    false,
14356    true
14357    /* allow empty */
14358  );
14359  if (isProp) {
14360    if (isExplicitDynamic || isCompatEnabled(
14361      "COMPILER_IS_ON_ELEMENT",
14362      context
14363    )) {
14364      let exp;
14365      if (isProp.type === 6) {
14366        exp = isProp.value && createSimpleExpression(isProp.value.content, true);
14367      } else {
14368        exp = isProp.exp;
14369        if (!exp) {
14370          exp = createSimpleExpression(`is`, false, isProp.arg.loc);
14371        }
14372      }
14373      if (exp) {
14374        return createCallExpression(context.helper(RESOLVE_DYNAMIC_COMPONENT), [
14375          exp
14376        ]);
14377      }
14378    } else if (isProp.type === 6 && isProp.value.content.startsWith("vue:")) {
14379      tag = isProp.value.content.slice(4);
14380    }
14381  }
14382  const builtIn = isCoreComponent(tag) || context.isBuiltInComponent(tag);
14383  if (builtIn) {
14384    if (!ssr) context.helper(builtIn);
14385    return builtIn;
14386  }
14387  context.helper(RESOLVE_COMPONENT);
14388  context.components.add(tag);
14389  return toValidAssetId(tag, `component`);
14390}
14391function buildProps(node, context, props2 = node.props, isComponent2, isDynamicComponent, ssr = false) {
14392  const { tag, loc: elementLoc, children } = node;
14393  let properties = [];
14394  const mergeArgs = [];
14395  const runtimeDirectives = [];
14396  const hasChildren = children.length > 0;
14397  let shouldUseBlock = false;
14398  let patchFlag = 0;
14399  let hasRef = false;
14400  let hasClassBinding = false;
14401  let hasStyleBinding = false;
14402  let hasHydrationEventBinding = false;
14403  let hasDynamicKeys = false;
14404  let hasVnodeHook = false;
14405  const dynamicPropNames = [];
14406  const pushMergeArg = (arg) => {
14407    if (properties.length) {
14408      mergeArgs.push(
14409        createObjectExpression(dedupeProperties(properties), elementLoc)
14410      );
14411      properties = [];
14412    }
14413    if (arg) mergeArgs.push(arg);
14414  };
14415  const pushRefVForMarker = () => {
14416    if (context.scopes.vFor > 0) {
14417      properties.push(
14418        createObjectProperty(
14419          createSimpleExpression("ref_for", true),
14420          createSimpleExpression("true")
14421        )
14422      );
14423    }
14424  };
14425  const analyzePatchFlag = ({ key, value }) => {
14426    if (isStaticExp(key)) {
14427      const name = key.content;
14428      const isEventHandler = isOn(name);
14429      if (isEventHandler && (!isComponent2 || isDynamicComponent) && // omit the flag for click handlers because hydration gives click
14430      // dedicated fast path.
14431      name.toLowerCase() !== "onclick" && // omit v-model handlers
14432      name !== "onUpdate:modelValue" && // omit onVnodeXXX hooks
14433      !isReservedProp(name)) {
14434        hasHydrationEventBinding = true;
14435      }
14436      if (isEventHandler && isReservedProp(name)) {
14437        hasVnodeHook = true;
14438      }
14439      if (isEventHandler && value.type === 14) {
14440        value = value.arguments[0];
14441      }
14442      if (value.type === 20 || (value.type === 4 || value.type === 8) && getConstantType(value, context) > 0) {
14443        return;
14444      }
14445      if (name === "ref") {
14446        hasRef = true;
14447      } else if (name === "class") {
14448        hasClassBinding = true;
14449      } else if (name === "style") {
14450        hasStyleBinding = true;
14451      } else if (name !== "key" && !dynamicPropNames.includes(name)) {
14452        dynamicPropNames.push(name);
14453      }
14454      if (isComponent2 && (name === "class" || name === "style") && !dynamicPropNames.includes(name)) {
14455        dynamicPropNames.push(name);
14456      }
14457    } else {
14458      hasDynamicKeys = true;
14459    }
14460  };
14461  for (let i = 0; i < props2.length; i++) {
14462    const prop = props2[i];
14463    if (prop.type === 6) {
14464      const { loc, name, nameLoc, value } = prop;
14465      let isStatic = true;
14466      if (name === "ref") {
14467        hasRef = true;
14468        pushRefVForMarker();
14469      }
14470      if (name === "is" && (isComponentTag(tag) || value && value.content.startsWith("vue:") || isCompatEnabled(
14471        "COMPILER_IS_ON_ELEMENT",
14472        context
14473      ))) {
14474        continue;
14475      }
14476      properties.push(
14477        createObjectProperty(
14478          createSimpleExpression(name, true, nameLoc),
14479          createSimpleExpression(
14480            value ? value.content : "",
14481            isStatic,
14482            value ? value.loc : loc
14483          )
14484        )
14485      );
14486    } else {
14487      const { name, arg, exp, loc, modifiers } = prop;
14488      const isVBind = name === "bind";
14489      const isVOn = name === "on";
14490      if (name === "slot") {
14491        if (!isComponent2) {
14492          context.onError(
14493            createCompilerError(40, loc)
14494          );
14495        }
14496        continue;
14497      }
14498      if (name === "once" || name === "memo") {
14499        continue;
14500      }
14501      if (name === "is" || isVBind && isStaticArgOf(arg, "is") && (isComponentTag(tag) || isCompatEnabled(
14502        "COMPILER_IS_ON_ELEMENT",
14503        context
14504      ))) {
14505        continue;
14506      }
14507      if (isVOn && ssr) {
14508        continue;
14509      }
14510      if (
14511        // #938: elements with dynamic keys should be forced into blocks
14512        isVBind && isStaticArgOf(arg, "key") || // inline before-update hooks need to force block so that it is invoked
14513        // before children
14514        isVOn && hasChildren && isStaticArgOf(arg, "vue:before-update")
14515      ) {
14516        shouldUseBlock = true;
14517      }
14518      if (isVBind && isStaticArgOf(arg, "ref")) {
14519        pushRefVForMarker();
14520      }
14521      if (!arg && (isVBind || isVOn)) {
14522        hasDynamicKeys = true;
14523        if (exp) {
14524          if (isVBind) {
14525            {
14526              pushMergeArg();
14527              if (isCompatEnabled(
14528                "COMPILER_V_BIND_OBJECT_ORDER",
14529                context
14530              )) {
14531                mergeArgs.unshift(exp);
14532                continue;
14533              }
14534            }
14535            pushRefVForMarker();
14536            pushMergeArg();
14537            mergeArgs.push(exp);
14538          } else {
14539            pushMergeArg({
14540              type: 14,
14541              loc,
14542              callee: context.helper(TO_HANDLERS),
vendor: 8,628 bytes, lines 14543-14851
14543              arguments: isComponent2 ? [exp] : [exp, `true`]
14544            });
14545          }
14546        } else {
14547          context.onError(
14548            createCompilerError(
14549              isVBind ? 34 : 35,
14550              loc
14551            )
14552          );
14553        }
14554        continue;
14555      }
14556      if (isVBind && modifiers.some((mod) => mod.content === "prop")) {
14557        patchFlag |= 32;
14558      }
14559      const directiveTransform = context.directiveTransforms[name];
14560      if (directiveTransform) {
14561        const { props: props22, needRuntime } = directiveTransform(prop, node, context);
14562        !ssr && props22.forEach(analyzePatchFlag);
14563        if (isVOn && arg && !isStaticExp(arg)) {
14564          pushMergeArg(createObjectExpression(props22, elementLoc));
14565        } else {
14566          properties.push(...props22);
14567        }
14568        if (needRuntime) {
14569          runtimeDirectives.push(prop);
14570          if (isSymbol$2(needRuntime)) {
14571            directiveImportMap.set(prop, needRuntime);
14572          }
14573        }
14574      } else if (!isBuiltInDirective(name)) {
14575        runtimeDirectives.push(prop);
14576        if (hasChildren) {
14577          shouldUseBlock = true;
14578        }
14579      }
14580    }
14581  }
14582  let propsExpression = void 0;
14583  if (mergeArgs.length) {
14584    pushMergeArg();
14585    if (mergeArgs.length > 1) {
14586      propsExpression = createCallExpression(
14587        context.helper(MERGE_PROPS),
14588        mergeArgs,
14589        elementLoc
14590      );
14591    } else {
14592      propsExpression = mergeArgs[0];
14593    }
14594  } else if (properties.length) {
14595    propsExpression = createObjectExpression(
14596      dedupeProperties(properties),
14597      elementLoc
14598    );
14599  }
14600  if (hasDynamicKeys) {
14601    patchFlag |= 16;
14602  } else {
14603    if (hasClassBinding && !isComponent2) {
14604      patchFlag |= 2;
14605    }
14606    if (hasStyleBinding && !isComponent2) {
14607      patchFlag |= 4;
14608    }
14609    if (dynamicPropNames.length) {
14610      patchFlag |= 8;
14611    }
14612    if (hasHydrationEventBinding) {
14613      patchFlag |= 32;
14614    }
14615  }
14616  if (!shouldUseBlock && (patchFlag === 0 || patchFlag === 32) && (hasRef || hasVnodeHook || runtimeDirectives.length > 0)) {
14617    patchFlag |= 512;
14618  }
14619  if (!context.inSSR && propsExpression) {
14620    switch (propsExpression.type) {
14621      case 15:
14622        let classKeyIndex = -1;
14623        let styleKeyIndex = -1;
14624        let hasDynamicKey = false;
14625        for (let i = 0; i < propsExpression.properties.length; i++) {
14626          const key = propsExpression.properties[i].key;
14627          if (isStaticExp(key)) {
14628            if (key.content === "class") {
14629              classKeyIndex = i;
14630            } else if (key.content === "style") {
14631              styleKeyIndex = i;
14632            }
14633          } else if (!key.isHandlerKey) {
14634            hasDynamicKey = true;
14635          }
14636        }
14637        const classProp = propsExpression.properties[classKeyIndex];
14638        const styleProp = propsExpression.properties[styleKeyIndex];
14639        if (!hasDynamicKey) {
14640          if (classProp && !isStaticExp(classProp.value)) {
14641            classProp.value = createCallExpression(
14642              context.helper(NORMALIZE_CLASS),
14643              [classProp.value]
14644            );
14645          }
14646          if (styleProp && // the static style is compiled into an object,
14647          // so use `hasStyleBinding` to ensure that it is a dynamic style binding
14648          (hasStyleBinding || styleProp.value.type === 4 && styleProp.value.content.trim()[0] === `[` || // v-bind:style and style both exist,
14649          // v-bind:style with static literal object
14650          styleProp.value.type === 17)) {
14651            styleProp.value = createCallExpression(
14652              context.helper(NORMALIZE_STYLE),
14653              [styleProp.value]
14654            );
14655          }
14656        } else {
14657          propsExpression = createCallExpression(
14658            context.helper(NORMALIZE_PROPS),
14659            [propsExpression]
14660          );
14661        }
14662        break;
14663      case 14:
14664        break;
14665      default:
14666        propsExpression = createCallExpression(
14667          context.helper(NORMALIZE_PROPS),
14668          [
14669            createCallExpression(context.helper(GUARD_REACTIVE_PROPS), [
14670              propsExpression
14671            ])
14672          ]
14673        );
14674        break;
14675    }
14676  }
14677  return {
14678    props: propsExpression,
14679    directives: runtimeDirectives,
14680    patchFlag,
14681    dynamicPropNames,
14682    shouldUseBlock
14683  };
14684}
14685function dedupeProperties(properties) {
14686  const knownProps = /* @__PURE__ */ new Map();
14687  const deduped = [];
14688  for (let i = 0; i < properties.length; i++) {
14689    const prop = properties[i];
14690    if (prop.key.type === 8 || !prop.key.isStatic) {
14691      deduped.push(prop);
14692      continue;
14693    }
14694    const name = prop.key.content;
14695    const existing = knownProps.get(name);
14696    if (existing) {
14697      if (name === "style" || name === "class" || isOn(name)) {
14698        mergeAsArray(existing, prop);
14699      }
14700    } else {
14701      knownProps.set(name, prop);
14702      deduped.push(prop);
14703    }
14704  }
14705  return deduped;
14706}
14707function mergeAsArray(existing, incoming) {
14708  if (existing.value.type === 17) {
14709    existing.value.elements.push(incoming.value);
14710  } else {
14711    existing.value = createArrayExpression(
14712      [existing.value, incoming.value],
14713      existing.loc
14714    );
14715  }
14716}
14717function buildDirectiveArgs(dir, context) {
14718  const dirArgs = [];
14719  const runtime = directiveImportMap.get(dir);
14720  if (runtime) {
14721    dirArgs.push(context.helperString(runtime));
14722  } else {
14723    {
14724      context.helper(RESOLVE_DIRECTIVE);
14725      context.directives.add(dir.name);
14726      dirArgs.push(toValidAssetId(dir.name, `directive`));
14727    }
14728  }
14729  const { loc } = dir;
14730  if (dir.exp) dirArgs.push(dir.exp);
14731  if (dir.arg) {
14732    if (!dir.exp) {
14733      dirArgs.push(`void 0`);
14734    }
14735    dirArgs.push(dir.arg);
14736  }
14737  if (Object.keys(dir.modifiers).length) {
14738    if (!dir.arg) {
14739      if (!dir.exp) {
14740        dirArgs.push(`void 0`);
14741      }
14742      dirArgs.push(`void 0`);
14743    }
14744    const trueExpression = createSimpleExpression(`true`, false, loc);
14745    dirArgs.push(
14746      createObjectExpression(
14747        dir.modifiers.map(
14748          (modifier) => createObjectProperty(modifier, trueExpression)
14749        ),
14750        loc
14751      )
14752    );
14753  }
14754  return createArrayExpression(dirArgs, dir.loc);
14755}
14756function stringifyDynamicPropNames(props2) {
14757  let propsNamesString = `[`;
14758  for (let i = 0, l = props2.length; i < l; i++) {
14759    propsNamesString += JSON.stringify(props2[i]);
14760    if (i < l - 1) propsNamesString += ", ";
14761  }
14762  return propsNamesString + `]`;
14763}
14764function isComponentTag(tag) {
14765  return tag === "component" || tag === "Component";
14766}
14767const transformSlotOutlet = (node, context) => {
14768  if (isSlotOutlet(node)) {
14769    const { children, loc } = node;
14770    const { slotName, slotProps } = processSlotOutlet(node, context);
14771    const slotArgs = [
14772      context.prefixIdentifiers ? `_ctx.$slots` : `$slots`,
14773      slotName,
14774      "{}",
14775      "undefined",
14776      "true"
14777    ];
14778    let expectedLen = 2;
14779    if (slotProps) {
14780      slotArgs[2] = slotProps;
14781      expectedLen = 3;
14782    }
14783    if (children.length) {
14784      slotArgs[3] = createFunctionExpression([], children, false, false, loc);
14785      expectedLen = 4;
14786    }
14787    if (context.scopeId && !context.slotted) {
14788      expectedLen = 5;
14789    }
14790    slotArgs.splice(expectedLen);
14791    node.codegenNode = createCallExpression(
14792      context.helper(RENDER_SLOT),
14793      slotArgs,
14794      loc
14795    );
14796  }
14797};
14798function processSlotOutlet(node, context) {
14799  let slotName = `"default"`;
14800  let slotProps = void 0;
14801  const nonNameProps = [];
14802  for (let i = 0; i < node.props.length; i++) {
14803    const p2 = node.props[i];
14804    if (p2.type === 6) {
14805      if (p2.value) {
14806        if (p2.name === "name") {
14807          slotName = JSON.stringify(p2.value.content);
14808        } else {
14809          p2.name = camelize(p2.name);
14810          nonNameProps.push(p2);
14811        }
14812      }
14813    } else {
14814      if (p2.name === "bind" && isStaticArgOf(p2.arg, "name")) {
14815        if (p2.exp) {
14816          slotName = p2.exp;
14817        } else if (p2.arg && p2.arg.type === 4) {
14818          const name = camelize(p2.arg.content);
14819          slotName = p2.exp = createSimpleExpression(name, false, p2.arg.loc);
14820        }
14821      } else {
14822        if (p2.name === "bind" && p2.arg && isStaticExp(p2.arg)) {
14823          p2.arg.content = camelize(p2.arg.content);
14824        }
14825        nonNameProps.push(p2);
14826      }
14827    }
14828  }
14829  if (nonNameProps.length > 0) {
14830    const { props: props2, directives } = buildProps(
14831      node,
14832      context,
14833      nonNameProps,
14834      false,
14835      false
14836    );
14837    slotProps = props2;
14838    if (directives.length) {
14839      context.onError(
14840        createCompilerError(
14841          36,
14842          directives[0].loc
14843        )
14844      );
14845    }
14846  }
14847  return {
14848    slotName,
14849    slotProps
14850  };
14851}
vendor: 8,606 bytes, lines 14852-15116
14852const transformOn$1 = (dir, node, context, augmentor) => {
14853  const { loc, modifiers, arg } = dir;
14854  if (!dir.exp && !modifiers.length) {
14855    context.onError(createCompilerError(35, loc));
14856  }
14857  let eventName;
14858  if (arg.type === 4) {
14859    if (arg.isStatic) {
14860      let rawName = arg.content;
14861      if (rawName.startsWith("vue:")) {
14862        rawName = `vnode-${rawName.slice(4)}`;
14863      }
14864      const eventString = node.tagType !== 0 || rawName.startsWith("vnode") || !/[A-Z]/.test(rawName) ? (
14865        // for non-element and vnode lifecycle event listeners, auto convert
14866        // it to camelCase. See issue #2249
14867        toHandlerKey(camelize(rawName))
14868      ) : (
14869        // preserve case for plain element listeners that have uppercase
14870        // letters, as these may be custom elements' custom events
14871        `on:${rawName}`
14872      );
14873      eventName = createSimpleExpression(eventString, true, arg.loc);
14874    } else {
14875      eventName = createCompoundExpression([
14876        `${context.helperString(TO_HANDLER_KEY)}(`,
14877        arg,
14878        `)`
14879      ]);
14880    }
14881  } else {
14882    eventName = arg;
14883    eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`);
14884    eventName.children.push(`)`);
14885  }
14886  let exp = dir.exp;
14887  if (exp && !exp.content.trim()) {
14888    exp = void 0;
14889  }
14890  let shouldCache = context.cacheHandlers && !exp && !context.inVOnce;
14891  if (exp) {
14892    const isMemberExp = isMemberExpression(exp);
14893    const isInlineStatement = !(isMemberExp || isFnExpression(exp));
14894    const hasMultipleStatements = exp.content.includes(`;`);
14895    if (isInlineStatement || shouldCache && isMemberExp) {
14896      exp = createCompoundExpression([
14897        `${isInlineStatement ? `$event` : `${``}(...args)`} => ${hasMultipleStatements ? `{` : `(`}`,
14898        exp,
14899        hasMultipleStatements ? `}` : `)`
14900      ]);
14901    }
14902  }
14903  let ret = {
14904    props: [
14905      createObjectProperty(
14906        eventName,
14907        exp || createSimpleExpression(`() => {}`, false, loc)
14908      )
14909    ]
14910  };
14911  if (augmentor) {
14912    ret = augmentor(ret);
14913  }
14914  if (shouldCache) {
14915    ret.props[0].value = context.cache(ret.props[0].value);
14916  }
14917  ret.props.forEach((p2) => p2.key.isHandlerKey = true);
14918  return ret;
14919};
14920const transformText = (node, context) => {
14921  if (node.type === 0 || node.type === 1 || node.type === 11 || node.type === 10) {
14922    return () => {
14923      const children = node.children;
14924      let currentContainer = void 0;
14925      let hasText = false;
14926      for (let i = 0; i < children.length; i++) {
14927        const child = children[i];
14928        if (isText$1(child)) {
14929          hasText = true;
14930          for (let j = i + 1; j < children.length; j++) {
14931            const next = children[j];
14932            if (isText$1(next)) {
14933              if (!currentContainer) {
14934                currentContainer = children[i] = createCompoundExpression(
14935                  [child],
14936                  child.loc
14937                );
14938              }
14939              currentContainer.children.push(` + `, next);
14940              children.splice(j, 1);
14941              j--;
14942            } else {
14943              currentContainer = void 0;
14944              break;
14945            }
14946          }
14947        }
14948      }
14949      if (!hasText || // if this is a plain element with a single text child, leave it
14950      // as-is since the runtime has dedicated fast path for this by directly
14951      // setting textContent of the element.
14952      // for component root it's always normalized anyway.
14953      children.length === 1 && (node.type === 0 || node.type === 1 && node.tagType === 0 && // #3756
14954      // custom directives can potentially add DOM elements arbitrarily,
14955      // we need to avoid setting textContent of the element at runtime
14956      // to avoid accidentally overwriting the DOM elements added
14957      // by the user through custom directives.
14958      !node.props.find(
14959        (p2) => p2.type === 7 && !context.directiveTransforms[p2.name]
14960      ) && // in compat mode, <template> tags with no special directives
14961      // will be rendered as a fragment so its children must be
14962      // converted into vnodes.
14963      !(node.tag === "template"))) {
14964        return;
14965      }
14966      for (let i = 0; i < children.length; i++) {
14967        const child = children[i];
14968        if (isText$1(child) || child.type === 8) {
14969          const callArgs = [];
14970          if (child.type !== 2 || child.content !== " ") {
14971            callArgs.push(child);
14972          }
14973          if (!context.ssr && getConstantType(child, context) === 0) {
14974            callArgs.push(
14975              `1`
14976            );
14977          }
14978          children[i] = {
14979            type: 12,
14980            content: child,
14981            loc: child.loc,
14982            codegenNode: createCallExpression(
14983              context.helper(CREATE_TEXT),
14984              callArgs
14985            )
14986          };
14987        }
14988      }
14989    };
14990  }
14991};
14992const seen$1 = /* @__PURE__ */ new WeakSet();
14993const transformOnce = (node, context) => {
14994  if (node.type === 1 && findDir(node, "once", true)) {
14995    if (seen$1.has(node) || context.inVOnce || context.inSSR) {
14996      return;
14997    }
14998    seen$1.add(node);
14999    context.inVOnce = true;
15000    context.helper(SET_BLOCK_TRACKING);
15001    return () => {
15002      context.inVOnce = false;
15003      const cur = context.currentNode;
15004      if (cur.codegenNode) {
15005        cur.codegenNode = context.cache(
15006          cur.codegenNode,
15007          true,
15008          true
15009        );
15010      }
15011    };
15012  }
15013};
15014const transformModel$1 = (dir, node, context) => {
15015  const { exp, arg } = dir;
15016  if (!exp) {
15017    context.onError(
15018      createCompilerError(41, dir.loc)
15019    );
15020    return createTransformProps();
15021  }
15022  const rawExp = exp.loc.source.trim();
15023  const expString = exp.type === 4 ? exp.content : rawExp;
15024  const bindingType = context.bindingMetadata[rawExp];
15025  if (bindingType === "props" || bindingType === "props-aliased") {
15026    context.onError(createCompilerError(44, exp.loc));
15027    return createTransformProps();
15028  }
15029  if (!expString.trim() || !isMemberExpression(exp) && true) {
15030    context.onError(
15031      createCompilerError(42, exp.loc)
15032    );
15033    return createTransformProps();
15034  }
15035  const propName = arg ? arg : createSimpleExpression("modelValue", true);
15036  const eventName = arg ? isStaticExp(arg) ? `onUpdate:${camelize(arg.content)}` : createCompoundExpression(['"onUpdate:" + ', arg]) : `onUpdate:modelValue`;
15037  let assignmentExp;
15038  const eventArg = context.isTS ? `($event: any)` : `$event`;
15039  {
15040    assignmentExp = createCompoundExpression([
15041      `${eventArg} => ((`,
15042      exp,
15043      `) = $event)`
15044    ]);
15045  }
15046  const props2 = [
15047    // modelValue: foo
15048    createObjectProperty(propName, dir.exp),
15049    // "onUpdate:modelValue": $event => (foo = $event)
15050    createObjectProperty(eventName, assignmentExp)
15051  ];
15052  if (dir.modifiers.length && node.tagType === 1) {
15053    const modifiers = dir.modifiers.map((m) => m.content).map((m) => (isSimpleIdentifier(m) ? m : JSON.stringify(m)) + `: true`).join(`, `);
15054    const modifiersKey = arg ? isStaticExp(arg) ? `${arg.content}Modifiers` : createCompoundExpression([arg, ' + "Modifiers"']) : `modelModifiers`;
15055    props2.push(
15056      createObjectProperty(
15057        modifiersKey,
15058        createSimpleExpression(
15059          `{ ${modifiers} }`,
15060          false,
15061          dir.loc,
15062          2
15063        )
15064      )
15065    );
15066  }
15067  return createTransformProps(props2);
15068};
15069function createTransformProps(props2 = []) {
15070  return { props: props2 };
15071}
15072const validDivisionCharRE = /[\w).+\-_$\]]/;
15073const transformFilter = (node, context) => {
15074  if (!isCompatEnabled("COMPILER_FILTERS", context)) {
15075    return;
15076  }
15077  if (node.type === 5) {
15078    rewriteFilter(node.content, context);
15079  } else if (node.type === 1) {
15080    node.props.forEach((prop) => {
15081      if (prop.type === 7 && prop.name !== "for" && prop.exp) {
15082        rewriteFilter(prop.exp, context);
15083      }
15084    });
15085  }
15086};
15087function rewriteFilter(node, context) {
15088  if (node.type === 4) {
15089    parseFilter(node, context);
15090  } else {
15091    for (let i = 0; i < node.children.length; i++) {
15092      const child = node.children[i];
15093      if (typeof child !== "object") continue;
15094      if (child.type === 4) {
15095        parseFilter(child, context);
15096      } else if (child.type === 8) {
15097        rewriteFilter(node, context);
15098      } else if (child.type === 5) {
15099        rewriteFilter(child.content, context);
15100      }
15101    }
15102  }
15103}
15104function parseFilter(node, context) {
15105  const exp = node.content;
15106  let inSingle = false;
15107  let inDouble = false;
15108  let inTemplateString = false;
15109  let inRegex = false;
15110  let curly = 0;
15111  let square = 0;
15112  let paren = 0;
15113  let lastFilterIndex = 0;
15114  let c, prev, i, expression, filters = [];
15115  for (i = 0; i < exp.length; i++) {
15116    prev = c;
vendor: 4,911 bytes, lines 15117-15305
15117    c = exp.charCodeAt(i);
15118    if (inSingle) {
15119      if (c === 39 && prev !== 92) inSingle = false;
15120    } else if (inDouble) {
15121      if (c === 34 && prev !== 92) inDouble = false;
15122    } else if (inTemplateString) {
15123      if (c === 96 && prev !== 92) inTemplateString = false;
15124    } else if (inRegex) {
15125      if (c === 47 && prev !== 92) inRegex = false;
15126    } else if (c === 124 && // pipe
15127    exp.charCodeAt(i + 1) !== 124 && exp.charCodeAt(i - 1) !== 124 && !curly && !square && !paren) {
15128      if (expression === void 0) {
15129        lastFilterIndex = i + 1;
15130        expression = exp.slice(0, i).trim();
15131      } else {
15132        pushFilter();
15133      }
15134    } else {
15135      switch (c) {
15136        case 34:
15137          inDouble = true;
15138          break;
15139        // "
15140        case 39:
15141          inSingle = true;
15142          break;
15143        // '
15144        case 96:
15145          inTemplateString = true;
15146          break;
15147        // `
15148        case 40:
15149          paren++;
15150          break;
15151        // (
15152        case 41:
15153          paren--;
15154          break;
15155        // )
15156        case 91:
15157          square++;
15158          break;
15159        // [
15160        case 93:
15161          square--;
15162          break;
15163        // ]
15164        case 123:
15165          curly++;
15166          break;
15167        // {
15168        case 125:
15169          curly--;
15170          break;
15171      }
15172      if (c === 47) {
15173        let j = i - 1;
15174        let p2;
15175        for (; j >= 0; j--) {
15176          p2 = exp.charAt(j);
15177          if (p2 !== " ") break;
15178        }
15179        if (!p2 || !validDivisionCharRE.test(p2)) {
15180          inRegex = true;
15181        }
15182      }
15183    }
15184  }
15185  if (expression === void 0) {
15186    expression = exp.slice(0, i).trim();
15187  } else if (lastFilterIndex !== 0) {
15188    pushFilter();
15189  }
15190  function pushFilter() {
15191    filters.push(exp.slice(lastFilterIndex, i).trim());
15192    lastFilterIndex = i + 1;
15193  }
15194  if (filters.length) {
15195    for (i = 0; i < filters.length; i++) {
15196      expression = wrapFilter(expression, filters[i], context);
15197    }
15198    node.content = expression;
15199    node.ast = void 0;
15200  }
15201}
15202function wrapFilter(exp, filter2, context) {
15203  context.helper(RESOLVE_FILTER);
15204  const i = filter2.indexOf("(");
15205  if (i < 0) {
15206    context.filters.add(filter2);
15207    return `${toValidAssetId(filter2, "filter")}(${exp})`;
15208  } else {
15209    const name = filter2.slice(0, i);
15210    const args = filter2.slice(i + 1);
15211    context.filters.add(name);
15212    return `${toValidAssetId(name, "filter")}(${exp}${args !== ")" ? "," + args : args}`;
15213  }
15214}
15215const seen = /* @__PURE__ */ new WeakSet();
15216const transformMemo = (node, context) => {
15217  if (node.type === 1) {
15218    const dir = findDir(node, "memo");
15219    if (!dir || seen.has(node)) {
15220      return;
15221    }
15222    seen.add(node);
15223    return () => {
15224      const codegenNode = node.codegenNode || context.currentNode.codegenNode;
15225      if (codegenNode && codegenNode.type === 13) {
15226        if (node.tagType !== 1) {
15227          convertToBlock(codegenNode, context);
15228        }
15229        node.codegenNode = createCallExpression(context.helper(WITH_MEMO), [
15230          dir.exp,
15231          createFunctionExpression(void 0, codegenNode),
15232          `_cache`,
15233          String(context.cached.length)
15234        ]);
15235        context.cached.push(null);
15236      }
15237    };
15238  }
15239};
15240function getBaseTransformPreset(prefixIdentifiers) {
15241  return [
15242    [
15243      transformOnce,
15244      transformIf,
15245      transformMemo,
15246      transformFor,
15247      ...[transformFilter],
15248      ...[],
15249      transformSlotOutlet,
15250      transformElement,
15251      trackSlotScopes,
15252      transformText
15253    ],
15254    {
15255      on: transformOn$1,
15256      bind: transformBind,
15257      model: transformModel$1
15258    }
15259  ];
15260}
15261function baseCompile$2(source, options2 = {}) {
15262  const onError = options2.onError || defaultOnError$1;
15263  const isModuleMode = options2.mode === "module";
15264  {
15265    if (options2.prefixIdentifiers === true) {
15266      onError(createCompilerError(47));
15267    } else if (isModuleMode) {
15268      onError(createCompilerError(48));
15269    }
15270  }
15271  const prefixIdentifiers = false;
15272  if (options2.cacheHandlers) {
15273    onError(createCompilerError(49));
15274  }
15275  if (options2.scopeId && !isModuleMode) {
15276    onError(createCompilerError(50));
15277  }
15278  const resolvedOptions = extend$5({}, options2, {
15279    prefixIdentifiers
15280  });
15281  const ast = isString$3(source) ? baseParse(source, resolvedOptions) : source;
15282  const [nodeTransforms, directiveTransforms] = getBaseTransformPreset();
15283  transform$1(
15284    ast,
15285    extend$5({}, resolvedOptions, {
15286      nodeTransforms: [
15287        ...nodeTransforms,
15288        ...options2.nodeTransforms || []
15289        // user transforms
15290      ],
15291      directiveTransforms: extend$5(
15292        {},
15293        directiveTransforms,
15294        options2.directiveTransforms || {}
15295        // user transforms
15296      )
15297    })
15298  );
15299  return generate$1(ast, resolvedOptions);
15300}
15301const noopDirectiveTransform = () => ({ props: [] });
15302/**
15303* @vue/compiler-dom v3.5.16
15304* (c) 2018-present Yuxi (Evan) You and Vue contributors
15305* @license MIT
15306**/
15307const V_MODEL_RADIO = Symbol(``);
15308const V_MODEL_CHECKBOX = Symbol(
15309  ``
15310);
15311const V_MODEL_TEXT = Symbol(``);
15312const V_MODEL_SELECT = Symbol(
15313  ``
15314);
15315const V_MODEL_DYNAMIC = Symbol(
15316  ``
15317);
15318const V_ON_WITH_MODIFIERS = Symbol(
15319  ``
15320);
15321const V_ON_WITH_KEYS = Symbol(
15322  ``
15323);
15324const V_SHOW = Symbol(``);
15325const TRANSITION = Symbol(``);
15326const TRANSITION_GROUP = Symbol(
15327  ``
15328);
15329registerRuntimeHelpers({
15330  [V_MODEL_RADIO]: `vModelRadio`,
15331  [V_MODEL_CHECKBOX]: `vModelCheckbox`,
15332  [V_MODEL_TEXT]: `vModelText`,
15333  [V_MODEL_SELECT]: `vModelSelect`,
15334  [V_MODEL_DYNAMIC]: `vModelDynamic`,
15335  [V_ON_WITH_MODIFIERS]: `withModifiers`,
15336  [V_ON_WITH_KEYS]: `withKeys`,
15337  [V_SHOW]: `vShow`,
15338  [TRANSITION]: `Transition`,
15339  [TRANSITION_GROUP]: `TransitionGroup`
15340});
15341let decoder;
15342function decodeHtmlBrowser(raw, asAttr = false) {
15343  if (!decoder) {
15344    decoder = document.createElement("div");
15345  }
15346  if (asAttr) {
15347    decoder.innerHTML = `<div foo="${raw.replace(/"/g, "&quot;")}">`;
15348    return decoder.children[0].getAttribute("foo");
15349  } else {
15350    decoder.innerHTML = raw;
15351    return decoder.textContent;
15352  }
15353}
15354const parserOptions = {
15355  parseMode: "html",
15356  isVoidTag,
15357  isNativeTag: (tag) => isHTMLTag(tag) || isSVGTag(tag) || isMathMLTag(tag),
15358  isPreTag: (tag) => tag === "pre",
15359  isIgnoreNewlineTag: (tag) => tag === "pre" || tag === "textarea",
15360  decodeEntities: decodeHtmlBrowser,
15361  isBuiltInComponent: (tag) => {
15362    if (tag === "Transition" || tag === "transition") {
15363      return TRANSITION;
15364    } else if (tag === "TransitionGroup" || tag === "transition-group") {
15365      return TRANSITION_GROUP;
15366    }
15367  },
15368  // https://html.spec.whatwg.org/multipage/parsing.html#tree-construction-dispatcher
15369  getNamespace(tag, parent, rootNamespace) {
15370    let ns = parent ? parent.ns : rootNamespace;
15371    if (parent && ns === 2) {
15372      if (parent.tag === "annotation-xml") {
15373        if (tag === "svg") {
15374          return 1;
15375        }
15376        if (parent.props.some(
15377          (a) => a.type === 6 && a.name === "encoding" && a.value != null && (a.value.content === "text/html" || a.value.content === "application/xhtml+xml")
15378        )) {
15379          ns = 0;
15380        }
15381      } else if (/^m(?:[ions]|text)$/.test(parent.tag) && tag !== "mglyph" && tag !== "malignmark") {
15382        ns = 0;
15383      }
15384    } else if (parent && ns === 1) {
15385      if (parent.tag === "foreignObject" || parent.tag === "desc" || parent.tag === "title") {
15386        ns = 0;
15387      }
15388    }
15389    if (ns === 0) {
15390      if (tag === "svg") {
15391        return 1;
15392      }
15393      if (tag === "math") {
15394        return 2;
15395      }
15396    }
15397    return ns;
15398  }
15399};
15400const transformStyle = (node) => {
15401  if (node.type === 1) {
15402    node.props.forEach((p2, i) => {
15403      if (p2.type === 6 && p2.name === "style" && p2.value) {
15404        node.props[i] = {
15405          type: 7,
15406          name: `bind`,
15407          arg: createSimpleExpression(`style`, true, p2.loc),
15408          exp: parseInlineCSS(p2.value.content, p2.loc),
15409          modifiers: [],
15410          loc: p2.loc
15411        };
15412      }
15413    });
15414  }
15415};
15416const parseInlineCSS = (cssText, loc) => {
15417  const normalized = parseStringStyle(cssText);
15418  return createSimpleExpression(
15419    JSON.stringify(normalized),
15420    false,
15421    loc,
15422    3
15423  );
15424};
15425function createDOMCompilerError(code, loc) {
15426  return createCompilerError(
15427    code,
15428    loc
15429  );
15430}
15431const transformVHtml = (dir, node, context) => {
15432  const { exp, loc } = dir;
15433  if (!exp) {
15434    context.onError(
15435      createDOMCompilerError(53, loc)
15436    );
15437  }
15438  if (node.children.length) {
15439    context.onError(
15440      createDOMCompilerError(54, loc)
15441    );
15442    node.children.length = 0;
15443  }
15444  return {
15445    props: [
15446      createObjectProperty(
15447        createSimpleExpression(`innerHTML`, true, loc),
15448        exp || createSimpleExpression("", true)
15449      )
15450    ]
15451  };
15452};
15453const transformVText = (dir, node, context) => {
15454  const { exp, loc } = dir;
15455  if (!exp) {
15456    context.onError(
15457      createDOMCompilerError(55, loc)
15458    );
15459  }
15460  if (node.children.length) {
15461    context.onError(
15462      createDOMCompilerError(56, loc)
15463    );
15464    node.children.length = 0;
15465  }
15466  return {
15467    props: [
15468      createObjectProperty(
15469        createSimpleExpression(`textContent`, true),
15470        exp ? getConstantType(exp, context) > 0 ? exp : createCallExpression(
15471          context.helperString(TO_DISPLAY_STRING),
15472          [exp],
15473          loc
15474        ) : createSimpleExpression("", true)
15475      )
15476    ]
15477  };
15478};
15479const transformModel = (dir, node, context) => {
15480  const baseResult = transformModel$1(dir, node, context);
15481  if (!baseResult.props.length || node.tagType === 1) {
15482    return baseResult;
15483  }
15484  if (dir.arg) {
15485    context.onError(
15486      createDOMCompilerError(
15487        58,
15488        dir.arg.loc
15489      )
15490    );
15491  }
15492  const { tag } = node;
vendor: 6,094 bytes, lines 15493-15689
15493  const isCustomElement = context.isCustomElement(tag);
15494  if (tag === "input" || tag === "textarea" || tag === "select" || isCustomElement) {
15495    let directiveToUse = V_MODEL_TEXT;
15496    let isInvalidType = false;
15497    if (tag === "input" || isCustomElement) {
15498      const type = findProp(node, `type`);
15499      if (type) {
15500        if (type.type === 7) {
15501          directiveToUse = V_MODEL_DYNAMIC;
15502        } else if (type.value) {
15503          switch (type.value.content) {
15504            case "radio":
15505              directiveToUse = V_MODEL_RADIO;
15506              break;
15507            case "checkbox":
15508              directiveToUse = V_MODEL_CHECKBOX;
15509              break;
15510            case "file":
15511              isInvalidType = true;
15512              context.onError(
15513                createDOMCompilerError(
15514                  59,
15515                  dir.loc
15516                )
15517              );
15518              break;
15519          }
15520        }
15521      } else if (hasDynamicKeyVBind(node)) {
15522        directiveToUse = V_MODEL_DYNAMIC;
15523      } else ;
15524    } else if (tag === "select") {
15525      directiveToUse = V_MODEL_SELECT;
15526    } else ;
15527    if (!isInvalidType) {
15528      baseResult.needRuntime = context.helper(directiveToUse);
15529    }
15530  } else {
15531    context.onError(
15532      createDOMCompilerError(
15533        57,
15534        dir.loc
15535      )
15536    );
15537  }
15538  baseResult.props = baseResult.props.filter(
15539    (p2) => !(p2.key.type === 4 && p2.key.content === "modelValue")
15540  );
15541  return baseResult;
15542};
15543const isEventOptionModifier = /* @__PURE__ */ makeMap(`passive,once,capture`);
15544const isNonKeyModifier = /* @__PURE__ */ makeMap(
15545  // event propagation management
15546  `stop,prevent,self,ctrl,shift,alt,meta,exact,middle`
15547);
15548const maybeKeyModifier = /* @__PURE__ */ makeMap("left,right");
15549const isKeyboardEvent = /* @__PURE__ */ makeMap(`onkeyup,onkeydown,onkeypress`);
15550const resolveModifiers = (key, modifiers, context, loc) => {
15551  const keyModifiers = [];
15552  const nonKeyModifiers = [];
15553  const eventOptionModifiers = [];
15554  for (let i = 0; i < modifiers.length; i++) {
15555    const modifier = modifiers[i].content;
15556    if (modifier === "native" && checkCompatEnabled(
15557      "COMPILER_V_ON_NATIVE",
15558      context
15559    )) {
15560      eventOptionModifiers.push(modifier);
15561    } else if (isEventOptionModifier(modifier)) {
15562      eventOptionModifiers.push(modifier);
15563    } else {
15564      if (maybeKeyModifier(modifier)) {
15565        if (isStaticExp(key)) {
15566          if (isKeyboardEvent(key.content.toLowerCase())) {
15567            keyModifiers.push(modifier);
15568          } else {
15569            nonKeyModifiers.push(modifier);
15570          }
15571        } else {
15572          keyModifiers.push(modifier);
15573          nonKeyModifiers.push(modifier);
15574        }
15575      } else {
15576        if (isNonKeyModifier(modifier)) {
15577          nonKeyModifiers.push(modifier);
15578        } else {
15579          keyModifiers.push(modifier);
15580        }
15581      }
15582    }
15583  }
15584  return {
15585    keyModifiers,
15586    nonKeyModifiers,
15587    eventOptionModifiers
15588  };
15589};
15590const transformClick = (key, event) => {
15591  const isStaticClick = isStaticExp(key) && key.content.toLowerCase() === "onclick";
15592  return isStaticClick ? createSimpleExpression(event, true) : key.type !== 4 ? createCompoundExpression([
15593    `(`,
15594    key,
15595    `) === "onClick" ? "${event}" : (`,
15596    key,
15597    `)`
15598  ]) : key;
15599};
15600const transformOn = (dir, node, context) => {
15601  return transformOn$1(dir, node, context, (baseResult) => {
15602    const { modifiers } = dir;
15603    if (!modifiers.length) return baseResult;
15604    let { key, value: handlerExp } = baseResult.props[0];
15605    const { keyModifiers, nonKeyModifiers, eventOptionModifiers } = resolveModifiers(key, modifiers, context, dir.loc);
15606    if (nonKeyModifiers.includes("right")) {
15607      key = transformClick(key, `onContextmenu`);
15608    }
15609    if (nonKeyModifiers.includes("middle")) {
15610      key = transformClick(key, `onMouseup`);
15611    }
15612    if (nonKeyModifiers.length) {
15613      handlerExp = createCallExpression(context.helper(V_ON_WITH_MODIFIERS), [
15614        handlerExp,
15615        JSON.stringify(nonKeyModifiers)
15616      ]);
15617    }
15618    if (keyModifiers.length && // if event name is dynamic, always wrap with keys guard
15619    (!isStaticExp(key) || isKeyboardEvent(key.content.toLowerCase()))) {
15620      handlerExp = createCallExpression(context.helper(V_ON_WITH_KEYS), [
15621        handlerExp,
15622        JSON.stringify(keyModifiers)
15623      ]);
15624    }
15625    if (eventOptionModifiers.length) {
15626      const modifierPostfix = eventOptionModifiers.map(capitalize$1).join("");
15627      key = isStaticExp(key) ? createSimpleExpression(`${key.content}${modifierPostfix}`, true) : createCompoundExpression([`(`, key, `) + "${modifierPostfix}"`]);
15628    }
15629    return {
15630      props: [createObjectProperty(key, handlerExp)]
15631    };
15632  });
15633};
15634const transformShow = (dir, node, context) => {
15635  const { exp, loc } = dir;
15636  if (!exp) {
15637    context.onError(
15638      createDOMCompilerError(61, loc)
15639    );
15640  }
15641  return {
15642    props: [],
15643    needRuntime: context.helper(V_SHOW)
15644  };
15645};
15646const ignoreSideEffectTags = (node, context) => {
15647  if (node.type === 1 && node.tagType === 0 && (node.tag === "script" || node.tag === "style")) {
15648    context.removeNode();
15649  }
15650};
15651const DOMNodeTransforms = [
15652  transformStyle,
15653  ...[]
15654];
15655const DOMDirectiveTransforms = {
15656  cloak: noopDirectiveTransform,
15657  html: transformVHtml,
15658  text: transformVText,
15659  model: transformModel,
15660  // override compiler-core
15661  on: transformOn,
15662  // override compiler-core
15663  show: transformShow
15664};
15665function compile$1(src, options2 = {}) {
15666  return baseCompile$2(
15667    src,
15668    extend$5({}, parserOptions, options2, {
15669      nodeTransforms: [
15670        // ignore <script> and <tag>
15671        // this is not put inside DOMNodeTransforms because that list is used
15672        // by compiler-ssr to generate vnode fallback branches
15673        ignoreSideEffectTags,
15674        ...DOMNodeTransforms,
15675        ...options2.nodeTransforms || []
15676      ],
15677      directiveTransforms: extend$5(
15678        {},
15679        DOMDirectiveTransforms,
15680        options2.directiveTransforms || {}
15681      ),
15682      transformHoist: null
15683    })
15684  );
15685}
15686/**
15687* vue v3.5.16
15688* (c) 2018-present Yuxi (Evan) You and Vue contributors
15689* @license MIT
15690**/
15691const compileCache$1 = /* @__PURE__ */ Object.create(null);
15692function compileToFunction(template, options2) {
15693  if (!isString$3(template)) {
15694    if (template.nodeType) {
15695      template = template.innerHTML;
15696    } else {
15697      return NOOP;
15698    }
15699  }
15700  const key = genCacheKey(template, options2);
15701  const cached = compileCache$1[key];
15702  if (cached) {
15703    return cached;
15704  }
15705  if (template[0] === "#") {
15706    const el = document.querySelector(template);
15707    template = el ? el.innerHTML : ``;
15708  }
15709  const opts = extend$5(
15710    {
15711      hoistStatic: true,
15712      onError: void 0,
15713      onWarn: NOOP
15714    },
15715    options2
15716  );
15717  if (!opts.isCustomElement && typeof customElements !== "undefined") {
15718    opts.isCustomElement = (tag) => !!customElements.get(tag);
15719  }
15720  const { code } = compile$1(template, opts);
15721  const render2 = new Function("Vue", code)(runtimeDom);
15722  render2._rc = true;
15723  return compileCache$1[key] = render2;
15724}
15725registerRuntimeCompiler(compileToFunction);
15726function getDevtoolsGlobalHook() {
15727  return getTarget().__VUE_DEVTOOLS_GLOBAL_HOOK__;
15728}
15729function getTarget() {
15730  return typeof navigator !== "undefined" && typeof window !== "undefined" ? window : typeof globalThis !== "undefined" ? globalThis : {};
15731}
15732const isProxyAvailable = typeof Proxy === "function";
15733const HOOK_SETUP = "devtools-plugin:setup";
15734const HOOK_PLUGIN_SETTINGS_SET = "plugin:settings:set";
15735let supported;
15736let perf;
15737function isPerformanceSupported() {
15738  var _a;
15739  if (supported !== void 0) {
15740    return supported;
15741  }
15742  if (typeof window !== "undefined" && window.performance) {
15743    supported = true;
15744    perf = window.performance;
15745  } else if (typeof globalThis !== "undefined" && ((_a = globalThis.perf_hooks) === null || _a === void 0 ? void 0 : _a.performance)) {
15746    supported = true;
15747    perf = globalThis.perf_hooks.performance;
15748  } else {
15749    supported = false;
15750  }
15751  return supported;
15752}
15753function now$3() {
15754  return isPerformanceSupported() ? perf.now() : Date.now();
15755}
15756class ApiProxy {
15757  constructor(plugin, hook) {
15758    this.target = null;
15759    this.targetQueue = [];
15760    this.onQueue = [];
15761    this.plugin = plugin;
15762    this.hook = hook;
15763    const defaultSettings = {};
15764    if (plugin.settings) {
15765      for (const id in plugin.settings) {
15766        const item = plugin.settings[id];
15767        defaultSettings[id] = item.defaultValue;
15768      }
15769    }
15770    const localSettingsSaveId = `__vue-devtools-plugin-settings__${plugin.id}`;
15771    let currentSettings = Object.assign({}, defaultSettings);
15772    try {
15773      const raw = localStorage.getItem(localSettingsSaveId);
15774      const data = JSON.parse(raw);
15775      Object.assign(currentSettings, data);
15776    } catch (e) {
15777    }
15778    this.fallbacks = {
15779      getSettings() {
15780        return currentSettings;
15781      },
15782      setSettings(value) {
15783        try {
15784          localStorage.setItem(localSettingsSaveId, JSON.stringify(value));
15785        } catch (e) {
15786        }
15787        currentSettings = value;
15788      },
15789      now() {
15790        return now$3();
15791      }
15792    };
15793    if (hook) {
15794      hook.on(HOOK_PLUGIN_SETTINGS_SET, (pluginId, value) => {
15795        if (pluginId === this.plugin.id) {
15796          this.fallbacks.setSettings(value);
15797        }
15798      });
15799    }
15800    this.proxiedOn = new Proxy({}, {
15801      get: (_target, prop) => {
15802        if (this.target) {
15803          return this.target.on[prop];
15804        } else {
15805          return (...args) => {
15806            this.onQueue.push({
15807              method: prop,
15808              args
15809            });
15810          };
15811        }
15812      }
15813    });
15814    this.proxiedTarget = new Proxy({}, {
15815      get: (_target, prop) => {
15816        if (this.target) {
15817          return this.target[prop];
15818        } else if (prop === "on") {
15819          return this.proxiedOn;
15820        } else if (Object.keys(this.fallbacks).includes(prop)) {
15821          return (...args) => {
15822            this.targetQueue.push({
15823              method: prop,
15824              args,
15825              resolve: () => {
15826              }
15827            });
15828            return this.fallbacks[prop](...args);
15829          };
15830        } else {
15831          return (...args) => {
15832            return new Promise((resolve2) => {
15833              this.targetQueue.push({
15834                method: prop,
15835                args,
15836                resolve: resolve2
15837              });
15838            });
15839          };
15840        }
15841      }
15842    });
15843  }
15844  async setRealTarget(target) {
15845    this.target = target;
15846    for (const item of this.onQueue) {
15847      this.target.on[item.method](...item.args);
15848    }
15849    for (const item of this.targetQueue) {
15850      item.resolve(await this.target[item.method](...item.args));
15851    }
15852  }
15853}
15854function setupDevtoolsPlugin(pluginDescriptor, setupFn) {
15855  const descriptor = pluginDescriptor;
15856  const target = getTarget();
15857  const hook = getDevtoolsGlobalHook();
15858  const enableProxy = isProxyAvailable && descriptor.enableEarlyProxy;
15859  if (hook && (target.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__ || !en
15859ableProxy)) {
15860    hook.emit(HOOK_SETUP, pluginDescriptor, setupFn);
15861  } else {
15862    const proxy = enableProxy ? new ApiProxy(descriptor, hook) : null;
15863    const list = target.__VUE_DEVTOOLS_PLUGINS__ = target.__VUE_DEVTOOLS_PLUGINS__ || [];
15864    list.push({
15865      pluginDescriptor: descriptor,
15866      setupFn,
15867      proxy
15868    });
15869    if (proxy) {
15870      setupFn(proxy.proxiedTarget);
15871    }
15872  }
15873}
15874/*!
15875 * vuex v4.1.0
15876 * (c) 2022 Evan You
15877 * @license MIT
15878 */
15879var storeKey = "store";
15880function useStore(key) {
15881  if (key === void 0) key = null;
15882  return inject(key !== null ? key : storeKey);
15883}
15884function find(list, f) {
15885  return list.filter(f)[0];
15886}
15887function deepCopy$1(obj, cache2) {
15888  if (cache2 === void 0) cache2 = [];
15889  if (obj === null || typeof obj !== "object") {
15890    return obj;
15891  }
15892  var hit = find(cache2, function(c) {
15893    return c.original === obj;
15894  });
15895  if (hit) {
15896    return hit.copy;
15897  }
15898  var copy = Array.isArray(obj) ? [] : {};
15899  cache2.push({
15900    original: obj,
15901    copy
15902  });
15903  Object.keys(obj).forEach(function(key) {
15904    copy[key] = deepCopy$1(obj[key], cache2);
15905  });
15906  return copy;
15907}
15908function forEachValue(obj, fn) {
15909  Object.keys(obj).forEach(function(key) {
15910    return fn(obj[key], key);
15911  });
15912}
15913function isObject$8(obj) {
15914  return obj !== null && typeof obj === "object";
15915}
15916function isPromise$1(val) {
15917  return val && typeof val.then === "function";
15918}
15919function partial(fn, arg) {
15920  return function() {
15921    return fn(arg);
15922  };
15923}
15924function genericSubscribe(fn, subs, options2) {
15925  if (subs.indexOf(fn) < 0) {
15926    options2 && options2.prepend ? subs.unshift(fn) : subs.push(fn);
15927  }
15928  return function() {
15929    var i = subs.indexOf(fn);
15930    if (i > -1) {
15931      subs.splice(i, 1);
15932    }
15933  };
15934}
15935function resetStore(store2, hot) {
15936  store2._actions = /* @__PURE__ */ Object.create(null);
15937  store2._mutations = /* @__PURE__ */ Object.create(null);
15938  store2._wrappedGetters = /* @__PURE__ */ Object.create(null);
15939  store2._modulesNamespaceMap = /* @__PURE__ */ Object.create(null);
15940  var state2 = store2.state;
15941  installModule(store2, state2, [], store2._modules.root, true);
15942  resetStoreState(store2, state2, hot);
15943}
15944function resetStoreState(store2, state2, hot) {
15945  var oldState = store2._state;
15946  var oldScope = store2._scope;
15947  store2.getters = {};
15948  store2._makeLocalGettersCache = /* @__PURE__ */ Object.create(null);
15949  var wrappedGetters = store2._wrappedGetters;
15950  var computedObj = {};
15951  var computedCache = {};
15952  var scope = effectScope(true);
15953  scope.run(function() {
15954    forEachValue(wrappedGetters, function(fn, key) {
15955      computedObj[key] = partial(fn, store2);
15956      computedCache[key] = computed(function() {
15957        return computedObj[key]();
15958      });
15959      Object.defineProperty(store2.getters, key, {
15960        get: function() {
15961          return computedCache[key].value;
15962        },
15963        enumerable: true
15964        // for local getters
15965      });
15966    });
15967  });
15968  store2._state = reactive({
15969    data: state2
15970  });
15971  store2._scope = scope;
15972  if (store2.strict) {
15973    enableStrictMode(store2);
15974  }
15975  if (oldState) {
15976    if (hot) {
15977      store2._withCommit(function() {
15978        oldState.data = null;
15979      });
15980    }
15981  }
15982  if (oldScope) {
15983    oldScope.stop();
15984  }
15985}
15986function installModule(store2, rootState, path, module, hot) {
15987  var isRoot = !path.length;
15988  var namespace = store2._modules.getNamespace(path);
15989  if (module.namespaced) {
15990    if (store2._modulesNamespaceMap[namespace] && false) ;
15991    store2._modulesNamespaceMap[namespace] = module;
15992  }
15993  if (!isRoot && !hot) {
15994    var parentState = getNestedState(rootState, path.slice(0, -1));
15995    var moduleName = path[path.length - 1];
15996    store2._withCommit(function() {
15997      parentState[moduleName] = module.state;
15998    });
15999  }
16000  var local = module.context = makeLocalContext(store2, namespace, path);
16001  module.forEachMutation(function(mutation, key) {
16002    var namespacedType = namespace + key;
16003    registerMutation(store2, namespacedType, mutation, local);
16004  });
16005  module.forEachAction(function(action, key) {
16006    var type = action.root ? key : namespace + key;
16007    var handler = action.handler || action;
vendor: 1,947 bytes, lines 16008-16068
16008    registerAction(store2, type, handler, local);
16009  });
16010  module.forEachGetter(function(getter, key) {
16011    var namespacedType = namespace + key;
16012    registerGetter(store2, namespacedType, getter, local);
16013  });
16014  module.forEachChild(function(child, key) {
16015    installModule(store2, rootState, path.concat(key), child, hot);
16016  });
16017}
16018function makeLocalContext(store2, namespace, path) {
16019  var noNamespace = namespace === "";
16020  var local = {
16021    dispatch: noNamespace ? store2.dispatch : function(_type, _payload, _options) {
16022      var args = unifyObjectStyle(_type, _payload, _options);
16023      var payload = args.payload;
16024      var options2 = args.options;
16025      var type = args.type;
16026      if (!options2 || !options2.root) {
16027        type = namespace + type;
16028      }
16029      return store2.dispatch(type, payload);
16030    },
16031    commit: noNamespace ? store2.commit : function(_type, _payload, _options) {
16032      var args = unifyObjectStyle(_type, _payload, _options);
16033      var payload = args.payload;
16034      var options2 = args.options;
16035      var type = args.type;
16036      if (!options2 || !options2.root) {
16037        type = namespace + type;
16038      }
16039      store2.commit(type, payload, options2);
16040    }
16041  };
16042  Object.defineProperties(local, {
16043    getters: {
16044      get: noNamespace ? function() {
16045        return store2.getters;
16046      } : function() {
16047        return makeLocalGetters(store2, namespace);
16048      }
16049    },
16050    state: {
16051      get: function() {
16052        return getNestedState(store2.state, path);
16053      }
16054    }
16055  });
16056  return local;
16057}
16058function makeLocalGetters(store2, namespace) {
16059  if (!store2._makeLocalGettersCache[namespace]) {
16060    var gettersProxy = {};
16061    var splitPos = namespace.length;
16062    Object.keys(store2.getters).forEach(function(type) {
16063      if (type.slice(0, splitPos) !== namespace) {
16064        return;
16065      }
16066      var localType = type.slice(splitPos);
16067      Object.defineProperty(gettersProxy, localType, {
16068        get: function() {
16069          return store2.getters[type];
16070        },
16071        enumerable: true
16072      });
16073    });
16074    store2._makeLocalGettersCache[namespace] = gettersProxy;
16075  }
16076  return store2._makeLocalGettersCache[namespace];
16077}
16078function registerMutation(store2, type, handler, local) {
16079  var entry = store2._mutations[type] || (store2._mutations[type] = []);
16080  entry.push(function wrappedMutationHandler(payload) {
16081    handler.call(store2, local.state, payload);
16082  });
16083}
16084function registerAction(store2, type, handler, local) {
16085  var entry = store2._actions[type] || (store2._actions[type] = []);
16086  entry.push(function wrappedActionHandler(payload) {
16087    var res = handler.call(store2, {
16088      dispatch: local.dispatch,
16089      commit: local.commit,
16090      getters: local.getters,
16091      state: local.state,
16092      rootGetters: store2.getters,
16093      rootState: store2.state
16094    }, payload);
16095    if (!isPromise$1(res)) {
16096      res = Promise.resolve(res);
16097    }
16098    if (store2._devtoolHook) {
16099      return res.catch(function(err) {
16100        store2._devtoolHook.emit("vuex:error", err);
16101        throw err;
16102      });
16103    } else {
16104      return res;
16105    }
16106  });
16107}
16108function registerGetter(store2, type, rawGetter, local) {
16109  if (store2._wrappedGetters[type]) {
16110    return;
16111  }
16112  store2._wrappedGetters[type] = function wrappedGetter(store22) {
16113    return rawGetter(
16114      local.state,
16115      // local state
16116      local.getters,
16117      // local getters
16118      store22.state,
16119      // root state
16120      store22.getters
16121      // root getters
16122    );
16123  };
16124}
16125function enableStrictMode(store2) {
16126  watch(function() {
16127    return store2._state.data;
16128  }, function() {
16129  }, { deep: true, flush: "sync" });
16130}
16131function getNestedState(state2, path) {
16132  return path.reduce(function(state22, key) {
16133    return state22[key];
16134  }, state2);
16135}
16136function unifyObjectStyle(type, payload, options2) {
16137  if (isObject$8(type) && type.type) {
16138    options2 = payload;
16139    payload = type;
16140    type = type.type;
16141  }
16142  return { type, payload, options: options2 };
16143}
16144var LABEL_VUEX_BINDINGS = "vuex bindings";
16145var MUTATIONS_LAYER_ID = "vuex:mutations";
16146var ACTIONS_LAYER_ID = "vuex:actions";
16147var INSPECTOR_ID = "vuex";
16148var actionId = 0;
16149function addDevtools(app2, store2) {
16150  setupDevtoolsPlugin(
16151    {
16152      id: "org.vuejs.vuex",
16153      app: app2,
16154      label: "Vuex",
16155      homepage: "https://next.vuex.vuejs.org/",
16156      logo: "https://vuejs.org/images/icons/favicon-96x96.png",
16157      packageName: "vuex",
16158      componentStateTypes: [LABEL_VUEX_BINDINGS]
16159    },
16160    function(api) {
16161      api.addTimelineLayer({
16162        id: MUTATIONS_LAYER_ID,
16163        label: "Vuex Mutations",
16164        color: COLOR_LIME_500
16165      });
16166      api.addTimelineLayer({
16167        id: ACTIONS_LAYER_ID,
16168        label: "Vuex Actions",
16169        color: COLOR_LIME_500
16170      });
16171      api.addInspector({
16172        id: INSPECTOR_ID,
16173        label: "Vuex",
16174        icon: "storage",
16175        treeFilterPlaceholder: "Filter stores..."
16176      });
16177      api.on.getInspectorTree(function(payload) {
16178        if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) {
16179          if (payload.filter) {
16180            var nodes = [];
16181            flattenStoreForInspectorTree(nodes, store2._modules.root, payload.filter, "");
16182            payload.rootNodes = nodes;
16183          } else {
16184            payload.rootNodes = [
16185              formatStoreForInspectorTree(store2._modules.root, "")
16186            ];
16187          }
16188        }
16189      });
16190      api.on.getInspectorState(function(payload) {
16191        if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) {
16192          var modulePath = payload.nodeId;
16193          makeLocalGetters(store2, modulePath);
16194          payload.state = formatStoreForInspectorState(
16195            getStoreModule(store2._modules, modulePath),
16196            modulePath === "root" ? store2.getters : store2._makeLocalGettersCache,
16197            modulePath
16198          );
16199        }
16200      });
16201      api.on.editInspectorState(function(payload) {
16202        if (payload.app === app2 && payload.inspectorId === INSPECTOR_ID) {
16203          var modulePath = payload.nodeId;
16204          var path = payload.path;
16205          if (modulePath !== "root") {
16206            path = modulePath.split("/").filter(Boolean).concat(path);
16207          }
16208          store2._withCommit(function() {
16209            payload.set(store2._state.data, path, payload.state.value);
16210          });
16211        }
16212      });
16213      store2.subscribe(function(mutation, state2) {
16214        var data = {};
16215        if (mutation.payload) {
16216          data.payload = mutation.payload;
16217        }
16218        data.state = state2;
16219        api.notifyComponentUpdate();
16220        api.sendInspectorTree(INSPECTOR_ID);
16221        api.sendInspectorState(INSPECTOR_ID);
16222        api.addTimelineEvent({
16223          layerId: MUTATIONS_LAYER_ID,
16224          event: {
16225            time: Date.now(),
16226            title: mutation.type,
16227            data
16228          }
16229        });
16230      });
16231      store2.subscribeAction({
16232        before: function(action, state2) {
16233          var data = {};
16234          if (action.payload) {
16235            data.payload = action.payload;
16236          }
16237          action._id = actionId++;
16238          action._time = Date.now();
16239          data.state = state2;
16240          api.addTimelineEvent({
16241            layerId: ACTIONS_LAYER_ID,
16242            event: {
16243              time: action._time,
16244              title: action.type,
16245              groupId: action._id,
16246              subtitle: "start",
16247              data
16248            }
16249          });
16250        },
16251        after: function(action, state2) {
16252          var data = {};
16253          var duration = Date.now() - action._time;
16254          data.duration = {
16255            _custom: {
16256              type: "duration",
16257              display: duration + "ms",
16258              tooltip: "Action duration",
16259              value: duration
16260            }
16261          };
16262          if (action.payload) {
16263            data.payload = action.payload;
16264          }
16265          data.state = state2;
16266          api.addTimelineEvent({
16267            layerId: ACTIONS_LAYER_ID,
16268            event: {
16269              time: Date.now(),
16270              title: action.type,
16271              groupId: action._id,
16272              subtitle: "end",
16273              data
16274            }
16275          });
16276        }
16277      });
16278    }
16279  );
16280}
16281var COLOR_LIME_500 = 8702998;
16282var COLOR_DARK = 6710886;
16283var COLOR_WHITE = 16777215;
16284var TAG_NAMESPACED = {
16285  label: "namespaced",
16286  textColor: COLOR_WHITE,
16287  backgroundColor: COLOR_DARK
16288};
16289function extractNameFromPath(path) {
16290  return path && path !== "root" ? path.split("/").slice(-2, -1)[0] : "Root";
16291}
16292function formatStoreForInspectorTree(module, path) {
16293  return {
16294    id: path || "root",
16295    // all modules end with a `/`, we want the last segment only
16296    // cart/ -> cart
16297    // nested/cart/ -> cart
16298    label: extractNameFromPath(path),
16299    tags: module.namespaced ? [TAG_NAMESPACED] : [],
16300    children: Object.keys(module._children).map(
16301      function(moduleName) {
16302        return formatStoreForInspectorTree(
16303          module._children[moduleName],
16304          path + moduleName + "/"
16305        );
16306      }
16307    )
16308  };
16309}
16310function flattenStoreForInspectorTree(result, module, filter2, path) {
16311  if (path.includes(filter2)) {
16312    result.push({
16313      id: path || "root",
16314      label: path.endsWith("/") ? path.slice(0, path.length - 1) : path || "Root",
16315      tags: module.namespaced ? [TAG_NAMESPACED] : []
16316    });
16317  }
16318  Object.keys(module._children).forEach(function(moduleName) {
16319    flattenStoreForInspectorTree(result, module._children[moduleName], filter2, path + moduleName + "/");
16320  });
16321}
16322function formatStoreForInspectorState(module, getters2, path) {
16323  getters2 = path === "root" ? getters2 : getters2[path];
16324  var gettersKeys = Object.keys(getters2);
16325  var storeState = {
16326    state: Object.keys(module.state).map(function(key) {
16327      return {
16328        key,
16329        editable: true,
16330        value: module.state[key]
16331      };
16332    })
16333  };
16334  if (gettersKeys.length) {
16335    var tree = transformPathsToObjectTree(getters2);
16336    storeState.getters = Object.keys(tree).map(function(key) {
16337      return {
16338        key: key.endsWith("/") ? extractNameFromPath(key) : key,
16339        editable: false,
16340        value: canThrow(function() {
16341          return tree[key];
16342        })
16343      };
16344    });
16345  }
16346  return storeState;
16347}
16348function transformPathsToObjectTree(getters2) {
16349  var result = {};
16350  Object.keys(getters2).forEach(function(key) {
16351    var path = key.split("/");
16352    if (path.length > 1) {
16353      var target = result;
16354      var leafKey = path.pop();
16355      path.forEach(function(p2) {
16356        if (!target[p2]) {
16357          target[p2] = {
16358            _custom: {
16359              value: {},
16360              display: p2,
16361              tooltip: "Module",
16362              abstract: true
16363            }
16364          };
16365        }
16366        target = target[p2]._custom.value;
16367      });
16368      target[leafKey] = canThrow(function() {
16369        return getters2[key];
16370      });
16371    } else {
16372      result[key] = canThrow(function() {
16373        return getters2[key];
16374      });
16375    }
16376  });
16377  return result;
16378}
16379function getStoreModule(moduleMap, path) {
16380  var names = path.split("/").filter(function(n) {
16381    return n;
16382  });
16383  return names.reduce(
16384    function(module, moduleName, i) {
16385      var child = module[moduleName];
16386      if (!child) {
16387        throw new Error('Missing module "' + moduleName + '" for path "' + path + '".');
16388      }
16389      return i === names.length - 1 ? child : child._children;
16390    },
16391    path === "root" ? moduleMap : moduleMap.root._children
16392  );
16393}
16394function canThrow(cb) {
16395  try {
16396    return cb();
16397  } catch (e) {
16398    return e;
16399  }
16400}
16401var Module = function Module2(rawModule, runtime) {
16402  this.runtime = runtime;
16403  this._children = /* @__PURE__ */ Object.create(null);
16404  this._rawModule = rawModule;
16405  var rawState = rawModule.state;
16406  this.state = (typeof rawState === "function" ? rawState() : rawState) || {};
16407};
16408var prototypeAccessors$1 = { namespaced: { configurable: true } };
16409prototypeAccessors$1.namespaced.get = function() {
16410  return !!this._rawModule.namespaced;
16411};
16412Module.prototype.addChild = function addChild(key, module) {
16413  this._children[key] = module;
16414};
16415Module.prototype.removeChild = function removeChild(key) {
16416  delete this._children[key];
16417};
16418Module.prototype.getChild = function getChild(key) {
16419  return this._children[key];
16420};
16421Module.prototype.hasChild = function hasChild(key) {
16422  return key in this._children;
16423};
16424Module.prototype.update = function update(rawModule) {
16425  this._rawModule.namespaced = rawModule.namespaced;
16426  if (rawModule.actions) {
16427    this._rawModule.actions = rawModule.actions;
16428  }
16429  if (rawModule.mutations) {
16430    this._rawModule.mutations = rawModule.mutations;
16431  }
16432  if (rawModule.getters) {
16433    this._rawModule.getters = rawModule.getters;
16434  }
16435};
16436Module.prototype.forEachChild = function forEachChild(fn) {
16437  forEachValue(this._children, fn);
16438};
16439Module.prototype.forEachGetter = function forEachGetter(fn) {
16440  if (this._rawModule.getters) {
16441    forEachValue(this._rawModule.getters, fn);
16442  }
16443};
16444Module.prototype.forEachAction = function forEachAction(fn) {
16445  if (this._rawModule.actions) {
16446    forEachValue(this._rawModule.actions, fn);
16447  }
16448};
16449Module.prototype.forEachMutation = function forEachMutation(fn) {
16450  if (this._rawModule.mutations) {
16451    forEachValue(this._rawModule.mutations, fn);
16452  }
16453};
16454Object.defineProperties(Module.prototype, prototypeAccessors$1);
16455var ModuleCollection = function ModuleCollection2(rawRootModule) {
16456  this.register([], rawRootModule, false);
16457};
16458ModuleCollection.prototype.get = function get(path) {
16459  return path.reduce(function(module, key) {
16460    return module.getChild(key);
16461  }, this.root);
16462};
16463ModuleCollection.prototype.getNamespace = function getNamespace(path) {
16464  var module = this.root;
16465  return path.reduce(function(namespace, key) {
16466    module = module.getChild(key);
16467    return namespace + (module.namespaced ? key + "/" : "");
16468  }, "");
16469};
16470ModuleCollection.prototype.update = function update$1(rawRootModule) {
16471  update2([], this.root, rawRootModule);
16472};
16473ModuleCollection.prototype.register = function register(path, rawModule, runtime) {
16474  var this$1$1 = this;
16475  if (runtime === void 0) runtime = true;
16476  var newModule = new Module(rawModule, runtime);
16477  if (path.length === 0) {
16478    this.root = newModule;
16479  } else {
16480    var parent = this.get(path.slice(0, -1));
16481    parent.addChild(path[path.length - 1], newModule);
16482  }
16483  if (rawModule.modules) {
16484    forEachValue(rawModule.modules, function(rawChildModule, key) {
16485      this$1$1.register(path.concat(key), rawChildModule, runtime);
16486    });
16487  }
16488};
16489ModuleCollection.prototype.unregister = function unregister(path) {
16490  var parent = this.get(path.slice(0, -1));
16491  var key = path[path.length - 1];
16492  var child = parent.getChild(key);
16493  if (!child) {
16494    return;
16495  }
16496  if (!child.runtime) {
16497    return;
16498  }
16499  parent.removeChild(key);
16500};
16501ModuleCollection.prototype.isRegistered = function isRegistered(path) {
16502  var parent = this.get(path.slice(0, -1));
16503  var key = path[path.length - 1];
16504  if (parent) {
16505    return parent.hasChild(key);
16506  }
16507  return false;
16508};
16509function update2(path, targetModule, newModule) {
16510  targetModule.update(newModule);
16511  if (newModule.modules) {
16512    for (var key in newModule.modules) {
16513      if (!targetModule.getChild(key)) {
16514        return;
16515      }
16516      update2(
16517        path.concat(key),
16518        targetModule.getChild(key),
16519        newModule.modules[key]
16520      );
16521    }
16522  }
16523}
16524function createStore(options2) {
16525  return new Store(options2);
16526}
16527var Store = function Store2(options2) {
16528  var this$1$1 = this;
16529  if (options2 === void 0) options2 = {};
16530  var plugins = options2.plugins;
16531  if (plugins === void 0) plugins = [];
16532  var strict = options2.strict;
16533  if (strict === void 0) strict = false;
16534  var devtools2 = options2.devtools;
16535  this._committing = false;
16536  this._actions = /* @__PURE__ */ Object.create(null);
16537  this._actionSubscribers = [];
16538  this._mutations = /* @__PURE__ */ Object.create(null);
16539  this._wrappedGetters = /* @__PURE__ */ Object.create(null);
16540  this._modules = new ModuleCollection(options2);
16541  this._modulesNamespaceMap = /* @__PURE__ */ Object.create(null);
16542  this._subscribers = [];
16543  this._makeLocalGettersCache = /* @__PURE__ */ Object.create(null);
16544  this._scope = null;
16545  this._devtools = devtools2;
16546  var store2 = this;
16547  var ref2 = this;
16548  var dispatch2 = ref2.dispatch;
16549  var commit2 = ref2.commit;
16550  this.dispatch = function boundDispatch(type, payload) {
16551    return dispatch2.call(store2, type, payload);
16552  };
16553  this.commit = function boundCommit(type, payload, options22) {
16554    return commit2.call(store2, type, payload, options22);
16555  };
16556  this.strict = strict;
16557  var state2 = this._modules.root.state;
16558  installModule(this, state2, [], this._modules.root);
16559  resetStoreState(this, state2);
16560  plugins.forEach(function(plugin) {
16561    return plugin(this$1$1);
16562  });
16563};
16564var prototypeAccessors = { state: { configurable: true } };
16565Store.prototype.install = function install(app2, injectKey) {
16566  app2.provide(injectKey || storeKey, this);
16567  app2.config.globalProperties.$store = this;
16568  var useDevtools = this._devtools !== void 0 ? this._devtools : false;
16569  if (useDevtools) {
16570    addDevtools(app2, this);
16571  }
16572};
16573prototypeAccessors.state.get = function() {
16574  return this._state.data;
16575};
16576prototypeAccessors.state.set = function(v) {
16577};
16578Store.prototype.commit = function commit(_type, _payload, _options) {
16579  var this$1$1 = this;
16580  var ref2 = unifyObjectStyle(_type, _payload, _options);
16581  var type = ref2.type;
16582  var payload = ref2.payload;
16583  var mutation = { type, payload };
16584  var entry = this._mutations[type];
16585  if (!entry) {
16586    return;
16587  }
16588  this._withCommit(function() {
16589    entry.forEach(function commitIterator(handler) {
16590      handler(payload);
16591    });
16592  });
16593  this._subscribers.slice().forEach(function(sub) {
16594    return sub(mutation, this$1$1.state);
16595  });
16596};
16597Store.prototype.dispatch = function dispatch(_type, _payload) {
16598  var this$1$1 = this;
16599  var ref2 = unifyObjectStyle(_type, _payload);
16600  var type = ref2.type;
16601  var payload = ref2.payload;
16602  var action = { type, payload };
16603  var entry = this._actions[type];
16604  if (!entry) {
16605    return;
16606  }
16607  try {
16608    this._actionSubscribers.slice().filter(function(sub) {
16609      return sub.before;
16610    }
16610).forEach(function(sub) {
16611      return sub.before(action, this$1$1.state);
16612    });
16613  } catch (e) {
16614  }
16615  var result = entry.length > 1 ? Promise.all(entry.map(function(handler) {
16616    return handler(payload);
16617  })) : entry[0](payload);
16618  return new Promise(function(resolve2, reject) {
16619    result.then(function(res) {
16620      try {
16621        this$1$1._actionSubscribers.filter(function(sub) {
16622          return sub.after;
16623        }).forEach(function(sub) {
16624          return sub.after(action, this$1$1.state);
16625        });
16626      } catch (e) {
16627      }
16628      resolve2(res);
16629    }, function(error) {
16630      try {
16631        this$1$1._actionSubscribers.filter(function(sub) {
16632          return sub.error;
16633        }).forEach(function(sub) {
16634          return sub.error(action, this$1$1.state, error);
16635        });
16636      } catch (e) {
16637      }
16638      reject(error);
16639    });
16640  });
16641};
16642Store.prototype.subscribe = function subscribe(fn, options2) {
16643  return genericSubscribe(fn, this._subscribers, options2);
16644};
16645Store.prototype.subscribeAction = function subscribeAction(fn, options2) {
16646  var subs = typeof fn === "function" ? { before: fn } : fn;
16647  return genericSubscribe(subs, this._actionSubscribers, options2);
16648};
16649Store.prototype.watch = function watch$12(getter, cb, options2) {
16650  var this$1$1 = this;
16651  return watch(function() {
16652    return getter(this$1$1.state, this$1$1.getters);
16653  }, cb, Object.assign({}, options2));
16654};
16655Store.prototype.replaceState = function replaceState(state2) {
16656  var this$1$1 = this;
16657  this._withCommit(function() {
16658    this$1$1._state.data = state2;
16659  });
16660};
16661Store.prototype.registerModule = function registerModule(path, rawModule, options2) {
16662  if (options2 === void 0) options2 = {};
16663  if (typeof path === "string") {
16664    path = [path];
16665  }
16666  this._modules.register(path, rawModule);
16667  installModule(this, this.state, path, this._modules.get(path), options2.preserveState);
16668  resetStoreState(this, this.state);
16669};
16670Store.prototype.unregisterModule = function unregisterModule(path) {
16671  var this$1$1 = this;
16672  if (typeof path === "string") {
16673    path = [path];
16674  }
16675  this._modules.unregister(path);
16676  this._withCommit(function() {
16677    var parentState = getNestedState(this$1$1.state, path.slice(0, -1));
16678    delete parentState[path[path.length - 1]];
16679  });
16680  resetStore(this);
16681};
16682Store.prototype.hasModule = function hasModule(path) {
16683  if (typeof path === "string") {
16684    path = [path];
16685  }
16686  return this._modules.isRegistered(path);
16687};
16688Store.prototype.hotUpdate = function hotUpdate(newOptions) {
16689  this._modules.update(newOptions);
16690  resetStore(this, true);
16691};
16692Store.prototype._withCommit = function _withCommit(fn) {
16693  var committing = this._committing;
16694  this._committing = true;
16695  fn();
16696  this._committing = committing;
16697};
16698Object.defineProperties(Store.prototype, prototypeAccessors);
16699var mapState = normalizeNamespace(function(namespace, states) {
16700  var res = {};
16701  normalizeMap(states).forEach(function(ref2) {
16702    var key = ref2.key;
16703    var val = ref2.val;
16704    res[key] = function mappedState() {
16705      var state2 = this.$store.state;
16706      var getters2 = this.$store.getters;
16707      if (namespace) {
16708        var module = getModuleByNamespace(this.$store, "mapState", namespace);
16709        if (!module) {
16710          return;
16711        }
16712        state2 = module.context.state;
16713        getters2 = module.context.getters;
16714      }
16715      return typeof val === "function" ? val.call(this, state2, getters2) : state2[val];
16716    };
16717    res[key].vuex = true;
16718  });
16719  return res;
16720});
16721var mapMutations = normalizeNamespace(function(namespace, mutations2) {
16722  var res = {};
16723  normalizeMap(mutations2).forEach(function(ref2) {
16724    var key = ref2.key;
16725    var val = ref2.val;
16726    res[key] = function mappedMutation() {
16727      var args = [], len = arguments.length;
16728      while (len--) args[len] = arguments[len];
16729      var commit2 = this.$store.commit;
16730      if (namespace) {
16731        var module = getModuleByNamespace(this.$store, "mapMutations", namespace);
16732        if (!module) {
16733          return;
16734        }
16735        commit2 = module.context.commit;
16736      }
16737      return typeof val === "function" ? val.apply(this, [commit2].concat(args)) : commit2.apply(this.$store, [val].concat(args));
16738    };
16739  });
16740  return res;
16741});
16742var mapGetters = normalizeNamespace(function(namespace, getters2) {
16743  var res = {};
16744  normalizeMap(getters2).forEach(function(ref2) {
16745    var key = ref2.key;
16746    var val = ref2.val;
16747    val = namespace + val;
16748    res[key] = function mappedGetter() {
16749      if (namespace && !getModuleByNamespace(this.$store, "mapGetters", namespace)) {
16750        return;
16751      }
16752      return this.$store.getters[val];
16753    };
16754    res[key].vuex = true;
16755  });
16756  return res;
16757});
16758var mapActions = normalizeNamespace(function(namespace, actions2) {
16759  var res = {};
16760  normalizeMap(actions2).forEach(function(ref2) {
16761    var key = ref2.key;
16762    var val = ref2.val;
16763    res[key] = function mappedAction() {
16764      var args = [], len = arguments.length;
16765      while (len--) args[len] = arguments[len];
16766      var dispatch2 = this.$store.dispatch;
16767      if (namespace) {
16768        var module = getModuleByNamespace(this.$store, "mapActions", namespace);
16769        if (!module) {
16770          return;
16771        }
16772        dispatch2 = module.context.dispatch;
16773      }
16774      return typeof val === "function" ? val.apply(this, [dispatch2].concat(args)) : dispatch2.apply(this.$store, [val].concat(args));
16775    };
16776  });
16777  return res;
16778});
16779var createNamespacedHelpers = function(namespace) {
16780  return {
16781    mapState: mapState.bind(null, namespace),
16782    mapGetters: mapGetters.bind(null, namespace),
16783    mapMutations: mapMutations.bind(null, namespace),
16784    mapActions: mapActions.bind(null, namespace)
16785  };
16786};
16787function normalizeMap(map) {
16788  if (!isValidMap(map)) {
16789    return [];
16790  }
16791  return Array.isArray(map) ? map.map(function(key) {
16792    return { key, val: key };
16793  }) : Object.keys(map).map(function(key) {
16794    return { key, val: map[key] };
16795  });
16796}
16797function isValidMap(map) {
16798  return Array.isArray(map) || isObject$8(map);
16799}
16800function normalizeNamespace(fn) {
16801  return function(namespace, map) {
16802    if (typeof namespace !== "string") {
16803      map = namespace;
16804      namespace = "";
16805    } else if (namespace.charAt(namespace.length - 1) !== "/") {
16806      namespace += "/";
16807    }
16808    return fn(namespace, map);
16809  };
16810}
16811function getModuleByNamespace(store2, helper, namespace) {
16812  var module = store2._modulesNamespaceMap[namespace];
16813  return module;
16814}
16815function createLogger(ref2) {
16816  if (ref2 === void 0) ref2 = {};
16817  var collapsed = ref2.collapsed;
16818  if (collapsed === void 0) collapsed = true;
16819  var filter2 = ref2.filter;
16820  if (filter2 === void 0) filter2 = function(mutation, stateBefore, stateAfter) {
16821    return true;
16822  };
16823  var transformer = ref2.transformer;
16824  if (transformer === void 0) transformer = function(state2) {
16825    return state2;
16826  };
16827  var mutationTransformer = ref2.mutationTransformer;
16828  if (mutationTransformer === void 0) mutationTransformer = function(mut) {
16829    return mut;
16830  };
16831  var actionFilter = ref2.actionFilter;
16832  if (actionFilter === void 0) actionFilter = function(action, state2) {
16833    return true;
16834  };
16835  var actionTransformer = ref2.actionTransformer;
16836  if (actionTransformer === void 0) actionTransformer = function(act) {
16837    return act;
16838  };
16839  var logMutations = ref2.logMutations;
16840  if (logMutations === void 0) logMutations = true;
16841  var logActions = ref2.logActions;
16842  if (logActions === void 0) logActions = true;
16843  var logger = ref2.logger;
16844  if (logger === void 0) logger = console;
16845  return function(store2) {
16846    var prevState = deepCopy$1(store2.state);
16847    if (typeof logger === "undefined") {
16848      return;
16849    }
16850    if (logMutations) {
16851      store2.subscribe(function(mutation, state2) {
16852        var nextState = deepCopy$1(state2);
16853        if (filter2(mutation, prevState, nextState)) {
16854          var formattedTime = getFormattedTime();
16855          var formattedMutation = mutationTransformer(mutation);
16856          var message = "mutation " + mutation.type + formattedTime;
16857          startMessage(logger, message, collapsed);
16858          logger.log("%c prev state", "color: #9E9E9E; font-weight: bold", transformer(prevState));
16859          logger.log("%c mutation", "color: #03A9F4; font-weight: bold", formattedMutation);
16860          logger.log("%c next state", "color: #4CAF50; font-weight: bold", transformer(nextState));
16861          endMessage(logger);
16862        }
16863        prevState = nextState;
16864      });
16865    }
16866    if (logActions) {
16867      store2.subscribeAction(function(action, state2) {
16868        if (actionFilter(action, state2)) {
16869          var formattedTime = getFormattedTime();
16870          var formattedAction = actionTransformer(action);
16871          var message = "action " + action.type + formattedTime;
16872          startMessage(logger, message, collapsed);
16873          logger.log("%c action", "color: #03A9F4; font-weight: bold", formattedAction);
16874          endMessage(logger);
16875        }
16876      });
16877    }
16878  };
16879}
16880function startMessage(logger, message, collapsed) {
16881  var startMessage2 = collapsed ? logger.groupCollapsed : logger.group;
16882  try {
16883    startMessage2.call(logger, message);
16884  } catch (e) {
16885    logger.log(message);
16886  }
16887}
16888function endMessage(logger) {
16889  try {
16890    logger.groupEnd();
16891  } catch (e) {
16892    logger.log("—— log end ——");
16893  }
16894}
16895function getFormattedTime() {
16896  var time = /* @__PURE__ */ new Date();
16897  return " @ " + pad(time.getHours(), 2) + ":" + pad(time.getMinutes(), 2) + ":" + pad(time.getSeconds(), 2) + "." + pad(time.getMilliseconds(), 3);
16898}
16899function repeat(str, times) {
16900  return new Array(times + 1).join(str);
16901}
16902function pad(num, maxLength) {
16903  return repeat("0", maxLength - num.toString().length) + num;
16904}
16905var index = {
16906  version: "4.1.0",
16907  Store,
16908  storeKey,
16909  createStore,
16910  useStore,
16911  mapState,
16912  mapMutations,
16913  mapGetters,
16914  mapActions,
16915  createNamespacedHelpers,
16916  createLogger
16917};
16918function empty(data) {
16919  if (typeof data === "number" || typeof data === "boolean") {
16920    return false;
16921  }
16922  if (typeof data === "undefined" || data === null) {
16923    return true;
16924  }
16925  if (typeof data.length !== "undefined") {
16926    return data.length === 0;
16927  }
16928  let count = 0;
16929  const keys = Object.keys(data);
16930  keys.forEach((key) => {
16931    if (Object.hasOwnProperty.call(data, key)) {
16932      count += 1;
16933    }
16934  });
16935  return count === 0;
16936}
16937const ENVIRONMENT_TYPES = {
16938  NAME: "environment",
16939  state: {
16940    ENVIRONMENT_BASE_URL: "baseUrl",
16941    ENVIRONMENT_ASSETS_PATH: "assetsPath",
16942    ENVIRONMENT_LANGUAGE: "language",
16943    ENVIRONMENT_SITE_NAME: "siteName",
16944    ENVIRONMENT_MOBILE_BP: "mobileBp",
16945    ENVIRONMENT_TABLET_BP: "tabletBp",
16946    ENVIRONMENT_DESKTOP_BP: "desktopBp",
16947    ENVIRONMENT_LARGE_DESKTOP_BP: "largeDesktopBp",
16948    ENVIRONMENT_WINDOW_WIDTH: "windowWidth",
16949    ENVIRONMENT_LOADING: "loading",
16950    ENVIRONMENT_LINK_LIST: "linkList",
16951    ENVIRONMENT_LINK_IDS: "linkIds",
16952    ENVIRONMENT_SIDEBAR_PORTAL: "sidebarPortal",
16953    ENVIRONMENT_BREADCRUMB_EXTENSION: "breadcrumbExtension",
16954    ENVIRONMENT_ACTIVE_LINK_TEASER: "activeLinkTeaser"
16955  },
16956  mutations: {
16957    SET_ENVIRONMENT_BASE_URL: "setBaseUrl",
16958    SET_ENVIRONMENT_ASSETS_PATH: "setAssetsPath",
16959    SET_ENVIRONMENT_LANGUAGE: "setLanguage",
16960    SET_ENVIRONMENT_SITE_NAME: "setSiteName",
16961    SET_ENVIRONMENT_WINDOW_WIDTH: "setWindowWidth",
16962    SET_ENVIRONMENT_LOADING: "setLoading",
16963    SET_ENVIRONMENT_LINK: "setLink",
16964    SET_ENVIRONMENT_SIDEBAR_PORTAL: "setSidebarPortal",
16965    SET_ENVIRONMENT_BREADCRUMB_EXTENSION: "setBreadcrumbExtension",
16966    SET_ENVIRONMENT_ACTIVE_LINK_TEASER: "setActiveLinkTeaser"
16967  },
16968  getters: {
16969    GET_ENVIRONMENT_IS_MOBILE: "isMobile",
16970    GET_ENVIRONMENT_IS_TABLET: "isTablet",
16971    GET_ENVIRONMENT_IS_DESKTOP: "isDesktop",
16972    GET_ENVIRONMENT_IS_LARGE_DESKTOP: "isLargeDesktop",
16973    GET_ENVIRONMENT_IS_XLARGE_DESKTOP: "isXLargeDesktop",
16974    GET_ENVIRONMENT_ASSETS_URL: "getAssetsUrl"
16975  },
16976  actions: {
16977    ACTION_ENVIRONMENT_SWITCH_LANGUAGE: "switchLanguage",
16978    ACTION_ENVIRONMENT_START_RESIZE_LISTENER: "startResizeListener"
16979  }
16980};
16981const CONSENT_TYPES = {
16982  NAME: "consent",
16983  state: {
16984    CONSENT_DONE: "consentDone",
16985    CONSENT_VIMEO: "consentVimeo",
16986    CONSENT_YOUTUBE: "consentGoogleMaps",
16987    CONSENT_GOOGLEMAPS: "consentYouTube",
16988    CONSENT_MATOMO: "consentMatomo",
16989    CONSENT_RECAPTCHA: "consentRecaptcha"
16990  },
16991  mutations: {
16992    CONSENT_SET_DONE: "consentSetDone",
16993    CONSENT_SET_VIMEO: "consentSetVimeo",
16994    CONSENT_SET_YOUTUBE: "consentSetYouTube",
16995    CONSENT_SET_GOOGLEMAPS: "consentSetGoogleMaps",
16996    CONSENT_SET_MATOMO: "consentSetMatomo",
16997    CONSENT_SET_RECAPTCHA: "consentSetRecaptcha"
16998  }
16999};
17000const _export_sfc = (sfc, props2) => {
17001  const target = sfc.__vccOpts || sfc;
17002  for (const [key, val] of props2) {
17003    target[key] = val;
17004  }
17005  return target;
17006};
17007const _sfc_main$1F = {
17008  name: "ConsentEntry",
17009  // components: {},
17010  props: {
17011    modelValue: {
17012      type: Boolean
17013    },
17014    title: {
17015      type: String,
17016      default: ""
17017    },
17018    description: {
17019      type: String,
17020      default: ""
17021    }
17022  },
17023  emits: ["update:modelValue"],
17024  data() {
17025    return {
17026      checked: false
17027    };
17028  },
17029  // computed: {},
17030  // methods: {},
17031  watch: {
17032    checked() {
17033      this.$emit("update:modelValue", this.checked);
17034    },
17035    modelValue() {
17036      if (this.modelValue !== this.checked) {
17037        this.checked = this.modelValue;
17038      }
17039    }
17040  },
17041  // Livecycle hooks
17042  // created() {},
17043  mounted() {
17044    this.checked = this.modelValue;
17045  }
17046  // updated() {},
17047  // beforeDestroy() {},
17048};
17049const _hoisted_1$1w = { class: "consent-entry" };
17050const _hoisted_2$18 = { class: "input-label" };
17051function _sfc_render$1D(_ctx, _cache, $props, $setup, $data, $options) {
17052  return openBlock(), createElementBlock("label", _hoisted_1$1w, [
17053    createBaseVNode("div", _hoisted_2$18, [
17054      createTextVNode(toDisplayString$1($props.title) + " ", 1),
17055      createBaseVNode("p", null, toDisplayString$1($props.description), 1)
17056    ]),
17057    withDirectives(createBaseVNode("input", {
17058      "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.checked = $event),
17059      type: "checkbox",
17060      role: "switch"
17061    }, null, 512), [
17062      [vModelCheckbox, $data.checked]
17063    ]),
17064    _cache[1] || (_cache[1] = createBaseVNode("span", { class: "state" }, [
17065      createBaseVNode("span", { class: "container" }, [
17066        createBaseVNode("span", { class: "position" })
17067      ])
17068    ], -1))
17069  ]);
17070}
17071const ConsentEntry = /* @__PURE__ */ _export_sfc(_sfc_main$1F, [["render", _sfc_render$1D]]);
17072const _sfc_main$1E = {
17073  name: "CookieConsent",
17074  components: {
17075    ConsentEntry
17076  },
17077  // props: {},
17078  data() {
17079    return {
17080      isOpenCookieConfig: false,
17081      vimeoChecked: false,
17082      youTubeChecked: false,
17083      googleMapsChecked: false,
17084      matomoChecked: false,
17085      recaptchaChecked: false,
17086      dataPrivacyUrl: ""
17087    };
17088  },
17089  computed: {
17090    ...mapState(CONSENT_TYPES.NAME, {
17091      consentDone: CONSENT_TYPES.state.CONSENT_DONE,
17092      consentVimeo: CONSENT_TYPES.state.CONSENT_VIMEO,
17093      consentYouTube: CONSENT_TYPES.state.CONSENT_YOUTUBE,
17094      consentGoogleMaps: CONSENT_TYPES.state.CONSENT_GOOGLEMAPS,
17095      consentMatomo: CONSENT_TYPES.state.CONSENT_MATOMO,
17096      consentRecaptcha: CONSENT_TYPES.state.CONSENT_RECAPTCHA
17097    }),
17098    ...mapState(ENVIRONMENT_TYPES.NAME, {
17099      baseUrl: ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL,
17100      language: ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE,
17101      siteName: ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME
17102    }),
17103    done: {
17104      get() {
17105        return this.consentDone;
17106      },
17107      set(value) {
17108        this.consentSetDone({
17109          [CONSENT_TYPES.state.CONSENT_DONE]: value
17110        });
17111      }
17112    },
17113    vimeo: {
17114      get() {
17115        return this.consentVimeo;
17116      },
17117      set(value) {
17118        this.consentSetVimeo({
17119          [CONSENT_TYPES.state.CONSENT_VIMEO]: value
17120        });
17121      }
17122    },
17123    youTube: {
17124      get() {
17125        return this.consentYouTube;
17126      },
17127      set(value) {
17128        this.consentSetYouTube({
17129          [CONSENT_TYPES.state.CONSENT_YOUTUBE]: value
17130        });
17131      }
17132    },
17133    googleMaps: {
17134      get() {
17135        return this.consentGoogleMaps;
17136      },
17137      set(value) {
17138        this.consentSetGoogleMaps({
17139          [CONSENT_TYPES.state.CONSENT_GOOGLEMAPS]: value
17140        });
17141      }
17142    },
17143    matomo: {
17144      get() {
17145        return this.consentMatomo;
17146      },
17147      set(value) {
17148        this.consentSetMatomo({
17149          [CONSENT_TYPES.state.CONSENT_MATOMO]: value
17150        });
17151      }
17152    },
17153    recaptcha: {
17154      get() {
17155        return this.consentRecaptcha;
17156      },
17157      set(value) {
17158        this.consentSetRecaptcha({
17159          [CONSENT_TYPES.state.CONSENT_RECAPTCHA]: value
17160        });
17161      }
17162    }
17163  },
17164  // watch: {},
17165  // Livecycle hooks
17166  // created() {},
17167  mounted() {
17168    this.vimeoChecked = this.vimeo;
17169    this.youTubeChecked = this.youTube;
17170    this.googleMapsChecked = this.googleMaps;
17171    this.matomoChecked = this.matomo;
17172    this.recaptchaChecked = this.recaptcha;
17173    this.$refs.cookieConsent.focus();
17174    this.dataPrivacyUrl = "de" === this.language ? "https://www.stiftung-gedenkstaetten.de/datenschutz" : "https://www.stiftung-gedenkstaetten.de/en/datenschutz";
17175  },
17176  // updated() {},
17177  // beforeUnmount() {},
17178  methods: {
17179    ...mapMutations(CONSENT_TYPES.NAME, {
17180      consentSetDone: CONSENT_TYPES.mutations.CONSENT_SET_DONE,
17181      consentSetVimeo: CONSENT_TYPES.mutations.CONSENT_SET_VIMEO,
17182      consentSetYouTube: CONSENT_TYPES.mutations.CONSENT_SET_YOUTUBE,
17183      consentSetGoogleMaps: CONSENT_TYPES.mutations.CONSENT_SET_GOOGLEMAPS,
17184      consentSetMatomo: CONSENT_TYPES.mutations.CONSENT_SET_MATOMO,
17185      consentSetRecaptcha: CONSENT_TYPES.mutations.CONSENT_SET_RECAPTCHA
17186    }),
17187    confirmSelection() {
17188      this.vimeo = this.vimeoChecked;
17189      this.youTube = this.youTubeChecked;
17190      this.googleMaps = this.googleMapsChecked;
17191      this.matomo = this.matomoChecked;
17192      this.recaptcha = this.recaptchaChecked;
17193      this.confirm();
17194    },
17195    confirmAll() {
17196      this.vimeo = true;
17197      this.youTube = true;
17198      this.googleMaps = true;
17199      this.matomo = true;
17200      this.recaptcha = true;
17201      this.confirm();
17202    },
17203    confirm() {
17204      this.done = true;
17205      window.location.reload();
17206    },
17207    toggleCookieConfig() {
17208      this.isOpenCookieConfig = !this.isOpenCookieConfig;
17209      this.$nextTick(() => {
17210        if (this.isOpenCookieConfig) {
17211          this.$refs.closeCookieConfig.focus();
17212        }
17213      });
17214    },
17215    handleEsc() {
17216      if (this.isOpenCookieConfig) {
17217        this.toggleCookieConfig();
17218      }
17219    },
17220    handleFirstItem(event) {
17221      event.preventDefault();
17222      this.$refs.confirmAllButton.focus();
17223    },
17224    handleLastItem(event) {
17225      event.preventDefault();
17226      this.$refs.closeCookieConfig.focus();
17227    }
17228  }
17229};
17230const _hoisted_1$1v = {
17231  ref: "cookieConsent",
17232  class: "cookie-consent"
17233};
17234const _hoisted_2$17 = { class: "cookie-consent-wrapper" };
17235const _hoisted_3$W = { class: "buttons-wrapper" };
17236const _hoisted_4$H = ["aria-expanded"];
17237const _hoisted_5$u = {
17238  class: "article-wrapper",
17239  role: "dialog"
17240};
17241const _hoisted_6$o = { class: "visually-hidden" };
17242const _hoisted_7$m = { class: "article-content" };
17243const _hoisted_8$g = { class: "article-content-wrapper" };
17244const _hoisted_9$d = { class: "content-block row" };
17245const _hoisted_10$8 = { class: "columns" };
17246const _hoisted_11$7 = { class: "content-block row" };
17247const _hoisted_12$8 = { class: "columns" };
17248const _hoisted_13$8 = { class: "fieldset-info" };
17249const _hoisted_14$8 = { class: "input-label" };
17250const _hoisted_15$7 = { class: "fieldset-info" };
17251const _hoisted_16$6 = { class: "fieldset-info" };
17252const _hoisted_17$5 = ["href"];
17253const _hoisted_18$5 = { class: "content-block row" };
17254const _hoisted_19$4 = { class: "columns" };
17255function _sfc_render$1C(_ctx, _cache, $props, $setup, $data, $options) {
17256  const _component_consent_entry = resolveComponent("consent-entry");
17257  return openBlock(), createElementBlock(Fragment, null, [
17258    createBaseVNode("div", _hoisted_1$1v, [
17259      createBaseVNode("div", _hoisted_2$17, [
17260        createBaseVNode("p", null, [
17261          createTextVNode(toDisplayString$1(_ctx.$t("cookieConsent.info")), 1),
17262          _cache[14] || (_cache[14] = createBaseVNode("br", null, null, -1)),
17263          createTextVNode(" " + toDisplayString$1(_ctx.$t("cookieConsent.implicit")), 1)
17264        ]),
17265        createBaseVNode("div", _hoisted_3$W, [
17266          createBaseVNode("button", {
17267            class: normalizeClass(["link-button --outlined", {
17268              "active": $data.isOpenCookieConfig
17269            }]),
17270            "aria-expanded": $data.isOpenCookieConfig,
17271            "aria-controls": "cookie_config",
17272            onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleCookieConfig && $options.toggleCookieConfig(...args))
17273          }, toDisplayString$1(_ctx.$t("cookieConsent.configure.label")), 11, _hoisted_4$H),
17274          createBaseVNode("button", {
17275            id: "accept_button",
17276            class: "link-button --outlined accept-button",
17277            type: "button",
17278            onClick: _cache[1] || (_cache[1] = ($event) => $options.confirm())
17279          }, toDisplayString$1(_ctx.$t("cookieConsent.partlyAccept.label")), 1),
17280          createBaseVNode("button", {
17281            id: "accept_button",
17282            class: "link-button --outlined accept-button",
17283            type: "button",
17284            onClick: _cache[2] || (_cache[2] = ($event) => $options.confirmAll())
17285          }, toDisplayString$1(_ctx.$t("cookieConsent.accept.label")), 1)
17286        ])
17287      ])
17288    ], 512),
17289    $data.isOpenCookieConfig ? (openBlock(), createElementBlock("div", {
17290      key: 0,
17291      id: "cookie_config",
17292      class: "cookie-config",
17293      onKeyup: _cache[13] || (_cache[13] = withKeys((...args) => $options.handleEsc && $options.handleEsc(...args), ["esc"]))
17294    }, [
17295      createBaseVNode("article", _hoisted_5$u, [
17296        createBaseVNode("header", null, [
17297          createBaseVNode("h2", null, toDisplayString$1(_ctx.$t("cookieConsent.config.headline")), 1),
17298          createBaseVNode("button", {
17299            ref: "closeCookieConfig",
17300            class: "link-button --outlined icon-close-menu-mobile cookie-config-close",
17301            onClick: _cache[3] || (_cache[3] = (...args) => $options.toggleCookieConfig && $options.toggleCookieConfig(...args)),
17302            onKeydown: _cache[4] || (_cache[4] = withKeys(withModifiers(($event) => $options.handleFirstItem($event), ["shift"]), ["tab"]))
17303          }, [
17304            createBaseVNode("span", _hoisted_6$o, toDisplayString$1(_ctx.$t("overlay.close.label")), 1)
17305          ], 544)
17306        ]),
17307        createBaseVNode("div", _hoisted_7$m, [
17308          createBaseVNode("div", _hoisted_8$g, [
17309            createBaseVNode("div", _hoisted_9$d, [
17310              createBaseVNode("div", _hoisted_10$8, [
17311                createBaseVNode("p", null, toDisplayString$1(_ctx.$t("cookieConsent.config.intro")), 1)
17312              ])
17313            ]),
17314            _cache[17] || (_cache[17] = createBaseVNode("hr", { class: "divider" }, null, -1)),
17315            createBaseVNode("div", _hoisted_11$7, [
17316              createBaseVNode("div", _hoisted_12$8, [
17317                createBaseVNode("fieldset", null, [
17318                  createBaseVNode("legend", null, [
17319                    createTextVNode(toDisplayString$1(_ctx.$t("cookieConsent.config.presentation")) + " ", 1),
17320                    createBaseVNode("span", null, toDisplayString$1(_ctx.$t("cookieConsent.config.mandatory")), 1)
17321                  ]),
17322                  createBaseVNode("p", _hoisted_13$8, toDisplayString$1(_ctx.$t("cookieConsent.config.presentationInfo")), 1),
17323                  createBaseVNode("label", null, [
17324                    createBaseVNode("div", _hoisted_14$8, [
17325                      createTextVNode(toDisplayString$1(_ctx.$t("cookieConsent.config.adobeWebfonts")) + " ", 1),
17326                      createBaseVNode("span", null, toDisplayString$1(_ctx.$t("cookieConsent.config.mandatory")), 1),
17327                      createBaseVNode("p", null, toDisplayString$1(_ctx.$t("cookieConsent.config.adobeWebfontsInfo")), 1)
17328                    ]),
17329                    _cache[15] || (_cache[15] = createBaseVNode("input", {
17330                      id: "adobe_webfonts",
17331                      type: "checkbox",
17332                      role: "switch",
17333                      disabled: "",
17334                      checked: ""
17335                    }, null, -1)),
17336                    _cache[16] || (_cache[16] = createBaseVNode("span", { class: "state" }, [
17337                      createBaseVNode("span", { class: "container" }, [
17338                        createBaseVNode("span", { class: "position" })
17339                      ])
17340                    ], -1))
17341                  ])
17342                ]),
17343                createBaseVNode("fieldset", null, [
17344                  createBaseVNode("legend", null, toDisplayString$1(_ctx.$t("cookieConsent.config.externalMedia")), 1),
17345                  createBaseVNode("p", _hoisted_15$7, toDisplayString$1(_ctx.$t("cookieConsent.config.externalMediaInfo")), 1),
17346                  createVNode(_component_consent_entry, {
17347                    modelValue: $data.vimeoChecked,
17348                    "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => $data.vimeoChecked = $event),
17349                    title: _ctx.$t("cookieConsent.config.vimeo"),
17350                    description: _ctx.$t("cookieConsent.config.vimeoInfo")
17351                  }, null, 8, ["modelValue", "title", "description"]),
17352                  createVNode(_component_consent_entry, {
17353                    modelValue: $data.youTubeChecked,
17354                    "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => $data.youTubeChecked = $event),
17355                    title: _ctx.$t("cookieConsent.config.youTube"),
17356                    description: _ctx.$t("cookieConsent.config.youTubeInfo")
17357                  }, null, 8, ["modelValue", "title", "description"]),
17358                  createVNode(_component_consent_entry, {
17359                    modelValue: $data.googleMapsChecked,
17360                    "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => $data.googleMapsChecked = $event),
17361                    title: _ctx.$t("cookieConsent.config.googleMaps"),
17362                    description: _ctx.$t("cookieConsent.config.googleMapsInfo")
17363                  }, null, 8, ["modelValue", "title", "description"]),
17364                  createVNode(_component_consent_entry, {
17365                    modelValue: $data.recaptchaChecked,
17366                    "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => $data.recaptchaChecked = $event),
17367                    title: _ctx.$t("cookieConsent.config.recaptcha"),
17368                    description: _ctx.$t("cookieConsent.config.recaptchaInfo")
17369                  }, null, 8, ["modelValue", "title", "description"])
17370                ]),
17371                createBaseVNode("fieldset", null, [
17372                  createBaseVNode("legend", null, toDisplayString$1(_ctx.$t("cookieConsent.config.webStatistics")), 1),
17373                  createBaseVNode("p", _hoisted_16$6, toDisplayString$1(_ctx.$t("cookieConsent.config.webStatisticsInfo")), 1),
17374                  createVNode(_component_consent_entry, {
17375                    modelValue: $data.matomoChecked,
17376                    "onUpdate:modelValue": _cache[9] || (_cache[9] = ($event) => $data.matomoChecked = $event),
17377                    title: _ctx.$t("cookieConsent.config.matomo"),
17378                    description: _ctx.$t("cookieConsent.config.matomoInfo")
17379                  }, null, 8, ["modelValue", "title", "description"])
17380                ]),
17381                createBaseVNode("fieldset", null, [
17382                  createBaseVNode("p", null, [
17383                    createBaseVNode("a", { href: $data.dataPrivacyUrl }, toDisplayString$1(_ctx.$t("cookieConsent.config.dataPrivacy")), 9, _hoisted_17$5)
17384                  ])
17385                ])
17386              ])
17387            ]),
17388            _cache[18] || (_cache[18] = createBaseVNode("hr", { class: "divider" }, null, -1)),
17389            createBaseVNode("div", _hoisted_18$5, [
17390              createBaseVNode("div", _hoisted_19$4, [
17391                createBaseVNode("button", {
17392                  id: "confirm_selection_button",
17393                  class: "link-button --outlined",
17394                  type: "button",
17395                  onClick: _cache[10] || (_cache[10] = ($event) => $options.confirmSelection())
17396                }, toDisplayString$1(_ctx.$t("cookieConsent.config.confirmSelection.label")), 1
17396),
17397                createBaseVNode("button", {
17398                  id: "confirm_all_button",
17399                  ref: "confirmAllButton",
17400                  class: "link-button --outlined confirm-all-button",
17401                  type: "button",
17402                  onClick: _cache[11] || (_cache[11] = ($event) => $options.confirmAll()),
17403                  onKeydown: _cache[12] || (_cache[12] = withKeys(withModifiers(($event) => $options.handleLastItem($event), ["exact"]), ["tab"]))
17404                }, toDisplayString$1(_ctx.$t("cookieConsent.config.confirmAll.label")), 545)
17405              ])
17406            ])
17407          ])
17408        ])
17409      ])
17410    ], 32)) : createCommentVNode("", true)
17411  ], 64);
17412}
17413const CookieConsent = /* @__PURE__ */ _export_sfc(_sfc_main$1E, [["render", _sfc_render$1C]]);
17414/*!
17415  * shared v11.1.5
17416  * (c) 2025 kazuya kawaguchi
17417  * Released under the MIT License.
17418  */
17419const generateFormatCacheKey = (locale, key, source) => friendlyJSONstringify({ l: locale, k: key, s: source });
17420const friendlyJSONstringify = (json) => JSON.stringify(json).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029").replace(/\u0027/g, "\\u0027");
17421const isNumber$2 = (val) => typeof val === "number" && isFinite(val);
17422const isDate$1 = (val) => toTypeString$1(val) === "[object Date]";
17423const isRegExp$2 = (val) => toTypeString$1(val) === "[object RegExp]";
17424const isEmptyObject$1 = (val) => isPlainObject$2(val) && Object.keys(val).length === 0;
17425const assign$1 = Object.assign;
17426const _create$1 = Object.create;
17427const create$1 = (obj = null) => _create$1(obj);
17428let _globalThis$1;
17429const getGlobalThis$1 = () => {
17430  return _globalThis$1 || (_globalThis$1 = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : create$1());
17431};
17432function escapeHtml(rawText) {
17433  return rawText.replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&apos;");
17434}
17435const hasOwnProperty$2 = Object.prototype.hasOwnProperty;
17436function hasOwn$1(obj, key) {
17437  return hasOwnProperty$2.call(obj, key);
17438}
17439const isArray$2 = Array.isArray;
17440const isFunction$2 = (val) => typeof val === "function";
17441const isString$2 = (val) => typeof val === "string";
17442const isBoolean$2 = (val) => typeof val === "boolean";
17443const isObject$7 = (val) => val !== null && typeof val === "object";
17444const isPromise = (val) => {
17445  return isObject$7(val) && isFunction$2(val.then) && isFunction$2(val.catch);
17446};
17447const objectToString$3 = Object.prototype.toString;
17448const toTypeString$1 = (value) => objectToString$3.call(value);
17449const isPlainObject$2 = (val) => toTypeString$1(val) === "[object Object]";
17450const toDisplayString = (val) => {
17451  return val == null ? "" : isArray$2(val) || isPlainObject$2(val) && val.toString === objectToString$3 ? JSON.stringify(val, null, 2) : String(val);
17452};
17453function join(items, separator = "") {
17454  return items.reduce((str, item, index2) => index2 === 0 ? str + item : str + separator + item, "");
17455}
17456function warn(msg, err) {
17457  if (typeof console !== "undefined") {
17458    console.warn(`[intlify] ` + msg);
17459    if (err) {
17460      console.warn(err.stack);
17461    }
17462  }
17463}
17464/*!
17465  * message-compiler v11.1.5
17466  * (c) 2025 kazuya kawaguchi
17467  * Released under the MIT License.
17468  */
17469function createPosition(line, column, offset) {
17470  return { line, column, offset };
17471}
17472function createLocation(start, end, source) {
17473  const loc = { start, end };
17474  return loc;
17475}
17476const CompileErrorCodes = {
17477  // tokenizer error codes
17478  EXPECTED_TOKEN: 1,
17479  INVALID_TOKEN_IN_PLACEHOLDER: 2,
17480  UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER: 3,
17481  UNKNOWN_ESCAPE_SEQUENCE: 4,
17482  INVALID_UNICODE_ESCAPE_SEQUENCE: 5,
17483  UNBALANCED_CLOSING_BRACE: 6,
17484  UNTERMINATED_CLOSING_BRACE: 7,
17485  EMPTY_PLACEHOLDER: 8,
17486  NOT_ALLOW_NEST_PLACEHOLDER: 9,
17487  INVALID_LINKED_FORMAT: 10,
17488  // parser error codes
17489  MUST_HAVE_MESSAGES_IN_PLURAL: 11,
17490  UNEXPECTED_EMPTY_LINKED_MODIFIER: 12,
17491  UNEXPECTED_EMPTY_LINKED_KEY: 13,
17492  UNEXPECTED_LEXICAL_ANALYSIS: 14
17493};
17494const COMPILE_ERROR_CODES_EXTEND_POINT = 17;
17495function createCompileError(code, loc, options2 = {}) {
17496  const { domain, messages, args } = options2;
17497  const msg = code;
17498  const error = new SyntaxError(String(msg));
17499  error.code = code;
17500  if (loc) {
17501    error.location = loc;
17502  }
17503  error.domain = domain;
17504  return error;
17505}
17506function defaultOnError(error) {
17507  throw error;
17508}
17509const CHAR_SP = " ";
17510const CHAR_CR = "\r";
17511const CHAR_LF = "\n";
17512const CHAR_LS = String.fromCharCode(8232);
17513const CHAR_PS = String.fromCharCode(8233);
17514function createScanner(str) {
17515  const _buf = str;
17516  let _index = 0;
17517  let _line = 1;
17518  let _column = 1;
17519  let _peekOffset = 0;
17520  const isCRLF = (index22) => _buf[index22] === CHAR_CR && _buf[index22 + 1] === CHAR_LF;
17521  const isLF = (index22) => _buf[index22] === CHAR_LF;
17522  const isPS = (index22) => _buf[index22] === CHAR_PS;
17523  const isLS = (index22) => _buf[index22] === CHAR_LS;
17524  const isLineEnd = (index22) => isCRLF(index22) || isLF(index22) || isPS(index22) || isLS(index22);
17525  const index2 = () => _index;
17526  const line = () => _line;
17527  const column = () => _column;
17528  const peekOffset = () => _peekOffset;
vendor: 4,243 bytes, lines 17529-17701
17529  const charAt = (offset) => isCRLF(offset) || isPS(offset) || isLS(offset) ? CHAR_LF : _buf[offset];
17530  const currentChar = () => charAt(_index);
17531  const currentPeek = () => charAt(_index + _peekOffset);
17532  function next() {
17533    _peekOffset = 0;
17534    if (isLineEnd(_index)) {
17535      _line++;
17536      _column = 0;
17537    }
17538    if (isCRLF(_index)) {
17539      _index++;
17540    }
17541    _index++;
17542    _column++;
17543    return _buf[_index];
17544  }
17545  function peek() {
17546    if (isCRLF(_index + _peekOffset)) {
17547      _peekOffset++;
17548    }
17549    _peekOffset++;
17550    return _buf[_index + _peekOffset];
17551  }
17552  function reset2() {
17553    _index = 0;
17554    _line = 1;
17555    _column = 1;
17556    _peekOffset = 0;
17557  }
17558  function resetPeek(offset = 0) {
17559    _peekOffset = offset;
17560  }
17561  function skipToPeek() {
17562    const target = _index + _peekOffset;
17563    while (target !== _index) {
17564      next();
17565    }
17566    _peekOffset = 0;
17567  }
17568  return {
17569    index: index2,
17570    line,
17571    column,
17572    peekOffset,
17573    charAt,
17574    currentChar,
17575    currentPeek,
17576    next,
17577    peek,
17578    reset: reset2,
17579    resetPeek,
17580    skipToPeek
17581  };
17582}
17583const EOF = void 0;
17584const DOT = ".";
17585const LITERAL_DELIMITER = "'";
17586const ERROR_DOMAIN$3 = "tokenizer";
17587function createTokenizer(source, options2 = {}) {
17588  const location2 = options2.location !== false;
17589  const _scnr = createScanner(source);
17590  const currentOffset = () => _scnr.index();
17591  const currentPosition = () => createPosition(_scnr.line(), _scnr.column(), _scnr.index());
17592  const _initLoc = currentPosition();
17593  const _initOffset = currentOffset();
17594  const _context = {
17595    currentType: 13,
17596    offset: _initOffset,
17597    startLoc: _initLoc,
17598    endLoc: _initLoc,
17599    lastType: 13,
17600    lastOffset: _initOffset,
17601    lastStartLoc: _initLoc,
17602    lastEndLoc: _initLoc,
17603    braceNest: 0,
17604    inLinked: false,
17605    text: ""
17606  };
17607  const context = () => _context;
17608  const { onError } = options2;
17609  function emitError2(code, pos, offset, ...args) {
17610    const ctx = context();
17611    pos.column += offset;
17612    pos.offset += offset;
17613    if (onError) {
17614      const loc = location2 ? createLocation(ctx.startLoc, pos) : null;
17615      const err = createCompileError(code, loc, {
17616        domain: ERROR_DOMAIN$3,
17617        args
17618      });
17619      onError(err);
17620    }
17621  }
17622  function getToken(context2, type, value) {
17623    context2.endLoc = currentPosition();
17624    context2.currentType = type;
17625    const token = { type };
17626    if (location2) {
17627      token.loc = createLocation(context2.startLoc, context2.endLoc);
17628    }
17629    if (value != null) {
17630      token.value = value;
17631    }
17632    return token;
17633  }
17634  const getEndToken = (context2) => getToken(
17635    context2,
17636    13
17637    /* TokenTypes.EOF */
17638  );
17639  function eat(scnr, ch) {
17640    if (scnr.currentChar() === ch) {
17641      scnr.next();
17642      return ch;
17643    } else {
17644      emitError2(CompileErrorCodes.EXPECTED_TOKEN, currentPosition(), 0, ch);
17645      return "";
17646    }
17647  }
17648  function peekSpaces(scnr) {
17649    let buf = "";
17650    while (scnr.currentPeek() === CHAR_SP || scnr.currentPeek() === CHAR_LF) {
17651      buf += scnr.currentPeek();
17652      scnr.peek();
17653    }
17654    return buf;
17655  }
17656  function skipSpaces(scnr) {
17657    const buf = peekSpaces(scnr);
17658    scnr.skipToPeek();
17659    return buf;
17660  }
17661  function isIdentifierStart(ch) {
17662    if (ch === EOF) {
17663      return false;
17664    }
17665    const cc = ch.charCodeAt(0);
17666    return cc >= 97 && cc <= 122 || // a-z
17667    cc >= 65 && cc <= 90 || // A-Z
17668    cc === 95;
17669  }
17670  function isNumberStart(ch) {
17671    if (ch === EOF) {
17672      return false;
17673    }
17674    const cc = ch.charCodeAt(0);
17675    return cc >= 48 && cc <= 57;
17676  }
17677  function isNamedIdentifierStart(scnr, context2) {
17678    const { currentType } = context2;
17679    if (currentType !== 2) {
17680      return false;
17681    }
17682    peekSpaces(scnr);
17683    const ret = isIdentifierStart(scnr.currentPeek());
17684    scnr.resetPeek();
17685    return ret;
17686  }
17687  function isListIdentifierStart(scnr, context2) {
17688    const { currentType } = context2;
17689    if (currentType !== 2) {
17690      return false;
17691    }
17692    peekSpaces(scnr);
17693    const ch = scnr.currentPeek() === "-" ? scnr.peek() : scnr.currentPeek();
17694    const ret = isNumberStart(ch);
17695    scnr.resetPeek();
17696    return ret;
17697  }
17698  function isLiteralStart(scnr, context2) {
17699    const { currentType } = context2;
17700    if (currentType !== 2) {
17701      return false;
17702    }
17703    peekSpaces(scnr);
17704    const ret = scnr.currentPeek() === LITERAL_DELIMITER;
17705    scnr.resetPeek();
17706    return ret;
17707  }
17708  function isLinkedDotStart(scnr, context2) {
17709    const { currentType } = context2;
17710    if (currentType !== 7) {
17711      return false;
17712    }
17713    peekSpaces(scnr);
17714    const ret = scnr.currentPeek() === ".";
17715    scnr.resetPeek();
17716    return ret;
17717  }
17718  function isLinkedModifierStart(scnr, context2) {
17719    const { currentType } = context2;
17720    if (currentType !== 8) {
17721      return false;
17722    }
17723    peekSpaces(scnr);
17724    const ret = isIdentifierStart(scnr.currentPeek());
17725    scnr.resetPeek();
17726    return ret;
17727  }
17728  function isLinkedDelimiterStart(scnr, context2) {
17729    const { currentType } = context2;
17730    if (!(currentType === 7 || currentType === 11)) {
17731      return false;
17732    }
17733    peekSpaces(scnr);
17734    const ret = scnr.currentPeek() === ":";
17735    scnr.resetPeek();
17736    return ret;
17737  }
17738  function isLinkedReferStart(scnr, context2) {
17739    const { currentType } = context2;
17740    if (currentType !== 9) {
17741      return false;
17742    }
17743    const fn = () => {
17744      const ch = scnr.currentPeek();
17745      if (ch === "{") {
17746        return isIdentifierStart(scnr.peek());
17747      } else if (ch === "@" || ch === "|" || ch === ":" || ch === "." || ch === CHAR_SP || !ch) {
17748        return false;
17749      } else if (ch === CHAR_LF) {
17750        scnr.peek();
17751        return fn();
17752      } else {
17753        return isTextStart(scnr, false);
17754      }
17755    };
17756    const ret = fn();
17757    scnr.resetPeek();
17758    return ret;
17759  }
17760  function isPluralStart(scnr) {
17761    peekSpaces(scnr);
17762    const ret = scnr.currentPeek() === "|";
17763    scnr.resetPeek();
17764    return ret;
17765  }
17766  function isTextStart(scnr, reset2 = true) {
17767    const fn = (hasSpace = false, prev = "") => {
17768      const ch = scnr.currentPeek();
17769      if (ch === "{") {
17770        return hasSpace;
17771      } else if (ch === "@" || !ch) {
17772        return hasSpace;
17773      } else if (ch === "|") {
17774        return !(prev === CHAR_SP || prev === CHAR_LF);
17775      } else if (ch === CHAR_SP) {
17776        scnr.peek();
17777        return fn(true, CHAR_SP);
17778      } else if (ch === CHAR_LF) {
17779        scnr.peek();
17780        return fn(true, CHAR_LF);
17781      } else {
17782        return true;
17783      }
17784    };
17785    const ret = fn();
17786    reset2 && scnr.resetPeek();
17787    return ret;
17788  }
17789  function takeChar(scnr, fn) {
17790    const ch = scnr.currentChar();
17791    if (ch === EOF) {
17792      return EOF;
17793    }
17794    if (fn(ch)) {
17795      scnr.next();
17796      return ch;
17797    }
17798    return null;
17799  }
17800  function isIdentifier(ch) {
17801    const cc = ch.charCodeAt(0);
17802    return cc >= 97 && cc <= 122 || // a-z
17803    cc >= 65 && cc <= 90 || // A-Z
17804    cc >= 48 && cc <= 57 || // 0-9
17805    cc === 95 || // _
17806    cc === 36;
17807  }
17808  function takeIdentifierChar(scnr) {
17809    return takeChar(scnr, isIdentifier);
17810  }
17811  function isNamedIdentifier(ch) {
17812    const cc = ch.charCodeAt(0);
17813    return cc >= 97 && cc <= 122 || // a-z
17814    cc >= 65 && cc <= 90 || // A-Z
17815    cc >= 48 && cc <= 57 || // 0-9
17816    cc === 95 || // _
17817    cc === 36 || // $
17818    cc === 45;
17819  }
17820  function takeNamedIdentifierChar(scnr) {
17821    return takeChar(scnr, isNamedIdentifier);
17822  }
17823  function isDigit(ch) {
17824    const cc = ch.charCodeAt(0);
17825    return cc >= 48 && cc <= 57;
17826  }
17827  function takeDigit(scnr) {
17828    return takeChar(scnr, isDigit);
17829  }
17830  function isHexDigit(ch) {
17831    const cc = ch.charCodeAt(0);
17832    return cc >= 48 && cc <= 57 || // 0-9
17833    cc >= 65 && cc <= 70 || // A-F
17834    cc >= 97 && cc <= 102;
17835  }
17836  function takeHexDigit(scnr) {
17837    return takeChar(scnr, isHexDigit);
17838  }
17839  function getDigits(scnr) {
17840    let ch = "";
17841    let num = "";
17842    while (ch = takeDigit(scnr)) {
17843      num += ch;
17844    }
17845    return num;
17846  }
17847  function readText(scnr) {
17848    let buf = "";
17849    while (true) {
17850      const ch = scnr.currentChar();
17851      if (ch === "{" || ch === "}" || ch === "@" || ch === "|" || !ch) {
17852        break;
17853      } else if (ch === CHAR_SP || ch === CHAR_LF) {
17854        if (isTextStart(scnr)) {
17855          buf += ch;
17856          scnr.next();
17857        } else if (isPluralStart(scnr)) {
17858          break;
17859        } else {
17860          buf += ch;
17861          scnr.next();
17862        }
17863      } else {
17864        buf += ch;
17865        scnr.next();
17866      }
17867    }
17868    return buf;
17869  }
17870  function readNamedIdentifier(scnr) {
17871    skipSpaces(scnr);
vendor: 4,400 bytes, lines 17872-18033
17872    let ch = "";
17873    let name = "";
17874    while (ch = takeNamedIdentifierChar(scnr)) {
17875      name += ch;
17876    }
17877    if (scnr.currentChar() === EOF) {
17878      emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
17879    }
17880    return name;
17881  }
17882  function readListIdentifier(scnr) {
17883    skipSpaces(scnr);
17884    let value = "";
17885    if (scnr.currentChar() === "-") {
17886      scnr.next();
17887      value += `-${getDigits(scnr)}`;
17888    } else {
17889      value += getDigits(scnr);
17890    }
17891    if (scnr.currentChar() === EOF) {
17892      emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
17893    }
17894    return value;
17895  }
17896  function isLiteral2(ch) {
17897    return ch !== LITERAL_DELIMITER && ch !== CHAR_LF;
17898  }
17899  function readLiteral(scnr) {
17900    skipSpaces(scnr);
17901    eat(scnr, `'`);
17902    let ch = "";
17903    let literal = "";
17904    while (ch = takeChar(scnr, isLiteral2)) {
17905      if (ch === "\\") {
17906        literal += readEscapeSequence(scnr);
17907      } else {
17908        literal += ch;
17909      }
17910    }
17911    const current = scnr.currentChar();
17912    if (current === CHAR_LF || current === EOF) {
17913      emitError2(CompileErrorCodes.UNTERMINATED_SINGLE_QUOTE_IN_PLACEHOLDER, currentPosition(), 0);
17914      if (current === CHAR_LF) {
17915        scnr.next();
17916        eat(scnr, `'`);
17917      }
17918      return literal;
17919    }
17920    eat(scnr, `'`);
17921    return literal;
17922  }
17923  function readEscapeSequence(scnr) {
17924    const ch = scnr.currentChar();
17925    switch (ch) {
17926      case "\\":
17927      case `'`:
17928        scnr.next();
17929        return `\\${ch}`;
17930      case "u":
17931        return readUnicodeEscapeSequence(scnr, ch, 4);
17932      case "U":
17933        return readUnicodeEscapeSequence(scnr, ch, 6);
17934      default:
17935        emitError2(CompileErrorCodes.UNKNOWN_ESCAPE_SEQUENCE, currentPosition(), 0, ch);
17936        return "";
17937    }
17938  }
17939  function readUnicodeEscapeSequence(scnr, unicode, digits) {
17940    eat(scnr, unicode);
17941    let sequence = "";
17942    for (let i = 0; i < digits; i++) {
17943      const ch = takeHexDigit(scnr);
17944      if (!ch) {
17945        emitError2(CompileErrorCodes.INVALID_UNICODE_ESCAPE_SEQUENCE, currentPosition(), 0, `\\${unicode}${sequence}${scnr.currentChar()}`);
17946        break;
17947      }
17948      sequence += ch;
17949    }
17950    return `\\${unicode}${sequence}`;
17951  }
17952  function isInvalidIdentifier(ch) {
17953    return ch !== "{" && ch !== "}" && ch !== CHAR_SP && ch !== CHAR_LF;
17954  }
17955  function readInvalidIdentifier(scnr) {
17956    skipSpaces(scnr);
17957    let ch = "";
17958    let identifiers = "";
17959    while (ch = takeChar(scnr, isInvalidIdentifier)) {
17960      identifiers += ch;
17961    }
17962    return identifiers;
17963  }
17964  function readLinkedModifier(scnr) {
17965    let ch = "";
17966    let name = "";
17967    while (ch = takeIdentifierChar(scnr)) {
17968      name += ch;
17969    }
17970    return name;
17971  }
17972  function readLinkedRefer(scnr) {
17973    const fn = (buf) => {
17974      const ch = scnr.currentChar();
17975      if (ch === "{" || ch === "@" || ch === "|" || ch === "(" || ch === ")" || !ch) {
17976        return buf;
17977      } else if (ch === CHAR_SP) {
17978        return buf;
17979      } else if (ch === CHAR_LF || ch === DOT) {
17980        buf += ch;
17981        scnr.next();
17982        return fn(buf);
17983      } else {
17984        buf += ch;
17985        scnr.next();
17986        return fn(buf);
17987      }
17988    };
17989    return fn("");
17990  }
17991  function readPlural(scnr) {
17992    skipSpaces(scnr);
17993    const plural = eat(
17994      scnr,
17995      "|"
17996      /* TokenChars.Pipe */
17997    );
17998    skipSpaces(scnr);
17999    return plural;
18000  }
18001  function readTokenInPlaceholder(scnr, context2) {
18002    let token = null;
18003    const ch = scnr.currentChar();
18004    switch (ch) {
18005      case "{":
18006        if (context2.braceNest >= 1) {
18007          emitError2(CompileErrorCodes.NOT_ALLOW_NEST_PLACEHOLDER, currentPosition(), 0);
18008        }
18009        scnr.next();
18010        token = getToken(
18011          context2,
18012          2,
18013          "{"
18014          /* TokenChars.BraceLeft */
18015        );
18016        skipSpaces(scnr);
18017        context2.braceNest++;
18018        return token;
18019      case "}":
18020        if (context2.braceNest > 0 && context2.currentType === 2) {
18021          emitError2(CompileErrorCodes.EMPTY_PLACEHOLDER, currentPosition(), 0);
18022        }
18023        scnr.next();
18024        token = getToken(
18025          context2,
18026          3,
18027          "}"
18028          /* TokenChars.BraceRight */
18029        );
18030        context2.braceNest--;
18031        context2.braceNest > 0 && skipSpaces(scnr);
18032        if (context2.inLinked && context2.braceNest === 0) {
18033          context2.inLinked = false;
vendor: 21,221 bytes, lines 18034-18707
18034        }
18035        return token;
18036      case "@":
18037        if (context2.braceNest > 0) {
18038          emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
18039        }
18040        token = readTokenInLinked(scnr, context2) || getEndToken(context2);
18041        context2.braceNest = 0;
18042        return token;
18043      default: {
18044        let validNamedIdentifier = true;
18045        let validListIdentifier = true;
18046        let validLiteral = true;
18047        if (isPluralStart(scnr)) {
18048          if (context2.braceNest > 0) {
18049            emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
18050          }
18051          token = getToken(context2, 1, readPlural(scnr));
18052          context2.braceNest = 0;
18053          context2.inLinked = false;
18054          return token;
18055        }
18056        if (context2.braceNest > 0 && (context2.currentType === 4 || context2.currentType === 5 || context2.currentType === 6)) {
18057          emitError2(CompileErrorCodes.UNTERMINATED_CLOSING_BRACE, currentPosition(), 0);
18058          context2.braceNest = 0;
18059          return readToken(scnr, context2);
18060        }
18061        if (validNamedIdentifier = isNamedIdentifierStart(scnr, context2)) {
18062          token = getToken(context2, 4, readNamedIdentifier(scnr));
18063          skipSpaces(scnr);
18064          return token;
18065        }
18066        if (validListIdentifier = isListIdentifierStart(scnr, context2)) {
18067          token = getToken(context2, 5, readListIdentifier(scnr));
18068          skipSpaces(scnr);
18069          return token;
18070        }
18071        if (validLiteral = isLiteralStart(scnr, context2)) {
18072          token = getToken(context2, 6, readLiteral(scnr));
18073          skipSpaces(scnr);
18074          return token;
18075        }
18076        if (!validNamedIdentifier && !validListIdentifier && !validLiteral) {
18077          token = getToken(context2, 12, readInvalidIdentifier(scnr));
18078          emitError2(CompileErrorCodes.INVALID_TOKEN_IN_PLACEHOLDER, currentPosition(), 0, token.value);
18079          skipSpaces(scnr);
18080          return token;
18081        }
18082        break;
18083      }
18084    }
18085    return token;
18086  }
18087  function readTokenInLinked(scnr, context2) {
18088    const { currentType } = context2;
18089    let token = null;
18090    const ch = scnr.currentChar();
18091    if ((currentType === 7 || currentType === 8 || currentType === 11 || currentType === 9) && (ch === CHAR_LF || ch === CHAR_SP)) {
18092      emitError2(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
18093    }
18094    switch (ch) {
18095      case "@":
18096        scnr.next();
18097        token = getToken(
18098          context2,
18099          7,
18100          "@"
18101          /* TokenChars.LinkedAlias */
18102        );
18103        context2.inLinked = true;
18104        return token;
18105      case ".":
18106        skipSpaces(scnr);
18107        scnr.next();
18108        return getToken(
18109          context2,
18110          8,
18111          "."
18112          /* TokenChars.LinkedDot */
18113        );
18114      case ":":
18115        skipSpaces(scnr);
18116        scnr.next();
18117        return getToken(
18118          context2,
18119          9,
18120          ":"
18121          /* TokenChars.LinkedDelimiter */
18122        );
18123      default:
18124        if (isPluralStart(scnr)) {
18125          token = getToken(context2, 1, readPlural(scnr));
18126          context2.braceNest = 0;
18127          context2.inLinked = false;
18128          return token;
18129        }
18130        if (isLinkedDotStart(scnr, context2) || isLinkedDelimiterStart(scnr, context2)) {
18131          skipSpaces(scnr);
18132          return readTokenInLinked(scnr, context2);
18133        }
18134        if (isLinkedModifierStart(scnr, context2)) {
18135          skipSpaces(scnr);
18136          return getToken(context2, 11, readLinkedModifier(scnr));
18137        }
18138        if (isLinkedReferStart(scnr, context2)) {
18139          skipSpaces(scnr);
18140          if (ch === "{") {
18141            return readTokenInPlaceholder(scnr, context2) || token;
18142          } else {
18143            return getToken(context2, 10, readLinkedRefer(scnr));
18144          }
18145        }
18146        if (currentType === 7) {
18147          emitError2(CompileErrorCodes.INVALID_LINKED_FORMAT, currentPosition(), 0);
18148        }
18149        context2.braceNest = 0;
18150        context2.inLinked = false;
18151        return readToken(scnr, context2);
18152    }
18153  }
18154  function readToken(scnr, context2) {
18155    let token = {
18156      type: 13
18157      /* TokenTypes.EOF */
18158    };
18159    if (context2.braceNest > 0) {
18160      return readTokenInPlaceholder(scnr, context2) || getEndToken(context2);
18161    }
18162    if (context2.inLinked) {
18163      return readTokenInLinked(scnr, context2) || getEndToken(context2);
18164    }
18165    const ch = scnr.currentChar();
18166    switch (ch) {
18167      case "{":
18168        return readTokenInPlaceholder(scnr, context2) || getEndToken(context2);
18169      case "}":
18170        emitError2(CompileErrorCodes.UNBALANCED_CLOSING_BRACE, currentPosition(), 0);
18171        scnr.next();
18172        return getToken(
18173          context2,
18174          3,
18175          "}"
18176          /* TokenChars.BraceRight */
18177        );
18178      case "@":
18179        return readTokenInLinked(scnr, context2) || getEndToken(context2);
18180      default: {
18181        if (isPluralStart(scnr)) {
18182          token = getToken(context2, 1, readPlural(scnr));
18183          context2.braceNest = 0;
18184          context2.inLinked = false;
18185          return token;
18186        }
18187        if (isTextStart(scnr)) {
18188          return getToken(context2, 0, readText(scnr));
18189        }
18190        break;
18191      }
18192    }
18193    return token;
18194  }
18195  function nextToken() {
18196    const { currentType, offset, startLoc, endLoc } = _context;
18197    _context.lastType = currentType;
18198    _context.lastOffset = offset;
18199    _context.lastStartLoc = startLoc;
18200    _context.lastEndLoc = endLoc;
18201    _context.offset = currentOffset();
18202    _context.startLoc = currentPosition();
18203    if (_scnr.currentChar() === EOF) {
18204      return getToken(
18205        _context,
18206        13
18207        /* TokenTypes.EOF */
18208      );
18209    }
18210    return readToken(_scnr, _context);
18211  }
18212  return {
18213    nextToken,
18214    currentOffset,
18215    currentPosition,
18216    context
18217  };
18218}
18219const ERROR_DOMAIN$2 = "parser";
18220const KNOWN_ESCAPES = /(?:\\\\|\\'|\\u([0-9a-fA-F]{4})|\\U([0-9a-fA-F]{6}))/g;
18221function fromEscapeSequence(match, codePoint4, codePoint6) {
18222  switch (match) {
18223    case `\\\\`:
18224      return `\\`;
18225    // eslint-disable-next-line no-useless-escape
18226    case `\\'`:
18227      return `'`;
18228    default: {
18229      const codePoint = parseInt(codePoint4 || codePoint6, 16);
18230      if (codePoint <= 55295 || codePoint >= 57344) {
18231        return String.fromCodePoint(codePoint);
18232      }
18233      return "�";
18234    }
18235  }
18236}
18237function createParser(options2 = {}) {
18238  const location2 = options2.location !== false;
18239  const { onError } = options2;
18240  function emitError2(tokenzer, code, start, offset, ...args) {
18241    const end = tokenzer.currentPosition();
18242    end.offset += offset;
18243    end.column += offset;
18244    if (onError) {
18245      const loc = location2 ? createLocation(start, end) : null;
18246      const err = createCompileError(code, loc, {
18247        domain: ERROR_DOMAIN$2,
18248        args
18249      });
18250      onError(err);
18251    }
18252  }
18253  function startNode(type, offset, loc) {
18254    const node = { type };
18255    if (location2) {
18256      node.start = offset;
18257      node.end = offset;
18258      node.loc = { start: loc, end: loc };
18259    }
18260    return node;
18261  }
18262  function endNode(node, offset, pos, type) {
18263    if (location2) {
18264      node.end = offset;
18265      if (node.loc) {
18266        node.loc.end = pos;
18267      }
18268    }
18269  }
18270  function parseText(tokenizer2, value) {
18271    const context = tokenizer2.context();
18272    const node = startNode(3, context.offset, context.startLoc);
18273    node.value = value;
18274    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18275    return node;
18276  }
18277  function parseList(tokenizer2, index2) {
18278    const context = tokenizer2.context();
18279    const { lastOffset: offset, lastStartLoc: loc } = context;
18280    const node = startNode(5, offset, loc);
18281    node.index = parseInt(index2, 10);
18282    tokenizer2.nextToken();
18283    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18284    return node;
18285  }
18286  function parseNamed(tokenizer2, key) {
18287    const context = tokenizer2.context();
18288    const { lastOffset: offset, lastStartLoc: loc } = context;
18289    const node = startNode(4, offset, loc);
18290    node.key = key;
18291    tokenizer2.nextToken();
18292    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18293    return node;
18294  }
18295  function parseLiteral(tokenizer2, value) {
18296    const context = tokenizer2.context();
18297    const { lastOffset: offset, lastStartLoc: loc } = context;
18298    const node = startNode(9, offset, loc);
18299    node.value = value.replace(KNOWN_ESCAPES, fromEscapeSequence);
18300    tokenizer2.nextToken();
18301    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18302    return node;
18303  }
18304  function parseLinkedModifier(tokenizer2) {
18305    const token = tokenizer2.nextToken();
18306    const context = tokenizer2.context();
18307    const { lastOffset: offset, lastStartLoc: loc } = context;
18308    const node = startNode(8, offset, loc);
18309    if (token.type !== 11) {
18310      emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_MODIFIER, context.lastStartLoc, 0);
18311      node.value = "";
18312      endNode(node, offset, loc);
18313      return {
18314        nextConsumeToken: token,
18315        node
18316      };
18317    }
18318    if (token.value == null) {
18319      emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18320    }
18321    node.value = token.value || "";
18322    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18323    return {
18324      node
18325    };
18326  }
18327  function parseLinkedKey(tokenizer2, value) {
18328    const context = tokenizer2.context();
18329    const node = startNode(7, context.offset, context.startLoc);
18330    node.value = value;
18331    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18332    return node;
18333  }
18334  function parseLinked(tokenizer2) {
18335    const context = tokenizer2.context();
18336    const linkedNode = startNode(6, context.offset, context.startLoc);
18337    let token = tokenizer2.nextToken();
18338    if (token.type === 8) {
18339      const parsed = parseLinkedModifier(tokenizer2);
18340      linkedNode.modifier = parsed.node;
18341      token = parsed.nextConsumeToken || tokenizer2.nextToken();
18342    }
18343    if (token.type !== 9) {
18344      emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18345    }
18346    token = tokenizer2.nextToken();
18347    if (token.type === 2) {
18348      token = tokenizer2.nextToken();
18349    }
18350    switch (token.type) {
18351      case 10:
18352        if (token.value == null) {
18353          emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18354        }
18355        linkedNode.key = parseLinkedKey(tokenizer2, token.value || "");
18356        break;
18357      case 4:
18358        if (token.value == null) {
18359          emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18360        }
18361        linkedNode.key = parseNamed(tokenizer2, token.value || "");
18362        break;
18363      case 5:
18364        if (token.value == null) {
18365          emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18366        }
18367        linkedNode.key = parseList(tokenizer2, token.value || "");
18368        break;
18369      case 6:
18370        if (token.value == null) {
18371          emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18372        }
18373        linkedNode.key = parseLiteral(tokenizer2, token.value || "");
18374        break;
18375      default: {
18376        emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_EMPTY_LINKED_KEY, context.lastStartLoc, 0);
18377        const nextContext = tokenizer2.context();
18378        const emptyLinkedKeyNode = startNode(7, nextContext.offset, nextContext.startLoc);
18379        emptyLinkedKeyNode.value = "";
18380        endNode(emptyLinkedKeyNode, nextContext.offset, nextContext.startLoc);
18381        linkedNode.key = emptyLinkedKeyNode;
18382        endNode(linkedNode, nextContext.offset, nextContext.startLoc);
18383        return {
18384          nextConsumeToken: token,
18385          node: linkedNode
18386        };
18387      }
18388    }
18389    endNode(linkedNode, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18390    return {
18391      node: linkedNode
18392    };
18393  }
18394  function parseMessage(tokenizer2) {
18395    const context = tokenizer2.context();
18396    const startOffset = context.currentType === 1 ? tokenizer2.currentOffset() : context.offset;
18397    const startLoc = context.currentType === 1 ? context.endLoc : context.startLoc;
18398    const node = startNode(2, startOffset, startLoc);
18399    node.items = [];
18400    let nextToken = null;
18401    do {
18402      const token = nextToken || tokenizer2.nextToken();
18403      nextToken = null;
18404      switch (token.type) {
18405        case 0:
18406          if (token.value == null) {
18407            emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18408          }
18409          node.items.push(parseText(tokenizer2, token.value || ""));
18410          break;
18411        case 5:
18412          if (token.value == null) {
18413            emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18414          }
18415          node.items.push(parseList(tokenizer2, token.value || ""));
18416          break;
18417        case 4:
18418          if (token.value == null) {
18419            emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18420          }
18421          node.items.push(parseNamed(tokenizer2, token.value || ""));
18422          break;
18423        case 6:
18424          if (token.value == null) {
18425            emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, getTokenCaption(token));
18426          }
18427          node.items.push(parseLiteral(tokenizer2, token.value || ""));
18428          break;
18429        case 7: {
18430          const parsed = parseLinked(tokenizer2);
18431          node.items.push(parsed.node);
18432          nextToken = parsed.nextConsumeToken || null;
18433          break;
18434        }
18435      }
18436    } while (context.currentType !== 13 && context.currentType !== 1);
18437    const endOffset = context.currentType === 1 ? context.lastOffset : tokenizer2.currentOffset();
18438    const endLoc = context.currentType === 1 ? context.lastEndLoc : tokenizer2.currentPosition();
18439    endNode(node, endOffset, endLoc);
18440    return node;
18441  }
18442  function parsePlural(tokenizer2, offset, loc, msgNode) {
18443    const context = tokenizer2.context();
18444    let hasEmptyMessage = msgNode.items.length === 0;
18445    const node = startNode(1, offset, loc);
18446    node.cases = [];
18447    node.cases.push(msgNode);
18448    do {
18449      const msg = parseMessage(tokenizer2);
18450      if (!hasEmptyMessage) {
18451        hasEmptyMessage = msg.items.length === 0;
18452      }
18453      node.cases.push(msg);
18454    } while (context.currentType !== 13);
18455    if (hasEmptyMessage) {
18456      emitError2(tokenizer2, CompileErrorCodes.MUST_HAVE_MESSAGES_IN_PLURAL, loc, 0);
18457    }
18458    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18459    return node;
18460  }
18461  function parseResource(tokenizer2) {
18462    const context = tokenizer2.context();
18463    const { offset, startLoc } = context;
18464    const msgNode = parseMessage(tokenizer2);
18465    if (context.currentType === 13) {
18466      return msgNode;
18467    } else {
18468      return parsePlural(tokenizer2, offset, startLoc, msgNode);
18469    }
18470  }
18471  function parse2(source) {
18472    const tokenizer2 = createTokenizer(source, assign$1({}, options2));
18473    const context = tokenizer2.context();
18474    const node = startNode(0, context.offset, context.startLoc);
18475    if (location2 && node.loc) {
18476      node.loc.source = source;
18477    }
18478    node.body = parseResource(tokenizer2);
18479    if (options2.onCacheKey) {
18480      node.cacheKey = options2.onCacheKey(source);
18481    }
18482    if (context.currentType !== 13) {
18483      emitError2(tokenizer2, CompileErrorCodes.UNEXPECTED_LEXICAL_ANALYSIS, context.lastStartLoc, 0, source[context.offset] || "");
18484    }
18485    endNode(node, tokenizer2.currentOffset(), tokenizer2.currentPosition());
18486    return node;
18487  }
18488  return { parse: parse2 };
18489}
18490function getTokenCaption(token) {
18491  if (token.type === 13) {
18492    return "EOF";
18493  }
18494  const name = (token.value || "").replace(/\r?\n/gu, "\\n");
18495  return name.length > 10 ? name.slice(0, 9) + "…" : name;
18496}
18497function createTransformer(ast, options2 = {}) {
18498  const _context = {
18499    ast,
18500    helpers: /* @__PURE__ */ new Set()
18501  };
18502  const context = () => _context;
18503  const helper = (name) => {
18504    _context.helpers.add(name);
18505    return name;
18506  };
18507  return { context, helper };
18508}
18509function traverseNodes(nodes, transformer) {
18510  for (let i = 0; i < nodes.length; i++) {
18511    traverseNode(nodes[i], transformer);
18512  }
18513}
18514function traverseNode(node, transformer) {
18515  switch (node.type) {
18516    case 1:
18517      traverseNodes(node.cases, transformer);
18518      transformer.helper(
18519        "plural"
18520        /* HelperNameMap.PLURAL */
18521      );
18522      break;
18523    case 2:
18524      traverseNodes(node.items, transformer);
18525      break;
18526    case 6: {
18527      const linked = node;
18528      traverseNode(linked.key, transformer);
18529      transformer.helper(
18530        "linked"
18531        /* HelperNameMap.LINKED */
18532      );
18533      transformer.helper(
18534        "type"
18535        /* HelperNameMap.TYPE */
18536      );
18537      break;
18538    }
18539    case 5:
18540      transformer.helper(
18541        "interpolate"
18542        /* HelperNameMap.INTERPOLATE */
18543      );
18544      transformer.helper(
18545        "list"
18546        /* HelperNameMap.LIST */
18547      );
18548      break;
18549    case 4:
18550      transformer.helper(
18551        "interpolate"
18552        /* HelperNameMap.INTERPOLATE */
18553      );
18554      transformer.helper(
18555        "named"
18556        /* HelperNameMap.NAMED */
18557      );
18558      break;
18559  }
18560}
18561function transform(ast, options2 = {}) {
18562  const transformer = createTransformer(ast);
18563  transformer.helper(
18564    "normalize"
18565    /* HelperNameMap.NORMALIZE */
18566  );
18567  ast.body && traverseNode(ast.body, transformer);
18568  const context = transformer.context();
18569  ast.helpers = Array.from(context.helpers);
18570}
18571function optimize(ast) {
18572  const body = ast.body;
18573  if (body.type === 2) {
18574    optimizeMessageNode(body);
18575  } else {
18576    body.cases.forEach((c) => optimizeMessageNode(c));
18577  }
18578  return ast;
18579}
18580function optimizeMessageNode(message) {
18581  if (message.items.length === 1) {
18582    const item = message.items[0];
18583    if (item.type === 3 || item.type === 9) {
18584      message.static = item.value;
18585      delete item.value;
18586    }
18587  } else {
18588    const values = [];
18589    for (let i = 0; i < message.items.length; i++) {
18590      const item = message.items[i];
18591      if (!(item.type === 3 || item.type === 9)) {
18592        break;
18593      }
18594      if (item.value == null) {
18595        break;
18596      }
18597      values.push(item.value);
18598    }
18599    if (values.length === message.items.length) {
18600      message.static = join(values);
18601      for (let i = 0; i < message.items.length; i++) {
18602        const item = message.items[i];
18603        if (item.type === 3 || item.type === 9) {
18604          delete item.value;
18605        }
18606      }
18607    }
18608  }
18609}
18610function minify(node) {
18611  node.t = node.type;
18612  switch (node.type) {
18613    case 0: {
18614      const resource = node;
18615      minify(resource.body);
18616      resource.b = resource.body;
18617      delete resource.body;
18618      break;
18619    }
18620    case 1: {
18621      const plural = node;
18622      const cases = plural.cases;
18623      for (let i = 0; i < cases.length; i++) {
18624        minify(cases[i]);
18625      }
18626      plural.c = cases;
18627      delete plural.cases;
18628      break;
18629    }
18630    case 2: {
18631      const message = node;
18632      const items = message.items;
18633      for (let i = 0; i < items.length; i++) {
18634        minify(items[i]);
18635      }
18636      message.i = items;
18637      delete message.items;
18638      if (message.static) {
18639        message.s = message.static;
18640        delete message.static;
18641      }
18642      break;
18643    }
18644    case 3:
18645    case 9:
18646    case 8:
18647    case 7: {
18648      const valueNode = node;
18649      if (valueNode.value) {
18650        valueNode.v = valueNode.value;
18651        delete valueNode.value;
18652      }
18653      break;
18654    }
18655    case 6: {
18656      const linked = node;
18657      minify(linked.key);
18658      linked.k = linked.key;
18659      delete linked.key;
18660      if (linked.modifier) {
18661        minify(linked.modifier);
18662        linked.m = linked.modifier;
18663        delete linked.modifier;
18664      }
18665      break;
18666    }
18667    case 5: {
18668      const list = node;
18669      list.i = list.index;
18670      delete list.index;
18671      break;
18672    }
18673    case 4: {
18674      const named = node;
18675      named.k = named.key;
18676      delete named.key;
18677      break;
18678    }
18679  }
18680  delete node.type;
18681}
18682function createCodeGenerator(ast, options2) {
18683  const { filename, breakLineCode, needIndent: _needIndent } = options2;
18684  const location2 = options2.location !== false;
18685  const _context = {
18686    filename,
18687    code: "",
18688    column: 1,
18689    line: 1,
18690    offset: 0,
18691    map: void 0,
18692    breakLineCode,
18693    needIndent: _needIndent,
18694    indentLevel: 0
18695  };
18696  if (location2 && ast.loc) {
18697    _context.source = ast.loc.source;
18698  }
18699  const context = () => _context;
18700  function push(code, node) {
18701    _context.code += code;
18702  }
18703  function _newline(n, withBreakLine = true) {
18704    const _breakLineCode = withBreakLine ? breakLineCode : "";
18705    push(_needIndent ? _breakLineCode + `  `.repeat(n) : _breakLineCode);
18706  }
18707  function indent(withNewLine = true) {
vendor: 9,284 bytes, lines 18708-19046
18708    const level = ++_context.indentLevel;
18709    withNewLine && _newline(level);
18710  }
18711  function deindent(withNewLine = true) {
18712    const level = --_context.indentLevel;
18713    withNewLine && _newline(level);
18714  }
18715  function newline() {
18716    _newline(_context.indentLevel);
18717  }
18718  const helper = (key) => `_${key}`;
18719  const needIndent = () => _context.needIndent;
18720  return {
18721    context,
18722    push,
18723    indent,
18724    deindent,
18725    newline,
18726    helper,
18727    needIndent
18728  };
18729}
18730function generateLinkedNode(generator, node) {
18731  const { helper } = generator;
18732  generator.push(`${helper(
18733    "linked"
18734    /* HelperNameMap.LINKED */
18735  )}(`);
18736  generateNode(generator, node.key);
18737  if (node.modifier) {
18738    generator.push(`, `);
18739    generateNode(generator, node.modifier);
18740    generator.push(`, _type`);
18741  } else {
18742    generator.push(`, undefined, _type`);
18743  }
18744  generator.push(`)`);
18745}
18746function generateMessageNode(generator, node) {
18747  const { helper, needIndent } = generator;
18748  generator.push(`${helper(
18749    "normalize"
18750    /* HelperNameMap.NORMALIZE */
18751  )}([`);
18752  generator.indent(needIndent());
18753  const length = node.items.length;
18754  for (let i = 0; i < length; i++) {
18755    generateNode(generator, node.items[i]);
18756    if (i === length - 1) {
18757      break;
18758    }
18759    generator.push(", ");
18760  }
18761  generator.deindent(needIndent());
18762  generator.push("])");
18763}
18764function generatePluralNode(generator, node) {
18765  const { helper, needIndent } = generator;
18766  if (node.cases.length > 1) {
18767    generator.push(`${helper(
18768      "plural"
18769      /* HelperNameMap.PLURAL */
18770    )}([`);
18771    generator.indent(needIndent());
18772    const length = node.cases.length;
18773    for (let i = 0; i < length; i++) {
18774      generateNode(generator, node.cases[i]);
18775      if (i === length - 1) {
18776        break;
18777      }
18778      generator.push(", ");
18779    }
18780    generator.deindent(needIndent());
18781    generator.push(`])`);
18782  }
18783}
18784function generateResource(generator, node) {
18785  if (node.body) {
18786    generateNode(generator, node.body);
18787  } else {
18788    generator.push("null");
18789  }
18790}
18791function generateNode(generator, node) {
18792  const { helper } = generator;
18793  switch (node.type) {
18794    case 0:
18795      generateResource(generator, node);
18796      break;
18797    case 1:
18798      generatePluralNode(generator, node);
18799      break;
18800    case 2:
18801      generateMessageNode(generator, node);
18802      break;
18803    case 6:
18804      generateLinkedNode(generator, node);
18805      break;
18806    case 8:
18807      generator.push(JSON.stringify(node.value), node);
18808      break;
18809    case 7:
18810      generator.push(JSON.stringify(node.value), node);
18811      break;
18812    case 5:
18813      generator.push(`${helper(
18814        "interpolate"
18815        /* HelperNameMap.INTERPOLATE */
18816      )}(${helper(
18817        "list"
18818        /* HelperNameMap.LIST */
18819      )}(${node.index}))`, node);
18820      break;
18821    case 4:
18822      generator.push(`${helper(
18823        "interpolate"
18824        /* HelperNameMap.INTERPOLATE */
18825      )}(${helper(
18826        "named"
18827        /* HelperNameMap.NAMED */
18828      )}(${JSON.stringify(node.key)}))`, node);
18829      break;
18830    case 9:
18831      generator.push(JSON.stringify(node.value), node);
18832      break;
18833    case 3:
18834      generator.push(JSON.stringify(node.value), node);
18835      break;
18836  }
18837}
18838const generate = (ast, options2 = {}) => {
18839  const mode = isString$2(options2.mode) ? options2.mode : "normal";
18840  const filename = isString$2(options2.filename) ? options2.filename : "message.intl";
18841  !!options2.sourceMap;
18842  const breakLineCode = options2.breakLineCode != null ? options2.breakLineCode : mode === "arrow" ? ";" : "\n";
18843  const needIndent = options2.needIndent ? options2.needIndent : mode !== "arrow";
18844  const helpers = ast.helpers || [];
18845  const generator = createCodeGenerator(ast, {
18846    filename,
18847    breakLineCode,
18848    needIndent
18849  });
18850  generator.push(mode === "normal" ? `function __msg__ (ctx) {` : `(ctx) => {`);
18851  generator.indent(needIndent);
18852  if (helpers.length > 0) {
18853    generator.push(`const { ${join(helpers.map((s) => `${s}: _${s}`), ", ")} } = ctx`);
18854    generator.newline();
18855  }
18856  generator.push(`return `);
18857  generateNode(generator, ast);
18858  generator.deindent(needIndent);
18859  generator.push(`}`);
18860  delete ast.helpers;
18861  const { code, map } = generator.context();
18862  return {
18863    ast,
18864    code,
18865    map: map ? map.toJSON() : void 0
18866    // eslint-disable-line @typescript-eslint/no-explicit-any
18867  };
18868};
18869function baseCompile$1(source, options2 = {}) {
18870  const assignedOptions = assign$1({}, options2);
18871  const jit = !!assignedOptions.jit;
18872  const enalbeMinify = !!assignedOptions.minify;
18873  const enambeOptimize = assignedOptions.optimize == null ? true : assignedOptions.optimize;
18874  const parser = createParser(assignedOptions);
18875  const ast = parser.parse(source);
18876  if (!jit) {
18877    transform(ast, assignedOptions);
18878    return generate(ast, assignedOptions);
18879  } else {
18880    enambeOptimize && optimize(ast);
18881    enalbeMinify && minify(ast);
18882    return { ast, code: "" };
18883  }
18884}
18885/*!
18886  * core-base v11.1.5
18887  * (c) 2025 kazuya kawaguchi
18888  * Released under the MIT License.
18889  */
18890function initFeatureFlags$1() {
18891  if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
18892    getGlobalThis$1().__INTLIFY_PROD_DEVTOOLS__ = false;
18893  }
18894}
18895function isMessageAST(val) {
18896  return isObject$7(val) && resolveType(val) === 0 && (hasOwn$1(val, "b") || hasOwn$1(val, "body"));
18897}
18898const PROPS_BODY = ["b", "body"];
18899function resolveBody(node) {
18900  return resolveProps(node, PROPS_BODY);
18901}
18902const PROPS_CASES = ["c", "cases"];
18903function resolveCases(node) {
18904  return resolveProps(node, PROPS_CASES, []);
18905}
18906const PROPS_STATIC = ["s", "static"];
18907function resolveStatic(node) {
18908  return resolveProps(node, PROPS_STATIC);
18909}
18910const PROPS_ITEMS = ["i", "items"];
18911function resolveItems(node) {
18912  return resolveProps(node, PROPS_ITEMS, []);
18913}
18914const PROPS_TYPE = ["t", "type"];
18915function resolveType(node) {
18916  return resolveProps(node, PROPS_TYPE);
18917}
18918const PROPS_VALUE = ["v", "value"];
18919function resolveValue$1(node, type) {
18920  const resolved = resolveProps(node, PROPS_VALUE);
18921  if (resolved != null) {
18922    return resolved;
18923  } else {
18924    throw createUnhandleNodeError(type);
18925  }
18926}
18927const PROPS_MODIFIER = ["m", "modifier"];
18928function resolveLinkedModifier(node) {
18929  return resolveProps(node, PROPS_MODIFIER);
18930}
18931const PROPS_KEY = ["k", "key"];
18932function resolveLinkedKey(node) {
18933  const resolved = resolveProps(node, PROPS_KEY);
18934  if (resolved) {
18935    return resolved;
18936  } else {
18937    throw createUnhandleNodeError(
18938      6
18939      /* NodeTypes.Linked */
18940    );
18941  }
18942}
18943function resolveProps(node, props2, defaultValue) {
18944  for (let i = 0; i < props2.length; i++) {
18945    const prop = props2[i];
18946    if (hasOwn$1(node, prop) && node[prop] != null) {
18947      return node[prop];
18948    }
18949  }
18950  return defaultValue;
18951}
18952const AST_NODE_PROPS_KEYS = [
18953  ...PROPS_BODY,
18954  ...PROPS_CASES,
18955  ...PROPS_STATIC,
18956  ...PROPS_ITEMS,
18957  ...PROPS_KEY,
18958  ...PROPS_MODIFIER,
18959  ...PROPS_VALUE,
18960  ...PROPS_TYPE
18961];
18962function createUnhandleNodeError(type) {
18963  return new Error(`unhandled node type: ${type}`);
18964}
18965function format(ast) {
18966  const msg = (ctx) => formatParts(ctx, ast);
18967  return msg;
18968}
18969function formatParts(ctx, ast) {
18970  const body = resolveBody(ast);
18971  if (body == null) {
18972    throw createUnhandleNodeError(
18973      0
18974      /* NodeTypes.Resource */
18975    );
18976  }
18977  const type = resolveType(body);
18978  if (type === 1) {
18979    const plural = body;
18980    const cases = resolveCases(plural);
18981    return ctx.plural(cases.reduce((messages, c) => [
18982      ...messages,
18983      formatMessageParts(ctx, c)
18984    ], []));
18985  } else {
18986    return formatMessageParts(ctx, body);
18987  }
18988}
18989function formatMessageParts(ctx, node) {
18990  const static_ = resolveStatic(node);
18991  if (static_ != null) {
18992    return ctx.type === "text" ? static_ : ctx.normalize([static_]);
18993  } else {
18994    const messages = resolveItems(node).reduce((acm, c) => [...acm, formatMessagePart(ctx, c)], []);
18995    return ctx.normalize(messages);
18996  }
18997}
18998function formatMessagePart(ctx, node) {
18999  const type = resolveType(node);
19000  switch (type) {
19001    case 3: {
19002      return resolveValue$1(node, type);
19003    }
19004    case 9: {
19005      return resolveValue$1(node, type);
19006    }
19007    case 4: {
19008      const named = node;
19009      if (hasOwn$1(named, "k") && named.k) {
19010        return ctx.interpolate(ctx.named(named.k));
19011      }
19012      if (hasOwn$1(named, "key") && named.key) {
19013        return ctx.interpolate(ctx.named(named.key));
19014      }
19015      throw createUnhandleNodeError(type);
19016    }
19017    case 5: {
19018      const list = node;
19019      if (hasOwn$1(list, "i") && isNumber$2(list.i)) {
19020        return ctx.interpolate(ctx.list(list.i));
19021      }
19022      if (hasOwn$1(list, "index") && isNumber$2(list.index)) {
19023        return ctx.interpolate(ctx.list(list.index));
19024      }
19025      throw createUnhandleNodeError(type);
19026    }
19027    case 6: {
19028      const linked = node;
19029      const modifier = resolveLinkedModifier(linked);
19030      const key = resolveLinkedKey(linked);
19031      return ctx.linked(formatMessagePart(ctx, key), modifier ? formatMessagePart(ctx, modifier) : void 0, ctx.type);
19032    }
19033    case 7: {
19034      return resolveValue$1(node, type);
19035    }
19036    case 8: {
19037      return resolveValue$1(node, type);
19038    }
19039    default:
19040      throw new Error(`unhandled node on format message part: ${type}`);
19041  }
19042}
19043const defaultOnCacheKey = (message) => message;
19044let compileCache = create$1();
19045function baseCompile(message, options2 = {}) {
19046  let detectError = false;
vendor: 13,425 bytes, lines 19047-19696
19047  const onError = options2.onError || defaultOnError;
19048  options2.onError = (err) => {
19049    detectError = true;
19050    onError(err);
19051  };
19052  return { ...baseCompile$1(message, options2), detectError };
19053}
19054// @__NO_SIDE_EFFECTS__
19055function compile(message, context) {
19056  if (isString$2(message)) {
19057    isBoolean$2(context.warnHtmlMessage) ? context.warnHtmlMessage : true;
19058    const onCacheKey = context.onCacheKey || defaultOnCacheKey;
19059    const cacheKey = onCacheKey(message);
19060    const cached = compileCache[cacheKey];
19061    if (cached) {
19062      return cached;
19063    }
19064    const { ast, detectError } = baseCompile(message, {
19065      ...context,
19066      location: false,
19067      jit: true
19068    });
19069    const msg = format(ast);
19070    return !detectError ? compileCache[cacheKey] = msg : msg;
19071  } else {
19072    const cacheKey = message.cacheKey;
19073    if (cacheKey) {
19074      const cached = compileCache[cacheKey];
19075      if (cached) {
19076        return cached;
19077      }
19078      return compileCache[cacheKey] = format(message);
19079    } else {
19080      return format(message);
19081    }
19082  }
19083}
19084let devtools = null;
19085function setDevToolsHook(hook) {
19086  devtools = hook;
19087}
19088function initI18nDevTools(i18n, version2, meta) {
19089  devtools && devtools.emit("i18n:init", {
19090    timestamp: Date.now(),
19091    i18n,
19092    version: version2,
19093    meta
19094  });
19095}
19096const translateDevTools = /* @__PURE__ */ createDevToolsHook("function:translate");
19097function createDevToolsHook(hook) {
19098  return (payloads) => devtools && devtools.emit(hook, payloads);
19099}
19100const CoreErrorCodes = {
19101  INVALID_ARGUMENT: COMPILE_ERROR_CODES_EXTEND_POINT,
19102  // 17
19103  INVALID_DATE_ARGUMENT: 18,
19104  INVALID_ISO_DATE_ARGUMENT: 19,
19105  NOT_SUPPORT_LOCALE_PROMISE_VALUE: 21,
19106  NOT_SUPPORT_LOCALE_ASYNC_FUNCTION: 22,
19107  NOT_SUPPORT_LOCALE_TYPE: 23
19108};
19109const CORE_ERROR_CODES_EXTEND_POINT = 24;
19110function createCoreError(code) {
19111  return createCompileError(code, null, void 0);
19112}
19113function getLocale(context, options2) {
19114  return options2.locale != null ? resolveLocale(options2.locale) : resolveLocale(context.locale);
19115}
19116let _resolveLocale;
19117function resolveLocale(locale) {
19118  if (isString$2(locale)) {
19119    return locale;
19120  } else {
19121    if (isFunction$2(locale)) {
19122      if (locale.resolvedOnce && _resolveLocale != null) {
19123        return _resolveLocale;
19124      } else if (locale.constructor.name === "Function") {
19125        const resolve2 = locale();
19126        if (isPromise(resolve2)) {
19127          throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_PROMISE_VALUE);
19128        }
19129        return _resolveLocale = resolve2;
19130      } else {
19131        throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_ASYNC_FUNCTION);
19132      }
19133    } else {
19134      throw createCoreError(CoreErrorCodes.NOT_SUPPORT_LOCALE_TYPE);
19135    }
19136  }
19137}
19138function fallbackWithSimple(ctx, fallback, start) {
19139  return [.../* @__PURE__ */ new Set([
19140    start,
19141    ...isArray$2(fallback) ? fallback : isObject$7(fallback) ? Object.keys(fallback) : isString$2(fallback) ? [fallback] : [start]
19142  ])];
19143}
19144function fallbackWithLocaleChain(ctx, fallback, start) {
19145  const startLocale = isString$2(start) ? start : DEFAULT_LOCALE;
19146  const context = ctx;
19147  if (!context.__localeChainCache) {
19148    context.__localeChainCache = /* @__PURE__ */ new Map();
19149  }
19150  let chain = context.__localeChainCache.get(startLocale);
19151  if (!chain) {
19152    chain = [];
19153    let block = [start];
19154    while (isArray$2(block)) {
19155      block = appendBlockToChain(chain, block, fallback);
19156    }
19157    const defaults2 = isArray$2(fallback) || !isPlainObject$2(fallback) ? fallback : fallback["default"] ? fallback["default"] : null;
19158    block = isString$2(defaults2) ? [defaults2] : defaults2;
19159    if (isArray$2(block)) {
19160      appendBlockToChain(chain, block, false);
19161    }
19162    context.__localeChainCache.set(startLocale, chain);
19163  }
19164  return chain;
19165}
19166function appendBlockToChain(chain, block, blocks) {
19167  let follow = true;
19168  for (let i = 0; i < block.length && isBoolean$2(follow); i++) {
19169    const locale = block[i];
19170    if (isString$2(locale)) {
19171      follow = appendLocaleToChain(chain, block[i], blocks);
19172    }
19173  }
19174  return follow;
19175}
19176function appendLocaleToChain(chain, locale, blocks) {
19177  let follow;
19178  const tokens = locale.split("-");
19179  do {
19180    const target = tokens.join("-");
19181    follow = appendItemToChain(chain, target, blocks);
19182    tokens.splice(-1, 1);
19183  } while (tokens.length && follow === true);
19184  return follow;
19185}
19186function appendItemToChain(chain, target, blocks) {
19187  let follow = false;
19188  if (!chain.includes(target)) {
19189    follow = true;
19190    if (target) {
19191      follow = target[target.length - 1] !== "!";
19192      const locale = target.replace(/!/g, "");
19193      chain.push(locale);
19194      if ((isArray$2(blocks) || isPlainObject$2(blocks)) && blocks[locale]) {
19195        follow = blocks[locale];
19196      }
19197    }
19198  }
19199  return follow;
19200}
19201const pathStateMachine = [];
19202pathStateMachine[
19203  0
19204  /* States.BEFORE_PATH */
19205] = {
19206  [
19207    "w"
19208    /* PathCharTypes.WORKSPACE */
19209  ]: [
19210    0
19211    /* States.BEFORE_PATH */
19212  ],
19213  [
19214    "i"
19215    /* PathCharTypes.IDENT */
19216  ]: [
19217    3,
19218    0
19219    /* Actions.APPEND */
19220  ],
19221  [
19222    "["
19223    /* PathCharTypes.LEFT_BRACKET */
19224  ]: [
19225    4
19226    /* States.IN_SUB_PATH */
19227  ],
19228  [
19229    "o"
19230    /* PathCharTypes.END_OF_FAIL */
19231  ]: [
19232    7
19233    /* States.AFTER_PATH */
19234  ]
19235};
19236pathStateMachine[
19237  1
19238  /* States.IN_PATH */
19239] = {
19240  [
19241    "w"
19242    /* PathCharTypes.WORKSPACE */
19243  ]: [
19244    1
19245    /* States.IN_PATH */
19246  ],
19247  [
19248    "."
19249    /* PathCharTypes.DOT */
19250  ]: [
19251    2
19252    /* States.BEFORE_IDENT */
19253  ],
19254  [
19255    "["
19256    /* PathCharTypes.LEFT_BRACKET */
19257  ]: [
19258    4
19259    /* States.IN_SUB_PATH */
19260  ],
19261  [
19262    "o"
19263    /* PathCharTypes.END_OF_FAIL */
19264  ]: [
19265    7
19266    /* States.AFTER_PATH */
19267  ]
19268};
19269pathStateMachine[
19270  2
19271  /* States.BEFORE_IDENT */
19272] = {
19273  [
19274    "w"
19275    /* PathCharTypes.WORKSPACE */
19276  ]: [
19277    2
19278    /* States.BEFORE_IDENT */
19279  ],
19280  [
19281    "i"
19282    /* PathCharTypes.IDENT */
19283  ]: [
19284    3,
19285    0
19286    /* Actions.APPEND */
19287  ],
19288  [
19289    "0"
19290    /* PathCharTypes.ZERO */
19291  ]: [
19292    3,
19293    0
19294    /* Actions.APPEND */
19295  ]
19296};
19297pathStateMachine[
19298  3
19299  /* States.IN_IDENT */
19300] = {
19301  [
19302    "i"
19303    /* PathCharTypes.IDENT */
19304  ]: [
19305    3,
19306    0
19307    /* Actions.APPEND */
19308  ],
19309  [
19310    "0"
19311    /* PathCharTypes.ZERO */
19312  ]: [
19313    3,
19314    0
19315    /* Actions.APPEND */
19316  ],
19317  [
19318    "w"
19319    /* PathCharTypes.WORKSPACE */
19320  ]: [
19321    1,
19322    1
19323    /* Actions.PUSH */
19324  ],
19325  [
19326    "."
19327    /* PathCharTypes.DOT */
19328  ]: [
19329    2,
19330    1
19331    /* Actions.PUSH */
19332  ],
19333  [
19334    "["
19335    /* PathCharTypes.LEFT_BRACKET */
19336  ]: [
19337    4,
19338    1
19339    /* Actions.PUSH */
19340  ],
19341  [
19342    "o"
19343    /* PathCharTypes.END_OF_FAIL */
19344  ]: [
19345    7,
19346    1
19347    /* Actions.PUSH */
19348  ]
19349};
19350pathStateMachine[
19351  4
19352  /* States.IN_SUB_PATH */
19353] = {
19354  [
19355    "'"
19356    /* PathCharTypes.SINGLE_QUOTE */
19357  ]: [
19358    5,
19359    0
19360    /* Actions.APPEND */
19361  ],
19362  [
19363    '"'
19364    /* PathCharTypes.DOUBLE_QUOTE */
19365  ]: [
19366    6,
19367    0
19368    /* Actions.APPEND */
19369  ],
19370  [
19371    "["
19372    /* PathCharTypes.LEFT_BRACKET */
19373  ]: [
19374    4,
19375    2
19376    /* Actions.INC_SUB_PATH_DEPTH */
19377  ],
19378  [
19379    "]"
19380    /* PathCharTypes.RIGHT_BRACKET */
19381  ]: [
19382    1,
19383    3
19384    /* Actions.PUSH_SUB_PATH */
19385  ],
19386  [
19387    "o"
19388    /* PathCharTypes.END_OF_FAIL */
19389  ]: 8,
19390  [
19391    "l"
19392    /* PathCharTypes.ELSE */
19393  ]: [
19394    4,
19395    0
19396    /* Actions.APPEND */
19397  ]
19398};
19399pathStateMachine[
19400  5
19401  /* States.IN_SINGLE_QUOTE */
19402] = {
19403  [
19404    "'"
19405    /* PathCharTypes.SINGLE_QUOTE */
19406  ]: [
19407    4,
19408    0
19409    /* Actions.APPEND */
19410  ],
19411  [
19412    "o"
19413    /* PathCharTypes.END_OF_FAIL */
19414  ]: 8,
19415  [
19416    "l"
19417    /* PathCharTypes.ELSE */
19418  ]: [
19419    5,
19420    0
19421    /* Actions.APPEND */
19422  ]
19423};
19424pathStateMachine[
19425  6
19426  /* States.IN_DOUBLE_QUOTE */
19427] = {
19428  [
19429    '"'
19430    /* PathCharTypes.DOUBLE_QUOTE */
19431  ]: [
19432    4,
19433    0
19434    /* Actions.APPEND */
19435  ],
19436  [
19437    "o"
19438    /* PathCharTypes.END_OF_FAIL */
19439  ]: 8,
19440  [
19441    "l"
19442    /* PathCharTypes.ELSE */
19443  ]: [
19444    6,
19445    0
19446    /* Actions.APPEND */
19447  ]
19448};
19449const literalValueRE = /^\s?(?:true|false|-?[\d.]+|'[^']*'|"[^"]*")\s?$/;
19450function isLiteral(exp) {
19451  return literalValueRE.test(exp);
19452}
19453function stripQuotes(str) {
19454  const a = str.charCodeAt(0);
19455  const b = str.charCodeAt(str.length - 1);
19456  return a === b && (a === 34 || a === 39) ? str.slice(1, -1) : str;
19457}
19458function getPathCharType(ch) {
19459  if (ch === void 0 || ch === null) {
19460    return "o";
19461  }
19462  const code = ch.charCodeAt(0);
19463  switch (code) {
19464    case 91:
19465    // [
19466    case 93:
19467    // ]
19468    case 46:
19469    // .
19470    case 34:
19471    // "
19472    case 39:
19473      return ch;
19474    case 95:
19475    // _
19476    case 36:
19477    // $
19478    case 45:
19479      return "i";
19480    case 9:
19481    // Tab (HT)
19482    case 10:
19483    // Newline (LF)
19484    case 13:
19485    // Return (CR)
19486    case 160:
19487    // No-break space (NBSP)
19488    case 65279:
19489    // Byte Order Mark (BOM)
19490    case 8232:
19491    // Line Separator (LS)
19492    case 8233:
19493      return "w";
19494  }
19495  return "i";
19496}
19497function formatSubPath(path) {
19498  const trimmed = path.trim();
19499  if (path.charAt(0) === "0" && isNaN(parseInt(path))) {
19500    return false;
19501  }
19502  return isLiteral(trimmed) ? stripQuotes(trimmed) : "*" + trimmed;
19503}
19504function parse(path) {
19505  const keys = [];
19506  let index2 = -1;
19507  let mode = 0;
19508  let subPathDepth = 0;
19509  let c;
19510  let key;
19511  let newChar;
19512  let type;
19513  let transition2;
19514  let action;
19515  let typeMap;
19516  const actions2 = [];
19517  actions2[
19518    0
19519    /* Actions.APPEND */
19520  ] = () => {
19521    if (key === void 0) {
19522      key = newChar;
19523    } else {
19524      key += newChar;
19525    }
19526  };
19527  actions2[
19528    1
19529    /* Actions.PUSH */
19530  ] = () => {
19531    if (key !== void 0) {
19532      keys.push(key);
19533      key = void 0;
19534    }
19535  };
19536  actions2[
19537    2
19538    /* Actions.INC_SUB_PATH_DEPTH */
19539  ] = () => {
19540    actions2[
19541      0
19542      /* Actions.APPEND */
19543    ]();
19544    subPathDepth++;
19545  };
19546  actions2[
19547    3
19548    /* Actions.PUSH_SUB_PATH */
19549  ] = () => {
19550    if (subPathDepth > 0) {
19551      subPathDepth--;
19552      mode = 4;
19553      actions2[
19554        0
19555        /* Actions.APPEND */
19556      ]();
19557    } else {
19558      subPathDepth = 0;
19559      if (key === void 0) {
19560        return false;
19561      }
19562      key = formatSubPath(key);
19563      if (key === false) {
19564        return false;
19565      } else {
19566        actions2[
19567          1
19568          /* Actions.PUSH */
19569        ]();
19570      }
19571    }
19572  };
19573  function maybeUnescapeQuote() {
19574    const nextChar = path[index2 + 1];
19575    if (mode === 5 && nextChar === "'" || mode === 6 && nextChar === '"') {
19576      index2++;
19577      newChar = "\\" + nextChar;
19578      actions2[
19579        0
19580        /* Actions.APPEND */
19581      ]();
19582      return true;
19583    }
19584  }
19585  while (mode !== null) {
19586    index2++;
19587    c = path[index2];
19588    if (c === "\\" && maybeUnescapeQuote()) {
19589      continue;
19590    }
19591    type = getPathCharType(c);
19592    typeMap = pathStateMachine[mode];
19593    transition2 = typeMap[type] || typeMap[
19594      "l"
19595      /* PathCharTypes.ELSE */
19596    ] || 8;
19597    if (transition2 === 8) {
19598      return;
19599    }
19600    mode = transition2[0];
19601    if (transition2[1] !== void 0) {
19602      action = actions2[transition2[1]];
19603      if (action) {
19604        newChar = c;
19605        if (action() === false) {
19606          return;
19607        }
19608      }
19609    }
19610    if (mode === 7) {
19611      return keys;
19612    }
19613  }
19614}
19615const cache = /* @__PURE__ */ new Map();
19616function resolveWithKeyValue(obj, path) {
19617  return isObject$7(obj) ? obj[path] : null;
19618}
19619function resolveValue(obj, path) {
19620  if (!isObject$7(obj)) {
19621    return null;
19622  }
19623  let hit = cache.get(path);
19624  if (!hit) {
19625    hit = parse(path);
19626    if (hit) {
19627      cache.set(path, hit);
19628    }
19629  }
19630  if (!hit) {
19631    return null;
19632  }
19633  const len = hit.length;
19634  let last = obj;
19635  let i = 0;
19636  while (i < len) {
19637    const key = hit[i];
19638    if (AST_NODE_PROPS_KEYS.includes(key) && isMessageAST(last)) {
19639      return null;
19640    }
19641    const val = last[key];
19642    if (val === void 0) {
19643      return null;
19644    }
19645    if (isFunction$2(last)) {
19646      return null;
19647    }
19648    last = val;
19649    i++;
19650  }
19651  return last;
19652}
19653const VERSION$4 = "11.1.5";
19654const NOT_REOSLVED = -1;
19655const DEFAULT_LOCALE = "en-US";
19656const MISSING_RESOLVE_VALUE = "";
19657const capitalize = (str) => `${str.charAt(0).toLocaleUpperCase()}${str.substr(1)}`;
19658function getDefaultLinkedModifiers() {
19659  return {
19660    upper: (val, type) => {
19661      return type === "text" && isString$2(val) ? val.toUpperCase() : type === "vnode" && isObject$7(val) && "__v_isVNode" in val ? val.children.toUpperCase() : val;
19662    },
19663    lower: (val, type) => {
19664      return type === "text" && isString$2(val) ? val.toLowerCase() : type === "vnode" && isObject$7(val) && "__v_isVNode" in val ? val.children.toLowerCase() : val;
19665    },
19666    capitalize: (val, type) => {
19667      return type === "text" && isString$2(val) ? capitalize(val) : type === "vnode" && isObject$7(val) && "__v_isVNode" in val ? capitalize(val.children) : val;
19668    }
19669  };
19670}
19671let _compiler;
19672function registerMessageCompiler(compiler) {
19673  _compiler = compiler;
19674}
19675let _resolver;
19676function registerMessageResolver(resolver) {
19677  _resolver = resolver;
19678}
19679let _fallbacker;
19680function registerLocaleFallbacker(fallbacker) {
19681  _fallbacker = fallbacker;
19682}
19683let _additionalMeta = null;
19684const setAdditionalMeta = /* @__NO_SIDE_EFFECTS__ */ (meta) => {
19685  _additionalMeta = meta;
19686};
19687const getAdditionalMeta = /* @__NO_SIDE_EFFECTS__ */ () => _additionalMeta;
19688let _fallbackContext = null;
19689const setFallbackContext = (context) => {
19690  _fallbackContext = context;
19691};
19692const getFallbackContext = () => _fallbackContext;
19693let _cid = 0;
19694function createCoreContext(options2 = {}) {
19695  const onWarn = isFunction$2(options2.onWarn) ? options2.onWarn : warn;
19696  const version2 = isString$2(options2.version) ? options2.version : VERSION$4;
19697  const locale = isString$2(options2.locale) || isFunction$2(options2.locale) ? options2.locale : DEFAULT_LOCALE;
19698  const _locale = isFunction$2(locale) ? DEFAULT_LOCALE : locale;
19699  const fallbackLocale = isArray$2(options2.fallbackLocale) || isPlainObject$2(options2.fallbackLocale) || isString$2(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : _locale;
19700  const messages = isPlainObject$2(options2.messages) ? options2.messages : createResources(_locale);
19701  const datetimeFormats = isPlainObject$2(options2.datetimeFormats) ? options2.datetimeFormats : createResources(_locale);
19702  const numberFormats = isPlainObject$2(options2.numberFormats) ? options2.numberFormats : createResources(_locale);
19703  const modifiers = assign$1(create$1(), options2.modifiers, getDefaultLinkedModifiers());
19704  const pluralRules = options2.pluralRules || create$1();
19705  const missing = isFunction$2(options2.missing) ? options2.missing : null;
19706  const missingWarn = isBoolean$2(options2.missingWarn) || isRegExp$2(options2.missingWarn) ? options2.missingWarn : true;
19707  const fallbackWarn = isBoolean$2(options2.fallbackWarn) || isRegExp$2(options2.fallbackWarn) ? options2.fallbackWarn : true;
19708  const fallbackFormat = !!options2.fallbackFormat;
19709  const unresolving = !!options2.unresolving;
19710  const postTranslation = isFunction$2(options2.postTranslation) ? options2.postTranslation : null;
19711  const processor = isPlainObject$2(options2.processor) ? options2.processor : null;
19712  const warnHtmlMessage = isBoolean$2(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true;
19713  const escapeParameter = !!options2.escapeParameter;
19714  const messageCompiler = isFunction$2(options2.messageCompiler) ? options2.messageCompiler : _compiler;
19715  const messageResolver = isFunction$2(options2.messageResolver) ? options2.messageResolver : _resolver || resolveWithKeyValue;
19716  const localeFallbacker = isFunction$2(options2.localeFallbacker) ? options2.localeFallbacker : _fallbacker || fallbackWithSimple;
19717  const fallbackContext = isObject$7(options2.fallbackContext) ? options2.fallbackContext : void 0;
19718  const internalOptions = options2;
19719  const __datetimeFormatters = isObject$7(internalOptions.__datetimeFormatters) ? internalOptions.__datetimeFormatters : /* @__PURE__ */ new Map();
19720  const __numberFormatters = isObject$7(internalOptions.__numberFormatters) ? internalOptions.__numberFormatters : /* @__PURE__ */ new Map();
19721  const __meta = isObject$7(internalOptions.__meta) ? internalOptions.__meta : {};
19722  _cid++;
19723  const context = {
19724    version: version2,
19725    cid: _cid,
19726    locale,
19727    fallbackLocale,
19728    messages,
19729    modifiers,
19730    pluralRules,
19731    missing,
19732    missingWarn,
19733    fallbackWarn,
19734    fallbackFormat,
19735    unresolving,
19736    postTranslation,
19737    processor,
19738    warnHtmlMessage,
19739    escapeParameter,
19740    messageCompiler,
19741    messageResolver,
19742    localeFallbacker,
19743    fallbackContext,
19744    onWarn,
19745    __meta
19746  };
19747  {
19748    context.datetimeFormats = datetimeFormats;
19749    context.numberFormats = numberFormats;
19750    context.__datetimeFormatters = __datetimeFormatters;
19751    context.__numberFormatters = __numberFormatters;
19752  }
19753  if (__INTLIFY_PROD_DEVTOOLS__) {
19754    initI18nDevTools(context, version2, __meta);
19755  }
19756  return context;
19757}
19758const createResources = (locale) => ({ [locale]: create$1() });
19759function handleMissing(context, key, locale, missingWarn, type) {
19760  const { missing, onWarn } = context;
19761  if (missing !== null) {
19762    const ret = missing(context, locale, key, type);
19763    return isString$2(ret) ? ret : key;
19764  } else {
19765    return key;
19766  }
19767}
19768function updateFallbackLocale(ctx, locale, fallback) {
19769  const context = ctx;
19770  context.__localeChainCache = /* @__PURE__ */ new Map();
19771  ctx.localeFallbacker(ctx, fallback, locale);
19772}
19773function isAlmostSameLocale(locale, compareLocale) {
19774  if (locale === compareLocale)
19775    return false;
19776  return locale.split("-")[0] === compareLocale.split("-")[0];
19777}
19778function isImplicitFallback(targetLocale, locales) {
19779  const index2 = locales.indexOf(targetLocale);
19780  if (index2 === -1) {
19781    return false;
19782  }
19783  for (let i = index2 + 1; i < locales.length; i++) {
19784    if (isAlmostSameLocale(targetLocale, locales[i])) {
19785      return true;
19786    }
19787  }
19788  return false;
vendor: 8,858 bytes, lines 19789-20055
19789}
19790function datetime(context, ...args) {
19791  const { datetimeFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;
19792  const { __datetimeFormatters } = context;
19793  const [key, value, options2, overrides] = parseDateTimeArgs(...args);
19794  const missingWarn = isBoolean$2(options2.missingWarn) ? options2.missingWarn : context.missingWarn;
19795  isBoolean$2(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn;
19796  const part = !!options2.part;
19797  const locale = getLocale(context, options2);
19798  const locales = localeFallbacker(
19799    context,
19800    // eslint-disable-line @typescript-eslint/no-explicit-any
19801    fallbackLocale,
19802    locale
19803  );
19804  if (!isString$2(key) || key === "") {
19805    return new Intl.DateTimeFormat(locale, overrides).format(value);
19806  }
19807  let datetimeFormat = {};
19808  let targetLocale;
19809  let format2 = null;
19810  const type = "datetime format";
19811  for (let i = 0; i < locales.length; i++) {
19812    targetLocale = locales[i];
19813    datetimeFormat = datetimeFormats[targetLocale] || {};
19814    format2 = datetimeFormat[key];
19815    if (isPlainObject$2(format2))
19816      break;
19817    handleMissing(context, key, targetLocale, missingWarn, type);
19818  }
19819  if (!isPlainObject$2(format2) || !isString$2(targetLocale)) {
19820    return unresolving ? NOT_REOSLVED : key;
19821  }
19822  let id = `${targetLocale}__${key}`;
19823  if (!isEmptyObject$1(overrides)) {
19824    id = `${id}__${JSON.stringify(overrides)}`;
19825  }
19826  let formatter = __datetimeFormatters.get(id);
19827  if (!formatter) {
19828    formatter = new Intl.DateTimeFormat(targetLocale, assign$1({}, format2, overrides));
19829    __datetimeFormatters.set(id, formatter);
19830  }
19831  return !part ? formatter.format(value) : formatter.formatToParts(value);
19832}
19833const DATETIME_FORMAT_OPTIONS_KEYS = [
19834  "localeMatcher",
19835  "weekday",
19836  "era",
19837  "year",
19838  "month",
19839  "day",
19840  "hour",
19841  "minute",
19842  "second",
19843  "timeZoneName",
19844  "formatMatcher",
19845  "hour12",
19846  "timeZone",
19847  "dateStyle",
19848  "timeStyle",
19849  "calendar",
19850  "dayPeriod",
19851  "numberingSystem",
19852  "hourCycle",
19853  "fractionalSecondDigits"
19854];
19855function parseDateTimeArgs(...args) {
19856  const [arg1, arg2, arg3, arg4] = args;
19857  const options2 = create$1();
19858  let overrides = create$1();
19859  let value;
19860  if (isString$2(arg1)) {
19861    const matches2 = arg1.match(/(\d{4}-\d{2}-\d{2})(T|\s)?(.*)/);
19862    if (!matches2) {
19863      throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
19864    }
19865    const dateTime = matches2[3] ? matches2[3].trim().startsWith("T") ? `${matches2[1].trim()}${matches2[3].trim()}` : `${matches2[1].trim()}T${matches2[3].trim()}` : matches2[1].trim();
19866    value = new Date(dateTime);
19867    try {
19868      value.toISOString();
19869    } catch {
19870      throw createCoreError(CoreErrorCodes.INVALID_ISO_DATE_ARGUMENT);
19871    }
19872  } else if (isDate$1(arg1)) {
19873    if (isNaN(arg1.getTime())) {
19874      throw createCoreError(CoreErrorCodes.INVALID_DATE_ARGUMENT);
19875    }
19876    value = arg1;
19877  } else if (isNumber$2(arg1)) {
19878    value = arg1;
19879  } else {
19880    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
19881  }
19882  if (isString$2(arg2)) {
19883    options2.key = arg2;
19884  } else if (isPlainObject$2(arg2)) {
19885    Object.keys(arg2).forEach((key) => {
19886      if (DATETIME_FORMAT_OPTIONS_KEYS.includes(key)) {
19887        overrides[key] = arg2[key];
19888      } else {
19889        options2[key] = arg2[key];
19890      }
19891    });
19892  }
19893  if (isString$2(arg3)) {
19894    options2.locale = arg3;
19895  } else if (isPlainObject$2(arg3)) {
19896    overrides = arg3;
19897  }
19898  if (isPlainObject$2(arg4)) {
19899    overrides = arg4;
19900  }
19901  return [options2.key || "", value, options2, overrides];
19902}
19903function clearDateTimeFormat(ctx, locale, format2) {
19904  const context = ctx;
19905  for (const key in format2) {
19906    const id = `${locale}__${key}`;
19907    if (!context.__datetimeFormatters.has(id)) {
19908      continue;
19909    }
19910    context.__datetimeFormatters.delete(id);
19911  }
19912}
19913function number(context, ...args) {
19914  const { numberFormats, unresolving, fallbackLocale, onWarn, localeFallbacker } = context;
19915  const { __numberFormatters } = context;
19916  const [key, value, options2, overrides] = parseNumberArgs(...args);
19917  const missingWarn = isBoolean$2(options2.missingWarn) ? options2.missingWarn : context.missingWarn;
19918  isBoolean$2(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn;
19919  const part = !!options2.part;
19920  const locale = getLocale(context, options2);
19921  const locales = localeFallbacker(
19922    context,
19923    // eslint-disable-line @typescript-eslint/no-explicit-any
19924    fallbackLocale,
19925    locale
19926  );
19927  if (!isString$2(key) || key === "") {
19928    return new Intl.NumberFormat(locale, overrides).format(value);
19929  }
19930  let numberFormat = {};
19931  let targetLocale;
19932  let format2 = null;
19933  const type = "number format";
19934  for (let i = 0; i < locales.length; i++) {
19935    targetLocale = locales[i];
19936    numberFormat = numberFormats[targetLocale] || {};
19937    format2 = numberFormat[key];
19938    if (isPlainObject$2(format2))
19939      break;
19940    handleMissing(context, key, targetLocale, missingWarn, type);
19941  }
19942  if (!isPlainObject$2(format2) || !isString$2(targetLocale)) {
19943    return unresolving ? NOT_REOSLVED : key;
19944  }
19945  let id = `${targetLocale}__${key}`;
19946  if (!isEmptyObject$1(overrides)) {
19947    id = `${id}__${JSON.stringify(overrides)}`;
19948  }
19949  let formatter = __numberFormatters.get(id);
19950  if (!formatter) {
19951    formatter = new Intl.NumberFormat(targetLocale, assign$1({}, format2, overrides));
19952    __numberFormatters.set(id, formatter);
19953  }
19954  return !part ? formatter.format(value) : formatter.formatToParts(value);
19955}
19956const NUMBER_FORMAT_OPTIONS_KEYS = [
19957  "localeMatcher",
19958  "style",
19959  "currency",
19960  "currencyDisplay",
19961  "currencySign",
19962  "useGrouping",
19963  "minimumIntegerDigits",
19964  "minimumFractionDigits",
19965  "maximumFractionDigits",
19966  "minimumSignificantDigits",
19967  "maximumSignificantDigits",
19968  "compactDisplay",
19969  "notation",
19970  "signDisplay",
19971  "unit",
19972  "unitDisplay",
19973  "roundingMode",
19974  "roundingPriority",
19975  "roundingIncrement",
19976  "trailingZeroDisplay"
19977];
19978function parseNumberArgs(...args) {
19979  const [arg1, arg2, arg3, arg4] = args;
19980  const options2 = create$1();
19981  let overrides = create$1();
19982  if (!isNumber$2(arg1)) {
19983    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
19984  }
19985  const value = arg1;
19986  if (isString$2(arg2)) {
19987    options2.key = arg2;
19988  } else if (isPlainObject$2(arg2)) {
19989    Object.keys(arg2).forEach((key) => {
19990      if (NUMBER_FORMAT_OPTIONS_KEYS.includes(key)) {
19991        overrides[key] = arg2[key];
19992      } else {
19993        options2[key] = arg2[key];
19994      }
19995    });
19996  }
19997  if (isString$2(arg3)) {
19998    options2.locale = arg3;
19999  } else if (isPlainObject$2(arg3)) {
20000    overrides = arg3;
20001  }
20002  if (isPlainObject$2(arg4)) {
20003    overrides = arg4;
20004  }
20005  return [options2.key || "", value, options2, overrides];
20006}
20007function clearNumberFormat(ctx, locale, format2) {
20008  const context = ctx;
20009  for (const key in format2) {
20010    const id = `${locale}__${key}`;
20011    if (!context.__numberFormatters.has(id)) {
20012      continue;
20013    }
20014    context.__numberFormatters.delete(id);
20015  }
20016}
20017const DEFAULT_MODIFIER = (str) => str;
20018const DEFAULT_MESSAGE = (ctx) => "";
20019const DEFAULT_MESSAGE_DATA_TYPE = "text";
20020const DEFAULT_NORMALIZE = (values) => values.length === 0 ? "" : join(values);
20021const DEFAULT_INTERPOLATE = toDisplayString;
20022function pluralDefault(choice, choicesLength) {
20023  choice = Math.abs(choice);
20024  if (choicesLength === 2) {
20025    return choice ? choice > 1 ? 1 : 0 : 1;
20026  }
20027  return choice ? Math.min(choice, 2) : 0;
20028}
20029function getPluralIndex(options2) {
20030  const index2 = isNumber$2(options2.pluralIndex) ? options2.pluralIndex : -1;
20031  return options2.named && (isNumber$2(options2.named.count) || isNumber$2(options2.named.n)) ? isNumber$2(options2.named.count) ? options2.named.count : isNumber$2(options2.named.n) ? options2.named.n : index2 : index2;
20032}
20033function normalizeNamed(pluralIndex, props2) {
20034  if (!props2.count) {
20035    props2.count = pluralIndex;
20036  }
20037  if (!props2.n) {
20038    props2.n = pluralIndex;
20039  }
20040}
20041function createMessageContext(options2 = {}) {
20042  const locale = options2.locale;
20043  const pluralIndex = getPluralIndex(options2);
20044  const pluralRule = isObject$7(options2.pluralRules) && isString$2(locale) && isFunction$2(options2.pluralRules[locale]) ? options2.pluralRules[locale] : pluralDefault;
20045  const orgPluralRule = isObject$7(options2.pluralRules) && isString$2(locale) && isFunction$2(options2.pluralRules[locale]) ? pluralDefault : void 0;
20046  const plural = (messages) => {
20047    return messages[pluralRule(pluralIndex, messages.length, orgPluralRule)];
20048  };
20049  const _list = options2.list || [];
20050  const list = (index2) => _list[index2];
20051  const _named = options2.named || create$1();
20052  isNumber$2(options2.pluralIndex) && normalizeNamed(pluralIndex, _named);
20053  const named = (key) => _named[key];
20054  function message(key, useLinked) {
20055    const msg = isFunction$2(options2.messages) ? options2.messages(key, !!useLinked) : isObject$7(options2.messages) ? options2.messages[key] : false;
20056    return !msg ? options2.parent ? options2.parent.message(key) : DEFAULT_MESSAGE : msg;
20057  }
20058  const _modifier = (name) => options2.modifiers ? options2.modifiers[name] : DEFAULT_MODIFIER;
20059  const normalize = isPlainObject$2(options2.processor) && isFunction$2(options2.processor.normalize) ? options2.processor.normalize : DEFAULT_NORMALIZE;
20060  const interpolate = isPlainObject$2(options2.processor) && isFunction$2(options2.processor.interpolate) ? options2.processor.interpolate : DEFAULT_INTERPOLATE;
20061  const type = isPlainObject$2(options2.processor) && isString$2(options2.processor.type) ? options2.processor.type : DEFAULT_MESSAGE_DATA_TYPE;
20062  const linked = (key, ...args) => {
20063    const [arg1, arg2] = args;
20064    let type2 = "text";
20065    let modifier = "";
20066    if (args.length === 1) {
20067      if (isObject$7(arg1)) {
20068        modifier = arg1.modifier || modifier;
20069        type2 = arg1.type || type2;
20070      } else if (isString$2(arg1)) {
20071        modifier = arg1 || modifier;
20072      }
20073    } else if (args.length === 2) {
20074      if (isString$2(arg1)) {
20075        modifier = arg1 || modifier;
20076      }
20077      if (isString$2(arg2)) {
20078        type2 = arg2 || type2;
20079      }
20080    }
20081    const ret = message(key, true)(ctx);
20082    const msg = (
20083      // The message in vnode resolved with linked are returned as an array by processor.nomalize
20084      type2 === "vnode" && isArray$2(ret) && modifier ? ret[0] : ret
20085    );
20086    return modifier ? _modifier(modifier)(msg, type2) : msg;
20087  };
20088  const ctx = {
20089    [
20090      "list"
20091      /* HelperNameMap.LIST */
20092    ]: list,
20093    [
20094      "named"
20095      /* HelperNameMap.NAMED */
20096    ]: named,
20097    [
20098      "plural"
20099      /* HelperNameMap.PLURAL */
20100    ]: plural,
20101    [
20102      "linked"
20103      /* HelperNameMap.LINKED */
20104    ]: linked,
20105    [
20106      "message"
20107      /* HelperNameMap.MESSAGE */
20108    ]: message,
20109    [
20110      "type"
20111      /* HelperNameMap.TYPE */
20112    ]: type,
20113    [
20114      "interpolate"
20115      /* HelperNameMap.INTERPOLATE */
20116    ]: interpolate,
20117    [
20118      "normalize"
20119      /* HelperNameMap.NORMALIZE */
20120    ]: normalize,
20121    [
20122      "values"
20123      /* HelperNameMap.VALUES */
20124    ]: assign$1(create$1(), _list, _named)
20125  };
20126  return ctx;
20127}
20128const NOOP_MESSAGE_FUNCTION = () => "";
20129const isMessageFunction = (val) => isFunction$2(val);
20130function translate$1(context, ...args) {
20131  const { fallbackFormat, postTranslation, unresolving, messageCompiler, fallbackLocale, messages } = context;
20132  const [key, options2] = parseTranslateArgs(...args);
20133  const missingWarn = isBoolean$2(options2.missingWarn) ? options2.missingWarn : context.missingWarn;
20134  const fallbackWarn = isBoolean$2(options2.fallbackWarn) ? options2.fallbackWarn : context.fallbackWarn;
20135  const escapeParameter = isBoolean$2(options2.escapeParameter) ? options2.escapeParameter : context.escapeParameter;
20136  const resolvedMessage = !!options2.resolvedMessage;
20137  const defaultMsgOrKey = isString$2(options2.default) || isBoolean$2(options2.default) ? !isBoolean$2(options2.default) ? options2.default : !messageCompiler ? () => key : key : fallbackFormat ? !messageCompiler ? () => key : key : null;
20138  const enableDefaultMsg = fallbackFormat || defaultMsgOrKey != null && (isString$2(defaultMsgOrKey) || isFunction$2(defaultMsgOrKey));
20139  const locale = getLocale(context, options2);
20140  escapeParameter && escapeParams(options2);
20141  let [formatScope, targetLocale, message] = !resolvedMessage ? resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) : [
20142    key,
20143    locale,
20144    messages[locale] || create$1()
20145  ];
20146  let format2 = formatScope;
20147  let cacheBaseKey = key;
20148  if (!resolvedMessage && !(isString$2(format2) || isMessageAST(format2) || isMessageFunction(format2))) {
20149    if (enableDefaultMsg) {
20150      format2 = defaultMsgOrKey;
20151      cacheBaseKey = format2;
20152    }
20153  }
20154  if (!resolvedMessage && (!(isString$2(format2) || isMessageAST(format2) || isMessageFunction(format2)) || !isString$2(targetLocale))) {
20155    return unresolving ? NOT_REOSLVED : key;
20156  }
20157  let occurred = false;
20158  const onError = () => {
20159    occurred = true;
20160  };
20161  const msg = !isMessageFunction(format2) ? compileMessageFormat(context, key, targetL
20161ocale, format2, cacheBaseKey, onError) : format2;
20162  if (occurred) {
20163    return format2;
20164  }
20165  const ctxOptions = getMessageContextOptions(context, targetLocale, message, options2);
20166  const msgContext = createMessageContext(ctxOptions);
20167  const messaged = evaluateMessage(context, msg, msgContext);
20168  const ret = postTranslation ? postTranslation(messaged, key) : messaged;
20169  if (__INTLIFY_PROD_DEVTOOLS__) {
20170    const payloads = {
20171      timestamp: Date.now(),
20172      key: isString$2(key) ? key : isMessageFunction(format2) ? format2.key : "",
20173      locale: targetLocale || (isMessageFunction(format2) ? format2.locale : ""),
20174      format: isString$2(format2) ? format2 : isMessageFunction(format2) ? format2.source : "",
20175      message: ret
20176    };
20177    payloads.meta = assign$1({}, context.__meta, /* @__PURE__ */ getAdditionalMeta() || {});
20178    translateDevTools(payloads);
20179  }
20180  return ret;
20181}
20182function escapeParams(options2) {
20183  if (isArray$2(options2.list)) {
20184    options2.list = options2.list.map((item) => isString$2(item) ? escapeHtml(item) : item);
20185  } else if (isObject$7(options2.named)) {
20186    Object.keys(options2.named).forEach((key) => {
20187      if (isString$2(options2.named[key])) {
20188        options2.named[key] = escapeHtml(options2.named[key]);
20189      }
20190    });
20191  }
20192}
20193function resolveMessageFormat(context, key, locale, fallbackLocale, fallbackWarn, missingWarn) {
20194  const { messages, onWarn, messageResolver: resolveValue2, localeFallbacker } = context;
20195  const locales = localeFallbacker(context, fallbackLocale, locale);
20196  let message = create$1();
20197  let targetLocale;
20198  let format2 = null;
20199  const type = "translate";
20200  for (let i = 0; i < locales.length; i++) {
20201    targetLocale = locales[i];
20202    message = messages[targetLocale] || create$1();
20203    if ((format2 = resolveValue2(message, key)) === null) {
20204      format2 = message[key];
20205    }
20206    if (isString$2(format2) || isMessageAST(format2) || isMessageFunction(format2)) {
20207      break;
20208    }
20209    if (!isImplicitFallback(targetLocale, locales)) {
20210      const missingRet = handleMissing(
20211        context,
20212        // eslint-disable-line @typescript-eslint/no-explicit-any
20213        key,
20214        targetLocale,
20215        missingWarn,
20216        type
20217      );
20218      if (missingRet !== key) {
20219        format2 = missingRet;
20220      }
20221    }
20222  }
20223  return [format2, targetLocale, message];
20224}
20225function compileMessageFormat(context, key, targetLocale, format2, cacheBaseKey, onError) {
20226  const { messageCompiler, warnHtmlMessage } = context;
20227  if (isMessageFunction(format2)) {
20228    const msg2 = format2;
20229    msg2.locale = msg2.locale || targetLocale;
20230    msg2.key = msg2.key || key;
20231    return msg2;
20232  }
20233  if (messageCompiler == null) {
20234    const msg2 = () => format2;
20235    msg2.locale = targetLocale;
20236    msg2.key = key;
20237    return msg2;
20238  }
20239  const msg = messageCompiler(format2, getCompileContext(context, targetLocale, cacheBaseKey, format2, warnHtmlMessage, onError));
20240  msg.locale = targetLocale;
20241  msg.key = key;
20242  msg.source = format2;
20243  return msg;
20244}
20245function evaluateMessage(context, msg, msgCtx) {
20246  const messaged = msg(msgCtx);
20247  return messaged;
20248}
20249function parseTranslateArgs(...args) {
20250  const [arg1, arg2, arg3] = args;
20251  const options2 = create$1();
20252  if (!isString$2(arg1) && !isNumber$2(arg1) && !isMessageFunction(arg1) && !isMessageAST(arg1)) {
20253    throw createCoreError(CoreErrorCodes.INVALID_ARGUMENT);
20254  }
20255  const key = isNumber$2(arg1) ? String(arg1) : isMessageFunction(arg1) ? arg1 : arg1;
20256  if (isNumber$2(arg2)) {
20257    options2.plural = arg2;
20258  } else if (isString$2(arg2)) {
20259    options2.default = arg2;
20260  } else if (isPlainObject$2(arg2) && !isEmptyObject$1(arg2)) {
20261    options2.named = arg2;
20262  } else if (isArray$2(arg2)) {
20263    options2.list = arg2;
20264  }
20265  if (isNumber$2(arg3)) {
20266    options2.plural = arg3;
20267  } else if (isString$2(arg3)) {
20268    options2.default = arg3;
20269  } else if (isPlainObject$2(arg3)) {
20270    assign$1(options2, arg3);
20271  }
20272  return [key, options2];
20273}
20274function getCompileContext(context, locale, key, source, warnHtmlMessage, onError) {
20275  return {
20276    locale,
20277    key,
20278    warnHtmlMessage,
20279    onError: (err) => {
20280      onError && onError(err);
20281      {
20282        throw err;
20283      }
20284    },
20285    onCacheKey: (source2) => generateFormatCacheKey(locale, key, source2)
20286  };
20287}
20288function getMessageContextOptions(context, locale, message, options2) {
20289  const { modifiers, pluralRules, messageResolver: resolveValue2, fallbackLocale, fallbackWarn, missingWarn, fallbackContext } = context;
20290  const resolveMessage = (key, useLinked) => {
20291    let val = resolveValue2(message, key);
20292    if (val == null && (fallbackContext || useLinked)) {
20293      const [, , message2] = resolveMessageFormat(
20294        fallbackContext || context,
20295        // NOTE: if has fallbackContext, fallback to root, else if use linked, fallback to local context
20296        key,
20297        locale,
20298        fallbackLocale,
20299        fallbackWarn,
20300        missingWarn
20301      );
20302      val = resolveValue2(message2, key);
20303    }
20304    if (isString$2(val) || isMessageAST(val)) {
20305      let occurred = false;
20306      const onError = () => {
20307        occurred = true;
20308      };
20309      const msg = compileMessageFormat(context, key, locale, val, key, onError);
20310      return !occurred ? msg : NOOP_MESSAGE_FUNCTION;
20311    } else if (isMessageFunction(val)) {
20312      return val;
20313    } else {
20314      return NOOP_MESSAGE_FUNCTION;
20315    }
20316  };
20317  const ctxOptions = {
20318    locale,
20319    modifiers,
20320    pluralRules,
20321    messages: resolveMessage
20322  };
20323  if (context.processor) {
20324    ctxOptions.processor = context.processor;
20325  }
20326  if (options2.list) {
20327    ctxOptions.list = options2.list;
20328  }
20329  if (options2.named) {
20330    ctxOptions.named = options2.named;
20331  }
20332  if (isNumber$2(options2.plural)) {
20333    ctxOptions.pluralIndex = options2.plural;
20334  }
20335  return ctxOptions;
20336}
20337{
20338  initFeatureFlags$1();
20339}
20340/*!
20341  * shared v11.1.5
20342  * (c) 2025 kazuya kawaguchi
20343  * Released under the MIT License.
20344  */
20345const inBrowser = typeof window !== "undefined";
20346const makeSymbol = (name, shareable = false) => !shareable ? Symbol(name) : Symbol.for(name);
20347const isNumber$1 = (val) => typeof val === "number" && isFinite(val);
20348const isRegExp$1 = (val) => toTypeString(val) === "[object RegExp]";
20349const isEmptyObject = (val) => isPlainObject$1(val) && Object.keys(val).length === 0;
20350const assign = Object.assign;
20351const _create = Object.create;
20352const create = (obj = null) => _create(obj);
20353let _globalThis;
20354const getGlobalThis = () => {
20355  return _globalThis || (_globalThis = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : create());
20356};
20357const hasOwnProperty$1 = Object.prototype.hasOwnProperty;
20358function hasOwn(obj, key) {
20359  return hasOwnProperty$1.call(obj, key);
20360}
20361const isArray$1 = Array.isArray;
20362const isFunction$1 = (val) => typeof val === "function";
20363const isString$1 = (val) => typeof val === "string";
20364const isBoolean$1 = (val) => typeof val === "boolean";
20365const isObject$6 = (val) => val !== null && typeof val === "object";
20366const objectToString$2 = Object.prototype.toString;
20367const toTypeString = (value) => objectToString$2.call(value);
20368const isPlainObject$1 = (val) => toTypeString(val) === "[object Object]";
20369const isNotObjectOrIsArray = (val) => !isObject$6(val) || isArray$1(val);
20370function deepCopy(src, des) {
20371  if (isNotObjectOrIsArray(src) || isNotObjectOrIsArray(des)) {
20372    throw new Error("Invalid value");
20373  }
20374  const stack2 = [{ src, des }];
20375  while (stack2.length) {
20376    const { src: src2, des: des2 } = stack2.pop();
20377    Object.keys(src2).forEach((key) => {
20378      if (key === "__proto__") {
20379        return;
20380      }
20381      if (isObject$6(src2[key]) && !isObject$6(des2[key])) {
20382        des2[key] = Array.isArray(src2[key]) ? [] : create();
20383      }
20384      if (isNotObjectOrIsArray(des2[key]) || isNotObjectOrIsArray(src2[key])) {
20385        des2[key] = src2[key];
20386      } else {
20387        stack2.push({ src: src2[key], des: des2[key] });
20388      }
20389    });
20390  }
20391}
20392/*!
20393  * vue-i18n v11.1.5
20394  * (c) 2025 kazuya kawaguchi
20395  * Released under the MIT License.
20396  */
20397const VERSION$3 = "11.1.5";
20398function initFeatureFlags() {
20399  if (typeof __INTLIFY_PROD_DEVTOOLS__ !== "boolean") {
20400    getGlobalThis().__INTLIFY_PROD_DEVTOOLS__ = false;
20401  }
20402}
20403const I18nErrorCodes = {
20404  // composer module errors
20405  UNEXPECTED_RETURN_TYPE: CORE_ERROR_CODES_EXTEND_POINT,
20406  // 24
20407  // legacy module errors
20408  INVALID_ARGUMENT: 25,
20409  // i18n module errors
20410  MUST_BE_CALL_SETUP_TOP: 26,
20411  NOT_INSTALLED: 27,
20412  // directive module errors
20413  REQUIRED_VALUE: 28,
20414  INVALID_VALUE: 29,
20415  NOT_INSTALLED_WITH_PROVIDE: 31,
20416  // unexpected error
20417  UNEXPECTED_ERROR: 32
20418};
20419function createI18nError(code, ...args) {
20420  return createCompileError(code, null, void 0);
20421}
20422const TranslateVNodeSymbol = /* @__PURE__ */ makeSymbol("__translateVNode");
20423const DatetimePartsSymbol = /* @__PURE__ */ makeSymbol("__datetimeParts");
20424const NumberPartsSymbol = /* @__PURE__ */ makeSymbol("__numberParts");
20425const SetPluralRulesSymbol = makeSymbol("__setPluralRules");
20426const InejctWithOptionSymbol = /* @__PURE__ */ makeSymbol("__injectWithOption");
20427const DisposeSymbol = /* @__PURE__ */ makeSymbol("__dispose");
20428function handleFlatJson(obj) {
20429  if (!isObject$6(obj)) {
20430    return obj;
20431  }
20432  if (isMessageAST(obj)) {
20433    return obj;
20434  }
20435  for (const key in obj) {
20436    if (!hasOwn(obj, key)) {
20437      continue;
20438    }
20439    if (!key.includes(".")) {
20440      if (isObject$6(obj[key])) {
20441        handleFlatJson(obj[key]);
20442      }
20443    } else {
20444      const subKeys = key.split(".");
20445      const lastIndex = subKeys.length - 1;
20446      let currentObj = obj;
20447      let hasStringValue = false;
20448      for (let i = 0; i < lastIndex; i++) {
20449        if (subKeys[i] === "__proto__") {
20450          throw new Error(`unsafe key: ${subKeys[i]}`);
20451        }
20452        if (!(subKeys[i] in currentObj)) {
20453          currentObj[subKeys[i]] = create();
20454        }
20455        if (!isObject$6(currentObj[subKeys[i]])) {
20456          hasStringValue = true;
20457          break;
20458        }
20459        currentObj = currentObj[subKeys[i]];
20460      }
20461      if (!hasStringValue) {
20462        if (!isMessageAST(currentObj)) {
20463          currentObj[subKeys[lastIndex]] = obj[key];
20464          delete obj[key];
20465        } else {
20466          if (!AST_NODE_PROPS_KEYS.includes(subKeys[lastIndex])) {
20467            delete obj[key];
20468          }
20469        }
20470      }
20471      if (!isMessageAST(currentObj)) {
20472        const target = currentObj[subKeys[lastIndex]];
20473        if (isObject$6(target)) {
20474          handleFlatJson(target);
20475        }
20476      }
20477    }
20478  }
20479  return obj;
20480}
20481function getLocaleMessages(locale, options2) {
20482  const { messages, __i18n, messageResolver, flatJson } = options2;
20483  const ret = isPlainObject$1(messages) ? messages : isArray$1(__i18n) ? create() : { [locale]: create() };
20484  if (isArray$1(__i18n)) {
20485    __i18n.forEach((custom) => {
20486      if ("locale" in custom && "resource" in custom) {
20487        const { locale: locale2, resource } = custom;
20488        if (locale2) {
20489          ret[locale2] = ret[locale2] || create();
20490          deepCopy(resource, ret[locale2]);
20491        } else {
20492          deepCopy(resource, ret);
20493        }
20494      } else {
20495        isString$1(custom) && deepCopy(JSON.parse(custom), ret);
20496      }
20497    });
20498  }
20499  if (messageResolver == null && flatJson) {
20500    for (const key in ret) {
20501      if (hasOwn(ret, key)) {
20502        handleFlatJson(ret[key]);
20503      }
20504    }
20505  }
20506  return ret;
20507}
20508function getComponentOptions(instance) {
20509  return instance.type;
20510}
20511function adjustI18nResources(gl, options2, componentOptions) {
20512  let messages = isObject$6(options2.messages) ? options2.messages : create();
20513  if ("__i18nGlobal" in componentOptions) {
20514    messages = getLocaleMessages(gl.locale.value, {
20515      messages,
20516      __i18n: componentOptions.__i18nGlobal
20517    });
20518  }
20519  const locales = Object.keys(messages);
20520  if (locales.length) {
20521    locales.forEach((locale) => {
20522      gl.mergeLocaleMessage(locale, messages[locale]);
20523    });
20524  }
20525  {
20526    if (isObject$6(options2.datetimeFormats)) {
20527      const locales2 = Object.keys(options2.datetimeFormats);
20528      if (locales2.length) {
20529        locales2.forEach((locale) => {
20530          gl.mergeDateTimeFormat(locale, options2.datetimeFormats[locale]);
20531        });
20532      }
20533    }
20534    if (isObject$6(options2.numberFormats)) {
20535      const locales2 = Object.keys(options2.numberFormats);
20536      if (locales2.length) {
20537        locales2.forEach((locale) => {
20538          gl.mergeNumberFormat(locale, options2.numberFormats[locale]);
20539        });
20540      }
20541    }
20542  }
20543}
20544function createTextNode(key) {
20545  return createVNode(Text, null, key, 0);
20546}
20547const DEVTOOLS_META = "__INTLIFY_META__";
20548const NOOP_RETURN_ARRAY = () => [];
20549const NOOP_RETURN_FALSE = () => false;
20550let composerID = 0;
20551function defineCoreMissingHandler(missing) {
20552  return (ctx, locale, key, type) => {
20553    return missing(locale, key, getCurrentInstance() || void 0, type);
20554  };
20555}
20556const getMetaInfo = /* @__NO_SIDE_EFFECTS__ */ () => {
20557  const instance = getCurrentInstance();
20558  let meta = null;
20559  return instance && (meta = getComponentOptions(instance)[DEVTOOLS_META]) ? { [DEVTOOLS_META]: meta } : null;
20560};
20561function createComposer(options2 = {}) {
20562  const { __root, __injectWithOption } = options2;
20563  const _isGlobal = __root === void 0;
20564  const flatJson = options2.flatJson;
20565  const _ref = inBrowser ? ref : shallowRef;
20566  let _inheritLocale = isBoolean$1(options2.inheritLocale) ? options2.inheritLocale : true;
20567  const _locale = _ref(
20568    // prettier-ignore
20569    __root && _inheritLocale ? __root.locale.value : isString$1(options2.locale) ? options2.locale : DEFAULT_LOCALE
20570  );
20571  const _fallbackLocale = _ref(
20572    // prettier-ignore
20573    __root && _inheritLocale ? __root.fallbackLocale.value : isString$1(options2.fallbackLocale) || isArray$1(options2.fallbackLocale) || isPlainObject$1(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : _locale.value
20574  );
20575  const _messages = _ref(getLocaleMessages(_locale.value, options2));
20576  const _datetimeFormats = _ref(isPlainObject$1(options2.datetimeFormats) ? options2.datetimeFormats : { [_locale.value]: {} });
20577  const _numberFormats = _ref(isPlainObject$1(options2.numberFormats) ? options2.numberFormats : { [_locale.value]: {} });
20578  let _missingWarn = __root ? __root.missingWarn : isBoolean$1(options2.missingWarn) || isRegExp$1(options2.missingWarn) ? options2.missingWarn : true;
20579  let _fallbackWarn = __root ? __root.fallbackWarn : isBoolean$1(options2.fallbackWarn) || isRegExp$1(options2.fallbackWarn) ? options2.fallbackWarn : true;
20580  let _fallbackRoot = __root ? __root.fallbackRoot : isBoolean$1(options2.fallbackRoot) ? options2.fallbackRoot : true;
20581  let _fallbackFormat = !!options2.fallbackFormat;
20582  let _missing = isFunction$1(options2.missing) ? options2.missing : null;
20583  let _runtimeMissing = isFunction$1(options2.missing) ? defineCoreMissingHandler(options2.missing) : null;
20584  let _postTranslation = isFunction$1(options2.postTranslation) ? options2.postTranslation : null;
20585  let _warnHtmlMessage = __root ? __root.warnHtmlMessage : isBoolean$1(options2.warnHtmlMessage) ? options2.warnHtmlMessage : true;
20586  let _escapeParameter = !!options2.escapeParameter;
20587  const _modifiers = __root ? __root.modifiers : isPlainObject$1(options2.modifiers) ? options2.modifiers : {};
20588  let _pluralRules = options2.pluralRules || __root && __root.pluralRules;
20589  let _context;
20590  const getCoreContext = () => {
20591    _isGlobal && setFallbackContext(null);
20592    const ctxOptions = {
20593      version: VERSION$3,
20594      locale: _locale.value,
20595      fallbackLocale: _fallbackLocale.value,
20596      messages: _messages.value,
20597      modifiers: _modifiers,
20598      pluralRules: _pluralRules,
20599      missing: _runtimeMissing === null ? void 0 : _runtimeMissing,
20600      missingWarn: _missingWarn,
20601      fallbackWarn: _fallbackWarn,
20602      fallbackFormat: _fallbackFormat,
20603      unresolving: true,
20604      postTranslation: _postTranslation === null ? void 0 : _postTranslation,
20605      warnHtmlMessage: _warnHtmlMessage,
20606      escapeParameter: _escapeParameter,
20607      messageResolver: options2.messageResolver,
20608      messageCompiler: options2.messageCompiler,
20609      __meta: { framework: "vue" }
20610    };
20611    {
20612      ctxOptions.datetimeFormats = _datetimeFormats.value;
20613      ctxOptions.numberFormats = _numberFormats.value;
20614      ctxOptions.__datetimeFormatters = isPlainObject$1(_context) ? _context.__datetimeFormatters : void 0;
20615      ctxOptions.__numberFormatters = isPlainObject$1(_context) ? _context.__numberFormatters : void 0;
20616    }
20617    const ctx = createCoreContext(ctxOptions);
20618    _isGlobal && setFallbackContext(ctx);
20619    return ctx;
20620  };
20621  _context = getCoreContext();
20622  updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
20623  function trackReactivityValues() {
20624    return [
20625      _locale.value,
20626      _fallbackLocale.value,
20627      _messages.value,
20628      _datetimeFormats.value,
20629      _numberFormats.value
20630    ];
20631  }
20632  const locale = computed({
20633    get: () => _locale.value,
20634    set: (val) => {
20635      _context.locale = val;
20636      _locale.value = val;
20637    }
20638  });
20639  const fallbackLocale = computed({
20640    get: () => _fallbackLocale.value,
20641    set: (val) => {
20642      _context.fallbackLocale = val;
20643      _fallbackLocale.value = val;
20644      updateFallbackLocale(_context, _locale.value, val);
20645    }
20646  });
20647  const messages = computed(() => _messages.value);
20648  const datetimeFormats = /* @__PURE__ */ computed(() => _datetimeFormats.value);
20649  const numberFormats = /* @__PURE__ */ computed(() => _numberFormats.value);
20650  function getPostTranslationHandler() {
20651    return isFunction$1(_postTranslation) ? _postTranslation : null;
20652  }
20653  function setPostTranslationHandler(handler) {
20654    _postTranslation = handler;
20655    _context.postTranslation = handler;
20656  }
20657  function getMissingHandler() {
20658    return _missing;
20659  }
20660  function setMissingHandler(handler) {
20661    if (handler !== null) {
20662      _runtimeMissing = defineCoreMissingHandler(handler);
20663    }
20664    _missing = handler;
20665    _context.missing = _runtimeMissing;
20666  }
20667  const wrapWithDeps = (fn, argumentParser, warnType, fallbackSuccess, fallbackFail, successCondition) => {
20668    trackReactivityValues();
20669    let ret;
20670    try {
20671      if (__INTLIFY_PROD_DEVTOOLS__) {
vendor: 8,710 bytes, lines 20672-20915
20672        /* @__PURE__ */ setAdditionalMeta(/* @__PURE__ */ getMetaInfo());
20673      }
20674      if (!_isGlobal) {
20675        _context.fallbackContext = __root ? getFallbackContext() : void 0;
20676      }
20677      ret = fn(_context);
20678    } finally {
20679      if (__INTLIFY_PROD_DEVTOOLS__) ;
20680      if (!_isGlobal) {
20681        _context.fallbackContext = void 0;
20682      }
20683    }
20684    if (warnType !== "translate exists" && // for not `te` (e.g `t`)
20685    isNumber$1(ret) && ret === NOT_REOSLVED || warnType === "translate exists" && !ret) {
20686      const [key, arg2] = argumentParser();
20687      return __root && _fallbackRoot ? fallbackSuccess(__root) : fallbackFail(key);
20688    } else if (successCondition(ret)) {
20689      return ret;
20690    } else {
20691      throw createI18nError(I18nErrorCodes.UNEXPECTED_RETURN_TYPE);
20692    }
20693  };
20694  function t(...args) {
20695    return wrapWithDeps((context) => Reflect.apply(translate$1, null, [context, ...args]), () => parseTranslateArgs(...args), "translate", (root2) => Reflect.apply(root2.t, root2, [...args]), (key) => key, (val) => isString$1(val));
20696  }
20697  function rt(...args) {
20698    const [arg1, arg2, arg3] = args;
20699    if (arg3 && !isObject$6(arg3)) {
20700      throw createI18nError(I18nErrorCodes.INVALID_ARGUMENT);
20701    }
20702    return t(...[arg1, arg2, assign({ resolvedMessage: true }, arg3 || {})]);
20703  }
20704  function d(...args) {
20705    return wrapWithDeps((context) => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root2) => Reflect.apply(root2.d, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$1(val) || isArray$1(val));
20706  }
20707  function n(...args) {
20708    return wrapWithDeps((context) => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), "number format", (root2) => Reflect.apply(root2.n, root2, [...args]), () => MISSING_RESOLVE_VALUE, (val) => isString$1(val) || isArray$1(val));
20709  }
20710  function normalize(values) {
20711    return values.map((val) => isString$1(val) || isNumber$1(val) || isBoolean$1(val) ? createTextNode(String(val)) : val);
20712  }
20713  const interpolate = (val) => val;
20714  const processor = {
20715    normalize,
20716    interpolate,
20717    type: "vnode"
20718  };
20719  function translateVNode(...args) {
20720    return wrapWithDeps((context) => {
20721      let ret;
20722      const _context2 = context;
20723      try {
20724        _context2.processor = processor;
20725        ret = Reflect.apply(translate$1, null, [_context2, ...args]);
20726      } finally {
20727        _context2.processor = null;
20728      }
20729      return ret;
20730    }, () => parseTranslateArgs(...args), "translate", (root2) => root2[TranslateVNodeSymbol](...args), (key) => [createTextNode(key)], (val) => isArray$1(val));
20731  }
20732  function numberParts(...args) {
20733    return wrapWithDeps((context) => Reflect.apply(number, null, [context, ...args]), () => parseNumberArgs(...args), "number format", (root2) => root2[NumberPartsSymbol](...args), NOOP_RETURN_ARRAY, (val) => isString$1(val) || isArray$1(val));
20734  }
20735  function datetimeParts(...args) {
20736    return wrapWithDeps((context) => Reflect.apply(datetime, null, [context, ...args]), () => parseDateTimeArgs(...args), "datetime format", (root2) => root2[DatetimePartsSymbol](...args), NOOP_RETURN_ARRAY, (val) => isString$1(val) || isArray$1(val));
20737  }
20738  function setPluralRules(rules) {
20739    _pluralRules = rules;
20740    _context.pluralRules = _pluralRules;
20741  }
20742  function te(key, locale2) {
20743    return wrapWithDeps(() => {
20744      if (!key) {
20745        return false;
20746      }
20747      const targetLocale = isString$1(locale2) ? locale2 : _locale.value;
20748      const message = getLocaleMessage(targetLocale);
20749      const resolved = _context.messageResolver(message, key);
20750      return isMessageAST(resolved) || isMessageFunction(resolved) || isString$1(resolved);
20751    }, () => [key], "translate exists", (root2) => {
20752      return Reflect.apply(root2.te, root2, [key, locale2]);
20753    }, NOOP_RETURN_FALSE, (val) => isBoolean$1(val));
20754  }
20755  function resolveMessages(key) {
20756    let messages2 = null;
20757    const locales = fallbackWithLocaleChain(_context, _fallbackLocale.value, _locale.value);
20758    for (let i = 0; i < locales.length; i++) {
20759      const targetLocaleMessages = _messages.value[locales[i]] || {};
20760      const messageValue = _context.messageResolver(targetLocaleMessages, key);
20761      if (messageValue != null) {
20762        messages2 = messageValue;
20763        break;
20764      }
20765    }
20766    return messages2;
20767  }
20768  function tm(key) {
20769    const messages2 = resolveMessages(key);
20770    return messages2 != null ? messages2 : __root ? __root.tm(key) || {} : {};
20771  }
20772  function getLocaleMessage(locale2) {
20773    return _messages.value[locale2] || {};
20774  }
20775  function setLocaleMessage(locale2, message) {
20776    if (flatJson) {
20777      const _message = { [locale2]: message };
20778      for (const key in _message) {
20779        if (hasOwn(_message, key)) {
20780          handleFlatJson(_message[key]);
20781        }
20782      }
20783      message = _message[locale2];
20784    }
20785    _messages.value[locale2] = message;
20786    _context.messages = _messages.value;
20787  }
20788  function mergeLocaleMessage(locale2, message) {
20789    _messages.value[locale2] = _messages.value[locale2] || {};
20790    const _message = { [locale2]: message };
20791    if (flatJson) {
20792      for (const key in _message) {
20793        if (hasOwn(_message, key)) {
20794          handleFlatJson(_message[key]);
20795        }
20796      }
20797    }
20798    message = _message[locale2];
20799    deepCopy(message, _messages.value[locale2]);
20800    _context.messages = _messages.value;
20801  }
20802  function getDateTimeFormat(locale2) {
20803    return _datetimeFormats.value[locale2] || {};
20804  }
20805  function setDateTimeFormat(locale2, format2) {
20806    _datetimeFormats.value[locale2] = format2;
20807    _context.datetimeFormats = _datetimeFormats.value;
20808    clearDateTimeFormat(_context, locale2, format2);
20809  }
20810  function mergeDateTimeFormat(locale2, format2) {
20811    _datetimeFormats.value[locale2] = assign(_datetimeFormats.value[locale2] || {}, format2);
20812    _context.datetimeFormats = _datetimeFormats.value;
20813    clearDateTimeFormat(_context, locale2, format2);
20814  }
20815  function getNumberFormat(locale2) {
20816    return _numberFormats.value[locale2] || {};
20817  }
20818  function setNumberFormat(locale2, format2) {
20819    _numberFormats.value[locale2] = format2;
20820    _context.numberFormats = _numberFormats.value;
20821    clearNumberFormat(_context, locale2, format2);
20822  }
20823  function mergeNumberFormat(locale2, format2) {
20824    _numberFormats.value[locale2] = assign(_numberFormats.value[locale2] || {}, format2);
20825    _context.numberFormats = _numberFormats.value;
20826    clearNumberFormat(_context, locale2, format2);
20827  }
20828  composerID++;
20829  if (__root && inBrowser) {
20830    watch(__root.locale, (val) => {
20831      if (_inheritLocale) {
20832        _locale.value = val;
20833        _context.locale = val;
20834        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
20835      }
20836    });
20837    watch(__root.fallbackLocale, (val) => {
20838      if (_inheritLocale) {
20839        _fallbackLocale.value = val;
20840        _context.fallbackLocale = val;
20841        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
20842      }
20843    });
20844  }
20845  const composer = {
20846    id: composerID,
20847    locale,
20848    fallbackLocale,
20849    get inheritLocale() {
20850      return _inheritLocale;
20851    },
20852    set inheritLocale(val) {
20853      _inheritLocale = val;
20854      if (val && __root) {
20855        _locale.value = __root.locale.value;
20856        _fallbackLocale.value = __root.fallbackLocale.value;
20857        updateFallbackLocale(_context, _locale.value, _fallbackLocale.value);
20858      }
20859    },
20860    get availableLocales() {
20861      return Object.keys(_messages.value).sort();
20862    },
20863    messages,
20864    get modifiers() {
20865      return _modifiers;
20866    },
20867    get pluralRules() {
20868      return _pluralRules || {};
20869    },
20870    get isGlobal() {
20871      return _isGlobal;
20872    },
20873    get missingWarn() {
20874      return _missingWarn;
20875    },
20876    set missingWarn(val) {
20877      _missingWarn = val;
20878      _context.missingWarn = _missingWarn;
20879    },
20880    get fallbackWarn() {
20881      return _fallbackWarn;
20882    },
20883    set fallbackWarn(val) {
20884      _fallbackWarn = val;
20885      _context.fallbackWarn = _fallbackWarn;
20886    },
20887    get fallbackRoot() {
20888      return _fallbackRoot;
20889    },
20890    set fallbackRoot(val) {
20891      _fallbackRoot = val;
20892    },
20893    get fallbackFormat() {
20894      return _fallbackFormat;
20895    },
20896    set fallbackFormat(val) {
20897      _fallbackFormat = val;
20898      _context.fallbackFormat = _fallbackFormat;
20899    },
20900    get warnHtmlMessage() {
20901      return _warnHtmlMessage;
20902    },
20903    set warnHtmlMessage(val) {
20904      _warnHtmlMessage = val;
20905      _context.warnHtmlMessage = val;
20906    },
20907    get escapeParameter() {
20908      return _escapeParameter;
20909    },
20910    set escapeParameter(val) {
20911      _escapeParameter = val;
20912      _context.escapeParameter = val;
20913    },
20914    t,
20915    getLocaleMessage,
vendor: 6,555 bytes, lines 20916-21119
20916    setLocaleMessage,
20917    mergeLocaleMessage,
20918    getPostTranslationHandler,
20919    setPostTranslationHandler,
20920    getMissingHandler,
20921    setMissingHandler,
20922    [SetPluralRulesSymbol]: setPluralRules
20923  };
20924  {
20925    composer.datetimeFormats = datetimeFormats;
20926    composer.numberFormats = numberFormats;
20927    composer.rt = rt;
20928    composer.te = te;
20929    composer.tm = tm;
20930    composer.d = d;
20931    composer.n = n;
20932    composer.getDateTimeFormat = getDateTimeFormat;
20933    composer.setDateTimeFormat = setDateTimeFormat;
20934    composer.mergeDateTimeFormat = mergeDateTimeFormat;
20935    composer.getNumberFormat = getNumberFormat;
20936    composer.setNumberFormat = setNumberFormat;
20937    composer.mergeNumberFormat = mergeNumberFormat;
20938    composer[InejctWithOptionSymbol] = __injectWithOption;
20939    composer[TranslateVNodeSymbol] = translateVNode;
20940    composer[DatetimePartsSymbol] = datetimeParts;
20941    composer[NumberPartsSymbol] = numberParts;
20942  }
20943  return composer;
20944}
20945function convertComposerOptions(options2) {
20946  const locale = isString$1(options2.locale) ? options2.locale : DEFAULT_LOCALE;
20947  const fallbackLocale = isString$1(options2.fallbackLocale) || isArray$1(options2.fallbackLocale) || isPlainObject$1(options2.fallbackLocale) || options2.fallbackLocale === false ? options2.fallbackLocale : locale;
20948  const missing = isFunction$1(options2.missing) ? options2.missing : void 0;
20949  const missingWarn = isBoolean$1(options2.silentTranslationWarn) || isRegExp$1(options2.silentTranslationWarn) ? !options2.silentTranslationWarn : true;
20950  const fallbackWarn = isBoolean$1(options2.silentFallbackWarn) || isRegExp$1(options2.silentFallbackWarn) ? !options2.silentFallbackWarn : true;
20951  const fallbackRoot = isBoolean$1(options2.fallbackRoot) ? options2.fallbackRoot : true;
20952  const fallbackFormat = !!options2.formatFallbackMessages;
20953  const modifiers = isPlainObject$1(options2.modifiers) ? options2.modifiers : {};
20954  const pluralizationRules = options2.pluralizationRules;
20955  const postTranslation = isFunction$1(options2.postTranslation) ? options2.postTranslation : void 0;
20956  const warnHtmlMessage = isString$1(options2.warnHtmlInMessage) ? options2.warnHtmlInMessage !== "off" : true;
20957  const escapeParameter = !!options2.escapeParameterHtml;
20958  const inheritLocale = isBoolean$1(options2.sync) ? options2.sync : true;
20959  let messages = options2.messages;
20960  if (isPlainObject$1(options2.sharedMessages)) {
20961    const sharedMessages = options2.sharedMessages;
20962    const locales = Object.keys(sharedMessages);
20963    messages = locales.reduce((messages2, locale2) => {
20964      const message = messages2[locale2] || (messages2[locale2] = {});
20965      assign(message, sharedMessages[locale2]);
20966      return messages2;
20967    }, messages || {});
20968  }
20969  const { __i18n, __root, __injectWithOption } = options2;
20970  const datetimeFormats = options2.datetimeFormats;
20971  const numberFormats = options2.numberFormats;
20972  const flatJson = options2.flatJson;
20973  return {
20974    locale,
20975    fallbackLocale,
20976    messages,
20977    flatJson,
20978    datetimeFormats,
20979    numberFormats,
20980    missing,
20981    missingWarn,
20982    fallbackWarn,
20983    fallbackRoot,
20984    fallbackFormat,
20985    modifiers,
20986    pluralRules: pluralizationRules,
20987    postTranslation,
20988    warnHtmlMessage,
20989    escapeParameter,
20990    messageResolver: options2.messageResolver,
20991    inheritLocale,
20992    __i18n,
20993    __root,
20994    __injectWithOption
20995  };
20996}
20997function createVueI18n(options2 = {}) {
20998  const composer = createComposer(convertComposerOptions(options2));
20999  const { __extender } = options2;
21000  const vueI18n = {
21001    // id
21002    id: composer.id,
21003    // locale
21004    get locale() {
21005      return composer.locale.value;
21006    },
21007    set locale(val) {
21008      composer.locale.value = val;
21009    },
21010    // fallbackLocale
21011    get fallbackLocale() {
21012      return composer.fallbackLocale.value;
21013    },
21014    set fallbackLocale(val) {
21015      composer.fallbackLocale.value = val;
21016    },
21017    // messages
21018    get messages() {
21019      return composer.messages.value;
21020    },
21021    // datetimeFormats
21022    get datetimeFormats() {
21023      return composer.datetimeFormats.value;
21024    },
21025    // numberFormats
21026    get numberFormats() {
21027      return composer.numberFormats.value;
21028    },
21029    // availableLocales
21030    get availableLocales() {
21031      return composer.availableLocales;
21032    },
21033    // missing
21034    get missing() {
21035      return composer.getMissingHandler();
21036    },
21037    set missing(handler) {
21038      composer.setMissingHandler(handler);
21039    },
21040    // silentTranslationWarn
21041    get silentTranslationWarn() {
21042      return isBoolean$1(composer.missingWarn) ? !composer.missingWarn : composer.missingWarn;
21043    },
21044    set silentTranslationWarn(val) {
21045      composer.missingWarn = isBoolean$1(val) ? !val : val;
21046    },
21047    // silentFallbackWarn
21048    get silentFallbackWarn() {
21049      return isBoolean$1(composer.fallbackWarn) ? !composer.fallbackWarn : composer.fallbackWarn;
21050    },
21051    set silentFallbackWarn(val) {
21052      composer.fallbackWarn = isBoolean$1(val) ? !val : val;
21053    },
21054    // modifiers
21055    get modifiers() {
21056      return composer.modifiers;
21057    },
21058    // formatFallbackMessages
21059    get formatFallbackMessages() {
21060      return composer.fallbackFormat;
21061    },
21062    set formatFallbackMessages(val) {
21063      composer.fallbackFormat = val;
21064    },
21065    // postTranslation
21066    get postTranslation() {
21067      return composer.getPostTranslationHandler();
21068    },
21069    set postTranslation(handler) {
21070      composer.setPostTranslationHandler(handler);
21071    },
21072    // sync
21073    get sync() {
21074      return composer.inheritLocale;
21075    },
21076    set sync(val) {
21077      composer.inheritLocale = val;
21078    },
21079    // warnInHtmlMessage
21080    get warnHtmlInMessage() {
21081      return composer.warnHtmlMessage ? "warn" : "off";
21082    },
21083    set warnHtmlInMessage(val) {
21084      composer.warnHtmlMessage = val !== "off";
21085    },
21086    // escapeParameterHtml
21087    get escapeParameterHtml() {
21088      return composer.escapeParameter;
21089    },
21090    set escapeParameterHtml(val) {
21091      composer.escapeParameter = val;
21092    },
21093    // pluralizationRules
21094    get pluralizationRules() {
21095      return composer.pluralRules || {};
21096    },
21097    // for internal
21098    __composer: composer,
21099    // t
21100    t(...args) {
21101      return Reflect.apply(composer.t, composer, [...args]);
21102    },
21103    // rt
21104    rt(...args) {
21105      return Reflect.apply(composer.rt, composer, [...args]);
21106    },
21107    // te
21108    te(key, locale) {
21109      return composer.te(key, locale);
21110    },
21111    // tm
21112    tm(key) {
21113      return composer.tm(key);
21114    },
21115    // getLocaleMessage
21116    getLocaleMessage(locale) {
21117      return composer.getLocaleMessage(locale);
21118    },
21119    // setLocaleMessage
vendor: 4,601 bytes, lines 21120-21256
21120    setLocaleMessage(locale, message) {
21121      composer.setLocaleMessage(locale, message);
21122    },
21123    // mergeLocaleMessage
21124    mergeLocaleMessage(locale, message) {
21125      composer.mergeLocaleMessage(locale, message);
21126    },
21127    // d
21128    d(...args) {
21129      return Reflect.apply(composer.d, composer, [...args]);
21130    },
21131    // getDateTimeFormat
21132    getDateTimeFormat(locale) {
21133      return composer.getDateTimeFormat(locale);
21134    },
21135    // setDateTimeFormat
21136    setDateTimeFormat(locale, format2) {
21137      composer.setDateTimeFormat(locale, format2);
21138    },
21139    // mergeDateTimeFormat
21140    mergeDateTimeFormat(locale, format2) {
21141      composer.mergeDateTimeFormat(locale, format2);
21142    },
21143    // n
21144    n(...args) {
21145      return Reflect.apply(composer.n, composer, [...args]);
21146    },
21147    // getNumberFormat
21148    getNumberFormat(locale) {
21149      return composer.getNumberFormat(locale);
21150    },
21151    // setNumberFormat
21152    setNumberFormat(locale, format2) {
21153      composer.setNumberFormat(locale, format2);
21154    },
21155    // mergeNumberFormat
21156    mergeNumberFormat(locale, format2) {
21157      composer.mergeNumberFormat(locale, format2);
21158    }
21159  };
21160  vueI18n.__extender = __extender;
21161  return vueI18n;
21162}
21163function defineMixin(vuei18n, composer, i18n) {
21164  return {
21165    beforeCreate() {
21166      const instance = getCurrentInstance();
21167      if (!instance) {
21168        throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
21169      }
21170      const options2 = this.$options;
21171      if (options2.i18n) {
21172        const optionsI18n = options2.i18n;
21173        if (options2.__i18n) {
21174          optionsI18n.__i18n = options2.__i18n;
21175        }
21176        optionsI18n.__root = composer;
21177        if (this === this.$root) {
21178          this.$i18n = mergeToGlobal(vuei18n, optionsI18n);
21179        } else {
21180          optionsI18n.__injectWithOption = true;
21181          optionsI18n.__extender = i18n.__vueI18nExtend;
21182          this.$i18n = createVueI18n(optionsI18n);
21183          const _vueI18n = this.$i18n;
21184          if (_vueI18n.__extender) {
21185            _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);
21186          }
21187        }
21188      } else if (options2.__i18n) {
21189        if (this === this.$root) {
21190          this.$i18n = mergeToGlobal(vuei18n, options2);
21191        } else {
21192          this.$i18n = createVueI18n({
21193            __i18n: options2.__i18n,
21194            __injectWithOption: true,
21195            __extender: i18n.__vueI18nExtend,
21196            __root: composer
21197          });
21198          const _vueI18n = this.$i18n;
21199          if (_vueI18n.__extender) {
21200            _vueI18n.__disposer = _vueI18n.__extender(this.$i18n);
21201          }
21202        }
21203      } else {
21204        this.$i18n = vuei18n;
21205      }
21206      if (options2.__i18nGlobal) {
21207        adjustI18nResources(composer, options2, options2);
21208      }
21209      this.$t = (...args) => this.$i18n.t(...args);
21210      this.$rt = (...args) => this.$i18n.rt(...args);
21211      this.$te = (key, locale) => this.$i18n.te(key, locale);
21212      this.$d = (...args) => this.$i18n.d(...args);
21213      this.$n = (...args) => this.$i18n.n(...args);
21214      this.$tm = (key) => this.$i18n.tm(key);
21215      i18n.__setInstance(instance, this.$i18n);
21216    },
21217    mounted() {
21218    },
21219    unmounted() {
21220      const instance = getCurrentInstance();
21221      if (!instance) {
21222        throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
21223      }
21224      const _vueI18n = this.$i18n;
21225      delete this.$t;
21226      delete this.$rt;
21227      delete this.$te;
21228      delete this.$d;
21229      delete this.$n;
21230      delete this.$tm;
21231      if (_vueI18n.__disposer) {
21232        _vueI18n.__disposer();
21233        delete _vueI18n.__disposer;
21234        delete _vueI18n.__extender;
21235      }
21236      i18n.__deleteInstance(instance);
21237      delete this.$i18n;
21238    }
21239  };
21240}
21241function mergeToGlobal(g, options2) {
21242  g.locale = options2.locale || g.locale;
21243  g.fallbackLocale = options2.fallbackLocale || g.fallbackLocale;
21244  g.missing = options2.missing || g.missing;
21245  g.silentTranslationWarn = options2.silentTranslationWarn || g.silentFallbackWarn;
21246  g.silentFallbackWarn = options2.silentFallbackWarn || g.silentFallbackWarn;
21247  g.formatFallbackMessages = options2.formatFallbackMessages || g.formatFallbackMessages;
21248  g.postTranslation = options2.postTranslation || g.postTranslation;
21249  g.warnHtmlInMessage = options2.warnHtmlInMessage || g.warnHtmlInMessage;
21250  g.escapeParameterHtml = options2.escapeParameterHtml || g.escapeParameterHtml;
21251  g.sync = options2.sync || g.sync;
21252  g.__composer[SetPluralRulesSymbol](options2.pluralizationRules || g.pluralizationRules);
21253  const messages = getLocaleMessages(g.locale, {
21254    messages: options2.messages,
21255    __i18n: options2.__i18n
21256  });
21257  Object.keys(messages).forEach((locale) => g.mergeLocaleMessage(locale, messages[locale]));
21258  if (options2.datetimeFormats) {
21259    Object.keys(options2.datetimeFormats).forEach((locale) => g.mergeDateTimeFormat(locale, options2.datetimeFormats[locale]));
21260  }
21261  if (options2.numberFormats) {
21262    Object.keys(options2.numberFormats).forEach((locale) => g.mergeNumberFormat(locale, options2.numberFormats[locale]));
21263  }
21264  return g;
21265}
21266const baseFormatProps = {
21267  tag: {
21268    type: [String, Object]
21269  },
21270  locale: {
21271    type: String
21272  },
21273  scope: {
21274    type: String,
21275    // NOTE: avoid https://github.com/microsoft/rushstack/issues/1050
21276    validator: (val) => val === "parent" || val === "global",
21277    default: "parent"
21278    /* ComponentI18nScope */
21279  },
21280  i18n: {
21281    type: Object
21282  }
21283};
21284function getInterpolateArg({ slots }, keys) {
21285  if (keys.length === 1 && keys[0] === "default") {
21286    const ret = slots.default ? slots.default() : [];
21287    return ret.reduce((slot, current) => {
21288      return [
21289        ...slot,
21290        // prettier-ignore
21291        ...current.type === Fragment ? current.children : [current]
21292      ];
21293    }, []);
21294  } else {
21295    return keys.reduce((arg, key) => {
21296      const slot = slots[key];
21297      if (slot) {
21298        arg[key] = slot();
21299      }
21300      return arg;
21301    }, create());
21302  }
21303}
21304function getFragmentableTag() {
21305  return Fragment;
21306}
21307const TranslationImpl = /* @__PURE__ */ defineComponent({
21308  /* eslint-disable */
21309  name: "i18n-t",
21310  props: assign({
21311    keypath: {
21312      type: String,
21313      required: true
21314    },
21315    plural: {
21316      type: [Number, String],
21317      validator: (val) => isNumber$1(val) || !isNaN(val)
21318    }
21319  }, baseFormatProps),
21320  /* eslint-enable */
21321  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21322  setup(props2, context) {
21323    const { slots, attrs } = context;
21324    const i18n = props2.i18n || useI18n({
21325      useScope: props2.scope,
21326      __useComponent: true
21327    });
21328    return () => {
21329      const keys = Object.keys(slots).filter((key) => key[0] !== "_");
21330      const options2 = create();
21331      if (props2.locale) {
21332        options2.locale = props2.locale;
21333      }
21334      if (props2.plural !== void 0) {
21335        options2.plural = isString$1(props2.plural) ? +props2.plural : props2.plural;
21336      }
21337      const arg = getInterpolateArg(context, keys);
21338      const children = i18n[TranslateVNodeSymbol](props2.keypath, arg, options2);
21339      const assignedAttrs = assign(create(), attrs);
21340      const tag = isString$1(props2.tag) || isObject$6(props2.tag) ? props2.tag : getFragmentableTag();
21341      return h(tag, assignedAttrs, children);
21342    };
21343  }
21344});
21345const Translation = TranslationImpl;
21346function isVNode(target) {
21347  return isArray$1(target) && !isString$1(target[0]);
21348}
21349function renderFormatter(props2, context, slotKeys, partFormatter) {
21350  const { slots, attrs } = context;
21351  return () => {
21352    const options2 = { part: true };
21353    let overrides = create();
21354    if (props2.locale) {
21355      options2.locale = props2.locale;
21356    }
21357    if (isString$1(props2.format)) {
21358      options2.key = props2.format;
21359    } else if (isObject$6(props2.format)) {
21360      if (isString$1(props2.format.key)) {
21361        options2.key = props2.format.key;
21362      }
21363      overrides = Object.keys(props2.format).reduce((options22, prop) => {
21364        return slotKeys.includes(prop) ? assign(create(), options22, { [prop]: props2.format[prop] }) : options22;
21365      }, create());
21366    }
21367    const parts = partFormatter(...[props2.value, options2, overrides]);
21368    let children = [options2.key];
21369    if (isArray$1(parts)) {
21370      children = parts.map((part, index2) => {
21371        const slot = slots[part.type];
21372        const node = slot ? slot({ [part.type]: part.value, index: index2, parts }) : [part.value];
21373        if (isVNode(node)) {
21374          node[0].key = `${part.type}-${index2}`;
21375        }
21376        return node;
21377      });
21378    } else if (isString$1(parts)) {
21379      children = [parts];
21380    }
21381    const assignedAttrs = assign(create(), attrs);
21382    const tag = isString$1(props2.tag) || isObject$6(props2.tag) ? props2.tag : getFragmentableTag();
21383    return h(tag, assignedAttrs, children);
21384  };
21385}
21386const NumberFormatImpl = /* @__PURE__ */ defineComponent({
21387  /* eslint-disable */
21388  name: "i18n-n",
21389  props: assign({
21390    value: {
21391      type: Number,
21392      required: true
21393    },
21394    format: {
21395      type: [String, Object]
21396    }
21397  }, baseFormatProps),
21398  /* eslint-enable */
21399  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21400  setup(props2, context) {
21401    const i18n = props2.i18n || useI18n({
21402      useScope: props2.scope,
21403      __useComponent: true
21404    });
21405    return renderFormatter(props2, context, NUMBER_FORMAT_OPTIONS_KEYS, (...args) => (
21406      // eslint-disable-next-line @typescript-eslint/no-explicit-any
21407      i18n[NumberPartsSymbol](...args)
21408    ));
21409  }
21410});
21411const NumberFormat = NumberFormatImpl;
21412function getComposer$1(i18n, instance) {
21413  const i18nInternal = i18n;
21414  if (i18n.mode === "composition") {
21415    return i18nInternal.__getInstance(instance) || i18n.global;
21416  } else {
21417    const vueI18n = i18nInternal.__getInstance(instance);
21418    return vueI18n != null ? vueI18n.__composer : i18n.global.__composer;
21419  }
21420}
21421function vTDirective(i18n) {
21422  const _process = (binding) => {
21423    const { instance, value } = binding;
21424    if (!instance || !instance.$) {
21425      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
21426    }
21427    const composer = getComposer$1(i18n, instance.$);
21428    const parsedValue = parseValue(value);
21429    return [
21430      Reflect.apply(composer.t, composer, [...makeParams(parsedValue)]),
21431      composer
21432    ];
21433  };
21434  const register2 = (el, binding) => {
21435    const [textContent, composer] = _process(binding);
21436    if (inBrowser && i18n.global === composer) {
21437      el.__i18nWatcher = watch(composer.locale, () => {
21438        binding.instance && binding.instance.$forceUpdate();
21439      });
21440    }
21441    el.__composer = composer;
21442    el.textContent = textContent;
21443  };
21444  const unregister2 = (el) => {
21445    if (inBrowser && el.__i18nWatcher) {
21446      el.__i18nWatcher();
21447      el.__i18nWatcher = void 0;
21448      delete el.__i18nWatcher;
21449    }
21450    if (el.__composer) {
21451      el.__composer = void 0;
21452      delete el.__composer;
21453    }
21454  };
21455  const update4 = (el, { value }) => {
21456    if (el.__composer) {
21457      const composer = el.__composer;
21458      const parsedValue = parseValue(value);
21459      el.textContent = Reflect.apply(composer.t, composer, [
21460        ...makeParams(parsedValue)
21461      ]);
21462    }
21463  };
21464  const getSSRProps = (binding) => {
21465    const [textContent] = _process(binding);
21466    return { textContent };
21467  };
21468  return {
21469    created: register2,
21470    unmounted: unregister2,
21471    beforeUpdate: update4,
21472    getSSRProps
21473  };
21474}
21475function parseValue(value) {
21476  if (isString$1(value)) {
21477    return { path: value };
21478  } else if (isPlainObject$1(value)) {
21479    if (!("path" in value)) {
21480      throw createI18nError(I18nErrorCodes.REQUIRED_VALUE, "path");
21481    }
21482    return value;
21483  } else {
21484    throw createI18nError(I18nErrorCodes.INVALID_VALUE);
21485  }
21486}
21487function makeParams(value) {
21488  const { path, locale, args, choice, plural } = value;
21489  const options2 = {};
21490  const named = args || {};
21491  if (isString$1(locale)) {
21492    options2.locale = locale;
21493  }
21494  if (isNumber$1(choice)) {
21495    options2.plural = choice;
21496  }
21497  if (isNumber$1(plural)) {
21498    options2.plural = plural;
21499  }
21500  return [path, named, options2];
21501}
21502function apply(app2, i18n, ...options2) {
21503  const pluginOptions = isPlainObject$1(options2[0]) ? options2[0] : {};
21504  const globalInstall = isBoolean$1(pluginOptions.globalInstall) ? pluginOptions.globalInstall : true;
21505  if (globalInstall) {
21506    [Translation.name, "I18nT"].forEach((name) => app2.component(name, Translation));
21507    [NumberFormat.name, "I18nN"].forEach((name) => app2.component(name, NumberFormat));
21508    [DatetimeFormat.name, "I18nD"].forEach((name) => app2.component(name, DatetimeFormat));
21509  }
21510  {
21511    app2.directive("t", vTDirective(i18n));
21512  }
21513}
21514const I18nInjectionKey = /* @__PURE__ */ makeSymbol("global-vue-i18n");
21515function createI18n(options2 = {}) {
21516  const __legacyMode = isBoolean$1(options2.legacy) ? options2.legacy : true;
21517  const __globalInjection = isBoolean$1(options2.globalInjection) ? options2.globalInjection : true;
21518  const __instances = /* @__PURE__ */ new Map();
21519  const [globalScope, __global] = createGlobal(options2, __legacyMode);
21520  const symbol = /* @__PURE__ */ makeSymbol("");
21521  function __getInstance(component) {
21522    return __instances.get(component) || null;
21523  }
21524  function __setInstance(component, instance) {
21525    __instances.set(component, instance);
21526  }
21527  function __deleteInstance(component) {
21528    __instances.delete(component);
21529  }
21530  const i18n = {
21531    // mode
21532    get mode() {
21533      return __legacyMode ? "legacy" : "composition";
21534    },
21535    // install plugin
21536    async install(app2, ...options22) {
21537      app2.__VUE_I18N_SYMBOL__ = symbol;
21538      app2.provide(app2.__VUE_I18N_SYMBOL__, i18n);
21539      if (isPlainObject$1(options22[0])) {
21540        const opts = options22[0];
21541        i18n.__composerExtend = opts.__composerExtend;
21542        i18n.__vueI18nExtend = opts.__vueI18nExtend;
21543      }
21544      let globalReleaseHandler = null;
21545      if (!__legacyMode && __globalInjection) {
21546        globalReleaseHandler = injectGlobalFields(app2, i18n.global);
21547      }
21548      {
21549        apply(app2, i18n, ...options22);
21550      }
21551      if (__legacyMode) {
vendor: 4,905 bytes, lines 21552-21715
21552        app2.mixin(defineMixin(__global, __global.__composer, i18n));
21553      }
21554      const unmountApp = app2.unmount;
21555      app2.unmount = () => {
21556        globalReleaseHandler && globalReleaseHandler();
21557        i18n.dispose();
21558        unmountApp();
21559      };
21560    },
21561    // global accessor
21562    get global() {
21563      return __global;
21564    },
21565    dispose() {
21566      globalScope.stop();
21567    },
21568    // @internal
21569    __instances,
21570    // @internal
21571    __getInstance,
21572    // @internal
21573    __setInstance,
21574    // @internal
21575    __deleteInstance
21576  };
21577  return i18n;
21578}
21579function useI18n(options2 = {}) {
21580  const instance = getCurrentInstance();
21581  if (instance == null) {
21582    throw createI18nError(I18nErrorCodes.MUST_BE_CALL_SETUP_TOP);
21583  }
21584  if (!instance.isCE && instance.appContext.app != null && !instance.appContext.app.__VUE_I18N_SYMBOL__) {
21585    throw createI18nError(I18nErrorCodes.NOT_INSTALLED);
21586  }
21587  const i18n = getI18nInstance(instance);
21588  const gl = getGlobalComposer(i18n);
21589  const componentOptions = getComponentOptions(instance);
21590  const scope = getScope(options2, componentOptions);
21591  if (scope === "global") {
21592    adjustI18nResources(gl, options2, componentOptions);
21593    return gl;
21594  }
21595  if (scope === "parent") {
21596    let composer2 = getComposer(i18n, instance, options2.__useComponent);
21597    if (composer2 == null) {
21598      composer2 = gl;
21599    }
21600    return composer2;
21601  }
21602  const i18nInternal = i18n;
21603  let composer = i18nInternal.__getInstance(instance);
21604  if (composer == null) {
21605    const composerOptions = assign({}, options2);
21606    if ("__i18n" in componentOptions) {
21607      composerOptions.__i18n = componentOptions.__i18n;
21608    }
21609    if (gl) {
21610      composerOptions.__root = gl;
21611    }
21612    composer = createComposer(composerOptions);
21613    if (i18nInternal.__composerExtend) {
21614      composer[DisposeSymbol] = i18nInternal.__composerExtend(composer);
21615    }
21616    setupLifeCycle(i18nInternal, instance, composer);
21617    i18nInternal.__setInstance(instance, composer);
21618  }
21619  return composer;
21620}
21621function createGlobal(options2, legacyMode) {
21622  const scope = effectScope();
21623  const obj = legacyMode ? scope.run(() => createVueI18n(options2)) : scope.run(() => createComposer(options2));
21624  if (obj == null) {
21625    throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
21626  }
21627  return [scope, obj];
21628}
21629function getI18nInstance(instance) {
21630  const i18n = inject(!instance.isCE ? instance.appContext.app.__VUE_I18N_SYMBOL__ : I18nInjectionKey);
21631  if (!i18n) {
21632    throw createI18nError(!instance.isCE ? I18nErrorCodes.UNEXPECTED_ERROR : I18nErrorCodes.NOT_INSTALLED_WITH_PROVIDE);
21633  }
21634  return i18n;
21635}
21636function getScope(options2, componentOptions) {
21637  return isEmptyObject(options2) ? "__i18n" in componentOptions ? "local" : "global" : !options2.useScope ? "local" : options2.useScope;
21638}
21639function getGlobalComposer(i18n) {
21640  return i18n.mode === "composition" ? i18n.global : i18n.global.__composer;
21641}
21642function getComposer(i18n, target, useComponent = false) {
21643  let composer = null;
21644  const root2 = target.root;
21645  let current = getParentComponentInstance(target, useComponent);
21646  while (current != null) {
21647    const i18nInternal = i18n;
21648    if (i18n.mode === "composition") {
21649      composer = i18nInternal.__getInstance(current);
21650    } else {
21651      {
21652        const vueI18n = i18nInternal.__getInstance(current);
21653        if (vueI18n != null) {
21654          composer = vueI18n.__composer;
21655          if (useComponent && composer && !composer[InejctWithOptionSymbol]) {
21656            composer = null;
21657          }
21658        }
21659      }
21660    }
21661    if (composer != null) {
21662      break;
21663    }
21664    if (root2 === current) {
21665      break;
21666    }
21667    current = current.parent;
21668  }
21669  return composer;
21670}
21671function getParentComponentInstance(target, useComponent = false) {
21672  if (target == null) {
21673    return null;
21674  }
21675  return !useComponent ? target.parent : target.vnode.ctx || target.parent;
21676}
21677function setupLifeCycle(i18n, target, composer) {
21678  onMounted(() => {
21679  }, target);
21680  onUnmounted(() => {
21681    const _composer = composer;
21682    i18n.__deleteInstance(target);
21683    const dispose = _composer[DisposeSymbol];
21684    if (dispose) {
21685      dispose();
21686      delete _composer[DisposeSymbol];
21687    }
21688  }, target);
21689}
21690const globalExportProps = [
21691  "locale",
21692  "fallbackLocale",
21693  "availableLocales"
21694];
21695const globalExportMethods = ["t", "rt", "d", "n", "tm", "te"];
21696function injectGlobalFields(app2, composer) {
21697  const i18n = /* @__PURE__ */ Object.create(null);
21698  globalExportProps.forEach((prop) => {
21699    const desc = Object.getOwnPropertyDescriptor(composer, prop);
21700    if (!desc) {
21701      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
21702    }
21703    const wrap = isRef(desc.value) ? {
21704      get() {
21705        return desc.value.value;
21706      },
21707      // eslint-disable-next-line @typescript-eslint/no-explicit-any
21708      set(val) {
21709        desc.value.value = val;
21710      }
21711    } : {
21712      get() {
21713        return desc.get && desc.get();
21714      }
21715    };
vendor: 9,493 bytes, lines 21716-22001
21716    Object.defineProperty(i18n, prop, wrap);
21717  });
21718  app2.config.globalProperties.$i18n = i18n;
21719  globalExportMethods.forEach((method) => {
21720    const desc = Object.getOwnPropertyDescriptor(composer, method);
21721    if (!desc || !desc.value) {
21722      throw createI18nError(I18nErrorCodes.UNEXPECTED_ERROR);
21723    }
21724    Object.defineProperty(app2.config.globalProperties, `$${method}`, desc);
21725  });
21726  const dispose = () => {
21727    delete app2.config.globalProperties.$i18n;
21728    globalExportMethods.forEach((method) => {
21729      delete app2.config.globalProperties[`$${method}`];
21730    });
21731  };
21732  return dispose;
21733}
21734const DatetimeFormatImpl = /* @__PURE__ */ defineComponent({
21735  /* eslint-disable */
21736  name: "i18n-d",
21737  props: assign({
21738    value: {
21739      type: [Number, Date],
21740      required: true
21741    },
21742    format: {
21743      type: [String, Object]
21744    }
21745  }, baseFormatProps),
21746  /* eslint-enable */
21747  // eslint-disable-next-line @typescript-eslint/no-explicit-any
21748  setup(props2, context) {
21749    const i18n = props2.i18n || useI18n({
21750      useScope: props2.scope,
21751      __useComponent: true
21752    });
21753    return renderFormatter(props2, context, DATETIME_FORMAT_OPTIONS_KEYS, (...args) => (
21754      // eslint-disable-next-line @typescript-eslint/no-explicit-any
21755      i18n[DatetimePartsSymbol](...args)
21756    ));
21757  }
21758});
21759const DatetimeFormat = DatetimeFormatImpl;
21760{
21761  initFeatureFlags();
21762}
21763registerMessageCompiler(compile);
21764registerMessageResolver(resolveValue);
21765registerLocaleFallbacker(fallbackWithLocaleChain);
21766if (__INTLIFY_PROD_DEVTOOLS__) {
21767  const target = getGlobalThis();
21768  target.__INTLIFY__ = true;
21769  setDevToolsHook(target.__INTLIFY_DEVTOOLS_GLOBAL_HOOK__);
21770}
21771function bind(fn, thisArg) {
21772  return function wrap() {
21773    return fn.apply(thisArg, arguments);
21774  };
21775}
21776const { toString } = Object.prototype;
21777const { getPrototypeOf } = Object;
21778const { iterator, toStringTag } = Symbol;
21779const kindOf = /* @__PURE__ */ ((cache2) => (thing) => {
21780  const str = toString.call(thing);
21781  return cache2[str] || (cache2[str] = str.slice(8, -1).toLowerCase());
21782})(/* @__PURE__ */ Object.create(null));
21783const kindOfTest = (type) => {
21784  type = type.toLowerCase();
21785  return (thing) => kindOf(thing) === type;
21786};
21787const typeOfTest = (type) => (thing) => typeof thing === type;
21788const { isArray } = Array;
21789const isUndefined = typeOfTest("undefined");
21790function isBuffer(val) {
21791  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);
21792}
21793const isArrayBuffer = kindOfTest("ArrayBuffer");
21794function isArrayBufferView(val) {
21795  let result;
21796  if (typeof ArrayBuffer !== "undefined" && ArrayBuffer.isView) {
21797    result = ArrayBuffer.isView(val);
21798  } else {
21799    result = val && val.buffer && isArrayBuffer(val.buffer);
21800  }
21801  return result;
21802}
21803const isString = typeOfTest("string");
21804const isFunction = typeOfTest("function");
21805const isNumber = typeOfTest("number");
21806const isObject$5 = (thing) => thing !== null && typeof thing === "object";
21807const isBoolean = (thing) => thing === true || thing === false;
21808const isPlainObject = (val) => {
21809  if (kindOf(val) !== "object") {
21810    return false;
21811  }
21812  const prototype2 = getPrototypeOf(val);
21813  return (prototype2 === null || prototype2 === Object.prototype || Object.getPrototypeOf(prototype2) === null) && !(toStringTag in val) && !(iterator in val);
21814};
21815const isDate = kindOfTest("Date");
21816const isFile = kindOfTest("File");
21817const isBlob = kindOfTest("Blob");
21818const isFileList = kindOfTest("FileList");
21819const isStream = (val) => isObject$5(val) && isFunction(val.pipe);
21820const isFormData = (thing) => {
21821  let kind;
21822  return thing && (typeof FormData === "function" && thing instanceof FormData || isFunction(thing.append) && ((kind = kindOf(thing)) === "formdata" || // detect form-data instance
21823  kind === "object" && isFunction(thing.toString) && thing.toString() === "[object FormData]"));
21824};
21825const isURLSearchParams = kindOfTest("URLSearchParams");
21826const [isReadableStream, isRequest, isResponse, isHeaders] = ["ReadableStream", "Request", "Response", "Headers"].map(kindOfTest);
21827const trim = (str) => str.trim ? str.trim() : str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "");
21828function forEach(obj, fn, { allOwnKeys = false } = {}) {
21829  if (obj === null || typeof obj === "undefined") {
21830    return;
21831  }
21832  let i;
21833  let l;
21834  if (typeof obj !== "object") {
21835    obj = [obj];
21836  }
21837  if (isArray(obj)) {
21838    for (i = 0, l = obj.length; i < l; i++) {
21839      fn.call(null, obj[i], i, obj);
21840    }
21841  } else {
21842    const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);
21843    const len = keys.length;
21844    let key;
21845    for (i = 0; i < len; i++) {
21846      key = keys[i];
21847      fn.call(null, obj[key], key, obj);
21848    }
21849  }
21850}
21851function findKey(obj, key) {
21852  key = key.toLowerCase();
21853  const keys = Object.keys(obj);
21854  let i = keys.length;
21855  let _key;
21856  while (i-- > 0) {
21857    _key = keys[i];
21858    if (key === _key.toLowerCase()) {
21859      return _key;
21860    }
21861  }
21862  return null;
21863}
21864const _global = (() => {
21865  if (typeof globalThis !== "undefined") return globalThis;
21866  return typeof self !== "undefined" ? self : typeof window !== "undefined" ? window : global;
21867})();
21868const isContextDefined = (context) => !isUndefined(context) && context !== _global;
21869function merge$1() {
21870  const { caseless } = isContextDefined(this) && this || {};
21871  const result = {};
21872  const assignValue = (val, key) => {
21873    const targetKey = caseless && findKey(result, key) || key;
21874    if (isPlainObject(result[targetKey]) && isPlainObject(val)) {
21875      result[targetKey] = merge$1(result[targetKey], val);
21876    } else if (isPlainObject(val)) {
21877      result[targetKey] = merge$1({}, val);
21878    } else if (isArray(val)) {
21879      result[targetKey] = val.slice();
21880    } else {
21881      result[targetKey] = val;
21882    }
21883  };
21884  for (let i = 0, l = arguments.length; i < l; i++) {
21885    arguments[i] && forEach(arguments[i], assignValue);
21886  }
21887  return result;
21888}
21889const extend$4 = (a, b, thisArg, { allOwnKeys } = {}) => {
21890  forEach(b, (val, key) => {
21891    if (thisArg && isFunction(val)) {
21892      a[key] = bind(val, thisArg);
21893    } else {
21894      a[key] = val;
21895    }
21896  }, { allOwnKeys });
21897  return a;
21898};
21899const stripBOM = (content) => {
21900  if (content.charCodeAt(0) === 65279) {
21901    content = content.slice(1);
21902  }
21903  return content;
21904};
21905const inherits = (constructor, superConstructor, props2, descriptors2) => {
21906  constructor.prototype = Object.create(superConstructor.prototype, descriptors2);
21907  constructor.prototype.constructor = constructor;
21908  Object.defineProperty(constructor, "super", {
21909    value: superConstructor.prototype
21910  });
21911  props2 && Object.assign(constructor.prototype, props2);
21912};
21913const toFlatObject = (sourceObj, destObj, filter2, propFilter) => {
21914  let props2;
21915  let i;
21916  let prop;
21917  const merged = {};
21918  destObj = destObj || {};
21919  if (sourceObj == null) return destObj;
21920  do {
21921    props2 = Object.getOwnPropertyNames(sourceObj);
21922    i = props2.length;
21923    while (i-- > 0) {
21924      prop = props2[i];
21925      if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {
21926        destObj[prop] = sourceObj[prop];
21927        merged[prop] = true;
21928      }
21929    }
21930    sourceObj = filter2 !== false && getPrototypeOf(sourceObj);
21931  } while (sourceObj && (!filter2 || filter2(sourceObj, destObj)) && sourceObj !== Object.prototype);
21932  return destObj;
21933};
21934const endsWith = (str, searchString, position) => {
21935  str = String(str);
21936  if (position === void 0 || position > str.length) {
21937    position = str.length;
21938  }
21939  position -= searchString.length;
21940  const lastIndex = str.indexOf(searchString, position);
21941  return lastIndex !== -1 && lastIndex === position;
21942};
21943const toArray = (thing) => {
21944  if (!thing) return null;
21945  if (isArray(thing)) return thing;
21946  let i = thing.length;
21947  if (!isNumber(i)) return null;
21948  const arr = new Array(i);
21949  while (i-- > 0) {
21950    arr[i] = thing[i];
21951  }
21952  return arr;
21953};
21954const isTypedArray = /* @__PURE__ */ ((TypedArray) => {
21955  return (thing) => {
21956    return TypedArray && thing instanceof TypedArray;
21957  };
21958})(typeof Uint8Array !== "undefined" && getPrototypeOf(Uint8Array));
21959const forEachEntry = (obj, fn) => {
21960  const generator = obj && obj[iterator];
21961  const _iterator = generator.call(obj);
21962  let result;
21963  while ((result = _iterator.next()) && !result.done) {
21964    const pair = result.value;
21965    fn.call(obj, pair[0], pair[1]);
21966  }
21967};
21968const matchAll = (regExp, str) => {
21969  let matches2;
21970  const arr = [];
21971  while ((matches2 = regExp.exec(str)) !== null) {
21972    arr.push(matches2);
21973  }
21974  return arr;
21975};
21976const isHTMLForm = kindOfTest("HTMLFormElement");
21977const toCamelCase = (str) => {
21978  return str.toLowerCase().replace(
21979    /[-_\s]([a-z\d])(\w*)/g,
21980    function replacer2(m, p1, p2) {
21981      return p1.toUpperCase() + p2;
21982    }
21983  );
21984};
21985const hasOwnProperty = (({ hasOwnProperty: hasOwnProperty2 }) => (obj, prop) => hasOwnProperty2.call(obj, prop))(Object.prototype);
21986const isRegExp = kindOfTest("RegExp");
21987const reduceDescriptors = (obj, reducer) => {
21988  const descriptors2 = Object.getOwnPropertyDescriptors(obj);
21989  const reducedDescriptors = {};
21990  forEach(descriptors2, (descriptor, name) => {
21991    let ret;
21992    if ((ret = reducer(descriptor, name, obj)) !== false) {
21993      reducedDescriptors[name] = ret || descriptor;
21994    }
21995  });
21996  Object.defineProperties(obj, reducedDescriptors);
21997};
21998const freezeMethods = (obj) => {
21999  reduceDescriptors(obj, (descriptor, name) => {
22000    if (isFunction(obj) && ["arguments", "caller", "callee"].indexOf(name) !== -1) {
22001      return false;
22002    }
22003    const value = obj[name];
22004    if (!isFunction(value)) return;
22005    descriptor.enumerable = false;
22006    if ("writable" in descriptor) {
22007      descriptor.writable = false;
22008      return;
22009    }
22010    if (!descriptor.set) {
22011      descriptor.set = () => {
22012        throw Error("Can not rewrite read-only method '" + name + "'");
22013      };
22014    }
22015  });
22016};
22017const toObjectSet = (arrayOrString, delimiter) => {
22018  const obj = {};
22019  const define = (arr) => {
22020    arr.forEach((value) => {
22021      obj[value] = true;
22022    });
22023  };
22024  isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));
22025  return obj;
22026};
22027const noop$1 = () => {
22028};
22029const toFiniteNumber = (value, defaultValue) => {
22030  return value != null && Number.isFinite(value = +value) ? value : defaultValue;
22031};
22032function isSpecCompliantForm(thing) {
22033  return !!(thing && isFunction(thing.append) && thing[toStringTag] === "FormData" && thing[iterator]);
22034}
22035const toJSONObject = (obj) => {
22036  const stack2 = new Array(10);
22037  const visit = (source, i) => {
22038    if (isObject$5(source)) {
22039      if (stack2.indexOf(source) >= 0) {
22040        return;
22041      }
22042      if (!("toJSON" in source)) {
22043        stack2[i] = source;
22044        const target = isArray(source) ? [] : {};
22045        forEach(source, (value, key) => {
22046          const reducedValue = visit(value, i + 1);
22047          !isUndefined(reducedValue) && (target[key] = reducedValue);
22048        });
22049        stack2[i] = void 0;
22050        return target;
22051      }
22052    }
22053    return source;
22054  };
22055  return visit(obj, 0);
22056};
22057const isAsyncFn = kindOfTest("AsyncFunction");
22058const isThenable = (thing) => thing && (isObject$5(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);
22059const _setImmediate = ((setImmediateSupported, postMessageSupported) => {
22060  if (setImmediateSupported) {
22061    return setImmediate;
22062  }
22063  return postMessageSupported ? ((token, callbacks) => {
22064    _global.addEventListener("message", ({ source, data }) => {
22065      if (source === _global && data === token) {
22066        callbacks.length && callbacks.shift()();
22067      }
22068    }, false);
22069    return (cb) => {
22070      callbacks.push(cb);
22071      _global.postMessage(token, "*");
22072    };
22073  })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);
22074})(
22075  typeof setImmediate === "function",
22076  isFunction(_global.postMessage)
22077);
22078const asap = typeof queueMicrotask !== "undefined" ? queueMicrotask.bind(_global) : typeof process !== "undefined" && process.nextTick || _setImmediate;
22079const isIterable = (thing) => thing != null && isFunction(thing[iterator]);
22080const utils$1 = {
22081  isArray,
22082  isArrayBuffer,
22083  isBuffer,
22084  isFormData,
22085  isArrayBufferView,
22086  isString,
22087  isNumber,
22088  isBoolean,
22089  isObject: isObject$5,
22090  isPlainObject,
22091  isReadableStream,
22092  isRequest,
22093  isResponse,
22094  isHeaders,
22095  isUndefined,
22096  isDate,
22097  isFile,
22098  isBlob,
22099  isRegExp,
22100  isFunction,
22101  isStream,
22102  isURLSearchParams,
22103  isTypedArray,
22104  isFileList,
22105  forEach,
22106  merge: merge$1,
22107  extend: extend$4,
22108  trim,
22109  stripBOM,
22110  inherits,
22111  toFlatObject,
22112  kindOf,
22113  kindOfTest,
22114  endsWith,
22115  toArray,
22116  forEachEntry,
22117  matchAll,
22118  isHTMLForm,
22119  hasOwnProperty,
22120  hasOwnProp: hasOwnProperty,
22121  // an alias to avoid ESLint no-prototype-builtins detection
22122  reduceDescriptors,
22123  freezeMethods,
22124  toObjectSet,
22125  toCamelCase,
22126  noop: noop$1,
22127  toFiniteNumber,
22128  findKey,
22129  global: _global,
22130  isContextDefined,
22131  isSpecCompliantForm,
22132  toJSONObject,
22133  isAsyncFn,
22134  isThenable,
22135  setImmediate: _setImmediate,
22136  asap,
22137  isIterable
22138};
22139function AxiosError$1(message, code, config, request, response) {
22140  Error.call(this);
22141  if (Error.captureStackTrace) {
22142    Error.captureStackTrace(this, this.constructor);
22143  } else {
22144    this.stack = new Error().stack;
22145  }
22146  this.message = message;
22147  this.name = "AxiosError";
22148  code && (this.code = code);
22149  config && (this.config = config);
22150  request && (this.request = request);
22151  if (response) {
22152    this.response = response;
22153    this.status = response.status ? response.status : null;
22154  }
22155}
22156utils$1.inherits(AxiosError$1, Error, {
22157  toJSON: function toJSON() {
22158    return {
22159      // Standard
22160      message: this.message,
22161      name: this.name,
22162      // Microsoft
22163      description: this.description,
22164      number: this.number,
22165      // Mozilla
22166      fileName: this.fileName,
22167      lineNumber: this.lineNumber,
22168      columnNumber: this.columnNumber,
22169      stack: this.stack,
22170      // Axios
22171      config: utils$1.toJSONObject(this.config),
vendor: 8,841 bytes, lines 22172-22459
22172      code: this.code,
22173      status: this.status
22174    };
22175  }
22176});
22177const prototype$1 = AxiosError$1.prototype;
22178const descriptors = {};
22179[
22180  "ERR_BAD_OPTION_VALUE",
22181  "ERR_BAD_OPTION",
22182  "ECONNABORTED",
22183  "ETIMEDOUT",
22184  "ERR_NETWORK",
22185  "ERR_FR_TOO_MANY_REDIRECTS",
22186  "ERR_DEPRECATED",
22187  "ERR_BAD_RESPONSE",
22188  "ERR_BAD_REQUEST",
22189  "ERR_CANCELED",
22190  "ERR_NOT_SUPPORT",
22191  "ERR_INVALID_URL"
22192  // eslint-disable-next-line func-names
22193].forEach((code) => {
22194  descriptors[code] = { value: code };
22195});
22196Object.defineProperties(AxiosError$1, descriptors);
22197Object.defineProperty(prototype$1, "isAxiosError", { value: true });
22198AxiosError$1.from = (error, code, config, request, response, customProps) => {
22199  const axiosError = Object.create(prototype$1);
22200  utils$1.toFlatObject(error, axiosError, function filter2(obj) {
22201    return obj !== Error.prototype;
22202  }, (prop) => {
22203    return prop !== "isAxiosError";
22204  });
22205  AxiosError$1.call(axiosError, error.message, code, config, request, response);
22206  axiosError.cause = error;
22207  axiosError.name = error.name;
22208  customProps && Object.assign(axiosError, customProps);
22209  return axiosError;
22210};
22211const httpAdapter = null;
22212function isVisitable(thing) {
22213  return utils$1.isPlainObject(thing) || utils$1.isArray(thing);
22214}
22215function removeBrackets(key) {
22216  return utils$1.endsWith(key, "[]") ? key.slice(0, -2) : key;
22217}
22218function renderKey(path, key, dots) {
22219  if (!path) return key;
22220  return path.concat(key).map(function each(token, i) {
22221    token = removeBrackets(token);
22222    return !dots && i ? "[" + token + "]" : token;
22223  }).join(dots ? "." : "");
22224}
22225function isFlatArray(arr) {
22226  return utils$1.isArray(arr) && !arr.some(isVisitable);
22227}
22228const predicates = utils$1.toFlatObject(utils$1, {}, null, function filter(prop) {
22229  return /^is[A-Z]/.test(prop);
22230});
22231function toFormData$1(obj, formData, options2) {
22232  if (!utils$1.isObject(obj)) {
22233    throw new TypeError("target must be an object");
22234  }
22235  formData = formData || new FormData();
22236  options2 = utils$1.toFlatObject(options2, {
22237    metaTokens: true,
22238    dots: false,
22239    indexes: false
22240  }, false, function defined(option, source) {
22241    return !utils$1.isUndefined(source[option]);
22242  });
22243  const metaTokens = options2.metaTokens;
22244  const visitor = options2.visitor || defaultVisitor;
22245  const dots = options2.dots;
22246  const indexes = options2.indexes;
22247  const _Blob = options2.Blob || typeof Blob !== "undefined" && Blob;
22248  const useBlob = _Blob && utils$1.isSpecCompliantForm(formData);
22249  if (!utils$1.isFunction(visitor)) {
22250    throw new TypeError("visitor must be a function");
22251  }
22252  function convertValue(value) {
22253    if (value === null) return "";
22254    if (utils$1.isDate(value)) {
22255      return value.toISOString();
22256    }
22257    if (!useBlob && utils$1.isBlob(value)) {
22258      throw new AxiosError$1("Blob is not supported. Use a Buffer instead.");
22259    }
22260    if (utils$1.isArrayBuffer(value) || utils$1.isTypedArray(value)) {
22261      return useBlob && typeof Blob === "function" ? new Blob([value]) : Buffer.from(value);
22262    }
22263    return value;
22264  }
22265  function defaultVisitor(value, key, path) {
22266    let arr = value;
22267    if (value && !path && typeof value === "object") {
22268      if (utils$1.endsWith(key, "{}")) {
22269        key = metaTokens ? key : key.slice(0, -2);
22270        value = JSON.stringify(value);
22271      } else if (utils$1.isArray(value) && isFlatArray(value) || (utils$1.isFileList(value) || utils$1.endsWith(key, "[]")) && (arr = utils$1.toArray(value))) {
22272        key = removeBrackets(key);
22273        arr.forEach(function each(el, index2) {
22274          !(utils$1.isUndefined(el) || el === null) && formData.append(
22275            // eslint-disable-next-line no-nested-ternary
22276            indexes === true ? renderKey([key], index2, dots) : indexes === null ? key : key + "[]",
22277            convertValue(el)
22278          );
22279        });
22280        return false;
22281      }
22282    }
22283    if (isVisitable(value)) {
22284      return true;
22285    }
22286    formData.append(renderKey(path, key, dots), convertValue(value));
22287    return false;
22288  }
22289  const stack2 = [];
22290  const exposedHelpers = Object.assign(predicates, {
22291    defaultVisitor,
22292    convertValue,
22293    isVisitable
22294  });
22295  function build(value, path) {
22296    if (utils$1.isUndefined(value)) return;
22297    if (stack2.indexOf(value) !== -1) {
22298      throw Error("Circular reference detected in " + path.join("."));
22299    }
22300    stack2.push(value);
22301    utils$1.forEach(value, function each(el, key) {
22302      const result = !(utils$1.isUndefined(el) || el === null) && visitor.call(
22303        formData,
22304        el,
22305        utils$1.isString(key) ? key.trim() : key,
22306        path,
22307        exposedHelpers
22308      );
22309      if (result === true) {
22310        build(el, path ? path.concat(key) : [key]);
22311      }
22312    });
22313    stack2.pop();
22314  }
22315  if (!utils$1.isObject(obj)) {
22316    throw new TypeError("data must be an object");
22317  }
22318  build(obj);
22319  return formData;
22320}
22321function encode$1(str) {
22322  const charMap = {
22323    "!": "%21",
22324    "'": "%27",
22325    "(": "%28",
22326    ")": "%29",
22327    "~": "%7E",
22328    "%20": "+",
22329    "%00": "\0"
22330  };
22331  return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer2(match) {
22332    return charMap[match];
22333  });
22334}
22335function AxiosURLSearchParams(params, options2) {
22336  this._pairs = [];
22337  params && toFormData$1(params, this, options2);
22338}
22339const prototype = AxiosURLSearchParams.prototype;
22340prototype.append = function append(name, value) {
22341  this._pairs.push([name, value]);
22342};
22343prototype.toString = function toString2(encoder) {
22344  const _encode = encoder ? function(value) {
22345    return encoder.call(this, value, encode$1);
22346  } : encode$1;
22347  return this._pairs.map(function each(pair) {
22348    return _encode(pair[0]) + "=" + _encode(pair[1]);
22349  }, "").join("&");
22350};
22351function encode(val) {
22352  return encodeURIComponent(val).replace(/%3A/gi, ":").replace(/%24/g, "$").replace(/%2C/gi, ",").replace(/%20/g, "+").replace(/%5B/gi, "[").replace(/%5D/gi, "]");
22353}
22354function buildURL(url, params, options2) {
22355  if (!params) {
22356    return url;
22357  }
22358  const _encode = options2 && options2.encode || encode;
22359  if (utils$1.isFunction(options2)) {
22360    options2 = {
22361      serialize: options2
22362    };
22363  }
22364  const serializeFn = options2 && options2.serialize;
22365  let serializedParams;
22366  if (serializeFn) {
22367    serializedParams = serializeFn(params, options2);
22368  } else {
22369    serializedParams = utils$1.isURLSearchParams(params) ? params.toString() : new AxiosURLSearchParams(params, options2).toString(_encode);
22370  }
22371  if (serializedParams) {
22372    const hashmarkIndex = url.indexOf("#");
22373    if (hashmarkIndex !== -1) {
22374      url = url.slice(0, hashmarkIndex);
22375    }
22376    url += (url.indexOf("?") === -1 ? "?" : "&") + serializedParams;
22377  }
22378  return url;
22379}
22380class InterceptorManager {
22381  constructor() {
22382    this.handlers = [];
22383  }
22384  /**
22385   * Add a new interceptor to the stack
22386   *
22387   * @param {Function} fulfilled The function to handle `then` for a `Promise`
22388   * @param {Function} rejected The function to handle `reject` for a `Promise`
22389   *
22390   * @return {Number} An ID used to remove interceptor later
22391   */
22392  use(fulfilled, rejected, options2) {
22393    this.handlers.push({
22394      fulfilled,
22395      rejected,
22396      synchronous: options2 ? options2.synchronous : false,
22397      runWhen: options2 ? options2.runWhen : null
22398    });
22399    return this.handlers.length - 1;
22400  }
22401  /**
22402   * Remove an interceptor from the stack
22403   *
22404   * @param {Number} id The ID that was returned by `use`
22405   *
22406   * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise
22407   */
22408  eject(id) {
22409    if (this.handlers[id]) {
22410      this.handlers[id] = null;
22411    }
22412  }
22413  /**
22414   * Clear all interceptors from the stack
22415   *
22416   * @returns {void}
22417   */
22418  clear() {
22419    if (this.handlers) {
22420      this.handlers = [];
22421    }
22422  }
22423  /**
22424   * Iterate over all the registered interceptors
22425   *
22426   * This method is particularly useful for skipping over any
22427   * interceptors that may have become `null` calling `eject`.
22428   *
22429   * @param {Function} fn The function to call for each interceptor
22430   *
22431   * @returns {void}
22432   */
22433  forEach(fn) {
22434    utils$1.forEach(this.handlers, function forEachHandler(h2) {
22435      if (h2 !== null) {
22436        fn(h2);
22437      }
22438    });
22439  }
22440}
22441const transitionalDefaults = {
22442  silentJSONParsing: true,
22443  forcedJSONParsing: true,
22444  clarifyTimeoutError: false
22445};
22446const URLSearchParams$1 = typeof URLSearchParams !== "undefined" ? URLSearchParams : AxiosURLSearchParams;
22447const FormData$1 = typeof FormData !== "undefined" ? FormData : null;
22448const Blob$1 = typeof Blob !== "undefined" ? Blob : null;
22449const platform$1 = {
22450  isBrowser: true,
22451  classes: {
22452    URLSearchParams: URLSearchParams$1,
22453    FormData: FormData$1,
22454    Blob: Blob$1
22455  },
22456  protocols: ["http", "https", "file", "blob", "url", "data"]
22457};
22458const hasBrowserEnv = typeof window !== "undefined" && typeof document !== "undefined";
22459const _navigator = typeof navigator === "object" && navigator || void 0;
vendor: 5,274 bytes, lines 22460-22605
22460const hasStandardBrowserEnv = hasBrowserEnv && (!_navigator || ["ReactNative", "NativeScript", "NS"].indexOf(_navigator.product) < 0);
22461const hasStandardBrowserWebWorkerEnv = (() => {
22462  return typeof WorkerGlobalScope !== "undefined" && // eslint-disable-next-line no-undef
22463  self instanceof WorkerGlobalScope && typeof self.importScripts === "function";
22464})();
22465const origin = hasBrowserEnv && window.location.href || "http://localhost";
22466const utils = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
22467  __proto__: null,
22468  hasBrowserEnv,
22469  hasStandardBrowserEnv,
22470  hasStandardBrowserWebWorkerEnv,
22471  navigator: _navigator,
22472  origin
22473}, Symbol.toStringTag, { value: "Module" }));
22474const platform = {
22475  ...utils,
22476  ...platform$1
22477};
22478function toURLEncodedForm(data, options2) {
22479  return toFormData$1(data, new platform.classes.URLSearchParams(), Object.assign({
22480    visitor: function(value, key, path, helpers) {
22481      if (platform.isNode && utils$1.isBuffer(value)) {
22482        this.append(key, value.toString("base64"));
22483        return false;
22484      }
22485      return helpers.defaultVisitor.apply(this, arguments);
22486    }
22487  }, options2));
22488}
22489function parsePropPath(name) {
22490  return utils$1.matchAll(/\w+|\[(\w*)]/g, name).map((match) => {
22491    return match[0] === "[]" ? "" : match[1] || match[0];
22492  });
22493}
22494function arrayToObject(arr) {
22495  const obj = {};
22496  const keys = Object.keys(arr);
22497  let i;
22498  const len = keys.length;
22499  let key;
22500  for (i = 0; i < len; i++) {
22501    key = keys[i];
22502    obj[key] = arr[key];
22503  }
22504  return obj;
22505}
22506function formDataToJSON(formData) {
22507  function buildPath(path, value, target, index2) {
22508    let name = path[index2++];
22509    if (name === "__proto__") return true;
22510    const isNumericKey = Number.isFinite(+name);
22511    const isLast = index2 >= path.length;
22512    name = !name && utils$1.isArray(target) ? target.length : name;
22513    if (isLast) {
22514      if (utils$1.hasOwnProp(target, name)) {
22515        target[name] = [target[name], value];
22516      } else {
22517        target[name] = value;
22518      }
22519      return !isNumericKey;
22520    }
22521    if (!target[name] || !utils$1.isObject(target[name])) {
22522      target[name] = [];
22523    }
22524    const result = buildPath(path, value, target[name], index2);
22525    if (result && utils$1.isArray(target[name])) {
22526      target[name] = arrayToObject(target[name]);
22527    }
22528    return !isNumericKey;
22529  }
22530  if (utils$1.isFormData(formData) && utils$1.isFunction(formData.entries)) {
22531    const obj = {};
22532    utils$1.forEachEntry(formData, (name, value) => {
22533      buildPath(parsePropPath(name), value, obj, 0);
22534    });
22535    return obj;
22536  }
22537  return null;
22538}
22539function stringifySafely(rawValue, parser, encoder) {
22540  if (utils$1.isString(rawValue)) {
22541    try {
22542      (parser || JSON.parse)(rawValue);
22543      return utils$1.trim(rawValue);
22544    } catch (e) {
22545      if (e.name !== "SyntaxError") {
22546        throw e;
22547      }
22548    }
22549  }
22550  return (encoder || JSON.stringify)(rawValue);
22551}
22552const defaults$1 = {
22553  transitional: transitionalDefaults,
22554  adapter: ["xhr", "http", "fetch"],
22555  transformRequest: [function transformRequest(data, headers) {
22556    const contentType = headers.getContentType() || "";
22557    const hasJSONContentType = contentType.indexOf("application/json") > -1;
22558    const isObjectPayload = utils$1.isObject(data);
22559    if (isObjectPayload && utils$1.isHTMLForm(data)) {
22560      data = new FormData(data);
22561    }
22562    const isFormData2 = utils$1.isFormData(data);
22563    if (isFormData2) {
22564      return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;
22565    }
22566    if (utils$1.isArrayBuffer(data) || utils$1.isBuffer(data) || utils$1.isStream(data) || utils$1.isFile(data) || utils$1.isBlob(data) || utils$1.isReadableStream(data)) {
22567      return data;
22568    }
22569    if (utils$1.isArrayBufferView(data)) {
22570      return data.buffer;
22571    }
22572    if (utils$1.isURLSearchParams(data)) {
22573      headers.setContentType("application/x-www-form-urlencoded;charset=utf-8", false);
22574      return data.toString();
22575    }
22576    let isFileList2;
22577    if (isObjectPayload) {
22578      if (contentType.indexOf("application/x-www-form-urlencoded") > -1) {
22579        return toURLEncodedForm(data, this.formSerializer).toString();
22580      }
22581      if ((isFileList2 = utils$1.isFileList(data)) || contentType.indexOf("multipart/form-data") > -1) {
22582        const _FormData = this.env && this.env.FormData;
22583        return toFormData$1(
22584          isFileList2 ? { "files[]": data } : data,
22585          _FormData && new _FormData(),
22586          this.formSerializer
22587        );
22588      }
22589    }
22590    if (isObjectPayload || hasJSONContentType) {
22591      headers.setContentType("application/json", false);
22592      return stringifySafely(data);
22593    }
22594    return data;
22595  }],
22596  transformResponse: [function transformResponse(data) {
22597    const transitional2 = this.transitional || defaults$1.transitional;
22598    const forcedJSONParsing = transitional2 && transitional2.forcedJSONParsing;
22599    const JSONRequested = this.responseType === "json";
22600    if (utils$1.isResponse(data) || utils$1.isReadableStream(data)) {
22601      return data;
22602    }
22603    if (data && utils$1.isString(data) && (forcedJSONParsing && !this.responseType || JSONRequested)) {
22604      const silentJSONParsing = transitional2 && transitional2.silentJSONParsing;
22605      const strictJSONParsing = !silentJSONParsing && JSONRequested;
vendor: 4,153 bytes, lines 22606-22755
22606      try {
22607        return JSON.parse(data);
22608      } catch (e) {
22609        if (strictJSONParsing) {
22610          if (e.name === "SyntaxError") {
22611            throw AxiosError$1.from(e, AxiosError$1.ERR_BAD_RESPONSE, this, null, this.response);
22612          }
22613          throw e;
22614        }
22615      }
22616    }
22617    return data;
22618  }],
22619  /**
22620   * A timeout in milliseconds to abort a request. If set to 0 (default) a
22621   * timeout is not created.
22622   */
22623  timeout: 0,
22624  xsrfCookieName: "XSRF-TOKEN",
22625  xsrfHeaderName: "X-XSRF-TOKEN",
22626  maxContentLength: -1,
22627  maxBodyLength: -1,
22628  env: {
22629    FormData: platform.classes.FormData,
22630    Blob: platform.classes.Blob
22631  },
22632  validateStatus: function validateStatus(status) {
22633    return status >= 200 && status < 300;
22634  },
22635  headers: {
22636    common: {
22637      "Accept": "application/json, text/plain, */*",
22638      "Content-Type": void 0
22639    }
22640  }
22641};
22642utils$1.forEach(["delete", "get", "head", "post", "put", "patch"], (method) => {
22643  defaults$1.headers[method] = {};
22644});
22645const ignoreDuplicateOf = utils$1.toObjectSet([
22646  "age",
22647  "authorization",
22648  "content-length",
22649  "content-type",
22650  "etag",
22651  "expires",
22652  "from",
22653  "host",
22654  "if-modified-since",
22655  "if-unmodified-since",
22656  "last-modified",
22657  "location",
22658  "max-forwards",
22659  "proxy-authorization",
22660  "referer",
22661  "retry-after",
22662  "user-agent"
22663]);
22664const parseHeaders = (rawHeaders) => {
22665  const parsed = {};
22666  let key;
22667  let val;
22668  let i;
22669  rawHeaders && rawHeaders.split("\n").forEach(function parser(line) {
22670    i = line.indexOf(":");
22671    key = line.substring(0, i).trim().toLowerCase();
22672    val = line.substring(i + 1).trim();
22673    if (!key || parsed[key] && ignoreDuplicateOf[key]) {
22674      return;
22675    }
22676    if (key === "set-cookie") {
22677      if (parsed[key]) {
22678        parsed[key].push(val);
22679      } else {
22680        parsed[key] = [val];
22681      }
22682    } else {
22683      parsed[key] = parsed[key] ? parsed[key] + ", " + val : val;
22684    }
22685  });
22686  return parsed;
22687};
22688const $internals = Symbol("internals");
22689function normalizeHeader(header) {
22690  return header && String(header).trim().toLowerCase();
22691}
22692function normalizeValue(value) {
22693  if (value === false || value == null) {
22694    return value;
22695  }
22696  return utils$1.isArray(value) ? value.map(normalizeValue) : String(value);
22697}
22698function parseTokens(str) {
22699  const tokens = /* @__PURE__ */ Object.create(null);
22700  const tokensRE = /([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g;
22701  let match;
22702  while (match = tokensRE.exec(str)) {
22703    tokens[match[1]] = match[2];
22704  }
22705  return tokens;
22706}
22707const isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());
22708function matchHeaderValue(context, value, header, filter2, isHeaderNameFilter) {
22709  if (utils$1.isFunction(filter2)) {
22710    return filter2.call(this, value, header);
22711  }
22712  if (isHeaderNameFilter) {
22713    value = header;
22714  }
22715  if (!utils$1.isString(value)) return;
22716  if (utils$1.isString(filter2)) {
22717    return value.indexOf(filter2) !== -1;
22718  }
22719  if (utils$1.isRegExp(filter2)) {
22720    return filter2.test(value);
22721  }
22722}
22723function formatHeader(header) {
22724  return header.trim().toLowerCase().replace(/([a-z\d])(\w*)/g, (w, char, str) => {
22725    return char.toUpperCase() + str;
22726  });
22727}
22728function buildAccessors(obj, header) {
22729  const accessorName = utils$1.toCamelCase(" " + header);
22730  ["get", "set", "has"].forEach((methodName) => {
22731    Object.defineProperty(obj, methodName + accessorName, {
22732      value: function(arg1, arg2, arg3) {
22733        return this[methodName].call(this, header, arg1, arg2, arg3);
22734      },
22735      configurable: true
22736    });
22737  });
22738}
22739let AxiosHeaders$1 = class AxiosHeaders {
22740  constructor(headers) {
22741    headers && this.set(headers);
22742  }
22743  set(header, valueOrRewrite, rewrite) {
22744    const self2 = this;
22745    function setHeader(_value, _header, _rewrite) {
22746      const lHeader = normalizeHeader(_header);
22747      if (!lHeader) {
22748        throw new Error("header name must be a non-empty string");
22749      }
22750      const key = utils$1.findKey(self2, lHeader);
22751      if (!key || self2[key] === void 0 || _rewrite === true || _rewrite === void 0 && self2[key] !== false) {
22752        self2[key || _header] = normalizeValue(_value);
22753      }
22754    }
22755    const setHeaders = (headers, _rewrite) =>
vendor: 5,218 bytes, lines 22755-22918
22755 utils$1.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));
22756    if (utils$1.isPlainObject(header) || header instanceof this.constructor) {
22757      setHeaders(header, valueOrRewrite);
22758    } else if (utils$1.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {
22759      setHeaders(parseHeaders(header), valueOrRewrite);
22760    } else if (utils$1.isObject(header) && utils$1.isIterable(header)) {
22761      let obj = {}, dest, key;
22762      for (const entry of header) {
22763        if (!utils$1.isArray(entry)) {
22764          throw TypeError("Object iterator must return a key-value pair");
22765        }
22766        obj[key = entry[0]] = (dest = obj[key]) ? utils$1.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]] : entry[1];
22767      }
22768      setHeaders(obj, valueOrRewrite);
22769    } else {
22770      header != null && setHeader(valueOrRewrite, header, rewrite);
22771    }
22772    return this;
22773  }
22774  get(header, parser) {
22775    header = normalizeHeader(header);
22776    if (header) {
22777      const key = utils$1.findKey(this, header);
22778      if (key) {
22779        const value = this[key];
22780        if (!parser) {
22781          return value;
22782        }
22783        if (parser === true) {
22784          return parseTokens(value);
22785        }
22786        if (utils$1.isFunction(parser)) {
22787          return parser.call(this, value, key);
22788        }
22789        if (utils$1.isRegExp(parser)) {
22790          return parser.exec(value);
22791        }
22792        throw new TypeError("parser must be boolean|regexp|function");
22793      }
22794    }
22795  }
22796  has(header, matcher) {
22797    header = normalizeHeader(header);
22798    if (header) {
22799      const key = utils$1.findKey(this, header);
22800      return !!(key && this[key] !== void 0 && (!matcher || matchHeaderValue(this, this[key], key, matcher)));
22801    }
22802    return false;
22803  }
22804  delete(header, matcher) {
22805    const self2 = this;
22806    let deleted = false;
22807    function deleteHeader(_header) {
22808      _header = normalizeHeader(_header);
22809      if (_header) {
22810        const key = utils$1.findKey(self2, _header);
22811        if (key && (!matcher || matchHeaderValue(self2, self2[key], key, matcher))) {
22812          delete self2[key];
22813          deleted = true;
22814        }
22815      }
22816    }
22817    if (utils$1.isArray(header)) {
22818      header.forEach(deleteHeader);
22819    } else {
22820      deleteHeader(header);
22821    }
22822    return deleted;
22823  }
22824  clear(matcher) {
22825    const keys = Object.keys(this);
22826    let i = keys.length;
22827    let deleted = false;
22828    while (i--) {
22829      const key = keys[i];
22830      if (!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {
22831        delete this[key];
22832        deleted = true;
22833      }
22834    }
22835    return deleted;
22836  }
22837  normalize(format2) {
22838    const self2 = this;
22839    const headers = {};
22840    utils$1.forEach(this, (value, header) => {
22841      const key = utils$1.findKey(headers, header);
22842      if (key) {
22843        self2[key] = normalizeValue(value);
22844        delete self2[header];
22845        return;
22846      }
22847      const normalized = format2 ? formatHeader(header) : String(header).trim();
22848      if (normalized !== header) {
22849        delete self2[header];
22850      }
22851      self2[normalized] = normalizeValue(value);
22852      headers[normalized] = true;
22853    });
22854    return this;
22855  }
22856  concat(...targets) {
22857    return this.constructor.concat(this, ...targets);
22858  }
22859  toJSON(asStrings) {
22860    const obj = /* @__PURE__ */ Object.create(null);
22861    utils$1.forEach(this, (value, header) => {
22862      value != null && value !== false && (obj[header] = asStrings && utils$1.isArray(value) ? value.join(", ") : value);
22863    });
22864    return obj;
22865  }
22866  [Symbol.iterator]() {
22867    return Object.entries(this.toJSON())[Symbol.iterator]();
22868  }
22869  toString() {
22870    return Object.entries(this.toJSON()).map(([header, value]) => header + ": " + value).join("\n");
22871  }
22872  getSetCookie() {
22873    return this.get("set-cookie") || [];
22874  }
22875  get [Symbol.toStringTag]() {
22876    return "AxiosHeaders";
22877  }
22878  static from(thing) {
22879    return thing instanceof this ? thing : new this(thing);
22880  }
22881  static concat(first, ...targets) {
22882    const computed2 = new this(first);
22883    targets.forEach((target) => computed2.set(target));
22884    return computed2;
22885  }
22886  static accessor(header) {
22887    const internals = this[$internals] = this[$internals] = {
22888      accessors: {}
22889    };
22890    const accessors = internals.accessors;
22891    const prototype2 = this.prototype;
22892    function defineAccessor(_header) {
22893      const lHeader = normalizeHeader(_header);
22894      if (!accessors[lHeader]) {
22895        buildAccessors(prototype2, _header);
22896        accessors[lHeader] = true;
22897      }
22898    }
22899    utils$1.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);
22900    return this;
22901  }
22902};
22903AxiosHeaders$1.accessor(["Content-Type", "Content-Length", "Accept", "Accept-Encoding", "User-Agent", "Authorization"]);
22904utils$1.reduceDescriptors(AxiosHeaders$1.prototype, ({ value }, key) => {
22905  let mapped = key[0].toUpperCase() + key.slice(1);
22906  return {
22907    get: () => value,
22908    set(headerValue) {
22909      this[mapped] = headerValue;
22910    }
22911  };
22912});
22913utils$1.freezeMethods(AxiosHeaders$1);
22914function transformData(fns, response) {
22915  const config = this || defaults$1;
22916  const context = response || config;
22917  const headers = AxiosHeaders$1.from(context.headers);
22918  let data = context.data;
vendor: 4,165 bytes, lines 22919-23055
22919  utils$1.forEach(fns, function transform2(fn) {
22920    data = fn.call(config, data, headers.normalize(), response ? response.status : void 0);
22921  });
22922  headers.normalize();
22923  return data;
22924}
22925function isCancel$1(value) {
22926  return !!(value && value.__CANCEL__);
22927}
22928function CanceledError$1(message, config, request) {
22929  AxiosError$1.call(this, message == null ? "canceled" : message, AxiosError$1.ERR_CANCELED, config, request);
22930  this.name = "CanceledError";
22931}
22932utils$1.inherits(CanceledError$1, AxiosError$1, {
22933  __CANCEL__: true
22934});
22935function settle(resolve2, reject, response) {
22936  const validateStatus2 = response.config.validateStatus;
22937  if (!response.status || !validateStatus2 || validateStatus2(response.status)) {
22938    resolve2(response);
22939  } else {
22940    reject(new AxiosError$1(
22941      "Request failed with status code " + response.status,
22942      [AxiosError$1.ERR_BAD_REQUEST, AxiosError$1.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],
22943      response.config,
22944      response.request,
22945      response
22946    ));
22947  }
22948}
22949function parseProtocol(url) {
22950  const match = /^([-+\w]{1,25})(:?\/\/|:)/.exec(url);
22951  return match && match[1] || "";
22952}
22953function speedometer(samplesCount, min) {
22954  samplesCount = samplesCount || 10;
22955  const bytes = new Array(samplesCount);
22956  const timestamps = new Array(samplesCount);
22957  let head = 0;
22958  let tail = 0;
22959  let firstSampleTS;
22960  min = min !== void 0 ? min : 1e3;
22961  return function push(chunkLength) {
22962    const now2 = Date.now();
22963    const startedAt = timestamps[tail];
22964    if (!firstSampleTS) {
22965      firstSampleTS = now2;
22966    }
22967    bytes[head] = chunkLength;
22968    timestamps[head] = now2;
22969    let i = tail;
22970    let bytesCount = 0;
22971    while (i !== head) {
22972      bytesCount += bytes[i++];
22973      i = i % samplesCount;
22974    }
22975    head = (head + 1) % samplesCount;
22976    if (head === tail) {
22977      tail = (tail + 1) % samplesCount;
22978    }
22979    if (now2 - firstSampleTS < min) {
22980      return;
22981    }
22982    const passed = startedAt && now2 - startedAt;
22983    return passed ? Math.round(bytesCount * 1e3 / passed) : void 0;
22984  };
22985}
22986function throttle$2(fn, freq) {
22987  let timestamp = 0;
22988  let threshold = 1e3 / freq;
22989  let lastArgs;
22990  let timer;
22991  const invoke = (args, now2 = Date.now()) => {
22992    timestamp = now2;
22993    lastArgs = null;
22994    if (timer) {
22995      clearTimeout(timer);
22996      timer = null;
22997    }
22998    fn.apply(null, args);
22999  };
23000  const throttled = (...args) => {
23001    const now2 = Date.now();
23002    const passed = now2 - timestamp;
23003    if (passed >= threshold) {
23004      invoke(args, now2);
23005    } else {
23006      lastArgs = args;
23007      if (!timer) {
23008        timer = setTimeout(() => {
23009          timer = null;
23010          invoke(lastArgs);
23011        }, threshold - passed);
23012      }
23013    }
23014  };
23015  const flush = () => lastArgs && invoke(lastArgs);
23016  return [throttled, flush];
23017}
23018const progressEventReducer = (listener, isDownloadStream, freq = 3) => {
23019  let bytesNotified = 0;
23020  const _speedometer = speedometer(50, 250);
23021  return throttle$2((e) => {
23022    const loaded = e.loaded;
23023    const total = e.lengthComputable ? e.total : void 0;
23024    const progressBytes = loaded - bytesNotified;
23025    const rate = _speedometer(progressBytes);
23026    const inRange = loaded <= total;
23027    bytesNotified = loaded;
23028    const data = {
23029      loaded,
23030      total,
23031      progress: total ? loaded / total : void 0,
23032      bytes: progressBytes,
23033      rate: rate ? rate : void 0,
23034      estimated: rate && total && inRange ? (total - loaded) / rate : void 0,
23035      event: e,
23036      lengthComputable: total != null,
23037      [isDownloadStream ? "download" : "upload"]: true
23038    };
23039    listener(data);
23040  }, freq);
23041};
23042const progressEventDecorator = (total, throttled) => {
23043  const lengthComputable = total != null;
23044  return [(loaded) => throttled[0]({
23045    lengthComputable,
23046    total,
23047    loaded
23048  }), throttled[1]];
23049};
23050const asyncDecorator = (fn) => (...args) => utils$1.asap(() => fn(...args));
23051const isURLSameOrigin = platform.hasStandardBrowserEnv ? /* @__PURE__ */ ((origin2, isMSIE) => (url) => {
23052  url = new URL(url, platform.origin);
23053  return origin2.protocol === url.protocol && origin2.host === url.host && (isMSIE || origin2.port === url.port);
23054})(
23055  new URL(platform.origin),
vendor: 3,593 bytes, lines 23056-23161
23056  platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)
23057) : () => true;
23058const cookies = platform.hasStandardBrowserEnv ? (
23059  // Standard browser envs support document.cookie
23060  {
23061    write(name, value, expires, path, domain, secure) {
23062      const cookie = [name + "=" + encodeURIComponent(value)];
23063      utils$1.isNumber(expires) && cookie.push("expires=" + new Date(expires).toGMTString());
23064      utils$1.isString(path) && cookie.push("path=" + path);
23065      utils$1.isString(domain) && cookie.push("domain=" + domain);
23066      secure === true && cookie.push("secure");
23067      document.cookie = cookie.join("; ");
23068    },
23069    read(name) {
23070      const match = document.cookie.match(new RegExp("(^|;\\s*)(" + name + ")=([^;]*)"));
23071      return match ? decodeURIComponent(match[3]) : null;
23072    },
23073    remove(name) {
23074      this.write(name, "", Date.now() - 864e5);
23075    }
23076  }
23077) : (
23078  // Non-standard browser env (web workers, react-native) lack needed support.
23079  {
23080    write() {
23081    },
23082    read() {
23083      return null;
23084    },
23085    remove() {
23086    }
23087  }
23088);
23089function isAbsoluteURL(url) {
23090  return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url);
23091}
23092function combineURLs(baseURL2, relativeURL) {
23093  return relativeURL ? baseURL2.replace(/\/?\/$/, "") + "/" + relativeURL.replace(/^\/+/, "") : baseURL2;
23094}
23095function buildFullPath(baseURL2, requestedURL, allowAbsoluteUrls) {
23096  let isRelativeUrl = !isAbsoluteURL(requestedURL);
23097  if (baseURL2 && (isRelativeUrl || allowAbsoluteUrls == false)) {
23098    return combineURLs(baseURL2, requestedURL);
23099  }
23100  return requestedURL;
23101}
23102const headersToObject = (thing) => thing instanceof AxiosHeaders$1 ? { ...thing } : thing;
23103function mergeConfig$1(config1, config2) {
23104  config2 = config2 || {};
23105  const config = {};
23106  function getMergedValue(target, source, prop, caseless) {
23107    if (utils$1.isPlainObject(target) && utils$1.isPlainObject(source)) {
23108      return utils$1.merge.call({ caseless }, target, source);
23109    } else if (utils$1.isPlainObject(source)) {
23110      return utils$1.merge({}, source);
23111    } else if (utils$1.isArray(source)) {
23112      return source.slice();
23113    }
23114    return source;
23115  }
23116  function mergeDeepProperties(a, b, prop, caseless) {
23117    if (!utils$1.isUndefined(b)) {
23118      return getMergedValue(a, b, prop, caseless);
23119    } else if (!utils$1.isUndefined(a)) {
23120      return getMergedValue(void 0, a, prop, caseless);
23121    }
23122  }
23123  function valueFromConfig2(a, b) {
23124    if (!utils$1.isUndefined(b)) {
23125      return getMergedValue(void 0, b);
23126    }
23127  }
23128  function defaultToConfig2(a, b) {
23129    if (!utils$1.isUndefined(b)) {
23130      return getMergedValue(void 0, b);
23131    } else if (!utils$1.isUndefined(a)) {
23132      return getMergedValue(void 0, a);
23133    }
23134  }
23135  function mergeDirectKeys(a, b, prop) {
23136    if (prop in config2) {
23137      return getMergedValue(a, b);
23138    } else if (prop in config1) {
23139      return getMergedValue(void 0, a);
23140    }
23141  }
23142  const mergeMap = {
23143    url: valueFromConfig2,
23144    method: valueFromConfig2,
23145    data: valueFromConfig2,
23146    baseURL: defaultToConfig2,
23147    transformRequest: defaultToConfig2,
23148    transformResponse: defaultToConfig2,
23149    paramsSerializer: defaultToConfig2,
23150    timeout: defaultToConfig2,
23151    timeoutMessage: defaultToConfig2,
23152    withCredentials: defaultToConfig2,
23153    withXSRFToken: defaultToConfig2,
23154    adapter: defaultToConfig2,
23155    responseType: defaultToConfig2,
23156    xsrfCookieName: defaultToConfig2,
23157    xsrfHeaderName: defaultToConfig2,
23158    onUploadProgress: defaultToConfig2,
23159    onDownloadProgress: defaultToConfig2,
23160    decompress: defaultToConfig2,
23161    maxContentLength: defaultToConfig2,
23162    maxBodyLength: defaultToConfig2,
23163    beforeRedirect: defaultToConfig2,
23164    transport: defaultToConfig2,
23165    httpAgent: defaultToConfig2,
23166    httpsAgent: defaultToConfig2,
23167    cancelToken: defaultToConfig2,
23168    socketPath: defaultToConfig2,
23169    responseEncoding: defaultToConfig2,
23170    validateStatus: mergeDirectKeys,
23171    headers: (a, b, prop) => mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true)
23172  };
23173  utils$1.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {
23174    const merge2 = mergeMap[prop] || mergeDeepProperties;
23175    const configValue = merge2(config1[prop], config2[prop], prop);
23176    utils$1.isUndefined(configValue) && merge2 !== mergeDirectKeys || (config[prop] = configValue);
23177  });
23178  return config;
23179}
23180const resolveConfig = (config) => {
23181  const newConfig = mergeConfig$1({}, config);
23182  let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;
23183  newConfig.headers = headers = AxiosHeaders$1.from(headers);
23184  newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);
23185  if (auth) {
23186    headers.set(
23187      "Authorization",
23188      "Basic " + btoa((auth.username || "") + ":" + (auth.password ? unescape(encodeURIComponent(auth.password)) : ""))
23189    );
23190  }
23191  let contentType;
23192  if (utils$1.isFormData(data)) {
23193    if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {
23194      headers.setContentType(void 0);
23195    } else if ((contentType = headers.getContentType()) !== false) {
23196      const [type, ...tokens] = contentType ? contentType.split(";").map((token) => token.trim()).filter(Boolean) : [];
23197      headers.setContentType([type || "multipart/form-data", ...tokens].join("; "));
23198    }
23199  }
23200  if (platform.hasStandardBrowserEnv) {
23201    withXSRFToken && utils$1.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));
23202    if (withXSRFToken || withXSRFToken !== false && isURLSameOrigin(newConfig.url)) {
23203      const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);
23204      if (xsrfValue) {
23205        headers.set(xsrfHeaderName, xsrfValue);
23206      }
23207    }
23208  }
23209  return newConfig;
23210};
23211const isXHRAdapterSupported = typeof XMLHttpRequest !== "undefined";
23212const xhrAdapter = isXHRAdapterSupported && function(config) {
23213  return new Promise(function dispatchXhrRequest(resolve2, reject) {
23214    const _config = resolveConfig(config);
23215    let requestData = _config.data;
23216    const requestHeaders = AxiosHeaders$1.from(_config.headers).normalize();
23217    let { responseType, onUploadProgress, onDownloadProgress } = _config;
23218    let onCanceled;
23219    let uploadThrottled, downloadThrottled;
23220    let flushUpload, flushDownload;
23221    function done() {
23222      flushUpload && flushUpload();
23223      flushDownload && flushDownload();
23224      _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);
23225      _config.signal && _config.signal.removeEventListener("abort", onCanceled);
23226    }
23227    let request = new XMLHttpRequest();
23228    request.open(_config.method.toUpperCase(), _config.url, true);
23229    request.timeout = _config.timeout;
23230    function onloadend() {
23231      if (!request) {
23232        return;
23233      }
23234      const responseHeaders = AxiosHeaders$1.from(
23235        "getAllResponseHeaders" in request && request.getAllResponseHeaders()
23236      );
23237      const responseData = !responseType || responseType === "text" || responseType === "json" ? request.responseText : request.response;
23238      const response = {
23239        data: responseData,
23240        status: request.status,
23241        statusText: request.statusText,
23242        headers: responseHeaders,
23243        config,
23244        request
23245      };
23246      settle(function _resolve(value) {
23247        resolve2(value);
23248        done();
23249      }, function _reject(err) {
23250        reject(err);
23251        done();
23252      }, response);
23253      request = null;
23254    }
23255    if ("onloadend" in request) {
23256      request.onloadend = onloadend;
23257    } else {
23258      request.onreadystatechange = function handleLoad() {
23259        if (!request || request.readyState !== 4) {
23260          return;
23261        }
23262        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf("file:") === 0)) {
23263          return;
23264        }
23265        setTimeout(onloadend);
23266      };
23267    }
23268    request.onabort = function handleAbort() {
23269      if (!request) {
23270        return;
23271      }
23272      reject(new AxiosError$1("Request aborted", AxiosError$1.ECONNABORTED, config, request));
23273      request = null;
23274    };
23275    request.onerror = function handleError2() {
23276      reject(new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request));
23277      request = null;
23278    };
23279    request.ontimeout = function handleTimeout() {
23280      let timeoutErrorMessage = _config.timeout ? "timeout of " + _config.timeout + "ms exceeded" : "timeout exceeded";
23281      const transitional2 = _config.transitional || transitionalDefaults;
23282      if (_config.timeoutErrorMessage) {
23283        timeoutErrorMessage = _config.timeoutErrorMessage;
23284      }
23285      reject(new AxiosError$1(
23286        timeoutErrorMessage,
23287        transitional2.clarifyTimeoutError ? AxiosError$1.ETIMEDOUT : AxiosError$1.ECONNABORTED,
23288        config,
23289        request
23290      ));
23291      request = null;
23292    };
23293    requestData === void 0 && requestHeaders.setContentType(null);
23294    if ("setRequestHeader" in request) {
vendor: 1,770 bytes, lines 23295-23338
23295      utils$1.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {
23296        request.setRequestHeader(key, val);
23297      });
23298    }
23299    if (!utils$1.isUndefined(_config.withCredentials)) {
23300      request.withCredentials = !!_config.withCredentials;
23301    }
23302    if (responseType && responseType !== "json") {
23303      request.responseType = _config.responseType;
23304    }
23305    if (onDownloadProgress) {
23306      [downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true);
23307      request.addEventListener("progress", downloadThrottled);
23308    }
23309    if (onUploadProgress && request.upload) {
23310      [uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress);
23311      request.upload.addEventListener("progress", uploadThrottled);
23312      request.upload.addEventListener("loadend", flushUpload);
23313    }
23314    if (_config.cancelToken || _config.signal) {
23315      onCanceled = (cancel) => {
23316        if (!request) {
23317          return;
23318        }
23319        reject(!cancel || cancel.type ? new CanceledError$1(null, config, request) : cancel);
23320        request.abort();
23321        request = null;
23322      };
23323      _config.cancelToken && _config.cancelToken.subscribe(onCanceled);
23324      if (_config.signal) {
23325        _config.signal.aborted ? onCanceled() : _config.signal.addEventListener("abort", onCanceled);
23326      }
23327    }
23328    const protocol = parseProtocol(_config.url);
23329    if (protocol && platform.protocols.indexOf(protocol) === -1) {
23330      reject(new AxiosError$1("Unsupported protocol " + protocol + ":", AxiosError$1.ERR_BAD_REQUEST, config));
23331      return;
23332    }
23333    request.send(requestData || null);
23334  });
23335};
23336const composeSignals = (signals, timeout) => {
23337  const { length } = signals = signals ? signals.filter(Boolean) : [];
23338  if (timeout || length) {
vendor: 3,023 bytes, lines 23339-23446
23339    let controller = new AbortController();
23340    let aborted;
23341    const onabort = function(reason) {
23342      if (!aborted) {
23343        aborted = true;
23344        unsubscribe();
23345        const err = reason instanceof Error ? reason : this.reason;
23346        controller.abort(err instanceof AxiosError$1 ? err : new CanceledError$1(err instanceof Error ? err.message : err));
23347      }
23348    };
23349    let timer = timeout && setTimeout(() => {
23350      timer = null;
23351      onabort(new AxiosError$1(`timeout ${timeout} of ms exceeded`, AxiosError$1.ETIMEDOUT));
23352    }, timeout);
23353    const unsubscribe = () => {
23354      if (signals) {
23355        timer && clearTimeout(timer);
23356        timer = null;
23357        signals.forEach((signal2) => {
23358          signal2.unsubscribe ? signal2.unsubscribe(onabort) : signal2.removeEventListener("abort", onabort);
23359        });
23360        signals = null;
23361      }
23362    };
23363    signals.forEach((signal2) => signal2.addEventListener("abort", onabort));
23364    const { signal } = controller;
23365    signal.unsubscribe = () => utils$1.asap(unsubscribe);
23366    return signal;
23367  }
23368};
23369const streamChunk = function* (chunk, chunkSize) {
23370  let len = chunk.byteLength;
23371  if (len < chunkSize) {
23372    yield chunk;
23373    return;
23374  }
23375  let pos = 0;
23376  let end;
23377  while (pos < len) {
23378    end = pos + chunkSize;
23379    yield chunk.slice(pos, end);
23380    pos = end;
23381  }
23382};
23383const readBytes = async function* (iterable, chunkSize) {
23384  for await (const chunk of readStream(iterable)) {
23385    yield* streamChunk(chunk, chunkSize);
23386  }
23387};
23388const readStream = async function* (stream) {
23389  if (stream[Symbol.asyncIterator]) {
23390    yield* stream;
23391    return;
23392  }
23393  const reader = stream.getReader();
23394  try {
23395    for (; ; ) {
23396      const { done, value } = await reader.read();
23397      if (done) {
23398        break;
23399      }
23400      yield value;
23401    }
23402  } finally {
23403    await reader.cancel();
23404  }
23405};
23406const trackStream = (stream, chunkSize, onProgress, onFinish) => {
23407  const iterator2 = readBytes(stream, chunkSize);
23408  let bytes = 0;
23409  let done;
23410  let _onFinish = (e) => {
23411    if (!done) {
23412      done = true;
23413      onFinish && onFinish(e);
23414    }
23415  };
23416  return new ReadableStream({
23417    async pull(controller) {
23418      try {
23419        const { done: done2, value } = await iterator2.next();
23420        if (done2) {
23421          _onFinish();
23422          controller.close();
23423          return;
23424        }
23425        let len = value.byteLength;
23426        if (onProgress) {
23427          let loadedBytes = bytes += len;
23428          onProgress(loadedBytes);
23429        }
23430        controller.enqueue(new Uint8Array(value));
23431      } catch (err) {
23432        _onFinish(err);
23433        throw err;
23434      }
23435    },
23436    cancel(reason) {
23437      _onFinish(reason);
23438      return iterator2.return();
23439    }
23440  }, {
23441    highWaterMark: 2
23442  });
23443};
23444const isFetchSupported = typeof fetch === "function" && typeof Request === "function" && typeof Response === "function";
23445const isReadableStreamSupported = isFetchSupported && typeof ReadableStream === "function";
23446const encodeText = isFetchSupported && (typeof TextEncoder === "function" ? /* @__P
23446URE__ */ ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) : async (str) => new Uint8Array(await new Response(str).arrayBuffer()));
23447const test = (fn, ...args) => {
23448  try {
23449    return !!fn(...args);
23450  } catch (e) {
23451    return false;
23452  }
23453};
23454const supportsRequestStream = isReadableStreamSupported && test(() => {
23455  let duplexAccessed = false;
23456  const hasContentType = new Request(platform.origin, {
23457    body: new ReadableStream(),
23458    method: "POST",
23459    get duplex() {
23460      duplexAccessed = true;
23461      return "half";
23462    }
23463  }).headers.has("Content-Type");
23464  return duplexAccessed && !hasContentType;
23465});
23466const DEFAULT_CHUNK_SIZE = 64 * 1024;
23467const supportsResponseStream = isReadableStreamSupported && test(() => utils$1.isReadableStream(new Response("").body));
23468const resolvers = {
23469  stream: supportsResponseStream && ((res) => res.body)
23470};
23471isFetchSupported && ((res) => {
23472  ["text", "arrayBuffer", "blob", "formData", "stream"].forEach((type) => {
23473    !resolvers[type] && (resolvers[type] = utils$1.isFunction(res[type]) ? (res2) => res2[type]() : (_, config) => {
23474      throw new AxiosError$1(`Response type '${type}' is not supported`, AxiosError$1.ERR_NOT_SUPPORT, config);
23475    });
23476  });
23477})(new Response());
23478const getBodyLength = async (body) => {
23479  if (body == null) {
23480    return 0;
23481  }
23482  if (utils$1.isBlob(body)) {
23483    return body.size;
23484  }
23485  if (utils$1.isSpecCompliantForm(body)) {
23486    const _request = new Request(platform.origin, {
23487      method: "POST",
23488      body
23489    });
23490    return (await _request.arrayBuffer()).byteLength;
23491  }
23492  if (utils$1.isArrayBufferView(body) || utils$1.isArrayBuffer(body)) {
23493    return body.byteLength;
23494  }
23495  if (utils$1.isURLSearchParams(body)) {
23496    body = body + "";
23497  }
23498  if (utils$1.isString(body)) {
23499    return (await encodeText(body)).byteLength;
23500  }
23501};
23502const resolveBodyLength = async (headers, body) => {
23503  const length = utils$1.toFiniteNumber(headers.getContentLength());
23504  return length == null ? getBodyLength(body) : length;
23505};
23506const fetchAdapter = isFetchSupported && (async (config) => {
23507  let {
23508    url,
23509    method,
23510    data,
23511    signal,
23512    cancelToken,
23513    timeout,
23514    onDownloadProgress,
23515    onUploadProgress,
23516    responseType,
23517    headers,
23518    withCredentials = "same-origin",
23519    fetchOptions
23520  } = resolveConfig(config);
23521  responseType = responseType ? (responseType + "").toLowerCase() : "text";
23522  let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);
23523  let request;
23524  const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {
23525    composedSignal.unsubscribe();
23526  });
23527  let requestContentLength;
23528  try {
23529    if (onUploadProgress && supportsRequestStream && method !== "get" && method !== "head" && (requestContentLength = await resolveBodyLength(headers, data)) !== 0) {
23530      let _request = new Request(url, {
23531        method: "POST",
23532        body: data,
23533        duplex: "half"
23534      });
23535      let contentTypeHeader;
23536      if (utils$1.isFormData(data) && (contentTypeHeader = _request.headers.get("content-type"))) {
23537        headers.setContentType(contentTypeHeader);
23538      }
23539      if (_request.body) {
23540        const [onProgress, flush] = progressEventDecorator(
23541          requestContentLength,
23542          progressEventReducer(asyncDecorator(onUploadProgress))
23543        );
23544        data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);
23545      }
23546    }
23547    if (!utils$1.isString(withCredentials)) {
23548      withCredentials = withCredentials ? "include" : "omit";
23549    }
23550    const isCredentialsSupported = "credentials" in Request.prototype;
23551    request = new Request(url, {
23552      ...fetchOptions,
23553      signal: composedSignal,
23554      method: method.toUpperCase(),
23555      headers: headers.normalize().toJSON(),
23556      body: data,
23557      duplex: "half",
23558      credentials: isCredentialsSupported ? withCredentials : void 0
23559    });
23560    let response = await fetch(request);
23561    const isStreamResponse = supportsResponseStream && (responseType === "stream" || responseType === "response");
23562    if (supportsResponseStream && (onDownloadProgress || isStreamResponse && unsubscribe)) {
23563      const options2 = {};
23564      ["status", "statusText", "headers"].forEach((prop) => {
23565        options2[prop] = response[prop];
23566      });
23567      const responseContentLength = utils$1.toFiniteNumber(response.headers.get("content-length"));
23568      const [onProgress, flush] = onDownloadProgress && progressEventDecorator(
23569        responseContentLength,
23570        progressEventReducer(asyncDecorator(onDownloadProgress), true)
23571      ) || [];
23572      response = new Response(
23573        trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {
23574          flush && flush();
23575          unsubscribe && unsubscribe();
23576        }),
23577        options2
23578      );
23579    }
23580    responseType = responseType || "text";
23581    let responseData = await resolvers[utils$1.findKey(resolvers, responseType) || "text"](response, config);
23582    !isStreamResponse && unsubscribe && unsubscribe();
23583    return await new Promise((resolve2, reject) => {
23584      settle(resolve2, reject, {
23585        data: responseData,
23586        headers: AxiosHeaders$1.from(response.headers),
23587        status: response.status,
23588        statusText: response.statusText,
23589        config,
23590        request
23591      });
23592    });
23593  } catch (err) {
23594    unsubscribe && unsubscribe();
23595    if (err && err.name === "TypeError" && /Load failed|fetch/i.test(err.message)) {
23596      throw Object.assign(
23597        new AxiosError$1("Network Error", AxiosError$1.ERR_NETWORK, config, request),
23598        {
23599          cause: err.cause || err
23600        }
23601      );
23602    }
23603    throw AxiosError$1.from(err, err && err.code, config, request);
23604  }
23605});
23606const knownAdapters = {
23607  http: httpAdapter,
23608  xhr: xhrAdapter,
23609  fetch: fetchAdapter
23610};
vendor: 7,739 bytes, lines 23611-23839
23611utils$1.forEach(knownAdapters, (fn, value) => {
23612  if (fn) {
23613    try {
23614      Object.defineProperty(fn, "name", { value });
23615    } catch (e) {
23616    }
23617    Object.defineProperty(fn, "adapterName", { value });
23618  }
23619});
23620const renderReason = (reason) => `- ${reason}`;
23621const isResolvedHandle = (adapter) => utils$1.isFunction(adapter) || adapter === null || adapter === false;
23622const adapters = {
23623  getAdapter: (adapters2) => {
23624    adapters2 = utils$1.isArray(adapters2) ? adapters2 : [adapters2];
23625    const { length } = adapters2;
23626    let nameOrAdapter;
23627    let adapter;
23628    const rejectedReasons = {};
23629    for (let i = 0; i < length; i++) {
23630      nameOrAdapter = adapters2[i];
23631      let id;
23632      adapter = nameOrAdapter;
23633      if (!isResolvedHandle(nameOrAdapter)) {
23634        adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];
23635        if (adapter === void 0) {
23636          throw new AxiosError$1(`Unknown adapter '${id}'`);
23637        }
23638      }
23639      if (adapter) {
23640        break;
23641      }
23642      rejectedReasons[id || "#" + i] = adapter;
23643    }
23644    if (!adapter) {
23645      const reasons = Object.entries(rejectedReasons).map(
23646        ([id, state2]) => `adapter ${id} ` + (state2 === false ? "is not supported by the environment" : "is not available in the build")
23647      );
23648      let s = length ? reasons.length > 1 ? "since :\n" + reasons.map(renderReason).join("\n") : " " + renderReason(reasons[0]) : "as no adapter specified";
23649      throw new AxiosError$1(
23650        `There is no suitable adapter to dispatch the request ` + s,
23651        "ERR_NOT_SUPPORT"
23652      );
23653    }
23654    return adapter;
23655  },
23656  adapters: knownAdapters
23657};
23658function throwIfCancellationRequested(config) {
23659  if (config.cancelToken) {
23660    config.cancelToken.throwIfRequested();
23661  }
23662  if (config.signal && config.signal.aborted) {
23663    throw new CanceledError$1(null, config);
23664  }
23665}
23666function dispatchRequest(config) {
23667  throwIfCancellationRequested(config);
23668  config.headers = AxiosHeaders$1.from(config.headers);
23669  config.data = transformData.call(
23670    config,
23671    config.transformRequest
23672  );
23673  if (["post", "put", "patch"].indexOf(config.method) !== -1) {
23674    config.headers.setContentType("application/x-www-form-urlencoded", false);
23675  }
23676  const adapter = adapters.getAdapter(config.adapter || defaults$1.adapter);
23677  return adapter(config).then(function onAdapterResolution(response) {
23678    throwIfCancellationRequested(config);
23679    response.data = transformData.call(
23680      config,
23681      config.transformResponse,
23682      response
23683    );
23684    response.headers = AxiosHeaders$1.from(response.headers);
23685    return response;
23686  }, function onAdapterRejection(reason) {
23687    if (!isCancel$1(reason)) {
23688      throwIfCancellationRequested(config);
23689      if (reason && reason.response) {
23690        reason.response.data = transformData.call(
23691          config,
23692          config.transformResponse,
23693          reason.response
23694        );
23695        reason.response.headers = AxiosHeaders$1.from(reason.response.headers);
23696      }
23697    }
23698    return Promise.reject(reason);
23699  });
23700}
23701const VERSION$2 = "1.9.0";
23702const validators$1 = {};
23703["object", "boolean", "number", "function", "string", "symbol"].forEach((type, i) => {
23704  validators$1[type] = function validator2(thing) {
23705    return typeof thing === type || "a" + (i < 1 ? "n " : " ") + type;
23706  };
23707});
23708const deprecatedWarnings = {};
23709validators$1.transitional = function transitional(validator2, version2, message) {
23710  function formatMessage(opt, desc) {
23711    return "[Axios v" + VERSION$2 + "] Transitional option '" + opt + "'" + desc + (message ? ". " + message : "");
23712  }
23713  return (value, opt, opts) => {
23714    if (validator2 === false) {
23715      throw new AxiosError$1(
23716        formatMessage(opt, " has been removed" + (version2 ? " in " + version2 : "")),
23717        AxiosError$1.ERR_DEPRECATED
23718      );
23719    }
23720    if (version2 && !deprecatedWarnings[opt]) {
23721      deprecatedWarnings[opt] = true;
23722      console.warn(
23723        formatMessage(
23724          opt,
23725          " has been deprecated since v" + version2 + " and will be removed in the near future"
23726        )
23727      );
23728    }
23729    return validator2 ? validator2(value, opt, opts) : true;
23730  };
23731};
23732validators$1.spelling = function spelling(correctSpelling) {
23733  return (value, opt) => {
23734    console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);
23735    return true;
23736  };
23737};
23738function assertOptions(options2, schema, allowUnknown) {
23739  if (typeof options2 !== "object") {
23740    throw new AxiosError$1("options must be an object", AxiosError$1.ERR_BAD_OPTION_VALUE);
23741  }
23742  const keys = Object.keys(options2);
23743  let i = keys.length;
23744  while (i-- > 0) {
23745    const opt = keys[i];
23746    const validator2 = schema[opt];
23747    if (validator2) {
23748      const value = options2[opt];
23749      const result = value === void 0 || validator2(value, opt, options2);
23750      if (result !== true) {
23751        throw new AxiosError$1("option " + opt + " must be " + result, AxiosError$1.ERR_BAD_OPTION_VALUE);
23752      }
23753      continue;
23754    }
23755    if (allowUnknown !== true) {
23756      throw new AxiosError$1("Unknown option " + opt, AxiosError$1.ERR_BAD_OPTION);
23757    }
23758  }
23759}
23760const validator = {
23761  assertOptions,
23762  validators: validators$1
23763};
23764const validators = validator.validators;
23765let Axios$1 = class Axios {
23766  constructor(instanceConfig) {
23767    this.defaults = instanceConfig || {};
23768    this.interceptors = {
23769      request: new InterceptorManager(),
23770      response: new InterceptorManager()
23771    };
23772  }
23773  /**
23774   * Dispatch a request
23775   *
23776   * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)
23777   * @param {?Object} config
23778   *
23779   * @returns {Promise} The Promise to be fulfilled
23780   */
23781  async request(configOrUrl, config) {
23782    try {
23783      return await this._request(configOrUrl, config);
23784    } catch (err) {
23785      if (err instanceof Error) {
23786        let dummy = {};
23787        Error.captureStackTrace ? Error.captureStackTrace(dummy) : dummy = new Error();
23788        const stack2 = dummy.stack ? dummy.stack.replace(/^.+\n/, "") : "";
23789        try {
23790          if (!err.stack) {
23791            err.stack = stack2;
23792          } else if (stack2 && !String(err.stack).endsWith(stack2.replace(/^.+\n.+\n/, ""))) {
23793            err.stack += "\n" + stack2;
23794          }
23795        } catch (e) {
23796        }
23797      }
23798      throw err;
23799    }
23800  }
23801  _request(configOrUrl, config) {
23802    if (typeof configOrUrl === "string") {
23803      config = config || {};
23804      config.url = configOrUrl;
23805    } else {
23806      config = configOrUrl || {};
23807    }
23808    config = mergeConfig$1(this.defaults, config);
23809    const { transitional: transitional2, paramsSerializer, headers } = config;
23810    if (transitional2 !== void 0) {
23811      validator.assertOptions(transitional2, {
23812        silentJSONParsing: validators.transitional(validators.boolean),
23813        forcedJSONParsing: validators.transitional(validators.boolean),
23814        clarifyTimeoutError: validators.transitional(validators.boolean)
23815      }, false);
23816    }
23817    if (paramsSerializer != null) {
23818      if (utils$1.isFunction(paramsSerializer)) {
23819        config.paramsSerializer = {
23820          serialize: paramsSerializer
23821        };
23822      } else {
23823        validator.assertOptions(paramsSerializer, {
23824          encode: validators.function,
23825          serialize: validators.function
23826        }, true);
23827      }
23828    }
23829    if (config.allowAbsoluteUrls !== void 0) ;
23830    else if (this.defaults.allowAbsoluteUrls !== void 0) {
23831      config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;
23832    } else {
23833      config.allowAbsoluteUrls = true;
23834    }
23835    validator.assertOptions(config, {
23836      baseUrl: validators.spelling("baseURL"),
23837      withXsrfToken: validators.spelling("withXSRFToken")
23838    }, true);
23839    config.method = (config.method || this.defaults.method || "get").toLowerCase();
vendor: 5,397 bytes, lines 23840-24018
23840    let contextHeaders = headers && utils$1.merge(
23841      headers.common,
23842      headers[config.method]
23843    );
23844    headers && utils$1.forEach(
23845      ["delete", "get", "head", "post", "put", "patch", "common"],
23846      (method) => {
23847        delete headers[method];
23848      }
23849    );
23850    config.headers = AxiosHeaders$1.concat(contextHeaders, headers);
23851    const requestInterceptorChain = [];
23852    let synchronousRequestInterceptors = true;
23853    this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
23854      if (typeof interceptor.runWhen === "function" && interceptor.runWhen(config) === false) {
23855        return;
23856      }
23857      synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
23858      requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
23859    });
23860    const responseInterceptorChain = [];
23861    this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
23862      responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
23863    });
23864    let promise;
23865    let i = 0;
23866    let len;
23867    if (!synchronousRequestInterceptors) {
23868      const chain = [dispatchRequest.bind(this), void 0];
23869      chain.unshift.apply(chain, requestInterceptorChain);
23870      chain.push.apply(chain, responseInterceptorChain);
23871      len = chain.length;
23872      promise = Promise.resolve(config);
23873      while (i < len) {
23874        promise = promise.then(chain[i++], chain[i++]);
23875      }
23876      return promise;
23877    }
23878    len = requestInterceptorChain.length;
23879    let newConfig = config;
23880    i = 0;
23881    while (i < len) {
23882      const onFulfilled = requestInterceptorChain[i++];
23883      const onRejected = requestInterceptorChain[i++];
23884      try {
23885        newConfig = onFulfilled(newConfig);
23886      } catch (error) {
23887        onRejected.call(this, error);
23888        break;
23889      }
23890    }
23891    try {
23892      promise = dispatchRequest.call(this, newConfig);
23893    } catch (error) {
23894      return Promise.reject(error);
23895    }
23896    i = 0;
23897    len = responseInterceptorChain.length;
23898    while (i < len) {
23899      promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);
23900    }
23901    return promise;
23902  }
23903  getUri(config) {
23904    config = mergeConfig$1(this.defaults, config);
23905    const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);
23906    return buildURL(fullPath, config.params, config.paramsSerializer);
23907  }
23908};
23909utils$1.forEach(["delete", "get", "head", "options"], function forEachMethodNoData(method) {
23910  Axios$1.prototype[method] = function(url, config) {
23911    return this.request(mergeConfig$1(config || {}, {
23912      method,
23913      url,
23914      data: (config || {}).data
23915    }));
23916  };
23917});
23918utils$1.forEach(["post", "put", "patch"], function forEachMethodWithData(method) {
23919  function generateHTTPMethod(isForm) {
23920    return function httpMethod(url, data, config) {
23921      return this.request(mergeConfig$1(config || {}, {
23922        method,
23923        headers: isForm ? {
23924          "Content-Type": "multipart/form-data"
23925        } : {},
23926        url,
23927        data
23928      }));
23929    };
23930  }
23931  Axios$1.prototype[method] = generateHTTPMethod();
23932  Axios$1.prototype[method + "Form"] = generateHTTPMethod(true);
23933});
23934let CancelToken$1 = class CancelToken {
23935  constructor(executor) {
23936    if (typeof executor !== "function") {
23937      throw new TypeError("executor must be a function.");
23938    }
23939    let resolvePromise;
23940    this.promise = new Promise(function promiseExecutor(resolve2) {
23941      resolvePromise = resolve2;
23942    });
23943    const token = this;
23944    this.promise.then((cancel) => {
23945      if (!token._listeners) return;
23946      let i = token._listeners.length;
23947      while (i-- > 0) {
23948        token._listeners[i](cancel);
23949      }
23950      token._listeners = null;
23951    });
23952    this.promise.then = (onfulfilled) => {
23953      let _resolve;
23954      const promise = new Promise((resolve2) => {
23955        token.subscribe(resolve2);
23956        _resolve = resolve2;
23957      }).then(onfulfilled);
23958      promise.cancel = function reject() {
23959        token.unsubscribe(_resolve);
23960      };
23961      return promise;
23962    };
23963    executor(function cancel(message, config, request) {
23964      if (token.reason) {
23965        return;
23966      }
23967      token.reason = new CanceledError$1(message, config, request);
23968      resolvePromise(token.reason);
23969    });
23970  }
23971  /**
23972   * Throws a `CanceledError` if cancellation has been requested.
23973   */
23974  throwIfRequested() {
23975    if (this.reason) {
23976      throw this.reason;
23977    }
23978  }
23979  /**
23980   * Subscribe to the cancel signal
23981   */
23982  subscribe(listener) {
23983    if (this.reason) {
23984      listener(this.reason);
23985      return;
23986    }
23987    if (this._listeners) {
23988      this._listeners.push(listener);
23989    } else {
23990      this._listeners = [listener];
23991    }
23992  }
23993  /**
23994   * Unsubscribe from the cancel signal
23995   */
23996  unsubscribe(listener) {
23997    if (!this._listeners) {
23998      return;
23999    }
24000    const index2 = this._listeners.indexOf(listener);
24001    if (index2 !== -1) {
24002      this._listeners.splice(index2, 1);
24003    }
24004  }
24005  toAbortSignal() {
24006    const controller = new AbortController();
24007    const abort = (err) => {
24008      controller.abort(err);
24009    };
24010    this.subscribe(abort);
24011    controller.signal.unsubscribe = () => this.unsubscribe(abort);
24012    return controller.signal;
24013  }
24014  /**
24015   * Returns an object that contains a new `CancelToken` and a function that, when called,
24016   * cancels the `CancelToken`.
24017   */
24018  static source() {
24019    let cancel;
24020    const token = new CancelToken(function executor(c) {
24021      cancel = c;
24022    });
24023    return {
24024      token,
24025      cancel
24026    };
24027  }
24028};
24029function spread$1(callback) {
24030  return function wrap(arr) {
24031    return callback.apply(null, arr);
24032  };
24033}
24034function isAxiosError$1(payload) {
24035  return utils$1.isObject(payload) && payload.isAxiosError === true;
24036}
24037const HttpStatusCode$1 = {
24038  Continue: 100,
24039  SwitchingProtocols: 101,
24040  Processing: 102,
24041  EarlyHints: 103,
24042  Ok: 200,
24043  Created: 201,
24044  Accepted: 202,
24045  NonAuthoritativeInformation: 203,
24046  NoContent: 204,
24047  ResetContent: 205,
24048  PartialContent: 206,
24049  MultiStatus: 207,
24050  AlreadyReported: 208,
24051  ImUsed: 226,
24052  MultipleChoices: 300,
24053  MovedPermanently: 301,
24054  Found: 302,
24055  SeeOther: 303,
24056  NotModified: 304,
24057  UseProxy: 305,
24058  Unused: 306,
24059  TemporaryRedirect: 307,
24060  PermanentRedirect: 308,
24061  BadRequest: 400,
24062  Unauthorized: 401,
24063  PaymentRequired: 402,
24064  Forbidden: 403,
24065  NotFound: 404,
24066  MethodNotAllowed: 405,
24067  NotAcceptable: 406,
24068  ProxyAuthenticationRequired: 407,
24069  RequestTimeout: 408,
24070  Conflict: 409,
24071  Gone: 410,
24072  LengthRequired: 411,
24073  PreconditionFailed: 412,
24074  PayloadTooLarge: 413,
24075  UriTooLong: 414,
24076  UnsupportedMediaType: 415,
24077  RangeNotSatisfiable: 416,
24078  ExpectationFailed: 417,
24079  ImATeapot: 418,
24080  MisdirectedRequest: 421,
24081  UnprocessableEntity: 422,
24082  Locked: 423,
24083  FailedDependency: 424,
24084  TooEarly: 425,
24085  UpgradeRequired: 426,
24086  PreconditionRequired: 428,
24087  TooManyRequests: 429,
24088  RequestHeaderFieldsTooLarge: 431,
24089  UnavailableForLegalReasons: 451,
24090  InternalServerError: 500,
24091  NotImplemented: 501,
24092  BadGateway: 502,
24093  ServiceUnavailable: 503,
24094  GatewayTimeout: 504,
24095  HttpVersionNotSupported: 505,
24096  VariantAlsoNegotiates: 506,
24097  InsufficientStorage: 507,
24098  LoopDetected: 508,
24099  NotExtended: 510,
24100  NetworkAuthenticationRequired: 511
24101};
24102Object.entries(HttpStatusCode$1).forEach(([key, value]) => {
24103  HttpStatusCode$1[value] = key;
24104});
24105function createInstance(defaultConfig) {
24106  const context = new Axios$1(defaultConfig);
24107  const instance = bind(Axios$1.prototype.request, context);
24108  utils$1.extend(instance, Axios$1.prototype, context, { allOwnKeys: true });
24109  utils$1.extend(instance, context, null, { allOwnKeys: true });
24110  instance.create = function create2(instanceConfig) {
24111    return createInstance(mergeConfig$1(defaultConfig, instanceConfig));
24112  };
24113  return instance;
24114}
24115const axios = createInstance(defaults$1);
24116axios.Axios = Axios$1;
24117axios.CanceledError = CanceledError$1;
24118axios.CancelToken = CancelToken$1;
24119axios.isCancel = isCancel$1;
24120axios.VERSION = VERSION$2;
24121axios.toFormData = toFormData$1;
24122axios.AxiosError = AxiosError$1;
24123axios.Cancel = axios.CanceledError;
24124axios.all = function all(promises) {
24125  return Promise.all(promises);
24126};
24127axios.spread = spread$1;
24128axios.isAxiosError = isAxiosError$1;
24129axios.mergeConfig = mergeConfig$1;
24130axios.AxiosHeaders = AxiosHeaders$1;
24131axios.formToJSON = (thing) => formDataToJSON(utils$1.isHTMLForm(thing) ? new FormData(thing) : thing);
24132axios.getAdapter = adapters.getAdapter;
24133axios.HttpStatusCode = HttpStatusCode$1;
24134axios.default = axios;
24135const {
24136  Axios: Axios2,
24137  AxiosError,
24138  CanceledError,
24139  isCancel,
24140  CancelToken: CancelToken2,
24141  VERSION: VERSION$1,
24142  all: all2,
24143  Cancel,
24144  isAxiosError,
24145  spread,
24146  toFormData,
24147  AxiosHeaders: AxiosHeaders2,
24148  HttpStatusCode,
24149  formToJSON,
24150  getAdapter,
24151  mergeConfig
24152} = axios;
24153const i18nInstance = createI18n({
24154  legacy: true,
24155  locale: "de",
24156  fallbackLocale: "de",
24157  messages: {},
24158  globalInjection: true
24159});
24160function setLocale(i18n, locale) {
24161  if (i18n.mode === "legacy") {
24162    i18n.global.locale = locale;
24163  } else {
24164    i18n.global.locale.value = locale;
24165  }
24166}
24167async function loadLocaleMessages(url, locale) {
24168  try {
24169    const { status, data } = await axios.get(url);
24170    if (status === 200 && typeof data !== "undefined") {
24171      i18nInstance.global.setLocaleMessage(locale, data);
24172    } else {
24173      i18nInstance.global.setLocaleMessage(locale, {});
24174    }
24175  } catch (error) {
24176    i18nInstance.global.setLocaleMessage(locale, {});
24177  }
24178  i18nInstance.global.locale = locale;
24179}
24180const _sfc_main$1D = {
24181  name: "App",
24182  components: {
24183    CookieConsent
24184  },
24185  props: {
24186    environmentPath: {
24187      type: String,
24188      default: ""
24189    },
24190    assetsPath: {
24191      type: String,
24192      default: null
24193    },
24194    baseUrl: {
24195      type: String,
24196      default: ""
24197    },
24198    language: {
24199      type: String,
24200      default: "de"
24201    },
24202    siteName: {
24203      type: String,
24204      default: ""
24205    }
24206  },
24207  data() {
24208    return {
24209      loaded: false
24210    };
24211  },
24212  computed: {
24213    ...mapState(CONSENT_TYPES.NAME, {
24214      consentDone: CONSENT_TYPES.state.CONSENT_DONE
24215    })
24216  },
24217  // Livecycle hooks
24218  created() {
24219    this.setEnvironmentPath({
24220      [ENVIRONMENT_TYPES.state.ENVIRONMENT_PATH]: this.environmentPath
24221    });
24222  },
24223  async mounted() {
24224    this.setEnvironmentVariables();
24225    await this.loadLanguageFiles();
24226    this.startResizeListener();
24227    this.$nextTick(() => {
24228      this.loaded = true;
24229    });
24230    this.setIsTouchDevice();
24231  },
24232  // updated() {},
24233  // beforeDestroy() {},
24234  methods: {
24235    ...mapMutations(ENVIRONMENT_TYPES.NAME, {
24236      setBaseUrl: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BASE_URL,
24237      setAssetsPath: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ASSETS_PATH,
24238      setEnvironmentPath: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_PATH,
24239      setSiteName: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SITE_NAME
24240    }),
24241    ...mapActions(ENVIRONMENT_TYPES.NAME, {
24242      startResizeListener: ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_START_RESIZE_LISTENER,
24243      switchLanguage: ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_SWITCH_LANGUAGE
24244    }),
24245    async loadLanguageFiles() {
24246      const i18n_path = "/.rest/i18n/properties/__locale__";
24247      const basePath = `${this.baseUrl}${i18n_path.replace("__locale__", this.language)}`;
24248      await loadLocaleMessages(basePath, this.language);
24249      await this.switchLanguage({
24250        [ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE]: this.language
24251      });
24252    },
24253    setEnvironmentVariables() {
24254      if (!empty(this.baseUrl)) {
24255        this.setBaseUrl({
24256          [ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL]: this.baseUrl
24257        });
24258      }
24259      if (!empty(this.assetsPath)) {
24260        this.setAssetsPath({
24261          [ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH]: this.assetsPath
24262        });
24263      }
24264      if (!empty(this.siteName)) {
24265        this.setSiteName({
24266          [ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME]: this.siteName
24267        });
24268      }
24269    },
24270    setIsTouchDevice() {
24271      if ("ontouchstart" in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0 || // TODO: Figure out how to detect touch devices on safari browsers
24272      navigator.userAgent.includes("afari") && navigator.userAgent.includes("obile")) {
24273        document.getElementsByTagName("body")[0].classList.add("isTouchDevice");
24274      }
24275    }
24276  }
24277};
24278const _hoisted_1$1u = {
24279  class: "skip-to-content",
24280  href: "#main_content"
24281};
24282const _hoisted_2$16 = { class: "page-wrapper" };
24283function _sfc_render$1B(_ctx, _cache, $props, $setup, $data, $options) {
24284  const _component_cookie_consent = resolveComponent("cookie-consent");
24285  return openBlock(), createElementBlock(Fragment, null, [
24286    $data.loaded && !_ctx.consentDone ? (openBlock(), createBlock(_component_cookie_consent, { key: 0 })) : createCommentVNode("", true),
24287    createBaseVNode("a", _hoisted_1$1u, toDisplayString$1(_ctx.$t("menu.skipToContent.label")), 1),
24288    createBaseVNode("div", _hoisted_2$16, [
24289      $data.loaded ? renderSlot(_ctx.$slots, "default", { key: 0 }) : createCommentVNode("", true)
24290    ])
24291  ], 64);
24292}
24293const App = /* @__PURE__ */ _export_sfc(_sfc_main$1D, [["render", _sfc_render$1B]]);
24294function getDefaultExportFromCjs(x) {
24295  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
24296}
24297var cjs;
24298var hasRequiredCjs;
24299function requireCjs() {
24300  if (hasRequiredCjs) return cjs;
24301  hasRequiredCjs = 1;
24302  var isMergeableObject = function isMergeableObject2(value) {
24303    return isNonNullObject(value) && !isSpecial(value);
24304  };
24305  function isNonNullObject(value) {
24306    return !!value && typeof value === "object";
24307  }
24308  function isSpecial(value) {
24309    var stringValue = Object.prototype.toString.call(value);
24310    return stringValue === "[object RegExp]" || stringValue === "[object Date]" || isReactElement(value);
24311  }
24312  var canUseSymbol = typeof Symbol === "function" && Symbol.for;
24313  var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for("react.element") : 60103;
24314  function isReactElement(value) {
24315    return value.$$typeof === REACT_ELEMENT_TYPE;
24316  }
24317  function emptyTarget(val) {
24318    return Array.isArray(val) ? [] : {};
24319  }
24320  function cloneUnlessOtherwiseSpecified(value, options2) {
24321    return options2.clone !== false && options2.isMergeableObject(value) ? deepmerge2(emptyTarget(value), value, options2) : value;
24322  }
24323  function defaultArrayMerge(target, source, options2) {
24324    return target.concat(source).map(function(element) {
24325      return cloneUnlessOtherwiseSpecified(element, options2);
24326    });
24327  }
24328  function getMergeFunction(key, options2) {
24329    if (!options2.customMerge) {
24330      return deepmerge2;
24331    }
24332    var customMerge = options2.customMerge(key);
24333    return typeof customMerge === "function" ? customMerge : deepmerge2;
24334  }
24335  function getEnumerableOwnPropertySymbols(target) {
24336    return Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols(target).filter(function(symbol) {
24337      return target.propertyIsEnumerable(symbol);
24338    }) : [];
24339  }
24340  function getKeys(target) {
24341    return Object.keys(target).concat(getEnumerableOwnPropertySymbols(target));
24342  }
24343  function propertyIsOnObject(object, property) {
24344    try {
24345      return property in object;
24346    } catch (_) {
24347      return false;
24348    }
24349  }
24350  function propertyIsUnsafe(target, key) {
24351    return propertyIsOnObject(target, key) && !(Object.hasOwnProperty.call(target, key) && Object.propertyIsEnumerable.call(target, key));
24352  }
24353  function mergeObject(target, source, options2) {
24354    var destination = {};
24355    if (options2.isMergeableObject(target)) {
24356      getKeys(target).forEach(function(key) {
24357        destination[key] = cloneUnlessOtherwiseSpecified(target[key], options2);
24358      });
24359    }
24360    getKeys(source).forEach(function(key) {
24361      if (propertyIsUnsafe(target, key)) {
24362        return;
24363      }
24364      if (propertyIsOnObject(target, key) && options2.isMergeableObject(source[key])) {
24365        destination[key] = getMergeFunction(key, options2)(target[key], source[key], options2);
24366      } else {
24367        destination[key] = cloneUnlessOtherwiseSpecified(source[key], options2);
24368      }
24369    });
24370    return destination;
24371  }
24372  function deepmerge2(target, source, options2) {
24373    options2 = options2 || {};
24374    options2.arrayMerge = options2.arrayMerge || defaultArrayMerge;
24375    options2.isMergeableObject = options2.isMergeableObject || isMergeableObject;
24376    options2.cloneUnlessOtherwiseSpecified = cloneUnlessOtherwiseSpecified;
24377    var sourceIsArray = Array.isArray(source);
24378    var targetIsArray = Array.isArray(target);
24379    var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
24380    if (!sourceAndTargetTypesMatch) {
24381      return cloneUnlessOtherwiseSpecified(source, options2);
24382    } else if (sourceIsArray) {
24383      return options2.arrayMerge(target, source, options2);
24384    } else {
24385      return mergeObject(target, source, options2);
24386    }
24387  }
24388  deepmerge2.all = function deepmergeAll(array, options2) {
24389    if (!Array.isArray(array)) {
24390      throw new Error("first argument should be an array");
24391    }
24392    return array.reduce(function(prev, next) {
24393      return deepmerge2(prev, next, options2);
24394    }, {});
24395  };
24396  var deepmerge_1 = deepmerge2;
24397  cjs = deepmerge_1;
24398  return cjs;
24399}
24400var cjsExports = requireCjs();
24401const deepmerge = /* @__PURE__ */ getDefaultExportFromCjs(cjsExports);
24402let MockStorage;
24403{
24404  MockStorage = class {
24405    get length() {
24406      return Object.keys(this).length;
24407    }
24408    key(index2) {
24409      return Object.keys(this)[index2];
24410    }
24411    setItem(key, data) {
24412      this[key] = data.toString();
24413    }
24414    getItem(key) {
24415      return this[key];
24416    }
24417    removeItem(key) {
24418      delete this[key];
24419    }
24420    clear() {
24421      for (let key of Object.keys(this)) {
24422        delete this[key];
24423      }
24424    }
24425  };
24426}
24427class SimplePromiseQueue {
24428  constructor() {
24429    this._queue = [];
24430    this._flushing = false;
24431  }
24432  enqueue(promise) {
24433    this._queue.push(promise);
24434    if (!this._flushing) {
24435      return this.flushQueue();
24436    }
24437    return Promise.resolve();
24438  }
24439  flushQueue() {
24440    this._flushing = true;
24441    const chain = () => {
24442      const nextTask = this._queue.shift();
24443      if (nextTask) {
24444        return nextTask.then(chain);
24445      } else {
24446        this._flushing = false;
24447      }
24448    };
24449    return Promise.resolve(chain());
24450  }
24451}
24452const options = {
24453  replaceArrays: {
24454    arrayMerge: (destinationArray, sourceArray, options2) => sourceArray
24455  },
24456  concatArrays: {
24457    arrayMerge: (target, source, options2) => target.concat(...source)
24458  }
24459};
24460function merge(into, from, mergeOption) {
24461  return deepmerge(into, from, options[mergeOption]);
24462}
24463let FlattedJSON = JSON;
24464class VuexPersistence {
24465  /**
24466   * Create a {@link VuexPersistence} object.
24467   * Use the <code>plugin</code> function of this class as a
24468   * Vuex plugin.
24469   * @param {PersistOptions} options
24470   */
24471  constructor(options2) {
24472    this._mutex = new SimplePromiseQueue();
24473    this.subscriber = (store2) => (handler) => store2.subscribe(handler);
24474    if (typeof options2 === "undefined")
24475      options2 = {};
24476    this.key = options2.key != null ? options2.key : "vuex";
24477    this.subscribed = false;
24478    this.supportCircular = options2.supportCircular || false;
24479    if (this.supportCircular) {
24480      FlattedJSON = require("flatted");
24481    }
24482    this.mergeOption = options2.mergeOption || "replaceArrays";
24483    let localStorageLitmus = true;
24484    try {
24485      window.localStorage.getItem("");
24486    } catch (err) {
24487      localStorageLitmus = false;
24488    }
24489    if (options2.storage) {
24490      this.storage = options2.storage;
24491    } else if (localStorageLitmus) {
24492      this.storage = window.localStorage;
24493    } else if (MockStorage) {
24494      this.storage = new MockStorage();
24495    } else {
24496      throw new Error("Neither 'window' is defined, nor 'MockStorage' is available");
24497    }
24498    this.reducer = options2.reducer != null ? options2.reducer : options2.modules == null ? (state2) => state2 : (state2) => options2.modules.reduce((a, i) => merge(a, { [i]: state2[i] }, this.mergeOption), {
24499      /* start empty accumulator*/
24500    });
24501    this.filter = options2.filter || ((mutation) => true);
24502    this.strictMode = options2.strictMode || false;
24503    this.RESTORE_MUTATION = function RESTORE_MUTATION(state2, savedState) {
24504      const mergedState = merge(state2, savedState || {}, this.mergeOption);
24505      for (const propertyName of Object.keys(mergedState)) {
24506        this._vm.$set(state2, propertyName, mergedState[propertyName]);
24507      }
24508    };
24509    this.asyncStorage = options2.asyncStorage || false;
24510    if (this.asyncStorage) {
24511      this.restoreState = options2.restoreState != null ? options2.restoreState : (key, storage) => storage.getItem(key).then((value) => typeof value === "string" ? this.supportCircular ? FlattedJSON.parse(value || "{}") : JSON.parse(value || "{}") : value || {});
24512      this.saveState = options2.saveState != null ? options2.saveState : (key, state2, storage) => storage.setItem(
24513        key,
24514        // Second argument is state _object_ if asyc storage, stringified otherwise
24515        // do not stringify the state if the storage type is async
24516        this.asyncStorage ? merge({}, state2 || {}, this.mergeOption) : this.supportCircular ? FlattedJSON.stringify(state2) : JSON.stringify(state2)
24517      );
24518      this.plugin = (store2) => {
24519        store2.restored = this.restoreState(this.key, this.storage).then((savedState) => {
24520          if (this.strictMode) {
24521            store2.commit("RESTORE_MUTATION", savedState);
24522          } else {
24523            store2.replaceState(merge(store2.state, savedState || {}, this.mergeOption));
24524          }
24525          this.subscriber(store2)((mutation, state2) => {
24526            if (this.filter(mutation)) {
24527              this._mutex.enqueue(this.saveState(this.key, this.reducer(state2), this.storage));
24528            }
24529          });
24530          this.subscribed = true;
24531        });
24532      };
24533    } else {
24534      this.restoreState = options2.restoreState != null ? options2.restoreState : (key, storage) => {
24535        const value = storage.getItem(key);
24536        if (typeof value === "string") {
24537          return this.supportCircular ? FlattedJSON.parse(value || "{}") : JSON.parse(value || "{}");
24538        } else {
24539          return value || {};
24540        }
24541      };
24542      this.saveState = options2.saveState != null ? options2.saveState : (key, state2, storage) => storage.setItem(
24543        key,
24544        // Second argument is state _object_ if localforage, stringified otherwise
24545        this.supportCircular ? FlattedJSON.stringify(state2) : JSON.stringify(state2)
24546      );
24547      this.plugin = (store2) => {
24548        const savedState = this.restoreState(this.key, this.storage);
24549        if (this.strictMode) {
24550          store2.commit("RESTORE_MUTATION", savedState);
24551        } else {
24552          store2.replaceState(merge(store2.state, savedState || {}, this.mergeOption));
24553        }
24554        this.subscriber(store2)((mutation, state2) => {
24555          if (this.filter(mutation)) {
24556            this.saveState(this.key, this.reducer(state2), this.storage);
24557          }
24558        });
24559        this.subscribed = true;
24560      };
24561    }
24562  }
24563}
24564const state$2 = {
24565  [ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL]: "",
24566  [ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH]: "/assets",
24567  [ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE]: "de",
24568  [ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME]: "",
24569  [ENVIRONMENT_TYPES.state.ENVIRONMENT_MOBILE_BP]: 640,
24570  [ENVIRONMENT_TYPES.state.ENVIRONMENT_TABLET_BP]: 1024,
24571  [ENVIRONMENT_TYPES.state.ENVIRONMENT_DESKTOP_BP]: 1440,
24572  [ENVIRONMENT_TYPES.state.ENVIRONMENT_LARGE_DESKTOP_BP]: 1680,
24573  [ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH]: 1,
24574  // [types.state.ENVIRONMENT_OVERLAY_MODE]: false,
24575  [ENVIRONMENT_TYPES.state.ENVIRONMENT_LOADING]: true,
24576  [ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_LIST]: {},
24577  [ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_IDS]: [],
24578  [ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL]: null,
24579  [ENVIRONMENT_TYPES.state.ENVIRONMENT_MENU_OPEN]: false,
24580  [ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION]: null
24581};
24582const getters$2 = {
24583  [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE](state2) {
24584    return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_MOBILE_BP];
24585  },
24586  [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET](state2) {
24587    return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_MOBILE_BP] && state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_TABLET_BP];
24588  },
24589  [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_DESKTOP](state2) {
24590    return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_TABLET_BP] && state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_DESKTOP_BP];
24591  },
24592  [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_LARGE_DESKTOP](state2) {
24593    return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_DESKTOP_BP] && state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] < state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LARGE_DESKTOP_BP];
24594  },
24595  [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_XLARGE_DESKTOP](state2) {
24596    return state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] >= state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LARGE_DESKTOP_BP];
24597  },
24598  [ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_ASSETS_URL](state2) {
24599    return `${state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL]}${state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH]}`;
24600  }
24601};
24602const mutations$2 = {
24603  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BASE_URL](state2, payload) {
24604    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL];
24605  },
24606  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ASSETS_PATH](state2, payload) {
24607    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_ASSETS_PATH];
24608  },
24609  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LANGUAGE](state2, payload) {
24610    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE];
24611  },
24612  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SITE_NAME](state2, payload) {
24613    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME];
24614  },
24615  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_WINDOW_WIDTH](state2, payload) {
24616    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH];
24617  },
24618  // [types.mutations.SET_ENVIRONMENT_OVERLAY_MODE](state, payload) {
24619  //   state[types.state.ENVIRONMENT_OVERLAY_MODE] = payload[types.state.ENVIRONMENT_OVERLAY_MODE];
24620  // },
24621  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LOADING](state2, payload) {
24622    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LOADING] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_LOADING];
24623  },
24624  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LINK](state2, payload) {
24625    if (!payload.id) return;
24626    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_LIST][payload.id] = payload;
24627    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_LINK_IDS].push(payload.id);
24628  },
24629  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SIDEBAR_PORTAL](state2, payload) {
24630    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL];
24631  },
24632  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_MENU_OPEN](state2, payload) {
24633    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_MENU_OPEN] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_MENU_OPEN];
24634  },
24635  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BREADCRUMB_EXTENSION](state2, payload) {
24636    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION];
24637  },
24638  [ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ACTIVE_LINK_TEASER](state2, payload) {
24639    state2[ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER] = payload[ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER];
24640  }
24641};
24642function throttle$1(callback, wait, immediate = false, ...args) {
24643  let timeout = null;
24644  let initialCall = true;
24645  return () => {
24646    const callNow = immediate && initialCall;
24647    const next = () => {
24648      callback.apply(this, args);
24649      timeout = null;
24650    };
24651    if (callNow) {
24652      initialCall = false;
24653      next();
24654    }
24655    if (!timeout) {
24656      timeout = setTimeout(next, wait);
24657    }
24658  };
24659}
24660const actions$2 = {
24661  [ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_START_RESIZE_LISTENER]({ commit: commit2 }) {
24662    commit2(ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_WINDOW_WIDTH, {
24663      [ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH]: parseInt(window.innerWidth, 10)
24664    });
24665    window.onresize = throttle$1(() => {
24666      commit2(ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_WINDOW_WIDTH, {
24667        [ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH]: parseInt(window.innerWidth, 10)
24668      });
24669    }, 250);
24670  },
24671  [ENVIRONMENT_TYPES.actions.ACTION_ENVIRONMENT_SWITCH_LANGUAGE]({ commit: commit2 }, payload) {
24672    setLocale(i18nInstance, payload.language);
24673    commit2(ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LANGUAGE, {
24674      [ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE]: payload.language
24675    });
24676  }
24677};
24678const environment = {
24679  namespaced: true,
24680  state: state$2,
24681  getters: getters$2,
24682  mutations: mutations$2,
24683  actions: actions$2
24684};
24685const state$1 = {
24686  [CONSENT_TYPES.state.CONSENT_DONE]: false,
24687  [CONSENT_TYPES.state.CONSENT_VIMEO]: false,
24688  [CONSENT_TYPES.state.CONSENT_YOUTUBE]: false,
24689  [CONSENT_TYPES.state.CONSENT_GOOGLEMAPS]: false,
24690  [CONSENT_TYPES.state.CONSENT_MATOMO]: false,
24691  [CONSENT_TYPES.state.CONSENT_RECAPTCHA]: false
24692};
24693const getters$1 = {};
24694const mutations$1 = {
24695  [CONSENT_TYPES.mutations.CONSENT_SET_DONE](state2, payload) {
24696    if (typeof payload[CONSENT_TYPES.state.CONSENT_DONE] !== "undefined") {
24697      state2[CONSENT_TYPES.state.CONSENT_DONE] = payload[CONSENT_TYPES.state.CONSENT_DONE];
24698    }
24699  },
24700  [CONSENT_TYPES.mutations.CONSENT_SET_VIMEO](state2, payload) {
24701    if (typeof payload[CONSENT_TYPES.state.CONSENT_VIMEO] !== "undefined") {
24702      state2[CONSENT_TYPES.state.CONSENT_VIMEO] = payload[CONSENT_TYPES.state.CONSENT_VIMEO];
24703    }
24704  },
24705  [CONSENT_TYPES.mutations.CONSENT_SET_YOUTUBE](state2, payload) {
24706    if (typeof payload[CONSENT_TYPES.state.CONSENT_YOUTUBE] !== "undefined") {
24707      state2[CONSENT_TYPES.state.CONSENT_YOUTUBE] = payload[CONSENT_TYPES.state.CONSENT_YOUTUBE];
24708    }
24709  },
24710  [CONSENT_TYPES.mutations.CONSENT_SET_GOOGLEMAPS](state2, payload) {
24711    if (typeof payload[CONSENT_TYPES.state.CONSENT_GOOGLEMAPS] !== "undefined") {
24712      state2[CONSENT_TYPES.state.CONSENT_GOOGLEMAPS] = payload[CONSENT_TYPES.state.CONSENT_GOOGLEMAPS];
24713    }
24714  },
24715  [CONSENT_TYPES.mutations.CONSENT_SET_MATOMO](state2, payload) {
24716    if (typeof payload[CONSENT_TYPES.state.CONSENT_MATOMO] !== "undefined") {
24717      state2[CONSENT_TYPES.state.CONSENT_MATOMO] = payload[CONSENT_TYPES.state.CONSENT_MATOMO];
24718    }
24719  },
24720  [CONSENT_TYPES.mutations.CONSENT_SET_RECAPTCHA](state2, payload) {
24721    if (typeof payload[CONSENT_TYPES.state.CONSENT_RECAPTCHA] !== "undefined") {
24722      state2[CONSENT_TYPES.state.CONSENT_RECAPTCHA] = payload[CONSENT_TYPES.state.CONSENT_RECAPTCHA];
24723    }
24724  }
24725};
24726const actions$1 = {
24727  // NONE SO FAR
24728};
24729const consent = {
24730  namespaced: true,
24731  state: state$1,
24732  getters: getters$1,
24733  mutations: mutations$1,
24734  actions: actions$1
24735};
24736const CART_TYPES = {
24737  NAME: "cart",
24738  state: {
24739    CART_LIST: "list"
24740  },
24741  mutations: {
24742    CART_SET_ADD: "add",
24743    CART_SET_REMOVE: "remove"
24744  },
24745  getters: {
24746    CART_GET_EXISTS: "exists"
24747  }
24748};
24749const state = {
24750  [CART_TYPES.state.CART_LIST]: []
24751};
24752const getters = {
24753  [CART_TYPES.getters.CART_GET_EXISTS]: (state2) => (payload) => {
24754    const index2 = state2[CART_TYPES.state.CART_LIST].findIndex((x) => x.code === payload.code);
24755    return index2 > -1;
24756  }
24757};
24758const mutations = {
24759  [CART_TYPES.mutations.CART_SET_ADD](state2, payload) {
24760    const index2 = state2[CART_TYPES.state.CART_LIST].findIndex((x) => x.code === payload.code);
24761    if (index2 === -1) {
24762      state2[CART_TYPES.state.CART_LIST].push(payload);
24763    } else {
24764      state2[CART_TYPES.state.CART_LIST][index2].count = payload.count;
24765    }
24766  },
24767  [CART_TYPES.mutations.CART_SET_REMOVE](state2, payload) {
24768    const index2 = state2[CART_TYPES.state.CART_LIST].findIndex((x) => x.code === payload.code);
24769    if (index2 > -1) {
24770      state2[CART_TYPES.state.CART_LIST].splice(index2, 1);
24771    }
24772  }
24773};
24774const actions = {
24775  // NONE SO FAR
24776};
24777const cart = {
24778  namespaced: true,
24779  state,
24780  getters,
24781  mutations,
24782  actions
24783};
24784const vuexPersistConsent = new VuexPersistence({
24785  storage: window.localStorage,
24786  key: "consent",
24787  modules: [
24788    "consent"
24789  ]
24790});
24791const vuexPersistCart = new VuexPersistence({
24792  storage: window.localStorage,
24793  key: "cart",
24794  modules: [
24795    "cart"
24796  ]
24797});
24798const store = index.createStore({
24799  modules: {
24800    environment,
24801    consent,
24802    cart
24803  },
24804  plugins: [
24805    vuexPersistConsent.plugin,
24806    vuexPersistCart.plugin
24807  ]
24808});
24809function isObject$4(obj) {
24810  return obj !== null && typeof obj === "object" && "constructor" in obj && obj.constructor === Object;
24811}
vendor: 7,351 bytes, lines 24812-25098
24812function extend$3(target, src) {
24813  if (target === void 0) {
24814    target = {};
24815  }
24816  if (src === void 0) {
24817    src = {};
24818  }
24819  const noExtend = ["__proto__", "constructor", "prototype"];
24820  Object.keys(src).filter((key) => noExtend.indexOf(key) < 0).forEach((key) => {
24821    if (typeof target[key] === "undefined") target[key] = src[key];
24822    else if (isObject$4(src[key]) && isObject$4(target[key]) && Object.keys(src[key]).length > 0) {
24823      extend$3(target[key], src[key]);
24824    }
24825  });
24826}
24827const ssrDocument = {
24828  body: {},
24829  addEventListener() {
24830  },
24831  removeEventListener() {
24832  },
24833  activeElement: {
24834    blur() {
24835    },
24836    nodeName: ""
24837  },
24838  querySelector() {
24839    return null;
24840  },
24841  querySelectorAll() {
24842    return [];
24843  },
24844  getElementById() {
24845    return null;
24846  },
24847  createEvent() {
24848    return {
24849      initEvent() {
24850      }
24851    };
24852  },
24853  createElement() {
24854    return {
24855      children: [],
24856      childNodes: [],
24857      style: {},
24858      setAttribute() {
24859      },
24860      getElementsByTagName() {
24861        return [];
24862      }
24863    };
24864  },
24865  createElementNS() {
24866    return {};
24867  },
24868  importNode() {
24869    return null;
24870  },
24871  location: {
24872    hash: "",
24873    host: "",
24874    hostname: "",
24875    href: "",
24876    origin: "",
24877    pathname: "",
24878    protocol: "",
24879    search: ""
24880  }
24881};
24882function getDocument() {
24883  const doc2 = typeof document !== "undefined" ? document : {};
24884  extend$3(doc2, ssrDocument);
24885  return doc2;
24886}
24887const ssrWindow = {
24888  document: ssrDocument,
24889  navigator: {
24890    userAgent: ""
24891  },
24892  location: {
24893    hash: "",
24894    host: "",
24895    hostname: "",
24896    href: "",
24897    origin: "",
24898    pathname: "",
24899    protocol: "",
24900    search: ""
24901  },
24902  history: {
24903    replaceState() {
24904    },
24905    pushState() {
24906    },
24907    go() {
24908    },
24909    back() {
24910    }
24911  },
24912  CustomEvent: function CustomEvent2() {
24913    return this;
24914  },
24915  addEventListener() {
24916  },
24917  removeEventListener() {
24918  },
24919  getComputedStyle() {
24920    return {
24921      getPropertyValue() {
24922        return "";
24923      }
24924    };
24925  },
24926  Image() {
24927  },
24928  Date() {
24929  },
24930  screen: {},
24931  setTimeout() {
24932  },
24933  clearTimeout() {
24934  },
24935  matchMedia() {
24936    return {};
24937  },
24938  requestAnimationFrame(callback) {
24939    if (typeof setTimeout === "undefined") {
24940      callback();
24941      return null;
24942    }
24943    return setTimeout(callback, 0);
24944  },
24945  cancelAnimationFrame(id) {
24946    if (typeof setTimeout === "undefined") {
24947      return;
24948    }
24949    clearTimeout(id);
24950  }
24951};
24952function getWindow() {
24953  const win = typeof window !== "undefined" ? window : {};
24954  extend$3(win, ssrWindow);
24955  return win;
24956}
24957function classesToTokens(classes2) {
24958  if (classes2 === void 0) {
24959    classes2 = "";
24960  }
24961  return classes2.trim().split(" ").filter((c) => !!c.trim());
24962}
24963function deleteProps(obj) {
24964  const object = obj;
24965  Object.keys(object).forEach((key) => {
24966    try {
24967      object[key] = null;
24968    } catch (e) {
24969    }
24970    try {
24971      delete object[key];
24972    } catch (e) {
24973    }
24974  });
24975}
24976function nextTick(callback, delay) {
24977  if (delay === void 0) {
24978    delay = 0;
24979  }
24980  return setTimeout(callback, delay);
24981}
24982function now$2() {
24983  return Date.now();
24984}
24985function getComputedStyle$1(el) {
24986  const window2 = getWindow();
24987  let style;
24988  if (window2.getComputedStyle) {
24989    style = window2.getComputedStyle(el, null);
24990  }
24991  if (!style && el.currentStyle) {
24992    style = el.currentStyle;
24993  }
24994  if (!style) {
24995    style = el.style;
24996  }
24997  return style;
24998}
24999function getTranslate(el, axis) {
25000  if (axis === void 0) {
25001    axis = "x";
25002  }
25003  const window2 = getWindow();
25004  let matrix;
25005  let curTransform;
25006  let transformMatrix;
25007  const curStyle = getComputedStyle$1(el);
25008  if (window2.WebKitCSSMatrix) {
25009    curTransform = curStyle.transform || curStyle.webkitTransform;
25010    if (curTransform.split(",").length > 6) {
25011      curTransform = curTransform.split(", ").map((a) => a.replace(",", ".")).join(", ");
25012    }
25013    transformMatrix = new window2.WebKitCSSMatrix(curTransform === "none" ? "" : curTransform);
25014  } else {
25015    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue("transform").replace("translate(", "matrix(1, 0, 0, 1,");
25016    matrix = transformMatrix.toString().split(",");
25017  }
25018  if (axis === "x") {
25019    if (window2.WebKitCSSMatrix) curTransform = transformMatrix.m41;
25020    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);
25021    else curTransform = parseFloat(matrix[4]);
25022  }
25023  if (axis === "y") {
25024    if (window2.WebKitCSSMatrix) curTransform = transformMatrix.m42;
25025    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);
25026    else curTransform = parseFloat(matrix[5]);
25027  }
25028  return curTransform || 0;
25029}
25030function isObject$3(o) {
25031  return typeof o === "object" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === "Object";
25032}
25033function isNode(node) {
25034  if (typeof window !== "undefined" && typeof window.HTMLElement !== "undefined") {
25035    return node instanceof HTMLElement;
25036  }
25037  return node && (node.nodeType === 1 || node.nodeType === 11);
25038}
25039function extend$2() {
25040  const to = Object(arguments.length <= 0 ? void 0 : arguments[0]);
25041  const noExtend = ["__proto__", "constructor", "prototype"];
25042  for (let i = 1; i < arguments.length; i += 1) {
25043    const nextSource = i < 0 || arguments.length <= i ? void 0 : arguments[i];
25044    if (nextSource !== void 0 && nextSource !== null && !isNode(nextSource)) {
25045      const keysArray = Object.keys(Object(nextSource)).filter((key) => noExtend.indexOf(key) < 0);
25046      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
25047        const nextKey = keysArray[nextIndex];
25048        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
25049        if (desc !== void 0 && desc.enumerable) {
25050          if (isObject$3(to[nextKey]) && isObject$3(nextSource[nextKey])) {
25051            if (nextSource[nextKey].__swiper__) {
25052              to[nextKey] = nextSource[nextKey];
25053            } else {
25054              extend$2(to[nextKey], nextSource[nextKey]);
25055            }
25056          } else if (!isObject$3(to[nextKey]) && isObject$3(nextSource[nextKey])) {
25057            to[nextKey] = {};
25058            if (nextSource[nextKey].__swiper__) {
25059              to[nextKey] = nextSource[nextKey];
25060            } else {
25061              extend$2(to[nextKey], nextSource[nextKey]);
25062            }
25063          } else {
25064            to[nextKey] = nextSource[nextKey];
25065          }
25066        }
25067      }
25068    }
25069  }
25070  return to;
25071}
25072function setCSSProperty(el, varName, varValue) {
25073  el.style.setProperty(varName, varValue);
25074}
25075function animateCSSModeScroll(_ref) {
25076  let {
25077    swiper,
25078    targetPosition,
25079    side
25080  } = _ref;
25081  const window2 = getWindow();
25082  const startPosition = -swiper.translate;
25083  let startTime = null;
25084  let time;
25085  const duration = swiper.params.speed;
25086  swiper.wrapperEl.style.scrollSnapType = "none";
25087  window2.cancelAnimationFrame(swiper.cssModeFrameID);
25088  const dir = targetPosition > startPosition ? "next" : "prev";
25089  const isOutOfBound = (current, target) => {
25090    return dir === "next" && current >= target || dir === "prev" && current <= target;
25091  };
25092  const animate = () => {
25093    time = (/* @__PURE__ */ new Date()).getTime();
25094    if (startTime === null) {
25095      startTime = time;
25096    }
25097    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
25098    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
25099    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
25100    if (isOutOfBound(currentPosition, targetPosition)) {
25101      currentPosition = targetPosition;
25102    }
25103    swiper.wrapperEl.scrollTo({
25104      [side]: currentPosition
25105    });
25106    if (isOutOfBound(currentPosition, targetPosition)) {
25107      swiper.wrapperEl.style.overflow = "hidden";
25108      swiper.wrapperEl.style.scrollSnapType = "";
25109      setTimeout(() => {
25110        swiper.wrapperEl.style.overflow = "";
25111        swiper.wrapperEl.scrollTo({
25112          [side]: currentPosition
25113        });
25114      });
25115      window2.cancelAnimationFrame(swiper.cssModeFrameID);
25116      return;
25117    }
25118    swiper.cssModeFrameID = window2.requestAnimationFrame(animate);
25119  };
25120  animate();
25121}
25122function getSlideTransformEl(slideEl) {
25123  return slideEl.querySelector(".swiper-slide-transform") || slideEl.shadowRoot && slideEl.shadowRoot.querySelector(".swiper-slide-transform") || slideEl;
25124}
25125function elementChildren(element, selector) {
25126  if (selector === void 0) {
25127    selector = "";
25128  }
25129  const window2 = getWindow();
25130  const children = [...element.children];
25131  if (window2.HTMLSlotElement && element instanceof HTMLSlotElement) {
25132    children.push(...element.assignedElements());
25133  }
25134  if (!selector) {
25135    return children;
25136  }
25137  return children.filter((el) => el.matches(selector));
25138}
25139function elementIsChildOfSlot(el, slot) {
25140  const elementsQueue = [slot];
25141  while (elementsQueue.length > 0) {
25142    const elementToCheck = elementsQueue.shift();
25143    if (el === elementToCheck) {
25144      return true;
25145    }
25146    elementsQueue.push(...elementToCheck.children, ...elementToCheck.shadowRoot ? elementToCheck.shadowRoot.children : [], ...elementToCheck.assignedElements ? elementToCheck.assignedElements() : []);
25147  }
25148}
25149function elementIsChildOf(el, parent) {
25150  const window2 = getWindow();
25151  let isChild = parent.contains(el);
25152  if (!isChild && window2.HTMLSlotElement && parent instanceof HTMLSlotElement) {
25153    const children = [...parent.assignedElements()];
25154    isChild = children.includes(el);
25155    if (!isChild) {
25156      isChild = elementIsChildOfSlot(el, parent);
25157    }
25158  }
25159  return isChild;
25160}
25161function showWarning(text) {
25162  try {
25163    console.warn(text);
25164    return;
25165  } catch (err) {
25166  }
25167}
25168function createElement(tag, classes2) {
25169  if (classes2 === void 0) {
25170    classes2 = [];
25171  }
25172  const el = document.createElement(tag);
25173  el.classList.add(...Array.isArray(classes2) ? classes2 : classesToTokens(classes2));
25174  return el;
25175}
25176function elementOffset(el) {
25177  const window2 = getWindow();
25178  const document2 = getDocument();
25179  const box = el.getBoundingClientRect();
25180  const body = document2.body;
25181  const clientTop = el.clientTop || body.clientTop || 0;
25182  const clientLeft = el.clientLeft || body.clientLeft || 0;
25183  const scrollTop = el === window2 ? window2.scrollY : el.scrollTop;
25184  const scrollLeft = el === window2 ? window2.scrollX : el.scrollLeft;
25185  return {
25186    top: box.top + scrollTop - clientTop,
25187    left: box.left + scrollLeft - clientLeft
25188  };
25189}
25190function elementPrevAll(el, selector) {
25191  const prevEls = [];
25192  while (el.previousElementSibling) {
25193    const prev = el.previousElementSibling;
25194    if (selector) {
25195      if (prev.matches(selector)) prevEls.push(prev);
25196    } else prevEls.push(prev);
25197    el = prev;
25198  }
25199  return prevEls;
25200}
25201function elementNextAll(el, selector) {
25202  const nextEls = [];
25203  while (el.nextElementSibling) {
25204    const next = el.nextElementSibling;
25205    if (selector) {
25206      if (next.matches(selector)) nextEls.push(next);
25207    } else nextEls.push(next);
25208    el = next;
25209  }
25210  return nextEls;
25211}
25212function elementStyle(el, prop) {
25213  const window2 = getWindow();
25214  return window2.getComputedStyle(el, null).getPropertyValue(prop);
25215}
25216function elementIndex(el) {
25217  let child = el;
25218  let i;
25219  if (child) {
25220    i = 0;
25221    while ((child = child.previousSibling) !== null) {
25222      if (child.nodeType === 1) i += 1;
25223    }
25224    return i;
25225  }
25226  return void 0;
25227}
25228function elementParents(el, selector) {
25229  const parents = [];
25230  let parent = el.parentElement;
25231  while (parent) {
25232    if (selector) {
25233      if (parent.matches(selector)) parents.push(parent);
25234    } else {
25235      parents.push(parent);
25236    }
25237    parent = parent.parentElement;
25238  }
25239  return parents;
25240}
25241function elementTransitionEnd(el, callback) {
25242  function fireCallBack(e) {
25243    if (e.target !== el) return;
25244    callback.call(el, e);
25245    el.removeEventListener("transitionend", fireCallBack);
25246  }
25247  if (callback) {
25248    el.addEventListener("transitionend", fireCallBack);
25249  }
25250}
25251function elementOuterSize(el, size, includeMargins) {
25252  const window2 = getWindow();
25253  {
25254    return el[size === "width" ? "offsetWidth" : "offsetHeight"] + parseFloat(window2.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-right" : "margin-top")) + parseFloat(window2.getComputedStyle(el, null).getPropertyValue(size === "width" ? "margin-left" : "margin-bottom"));
25255  }
25256}
25257function makeElementsArray(el) {
25258  return (Array.isArray(el) ? el : [el]).filter((e) => !!e);
25259}
25260function setInnerHTML(el, html) {
25261  if (html === void 0) {
25262    html = "";
25263  }
25264  if (typeof trustedTypes !== "undefined") {
25265    el.innerHTML = trustedTypes.createPolicy("html", {
25266      createHTML: (s) => s
25267    }).createHTML(html);
25268  } else {
25269    el.innerHTML = html;
25270  }
25271}
25272let support;
25273function calcSupport() {
25274  const window2 = getWindow();
25275  const document2 = getDocument();
25276  return {
25277    smoothScroll: document2.documentElement && document2.documentElement.style && "scrollBehavior" in document2.documentElement.style,
25278    touch: !!("ontouchstart" in window2 || window2.DocumentTouch && document2 instanceof window2.DocumentTouch)
25279  };
25280}
vendor: 23,858 bytes, lines 25281-25937
25281function getSupport() {
25282  if (!support) {
25283    support = calcSupport();
25284  }
25285  return support;
25286}
25287let deviceCached;
25288function calcDevice(_temp) {
25289  let {
25290    userAgent
25291  } = _temp === void 0 ? {} : _temp;
25292  const support2 = getSupport();
25293  const window2 = getWindow();
25294  const platform2 = window2.navigator.platform;
25295  const ua = userAgent || window2.navigator.userAgent;
25296  const device = {
25297    ios: false,
25298    android: false
25299  };
25300  const screenWidth = window2.screen.width;
25301  const screenHeight = window2.screen.height;
25302  const android = ua.match(/(Android);?[\s\/]+([\d.]+)?/);
25303  let ipad = ua.match(/(iPad).*OS\s([\d_]+)/);
25304  const ipod = ua.match(/(iPod)(.*OS\s([\d_]+))?/);
25305  const iphone = !ipad && ua.match(/(iPhone\sOS|iOS)\s([\d_]+)/);
25306  const windows = platform2 === "Win32";
25307  let macos = platform2 === "MacIntel";
25308  const iPadScreens = ["1024x1366", "1366x1024", "834x1194", "1194x834", "834x1112", "1112x834", "768x1024", "1024x768", "820x1180", "1180x820", "810x1080", "1080x810"];
25309  if (!ipad && macos && support2.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {
25310    ipad = ua.match(/(Version)\/([\d.]+)/);
25311    if (!ipad) ipad = [0, 1, "13_0_0"];
25312    macos = false;
25313  }
25314  if (android && !windows) {
25315    device.os = "android";
25316    device.android = true;
25317  }
25318  if (ipad || iphone || ipod) {
25319    device.os = "ios";
25320    device.ios = true;
25321  }
25322  return device;
25323}
25324function getDevice(overrides) {
25325  if (overrides === void 0) {
25326    overrides = {};
25327  }
25328  if (!deviceCached) {
25329    deviceCached = calcDevice(overrides);
25330  }
25331  return deviceCached;
25332}
25333let browser;
25334function calcBrowser() {
25335  const window2 = getWindow();
25336  const device = getDevice();
25337  let needPerspectiveFix = false;
25338  function isSafari() {
25339    const ua = window2.navigator.userAgent.toLowerCase();
25340    return ua.indexOf("safari") >= 0 && ua.indexOf("chrome") < 0 && ua.indexOf("android") < 0;
25341  }
25342  if (isSafari()) {
25343    const ua = String(window2.navigator.userAgent);
25344    if (ua.includes("Version/")) {
25345      const [major, minor] = ua.split("Version/")[1].split(" ")[0].split(".").map((num) => Number(num));
25346      needPerspectiveFix = major < 16 || major === 16 && minor < 2;
25347    }
25348  }
25349  const isWebView = /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window2.navigator.userAgent);
25350  const isSafariBrowser = isSafari();
25351  const need3dFix = isSafariBrowser || isWebView && device.ios;
25352  return {
25353    isSafari: needPerspectiveFix || isSafariBrowser,
25354    needPerspectiveFix,
25355    need3dFix,
25356    isWebView
25357  };
25358}
25359function getBrowser() {
25360  if (!browser) {
25361    browser = calcBrowser();
25362  }
25363  return browser;
25364}
25365function Resize(_ref) {
25366  let {
25367    swiper,
25368    on,
25369    emit: emit2
25370  } = _ref;
25371  const window2 = getWindow();
25372  let observer = null;
25373  let animationFrame = null;
25374  const resizeHandler = () => {
25375    if (!swiper || swiper.destroyed || !swiper.initialized) return;
25376    emit2("beforeResize");
25377    emit2("resize");
25378  };
25379  const createObserver = () => {
25380    if (!swiper || swiper.destroyed || !swiper.initialized) return;
25381    observer = new ResizeObserver((entries) => {
25382      animationFrame = window2.requestAnimationFrame(() => {
25383        const {
25384          width,
25385          height
25386        } = swiper;
25387        let newWidth = width;
25388        let newHeight = height;
25389        entries.forEach((_ref2) => {
25390          let {
25391            contentBoxSize,
25392            contentRect,
25393            target
25394          } = _ref2;
25395          if (target && target !== swiper.el) return;
25396          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;
25397          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;
25398        });
25399        if (newWidth !== width || newHeight !== height) {
25400          resizeHandler();
25401        }
25402      });
25403    });
25404    observer.observe(swiper.el);
25405  };
25406  const removeObserver = () => {
25407    if (animationFrame) {
25408      window2.cancelAnimationFrame(animationFrame);
25409    }
25410    if (observer && observer.unobserve && swiper.el) {
25411      observer.unobserve(swiper.el);
25412      observer = null;
25413    }
25414  };
25415  const orientationChangeHandler = () => {
25416    if (!swiper || swiper.destroyed || !swiper.initialized) return;
25417    emit2("orientationchange");
25418  };
25419  on("init", () => {
25420    if (swiper.params.resizeObserver && typeof window2.ResizeObserver !== "undefined") {
25421      createObserver();
25422      return;
25423    }
25424    window2.addEventListener("resize", resizeHandler);
25425    window2.addEventListener("orientationchange", orientationChangeHandler);
25426  });
25427  on("destroy", () => {
25428    removeObserver();
25429    window2.removeEventListener("resize", resizeHandler);
25430    window2.removeEventListener("orientationchange", orientationChangeHandler);
25431  });
25432}
25433function Observer(_ref) {
25434  let {
25435    swiper,
25436    extendParams,
25437    on,
25438    emit: emit2
25439  } = _ref;
25440  const observers = [];
25441  const window2 = getWindow();
25442  const attach = function(target, options2) {
25443    if (options2 === void 0) {
25444      options2 = {};
25445    }
25446    const ObserverFunc = window2.MutationObserver || window2.WebkitMutationObserver;
25447    const observer = new ObserverFunc((mutations2) => {
25448      if (swiper.__preventObserver__) return;
25449      if (mutations2.length === 1) {
25450        emit2("observerUpdate", mutations2[0]);
25451        return;
25452      }
25453      const observerUpdate = function observerUpdate2() {
25454        emit2("observerUpdate", mutations2[0]);
25455      };
25456      if (window2.requestAnimationFrame) {
25457        window2.requestAnimationFrame(observerUpdate);
25458      } else {
25459        window2.setTimeout(observerUpdate, 0);
25460      }
25461    });
25462    observer.observe(target, {
25463      attributes: typeof options2.attributes === "undefined" ? true : options2.attributes,
25464      childList: swiper.isElement || (typeof options2.childList === "undefined" ? true : options2).childList,
25465      characterData: typeof options2.characterData === "undefined" ? true : options2.characterData
25466    });
25467    observers.push(observer);
25468  };
25469  const init = () => {
25470    if (!swiper.params.observer) return;
25471    if (swiper.params.observeParents) {
25472      const containerParents = elementParents(swiper.hostEl);
25473      for (let i = 0; i < containerParents.length; i += 1) {
25474        attach(containerParents[i]);
25475      }
25476    }
25477    attach(swiper.hostEl, {
25478      childList: swiper.params.observeSlideChildren
25479    });
25480    attach(swiper.wrapperEl, {
25481      attributes: false
25482    });
25483  };
25484  const destroy = () => {
25485    observers.forEach((observer) => {
25486      observer.disconnect();
25487    });
25488    observers.splice(0, observers.length);
25489  };
25490  extendParams({
25491    observer: false,
25492    observeParents: false,
25493    observeSlideChildren: false
25494  });
25495  on("init", init);
25496  on("destroy", destroy);
25497}
25498var eventsEmitter = {
25499  on(events2, handler, priority) {
25500    const self2 = this;
25501    if (!self2.eventsListeners || self2.destroyed) return self2;
25502    if (typeof handler !== "function") return self2;
25503    const method = priority ? "unshift" : "push";
25504    events2.split(" ").forEach((event) => {
25505      if (!self2.eventsListeners[event]) self2.eventsListeners[event] = [];
25506      self2.eventsListeners[event][method](handler);
25507    });
25508    return self2;
25509  },
25510  once(events2, handler, priority) {
25511    const self2 = this;
25512    if (!self2.eventsListeners || self2.destroyed) return self2;
25513    if (typeof handler !== "function") return self2;
25514    function onceHandler() {
25515      self2.off(events2, onceHandler);
25516      if (onceHandler.__emitterProxy) {
25517        delete onceHandler.__emitterProxy;
25518      }
25519      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
25520        args[_key] = arguments[_key];
25521      }
25522      handler.apply(self2, args);
25523    }
25524    onceHandler.__emitterProxy = handler;
25525    return self2.on(events2, onceHandler, priority);
25526  },
25527  onAny(handler, priority) {
25528    const self2 = this;
25529    if (!self2.eventsListeners || self2.destroyed) return self2;
25530    if (typeof handler !== "function") return self2;
25531    const method = priority ? "unshift" : "push";
25532    if (self2.eventsAnyListeners.indexOf(handler) < 0) {
25533      self2.eventsAnyListeners[method](handler);
25534    }
25535    return self2;
25536  },
25537  offAny(handler) {
25538    const self2 = this;
25539    if (!self2.eventsListeners || self2.destroyed) return self2;
25540    if (!self2.eventsAnyListeners) return self2;
25541    const index2 = self2.eventsAnyListeners.indexOf(handler);
25542    if (index2 >= 0) {
25543      self2.eventsAnyListeners.splice(index2, 1);
25544    }
25545    return self2;
25546  },
25547  off(events2, handler) {
25548    const self2 = this;
25549    if (!self2.eventsListeners || self2.destroyed) return self2;
25550    if (!self2.eventsListeners) return self2;
25551    events2.split(" ").forEach((event) => {
25552      if (typeof handler === "undefined") {
25553        self2.eventsListeners[event] = [];
25554      } else if (self2.eventsListeners[event]) {
25555        self2.eventsListeners[event].forEach((eventHandler, index2) => {
25556          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {
25557            self2.eventsListeners[event].splice(index2, 1);
25558          }
25559        });
25560      }
25561    });
25562    return self2;
25563  },
25564  emit() {
25565    const self2 = this;
25566    if (!self2.eventsListeners || self2.destroyed) return self2;
25567    if (!self2.eventsListeners) return self2;
25568    let events2;
25569    let data;
25570    let context;
25571    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
25572      args[_key2] = arguments[_key2];
25573    }
25574    if (typeof args[0] === "string" || Array.isArray(args[0])) {
25575      events2 = args[0];
25576      data = args.slice(1, args.length);
25577      context = self2;
25578    } else {
25579      events2 = args[0].events;
25580      data = args[0].data;
25581      context = args[0].context || self2;
25582    }
25583    data.unshift(context);
25584    const eventsArray = Array.isArray(events2) ? events2 : events2.split(" ");
25585    eventsArray.forEach((event) => {
25586      if (self2.eventsAnyListeners && self2.eventsAnyListeners.length) {
25587        self2.eventsAnyListeners.forEach((eventHandler) => {
25588          eventHandler.apply(context, [event, ...data]);
25589        });
25590      }
25591      if (self2.eventsListeners && self2.eventsListeners[event]) {
25592        self2.eventsListeners[event].forEach((eventHandler) => {
25593          eventHandler.apply(context, data);
25594        });
25595      }
25596    });
25597    return self2;
25598  }
25599};
25600function updateSize() {
25601  const swiper = this;
25602  let width;
25603  let height;
25604  const el = swiper.el;
25605  if (typeof swiper.params.width !== "undefined" && swiper.params.width !== null) {
25606    width = swiper.params.width;
25607  } else {
25608    width = el.clientWidth;
25609  }
25610  if (typeof swiper.params.height !== "undefined" && swiper.params.height !== null) {
25611    height = swiper.params.height;
25612  } else {
25613    height = el.clientHeight;
25614  }
25615  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {
25616    return;
25617  }
25618  width = width - parseInt(elementStyle(el, "padding-left") || 0, 10) - parseInt(elementStyle(el, "padding-right") || 0, 10);
25619  height = height - parseInt(elementStyle(el, "padding-top") || 0, 10) - parseInt(elementStyle(el, "padding-bottom") || 0, 10);
25620  if (Number.isNaN(width)) width = 0;
25621  if (Number.isNaN(height)) height = 0;
25622  Object.assign(swiper, {
25623    width,
25624    height,
25625    size: swiper.isHorizontal() ? width : height
25626  });
25627}
25628function updateSlides() {
25629  const swiper = this;
25630  function getDirectionPropertyValue(node, label) {
25631    return parseFloat(node.getPropertyValue(swiper.getDirectionLabel(label)) || 0);
25632  }
25633  const params = swiper.params;
25634  const {
25635    wrapperEl,
25636    slidesEl,
25637    size: swiperSize,
25638    rtlTranslate: rtl,
25639    wrongRTL
25640  } = swiper;
25641  const isVirtual = swiper.virtual && params.virtual.enabled;
25642  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;
25643  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);
25644  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;
25645  let snapGrid = [];
25646  const slidesGrid = [];
25647  const slidesSizesGrid = [];
25648  let offsetBefore = params.slidesOffsetBefore;
25649  if (typeof offsetBefore === "function") {
25650    offsetBefore = params.slidesOffsetBefore.call(swiper);
25651  }
25652  let offsetAfter = params.slidesOffsetAfter;
25653  if (typeof offsetAfter === "function") {
25654    offsetAfter = params.slidesOffsetAfter.call(swiper);
25655  }
25656  const previousSnapGridLength = swiper.snapGrid.length;
25657  const previousSlidesGridLength = swiper.slidesGrid.length;
25658  let spaceBetween = params.spaceBetween;
25659  let slidePosition = -offsetBefore;
25660  let prevSlideSize = 0;
25661  let index2 = 0;
25662  if (typeof swiperSize === "undefined") {
25663    return;
25664  }
25665  if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
25666    spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiperSize;
25667  } else if (typeof spaceBetween === "string") {
25668    spaceBetween = parseFloat(spaceBetween);
25669  }
25670  swiper.virtualSize = -spaceBetween;
25671  slides.forEach((slideEl) => {
25672    if (rtl) {
25673      slideEl.style.marginLeft = "";
25674    } else {
25675      slideEl.style.marginRight = "";
25676    }
25677    slideEl.style.marginBottom = "";
25678    slideEl.style.marginTop = "";
25679  });
25680  if (params.centeredSlides && params.cssMode) {
25681    setCSSProperty(wrapperEl, "--swiper-centered-offset-before", "");
25682    setCSSProperty(wrapperEl, "--swiper-centered-offset-after", "");
25683  }
25684  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;
25685  if (gridEnabled) {
25686    swiper.grid.initSlides(slides);
25687  } else if (swiper.grid) {
25688    swiper.grid.unsetSlides();
25689  }
25690  let slideSize;
25691  const shouldResetSlideSize = params.slidesPerView === "auto" && params.breakpoints && Object.keys(params.breakpoints).filter((key) => {
25692    return typeof params.breakpoints[key].slidesPerView !== "undefined";
25693  }).length > 0;
25694  for (let i = 0; i < slidesLength; i += 1) {
25695    slideSize = 0;
25696    let slide2;
25697    if (slides[i]) slide2 = slides[i];
25698    if (gridEnabled) {
25699      swiper.grid.updateSlide(i, slide2, slides);
25700    }
25701    if (slides[i] && elementStyle(slide2, "display") === "none") continue;
25702    if (params.slidesPerView === "auto") {
25703      if (shouldResetSlideSize) {
25704        slides[i].style[swiper.getDirectionLabel("width")] = ``;
25705      }
25706      const slideStyles = getComputedStyle(slide2);
25707      const currentTransform = slide2.style.transform;
25708      const currentWebKitTransform = slide2.style.webkitTransform;
25709      if (currentTransform) {
25710        slide2.style.transform = "none";
25711      }
25712      if (currentWebKitTransform) {
25713        slide2.style.webkitTransform = "none";
25714      }
25715      if (params.roundLengths) {
25716        slideSize = swiper.isHorizontal() ? elementOuterSize(slide2, "width") : elementOuterSize(slide2, "height");
25717      } else {
25718        const width = getDirectionPropertyValue(slideStyles, "width");
25719        const paddingLeft = getDirectionPropertyValue(slideStyles, "padding-left");
25720        const paddingRight = getDirectionPropertyValue(slideStyles, "padding-right");
25721        const marginLeft = getDirectionPropertyValue(slideStyles, "margin-left");
25722        const marginRight = getDirectionPropertyValue(slideStyles, "margin-right");
25723        const boxSizing = slideStyles.getPropertyValue("box-sizing");
25724        if (boxSizing && boxSizing === "border-box") {
25725          slideSize = width + marginLeft + marginRight;
25726        } else {
25727          const {
25728            clientWidth,
25729            offsetWidth
25730          } = slide2;
25731          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);
25732        }
25733      }
25734      if (currentTransform) {
25735        slide2.style.transform = currentTransform;
25736      }
25737      if (currentWebKitTransform) {
25738        slide2.style.webkitTransform = currentWebKitTransform;
25739      }
25740      if (params.roundLengths) slideSize = Math.floor(slideSize);
25741    } else {
25742      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;
25743      if (params.roundLengths) slideSize = Math.floor(slideSize);
25744      if (slides[i]) {
25745        slides[i].style[swiper.getDirectionLabel("width")] = `${slideSize}px`;
25746      }
25747    }
25748    if (slides[i]) {
25749      slides[i].swiperSlideSize = slideSize;
25750    }
25751    slidesSizesGrid.push(slideSize);
25752    if (params.centeredSlides) {
25753      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;
25754      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
25755      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;
25756      if (Math.abs(slidePosition) < 1 / 1e3) slidePosition = 0;
25757      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
25758      if (index2 % params.slidesPerGroup === 0) snapGrid.push(slidePosition);
25759      slidesGrid.push(slidePosition);
25760    } else {
25761      if (params.roundLengths) slidePosition = Math.floor(slidePosition);
25762      if ((index2 - Math.min(swiper.params.slidesPerGroupSkip, index2)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);
25763      slidesGrid.push(slidePosition);
25764      slidePosition = slidePosition + slideSize + spaceBetween;
25765    }
25766    swiper.virtualSize += slideSize + spaceBetween;
25767    prevSlideSize = slideSize;
25768    index2 += 1;
25769  }
25770  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;
25771  if (rtl && wrongRTL && (params.effect === "slide" || params.effect === "coverflow")) {
25772    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;
25773  }
25774  if (params.setWrapperSize) {
25775    wrapperEl.style[swiper.getDirectionLabel("width")] = `${swiper.virtualSize + spaceBetween}px`;
25776  }
25777  if (gridEnabled) {
25778    swiper.grid.updateWrapperSize(slideSize, snapGrid);
25779  }
25780  if (!params.centeredSlides) {
25781    const newSlidesGrid = [];
25782    for (let i = 0; i < snapGrid.length; i += 1) {
25783      let slidesGridItem = snapGrid[i];
25784      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);
25785      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {
25786        newSlidesGrid.push(slidesGridItem);
25787      }
25788    }
25789    snapGrid = newSlidesGrid;
25790    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {
25791      snapGrid.push(swiper.virtualSize - swiperSize);
25792    }
25793  }
25794  if (isVirtual && params.loop) {
25795    const size = slidesSizesGrid[0] + spaceBetween;
25796    if (params.slidesPerGroup > 1) {
25797      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);
25798      const groupSize = size * params.slidesPerGroup;
25799      for (let i = 0; i < groups; i += 1) {
25800        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);
25801      }
25802    }
25803    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {
25804      if (params.slidesPerGroup === 1) {
25805        snapGrid.push(snapGrid[snapGrid.length - 1] + size);
25806      }
25807      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);
25808      swiper.virtualSize += size;
25809    }
25810  }
25811  if (snapGrid.length === 0) snapGrid = [0];
25812  if (spaceBetween !== 0) {
25813    const key = swiper.isHorizontal() && rtl ? "marginLeft" : swiper.getDirectionLabel("marginRight");
25814    slides.filter((_, slideIndex) => {
25815      if (!params.cssMode || params.loop) return true;
25816      if (slideIndex === slides.length - 1) {
25817        return false;
25818      }
25819      return true;
25820    }).forEach((slideEl) => {
25821      slideEl.style[key] = `${spaceBetween}px`;
25822    });
25823  }
25824  if (params.centeredSlides && params.centeredSlidesBounds) {
25825    let allSlidesSize = 0;
25826    slidesSizesGrid.forEach((slideSizeValue) => {
25827      allSlidesSize += slideSizeValue + (spaceBetween || 0);
25828    });
25829    allSlidesSize -= spaceBetween;
25830    const maxSnap = allSlidesSize > swiperSize ? allSlidesSize - swiperSize : 0;
25831    snapGrid = snapGrid.map((snap) => {
25832      if (snap <= 0) return -offsetBefore;
25833      if (snap > maxSnap) return maxSnap + offsetAfter;
25834      return snap;
25835    });
25836  }
25837  if (params.centerInsufficientSlides) {
25838    let allSlidesSize = 0;
25839    slidesSizesGrid.forEach((slideSizeValue) => {
25840      allSlidesSize += slideSizeValue + (spaceBetween || 0);
25841    });
25842    allSlidesSize -= spaceBetween;
25843    const offsetSize = (params.slidesOffsetBefore || 0) + (params.slidesOffsetAfter || 0);
25844    if (allSlidesSize + offsetSize < swiperSize) {
25845      const allSlidesOffset = (swiperSize - allSlidesSize - offsetSize) / 2;
25846      snapGrid.forEach((snap, snapIndex) => {
25847        snapGrid[snapIndex] = snap - allSlidesOffset;
25848      });
25849      slidesGrid.forEach((snap, snapIndex) => {
25850        slidesGrid[snapIndex] = snap + allSlidesOffset;
25851      });
25852    }
25853  }
25854  Object.assign(swiper, {
25855    slides,
25856    snapGrid,
25857    slidesGrid,
25858    slidesSizesGrid
25859  });
25860  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {
25861    setCSSProperty(wrapperEl, "--swiper-centered-offset-before", `${-snapGrid[0]}px`);
25862    setCSSProperty(wrapperEl, "--swiper-centered-offset-after", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);
25863    const addToSnapGrid = -swiper.snapGrid[0];
25864    const addToSlidesGrid = -swiper.slidesGrid[0];
25865    swiper.snapGrid = swiper.snapGrid.map((v) => v + addToSnapGrid);
25866    swiper.slidesGrid = swiper.slidesGrid.map((v) => v + addToSlidesGrid);
25867  }
25868  if (slidesLength !== previousSlidesLength) {
25869    swiper.emit("slidesLengthChange");
25870  }
25871  if (snapGrid.length !== previousSnapGridLength) {
25872    if (swiper.params.watchOverflow) swiper.checkOverflow();
25873    swiper.emit("snapGridLengthChange");
25874  }
25875  if (slidesGrid.length !== previousSlidesGridLength) {
25876    swiper.emit("slidesGridLengthChange");
25877  }
25878  if (params.watchSlidesProgress) {
25879    swiper.updateSlidesOffset();
25880  }
25881  swiper.emit("slidesUpdated");
25882  if (!isVirtual && !params.cssMode && (params.effect === "slide" || params.effect === "fade")) {
25883    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;
25884    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);
25885    if (slidesLength <= params.maxBackfaceHiddenSlides) {
25886      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);
25887    } else if (hasClassBackfaceClassAdded) {
25888      swiper.el.classList.remove(backFaceHiddenClass);
25889    }
25890  }
25891}
25892function updateAutoHeight(speed) {
25893  const swiper = this;
25894  const activeSlides = [];
25895  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
25896  let newHeight = 0;
25897  let i;
25898  if (typeof speed === "number") {
25899    swiper.setTransition(speed);
25900  } else if (speed === true) {
25901    swiper.setTransition(swiper.params.speed);
25902  }
25903  const getSlideByIndex = (index2) => {
25904    if (isVirtual) {
25905      return swiper.slides[swiper.getSlideIndexByData(index2)];
25906    }
25907    return swiper.slides[index2];
25908  };
25909  if (swiper.params.slidesPerView !== "auto" && swiper.params.slidesPerView > 1) {
25910    if (swiper.params.centeredSlides) {
25911      (swiper.visibleSlides || []).forEach((slide2) => {
25912        activeSlides.push(slide2);
25913      });
25914    } else {
25915      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {
25916        const index2 = swiper.activeIndex + i;
25917        if (index2 > swiper.slides.length && !isVirtual) break;
25918        activeSlides.push(getSlideByIndex(index2));
25919      }
25920    }
25921  } else {
25922    activeSlides.push(getSlideByIndex(swiper.activeIndex));
25923  }
25924  for (i = 0; i < activeSlides.length; i += 1) {
25925    if (typeof activeSlides[i] !== "undefined") {
25926      const height = activeSlides[i].offsetHeight;
25927      newHeight = height > newHeight ? height : newHeight;
25928    }
25929  }
25930  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;
25931}
25932function updateSlidesOffset() {
25933  const swiper = this;
25934  const slides = swiper.slides;
25935  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;
25936  for (let i = 0; i < slides.length; i += 1) {
25937    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minu
vendor: 2,198 bytes, lines 25937-25985
25937sOffset - swiper.cssOverflowAdjustment();
25938  }
25939}
25940const toggleSlideClasses$1 = (slideEl, condition, className) => {
25941  if (condition && !slideEl.classList.contains(className)) {
25942    slideEl.classList.add(className);
25943  } else if (!condition && slideEl.classList.contains(className)) {
25944    slideEl.classList.remove(className);
25945  }
25946};
25947function updateSlidesProgress(translate2) {
25948  if (translate2 === void 0) {
25949    translate2 = this && this.translate || 0;
25950  }
25951  const swiper = this;
25952  const params = swiper.params;
25953  const {
25954    slides,
25955    rtlTranslate: rtl,
25956    snapGrid
25957  } = swiper;
25958  if (slides.length === 0) return;
25959  if (typeof slides[0].swiperSlideOffset === "undefined") swiper.updateSlidesOffset();
25960  let offsetCenter = -translate2;
25961  if (rtl) offsetCenter = translate2;
25962  swiper.visibleSlidesIndexes = [];
25963  swiper.visibleSlides = [];
25964  let spaceBetween = params.spaceBetween;
25965  if (typeof spaceBetween === "string" && spaceBetween.indexOf("%") >= 0) {
25966    spaceBetween = parseFloat(spaceBetween.replace("%", "")) / 100 * swiper.size;
25967  } else if (typeof spaceBetween === "string") {
25968    spaceBetween = parseFloat(spaceBetween);
25969  }
25970  for (let i = 0; i < slides.length; i += 1) {
25971    const slide2 = slides[i];
25972    let slideOffset = slide2.swiperSlideOffset;
25973    if (params.cssMode && params.centeredSlides) {
25974      slideOffset -= slides[0].swiperSlideOffset;
25975    }
25976    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + spaceBetween);
25977    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide2.swiperSlideSize + spaceBetween);
25978    const slideBefore = -(offsetCenter - slideOffset);
25979    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];
25980    const isFullyVisible = slideBefore >= 0 && slideBefore <= swiper.size - swiper.slidesSizesGrid[i];
25981    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;
25982    if (isVisible) {
25983      swiper.visibleSlides.push(slide2);
25984      swiper.visibleSlidesIndexes.push(i);
25985    }
vendor: 4,456 bytes, lines 25986-26105
25986    toggleSlideClasses$1(slide2, isVisible, params.slideVisibleClass);
25987    toggleSlideClasses$1(slide2, isFullyVisible, params.slideFullyVisibleClass);
25988    slide2.progress = rtl ? -slideProgress : slideProgress;
25989    slide2.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;
25990  }
25991}
25992function updateProgress(translate2) {
25993  const swiper = this;
25994  if (typeof translate2 === "undefined") {
25995    const multiplier = swiper.rtlTranslate ? -1 : 1;
25996    translate2 = swiper && swiper.translate && swiper.translate * multiplier || 0;
25997  }
25998  const params = swiper.params;
25999  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
26000  let {
26001    progress,
26002    isBeginning,
26003    isEnd,
26004    progressLoop
26005  } = swiper;
26006  const wasBeginning = isBeginning;
26007  const wasEnd = isEnd;
26008  if (translatesDiff === 0) {
26009    progress = 0;
26010    isBeginning = true;
26011    isEnd = true;
26012  } else {
26013    progress = (translate2 - swiper.minTranslate()) / translatesDiff;
26014    const isBeginningRounded = Math.abs(translate2 - swiper.minTranslate()) < 1;
26015    const isEndRounded = Math.abs(translate2 - swiper.maxTranslate()) < 1;
26016    isBeginning = isBeginningRounded || progress <= 0;
26017    isEnd = isEndRounded || progress >= 1;
26018    if (isBeginningRounded) progress = 0;
26019    if (isEndRounded) progress = 1;
26020  }
26021  if (params.loop) {
26022    const firstSlideIndex = swiper.getSlideIndexByData(0);
26023    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);
26024    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];
26025    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];
26026    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];
26027    const translateAbs = Math.abs(translate2);
26028    if (translateAbs >= firstSlideTranslate) {
26029      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;
26030    } else {
26031      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;
26032    }
26033    if (progressLoop > 1) progressLoop -= 1;
26034  }
26035  Object.assign(swiper, {
26036    progress,
26037    progressLoop,
26038    isBeginning,
26039    isEnd
26040  });
26041  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate2);
26042  if (isBeginning && !wasBeginning) {
26043    swiper.emit("reachBeginning toEdge");
26044  }
26045  if (isEnd && !wasEnd) {
26046    swiper.emit("reachEnd toEdge");
26047  }
26048  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {
26049    swiper.emit("fromEdge");
26050  }
26051  swiper.emit("progress", progress);
26052}
26053const toggleSlideClasses = (slideEl, condition, className) => {
26054  if (condition && !slideEl.classList.contains(className)) {
26055    slideEl.classList.add(className);
26056  } else if (!condition && slideEl.classList.contains(className)) {
26057    slideEl.classList.remove(className);
26058  }
26059};
26060function updateSlidesClasses() {
26061  const swiper = this;
26062  const {
26063    slides,
26064    params,
26065    slidesEl,
26066    activeIndex
26067  } = swiper;
26068  const isVirtual = swiper.virtual && params.virtual.enabled;
26069  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
26070  const getFilteredSlide = (selector) => {
26071    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];
26072  };
26073  let activeSlide;
26074  let prevSlide;
26075  let nextSlide;
26076  if (isVirtual) {
26077    if (params.loop) {
26078      let slideIndex = activeIndex - swiper.virtual.slidesBefore;
26079      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;
26080      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;
26081      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${slideIndex}"]`);
26082    } else {
26083      activeSlide = getFilteredSlide(`[data-swiper-slide-index="${activeIndex}"]`);
26084    }
26085  } else {
26086    if (gridEnabled) {
26087      activeSlide = slides.find((slideEl) => slideEl.column === activeIndex);
26088      nextSlide = slides.find((slideEl) => slideEl.column === activeIndex + 1);
26089      prevSlide = slides.find((slideEl) => slideEl.column === activeIndex - 1);
26090    } else {
26091      activeSlide = slides[activeIndex];
26092    }
26093  }
26094  if (activeSlide) {
26095    if (!gridEnabled) {
26096      nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
26097      if (params.loop && !nextSlide) {
26098        nextSlide = slides[0];
26099      }
26100      prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];
26101      if (params.loop && !prevSlide === 0) {
26102        prevSlide = slides[slides.length - 1];
26103      }
26104    }
26105  }
vendor: 4,380 bytes, lines 26106-26221
26106  slides.forEach((slideEl) => {
26107    toggleSlideClasses(slideEl, slideEl === activeSlide, params.slideActiveClass);
26108    toggleSlideClasses(slideEl, slideEl === nextSlide, params.slideNextClass);
26109    toggleSlideClasses(slideEl, slideEl === prevSlide, params.slidePrevClass);
26110  });
26111  swiper.emitSlidesClasses();
26112}
26113const processLazyPreloader = (swiper, imageEl) => {
26114  if (!swiper || swiper.destroyed || !swiper.params) return;
26115  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
26116  const slideEl = imageEl.closest(slideSelector());
26117  if (slideEl) {
26118    let lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);
26119    if (!lazyEl && swiper.isElement) {
26120      if (slideEl.shadowRoot) {
26121        lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
26122      } else {
26123        requestAnimationFrame(() => {
26124          if (slideEl.shadowRoot) {
26125            lazyEl = slideEl.shadowRoot.querySelector(`.${swiper.params.lazyPreloaderClass}`);
26126            if (lazyEl) lazyEl.remove();
26127          }
26128        });
26129      }
26130    }
26131    if (lazyEl) lazyEl.remove();
26132  }
26133};
26134const unlazy = (swiper, index2) => {
26135  if (!swiper.slides[index2]) return;
26136  const imageEl = swiper.slides[index2].querySelector('[loading="lazy"]');
26137  if (imageEl) imageEl.removeAttribute("loading");
26138};
26139const preload = (swiper) => {
26140  if (!swiper || swiper.destroyed || !swiper.params) return;
26141  let amount = swiper.params.lazyPreloadPrevNext;
26142  const len = swiper.slides.length;
26143  if (!len || !amount || amount < 0) return;
26144  amount = Math.min(amount, len);
26145  const slidesPerView = swiper.params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);
26146  const activeIndex = swiper.activeIndex;
26147  if (swiper.params.grid && swiper.params.grid.rows > 1) {
26148    const activeColumn = activeIndex;
26149    const preloadColumns = [activeColumn - amount];
26150    preloadColumns.push(...Array.from({
26151      length: amount
26152    }).map((_, i) => {
26153      return activeColumn + slidesPerView + i;
26154    }));
26155    swiper.slides.forEach((slideEl, i) => {
26156      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);
26157    });
26158    return;
26159  }
26160  const slideIndexLastInView = activeIndex + slidesPerView - 1;
26161  if (swiper.params.rewind || swiper.params.loop) {
26162    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {
26163      const realIndex = (i % len + len) % len;
26164      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);
26165    }
26166  } else {
26167    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {
26168      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {
26169        unlazy(swiper, i);
26170      }
26171    }
26172  }
26173};
26174function getActiveIndexByTranslate(swiper) {
26175  const {
26176    slidesGrid,
26177    params
26178  } = swiper;
26179  const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
26180  let activeIndex;
26181  for (let i = 0; i < slidesGrid.length; i += 1) {
26182    if (typeof slidesGrid[i + 1] !== "undefined") {
26183      if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {
26184        activeIndex = i;
26185      } else if (translate2 >= slidesGrid[i] && translate2 < slidesGrid[i + 1]) {
26186        activeIndex = i + 1;
26187      }
26188    } else if (translate2 >= slidesGrid[i]) {
26189      activeIndex = i;
26190    }
26191  }
26192  if (params.normalizeSlideIndex) {
26193    if (activeIndex < 0 || typeof activeIndex === "undefined") activeIndex = 0;
26194  }
26195  return activeIndex;
26196}
26197function updateActiveIndex(newActiveIndex) {
26198  const swiper = this;
26199  const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
26200  const {
26201    snapGrid,
26202    params,
26203    activeIndex: previousIndex,
26204    realIndex: previousRealIndex,
26205    snapIndex: previousSnapIndex
26206  } = swiper;
26207  let activeIndex = newActiveIndex;
26208  let snapIndex;
26209  const getVirtualRealIndex = (aIndex) => {
26210    let realIndex2 = aIndex - swiper.virtual.slidesBefore;
26211    if (realIndex2 < 0) {
26212      realIndex2 = swiper.virtual.slides.length + realIndex2;
26213    }
26214    if (realIndex2 >= swiper.virtual.slides.length) {
26215      realIndex2 -= swiper.virtual.slides.length;
26216    }
26217    return realIndex2;
26218  };
26219  if (typeof activeIndex === "undefined") {
26220    activeIndex = getActiveIndexByTranslate(swiper);
26221  }
vendor: 45,395 bytes, lines 26222-27525
26222  if (snapGrid.indexOf(translate2) >= 0) {
26223    snapIndex = snapGrid.indexOf(translate2);
26224  } else {
26225    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);
26226    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);
26227  }
26228  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
26229  if (activeIndex === previousIndex && !swiper.params.loop) {
26230    if (snapIndex !== previousSnapIndex) {
26231      swiper.snapIndex = snapIndex;
26232      swiper.emit("snapIndexChange");
26233    }
26234    return;
26235  }
26236  if (activeIndex === previousIndex && swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
26237    swiper.realIndex = getVirtualRealIndex(activeIndex);
26238    return;
26239  }
26240  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
26241  let realIndex;
26242  if (swiper.virtual && params.virtual.enabled && params.loop) {
26243    realIndex = getVirtualRealIndex(activeIndex);
26244  } else if (gridEnabled) {
26245    const firstSlideInColumn = swiper.slides.find((slideEl) => slideEl.column === activeIndex);
26246    let activeSlideIndex = parseInt(firstSlideInColumn.getAttribute("data-swiper-slide-index"), 10);
26247    if (Number.isNaN(activeSlideIndex)) {
26248      activeSlideIndex = Math.max(swiper.slides.indexOf(firstSlideInColumn), 0);
26249    }
26250    realIndex = Math.floor(activeSlideIndex / params.grid.rows);
26251  } else if (swiper.slides[activeIndex]) {
26252    const slideIndex = swiper.slides[activeIndex].getAttribute("data-swiper-slide-index");
26253    if (slideIndex) {
26254      realIndex = parseInt(slideIndex, 10);
26255    } else {
26256      realIndex = activeIndex;
26257    }
26258  } else {
26259    realIndex = activeIndex;
26260  }
26261  Object.assign(swiper, {
26262    previousSnapIndex,
26263    snapIndex,
26264    previousRealIndex,
26265    realIndex,
26266    previousIndex,
26267    activeIndex
26268  });
26269  if (swiper.initialized) {
26270    preload(swiper);
26271  }
26272  swiper.emit("activeIndexChange");
26273  swiper.emit("snapIndexChange");
26274  if (swiper.initialized || swiper.params.runCallbacksOnInit) {
26275    if (previousRealIndex !== realIndex) {
26276      swiper.emit("realIndexChange");
26277    }
26278    swiper.emit("slideChange");
26279  }
26280}
26281function updateClickedSlide(el, path) {
26282  const swiper = this;
26283  const params = swiper.params;
26284  let slide2 = el.closest(`.${params.slideClass}, swiper-slide`);
26285  if (!slide2 && swiper.isElement && path && path.length > 1 && path.includes(el)) {
26286    [...path.slice(path.indexOf(el) + 1, path.length)].forEach((pathEl) => {
26287      if (!slide2 && pathEl.matches && pathEl.matches(`.${params.slideClass}, swiper-slide`)) {
26288        slide2 = pathEl;
26289      }
26290    });
26291  }
26292  let slideFound = false;
26293  let slideIndex;
26294  if (slide2) {
26295    for (let i = 0; i < swiper.slides.length; i += 1) {
26296      if (swiper.slides[i] === slide2) {
26297        slideFound = true;
26298        slideIndex = i;
26299        break;
26300      }
26301    }
26302  }
26303  if (slide2 && slideFound) {
26304    swiper.clickedSlide = slide2;
26305    if (swiper.virtual && swiper.params.virtual.enabled) {
26306      swiper.clickedIndex = parseInt(slide2.getAttribute("data-swiper-slide-index"), 10);
26307    } else {
26308      swiper.clickedIndex = slideIndex;
26309    }
26310  } else {
26311    swiper.clickedSlide = void 0;
26312    swiper.clickedIndex = void 0;
26313    return;
26314  }
26315  if (params.slideToClickedSlide && swiper.clickedIndex !== void 0 && swiper.clickedIndex !== swiper.activeIndex) {
26316    swiper.slideToClickedSlide();
26317  }
26318}
26319var update3 = {
26320  updateSize,
26321  updateSlides,
26322  updateAutoHeight,
26323  updateSlidesOffset,
26324  updateSlidesProgress,
26325  updateProgress,
26326  updateSlidesClasses,
26327  updateActiveIndex,
26328  updateClickedSlide
26329};
26330function getSwiperTranslate(axis) {
26331  if (axis === void 0) {
26332    axis = this.isHorizontal() ? "x" : "y";
26333  }
26334  const swiper = this;
26335  const {
26336    params,
26337    rtlTranslate: rtl,
26338    translate: translate2,
26339    wrapperEl
26340  } = swiper;
26341  if (params.virtualTranslate) {
26342    return rtl ? -translate2 : translate2;
26343  }
26344  if (params.cssMode) {
26345    return translate2;
26346  }
26347  let currentTranslate = getTranslate(wrapperEl, axis);
26348  currentTranslate += swiper.cssOverflowAdjustment();
26349  if (rtl) currentTranslate = -currentTranslate;
26350  return currentTranslate || 0;
26351}
26352function setTranslate(translate2, byController) {
26353  const swiper = this;
26354  const {
26355    rtlTranslate: rtl,
26356    params,
26357    wrapperEl,
26358    progress
26359  } = swiper;
26360  let x = 0;
26361  let y = 0;
26362  const z = 0;
26363  if (swiper.isHorizontal()) {
26364    x = rtl ? -translate2 : translate2;
26365  } else {
26366    y = translate2;
26367  }
26368  if (params.roundLengths) {
26369    x = Math.floor(x);
26370    y = Math.floor(y);
26371  }
26372  swiper.previousTranslate = swiper.translate;
26373  swiper.translate = swiper.isHorizontal() ? x : y;
26374  if (params.cssMode) {
26375    wrapperEl[swiper.isHorizontal() ? "scrollLeft" : "scrollTop"] = swiper.isHorizontal() ? -x : -y;
26376  } else if (!params.virtualTranslate) {
26377    if (swiper.isHorizontal()) {
26378      x -= swiper.cssOverflowAdjustment();
26379    } else {
26380      y -= swiper.cssOverflowAdjustment();
26381    }
26382    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;
26383  }
26384  let newProgress;
26385  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
26386  if (translatesDiff === 0) {
26387    newProgress = 0;
26388  } else {
26389    newProgress = (translate2 - swiper.minTranslate()) / translatesDiff;
26390  }
26391  if (newProgress !== progress) {
26392    swiper.updateProgress(translate2);
26393  }
26394  swiper.emit("setTranslate", swiper.translate, byController);
26395}
26396function minTranslate() {
26397  return -this.snapGrid[0];
26398}
26399function maxTranslate() {
26400  return -this.snapGrid[this.snapGrid.length - 1];
26401}
26402function translateTo(translate2, speed, runCallbacks, translateBounds, internal) {
26403  if (translate2 === void 0) {
26404    translate2 = 0;
26405  }
26406  if (speed === void 0) {
26407    speed = this.params.speed;
26408  }
26409  if (runCallbacks === void 0) {
26410    runCallbacks = true;
26411  }
26412  if (translateBounds === void 0) {
26413    translateBounds = true;
26414  }
26415  const swiper = this;
26416  const {
26417    params,
26418    wrapperEl
26419  } = swiper;
26420  if (swiper.animating && params.preventInteractionOnTransition) {
26421    return false;
26422  }
26423  const minTranslate2 = swiper.minTranslate();
26424  const maxTranslate2 = swiper.maxTranslate();
26425  let newTranslate;
26426  if (translateBounds && translate2 > minTranslate2) newTranslate = minTranslate2;
26427  else if (translateBounds && translate2 < maxTranslate2) newTranslate = maxTranslate2;
26428  else newTranslate = translate2;
26429  swiper.updateProgress(newTranslate);
26430  if (params.cssMode) {
26431    const isH = swiper.isHorizontal();
26432    if (speed === 0) {
26433      wrapperEl[isH ? "scrollLeft" : "scrollTop"] = -newTranslate;
26434    } else {
26435      if (!swiper.support.smoothScroll) {
26436        animateCSSModeScroll({
26437          swiper,
26438          targetPosition: -newTranslate,
26439          side: isH ? "left" : "top"
26440        });
26441        return true;
26442      }
26443      wrapperEl.scrollTo({
26444        [isH ? "left" : "top"]: -newTranslate,
26445        behavior: "smooth"
26446      });
26447    }
26448    return true;
26449  }
26450  if (speed === 0) {
26451    swiper.setTransition(0);
26452    swiper.setTranslate(newTranslate);
26453    if (runCallbacks) {
26454      swiper.emit("beforeTransitionStart", speed, internal);
26455      swiper.emit("transitionEnd");
26456    }
26457  } else {
26458    swiper.setTransition(speed);
26459    swiper.setTranslate(newTranslate);
26460    if (runCallbacks) {
26461      swiper.emit("beforeTransitionStart", speed, internal);
26462      swiper.emit("transitionStart");
26463    }
26464    if (!swiper.animating) {
26465      swiper.animating = true;
26466      if (!swiper.onTranslateToWrapperTransitionEnd) {
26467        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd2(e) {
26468          if (!swiper || swiper.destroyed) return;
26469          if (e.target !== this) return;
26470          swiper.wrapperEl.removeEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd);
26471          swiper.onTranslateToWrapperTransitionEnd = null;
26472          delete swiper.onTranslateToWrapperTransitionEnd;
26473          swiper.animating = false;
26474          if (runCallbacks) {
26475            swiper.emit("transitionEnd");
26476          }
26477        };
26478      }
26479      swiper.wrapperEl.addEventListener("transitionend", swiper.onTranslateToWrapperTransitionEnd);
26480    }
26481  }
26482  return true;
26483}
26484var translate = {
26485  getTranslate: getSwiperTranslate,
26486  setTranslate,
26487  minTranslate,
26488  maxTranslate,
26489  translateTo
26490};
26491function setTransition(duration, byController) {
26492  const swiper = this;
26493  if (!swiper.params.cssMode) {
26494    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;
26495    swiper.wrapperEl.style.transitionDelay = duration === 0 ? `0ms` : "";
26496  }
26497  swiper.emit("setTransition", duration, byController);
26498}
26499function transitionEmit(_ref) {
26500  let {
26501    swiper,
26502    runCallbacks,
26503    direction,
26504    step
26505  } = _ref;
26506  const {
26507    activeIndex,
26508    previousIndex
26509  } = swiper;
26510  let dir = direction;
26511  if (!dir) {
26512    if (activeIndex > previousIndex) dir = "next";
26513    else if (activeIndex < previousIndex) dir = "prev";
26514    else dir = "reset";
26515  }
26516  swiper.emit(`transition${step}`);
26517  if (runCallbacks && dir === "reset") {
26518    swiper.emit(`slideResetTransition${step}`);
26519  } else if (runCallbacks && activeIndex !== previousIndex) {
26520    swiper.emit(`slideChangeTransition${step}`);
26521    if (dir === "next") {
26522      swiper.emit(`slideNextTransition${step}`);
26523    } else {
26524      swiper.emit(`slidePrevTransition${step}`);
26525    }
26526  }
26527}
26528function transitionStart(runCallbacks, direction) {
26529  if (runCallbacks === void 0) {
26530    runCallbacks = true;
26531  }
26532  const swiper = this;
26533  const {
26534    params
26535  } = swiper;
26536  if (params.cssMode) return;
26537  if (params.autoHeight) {
26538    swiper.updateAutoHeight();
26539  }
26540  transitionEmit({
26541    swiper,
26542    runCallbacks,
26543    direction,
26544    step: "Start"
26545  });
26546}
26547function transitionEnd(runCallbacks, direction) {
26548  if (runCallbacks === void 0) {
26549    runCallbacks = true;
26550  }
26551  const swiper = this;
26552  const {
26553    params
26554  } = swiper;
26555  swiper.animating = false;
26556  if (params.cssMode) return;
26557  swiper.setTransition(0);
26558  transitionEmit({
26559    swiper,
26560    runCallbacks,
26561    direction,
26562    step: "End"
26563  });
26564}
26565var transition = {
26566  setTransition,
26567  transitionStart,
26568  transitionEnd
26569};
26570function slideTo(index2, speed, runCallbacks, internal, initial) {
26571  if (index2 === void 0) {
26572    index2 = 0;
26573  }
26574  if (runCallbacks === void 0) {
26575    runCallbacks = true;
26576  }
26577  if (typeof index2 === "string") {
26578    index2 = parseInt(index2, 10);
26579  }
26580  const swiper = this;
26581  let slideIndex = index2;
26582  if (slideIndex < 0) slideIndex = 0;
26583  const {
26584    params,
26585    snapGrid,
26586    slidesGrid,
26587    previousIndex,
26588    activeIndex,
26589    rtlTranslate: rtl,
26590    wrapperEl,
26591    enabled
26592  } = swiper;
26593  if (!enabled && !internal && !initial || swiper.destroyed || swiper.animating && params.preventInteractionOnTransition) {
26594    return false;
26595  }
26596  if (typeof speed === "undefined") {
26597    speed = swiper.params.speed;
26598  }
26599  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);
26600  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);
26601  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;
26602  const translate2 = -snapGrid[snapIndex];
26603  if (params.normalizeSlideIndex) {
26604    for (let i = 0; i < slidesGrid.length; i += 1) {
26605      const normalizedTranslate = -Math.floor(translate2 * 100);
26606      const normalizedGrid = Math.floor(slidesGrid[i] * 100);
26607      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);
26608      if (typeof slidesGrid[i + 1] !== "undefined") {
26609        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {
26610          slideIndex = i;
26611        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {
26612          slideIndex = i + 1;
26613        }
26614      } else if (normalizedTranslate >= normalizedGrid) {
26615        slideIndex = i;
26616      }
26617    }
26618  }
26619  if (swiper.initialized && slideIndex !== activeIndex) {
26620    if (!swiper.allowSlideNext && (rtl ? translate2 > swiper.translate && translate2 > swiper.minTranslate() : translate2 < swiper.translate && translate2 < swiper.minTranslate())) {
26621      return false;
26622    }
26623    if (!swiper.allowSlidePrev && translate2 > swiper.translate && translate2 > swiper.maxTranslate()) {
26624      if ((activeIndex || 0) !== slideIndex) {
26625        return false;
26626      }
26627    }
26628  }
26629  if (slideIndex !== (previousIndex || 0) && runCallbacks) {
26630    swiper.emit("beforeSlideChangeStart");
26631  }
26632  swiper.updateProgress(translate2);
26633  let direction;
26634  if (slideIndex > activeIndex) direction = "next";
26635  else if (slideIndex < activeIndex) direction = "prev";
26636  else direction = "reset";
26637  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
26638  const isInitialVirtual = isVirtual && initial;
26639  if (!isInitialVirtual && (rtl && -translate2 === swiper.translate || !rtl && translate2 === swiper.translate)) {
26640    swiper.updateActiveIndex(slideIndex);
26641    if (params.autoHeight) {
26642      swiper.updateAutoHeight();
26643    }
26644    swiper.updateSlidesClasses();
26645    if (params.effect !== "slide") {
26646      swiper.setTranslate(translate2);
26647    }
26648    if (direction !== "reset") {
26649      swiper.transitionStart(runCallbacks, direction);
26650      swiper.transitionEnd(runCallbacks, direction);
26651    }
26652    return false;
26653  }
26654  if (params.cssMode) {
26655    const isH = swiper.isHorizontal();
26656    const t = rtl ? translate2 : -translate2;
26657    if (speed === 0) {
26658      if (isVirtual) {
26659        swiper.wrapperEl.style.scrollSnapType = "none";
26660        swiper._immediateVirtual = true;
26661      }
26662      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {
26663        swiper._cssModeVirtualInitialSet = true;
26664        requestAnimationFrame(() => {
26665          wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t;
26666        });
26667      } else {
26668        wrapperEl[isH ? "scrollLeft" : "scrollTop"] = t;
26669      }
26670      if (isVirtual) {
26671        requestAnimationFrame(() => {
26672          swiper.wrapperEl.style.scrollSnapType = "";
26673          swiper._immediateVirtual = false;
26674        });
26675      }
26676    } else {
26677      if (!swiper.support.smoothScroll) {
26678        animateCSSModeScroll({
26679          swiper,
26680          targetPosition: t,
26681          side: isH ? "left" : "top"
26682        });
26683        return true;
26684      }
26685      wrapperEl.scrollTo({
26686        [isH ? "left" : "top"]: t,
26687        behavior: "smooth"
26688      });
26689    }
26690    return true;
26691  }
26692  const browser2 = getBrowser();
26693  const isSafari = browser2.isSafari;
26694  if (isVirtual && !initial && isSafari && swiper.isElement) {
26695    swiper.virtual.update(false, false, slideIndex);
26696  }
26697  swiper.setTransition(speed);
26698  swiper.setTranslate(translate2);
26699  swiper.updateActiveIndex(slideIndex);
26700  swiper.updateSlidesClasses();
26701  swiper.emit("beforeTransitionStart", speed, internal);
26702  swiper.transitionStart(runCallbacks, direction);
26703  if (speed === 0) {
26704    swiper.transitionEnd(runCallbacks, direction);
26705  } else if (!swiper.animating) {
26706    swiper.animating = true;
26707    if (!swiper.onSlideToWrapperTransitionEnd) {
26708      swiper.onSlideToWrapperTransitionEnd = function transitionEnd2(e) {
26709        if (!swiper || swiper.destroyed) return;
26710        if (e.target !== this) return;
26711        swiper.wrapperEl.removeEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd);
26712        swiper.onSlideToWrapperTransitionEnd = null;
26713        delete swiper.onSlideToWrapperTransitionEnd;
26714        swiper.transitionEnd(runCallbacks, direction);
26715      };
26716    }
26717    swiper.wrapperEl.addEventListener("transitionend", swiper.onSlideToWrapperTransitionEnd);
26718  }
26719  return true;
26720}
26721function slideToLoop(index2, speed, runCallbacks, internal) {
26722  if (index2 === void 0) {
26723    index2 = 0;
26724  }
26725  if (runCallbacks === void 0) {
26726    runCallbacks = true;
26727  }
26728  if (typeof index2 === "string") {
26729    const indexAsNumber = parseInt(index2, 10);
26730    index2 = indexAsNumber;
26731  }
26732  const swiper = this;
26733  if (swiper.destroyed) return;
26734  if (typeof speed === "undefined") {
26735    speed = swiper.params.speed;
26736  }
26737  const gridEnabled = swiper.grid && swiper.params.grid && swiper.params.grid.rows > 1;
26738  let newIndex = index2;
26739  if (swiper.params.loop) {
26740    if (swiper.virtual && swiper.params.virtual.enabled) {
26741      newIndex = newIndex + swiper.virtual.slidesBefore;
26742    } else {
26743      let targetSlideIndex;
26744      if (gridEnabled) {
26745        const slideIndex = newIndex * swiper.params.grid.rows;
26746        targetSlideIndex = swiper.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex).column;
26747      } else {
26748        targetSlideIndex = swiper.getSlideIndexByData(newIndex);
26749      }
26750      const cols = gridEnabled ? Math.ceil(swiper.slides.length / swiper.params.grid.rows) : swiper.slides.length;
26751      const {
26752        centeredSlides
26753      } = swiper.params;
26754      let slidesPerView = swiper.params.slidesPerView;
26755      if (slidesPerView === "auto") {
26756        slidesPerView = swiper.slidesPerViewDynamic();
26757      } else {
26758        slidesPerView = Math.ceil(parseFloat(swiper.params.slidesPerView, 10));
26759        if (centeredSlides && slidesPerView % 2 === 0) {
26760          slidesPerView = slidesPerView + 1;
26761        }
26762      }
26763      let needLoopFix = cols - targetSlideIndex < slidesPerView;
26764      if (centeredSlides) {
26765        needLoopFix = needLoopFix || targetSlideIndex < Math.ceil(slidesPerView / 2);
26766      }
26767      if (internal && centeredSlides && swiper.params.slidesPerView !== "auto" && !gridEnabled) {
26768        needLoopFix = false;
26769      }
26770      if (needLoopFix) {
26771        const direction = centeredSlides ? targetSlideIndex < swiper.activeIndex ? "prev" : "next" : targetSlideIndex - swiper.activeIndex - 1 < swiper.params.slidesPerView ? "next" : "prev";
26772        swiper.loopFix({
26773          direction,
26774          slideTo: true,
26775          activeSlideIndex: direction === "next" ? targetSlideIndex + 1 : targetSlideIndex - cols + 1,
26776          slideRealIndex: direction === "next" ? swiper.realIndex : void 0
26777        });
26778      }
26779      if (gridEnabled) {
26780        const slideIndex = newIndex * swiper.params.grid.rows;
26781        newIndex = swiper.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === slideIndex).column;
26782      } else {
26783        newIndex = swiper.getSlideIndexByData(newIndex);
26784      }
26785    }
26786  }
26787  requestAnimationFrame(() => {
26788    swiper.slideTo(newIndex, speed, runCallbacks, internal);
26789  });
26790  return swiper;
26791}
26792function slideNext(speed, runCallbacks, internal) {
26793  if (runCallbacks === void 0) {
26794    runCallbacks = true;
26795  }
26796  const swiper = this;
26797  const {
26798    enabled,
26799    params,
26800    animating
26801  } = swiper;
26802  if (!enabled || swiper.destroyed) return swiper;
26803  if (typeof speed === "undefined") {
26804    speed = swiper.params.speed;
26805  }
26806  let perGroup = params.slidesPerGroup;
26807  if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
26808    perGroup = Math.max(swiper.slidesPerViewDynamic("current", true), 1);
26809  }
26810  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;
26811  const isVirtual = swiper.virtual && params.virtual.enabled;
26812  if (params.loop) {
26813    if (animating && !isVirtual && params.loopPreventsSliding) return false;
26814    swiper.loopFix({
26815      direction: "next"
26816    });
26817    swiper._clientLeft = swiper.wrapperEl.clientLeft;
26818    if (swiper.activeIndex === swiper.slides.length - 1 && params.cssMode) {
26819      requestAnimationFrame(() => {
26820        swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
26821      });
26822      return true;
26823    }
26824  }
26825  if (params.rewind && swiper.isEnd) {
26826    return swiper.slideTo(0, speed, runCallbacks, internal);
26827  }
26828  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);
26829}
26830function slidePrev(speed, runCallbacks, internal) {
26831  if (runCallbacks === void 0) {
26832    runCallbacks = true;
26833  }
26834  const swiper = this;
26835  const {
26836    params,
26837    snapGrid,
26838    slidesGrid,
26839    rtlTranslate,
26840    enabled,
26841    animating
26842  } = swiper;
26843  if (!enabled || swiper.destroyed) return swiper;
26844  if (typeof speed === "undefined") {
26845    speed = swiper.params.speed;
26846  }
26847  const isVirtual = swiper.virtual && params.virtual.enabled;
26848  if (params.loop) {
26849    if (animating && !isVirtual && params.loopPreventsSliding) return false;
26850    swiper.loopFix({
26851      direction: "prev"
26852    });
26853    swiper._clientLeft = swiper.wrapperEl.clientLeft;
26854  }
26855  const translate2 = rtlTranslate ? swiper.translate : -swiper.translate;
26856  function normalize(val) {
26857    if (val < 0) return -Math.floor(Math.abs(val));
26858    return Math.floor(val);
26859  }
26860  const normalizedTranslate = normalize(translate2);
26861  const normalizedSnapGrid = snapGrid.map((val) => normalize(val));
26862  const isFreeMode = params.freeMode && params.freeMode.enabled;
26863  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];
26864  if (typeof prevSnap === "undefined" && (params.cssMode || isFreeMode)) {
26865    let prevSnapIndex;
26866    snapGrid.forEach((snap, snapIndex) => {
26867      if (normalizedTranslate >= snap) {
26868        prevSnapIndex = snapIndex;
26869      }
26870    });
26871    if (typeof prevSnapIndex !== "undefined") {
26872      prevSnap = isFreeMode ? snapGrid[prevSnapIndex] : snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];
26873    }
26874  }
26875  let prevIndex = 0;
26876  if (typeof prevSnap !== "undefined") {
26877    prevIndex = slidesGrid.indexOf(prevSnap);
26878    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;
26879    if (params.slidesPerView === "auto" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {
26880      prevIndex = prevIndex - swiper.slidesPerViewDynamic("previous", true) + 1;
26881      prevIndex = Math.max(prevIndex, 0);
26882    }
26883  }
26884  if (params.rewind && swiper.isBeginning) {
26885    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
26886    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);
26887  } else if (params.loop && swiper.activeIndex === 0 && params.cssMode) {
26888    requestAnimationFrame(() => {
26889      swiper.slideTo(prevIndex, speed, runCallbacks, internal);
26890    });
26891    return true;
26892  }
26893  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);
26894}
26895function slideReset(speed, runCallbacks, internal) {
26896  if (runCallbacks === void 0) {
26897    runCallbacks = true;
26898  }
26899  const swiper = this;
26900  if (swiper.destroyed) return;
26901  if (typeof speed === "undefined") {
26902    speed = swiper.params.speed;
26903  }
26904  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);
26905}
26906function slideToClosest(speed, runCallbacks, internal, threshold) {
26907  if (runCallbacks === void 0) {
26908    runCallbacks = true;
26909  }
26910  if (threshold === void 0) {
26911    threshold = 0.5;
26912  }
26913  const swiper = this;
26914  if (swiper.destroyed) return;
26915  if (typeof speed === "undefined") {
26916    speed = swiper.params.speed;
26917  }
26918  let index2 = swiper.activeIndex;
26919  const skip = Math.min(swiper.params.slidesPerGroupSkip, index2);
26920  const snapIndex = skip + Math.floor((index2 - skip) / swiper.params.slidesPerGroup);
26921  const translate2 = swiper.rtlTranslate ? swiper.translate : -swiper.translate;
26922  if (translate2 >= swiper.snapGrid[snapIndex]) {
26923    const currentSnap = swiper.snapGrid[snapIndex];
26924    const nextSnap = swiper.snapGrid[snapIndex + 1];
26925    if (translate2 - currentSnap > (nextSnap - currentSnap) * threshold) {
26926      index2 += swiper.params.slidesPerGroup;
26927    }
26928  } else {
26929    const prevSnap = swiper.snapGrid[snapIndex - 1];
26930    const currentSnap = swiper.snapGrid[snapIndex];
26931    if (translate2 - prevSnap <= (currentSnap - prevSnap) * threshold) {
26932      index2 -= swiper.params.slidesPerGroup;
26933    }
26934  }
26935  index2 = Math.max(index2, 0);
26936  index2 = Math.min(index2, swiper.slidesGrid.length - 1);
26937  return swiper.slideTo(index2, speed, runCallbacks, internal);
26938}
26939function slideToClickedSlide() {
26940  const swiper = this;
26941  if (swiper.destroyed) return;
26942  const {
26943    params,
26944    slidesEl
26945  } = swiper;
26946  const slidesPerView = params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : params.slidesPerView;
26947  let slideToIndex = swiper.clickedIndex;
26948  let realIndex;
26949  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;
26950  if (params.loop) {
26951    if (swiper.animating) return;
26952    realIndex = parseInt(swiper.clickedSlide.getAttribute("data-swiper-slide-index"), 10);
26953    if (params.centeredSlides) {
26954      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {
26955        swiper.loopFix();
26956        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
26957        nextTick(() => {
26958          swiper.slideTo(slideToIndex);
26959        });
26960      } else {
26961        swiper.slideTo(slideToIndex);
26962      }
26963    } else if (slideToIndex > swiper.slides.length - slidesPerView) {
26964      swiper.loopFix();
26965      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index="${realIndex}"]`)[0]);
26966      nextTick(() => {
26967        swiper.slideTo(slideToIndex);
26968      });
26969    } else {
26970      swiper.slideTo(slideToIndex);
26971    }
26972  } else {
26973    swiper.slideTo(slideToIndex);
26974  }
26975}
26976var slide = {
26977  slideTo,
26978  slideToLoop,
26979  slideNext,
26980  slidePrev,
26981  slideReset,
26982  slideToClosest,
26983  slideToClickedSlide
26984};
26985function loopCreate(slideRealIndex, initial) {
26986  const swiper = this;
26987  const {
26988    params,
26989    slidesEl
26990  } = swiper;
26991  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;
26992  const initSlides = () => {
26993    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
26994    slides.forEach((el, index2) => {
26995      el.setAttribute("data-swiper-slide-index", index2);
26996    });
26997  };
26998  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
26999  const slidesPerGroup = params.slidesPerGroup * (gridEnabled ? params.grid.rows : 1);
27000  const shouldFillGroup = swiper.slides.length % slidesPerGroup !== 0;
27001  const shouldFillGrid = gridEnabled && swiper.slides.length % params.grid.rows !== 0;
27002  const addBlankSlides = (amountOfSlides) => {
27003    for (let i = 0; i < amountOfSlides; i += 1) {
27004      const slideEl = swiper.isElement ? createElement("swiper-slide", [params.slideBlankClass]) : createElement("div", [params.slideClass, params.slideBlankClass]);
27005      swiper.slidesEl.append(slideEl);
27006    }
27007  };
27008  if (shouldFillGroup) {
27009    if (params.loopAddBlankSlides) {
27010      const slidesToAdd = slidesPerGroup - swiper.slides.length % slidesPerGroup;
27011      addBlankSlides(slidesToAdd);
27012      swiper.recalcSlides();
27013      swiper.updateSlides();
27014    } else {
27015      showWarning("Swiper Loop Warning: The number of slides is not even to slidesPerGroup, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");
27016    }
27017    initSlides();
27018  } else if (shouldFillGrid) {
27019    if (params.loopAddBlankSlides) {
27020      const slidesToAdd = params.grid.rows - swiper.slides.length % params.grid.rows;
27021      addBlankSlides(slidesToAdd);
27022      swiper.recalcSlides();
27023      swiper.updateSlides();
27024    } else {
27025      showWarning("Swiper Loop Warning: The number of slides is not even to grid.rows, loop mode may not function properly. You need to add more slides (or make duplicates, or empty slides)");
27026    }
27027    initSlides();
27028  } else {
27029    initSlides();
27030  }
27031  swiper.loopFix({
27032    slideRealIndex,
27033    direction: params.centeredSlides ? void 0 : "next",
27034    initial
27035  });
27036}
27037function loopFix(_temp) {
27038  let {
27039    slideRealIndex,
27040    slideTo: slideTo2 = true,
27041    direction,
27042    setTranslate: setTranslate2,
27043    activeSlideIndex,
27044    initial,
27045    byController,
27046    byMousewheel
27047  } = _temp === void 0 ? {} : _temp;
27048  const swiper = this;
27049  if (!swiper.params.loop) return;
27050  swiper.emit("beforeLoopFix");
27051  const {
27052    slides,
27053    allowSlidePrev,
27054    allowSlideNext,
27055    slidesEl,
27056    params
27057  } = swiper;
27058  const {
27059    centeredSlides,
27060    initialSlide
27061  } = params;
27062  swiper.allowSlidePrev = true;
27063  swiper.allowSlideNext = true;
27064  if (swiper.virtual && params.virtual.enabled) {
27065    if (slideTo2) {
27066      if (!params.centeredSlides && swiper.snapIndex === 0) {
27067        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);
27068      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {
27069        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);
27070      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {
27071        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);
27072      }
27073    }
27074    swiper.allowSlidePrev = allowSlidePrev;
27075    swiper.allowSlideNext = allowSlideNext;
27076    swiper.emit("loopFix");
27077    return;
27078  }
27079  let slidesPerView = params.slidesPerView;
27080  if (slidesPerView === "auto") {
27081    slidesPerView = swiper.slidesPerViewDynamic();
27082  } else {
27083    slidesPerView = Math.ceil(parseFloat(params.slidesPerView, 10));
27084    if (centeredSlides && slidesPerView % 2 === 0) {
27085      slidesPerView = slidesPerView + 1;
27086    }
27087  }
27088  const slidesPerGroup = params.slidesPerGroupAuto ? slidesPerView : params.slidesPerGroup;
27089  let loopedSlides = slidesPerGroup;
27090  if (loopedSlides % slidesPerGroup !== 0) {
27091    loopedSlides += slidesPerGroup - loopedSlides % slidesPerGroup;
27092  }
27093  loopedSlides += params.loopAdditionalSlides;
27094  swiper.loopedSlides = loopedSlides;
27095  const gridEnabled = swiper.grid && params.grid && params.grid.rows > 1;
27096  if (slides.length < slidesPerView + loopedSlides || swiper.params.effect === "cards" && slides.length < slidesPerView + loopedSlides * 2) {
27097    showWarning("Swiper Loop Warning: The number of slides is not enough for loop mode, it will be disabled or not function properly. You need to add more slides (or make duplicates) or lower the values of slidesPerView and slidesPerGroup parameters");
27098  } else if (gridEnabled && params.grid.fill === "row") {
27099    showWarning("Swiper Loop Warning: Loop mode is not compatible with grid.fill = `row`");
27100  }
27101  const prependSlidesIndexes = [];
27102  const appendSlidesIndexes = [];
27103  const cols = gridEnabled ? Math.ceil(slides.length / params.grid.rows) : slides.length;
27104  const isInitialOverflow = initial && cols - initialSlide < slidesPerView && !centeredSlides;
27105  let activeIndex = isInitialOverflow ? initialSlide : swiper.activeIndex;
27106  if (typeof activeSlideIndex === "undefined") {
27107    activeSlideIndex = swiper.getSlideIndex(slides.find((el) => el.classList.contains(params.slideActiveClass)));
27108  } else {
27109    activeIndex = activeSlideIndex;
27110  }
27111  const isNext = direction === "next" || !direction;
27112  const isPrev = direction === "prev" || !direction;
27113  let slidesPrepended = 0;
27114  let slidesAppended = 0;
27115  const activeColIndex = gridEnabled ? slides[activeSlideIndex].column : activeSlideIndex;
27116  const activeColIndexWithShift = activeColIndex + (centeredSlides && typeof setTranslate2 === "undefined" ? -slidesPerView / 2 + 0.5 : 0);
27117  if (activeColIndexWithShift < loopedSlides) {
27118    slidesPrepended = Math.max(loopedSlides - activeColIndexWithShift, slidesPerGroup);
27119    for (let i = 0; i < loopedSlides - activeColIndexWithShift; i += 1) {
27120      const index2 = i - Math.floor(i / cols) * cols;
27121      if (gridEnabled) {
27122        const colIndexToPrepend = cols - index2 - 1;
27123        for (let i2 = slides.length - 1; i2 >= 0; i2 -= 1) {
27124          if (slides[i2].column === colIndexToPrepend) prependSlidesIndexes.push(i2);
27125        }
27126      } else {
27127        prependSlidesIndexes.push(cols - index2 - 1);
27128      }
27129    }
27130  } else if (activeColIndexWithShift + slidesPerView > cols - loopedSlides) {
27131    slidesAppended = Math.max(activeColIndexWithShift - (cols - loopedSlides * 2), slidesPerGroup);
27132    if (isInitialOverflow) {
27133      slidesAppended = Math.max(slidesAppended, slidesPerView - cols + initialSlide + 1);
27134    }
27135    for (let i = 0; i < slidesAppended; i += 1) {
27136      const index2 = i - Math.floor(i / cols) * cols;
27137      if (gridEnabled) {
27138        slides.forEach((slide2, slideIndex) => {
27139          if (slide2.column === index2) appendSlidesIndexes.push(slideIndex);
27140        });
27141      } else {
27142        appendSlidesIndexes.push(index2);
27143      }
27144    }
27145  }
27146  swiper.__preventObserver__ = true;
27147  requestAnimationFrame(() => {
27148    swiper.__preventObserver__ = false;
27149  });
27150  if (swiper.params.effect === "cards" && slides.length < slidesPerView + loopedSlides * 2) {
27151    if (appendSlidesIndexes.includes(activeSlideIndex)) {
27152      appendSlidesIndexes.splice(appendSlidesIndexes.indexOf(activeSlideIndex), 1);
27153    }
27154    if (prependSlidesIndexes.includes(activeSlideIndex)) {
27155      prependSlidesIndexes.splice(prependSlidesIndexes.indexOf(activeSlideIndex), 1);
27156    }
27157  }
27158  if (isPrev) {
27159    prependSlidesIndexes.forEach((index2) => {
27160      slides[index2].swiperLoopMoveDOM = true;
27161      slidesEl.prepend(slides[index2]);
27162      slides[index2].swiperLoopMoveDOM = false;
27163    });
27164  }
27165  if (isNext) {
27166    appendSlidesIndexes.forEach((index2) => {
27167      slides[index2].swiperLoopMoveDOM = true;
27168      slidesEl.append(slides[index2]);
27169      slides[index2].swiperLoopMoveDOM = false;
27170    });
27171  }
27172  swiper.recalcSlides();
27173  if (params.slidesPerView === "auto") {
27174    swiper.updateSlides();
27175  } else if (gridEnabled && (prependSlidesIndexes.length > 0 && isPrev || appendSlidesIndexes.length > 0 && isNext)) {
27176    swiper.slides.forEach((slide2, slideIndex) => {
27177      swiper.grid.updateSlide(slideIndex, slide2, swiper.slides);
27178    });
27179  }
27180  if (params.watchSlidesProgress) {
27181    swiper.updateSlidesOffset();
27182  }
27183  if (slideTo2) {
27184    if (prependSlidesIndexes.length > 0 && isPrev) {
27185      if (typeof slideRealIndex === "undefined") {
27186        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
27187        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];
27188        const diff = newSlideTranslate - currentSlideTranslate;
27189        if (byMousewheel) {
27190          swiper.setTranslate(swiper.translate - diff);
27191        } else {
27192          swiper.slideTo(activeIndex + Math.ceil(slidesPrepended), 0, false, true);
27193          if (setTranslate2) {
27194            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
27195            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
27196          }
27197        }
27198      } else {
27199        if (setTranslate2) {
27200          const shift = gridEnabled ? prependSlidesIndexes.length / params.grid.rows : prependSlidesIndexes.length;
27201          swiper.slideTo(swiper.activeIndex + shift, 0, false, true);
27202          swiper.touchEventsData.currentTranslate = swiper.translate;
27203        }
27204      }
27205    } else if (appendSlidesIndexes.length > 0 && isNext) {
27206      if (typeof slideRealIndex === "undefined") {
27207        const currentSlideTranslate = swiper.slidesGrid[activeIndex];
27208        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];
27209        const diff = newSlideTranslate - currentSlideTranslate;
27210        if (byMousewheel) {
27211          swiper.setTranslate(swiper.translate - diff);
27212        } else {
27213          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);
27214          if (setTranslate2) {
27215            swiper.touchEventsData.startTranslate = swiper.touchEventsData.startTranslate - diff;
27216            swiper.touchEventsData.currentTranslate = swiper.touchEventsData.currentTranslate - diff;
27217          }
27218        }
27219      } else {
27220        const shift = gridEnabled ? appendSlidesIndexes.length / params.grid.rows : appendSlidesIndexes.length;
27221        swiper.slideTo(swiper.activeIndex - shift, 0, false, true);
27222      }
27223    }
27224  }
27225  swiper.allowSlidePrev = allowSlidePrev;
27226  swiper.allowSlideNext = allowSlideNext;
27227  if (swiper.controller && swiper.controller.control && !byController) {
27228    const loopParams = {
27229      slideRealIndex,
27230      direction,
27231      setTranslate: setTranslate2,
27232      activeSlideIndex,
27233      byController: true
27234    };
27235    if (Array.isArray(swiper.controller.control)) {
27236      swiper.controller.control.forEach((c) => {
27237        if (!c.destroyed && c.params.loop) c.loopFix({
27238          ...loopParams,
27239          slideTo: c.params.slidesPerView === params.slidesPerView ? slideTo2 : false
27240        });
27241      });
27242    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {
27243      swiper.controller.control.loopFix({
27244        ...loopParams,
27245        slideTo: swiper.controller.control.params.slidesPerView === params.slidesPerView ? slideTo2 : false
27246      });
27247    }
27248  }
27249  swiper.emit("loopFix");
27250}
27251function loopDestroy() {
27252  const swiper = this;
27253  const {
27254    params,
27255    slidesEl
27256  } = swiper;
27257  if (!params.loop || !slidesEl || swiper.virtual && swiper.params.virtual.enabled) return;
27258  swiper.recalcSlides();
27259  const newSlidesOrder = [];
27260  swiper.slides.forEach((slideEl) => {
27261    const index2 = typeof slideEl.swiperSlideIndex === "undefined" ? slideEl.getAttribute("data-swiper-slide-index") * 1 : slideEl.swiperSlideIndex;
27262    newSlidesOrder[index2] = slideEl;
27263  });
27264  swiper.slides.forEach((slideEl) => {
27265    slideEl.removeAttribute("data-swiper-slide-index");
27266  });
27267  newSlidesOrder.forEach((slideEl) => {
27268    slidesEl.append(slideEl);
27269  });
27270  swiper.recalcSlides();
27271  swiper.slideTo(swiper.realIndex, 0);
27272}
27273var loop = {
27274  loopCreate,
27275  loopFix,
27276  loopDestroy
27277};
27278function setGrabCursor(moving) {
27279  const swiper = this;
27280  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;
27281  const el = swiper.params.touchEventsTarget === "container" ? swiper.el : swiper.wrapperEl;
27282  if (swiper.isElement) {
27283    swiper.__preventObserver__ = true;
27284  }
27285  el.style.cursor = "move";
27286  el.style.cursor = moving ? "grabbing" : "grab";
27287  if (swiper.isElement) {
27288    requestAnimationFrame(() => {
27289      swiper.__preventObserver__ = false;
27290    });
27291  }
27292}
27293function unsetGrabCursor() {
27294  const swiper = this;
27295  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {
27296    return;
27297  }
27298  if (swiper.isElement) {
27299    swiper.__preventObserver__ = true;
27300  }
27301  swiper[swiper.params.touchEventsTarget === "container" ? "el" : "wrapperEl"].style.cursor = "";
27302  if (swiper.isElement) {
27303    requestAnimationFrame(() => {
27304      swiper.__preventObserver__ = false;
27305    });
27306  }
27307}
27308var grabCursor = {
27309  setGrabCursor,
27310  unsetGrabCursor
27311};
27312function closestElement(selector, base) {
27313  if (base === void 0) {
27314    base = this;
27315  }
27316  function __closestFrom(el) {
27317    if (!el || el === getDocument() || el === getWindow()) return null;
27318    if (el.assignedSlot) el = el.assignedSlot;
27319    const found = el.closest(selector);
27320    if (!found && !el.getRootNode) {
27321      return null;
27322    }
27323    return found || __closestFrom(el.getRootNode().host);
27324  }
27325  return __closestFrom(base);
27326}
27327function preventEdgeSwipe(swiper, event, startX) {
27328  const window2 = getWindow();
27329  const {
27330    params
27331  } = swiper;
27332  const edgeSwipeDetection = params.edgeSwipeDetection;
27333  const edgeSwipeThreshold = params.edgeSwipeThreshold;
27334  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window2.innerWidth - edgeSwipeThreshold)) {
27335    if (edgeSwipeDetection === "prevent") {
27336      event.preventDefault();
27337      return true;
27338    }
27339    return false;
27340  }
27341  return true;
27342}
27343function onTouchStart(event) {
27344  const swiper = this;
27345  const document2 = getDocument();
27346  let e = event;
27347  if (e.originalEvent) e = e.originalEvent;
27348  const data = swiper.touchEventsData;
27349  if (e.type === "pointerdown") {
27350    if (data.pointerId !== null && data.pointerId !== e.pointerId) {
27351      return;
27352    }
27353    data.pointerId = e.pointerId;
27354  } else if (e.type === "touchstart" && e.targetTouches.length === 1) {
27355    data.touchId = e.targetTouches[0].identifier;
27356  }
27357  if (e.type === "touchstart") {
27358    preventEdgeSwipe(swiper, e, e.targetTouches[0].pageX);
27359    return;
27360  }
27361  const {
27362    params,
27363    touches,
27364    enabled
27365  } = swiper;
27366  if (!enabled) return;
27367  if (!params.simulateTouch && e.pointerType === "mouse") return;
27368  if (swiper.animating && params.preventInteractionOnTransition) {
27369    return;
27370  }
27371  if (!swiper.animating && params.cssMode && params.loop) {
27372    swiper.loopFix();
27373  }
27374  let targetEl = e.target;
27375  if (params.touchEventsTarget === "wrapper") {
27376    if (!elementIsChildOf(targetEl, swiper.wrapperEl)) return;
27377  }
27378  if ("which" in e && e.which === 3) return;
27379  if ("button" in e && e.button > 0) return;
27380  if (data.isTouched && data.isMoved) return;
27381  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== "";
27382  const eventPath = e.composedPath ? e.composedPath() : e.path;
27383  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {
27384    targetEl = eventPath[0];
27385  }
27386  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;
27387  const isTargetShadow = !!(e.target && e.target.shadowRoot);
27388  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {
27389    swiper.allowClick = true;
27390    return;
27391  }
27392  if (params.swipeHandler) {
27393    if (!targetEl.closest(params.swipeHandler)) return;
27394  }
27395  touches.currentX = e.pageX;
27396  touches.currentY = e.pageY;
27397  const startX = touches.currentX;
27398  const startY = touches.currentY;
27399  if (!preventEdgeSwipe(swiper, e, startX)) {
27400    return;
27401  }
27402  Object.assign(data, {
27403    isTouched: true,
27404    isMoved: false,
27405    allowTouchCallbacks: true,
27406    isScrolling: void 0,
27407    startMoving: void 0
27408  });
27409  touches.startX = startX;
27410  touches.startY = startY;
27411  data.touchStartTime = now$2();
27412  swiper.allowClick = true;
27413  swiper.updateSize();
27414  swiper.swipeDirection = void 0;
27415  if (params.threshold > 0) data.allowThresholdMove = false;
27416  let preventDefault = true;
27417  if (targetEl.matches(data.focusableElements)) {
27418    preventDefault = false;
27419    if (targetEl.nodeName === "SELECT") {
27420      data.isTouched = false;
27421    }
27422  }
27423  if (document2.activeElement && document2.activeElement.matches(data.focusableElements) && document2.activeElement !== targetEl && (e.pointerType === "mouse" || e.pointerType !== "mouse" && !targetEl.matches(data.focusableElements))) {
27424    document2.activeElement.blur();
27425  }
27426  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;
27427  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {
27428    e.preventDefault();
27429  }
27430  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {
27431    swiper.freeMode.onTouchStart();
27432  }
27433  swiper.emit("touchStart", e);
27434}
27435function onTouchMove(event) {
27436  const document2 = getDocument();
27437  const swiper = this;
27438  const data = swiper.touchEventsData;
27439  const {
27440    params,
27441    touches,
27442    rtlTranslate: rtl,
27443    enabled
27444  } = swiper;
27445  if (!enabled) return;
27446  if (!params.simulateTouch && event.pointerType === "mouse") return;
27447  let e = event;
27448  if (e.originalEvent) e = e.originalEvent;
27449  if (e.type === "pointermove") {
27450    if (data.touchId !== null) return;
27451    const id = e.pointerId;
27452    if (id !== data.pointerId) return;
27453  }
27454  let targetTouch;
27455  if (e.type === "touchmove") {
27456    targetTouch = [...e.changedTouches].find((t) => t.identifier === data.touchId);
27457    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
27458  } else {
27459    targetTouch = e;
27460  }
27461  if (!data.isTouched) {
27462    if (data.startMoving && data.isScrolling) {
27463      swiper.emit("touchMoveOpposite", e);
27464    }
27465    return;
27466  }
27467  const pageX = targetTouch.pageX;
27468  const pageY = targetTouch.pageY;
27469  if (e.preventedByNestedSwiper) {
27470    touches.startX = pageX;
27471    touches.startY = pageY;
27472    return;
27473  }
27474  if (!swiper.allowTouchMove) {
27475    if (!e.target.matches(data.focusableElements)) {
27476      swiper.allowClick = false;
27477    }
27478    if (data.isTouched) {
27479      Object.assign(touches, {
27480        startX: pageX,
27481        startY: pageY,
27482        currentX: pageX,
27483        currentY: pageY
27484      });
27485      data.touchStartTime = now$2();
27486    }
27487    return;
27488  }
27489  if (params.touchReleaseOnEdges && !params.loop) {
27490    if (swiper.isVertical()) {
27491      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {
27492        data.isTouched = false;
27493        data.isMoved = false;
27494        return;
27495      }
27496    } else if (rtl && (pageX > touches.startX && -swiper.translate <= swiper.maxTranslate() || pageX < touches.startX && -swiper.translate >= swiper.minTranslate())) {
27497      return;
27498    } else if (!rtl && (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate())) {
27499      return;
27500    }
27501  }
27502  if (document2.activeElement && document2.activeElement.matches(data.focusableElements) && document2.activeElement !== e.target && e.pointerType !== "mouse") {
27503    document2.activeElement.blur();
27504  }
27505  if (document2.activeElement) {
27506    if (e.target === document2.activeElement && e.target.matches(data.focusableElements)) {
27507      data.isMoved = true;
27508      swiper.allowClick = false;
27509      return;
27510    }
27511  }
27512  if (data.allowTouchCallbacks) {
27513    swiper.emit("touchMove", e);
27514  }
27515  touches.previousX = touches.currentX;
27516  touches.previousY = touches.currentY;
27517  touches.currentX = pageX;
27518  touches.currentY = pageY;
27519  const diffX = touches.currentX - touches.startX;
27520  const diffY = touches.currentY - touches.startY;
27521  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;
27522  if (typeof data.isScrolling === "undefined") {
27523    let touchAngle;
27524    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {
27525      data.isScrolling = false;
vendor: 8,708 bytes, lines 27526-27746
27526    } else {
27527      if (diffX * diffX + diffY * diffY >= 25) {
27528        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;
27529        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;
27530      }
27531    }
27532  }
27533  if (data.isScrolling) {
27534    swiper.emit("touchMoveOpposite", e);
27535  }
27536  if (typeof data.startMoving === "undefined") {
27537    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {
27538      data.startMoving = true;
27539    }
27540  }
27541  if (data.isScrolling || e.type === "touchmove" && data.preventTouchMoveFromPointerMove) {
27542    data.isTouched = false;
27543    return;
27544  }
27545  if (!data.startMoving) {
27546    return;
27547  }
27548  swiper.allowClick = false;
27549  if (!params.cssMode && e.cancelable) {
27550    e.preventDefault();
27551  }
27552  if (params.touchMoveStopPropagation && !params.nested) {
27553    e.stopPropagation();
27554  }
27555  let diff = swiper.isHorizontal() ? diffX : diffY;
27556  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;
27557  if (params.oneWayMovement) {
27558    diff = Math.abs(diff) * (rtl ? 1 : -1);
27559    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);
27560  }
27561  touches.diff = diff;
27562  diff *= params.touchRatio;
27563  if (rtl) {
27564    diff = -diff;
27565    touchesDiff = -touchesDiff;
27566  }
27567  const prevTouchesDirection = swiper.touchesDirection;
27568  swiper.swipeDirection = diff > 0 ? "prev" : "next";
27569  swiper.touchesDirection = touchesDiff > 0 ? "prev" : "next";
27570  const isLoop = swiper.params.loop && !params.cssMode;
27571  const allowLoopFix = swiper.touchesDirection === "next" && swiper.allowSlideNext || swiper.touchesDirection === "prev" && swiper.allowSlidePrev;
27572  if (!data.isMoved) {
27573    if (isLoop && allowLoopFix) {
27574      swiper.loopFix({
27575        direction: swiper.swipeDirection
27576      });
27577    }
27578    data.startTranslate = swiper.getTranslate();
27579    swiper.setTransition(0);
27580    if (swiper.animating) {
27581      const evt = new window.CustomEvent("transitionend", {
27582        bubbles: true,
27583        cancelable: true,
27584        detail: {
27585          bySwiperTouchMove: true
27586        }
27587      });
27588      swiper.wrapperEl.dispatchEvent(evt);
27589    }
27590    data.allowMomentumBounce = false;
27591    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
27592      swiper.setGrabCursor(true);
27593    }
27594    swiper.emit("sliderFirstMove", e);
27595  }
27596  (/* @__PURE__ */ new Date()).getTime();
27597  if (params._loopSwapReset !== false && data.isMoved && data.allowThresholdMove && prevTouchesDirection !== swiper.touchesDirection && isLoop && allowLoopFix && Math.abs(diff) >= 1) {
27598    Object.assign(touches, {
27599      startX: pageX,
27600      startY: pageY,
27601      currentX: pageX,
27602      currentY: pageY,
27603      startTranslate: data.currentTranslate
27604    });
27605    data.loopSwapReset = true;
27606    data.startTranslate = data.currentTranslate;
27607    return;
27608  }
27609  swiper.emit("sliderMove", e);
27610  data.isMoved = true;
27611  data.currentTranslate = diff + data.startTranslate;
27612  let disableParentSwiper = true;
27613  let resistanceRatio = params.resistanceRatio;
27614  if (params.touchReleaseOnEdges) {
27615    resistanceRatio = 0;
27616  }
27617  if (diff > 0) {
27618    if (isLoop && allowLoopFix && true && data.allowThresholdMove && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.slidesSizesGrid[swiper.activeIndex + 1] - (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.activeIndex + 1] + swiper.params.spaceBetween : 0) - swiper.params.spaceBetween : swiper.minTranslate())) {
27619      swiper.loopFix({
27620        direction: "prev",
27621        setTranslate: true,
27622        activeSlideIndex: 0
27623      });
27624    }
27625    if (data.currentTranslate > swiper.minTranslate()) {
27626      disableParentSwiper = false;
27627      if (params.resistance) {
27628        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;
27629      }
27630    }
27631  } else if (diff < 0) {
27632    if (isLoop && allowLoopFix && true && data.allowThresholdMove && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween + (params.slidesPerView !== "auto" && swiper.slides.length - params.slidesPerView >= 2 ? swiper.slidesSizesGrid[swiper.slidesSizesGrid.length - 1] + swiper.params.spaceBetween : 0) : swiper.maxTranslate())) {
27633      swiper.loopFix({
27634        direction: "next",
27635        setTranslate: true,
27636        activeSlideIndex: swiper.slides.length - (params.slidesPerView === "auto" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))
27637      });
27638    }
27639    if (data.currentTranslate < swiper.maxTranslate()) {
27640      disableParentSwiper = false;
27641      if (params.resistance) {
27642        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;
27643      }
27644    }
27645  }
27646  if (disableParentSwiper) {
27647    e.preventedByNestedSwiper = true;
27648  }
27649  if (!swiper.allowSlideNext && swiper.swipeDirection === "next" && data.currentTranslate < data.startTranslate) {
27650    data.currentTranslate = data.startTranslate;
27651  }
27652  if (!swiper.allowSlidePrev && swiper.swipeDirection === "prev" && data.currentTranslate > data.startTranslate) {
27653    data.currentTranslate = data.startTranslate;
27654  }
27655  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {
27656    data.currentTranslate = data.startTranslate;
27657  }
27658  if (params.threshold > 0) {
27659    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {
27660      if (!data.allowThresholdMove) {
27661        data.allowThresholdMove = true;
27662        touches.startX = touches.currentX;
27663        touches.startY = touches.currentY;
27664        data.currentTranslate = data.startTranslate;
27665        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;
27666        return;
27667      }
27668    } else {
27669      data.currentTranslate = data.startTranslate;
27670      return;
27671    }
27672  }
27673  if (!params.followFinger || params.cssMode) return;
27674  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {
27675    swiper.updateActiveIndex();
27676    swiper.updateSlidesClasses();
27677  }
27678  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {
27679    swiper.freeMode.onTouchMove();
27680  }
27681  swiper.updateProgress(data.currentTranslate);
27682  swiper.setTranslate(data.currentTranslate);
27683}
27684function onTouchEnd(event) {
27685  const swiper = this;
27686  const data = swiper.touchEventsData;
27687  let e = event;
27688  if (e.originalEvent) e = e.originalEvent;
27689  let targetTouch;
27690  const isTouchEvent = e.type === "touchend" || e.type === "touchcancel";
27691  if (!isTouchEvent) {
27692    if (data.touchId !== null) return;
27693    if (e.pointerId !== data.pointerId) return;
27694    targetTouch = e;
27695  } else {
27696    targetTouch = [...e.changedTouches].find((t) => t.identifier === data.touchId);
27697    if (!targetTouch || targetTouch.identifier !== data.touchId) return;
27698  }
27699  if (["pointercancel", "pointerout", "pointerleave", "contextmenu"].includes(e.type)) {
27700    const proceed = ["pointercancel", "contextmenu"].includes(e.type) && (swiper.browser.isSafari || swiper.browser.isWebView);
27701    if (!proceed) {
27702      return;
27703    }
27704  }
27705  data.pointerId = null;
27706  data.touchId = null;
27707  const {
27708    params,
27709    touches,
27710    rtlTranslate: rtl,
27711    slidesGrid,
27712    enabled
27713  } = swiper;
27714  if (!enabled) return;
27715  if (!params.simulateTouch && e.pointerType === "mouse") return;
27716  if (data.allowTouchCallbacks) {
27717    swiper.emit("touchEnd", e);
27718  }
27719  data.allowTouchCallbacks = false;
27720  if (!data.isTouched) {
27721    if (data.isMoved && params.grabCursor) {
27722      swiper.setGrabCursor(false);
27723    }
27724    data.isMoved = false;
27725    data.startMoving = false;
27726    return;
27727  }
27728  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {
27729    swiper.setGrabCursor(false);
27730  }
27731  const touchEndTime = now$2();
27732  const timeDiff = touchEndTime - data.touchStartTime;
27733  if (swiper.allowClick) {
27734    const pathTree = e.path || e.composedPath && e.composedPath();
27735    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target, pathTree);
27736    swiper.emit("tap click", e);
27737    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {
27738      swiper.emit("doubleTap doubleClick", e);
27739    }
27740  }
27741  data.lastClickTime = now$2();
27742  nextTick(() => {
27743    if (!swiper.destroyed) swiper.allowClick = true;
27744  });
27745  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 && !data.loopSwapReset || data.currentTranslate === data.startTranslate && !data.loopSwapReset) {
27746    data.isTouched = false;
vendor: 5,975 bytes, lines 27747-27923
27747    data.isMoved = false;
27748    data.startMoving = false;
27749    return;
27750  }
27751  data.isTouched = false;
27752  data.isMoved = false;
27753  data.startMoving = false;
27754  let currentPos;
27755  if (params.followFinger) {
27756    currentPos = rtl ? swiper.translate : -swiper.translate;
27757  } else {
27758    currentPos = -data.currentTranslate;
27759  }
27760  if (params.cssMode) {
27761    return;
27762  }
27763  if (params.freeMode && params.freeMode.enabled) {
27764    swiper.freeMode.onTouchEnd({
27765      currentPos
27766    });
27767    return;
27768  }
27769  const swipeToLast = currentPos >= -swiper.maxTranslate() && !swiper.params.loop;
27770  let stopIndex = 0;
27771  let groupSize = swiper.slidesSizesGrid[0];
27772  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {
27773    const increment2 = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
27774    if (typeof slidesGrid[i + increment2] !== "undefined") {
27775      if (swipeToLast || currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment2]) {
27776        stopIndex = i;
27777        groupSize = slidesGrid[i + increment2] - slidesGrid[i];
27778      }
27779    } else if (swipeToLast || currentPos >= slidesGrid[i]) {
27780      stopIndex = i;
27781      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];
27782    }
27783  }
27784  let rewindFirstIndex = null;
27785  let rewindLastIndex = null;
27786  if (params.rewind) {
27787    if (swiper.isBeginning) {
27788      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;
27789    } else if (swiper.isEnd) {
27790      rewindFirstIndex = 0;
27791    }
27792  }
27793  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;
27794  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;
27795  if (timeDiff > params.longSwipesMs) {
27796    if (!params.longSwipes) {
27797      swiper.slideTo(swiper.activeIndex);
27798      return;
27799    }
27800    if (swiper.swipeDirection === "next") {
27801      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);
27802      else swiper.slideTo(stopIndex);
27803    }
27804    if (swiper.swipeDirection === "prev") {
27805      if (ratio > 1 - params.longSwipesRatio) {
27806        swiper.slideTo(stopIndex + increment);
27807      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {
27808        swiper.slideTo(rewindLastIndex);
27809      } else {
27810        swiper.slideTo(stopIndex);
27811      }
27812    }
27813  } else {
27814    if (!params.shortSwipes) {
27815      swiper.slideTo(swiper.activeIndex);
27816      return;
27817    }
27818    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);
27819    if (!isNavButtonTarget) {
27820      if (swiper.swipeDirection === "next") {
27821        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);
27822      }
27823      if (swiper.swipeDirection === "prev") {
27824        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);
27825      }
27826    } else if (e.target === swiper.navigation.nextEl) {
27827      swiper.slideTo(stopIndex + increment);
27828    } else {
27829      swiper.slideTo(stopIndex);
27830    }
27831  }
27832}
27833function onResize() {
27834  const swiper = this;
27835  const {
27836    params,
27837    el
27838  } = swiper;
27839  if (el && el.offsetWidth === 0) return;
27840  if (params.breakpoints) {
27841    swiper.setBreakpoint();
27842  }
27843  const {
27844    allowSlideNext,
27845    allowSlidePrev,
27846    snapGrid
27847  } = swiper;
27848  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;
27849  swiper.allowSlideNext = true;
27850  swiper.allowSlidePrev = true;
27851  swiper.updateSize();
27852  swiper.updateSlides();
27853  swiper.updateSlidesClasses();
27854  const isVirtualLoop = isVirtual && params.loop;
27855  if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {
27856    swiper.slideTo(swiper.slides.length - 1, 0, false, true);
27857  } else {
27858    if (swiper.params.loop && !isVirtual) {
27859      swiper.slideToLoop(swiper.realIndex, 0, false, true);
27860    } else {
27861      swiper.slideTo(swiper.activeIndex, 0, false, true);
27862    }
27863  }
27864  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
27865    clearTimeout(swiper.autoplay.resizeTimeout);
27866    swiper.autoplay.resizeTimeout = setTimeout(() => {
27867      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {
27868        swiper.autoplay.resume();
27869      }
27870    }, 500);
27871  }
27872  swiper.allowSlidePrev = allowSlidePrev;
27873  swiper.allowSlideNext = allowSlideNext;
27874  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {
27875    swiper.checkOverflow();
27876  }
27877}
27878function onClick(e) {
27879  const swiper = this;
27880  if (!swiper.enabled) return;
27881  if (!swiper.allowClick) {
27882    if (swiper.params.preventClicks) e.preventDefault();
27883    if (swiper.params.preventClicksPropagation && swiper.animating) {
27884      e.stopPropagation();
27885      e.stopImmediatePropagation();
27886    }
27887  }
27888}
27889function onScroll() {
27890  const swiper = this;
27891  const {
27892    wrapperEl,
27893    rtlTranslate,
27894    enabled
27895  } = swiper;
27896  if (!enabled) return;
27897  swiper.previousTranslate = swiper.translate;
27898  if (swiper.isHorizontal()) {
27899    swiper.translate = -wrapperEl.scrollLeft;
27900  } else {
27901    swiper.translate = -wrapperEl.scrollTop;
27902  }
27903  if (swiper.translate === 0) swiper.translate = 0;
27904  swiper.updateActiveIndex();
27905  swiper.updateSlidesClasses();
27906  let newProgress;
27907  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();
27908  if (translatesDiff === 0) {
27909    newProgress = 0;
27910  } else {
27911    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;
27912  }
27913  if (newProgress !== swiper.progress) {
27914    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);
27915  }
27916  swiper.emit("setTranslate", swiper.translate, false);
27917}
27918function onLoad(e) {
27919  const swiper = this;
27920  processLazyPreloader(swiper, e.target);
27921  if (swiper.params.cssMode || swiper.params.slidesPerView !== "auto" && !swiper.params.autoHeight) {
27922    return;
27923  }
vendor: 4,653 bytes, lines 27924-28059
27924  swiper.update();
27925}
27926function onDocumentTouchStart() {
27927  const swiper = this;
27928  if (swiper.documentTouchHandlerProceeded) return;
27929  swiper.documentTouchHandlerProceeded = true;
27930  if (swiper.params.touchReleaseOnEdges) {
27931    swiper.el.style.touchAction = "auto";
27932  }
27933}
27934const events$9 = (swiper, method) => {
27935  const document2 = getDocument();
27936  const {
27937    params,
27938    el,
27939    wrapperEl,
27940    device
27941  } = swiper;
27942  const capture = !!params.nested;
27943  const domMethod = method === "on" ? "addEventListener" : "removeEventListener";
27944  const swiperMethod = method;
27945  if (!el || typeof el === "string") return;
27946  document2[domMethod]("touchstart", swiper.onDocumentTouchStart, {
27947    passive: false,
27948    capture
27949  });
27950  el[domMethod]("touchstart", swiper.onTouchStart, {
27951    passive: false
27952  });
27953  el[domMethod]("pointerdown", swiper.onTouchStart, {
27954    passive: false
27955  });
27956  document2[domMethod]("touchmove", swiper.onTouchMove, {
27957    passive: false,
27958    capture
27959  });
27960  document2[domMethod]("pointermove", swiper.onTouchMove, {
27961    passive: false,
27962    capture
27963  });
27964  document2[domMethod]("touchend", swiper.onTouchEnd, {
27965    passive: true
27966  });
27967  document2[domMethod]("pointerup", swiper.onTouchEnd, {
27968    passive: true
27969  });
27970  document2[domMethod]("pointercancel", swiper.onTouchEnd, {
27971    passive: true
27972  });
27973  document2[domMethod]("touchcancel", swiper.onTouchEnd, {
27974    passive: true
27975  });
27976  document2[domMethod]("pointerout", swiper.onTouchEnd, {
27977    passive: true
27978  });
27979  document2[domMethod]("pointerleave", swiper.onTouchEnd, {
27980    passive: true
27981  });
27982  document2[domMethod]("contextmenu", swiper.onTouchEnd, {
27983    passive: true
27984  });
27985  if (params.preventClicks || params.preventClicksPropagation) {
27986    el[domMethod]("click", swiper.onClick, true);
27987  }
27988  if (params.cssMode) {
27989    wrapperEl[domMethod]("scroll", swiper.onScroll);
27990  }
27991  if (params.updateOnWindowResize) {
27992    swiper[swiperMethod](device.ios || device.android ? "resize orientationchange observerUpdate" : "resize observerUpdate", onResize, true);
27993  } else {
27994    swiper[swiperMethod]("observerUpdate", onResize, true);
27995  }
27996  el[domMethod]("load", swiper.onLoad, {
27997    capture: true
27998  });
27999};
28000function attachEvents() {
28001  const swiper = this;
28002  const {
28003    params
28004  } = swiper;
28005  swiper.onTouchStart = onTouchStart.bind(swiper);
28006  swiper.onTouchMove = onTouchMove.bind(swiper);
28007  swiper.onTouchEnd = onTouchEnd.bind(swiper);
28008  swiper.onDocumentTouchStart = onDocumentTouchStart.bind(swiper);
28009  if (params.cssMode) {
28010    swiper.onScroll = onScroll.bind(swiper);
28011  }
28012  swiper.onClick = onClick.bind(swiper);
28013  swiper.onLoad = onLoad.bind(swiper);
28014  events$9(swiper, "on");
28015}
28016function detachEvents() {
28017  const swiper = this;
28018  events$9(swiper, "off");
28019}
28020var events$1$1 = {
28021  attachEvents,
28022  detachEvents
28023};
28024const isGridEnabled = (swiper, params) => {
28025  return swiper.grid && params.grid && params.grid.rows > 1;
28026};
28027function setBreakpoint() {
28028  const swiper = this;
28029  const {
28030    realIndex,
28031    initialized,
28032    params,
28033    el
28034  } = swiper;
28035  const breakpoints2 = params.breakpoints;
28036  if (!breakpoints2 || breakpoints2 && Object.keys(breakpoints2).length === 0) return;
28037  const document2 = getDocument();
28038  const breakpointsBase = params.breakpointsBase === "window" || !params.breakpointsBase ? params.breakpointsBase : "container";
28039  const breakpointContainer = ["window", "container"].includes(params.breakpointsBase) || !params.breakpointsBase ? swiper.el : document2.querySelector(params.breakpointsBase);
28040  const breakpoint = swiper.getBreakpoint(breakpoints2, breakpointsBase, breakpointContainer);
28041  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;
28042  const breakpointOnlyParams = breakpoint in breakpoints2 ? breakpoints2[breakpoint] : void 0;
28043  const breakpointParams = breakpointOnlyParams || swiper.originalParams;
28044  const wasMultiRow = isGridEnabled(swiper, params);
28045  const isMultiRow = isGridEnabled(swiper, breakpointParams);
28046  const wasGrabCursor = swiper.params.grabCursor;
28047  const isGrabCursor = breakpointParams.grabCursor;
28048  const wasEnabled = params.enabled;
28049  if (wasMultiRow && !isMultiRow) {
28050    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);
28051    swiper.emitContainerClasses();
28052  } else if (!wasMultiRow && isMultiRow) {
28053    el.classList.add(`${params.containerModifierClass}grid`);
28054    if (breakpointParams.grid.fill && breakpointParams.grid.fill === "column" || !breakpointParams.grid.fill && params.grid.fill === "column") {
28055      el.classList.add(`${params.containerModifierClass}grid-column`);
28056    }
28057    swiper.emitContainerClasses();
28058  }
28059  if (wasGrabCursor && !isGrabCursor) {
vendor: 4,822 bytes, lines 28060-28226
28060    swiper.unsetGrabCursor();
28061  } else if (!wasGrabCursor && isGrabCursor) {
28062    swiper.setGrabCursor();
28063  }
28064  ["navigation", "pagination", "scrollbar"].forEach((prop) => {
28065    if (typeof breakpointParams[prop] === "undefined") return;
28066    const wasModuleEnabled = params[prop] && params[prop].enabled;
28067    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;
28068    if (wasModuleEnabled && !isModuleEnabled) {
28069      swiper[prop].disable();
28070    }
28071    if (!wasModuleEnabled && isModuleEnabled) {
28072      swiper[prop].enable();
28073    }
28074  });
28075  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;
28076  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);
28077  const wasLoop = params.loop;
28078  if (directionChanged && initialized) {
28079    swiper.changeDirection();
28080  }
28081  extend$2(swiper.params, breakpointParams);
28082  const isEnabled = swiper.params.enabled;
28083  const hasLoop = swiper.params.loop;
28084  Object.assign(swiper, {
28085    allowTouchMove: swiper.params.allowTouchMove,
28086    allowSlideNext: swiper.params.allowSlideNext,
28087    allowSlidePrev: swiper.params.allowSlidePrev
28088  });
28089  if (wasEnabled && !isEnabled) {
28090    swiper.disable();
28091  } else if (!wasEnabled && isEnabled) {
28092    swiper.enable();
28093  }
28094  swiper.currentBreakpoint = breakpoint;
28095  swiper.emit("_beforeBreakpoint", breakpointParams);
28096  if (initialized) {
28097    if (needsReLoop) {
28098      swiper.loopDestroy();
28099      swiper.loopCreate(realIndex);
28100      swiper.updateSlides();
28101    } else if (!wasLoop && hasLoop) {
28102      swiper.loopCreate(realIndex);
28103      swiper.updateSlides();
28104    } else if (wasLoop && !hasLoop) {
28105      swiper.loopDestroy();
28106    }
28107  }
28108  swiper.emit("breakpoint", breakpointParams);
28109}
28110function getBreakpoint(breakpoints2, base, containerEl) {
28111  if (base === void 0) {
28112    base = "window";
28113  }
28114  if (!breakpoints2 || base === "container" && !containerEl) return void 0;
28115  let breakpoint = false;
28116  const window2 = getWindow();
28117  const currentHeight = base === "window" ? window2.innerHeight : containerEl.clientHeight;
28118  const points = Object.keys(breakpoints2).map((point) => {
28119    if (typeof point === "string" && point.indexOf("@") === 0) {
28120      const minRatio = parseFloat(point.substr(1));
28121      const value = currentHeight * minRatio;
28122      return {
28123        value,
28124        point
28125      };
28126    }
28127    return {
28128      value: point,
28129      point
28130    };
28131  });
28132  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));
28133  for (let i = 0; i < points.length; i += 1) {
28134    const {
28135      point,
28136      value
28137    } = points[i];
28138    if (base === "window") {
28139      if (window2.matchMedia(`(min-width: ${value}px)`).matches) {
28140        breakpoint = point;
28141      }
28142    } else if (value <= containerEl.clientWidth) {
28143      breakpoint = point;
28144    }
28145  }
28146  return breakpoint || "max";
28147}
28148var breakpoints = {
28149  setBreakpoint,
28150  getBreakpoint
28151};
28152function prepareClasses(entries, prefix) {
28153  const resultClasses = [];
28154  entries.forEach((item) => {
28155    if (typeof item === "object") {
28156      Object.keys(item).forEach((classNames) => {
28157        if (item[classNames]) {
28158          resultClasses.push(prefix + classNames);
28159        }
28160      });
28161    } else if (typeof item === "string") {
28162      resultClasses.push(prefix + item);
28163    }
28164  });
28165  return resultClasses;
28166}
28167function addClasses() {
28168  const swiper = this;
28169  const {
28170    classNames,
28171    params,
28172    rtl,
28173    el,
28174    device
28175  } = swiper;
28176  const suffixes = prepareClasses(["initialized", params.direction, {
28177    "free-mode": swiper.params.freeMode && params.freeMode.enabled
28178  }, {
28179    "autoheight": params.autoHeight
28180  }, {
28181    "rtl": rtl
28182  }, {
28183    "grid": params.grid && params.grid.rows > 1
28184  }, {
28185    "grid-column": params.grid && params.grid.rows > 1 && params.grid.fill === "column"
28186  }, {
28187    "android": device.android
28188  }, {
28189    "ios": device.ios
28190  }, {
28191    "css-mode": params.cssMode
28192  }, {
28193    "centered": params.cssMode && params.centeredSlides
28194  }, {
28195    "watch-progress": params.watchSlidesProgress
28196  }], params.containerModifierClass);
28197  classNames.push(...suffixes);
28198  el.classList.add(...classNames);
28199  swiper.emitContainerClasses();
28200}
28201function removeClasses() {
28202  const swiper = this;
28203  const {
28204    el,
28205    classNames
28206  } = swiper;
28207  if (!el || typeof el === "string") return;
28208  el.classList.remove(...classNames);
28209  swiper.emitContainerClasses();
28210}
28211var classes = {
28212  addClasses,
28213  removeClasses
28214};
28215function checkOverflow() {
28216  const swiper = this;
28217  const {
28218    isLocked: wasLocked,
28219    params
28220  } = swiper;
28221  const {
28222    slidesOffsetBefore
28223  } = params;
28224  if (slidesOffsetBefore) {
28225    const lastSlideIndex = swiper.slides.length - 1;
28226    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;
vendor: 5,345 bytes, lines 28227-28423
28227    swiper.isLocked = swiper.size > lastSlideRightEdge;
28228  } else {
28229    swiper.isLocked = swiper.snapGrid.length === 1;
28230  }
28231  if (params.allowSlideNext === true) {
28232    swiper.allowSlideNext = !swiper.isLocked;
28233  }
28234  if (params.allowSlidePrev === true) {
28235    swiper.allowSlidePrev = !swiper.isLocked;
28236  }
28237  if (wasLocked && wasLocked !== swiper.isLocked) {
28238    swiper.isEnd = false;
28239  }
28240  if (wasLocked !== swiper.isLocked) {
28241    swiper.emit(swiper.isLocked ? "lock" : "unlock");
28242  }
28243}
28244var checkOverflow$1 = {
28245  checkOverflow
28246};
28247var defaults = {
28248  init: true,
28249  direction: "horizontal",
28250  oneWayMovement: false,
28251  swiperElementNodeName: "SWIPER-CONTAINER",
28252  touchEventsTarget: "wrapper",
28253  initialSlide: 0,
28254  speed: 300,
28255  cssMode: false,
28256  updateOnWindowResize: true,
28257  resizeObserver: true,
28258  nested: false,
28259  createElements: false,
28260  eventsPrefix: "swiper",
28261  enabled: true,
28262  focusableElements: "input, select, option, textarea, button, video, label",
28263  // Overrides
28264  width: null,
28265  height: null,
28266  //
28267  preventInteractionOnTransition: false,
28268  // ssr
28269  userAgent: null,
28270  url: null,
28271  // To support iOS's swipe-to-go-back gesture (when being used in-app).
28272  edgeSwipeDetection: false,
28273  edgeSwipeThreshold: 20,
28274  // Autoheight
28275  autoHeight: false,
28276  // Set wrapper width
28277  setWrapperSize: false,
28278  // Virtual Translate
28279  virtualTranslate: false,
28280  // Effects
28281  effect: "slide",
28282  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'
28283  // Breakpoints
28284  breakpoints: void 0,
28285  breakpointsBase: "window",
28286  // Slides grid
28287  spaceBetween: 0,
28288  slidesPerView: 1,
28289  slidesPerGroup: 1,
28290  slidesPerGroupSkip: 0,
28291  slidesPerGroupAuto: false,
28292  centeredSlides: false,
28293  centeredSlidesBounds: false,
28294  slidesOffsetBefore: 0,
28295  // in px
28296  slidesOffsetAfter: 0,
28297  // in px
28298  normalizeSlideIndex: true,
28299  centerInsufficientSlides: false,
28300  // Disable swiper and hide navigation when container not overflow
28301  watchOverflow: true,
28302  // Round length
28303  roundLengths: false,
28304  // Touches
28305  touchRatio: 1,
28306  touchAngle: 45,
28307  simulateTouch: true,
28308  shortSwipes: true,
28309  longSwipes: true,
28310  longSwipesRatio: 0.5,
28311  longSwipesMs: 300,
28312  followFinger: true,
28313  allowTouchMove: true,
28314  threshold: 5,
28315  touchMoveStopPropagation: false,
28316  touchStartPreventDefault: true,
28317  touchStartForcePreventDefault: false,
28318  touchReleaseOnEdges: false,
28319  // Unique Navigation Elements
28320  uniqueNavElements: true,
28321  // Resistance
28322  resistance: true,
28323  resistanceRatio: 0.85,
28324  // Progress
28325  watchSlidesProgress: false,
28326  // Cursor
28327  grabCursor: false,
28328  // Clicks
28329  preventClicks: true,
28330  preventClicksPropagation: true,
28331  slideToClickedSlide: false,
28332  // loop
28333  loop: false,
28334  loopAddBlankSlides: true,
28335  loopAdditionalSlides: 0,
28336  loopPreventsSliding: true,
28337  // rewind
28338  rewind: false,
28339  // Swiping/no swiping
28340  allowSlidePrev: true,
28341  allowSlideNext: true,
28342  swipeHandler: null,
28343  // '.swipe-handler',
28344  noSwiping: true,
28345  noSwipingClass: "swiper-no-swiping",
28346  noSwipingSelector: null,
28347  // Passive Listeners
28348  passiveListeners: true,
28349  maxBackfaceHiddenSlides: 10,
28350  // NS
28351  containerModifierClass: "swiper-",
28352  // NEW
28353  slideClass: "swiper-slide",
28354  slideBlankClass: "swiper-slide-blank",
28355  slideActiveClass: "swiper-slide-active",
28356  slideVisibleClass: "swiper-slide-visible",
28357  slideFullyVisibleClass: "swiper-slide-fully-visible",
28358  slideNextClass: "swiper-slide-next",
28359  slidePrevClass: "swiper-slide-prev",
28360  wrapperClass: "swiper-wrapper",
28361  lazyPreloaderClass: "swiper-lazy-preloader",
28362  lazyPreloadPrevNext: 0,
28363  // Callbacks
28364  runCallbacksOnInit: true,
28365  // Internals
28366  _emitClasses: false
28367};
28368function moduleExtendParams(params, allModulesParams) {
28369  return function extendParams(obj) {
28370    if (obj === void 0) {
28371      obj = {};
28372    }
28373    const moduleParamName = Object.keys(obj)[0];
28374    const moduleParams = obj[moduleParamName];
28375    if (typeof moduleParams !== "object" || moduleParams === null) {
28376      extend$2(allModulesParams, obj);
28377      return;
28378    }
28379    if (params[moduleParamName] === true) {
28380      params[moduleParamName] = {
28381        enabled: true
28382      };
28383    }
28384    if (moduleParamName === "navigation" && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].prevEl && !params[moduleParamName].nextEl) {
28385      params[moduleParamName].auto = true;
28386    }
28387    if (["pagination", "scrollbar"].indexOf(moduleParamName) >= 0 && params[moduleParamName] && params[moduleParamName].enabled && !params[moduleParamName].el) {
28388      params[moduleParamName].auto = true;
28389    }
28390    if (!(moduleParamName in params && "enabled" in moduleParams)) {
28391      extend$2(allModulesParams, obj);
28392      return;
28393    }
28394    if (typeof params[moduleParamName] === "object" && !("enabled" in params[moduleParamName])) {
28395      params[moduleParamName].enabled = true;
28396    }
28397    if (!params[moduleParamName]) params[moduleParamName] = {
28398      enabled: false
28399    };
28400    extend$2(allModulesParams, obj);
28401  };
28402}
28403const prototypes = {
28404  eventsEmitter,
28405  update: update3,
28406  translate,
28407  transition,
28408  slide,
28409  loop,
28410  grabCursor,
28411  events: events$1$1,
28412  breakpoints,
28413  checkOverflow: checkOverflow$1,
28414  classes
28415};
28416const extendedDefaults = {};
28417let Swiper$1 = class Swiper {
28418  constructor() {
28419    let el;
28420    let params;
28421    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
28422      args[_key] = arguments[_key];
28423    }
vendor: 19,681 bytes, lines 28424-29088
28424    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === "Object") {
28425      params = args[0];
28426    } else {
28427      [el, params] = args;
28428    }
28429    if (!params) params = {};
28430    params = extend$2({}, params);
28431    if (el && !params.el) params.el = el;
28432    const document2 = getDocument();
28433    if (params.el && typeof params.el === "string" && document2.querySelectorAll(params.el).length > 1) {
28434      const swipers = [];
28435      document2.querySelectorAll(params.el).forEach((containerEl) => {
28436        const newParams = extend$2({}, params, {
28437          el: containerEl
28438        });
28439        swipers.push(new Swiper(newParams));
28440      });
28441      return swipers;
28442    }
28443    const swiper = this;
28444    swiper.__swiper__ = true;
28445    swiper.support = getSupport();
28446    swiper.device = getDevice({
28447      userAgent: params.userAgent
28448    });
28449    swiper.browser = getBrowser();
28450    swiper.eventsListeners = {};
28451    swiper.eventsAnyListeners = [];
28452    swiper.modules = [...swiper.__modules__];
28453    if (params.modules && Array.isArray(params.modules)) {
28454      swiper.modules.push(...params.modules);
28455    }
28456    const allModulesParams = {};
28457    swiper.modules.forEach((mod) => {
28458      mod({
28459        params,
28460        swiper,
28461        extendParams: moduleExtendParams(params, allModulesParams),
28462        on: swiper.on.bind(swiper),
28463        once: swiper.once.bind(swiper),
28464        off: swiper.off.bind(swiper),
28465        emit: swiper.emit.bind(swiper)
28466      });
28467    });
28468    const swiperParams = extend$2({}, defaults, allModulesParams);
28469    swiper.params = extend$2({}, swiperParams, extendedDefaults, params);
28470    swiper.originalParams = extend$2({}, swiper.params);
28471    swiper.passedParams = extend$2({}, params);
28472    if (swiper.params && swiper.params.on) {
28473      Object.keys(swiper.params.on).forEach((eventName) => {
28474        swiper.on(eventName, swiper.params.on[eventName]);
28475      });
28476    }
28477    if (swiper.params && swiper.params.onAny) {
28478      swiper.onAny(swiper.params.onAny);
28479    }
28480    Object.assign(swiper, {
28481      enabled: swiper.params.enabled,
28482      el,
28483      // Classes
28484      classNames: [],
28485      // Slides
28486      slides: [],
28487      slidesGrid: [],
28488      snapGrid: [],
28489      slidesSizesGrid: [],
28490      // isDirection
28491      isHorizontal() {
28492        return swiper.params.direction === "horizontal";
28493      },
28494      isVertical() {
28495        return swiper.params.direction === "vertical";
28496      },
28497      // Indexes
28498      activeIndex: 0,
28499      realIndex: 0,
28500      //
28501      isBeginning: true,
28502      isEnd: false,
28503      // Props
28504      translate: 0,
28505      previousTranslate: 0,
28506      progress: 0,
28507      velocity: 0,
28508      animating: false,
28509      cssOverflowAdjustment() {
28510        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;
28511      },
28512      // Locks
28513      allowSlideNext: swiper.params.allowSlideNext,
28514      allowSlidePrev: swiper.params.allowSlidePrev,
28515      // Touch Events
28516      touchEventsData: {
28517        isTouched: void 0,
28518        isMoved: void 0,
28519        allowTouchCallbacks: void 0,
28520        touchStartTime: void 0,
28521        isScrolling: void 0,
28522        currentTranslate: void 0,
28523        startTranslate: void 0,
28524        allowThresholdMove: void 0,
28525        // Form elements to match
28526        focusableElements: swiper.params.focusableElements,
28527        // Last click time
28528        lastClickTime: 0,
28529        clickTimeout: void 0,
28530        // Velocities
28531        velocities: [],
28532        allowMomentumBounce: void 0,
28533        startMoving: void 0,
28534        pointerId: null,
28535        touchId: null
28536      },
28537      // Clicks
28538      allowClick: true,
28539      // Touches
28540      allowTouchMove: swiper.params.allowTouchMove,
28541      touches: {
28542        startX: 0,
28543        startY: 0,
28544        currentX: 0,
28545        currentY: 0,
28546        diff: 0
28547      },
28548      // Images
28549      imagesToLoad: [],
28550      imagesLoaded: 0
28551    });
28552    swiper.emit("_swiper");
28553    if (swiper.params.init) {
28554      swiper.init();
28555    }
28556    return swiper;
28557  }
28558  getDirectionLabel(property) {
28559    if (this.isHorizontal()) {
28560      return property;
28561    }
28562    return {
28563      "width": "height",
28564      "margin-top": "margin-left",
28565      "margin-bottom ": "margin-right",
28566      "margin-left": "margin-top",
28567      "margin-right": "margin-bottom",
28568      "padding-left": "padding-top",
28569      "padding-right": "padding-bottom",
28570      "marginRight": "marginBottom"
28571    }[property];
28572  }
28573  getSlideIndex(slideEl) {
28574    const {
28575      slidesEl,
28576      params
28577    } = this;
28578    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
28579    const firstSlideIndex = elementIndex(slides[0]);
28580    return elementIndex(slideEl) - firstSlideIndex;
28581  }
28582  getSlideIndexByData(index2) {
28583    return this.getSlideIndex(this.slides.find((slideEl) => slideEl.getAttribute("data-swiper-slide-index") * 1 === index2));
28584  }
28585  recalcSlides() {
28586    const swiper = this;
28587    const {
28588      slidesEl,
28589      params
28590    } = swiper;
28591    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);
28592  }
28593  enable() {
28594    const swiper = this;
28595    if (swiper.enabled) return;
28596    swiper.enabled = true;
28597    if (swiper.params.grabCursor) {
28598      swiper.setGrabCursor();
28599    }
28600    swiper.emit("enable");
28601  }
28602  disable() {
28603    const swiper = this;
28604    if (!swiper.enabled) return;
28605    swiper.enabled = false;
28606    if (swiper.params.grabCursor) {
28607      swiper.unsetGrabCursor();
28608    }
28609    swiper.emit("disable");
28610  }
28611  setProgress(progress, speed) {
28612    const swiper = this;
28613    progress = Math.min(Math.max(progress, 0), 1);
28614    const min = swiper.minTranslate();
28615    const max = swiper.maxTranslate();
28616    const current = (max - min) * progress + min;
28617    swiper.translateTo(current, typeof speed === "undefined" ? 0 : speed);
28618    swiper.updateActiveIndex();
28619    swiper.updateSlidesClasses();
28620  }
28621  emitContainerClasses() {
28622    const swiper = this;
28623    if (!swiper.params._emitClasses || !swiper.el) return;
28624    const cls = swiper.el.className.split(" ").filter((className) => {
28625      return className.indexOf("swiper") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;
28626    });
28627    swiper.emit("_containerClasses", cls.join(" "));
28628  }
28629  getSlideClasses(slideEl) {
28630    const swiper = this;
28631    if (swiper.destroyed) return "";
28632    return slideEl.className.split(" ").filter((className) => {
28633      return className.indexOf("swiper-slide") === 0 || className.indexOf(swiper.params.slideClass) === 0;
28634    }).join(" ");
28635  }
28636  emitSlidesClasses() {
28637    const swiper = this;
28638    if (!swiper.params._emitClasses || !swiper.el) return;
28639    const updates = [];
28640    swiper.slides.forEach((slideEl) => {
28641      const classNames = swiper.getSlideClasses(slideEl);
28642      updates.push({
28643        slideEl,
28644        classNames
28645      });
28646      swiper.emit("_slideClass", slideEl, classNames);
28647    });
28648    swiper.emit("_slideClasses", updates);
28649  }
28650  slidesPerViewDynamic(view, exact) {
28651    if (view === void 0) {
28652      view = "current";
28653    }
28654    if (exact === void 0) {
28655      exact = false;
28656    }
28657    const swiper = this;
28658    const {
28659      params,
28660      slides,
28661      slidesGrid,
28662      slidesSizesGrid,
28663      size: swiperSize,
28664      activeIndex
28665    } = swiper;
28666    let spv = 1;
28667    if (typeof params.slidesPerView === "number") return params.slidesPerView;
28668    if (params.centeredSlides) {
28669      let slideSize = slides[activeIndex] ? Math.ceil(slides[activeIndex].swiperSlideSize) : 0;
28670      let breakLoop;
28671      for (let i = activeIndex + 1; i < slides.length; i += 1) {
28672        if (slides[i] && !breakLoop) {
28673          slideSize += Math.ceil(slides[i].swiperSlideSize);
28674          spv += 1;
28675          if (slideSize > swiperSize) breakLoop = true;
28676        }
28677      }
28678      for (let i = activeIndex - 1; i >= 0; i -= 1) {
28679        if (slides[i] && !breakLoop) {
28680          slideSize += slides[i].swiperSlideSize;
28681          spv += 1;
28682          if (slideSize > swiperSize) breakLoop = true;
28683        }
28684      }
28685    } else {
28686      if (view === "current") {
28687        for (let i = activeIndex + 1; i < slides.length; i += 1) {
28688          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;
28689          if (slideInView) {
28690            spv += 1;
28691          }
28692        }
28693      } else {
28694        for (let i = activeIndex - 1; i >= 0; i -= 1) {
28695          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;
28696          if (slideInView) {
28697            spv += 1;
28698          }
28699        }
28700      }
28701    }
28702    return spv;
28703  }
28704  update() {
28705    const swiper = this;
28706    if (!swiper || swiper.destroyed) return;
28707    const {
28708      snapGrid,
28709      params
28710    } = swiper;
28711    if (params.breakpoints) {
28712      swiper.setBreakpoint();
28713    }
28714    [...swiper.el.querySelectorAll('[loading="lazy"]')].forEach((imageEl) => {
28715      if (imageEl.complete) {
28716        processLazyPreloader(swiper, imageEl);
28717      }
28718    });
28719    swiper.updateSize();
28720    swiper.updateSlides();
28721    swiper.updateProgress();
28722    swiper.updateSlidesClasses();
28723    function setTranslate2() {
28724      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;
28725      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());
28726      swiper.setTranslate(newTranslate);
28727      swiper.updateActiveIndex();
28728      swiper.updateSlidesClasses();
28729    }
28730    let translated;
28731    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {
28732      setTranslate2();
28733      if (params.autoHeight) {
28734        swiper.updateAutoHeight();
28735      }
28736    } else {
28737      if ((params.slidesPerView === "auto" || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {
28738        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;
28739        translated = swiper.slideTo(slides.length - 1, 0, false, true);
28740      } else {
28741        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);
28742      }
28743      if (!translated) {
28744        setTranslate2();
28745      }
28746    }
28747    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {
28748      swiper.checkOverflow();
28749    }
28750    swiper.emit("update");
28751  }
28752  changeDirection(newDirection, needUpdate) {
28753    if (needUpdate === void 0) {
28754      needUpdate = true;
28755    }
28756    const swiper = this;
28757    const currentDirection = swiper.params.direction;
28758    if (!newDirection) {
28759      newDirection = currentDirection === "horizontal" ? "vertical" : "horizontal";
28760    }
28761    if (newDirection === currentDirection || newDirection !== "horizontal" && newDirection !== "vertical") {
28762      return swiper;
28763    }
28764    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);
28765    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);
28766    swiper.emitContainerClasses();
28767    swiper.params.direction = newDirection;
28768    swiper.slides.forEach((slideEl) => {
28769      if (newDirection === "vertical") {
28770        slideEl.style.width = "";
28771      } else {
28772        slideEl.style.height = "";
28773      }
28774    });
28775    swiper.emit("changeDirection");
28776    if (needUpdate) swiper.update();
28777    return swiper;
28778  }
28779  changeLanguageDirection(direction) {
28780    const swiper = this;
28781    if (swiper.rtl && direction === "rtl" || !swiper.rtl && direction === "ltr") return;
28782    swiper.rtl = direction === "rtl";
28783    swiper.rtlTranslate = swiper.params.direction === "horizontal" && swiper.rtl;
28784    if (swiper.rtl) {
28785      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);
28786      swiper.el.dir = "rtl";
28787    } else {
28788      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);
28789      swiper.el.dir = "ltr";
28790    }
28791    swiper.update();
28792  }
28793  mount(element) {
28794    const swiper = this;
28795    if (swiper.mounted) return true;
28796    let el = element || swiper.params.el;
28797    if (typeof el === "string") {
28798      el = document.querySelector(el);
28799    }
28800    if (!el) {
28801      return false;
28802    }
28803    el.swiper = swiper;
28804    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === swiper.params.swiperElementNodeName.toUpperCase()) {
28805      swiper.isElement = true;
28806    }
28807    const getWrapperSelector = () => {
28808      return `.${(swiper.params.wrapperClass || "").trim().split(" ").join(".")}`;
28809    };
28810    const getWrapper = () => {
28811      if (el && el.shadowRoot && el.shadowRoot.querySelector) {
28812        const res = el.shadowRoot.querySelector(getWrapperSelector());
28813        return res;
28814      }
28815      return elementChildren(el, getWrapperSelector())[0];
28816    };
28817    let wrapperEl = getWrapper();
28818    if (!wrapperEl && swiper.params.createElements) {
28819      wrapperEl = createElement("div", swiper.params.wrapperClass);
28820      el.append(wrapperEl);
28821      elementChildren(el, `.${swiper.params.slideClass}`).forEach((slideEl) => {
28822        wrapperEl.append(slideEl);
28823      });
28824    }
28825    Object.assign(swiper, {
28826      el,
28827      wrapperEl,
28828      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,
28829      hostEl: swiper.isElement ? el.parentNode.host : el,
28830      mounted: true,
28831      // RTL
28832      rtl: el.dir.toLowerCase() === "rtl" || elementStyle(el, "direction") === "rtl",
28833      rtlTranslate: swiper.params.direction === "horizontal" && (el.dir.toLowerCase() === "rtl" || elementStyle(el, "direction") === "rtl"),
28834      wrongRTL: elementStyle(wrapperEl, "display") === "-webkit-box"
28835    });
28836    return true;
28837  }
28838  init(el) {
28839    const swiper = this;
28840    if (swiper.initialized) return swiper;
28841    const mounted = swiper.mount(el);
28842    if (mounted === false) return swiper;
28843    swiper.emit("beforeInit");
28844    if (swiper.params.breakpoints) {
28845      swiper.setBreakpoint();
28846    }
28847    swiper.addClasses();
28848    swiper.updateSize();
28849    swiper.updateSlides();
28850    if (swiper.params.watchOverflow) {
28851      swiper.checkOverflow();
28852    }
28853    if (swiper.params.grabCursor && swiper.enabled) {
28854      swiper.setGrabCursor();
28855    }
28856    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {
28857      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);
28858    } else {
28859      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);
28860    }
28861    if (swiper.params.loop) {
28862      swiper.loopCreate(void 0, true);
28863    }
28864    swiper.attachEvents();
28865    const lazyElements = [...swiper.el.querySelectorAll('[loading="lazy"]')];
28866    if (swiper.isElement) {
28867      lazyElements.push(...swiper.hostEl.querySelectorAll('[loading="lazy"]'));
28868    }
28869    lazyElements.forEach((imageEl) => {
28870      if (imageEl.complete) {
28871        processLazyPreloader(swiper, imageEl);
28872      } else {
28873        imageEl.addEventListener("load", (e) => {
28874          processLazyPreloader(swiper, e.target);
28875        });
28876      }
28877    });
28878    preload(swiper);
28879    swiper.initialized = true;
28880    preload(swiper);
28881    swiper.emit("init");
28882    swiper.emit("afterInit");
28883    return swiper;
28884  }
28885  destroy(deleteInstance, cleanStyles) {
28886    if (deleteInstance === void 0) {
28887      deleteInstance = true;
28888    }
28889    if (cleanStyles === void 0) {
28890      cleanStyles = true;
28891    }
28892    const swiper = this;
28893    const {
28894      params,
28895      el,
28896      wrapperEl,
28897      slides
28898    } = swiper;
28899    if (typeof swiper.params === "undefined" || swiper.destroyed) {
28900      return null;
28901    }
28902    swiper.emit("beforeDestroy");
28903    swiper.initialized = false;
28904    swiper.detachEvents();
28905    if (params.loop) {
28906      swiper.loopDestroy();
28907    }
28908    if (cleanStyles) {
28909      swiper.removeClasses();
28910      if (el && typeof el !== "string") {
28911        el.removeAttribute("style");
28912      }
28913      if (wrapperEl) {
28914        wrapperEl.removeAttribute("style");
28915      }
28916      if (slides && slides.length) {
28917        slides.forEach((slideEl) => {
28918          slideEl.classList.remove(params.slideVisibleClass, params.slideFullyVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);
28919          slideEl.removeAttribute("style");
28920          slideEl.removeAttribute("data-swiper-slide-index");
28921        });
28922      }
28923    }
28924    swiper.emit("destroy");
28925    Object.keys(swiper.eventsListeners).forEach((eventName) => {
28926      swiper.off(eventName);
28927    });
28928    if (deleteInstance !== false) {
28929      if (swiper.el && typeof swiper.el !== "string") {
28930        swiper.el.swiper = null;
28931      }
28932      deleteProps(swiper);
28933    }
28934    swiper.destroyed = true;
28935    return null;
28936  }
28937  static extendDefaults(newDefaults) {
28938    extend$2(extendedDefaults, newDefaults);
28939  }
28940  static get extendedDefaults() {
28941    return extendedDefaults;
28942  }
28943  static get defaults() {
28944    return defaults;
28945  }
28946  static installModule(mod) {
28947    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];
28948    const modules = Swiper.prototype.__modules__;
28949    if (typeof mod === "function" && modules.indexOf(mod) < 0) {
28950      modules.push(mod);
28951    }
28952  }
28953  static use(module) {
28954    if (Array.isArray(module)) {
28955      module.forEach((m) => Swiper.installModule(m));
28956      return Swiper;
28957    }
28958    Swiper.installModule(module);
28959    return Swiper;
28960  }
28961};
28962Object.keys(prototypes).forEach((prototypeGroup) => {
28963  Object.keys(prototypes[prototypeGroup]).forEach((protoMethod) => {
28964    Swiper$1.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];
28965  });
28966});
28967Swiper$1.use([Resize, Observer]);
28968const paramsList = [
28969  "eventsPrefix",
28970  "injectStyles",
28971  "injectStylesUrls",
28972  "modules",
28973  "init",
28974  "_direction",
28975  "oneWayMovement",
28976  "swiperElementNodeName",
28977  "touchEventsTarget",
28978  "initialSlide",
28979  "_speed",
28980  "cssMode",
28981  "updateOnWindowResize",
28982  "resizeObserver",
28983  "nested",
28984  "focusableElements",
28985  "_enabled",
28986  "_width",
28987  "_height",
28988  "preventInteractionOnTransition",
28989  "userAgent",
28990  "url",
28991  "_edgeSwipeDetection",
28992  "_edgeSwipeThreshold",
28993  "_freeMode",
28994  "_autoHeight",
28995  "setWrapperSize",
28996  "virtualTranslate",
28997  "_effect",
28998  "breakpoints",
28999  "breakpointsBase",
29000  "_spaceBetween",
29001  "_slidesPerView",
29002  "maxBackfaceHiddenSlides",
29003  "_grid",
29004  "_slidesPerGroup",
29005  "_slidesPerGroupSkip",
29006  "_slidesPerGroupAuto",
29007  "_centeredSlides",
29008  "_centeredSlidesBounds",
29009  "_slidesOffsetBefore",
29010  "_slidesOffsetAfter",
29011  "normalizeSlideIndex",
29012  "_centerInsufficientSlides",
29013  "_watchOverflow",
29014  "roundLengths",
29015  "touchRatio",
29016  "touchAngle",
29017  "simulateTouch",
29018  "_shortSwipes",
29019  "_longSwipes",
29020  "longSwipesRatio",
29021  "longSwipesMs",
29022  "_followFinger",
29023  "allowTouchMove",
29024  "_threshold",
29025  "touchMoveStopPropagation",
29026  "touchStartPreventDefault",
29027  "touchStartForcePreventDefault",
29028  "touchReleaseOnEdges",
29029  "uniqueNavElements",
29030  "_resistance",
29031  "_resistanceRatio",
29032  "_watchSlidesProgress",
29033  "_grabCursor",
29034  "preventClicks",
29035  "preventClicksPropagation",
29036  "_slideToClickedSlide",
29037  "_loop",
29038  "loopAdditionalSlides",
29039  "loopAddBlankSlides",
29040  "loopPreventsSliding",
29041  "_rewind",
29042  "_allowSlidePrev",
29043  "_allowSlideNext",
29044  "_swipeHandler",
29045  "_noSwiping",
29046  "noSwipingClass",
29047  "noSwipingSelector",
29048  "passiveListeners",
29049  "containerModifierClass",
29050  "slideClass",
29051  "slideActiveClass",
29052  "slideVisibleClass",
29053  "slideFullyVisibleClass",
29054  "slideNextClass",
29055  "slidePrevClass",
29056  "slideBlankClass",
29057  "wrapperClass",
29058  "lazyPreloaderClass",
29059  "lazyPreloadPrevNext",
29060  "runCallbacksOnInit",
29061  "observer",
29062  "observeParents",
29063  "observeSlideChildren",
29064  // modules
29065  "a11y",
29066  "_autoplay",
29067  "_controller",
29068  "coverflowEffect",
29069  "cubeEffect",
29070  "fadeEffect",
29071  "flipEffect",
29072  "creativeEffect",
29073  "cardsEffect",
29074  "hashNavigation",
29075  "history",
29076  "keyboard",
29077  "mousewheel",
29078  "_navigation",
29079  "_pagination",
29080  "parallax",
29081  "_scrollbar",
29082  "_thumbs",
29083  "virtual",
29084  "zoom",
29085  "control"
29086];
29087function isObject$2(o) {
29088  return typeof o === "object" && o !== null && o.constructor && Ob
29088ject.prototype.toString.call(o).slice(8, -1) === "Object" && !o.__swiper__;
29089}
29090function extend$1(target, src) {
29091  const noExtend = ["__proto__", "constructor", "prototype"];
29092  Object.keys(src).filter((key) => noExtend.indexOf(key) < 0).forEach((key) => {
29093    if (typeof target[key] === "undefined") target[key] = src[key];
29094    else if (isObject$2(src[key]) && isObject$2(target[key]) && Object.keys(src[key]).length > 0) {
29095      if (src[key].__swiper__) target[key] = src[key];
29096      else extend$1(target[key], src[key]);
29097    } else {
29098      target[key] = src[key];
29099    }
29100  });
29101}
29102function needsNavigation(params) {
29103  if (params === void 0) {
29104    params = {};
29105  }
29106  return params.navigation && typeof params.navigation.nextEl === "undefined" && typeof params.navigation.prevEl === "undefined";
29107}
29108function needsPagination(params) {
29109  if (params === void 0) {
29110    params = {};
29111  }
29112  return params.pagination && typeof params.pagination.el === "undefined";
29113}
29114function needsScrollbar(params) {
29115  if (params === void 0) {
29116    params = {};
29117  }
29118  return params.scrollbar && typeof params.scrollbar.el === "undefined";
29119}
29120function uniqueClasses(classNames) {
29121  if (classNames === void 0) {
29122    classNames = "";
29123  }
29124  const classes2 = classNames.split(" ").map((c) => c.trim()).filter((c) => !!c);
29125  const unique = [];
29126  classes2.forEach((c) => {
29127    if (unique.indexOf(c) < 0) unique.push(c);
29128  });
29129  return unique.join(" ");
29130}
29131function wrapperClass(className) {
29132  if (className === void 0) {
29133    className = "";
29134  }
29135  if (!className) return "swiper-wrapper";
29136  if (!className.includes("swiper-wrapper")) return `swiper-wrapper ${className}`;
29137  return className;
29138}
29139function updateSwiper(_ref) {
29140  let {
29141    swiper,
29142    slides,
29143    passedParams,
29144    changedParams,
29145    nextEl,
29146    prevEl,
29147    scrollbarEl,
29148    paginationEl
29149  } = _ref;
29150  const updateParams = changedParams.filter((key) => key !== "children" && key !== "direction" && key !== "wrapperClass");
29151  const {
29152    params: currentParams,
29153    pagination,
29154    navigation,
29155    scrollbar,
29156    virtual,
29157    thumbs
29158  } = swiper;
29159  let needThumbsInit;
29160  let needControllerInit;
29161  let needPaginationInit;
29162  let needScrollbarInit;
29163  let needNavigationInit;
29164  let loopNeedDestroy;
29165  let loopNeedEnable;
29166  let loopNeedReloop;
29167  if (changedParams.includes("thumbs") && passedParams.thumbs && passedParams.thumbs.swiper && !passedParams.thumbs.swiper.destroyed && currentParams.thumbs && (!currentParams.thumbs.swiper || currentParams.thumbs.swiper.destroyed)) {
29168    needThumbsInit = true;
29169  }
29170  if (changedParams.includes("controller") && passedParams.controller && passedParams.controller.control && currentParams.controller && !currentParams.controller.control) {
29171    needControllerInit = true;
29172  }
29173  if (changedParams.includes("pagination") && passedParams.pagination && (passedParams.pagination.el || paginationEl) && (currentParams.pagination || currentParams.pagination === false) && pagination && !pagination.el) {
29174    needPaginationInit = true;
29175  }
29176  if (changedParams.includes("scrollbar") && passedParams.scrollbar && (passedParams.scrollbar.el || scrollbarEl) && (currentParams.scrollbar || currentParams.scrollbar === false) && scrollbar && !scrollbar.el) {
29177    needScrollbarInit = true;
29178  }
29179  if (changedParams.includes("navigation") && passedParams.navigation && (passedParams.navigation.prevEl || prevEl) && (passedParams.navigation.nextEl || nextEl) && (currentParams.navigation || currentParams.navigation === false) && navigation && !navigation.prevEl && !navigation.nextEl) {
29180    needNavigationInit = true;
29181  }
29182  const destroyModule = (mod) => {
29183    if (!swiper[mod]) return;
29184    swiper[mod].destroy();
29185    if (mod === "navigation") {
29186      if (swiper.isElement) {
29187        swiper[mod].prevEl.remove();
29188        swiper[mod].nextEl.remove();
29189      }
29190      currentParams[mod].prevEl = void 0;
29191      currentParams[mod].nextEl = void 0;
29192      swiper[mod].prevEl = void 0;
29193      swiper[mod].nextEl = void 0;
29194    } else {
29195      if (swiper.isElement) {
29196        swiper[mod].el.remove();
29197      }
29198      currentParams[mod].el = void 0;
29199      swiper[mod].el = void 0;
29200    }
29201  };
29202  if (changedParams.includes("loop") && swiper.isElement) {
vendor: 4,290 bytes, lines 29203-29322
29203    if (currentParams.loop && !passedParams.loop) {
29204      loopNeedDestroy = true;
29205    } else if (!currentParams.loop && passedParams.loop) {
29206      loopNeedEnable = true;
29207    } else {
29208      loopNeedReloop = true;
29209    }
29210  }
29211  updateParams.forEach((key) => {
29212    if (isObject$2(currentParams[key]) && isObject$2(passedParams[key])) {
29213      Object.assign(currentParams[key], passedParams[key]);
29214      if ((key === "navigation" || key === "pagination" || key === "scrollbar") && "enabled" in passedParams[key] && !passedParams[key].enabled) {
29215        destroyModule(key);
29216      }
29217    } else {
29218      const newValue = passedParams[key];
29219      if ((newValue === true || newValue === false) && (key === "navigation" || key === "pagination" || key === "scrollbar")) {
29220        if (newValue === false) {
29221          destroyModule(key);
29222        }
29223      } else {
29224        currentParams[key] = passedParams[key];
29225      }
29226    }
29227  });
29228  if (updateParams.includes("controller") && !needControllerInit && swiper.controller && swiper.controller.control && currentParams.controller && currentParams.controller.control) {
29229    swiper.controller.control = currentParams.controller.control;
29230  }
29231  if (changedParams.includes("children") && slides && virtual && currentParams.virtual.enabled) {
29232    virtual.slides = slides;
29233    virtual.update(true);
29234  } else if (changedParams.includes("virtual") && virtual && currentParams.virtual.enabled) {
29235    if (slides) virtual.slides = slides;
29236    virtual.update(true);
29237  }
29238  if (changedParams.includes("children") && slides && currentParams.loop) {
29239    loopNeedReloop = true;
29240  }
29241  if (needThumbsInit) {
29242    const initialized = thumbs.init();
29243    if (initialized) thumbs.update(true);
29244  }
29245  if (needControllerInit) {
29246    swiper.controller.control = currentParams.controller.control;
29247  }
29248  if (needPaginationInit) {
29249    if (swiper.isElement && (!paginationEl || typeof paginationEl === "string")) {
29250      paginationEl = document.createElement("div");
29251      paginationEl.classList.add("swiper-pagination");
29252      paginationEl.part.add("pagination");
29253      swiper.el.appendChild(paginationEl);
29254    }
29255    if (paginationEl) currentParams.pagination.el = paginationEl;
29256    pagination.init();
29257    pagination.render();
29258    pagination.update();
29259  }
29260  if (needScrollbarInit) {
29261    if (swiper.isElement && (!scrollbarEl || typeof scrollbarEl === "string")) {
29262      scrollbarEl = document.createElement("div");
29263      scrollbarEl.classList.add("swiper-scrollbar");
29264      scrollbarEl.part.add("scrollbar");
29265      swiper.el.appendChild(scrollbarEl);
29266    }
29267    if (scrollbarEl) currentParams.scrollbar.el = scrollbarEl;
29268    scrollbar.init();
29269    scrollbar.updateSize();
29270    scrollbar.setTranslate();
29271  }
29272  if (needNavigationInit) {
29273    if (swiper.isElement) {
29274      if (!nextEl || typeof nextEl === "string") {
29275        nextEl = document.createElement("div");
29276        nextEl.classList.add("swiper-button-next");
29277        setInnerHTML(nextEl, swiper.hostEl.constructor.nextButtonSvg);
29278        nextEl.part.add("button-next");
29279        swiper.el.appendChild(nextEl);
29280      }
29281      if (!prevEl || typeof prevEl === "string") {
29282        prevEl = document.createElement("div");
29283        prevEl.classList.add("swiper-button-prev");
29284        setInnerHTML(prevEl, swiper.hostEl.constructor.prevButtonSvg);
29285        prevEl.part.add("button-prev");
29286        swiper.el.appendChild(prevEl);
29287      }
29288    }
29289    if (nextEl) currentParams.navigation.nextEl = nextEl;
29290    if (prevEl) currentParams.navigation.prevEl = prevEl;
29291    navigation.init();
29292    navigation.update();
29293  }
29294  if (changedParams.includes("allowSlideNext")) {
29295    swiper.allowSlideNext = passedParams.allowSlideNext;
29296  }
29297  if (changedParams.includes("allowSlidePrev")) {
29298    swiper.allowSlidePrev = passedParams.allowSlidePrev;
29299  }
29300  if (changedParams.includes("direction")) {
29301    swiper.changeDirection(passedParams.direction, false);
29302  }
29303  if (loopNeedDestroy || loopNeedReloop) {
29304    swiper.loopDestroy();
29305  }
29306  if (loopNeedEnable || loopNeedReloop) {
29307    swiper.loopCreate();
29308  }
29309  swiper.update();
29310}
29311function getParams(obj, splitEvents) {
29312  if (obj === void 0) {
29313    obj = {};
29314  }
29315  const params = {
29316    on: {}
29317  };
29318  const events2 = {};
29319  const passedParams = {};
29320  extend$1(params, defaults);
29321  params._emitClasses = true;
29322  params.init = false;
29323  const rest = {};
29324  const allowedParams = paramsList.map((key) => key.replace(/_/, ""));
29325  const plainObj = Object.assign({}, obj);
29326  Object.keys(plainObj).forEach((key) => {
29327    if (typeof obj[key] === "undefined") return;
29328    if (allowedParams.indexOf(key) >= 0) {
29329      if (isObject$2(obj[key])) {
29330        params[key] = {};
29331        passedParams[key] = {};
29332        extend$1(params[key], obj[key]);
29333        extend$1(passedParams[key], obj[key]);
29334      } else {
29335        params[key] = obj[key];
29336        passedParams[key] = obj[key];
29337      }
29338    } else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === "function") {
29339      {
29340        params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];
29341      }
29342    } else {
29343      rest[key] = obj[key];
29344    }
29345  });
29346  ["navigation", "pagination", "scrollbar"].forEach((key) => {
29347    if (params[key] === true) params[key] = {};
29348    if (params[key] === false) delete params[key];
29349  });
29350  return {
29351    params,
29352    passedParams,
29353    rest,
29354    events: events2
29355  };
29356}
29357function mountSwiper(_ref, swiperParams) {
29358  let {
29359    el,
29360    nextEl,
29361    prevEl,
29362    paginationEl,
29363    scrollbarEl,
29364    swiper
29365  } = _ref;
29366  if (needsNavigation(swiperParams) && nextEl && prevEl) {
29367    swiper.params.navigation.nextEl = nextEl;
29368    swiper.originalParams.navigation.nextEl = nextEl;
29369    swiper.params.navigation.prevEl = prevEl;
29370    swiper.originalParams.navigation.prevEl = prevEl;
29371  }
29372  if (needsPagination(swiperParams) && paginationEl) {
29373    swiper.params.pagination.el = paginationEl;
29374    swiper.originalParams.pagination.el = paginationEl;
29375  }
29376  if (needsScrollbar(swiperParams) && scrollbarEl) {
29377    swiper.params.scrollbar.el = scrollbarEl;
29378    swiper.originalParams.scrollbar.el = scrollbarEl;
29379  }
29380  swiper.init(el);
29381}
29382function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {
29383  const keys = [];
29384  if (!oldParams) return keys;
29385  const addKey = (key) => {
29386    if (keys.indexOf(key) < 0) keys.push(key);
29387  };
29388  if (children && oldChildren) {
29389    const oldChildrenKeys = oldChildren.map(getKey);
29390    const childrenKeys = children.map(getKey);
29391    if (oldChildrenKeys.join("") !== childrenKeys.join("")) addKey("children");
29392    if (oldChildren.length !== children.length) addKey("children");
29393  }
29394  const watchParams = paramsList.filter((key) => key[0] === "_").map((key) => key.replace(/_/, ""));
29395  watchParams.forEach((key) => {
29396    if (key in swiperParams && key in oldParams) {
29397      if (isObject$2(swiperParams[key]) && isObject$2(oldParams[key])) {
29398        const newKeys = Object.keys(swiperParams[key]);
29399        const oldKeys = Object.keys(oldParams[key]);
29400        if (newKeys.length !== oldKeys.length) {
29401          addKey(key);
29402        } else {
29403          newKeys.forEach((newKey) => {
29404            if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
29405              addKey(key);
29406            }
29407          });
29408          oldKeys.forEach((oldKey) => {
29409            if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
29410          });
29411        }
29412      } else if (swiperParams[key] !== oldParams[key]) {
29413        addKey(key);
29414      }
29415    }
29416  });
29417  return keys;
29418}
29419const updateOnVirtualData = (swiper) => {
29420  if (!swiper || swiper.destroyed || !swiper.params.virtual || swiper.params.virtual && !swiper.params.virtual.enabled) return;
29421  swiper.updateSlides();
29422  swiper.updateProgress();
29423  swiper.updateSlidesClasses();
29424  swiper.emit("_virtualUpdated");
29425  if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {
29426    swiper.parallax.setTranslate();
29427  }
29428};
29429function getChildren(originalSlots, slidesRef, oldSlidesRef) {
29430  if (originalSlots === void 0) {
29431    originalSlots = {};
29432  }
29433  const slides = [];
29434  const slots = {
29435    "container-start": [],
29436    "container-end": [],
29437    "wrapper-start": [],
29438    "wrapper-end": []
29439  };
29440  const getSlidesFromElements = (els, slotName) => {
29441    if (!Array.isArray(els)) {
29442      return;
29443    }
29444    els.forEach((vnode) => {
29445      const isFragment = typeof vnode.type === "symbol";
29446      if (slotName === "default") slotName = "container-end";
29447      if (isFragment && vnode.children) {
29448        getSlidesFromElements(vnode.children, slotName);
29449      } else if (vnode.type && (vnode.type.name === "SwiperSlide" || vnode.type.name === "AsyncComponentWrapper") || vnode.componentOptions && vnode.componentOptions.tag === "SwiperSlide") {
29450        slides.push(vnode);
29451      } else if (slots[slotName]) {
29452        slots[slotName].push(vnode);
29453      }
29454    });
29455  };
29456  Object.keys(originalSlots).forEach((slotName) => {
29457    if (typeof originalSlots[slotName] !== "function") return;
29458    const els = originalSlots[slotName]();
29459    getSlidesFromElements(els, slotName);
29460  });
29461  oldSlidesRef.value = slidesRef.value;
29462  slidesRef.value = slides;
29463  return {
29464    slides,
29465    slots
29466  };
29467}
29468function renderVirtual(swiperRef, slides, virtualData) {
29469  if (!virtualData) return null;
29470  const getSlideIndex = (index2) => {
29471    let slideIndex = index2;
29472    if (index2 < 0) {
29473      slideIndex = slides.length + index2;
29474    } else if (slideIndex >= slides.length) {
29475      slideIndex = slideIndex - slides.length;
29476    }
29477    return slideIndex;
29478  };
29479  const style = swiperRef.value.isHorizontal() ? {
29480    [swiperRef.value.rtlTranslate ? "right" : "left"]: `${virtualData.offset}px`
29481  } : {
29482    top: `${virtualData.offset}px`
29483  };
29484  const {
29485    from,
29486    to
29487  } = virtualData;
29488  const loopFrom = swiperRef.value.params.loop ? -slides.length : 0;
29489  const loopTo = swiperRef.value.params.loop ? slides.length * 2 : slides.length;
29490  const slidesToRender = [];
29491  for (let i = loopFrom; i < loopTo; i += 1) {
29492    if (i >= from && i <= to && slidesToRender.length < slides.length) {
29493      slidesToRender.push(slides[getSlideIndex(i)]);
29494    }
29495  }
29496  return slidesToRender.map((slide2) => {
29497    if (!slide2.props) slide2.props = {};
29498    if (!slide2.props.style) slide2.props.style = {};
29499    slide2.props.swiperRef = swiperRef;
29500    slide2.props.style = style;
29501    if (slide2.type) {
29502      return h(slide2.type, {
29503        ...slide2.props
29504      }, slide2.children);
29505    } else if (slide2.componentOptions) {
29506      return h(slide2.componentOptions.Ctor, {
29507        ...slide2.props
29508      }, slide2.componentOptions.children);
29509    }
29510  });
29511}
29512const Swiper2 = {
29513  name: "Swiper",
29514  props: {
29515    tag: {
29516      type: String,
29517      default: "div"
29518    },
29519    wrapperTag: {
29520      type: String,
29521      default: "div"
29522    },
29523    modules: {
29524      type: Array,
29525      default: void 0
29526    },
29527    init: {
29528      type: Boolean,
29529      default: void 0
29530    },
29531    direction: {
29532      type: String,
29533      default: void 0
29534    },
29535    oneWayMovement: {
29536      type: Boolean,
29537      default: void 0
29538    },
29539    swiperElementNodeName: {
29540      type: String,
29541      default: "SWIPER-CONTAINER"
29542    },
29543    touchEventsTarget: {
29544      type: String,
29545      default: void 0
29546    },
29547    initialSlide: {
29548      type: Number,
29549      default: void 0
29550    },
29551    speed: {
29552      type: Number,
29553      default: void 0
29554    },
29555    cssMode: {
29556      type: Boolean,
29557      default: void 0
29558    },
29559    updateOnWindowResize: {
29560      type: Boolean,
29561      default: void 0
29562    },
29563    resizeObserver: {
29564      type: Boolean,
29565      default: void 0
29566    },
29567    nested: {
29568      type: Boolean,
29569      default: void 0
29570    },
29571    focusableElements: {
29572      type: String,
29573      default: void 0
29574    },
29575    width: {
29576      type: Number,
29577      default: void 0
29578    },
29579    height: {
29580      type: Number,
29581      default: void 0
29582    },
29583    preventInteractionOnTransition: {
29584      type: Boolean,
29585      default: void 0
29586    },
29587    userAgent: {
29588      type: String,
29589      default: void 0
29590    },
29591    url: {
29592      type: String,
29593      default: void 0
29594    },
29595    edgeSwipeDetection: {
29596      type: [Boolean, String],
29597      default: void 0
29598    },
29599    edgeSwipeThreshold: {
29600      type: Number,
29601      default: void 0
29602    },
29603    autoHeight: {
29604      type: Boolean,
29605      default: void 0
29606    },
29607    setWrapperSize: {
29608      type: Boolean,
29609      default: void 0
29610    },
29611    virtualTranslate: {
29612      type: Boolean,
29613      default: void 0
29614    },
29615    effect: {
29616      type: String,
29617      default: void 0
29618    },
29619    breakpoints: {
29620      type: Object,
29621      default: void 0
29622    },
29623    breakpointsBase: {
29624      type: String,
29625      default: void 0
29626    },
29627    spaceBetween: {
29628      type: [Number, String],
29629      default: void 0
29630    },
29631    slidesPerView: {
29632      type: [Number, String],
29633      default: void 0
29634    },
29635    maxBackfaceHiddenSlides: {
29636      type: Number,
29637      default: void 0
29638    },
29639    slidesPerGroup: {
29640      type: Number,
29641      default: void 0
29642    },
29643    slidesPerGroupSkip: {
29644      type: Number,
29645      default: void 0
29646    },
29647    slidesPerGroupAuto: {
29648      type: Boolean,
29649      default: void 0
29650    },
29651    centeredSlides: {
29652      type: Boolean,
29653      default: void 0
29654    },
29655    centeredSlidesBounds: {
29656      type: Boolean,
29657      default: void 0
29658    },
29659    slidesOffsetBefore: {
29660      type: Number,
29661      default: void 0
29662    },
29663    slidesOffsetAfter: {
29664      type: Number,
29665      default: void 0
29666    },
29667    normalizeSlideIndex: {
29668      type: Boolean,
29669      default: void 0
29670    },
29671    centerInsufficientSlides: {
29672      type: Boolean,
29673      default: void 0
29674    },
29675    watchOverflow: {
29676      type: Boolean,
29677      default: void 0
29678    },
29679    roundLengths: {
29680      type: Boolean,
29681      default: void 0
29682    },
29683    touchRatio: {
29684      type: Number,
29685      default: void 0
29686    },
29687    touchAngle: {
29688      type: Number,
29689      default: void 0
29690    },
29691    simulateTouch: {
29692      type: Boolean,
29693      default: void 0
29694    },
29695    shortSwipes: {
29696      type: Boolean,
29697      default: void 0
29698    },
29699    longSwipes: {
29700      type: Boolean,
29701      default: void 0
29702    },
29703    longSwipesRatio: {
29704      type: Number,
29705      default: void 0
29706    },
29707    longSwipesMs: {
29708      type: Number,
29709      default: void 0
29710    },
29711    followFinger: {
29712      type: Boolean,
29713      default: void 0
29714    },
29715    allowTouchMove: {
29716      type: Boolean,
29717      default: void 0
29718    },
29719    threshold: {
29720      type: Number,
29721      default: void 0
29722    },
29723    touchMoveStopPropagation: {
29724      type: Boolean,
29725      default: void 0
29726    },
29727    touchStartPreventDefault: {
29728      type: Boolean,
29729      default: void 0
29730    },
29731    touchStartForcePreventDefault: {
29732      type: Boolean,
29733      default: void 0
29734    },
29735    touchReleaseOnEdges: {
29736      type: Boolean,
29737      default: void 0
29738    },
29739    uniqueNavElements: {
29740      type: Boolean,
29741      default: void 0
29742    },
29743    resistance: {
29744      type: Boolean,
29745      default: void 0
29746    },
29747    resistanceRatio: {
29748      type: Number,
29749      default: void 0
29750    },
29751    watchSlidesProgress: {
29752      type: Boolean,
29753      default: void 0
29754    },
29755    grabCursor: {
29756      type: Boolean,
29757      default: void 0
29758    },
29759    preventClicks: {
29760      type: Boolean,
29761      default: void 0
29762    },
29763    preventClicksPropagation: {
29764      type: Boolean,
29765      default: void 0
29766    },
29767    slideToClickedSlide: {
29768      type: Boolean,
29769      default: void 0
29770    },
29771    loop: {
29772      type: Boolean,
29773      default: void 0
29774    },
29775    loopedSlides: {
29776      type: Number,
29777      default: void 0
29778    },
29779    loopPreventsSliding: {
29780      type: Boolean,
29781      default: void 0
29782    },
29783    loopAdditionalSlides: {
29784      type: Number,
29785      default: void 0
29786    },
29787    loopAddBlankSlides: {
29788      type: Boolean,
29789      default: void 0
29790    },
29791    rewind: {
29792      type: Boolean,
29793      default: void 0
29794    },
29795    allowSlidePrev: {
29796      type: Boolean,
29797      default: void 0
29798    },
29799    allowSlideNext: {
29800      type: Boolean,
29801      default: void 0
29802    },
29803    swipeHandler: {
29804      type: Boolean,
29805      default: void 0
29806    },
29807    noSwiping: {
29808      type: Boolean,
29809      default: void 0
29810    },
29811    noSwipingClass: {
29812      type: String,
29813      default: void 0
29814    },
29815    noSwipingSelector: {
29816      type: String,
29817      default: void 0
29818    },
29819    passiveListeners: {
29820      type: Boolean,
29821      default: void 0
29822    },
29823    containerModifierClass: {
29824      type: String,
29825      default: void 0
29826    },
29827    slideClass: {
29828      type: String,
29829      default: void 0
29830    },
29831    slideActiveClass: {
29832      type: String,
29833      default: void 0
29834    },
29835    slideVisibleClass: {
29836      type: String,
29837      default: void 0
29838    },
29839    slideFullyVisibleClass: {
29840      type: String,
29841      default: void 0
29842    },
29843    slideBlankClass: {
29844      type: String,
29845      default: void 0
29846    },
29847    slideNextClass: {
29848      type: String,
29849      default: void 0
29850    },
29851    slidePrevClass: {
29852      type: String,
29853      default: void 0
29854    },
29855    wrapperClass: {
29856      type: String,
29857      default: void 0
29858    },
29859    lazyPreloaderClass: {
29860      type: String,
29861      default: void 0
29862    },
29863    lazyPreloadPrevNext: {
29864      type: Number,
29865      default: void 0
29866    },
29867    runCallbacksOnInit: {
29868      type: Boolean,
29869      default: void 0
29870    },
29871    observer: {
29872      type: Boolean,
29873      default: void 0
29874    },
29875    observeParents: {
29876      type: Boolean,
29877      default: void 0
29878    },
29879    observeSlideChildren: {
29880      type: Boolean,
29881      default: void 0
29882    },
29883    a11y: {
29884      type: [Boolean, Object],
29885      default: void 0
29886    },
29887    autoplay: {
29888      type: [Boolean, Object],
29889      default: void 0
29890    },
29891    controller: {
29892      type: Object,
29893      default: void 0
29894    },
29895    coverflowEffect: {
29896      type: Object,
29897      default: void 0
29898    },
29899    cubeEffect: {
29900      type: Object,
29901      default: void 0
29902    },
29903    fadeEffect: {
29904      type: Object,
29905      default: void 0
29906    },
29907    flipEffect: {
29908      type: Object,
29909      default: void 0
29910    },
29911    creativeEffect: {
29912      type: Object,
29913      default: void 0
29914    },
29915    cardsEffect: {
29916      type: Object,
29917      default: void 0
29918    },
29919    hashNavigation: {
29920      type: [Boolean, Object],
29921      default: void 0
29922    },
29923    history: {
29924      type: [Boolean, Object],
29925      default: void 0
29926    },
29927    keyboard: {
29928      type: [Boolean, Object],
29929      default: void 0
29930    },
29931    mousewheel: {
29932      type: [Boolean, Object],
29933      default: void 0
29934    },
29935    navigation: {
29936      type: [Boolean, Object],
29937      default: void 0
29938    },
29939    pagination: {
29940      type: [Boolean, Object],
29941      default: void 0
29942    },
29943    parallax: {
29944      type: [Boolean, Object],
29945      default: void 0
29946    },
29947    scrollbar: {
29948      type: [Boolean, Object],
29949      default: void 0
29950    },
29951    thumbs: {
29952      type: Object,
29953      default: void 0
29954    },
29955    virtual: {
29956      type: [Boolean, Object],
29957      default: void 0
29958    },
29959    zoom: {
29960      type: [Boolean, Object],
29961      default: void 0
29962    },
29963    grid: {
29964      type: [Object],
29965      default: void 0
29966    },
29967    freeMode: {
29968      type: [Boolean, Object],
29969      default: void 0
29970    },
29971    enabled: {
29972      type: Boolean,
29973      default: void 0
29974    }
29975  },
29976  emits: ["_beforeBreakpoint", "_containerClasses", "_slideClass", "_slideClasses", "_swiper", "_freeModeNoMomentumRelease", "activeIndexChange", "afterInit", "autoplay", "autoplayStart", "autoplayStop", "autoplayPause", "autoplayResume", "autoplayTimeLeft", "beforeDestroy", "beforeInit", "beforeLoopFix", "beforeResize", "beforeSlideChangeStart", "beforeTransitionStart", "breakpoint", "changeDirection", "click", "disable", "doubleTap", "doubleClick", "destroy", "enable", "fromEdge", "hashChange", "hashSet", "init", "keyPress", "lock", "loopFix", "momentumBounce", "navigationHide", "navigationShow", "navigationPrev", "navigationNext", "observerUpdate", "orientationchange", "paginationHide", "paginationRender", "paginationShow", "paginationUpdate", "progress", "reachBeginning", "reachEnd", "realIndexChange", "resize", "scroll", "scrollbarDragEnd", "scrollbarDragMove", "scrollbarDragStart", "setTransition", "setTranslate", "slidesUpdated", "slideChange", "slideChangeTransitionEnd", "slideChangeTransitionStart", "slideNextTransitionEnd", "slideNextTransitionStart", "slidePrevTransitionEnd", "slidePrevTransitionStart", "slideResetTransitionStart", "slideResetTransitionEnd", "sliderMove", "sliderFirstMove", "slidesLengthChange", "slidesGridLengthChange", "snapGridLengthChange", "snapIndexChange", "swiper", "tap", "toEdge", "touchEnd", "touchMove", "touchMoveOpposite", "touchStart", "transitionEnd", "transitionStart", "unlock", "update", "virtualUpdate", "zoomChange"],
29977  setup(props2, _ref) {
29978    let {
29979      slots: originalSlots,
29980      emit: emit2
29981    } = _ref;
29982    const {
29983      tag: Tag,
29984      wrapperTag: WrapperTag
29985    } = props2;
29986    const containerClasses = ref("swiper");
29987    const virtualData = ref(null);
29988    const breakpointChanged = ref(false);
29989    const initializedRef = ref(false);
29990    const swiperElRef = ref(null);
29991    const swiperRef = ref(null);
29992    const oldPassedParamsRef = ref(null);
29993    const slidesRef = {
29994      value: []
29995    };
29996    const oldSlidesRef = {
29997      value: []
29998    };
29999    const nextElRef = ref(null);
30000    const prevElRef = ref(null);
30001    const paginationElRef = ref(null);
30002    const scrollbarElRef = ref(null);
30003    const {
30004      params: swiperParams,
30005      passedParams
30006    } = getParams(props2);
30007    getChildren(originalSlots, slidesRef, oldSlidesRef);
30008    oldPassedParamsRef.value = passedParams;
30009    oldSlidesRef.value = slidesRef.value;
30010    const onBeforeBreakpoint = () => {
30011      getChildren(originalSlots, slidesRef, oldSlidesRef);
30012      breakpointChanged.value = true;
30013    };
30014    swiperParams.onAny = function(event) {
30015      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
30016        args[_key - 1] = arguments[_key];
30017      }
30018      emit2(event, ...args);
30019    };
30020    Object.assign(swiperParams.on, {
30021      _beforeBreakpoint: onBeforeBreakpoint,
30022      _containerClasses(swiper, classes2) {
30023        containerClasses.value = classes2;
30024      }
30025    });
30026    const passParams = {
30027      ...swiperParams
30028    };
30029    delete passParams.wrapperClass;
30030    swiperRef.value = new Swiper$1(passParams);
30031    if (swiperRef.value.virtual && swiperRef.value.params.virtual.enabled) {
30032      swiperRef.value.virtual.slides = slidesRef.value;
30033      const extendWith = {
30034        cache: false,
30035        slides: slidesRef.value,
30036        renderExternal: (data) => {
30037          virtualData.value = data;
30038        },
30039        renderExternalUpdate: false
30040      };
30041      extend$1(swiperRef.value.params.virtual, extendWith);
30042      extend$1(swiperRef.value.originalParams.virtual, extendWith);
30043    }
30044    onUpdated(() => {
30045      if (!initializedRef.value && swiperRef.value) {
30046        swiperRef.value.emitSlidesClasses();
30047        initializedRef.value = true;
30048      }
30049      const {
30050        passedParams: newPassedParams
30051      } = getParams(props2);
30052      const changedParams = getChangedParams(newPassedParams, oldPassedParamsRef.value, slidesRef.value, oldSlidesRef.value, (c) => c.props && c.props.key);
30053      oldPassedParamsRef.value = newPassedParams;
30054      if ((changedParams.length || breakpointChanged.value) && swiperRef.value && !swiperRef.value.destroyed) {
30055        updateSwiper({
30056          swiper: swiperRef.value,
30057          slides: slidesRef.value,
30058          passedParams: newPassedParams,
30059          changedParams,
30060          nextEl: nextElRef.value,
30061          prevEl: prevElRef.value,
30062          scrollbarEl: scrollbarElRef.value,
30063          paginationEl: paginationElRef.value
30064        });
30065      }
30066      breakpointChanged.value = false;
30067    });
30068    provide("swiper", swiperRef);
30069    watch(virtualData, () => {
30070      nextTick$1(() => {
30071        updateOnVirtualData(swiperRef.value);
30072      });
30073    });
30074    onMounted(() => {
30075      if (!swiperElRef.value) return;
30076      mountSwiper({
30077        el: swiperElRef.value,
30078        nextEl: nextElRef.value,
30079        prevEl: prevElRef.value,
30080        paginationEl: paginationElRef.value,
30081        scrollbarEl: scrollbarElRef.value,
30082        swiper: swiperRef.value
30083      }, swiperParams);
30084      emit2("swiper", swiperRef.value);
30085    });
30086    onBeforeUnmount(() => {
30087      if (swiperRef.value && !swiperRef.value.destroyed) {
30088        swiperRef.value.destroy(true, false);
30089      }
30090    });
30091    function renderSlides(slides) {
30092      if (swiperParams.virtual) {
30093        return renderVirtual(swiperRef, slides, virtualData.value);
30094      }
30095      slides.forEach((slide2, index2) => {
30096        if (!slide2.props) slide2.props = {};
30097        slide2.props.swiperRef = swiperRef;
30098        slide2.props.swiperSlideIndex = index2;
30099      });
30100      return slides;
30101    }
30102    return () => {
30103      const {
30104        slides,
30105        slots
30106      } = getChildren(originalSlots, slidesRef, oldSlidesRef);
30107      return h(Tag, {
30108        ref: swiperElRef,
30109        class: uniqueClasses(containerClasses.value)
30110      }, [slots["container-start"], h(WrapperTag, {
30111        class: wrapperClass(swiperParams.wrapperClass)
30112      }, [slots["wrapper-start"], renderSlides(slides), slots["wrapper-end"]]), needsNavigation(props2) && [h("div", {
30113        ref: prevElRef,
30114        class: "swiper-button-prev"
30115      }), h("div", {
30116        ref: nextElRef,
30117        class: "swiper-button-next"
30118      })], needsScrollbar(props2) && h("div", {
30119        ref: scrollbarElRef,
30120        class: "swiper-scrollbar"
30121      }), needsPagination(props2) && h("div", {
30122        ref: paginationElRef,
30123        class: "swiper-pagination"
30124      }), slots["container-end"]]);
30125    };
30126  }
30127};
30128const SwiperSlide = {
30129  name: "SwiperSlide",
30130  props: {
30131    tag: {
30132      type: String,
30133      default: "div"
30134    },
30135    swiperRef: {
30136      type: Object,
30137      required: false
30138    },
30139    swiperSlideIndex: {
30140      type: Number,
30141      default: void 0,
30142      required: false
30143    },
30144    zoom: {
30145      type: Boolean,
30146      default: void 0,
30147      required: false
30148    },
30149    lazy: {
30150      type: Boolean,
30151      default: false,
30152      required: false
30153    },
30154    virtualIndex: {
30155      type: [String, Number],
30156      default: void 0
30157    }
30158  },
30159  setup(props2, _ref) {
30160    let {
30161      slots
30162    } = _ref;
30163    let eventAttached = false;
30164    const {
30165      swiperRef
30166    } = props2;
30167    const slideElRef = ref(null);
30168    const slideClasses = ref("swiper-slide");
30169    const lazyLoaded = ref(false);
30170    function updateClasses(swiper, el, classNames) {
30171      if (el === slideElRef.value) {
30172        slideClasses.value = classNames;
30173      }
30174    }
30175    onMounted(() => {
30176      if (!swiperRef || !swiperRef.value) return;
30177      swiperRef.value.on("_slideClass", updateClasses);
30178      eventAttached = true;
30179    });
30180    onBeforeUpdate(() => {
30181      if (eventAttached || !swiperRef || !swiperRef.value) return;
30182      swiperRef.value.on("_slideClass", updateClasses);
30183      eventAttached = true;
30184    });
30185    onUpdated(() => {
30186      if (!slideElRef.value || !swiperRef || !swiperRef.value) return;
30187      if (typeof props2.swiperSlideIndex !== "undefined") {
30188        slideElRef.value.swiperSlideIndex = props2.swiperSlideIndex;
30189      }
30190      if (swiperRef.value.destroyed) {
30191        if (slideClasses.value !== "swiper-slide") {
30192          slideClasses.value = "swiper-slide";
30193        }
30194      }
30195    });
30196    onBeforeUnmount(() => {
30197      if (!swiperRef || !swiperRef.value) return;
30198      swiperRef.value.off("_slideClass", updateClasses);
30199    });
30200    const slideData = computed(() => ({
30201      isActive: slideClasses.value.indexOf("swiper-slide-active") >= 0,
30202      isVisible: slideClasses.value.indexOf("swiper-slide-visible") >= 0,
30203      isPrev: slideClasses.value.indexOf("swiper-slide-prev") >= 0,
30204      isNext: slideClasses.value.indexOf("swiper-slide-next") >= 0
30205    }));
30206    provide("swiperSlide", slideData);
30207    const onLoad2 = () => {
30208      lazyLoaded.value = true;
30209    };
30210    return () => {
30211      return h(props2.tag, {
30212        class: uniqueClasses(`${slideClasses.value}`),
30213        ref: slideElRef,
30214        "data-swiper-slide-index": typeof props2.virtualIndex === "undefined" && swiperRef && swiperRef.value && swiperRef.value.params.loop ? props2.swiperSlideIndex : props2.virtualIndex,
30215        onLoadCapture: onLoad2
30216      }, props2.zoom ? h("div", {
30217        class: "swiper-zoom-container",
30218        "data-swiper-zoom": typeof props2.zoom === "number" ? props2.zoom : void 0
30219      }, [slots.default && slots.default(slideData.value), props2.lazy && !lazyLoaded.value && h("div", {
30220        class: "swiper-lazy-preloader"
30221      })]) : [slots.default && slots.default(slideData.value), props2.lazy && !lazyLoaded.value && h("div", {
30222        class: "swiper-lazy-preloader"
30223      })]);
30224    };
30225  }
30226};
30227const breadcrumbExtension = (el, binding) => {
30228  if (binding.value) {
30229    if (binding.value.label && binding.value.url) {
30230      store.commit(`${ENVIRONMENT_TYPES.NAME}/${ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_BREADCRUMB_EXTENSION}`, {
30231        [ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION]: binding.value
30232      });
30233    }
30234  }
30235};
30236const anchorScrollIntoView = (el, binding) => {
30237  if (window.location.hash === binding.value) {
30238    requestAnimationFrame(() => {
30239      el.scrollIntoView({ behavior: "smooth" });
30240    });
30241  }
30242};
30243const hideCookieConsent = () => {
30244  store.commit(`${CONSENT_TYPES.NAME}/${CONSENT_TYPES.mutations.CONSENT_SET_DONE}`, {
30245    [CONSENT_TYPES.state.CONSENT_DONE]: true
30246  });
30247};
30248const lazy = (fn) => {
30249  let called = false;
30250  let result;
30251  return () => {
30252    if (!called) {
30253      called = true;
30254      result = fn();
30255    }
30256    return result;
30257  };
30258};
30259class Env {
30260  static isServer() {
30261    return typeof document === "undefined";
30262  }
30263}
30264function createMapScript(options2) {
30265  const googleMapScript = document.createElement("SCRIPT");
30266  if (typeof options2 !== "object") {
30267    throw new Error("options should  be an object");
30268  }
30269  if (Array.prototype.isPrototypeOf(options2.libraries)) {
30270    options2.libraries = options2.libraries.join(",");
30271  }
30272  options2["callback"] = "vueGoogleMapsInit";
30273  let baseUrl = "https://maps.googleapis.com/maps/api/js?";
30274  let url = baseUrl + Object.keys(options2).map((key) => encodeURIComponent(key) + "=" + encodeURIComponent(options2[key])).join("&");
30275  googleMapScript.setAttribute("src", url);
30276  googleMapScript.setAttribute("async", "");
30277  googleMapScript.setAttribute("defer", "");
30278  return googleMapScript;
30279}
30280let isApiSetUp = false;
30281function loadGMapApi(options2) {
30282  if (Env.isServer()) {
30283    return;
30284  }
30285  if (!isApiSetUp) {
30286    isApiSetUp = true;
30287    const googleMapScript = createMapScript(options2);
30288    document.head.appendChild(googleMapScript);
30289  } else {
30290    throw new Error("You already started the loading of google maps");
30291  }
30292}
30293const bindEvents = (vueInst, googleMapsInst, events2) => {
30294  for (let eventName of events2) {
30295    const propName = `on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`.replace(
30296      /[-_]+(.)?/g,
30297      (_, c) => c ? c.toUpperCase() : ""
30298    );
30299    if (vueInst.$props[propName] || vueInst.$attrs[propName]) {
30300      googleMapsInst.addListener(eventName, (ev) => {
30301        vueInst.$emit(eventName, ev);
30302      });
30303    } else if (vueInst.$gmapOptions.autobindAllEvents || vueInst.$attrs[eventName]) {
30304      googleMapsInst.addListener(eventName, (ev) => {
30305        vueInst.$emit(eventName, ev);
30306      });
30307    }
30308  }
30309};
30310function WatchPrimitiveProperties(vueInst, propertiesToTrack, handler, immediate = false) {
30311  let isHandled = false;
30312  function requestHandle() {
30313    if (!isHandled) {
30314      isHandled = true;
30315      vueInst.$nextTick(() => {
30316        isHandled = false;
30317        handler();
30318      });
30319    }
30320  }
30321  for (let prop of propertiesToTrack) {
30322    vueInst.$watch(prop, requestHandle, { immediate });
30323  }
30324}
30325class Str {
30326  static capitalizeFirstLetter(string) {
30327    return string.charAt(0).toUpperCase() + string.slice(1);
30328  }
30329}
30330function getPropsValues(vueInst, props2) {
30331  return Object.keys(props2).reduce((acc, prop) => {
30332    if (vueInst[prop] !== void 0) {
30333      acc[prop] = vueInst[prop];
30334    }
30335    return acc;
30336  }, {});
30337}
30338function bindProps(vueInst, googleMapsInst, props2) {
30339  for (let attribute in props2) {
30340    let { twoWay, type, trackProperties, noBind } = props2[attribute];
30341    if (noBind) continue;
30342    const setMethodName = "set" + Str.capitalizeFirstLetter(attribute);
30343    const getMethodName = "get" + Str.capitalizeFirstLetter(attribute);
30344    const eventName = attribute.toLowerCase() + "_changed";
30345    const initialValue = vueInst[attribute];
30346    if (typeof googleMapsInst[setMethodName] === "undefined") {
30347      throw new Error(
30348        `${setMethodName} is not a method of (the Maps object corresponding to) ${vueInst.$options._componentTag}`
30349      );
30350    }
30351    if (type !== Object || !trackProperties) {
30352      vueInst.$watch(
30353        attribute,
30354        () => {
30355          const attributeValue = vueInst[attribute];
30356          googleMapsInst[setMethodName](attributeValue);
30357        },
30358        {
30359          immediate: typeof initialValue !== "undefined",
30360          deep: type === Object
30361        }
30362      );
30363    } else {
30364      WatchPrimitiveProperties(
30365        vueInst,
30366        trackProperties.map((prop) => `${attribute}.${prop}`),
30367        () => {
30368          googleMapsInst[setMethodName](vueInst[attribute]);
30369        },
30370        vueInst[attribute] !== void 0
30371      );
30372    }
30373    if (twoWay && (vueInst.$gmapOptions.autobindAllEvents || vueInst.$attrs[eventName])) {
30374      googleMapsInst.addListener(eventName, () => {
30375        vueInst.$emit(eventName, googleMapsInst[getMethodName]());
30376      });
30377    }
30378  }
30379}
30380const MapElementMixin = {
30381  inject: {
30382    $mapPromise: { default: "abcdef" }
30383  },
30384  provide() {
30385    this.$mapPromise.then((map) => {
30386      this.$map = map;
30387    });
30388    return {};
30389  }
30390};
30391function buildComponent(options2) {
30392  const { mappedProps: mappedProps2, name, ctr, ctrArgs, events: events2, beforeCreate, afterCreate, props: props2, ...rest } = options2;
30393  const promiseName = `$${name}Promise`;
30394  const instanceName = `$${name}Object`;
30395  assert(!(rest.props instanceof Array), "`props` should be an object, not Array");
30396  return {
30397    ...typeof GENERATE_DOC !== "undefined" ? { $vgmOptions: options2 } : {},
30398    mixins: [MapElementMixin],
30399    props: {
30400      ...props2,
30401      ...mappedPropsToVueProps(mappedProps2)
30402    },
30403    render() {
30404      return "";
30405    },
30406    provide() {
30407      const promise = this.$mapPromise.then((map) => {
30408        this.$map = map;
30409        const options3 = {
30410          ...this.options,
30411          map,
30412          ...getPropsValues(this, mappedProps2)
30413        };
30414        delete options3.options;
30415        if (beforeCreate) {
30416          const result = beforeCreate.bind(this)(options3);
30417          if (result instanceof Promise) {
30418            return result.then(() => ({ options: options3 }));
30419          }
30420        }
30421        return { options: options3 };
30422      }).then(({ options: options3 }) => {
30423        const ConstructorObject = ctr();
30424        this[instanceName] = ctrArgs ? new (Function.prototype.bind.call(
30425          ConstructorObject,
30426          null,
30427          ...ctrArgs(options3, getPropsValues(this, props2 || {}))
30428        ))() : new ConstructorObject(options3);
30429        bindProps(this, this[instanceName], mappedProps2);
30430        bindEvents(this, this[instanceName], events2);
30431        if (afterCreate) {
30432          afterCreate.bind(this)(this[instanceName]);
30433        }
30434        return this[instanceName];
30435      });
30436      this[promiseName] = promise;
30437      return { [promiseName]: promise };
30438    },
30439    unmounted() {
30440      if (this[instanceName] && this[instanceName].setMap) {
30441        this[instanceName].setMap(null);
30442      }
30443    },
30444    ...rest
30445  };
30446}
30447function assert(v, message) {
30448  if (!v) throw new Error(message);
30449}
30450function mappedPropsToVueProps(mappedProps2) {
30451  return Object.entries(mappedProps2).map(([key, prop]) => {
30452    const value = {};
30453    if ("type" in prop) value.type = prop.type;
30454    if ("default" in prop) value.default = prop.default;
30455    if ("required" in prop) value.required = prop.required;
30456    return [key, value];
30457  }).reduce((acc, [key, val]) => {
30458    acc[key] = val;
30459    return acc;
30460  }, {});
30461}
30462const props$9 = {
30463  draggable: {
30464    type: Boolean
30465  },
30466  editable: {
30467    type: Boolean
30468  },
30469  options: {
30470    twoWay: false,
30471    type: Object
30472  },
30473  path: {
30474    type: Array,
30475    twoWay: true
30476  }
30477};
30478const events$8 = [
30479  "click",
30480  "dblclick",
30481  "drag",
30482  "dragend",
30483  "dragstart",
30484  "mousedown",
30485  "mousemove",
30486  "mouseout",
30487  "mouseover",
30488  "mouseup",
30489  "rightclick"
30490];
30491const Polyline = buildComponent({
30492  mappedProps: props$9,
30493  props: {
30494    deepWatch: {
30495      type: Boolean,
30496      default: false
30497    }
30498  },
30499  events: events$8,
30500  name: "polyline",
30501  ctr: () => google.maps.Polyline,
30502  emits: events$8,
30503  afterCreate(inst) {
30504    let clearEvents = () => {
30505    };
30506    events$8.forEach((event) => {
30507      inst.addListener(event, (payload) => {
30508        this.$emit(event, payload);
30509      });
30510    });
30511    this.$watch(
30512      "path",
30513      (path) => {
30514        if (path) {
30515          clearEvents();
30516          this.$polylineObject.setPath(path);
30517          const mvcPath = this.$polylineObject.getPath();
30518          const eventListeners = [];
30519          const updatePaths = () => {
30520            this.$emit("path_changed", this.$polylineObject.getPath());
30521          };
30522          eventListeners.push([mvcPath, mvcPath.addListener("insert_at", updatePaths)]);
30523          eventListeners.push([mvcPath, mvcPath.addListener("remove_at", updatePaths)]);
30524          eventListeners.push([mvcPath, mvcPath.addListener("set_at", updatePaths)]);
30525          clearEvents = () => {
30526            eventListeners.map(
30527              ([obj, listenerHandle]) => google.maps.event.removeListener(listenerHandle)
30528            );
30529          };
30530        }
30531      },
30532      {
30533        deep: this.deepWatch,
30534        immediate: true
30535      }
30536    );
30537  }
30538});
30539const props$8 = {
30540  draggable: {
30541    type: Boolean
30542  },
30543  editable: {
30544    type: Boolean
30545  },
30546  options: {
30547    type: Object
30548  },
30549  path: {
30550    type: Array,
30551    twoWay: true,
30552    noBind: true
30553  },
30554  paths: {
30555    type: Array,
30556    twoWay: true,
30557    noBind: true
30558  }
30559};
30560const events$7 = [
30561  "click",
30562  "dblclick",
30563  "drag",
30564  "dragend",
30565  "dragstart",
30566  "mousedown",
30567  "mousemove",
30568  "mouseout",
30569  "mouseover",
30570  "mouseup",
30571  "rightclick",
30572  "paths_changed"
30573];
30574const Polygon = buildComponent({
30575  props: {
30576    deepWatch: {
30577      type: Boolean,
30578      default: false
30579    }
30580  },
30581  events: events$7,
30582  mappedProps: props$8,
30583  name: "polygon",
30584  ctr: () => google.maps.Polygon,
30585  emits: events$7,
30586  beforeCreate(options2) {
30587    if (!options2.path) delete options2.path;
30588    if (!options2.paths) delete options2.paths;
30589  },
30590  afterCreate(inst) {
30591    let clearEvents = () => {
30592    };
30593    events$7.forEach((event) => {
30594      inst.addListener(event, (payload) => {
30595        this.$emit(event, payload);
30596      });
30597    });
30598    this.$watch(
30599      "paths",
30600      (paths) => {
30601        if (paths) {
30602          clearEvents();
30603          inst.setPaths(paths);
30604          const updatePaths = () => {
30605            this.$emit("paths_changed", inst.getPaths());
30606          };
30607          const eventListeners = [];
30608          const mvcArray = inst.getPaths();
30609          for (let i = 0; i < mvcArray.getLength(); i++) {
30610            let mvcPath = mvcArray.getAt(i);
30611            eventListeners.push([mvcPath, mvcPath.addListener("insert_at", updatePaths)]);
30612            eventListeners.push([mvcPath, mvcPath.addListener("remove_at", updatePaths)]);
30613            eventListeners.push([mvcPath, mvcPath.addListener("set_at", updatePaths)]);
30614          }
30615          eventListeners.push([mvcArray, mvcArray.addListener("insert_at", updatePaths)]);
30616          eventListeners.push([mvcArray, mvcArray.addListener("remove_at", updatePaths)]);
30617          eventListeners.push([mvcArray, mvcArray.addListener("set_at", updatePaths)]);
30618          clearEvents = () => {
30619            eventListeners.map(
30620              ([obj, listenerHandle]) => google.maps.event.removeListener(listenerHandle)
30621            );
30622          };
30623        }
30624      },
30625      {
30626        deep: this.deepWatch,
30627        immediate: true
30628      }
30629    );
30630    this.$watch(
30631      "path",
30632      (path) => {
30633        if (path) {
30634          clearEvents();
30635          inst.setPaths(path);
30636          const mvcPath = inst.getPath();
30637          const eventListeners = [];
30638          const updatePaths = () => {
30639            this.$emit("path_changed", inst.getPath());
30640          };
30641          eventListeners.push([mvcPath, mvcPath.addListener("insert_at", updatePaths)]);
30642          eventListeners.push([mvcPath, mvcPath.addListener("remove_at", updatePaths)]);
30643          eventListeners.push([mvcPath, mvcPath.addListener("set_at", updatePaths)]);
30644          clearEvents = () => {
30645            eventListeners.map(
30646              ([obj, listenerHandle]) => google.maps.event.removeListener(listenerHandle)
30647            );
30648          };
30649        }
30650      },
30651      {
30652        deep: this.deepWatch,
30653        immediate: true
30654      }
30655    );
30656  }
30657});
30658const props$7 = {
30659  center: {
30660    type: Object,
30661    twoWay: true,
30662    required: true
30663  },
30664  radius: {
30665    type: Number,
30666    twoWay: true
30667  },
30668  draggable: {
30669    type: Boolean,
30670    default: false
30671  },
30672  editable: {
30673    type: Boolean,
30674    default: false
30675  },
30676  options: {
30677    type: Object,
30678    twoWay: false
30679  }
30680};
30681const events$6 = [
30682  "click",
30683  "dblclick",
30684  "drag",
30685  "dragend",
30686  "dragstart",
30687  "mousedown",
30688  "mousemove",
30689  "mouseout",
30690  "mouseover",
30691  "mouseup",
30692  "rightclick"
30693];
30694const Circle = buildComponent({
30695  mappedProps: props$7,
30696  name: "circle",
30697  ctr: () => google.maps.Circle,
30698  events: events$6,
30699  emits: events$6,
30700  afterCreate(inst) {
30701    events$6.forEach((event) => {
30702      inst.addListener(event, (payload) => {
30703        this.$emit(event, payload);
30704      });
30705    });
30706  }
30707});
30708const props$6 = {
30709  bounds: {
30710    type: Object,
30711    twoWay: true
30712  },
30713  draggable: {
30714    type: Boolean,
30715    default: false
30716  },
30717  editable: {
30718    type: Boolean,
30719    default: false
30720  },
30721  options: {
30722    type: Object,
30723    twoWay: false
30724  }
30725};
30726const events$5 = [
30727  "click",
30728  "dblclick",
30729  "drag",
30730  "dragend",
30731  "dragstart",
30732  "mousedown",
30733  "mousemove",
30734  "mouseout",
30735  "mouseover",
30736  "mouseup",
30737  "rightclick"
30738];
30739const Rectangle = buildComponent({
30740  mappedProps: props$6,
30741  name: "rectangle",
30742  ctr: () => google.maps.Rectangle,
30743  events: events$5,
30744  emits: events$5,
30745  afterCreate(inst) {
30746    events$5.forEach((event) => {
30747      inst.addListener(event, (payload) => {
30748        this.$emit(event, payload);
30749      });
30750    });
30751  }
30752});
30753const props$5 = {
30754  animation: {
30755    twoWay: true,
30756    type: Number
30757  },
30758  attribution: {
30759    type: Object
30760  },
30761  clickable: {
30762    type: Boolean,
30763    twoWay: true,
30764    default: true
30765  },
30766  cursor: {
30767    type: String,
30768    twoWay: true
30769  },
30770  draggable: {
30771    type: Boolean,
30772    twoWay: true,
30773    default: false
30774  },
30775  icon: {
30776    twoWay: true
30777  },
30778  label: {},
30779  opacity: {
30780    type: Number,
30781    default: 1
30782  },
30783  options: {
30784    type: Object
30785  },
30786  place: {
30787    type: Object
30788  },
30789  position: {
30790    type: Object,
30791    twoWay: true
30792  },
30793  shape: {
30794    type: Object,
30795    twoWay: true
30796  },
30797  title: {
30798    type: String,
30799    twoWay: true
30800  },
30801  zIndex: {
30802    type: Number,
30803    twoWay: true
30804  },
30805  visible: {
30806    twoWay: true,
30807    default: true
30808  }
30809};
30810const events$4 = [
30811  "click",
30812  "rightclick",
30813  "dblclick",
30814  "drag",
30815  "dragstart",
30816  "dragend",
30817  "mouseup",
30818  "mousedown",
30819  "mouseover",
30820  "mouseout"
30821];
30822const _sfc_main$1C = buildComponent({
30823  mappedProps: props$5,
30824  events: events$4,
30825  name: "marker",
30826  ctr: () => google.maps.Marker,
30827  inject: {
30828    $clusterPromise: {
30829      default: null
30830    }
30831  },
30832  emits: events$4,
30833  unmounted() {
30834    if (!this.$markerObject) {
30835      return;
30836    }
30837    if (this.$clusterObject) {
30838      this.$clusterObject.removeMarker(this.$markerObject, true);
30839    } else {
30840      this.$markerObject.setMap(null);
30841    }
30842  },
30843  beforeCreate(options2) {
30844    if (this.$clusterPromise) {
30845      options2.map = null;
30846    }
30847    return this.$clusterPromise;
30848  },
30849  afterCreate(inst) {
30850    events$4.forEach((event) => {
30851      inst.addListener(event, (payload) => {
30852        this.$emit(event, payload);
30853      });
30854    });
30855    if (this.$clusterPromise) {
30856      this.$clusterPromise.then((co) => {
30857        this.$clusterObject = co;
30858        co.addMarker(inst);
30859      });
30860    }
30861  }
30862});
30863function _sfc_render$1A(_ctx, _cache, $props, $setup, $data, $options) {
30864  return openBlock(), createElementBlock("div", {
30865    onClick: _cache[0] || (_cache[0] = () => {
30866      console.log("sdfsd");
30867    })
30868  }, [
30869    renderSlot(_ctx.$slots, "default")
30870  ]);
30871}
30872const Marker = /* @__PURE__ */ _export_sfc(_sfc_main$1C, [["render", _sfc_render$1A]]);
30873var fastDeepEqual;
30874var hasRequiredFastDeepEqual;
30875function requireFastDeepEqual() {
30876  if (hasRequiredFastDeepEqual) return fastDeepEqual;
30877  hasRequiredFastDeepEqual = 1;
30878  fastDeepEqual = function equal2(a, b) {
30879    if (a === b) return true;
30880    if (a && b && typeof a == "object" && typeof b == "object") {
30881      if (a.constructor !== b.constructor) return false;
30882      var length, i, keys;
30883      if (Array.isArray(a)) {
30884        length = a.length;
30885        if (length != b.length) return false;
30886        for (i = length; i-- !== 0; )
30887          if (!equal2(a[i], b[i])) return false;
30888        return true;
30889      }
30890      if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
30891      if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();
30892      if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();
30893      keys = Object.keys(a);
30894      length = keys.length;
30895      if (length !== Object.keys(b).length) return false;
vendor: 22,384 bytes, lines 30896-31540
30896      for (i = length; i-- !== 0; )
30897        if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
30898      for (i = length; i-- !== 0; ) {
30899        var key = keys[i];
30900        if (!equal2(a[key], b[key])) return false;
30901      }
30902      return true;
30903    }
30904    return a !== a && b !== b;
30905  };
30906  return fastDeepEqual;
30907}
30908var fastDeepEqualExports = requireFastDeepEqual();
30909const equal = /* @__PURE__ */ getDefaultExportFromCjs(fastDeepEqualExports);
30910const ARRAY_TYPES = [
30911  Int8Array,
30912  Uint8Array,
30913  Uint8ClampedArray,
30914  Int16Array,
30915  Uint16Array,
30916  Int32Array,
30917  Uint32Array,
30918  Float32Array,
30919  Float64Array
30920];
30921const VERSION = 1;
30922const HEADER_SIZE = 8;
30923class KDBush {
30924  /**
30925   * Creates an index from raw `ArrayBuffer` data.
30926   * @param {ArrayBuffer} data
30927   */
30928  static from(data) {
30929    if (!(data instanceof ArrayBuffer)) {
30930      throw new Error("Data must be an instance of ArrayBuffer.");
30931    }
30932    const [magic, versionAndType] = new Uint8Array(data, 0, 2);
30933    if (magic !== 219) {
30934      throw new Error("Data does not appear to be in a KDBush format.");
30935    }
30936    const version2 = versionAndType >> 4;
30937    if (version2 !== VERSION) {
30938      throw new Error(`Got v${version2} data when expected v${VERSION}.`);
30939    }
30940    const ArrayType = ARRAY_TYPES[versionAndType & 15];
30941    if (!ArrayType) {
30942      throw new Error("Unrecognized array type.");
30943    }
30944    const [nodeSize] = new Uint16Array(data, 2, 1);
30945    const [numItems] = new Uint32Array(data, 4, 1);
30946    return new KDBush(numItems, nodeSize, ArrayType, data);
30947  }
30948  /**
30949   * Creates an index that will hold a given number of items.
30950   * @param {number} numItems
30951   * @param {number} [nodeSize=64] Size of the KD-tree node (64 by default).
30952   * @param {TypedArrayConstructor} [ArrayType=Float64Array] The array type used for coordinates storage (`Float64Array` by default).
30953   * @param {ArrayBuffer} [data] (For internal use only)
30954   */
30955  constructor(numItems, nodeSize = 64, ArrayType = Float64Array, data) {
30956    if (isNaN(numItems) || numItems < 0) throw new Error(`Unpexpected numItems value: ${numItems}.`);
30957    this.numItems = +numItems;
30958    this.nodeSize = Math.min(Math.max(+nodeSize, 2), 65535);
30959    this.ArrayType = ArrayType;
30960    this.IndexArrayType = numItems < 65536 ? Uint16Array : Uint32Array;
30961    const arrayTypeIndex = ARRAY_TYPES.indexOf(this.ArrayType);
30962    const coordsByteSize = numItems * 2 * this.ArrayType.BYTES_PER_ELEMENT;
30963    const idsByteSize = numItems * this.IndexArrayType.BYTES_PER_ELEMENT;
30964    const padCoords = (8 - idsByteSize % 8) % 8;
30965    if (arrayTypeIndex < 0) {
30966      throw new Error(`Unexpected typed array class: ${ArrayType}.`);
30967    }
30968    if (data && data instanceof ArrayBuffer) {
30969      this.data = data;
30970      this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);
30971      this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);
30972      this._pos = numItems * 2;
30973      this._finished = true;
30974    } else {
30975      this.data = new ArrayBuffer(HEADER_SIZE + coordsByteSize + idsByteSize + padCoords);
30976      this.ids = new this.IndexArrayType(this.data, HEADER_SIZE, numItems);
30977      this.coords = new this.ArrayType(this.data, HEADER_SIZE + idsByteSize + padCoords, numItems * 2);
30978      this._pos = 0;
30979      this._finished = false;
30980      new Uint8Array(this.data, 0, 2).set([219, (VERSION << 4) + arrayTypeIndex]);
30981      new Uint16Array(this.data, 2, 1)[0] = nodeSize;
30982      new Uint32Array(this.data, 4, 1)[0] = numItems;
30983    }
30984  }
30985  /**
30986   * Add a point to the index.
30987   * @param {number} x
30988   * @param {number} y
30989   * @returns {number} An incremental index associated with the added item (starting from `0`).
30990   */
30991  add(x, y) {
30992    const index2 = this._pos >> 1;
30993    this.ids[index2] = index2;
30994    this.coords[this._pos++] = x;
30995    this.coords[this._pos++] = y;
30996    return index2;
30997  }
30998  /**
30999   * Perform indexing of the added points.
31000   */
31001  finish() {
31002    const numAdded = this._pos >> 1;
31003    if (numAdded !== this.numItems) {
31004      throw new Error(`Added ${numAdded} items when expected ${this.numItems}.`);
31005    }
31006    sort(this.ids, this.coords, this.nodeSize, 0, this.numItems - 1, 0);
31007    this._finished = true;
31008    return this;
31009  }
31010  /**
31011   * Search the index for items within a given bounding box.
31012   * @param {number} minX
31013   * @param {number} minY
31014   * @param {number} maxX
31015   * @param {number} maxY
31016   * @returns {number[]} An array of indices correponding to the found items.
31017   */
31018  range(minX, minY, maxX, maxY) {
31019    if (!this._finished) throw new Error("Data not yet indexed - call index.finish().");
31020    const { ids, coords, nodeSize } = this;
31021    const stack2 = [0, ids.length - 1, 0];
31022    const result = [];
31023    while (stack2.length) {
31024      const axis = stack2.pop() || 0;
31025      const right = stack2.pop() || 0;
31026      const left = stack2.pop() || 0;
31027      if (right - left <= nodeSize) {
31028        for (let i = left; i <= right; i++) {
31029          const x2 = coords[2 * i];
31030          const y2 = coords[2 * i + 1];
31031          if (x2 >= minX && x2 <= maxX && y2 >= minY && y2 <= maxY) result.push(ids[i]);
31032        }
31033        continue;
31034      }
31035      const m = left + right >> 1;
31036      const x = coords[2 * m];
31037      const y = coords[2 * m + 1];
31038      if (x >= minX && x <= maxX && y >= minY && y <= maxY) result.push(ids[m]);
31039      if (axis === 0 ? minX <= x : minY <= y) {
31040        stack2.push(left);
31041        stack2.push(m - 1);
31042        stack2.push(1 - axis);
31043      }
31044      if (axis === 0 ? maxX >= x : maxY >= y) {
31045        stack2.push(m + 1);
31046        stack2.push(right);
31047        stack2.push(1 - axis);
31048      }
31049    }
31050    return result;
31051  }
31052  /**
31053   * Search the index for items within a given radius.
31054   * @param {number} qx
31055   * @param {number} qy
31056   * @param {number} r Query radius.
31057   * @returns {number[]} An array of indices correponding to the found items.
31058   */
31059  within(qx, qy, r) {
31060    if (!this._finished) throw new Error("Data not yet indexed - call index.finish().");
31061    const { ids, coords, nodeSize } = this;
31062    const stack2 = [0, ids.length - 1, 0];
31063    const result = [];
31064    const r2 = r * r;
31065    while (stack2.length) {
31066      const axis = stack2.pop() || 0;
31067      const right = stack2.pop() || 0;
31068      const left = stack2.pop() || 0;
31069      if (right - left <= nodeSize) {
31070        for (let i = left; i <= right; i++) {
31071          if (sqDist(coords[2 * i], coords[2 * i + 1], qx, qy) <= r2) result.push(ids[i]);
31072        }
31073        continue;
31074      }
31075      const m = left + right >> 1;
31076      const x = coords[2 * m];
31077      const y = coords[2 * m + 1];
31078      if (sqDist(x, y, qx, qy) <= r2) result.push(ids[m]);
31079      if (axis === 0 ? qx - r <= x : qy - r <= y) {
31080        stack2.push(left);
31081        stack2.push(m - 1);
31082        stack2.push(1 - axis);
31083      }
31084      if (axis === 0 ? qx + r >= x : qy + r >= y) {
31085        stack2.push(m + 1);
31086        stack2.push(right);
31087        stack2.push(1 - axis);
31088      }
31089    }
31090    return result;
31091  }
31092}
31093function sort(ids, coords, nodeSize, left, right, axis) {
31094  if (right - left <= nodeSize) return;
31095  const m = left + right >> 1;
31096  select(ids, coords, m, left, right, axis);
31097  sort(ids, coords, nodeSize, left, m - 1, 1 - axis);
31098  sort(ids, coords, nodeSize, m + 1, right, 1 - axis);
31099}
31100function select(ids, coords, k, left, right, axis) {
31101  while (right > left) {
31102    if (right - left > 600) {
31103      const n = right - left + 1;
31104      const m = k - left + 1;
31105      const z = Math.log(n);
31106      const s = 0.5 * Math.exp(2 * z / 3);
31107      const sd = 0.5 * Math.sqrt(z * s * (n - s) / n) * (m - n / 2 < 0 ? -1 : 1);
31108      const newLeft = Math.max(left, Math.floor(k - m * s / n + sd));
31109      const newRight = Math.min(right, Math.floor(k + (n - m) * s / n + sd));
31110      select(ids, coords, k, newLeft, newRight, axis);
31111    }
31112    const t = coords[2 * k + axis];
31113    let i = left;
31114    let j = right;
31115    swapItem(ids, coords, left, k);
31116    if (coords[2 * right + axis] > t) swapItem(ids, coords, left, right);
31117    while (i < j) {
31118      swapItem(ids, coords, i, j);
31119      i++;
31120      j--;
31121      while (coords[2 * i + axis] < t) i++;
31122      while (coords[2 * j + axis] > t) j--;
31123    }
31124    if (coords[2 * left + axis] === t) swapItem(ids, coords, left, j);
31125    else {
31126      j++;
31127      swapItem(ids, coords, j, right);
31128    }
31129    if (j <= k) left = j + 1;
31130    if (k <= j) right = j - 1;
31131  }
31132}
31133function swapItem(ids, coords, i, j) {
31134  swap(ids, i, j);
31135  swap(coords, 2 * i, 2 * j);
31136  swap(coords, 2 * i + 1, 2 * j + 1);
31137}
31138function swap(arr, i, j) {
31139  const tmp = arr[i];
31140  arr[i] = arr[j];
31141  arr[j] = tmp;
31142}
31143function sqDist(ax, ay, bx, by) {
31144  const dx = ax - bx;
31145  const dy = ay - by;
31146  return dx * dx + dy * dy;
31147}
31148const defaultOptions = {
31149  minZoom: 0,
31150  // min zoom to generate clusters on
31151  maxZoom: 16,
31152  // max zoom level to cluster the points on
31153  minPoints: 2,
31154  // minimum points to form a cluster
31155  radius: 40,
31156  // cluster radius in pixels
31157  extent: 512,
31158  // tile extent (radius is calculated relative to it)
31159  nodeSize: 64,
31160  // size of the KD-tree leaf node, affects performance
31161  log: false,
31162  // whether to log timing info
31163  // whether to generate numeric ids for input features (in vector tiles)
31164  generateId: false,
31165  // a reduce function for calculating custom cluster properties
31166  reduce: null,
31167  // (accumulated, props) => { accumulated.sum += props.sum; }
31168  // properties to use for individual points when running the reducer
31169  map: (props2) => props2
31170  // props => ({sum: props.my_value})
31171};
31172const fround = Math.fround || /* @__PURE__ */ ((tmp) => (x) => {
31173  tmp[0] = +x;
31174  return tmp[0];
31175})(new Float32Array(1));
31176const OFFSET_ZOOM = 2;
31177const OFFSET_ID = 3;
31178const OFFSET_PARENT = 4;
31179const OFFSET_NUM = 5;
31180const OFFSET_PROP = 6;
31181class Supercluster {
31182  constructor(options2) {
31183    this.options = Object.assign(Object.create(defaultOptions), options2);
31184    this.trees = new Array(this.options.maxZoom + 1);
31185    this.stride = this.options.reduce ? 7 : 6;
31186    this.clusterProps = [];
31187  }
31188  load(points) {
31189    const { log, minZoom, maxZoom } = this.options;
31190    if (log) console.time("total time");
31191    const timerId = `prepare ${points.length} points`;
31192    if (log) console.time(timerId);
31193    this.points = points;
31194    const data = [];
31195    for (let i = 0; i < points.length; i++) {
31196      const p2 = points[i];
31197      if (!p2.geometry) continue;
31198      const [lng, lat] = p2.geometry.coordinates;
31199      const x = fround(lngX(lng));
31200      const y = fround(latY(lat));
31201      data.push(
31202        x,
31203        y,
31204        // projected point coordinates
31205        Infinity,
31206        // the last zoom the point was processed at
31207        i,
31208        // index of the source feature in the original input array
31209        -1,
31210        // parent cluster id
31211        1
31212        // number of points in a cluster
31213      );
31214      if (this.options.reduce) data.push(0);
31215    }
31216    let tree = this.trees[maxZoom + 1] = this._createTree(data);
31217    if (log) console.timeEnd(timerId);
31218    for (let z = maxZoom; z >= minZoom; z--) {
31219      const now2 = +Date.now();
31220      tree = this.trees[z] = this._createTree(this._cluster(tree, z));
31221      if (log) console.log("z%d: %d clusters in %dms", z, tree.numItems, +Date.now() - now2);
31222    }
31223    if (log) console.timeEnd("total time");
31224    return this;
31225  }
31226  getClusters(bbox, zoom) {
31227    let minLng = ((bbox[0] + 180) % 360 + 360) % 360 - 180;
31228    const minLat = Math.max(-90, Math.min(90, bbox[1]));
31229    let maxLng = bbox[2] === 180 ? 180 : ((bbox[2] + 180) % 360 + 360) % 360 - 180;
31230    const maxLat = Math.max(-90, Math.min(90, bbox[3]));
31231    if (bbox[2] - bbox[0] >= 360) {
31232      minLng = -180;
31233      maxLng = 180;
31234    } else if (minLng > maxLng) {
31235      const easternHem = this.getClusters([minLng, minLat, 180, maxLat], zoom);
31236      const westernHem = this.getClusters([-180, minLat, maxLng, maxLat], zoom);
31237      return easternHem.concat(westernHem);
31238    }
31239    const tree = this.trees[this._limitZoom(zoom)];
31240    const ids = tree.range(lngX(minLng), latY(maxLat), lngX(maxLng), latY(minLat));
31241    const data = tree.data;
31242    const clusters = [];
31243    for (const id of ids) {
31244      const k = this.stride * id;
31245      clusters.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);
31246    }
31247    return clusters;
31248  }
31249  getChildren(clusterId) {
31250    const originId = this._getOriginId(clusterId);
31251    const originZoom = this._getOriginZoom(clusterId);
31252    const errorMsg = "No cluster with the specified id.";
31253    const tree = this.trees[originZoom];
31254    if (!tree) throw new Error(errorMsg);
31255    const data = tree.data;
31256    if (originId * this.stride >= data.length) throw new Error(errorMsg);
31257    const r = this.options.radius / (this.options.extent * Math.pow(2, originZoom - 1));
31258    const x = data[originId * this.stride];
31259    const y = data[originId * this.stride + 1];
31260    const ids = tree.within(x, y, r);
31261    const children = [];
31262    for (const id of ids) {
31263      const k = id * this.stride;
31264      if (data[k + OFFSET_PARENT] === clusterId) {
31265        children.push(data[k + OFFSET_NUM] > 1 ? getClusterJSON(data, k, this.clusterProps) : this.points[data[k + OFFSET_ID]]);
31266      }
31267    }
31268    if (children.length === 0) throw new Error(errorMsg);
31269    return children;
31270  }
31271  getLeaves(clusterId, limit, offset) {
31272    limit = limit || 10;
31273    offset = offset || 0;
31274    const leaves = [];
31275    this._appendLeaves(leaves, clusterId, limit, offset, 0);
31276    return leaves;
31277  }
31278  getTile(z, x, y) {
31279    const tree = this.trees[this._limitZoom(z)];
31280    const z2 = Math.pow(2, z);
31281    const { extent, radius } = this.options;
31282    const p2 = radius / extent;
31283    const top = (y - p2) / z2;
31284    const bottom = (y + 1 + p2) / z2;
31285    const tile = {
31286      features: []
31287    };
31288    this._addTileFeatures(
31289      tree.range((x - p2) / z2, top, (x + 1 + p2) / z2, bottom),
31290      tree.data,
31291      x,
31292      y,
31293      z2,
31294      tile
31295    );
31296    if (x === 0) {
31297      this._addTileFeatures(
31298        tree.range(1 - p2 / z2, top, 1, bottom),
31299        tree.data,
31300        z2,
31301        y,
31302        z2,
31303        tile
31304      );
31305    }
31306    if (x === z2 - 1) {
31307      this._addTileFeatures(
31308        tree.range(0, top, p2 / z2, bottom),
31309        tree.data,
31310        -1,
31311        y,
31312        z2,
31313        tile
31314      );
31315    }
31316    return tile.features.length ? tile : null;
31317  }
31318  getClusterExpansionZoom(clusterId) {
31319    let expansionZoom = this._getOriginZoom(clusterId) - 1;
31320    while (expansionZoom <= this.options.maxZoom) {
31321      const children = this.getChildren(clusterId);
31322      expansionZoom++;
31323      if (children.length !== 1) break;
31324      clusterId = children[0].properties.cluster_id;
31325    }
31326    return expansionZoom;
31327  }
31328  _appendLeaves(result, clusterId, limit, offset, skipped) {
31329    const children = this.getChildren(clusterId);
31330    for (const child of children) {
31331      const props2 = child.properties;
31332      if (props2 && props2.cluster) {
31333        if (skipped + props2.point_count <= offset) {
31334          skipped += props2.point_count;
31335        } else {
31336          skipped = this._appendLeaves(result, props2.cluster_id, limit, offset, skipped);
31337        }
31338      } else if (skipped < offset) {
31339        skipped++;
31340      } else {
31341        result.push(child);
31342      }
31343      if (result.length === limit) break;
31344    }
31345    return skipped;
31346  }
31347  _createTree(data) {
31348    const tree = new KDBush(data.length / this.stride | 0, this.options.nodeSize, Float32Array);
31349    for (let i = 0; i < data.length; i += this.stride) tree.add(data[i], data[i + 1]);
31350    tree.finish();
31351    tree.data = data;
31352    return tree;
31353  }
31354  _addTileFeatures(ids, data, x, y, z2, tile) {
31355    for (const i of ids) {
31356      const k = i * this.stride;
31357      const isCluster = data[k + OFFSET_NUM] > 1;
31358      let tags, px, py;
31359      if (isCluster) {
31360        tags = getClusterProperties(data, k, this.clusterProps);
31361        px = data[k];
31362        py = data[k + 1];
31363      } else {
31364        const p2 = this.points[data[k + OFFSET_ID]];
31365        tags = p2.properties;
31366        const [lng, lat] = p2.geometry.coordinates;
31367        px = lngX(lng);
31368        py = latY(lat);
31369      }
31370      const f = {
31371        type: 1,
31372        geometry: [[
31373          Math.round(this.options.extent * (px * z2 - x)),
31374          Math.round(this.options.extent * (py * z2 - y))
31375        ]],
31376        tags
31377      };
31378      let id;
31379      if (isCluster || this.options.generateId) {
31380        id = data[k + OFFSET_ID];
31381      } else {
31382        id = this.points[data[k + OFFSET_ID]].id;
31383      }
31384      if (id !== void 0) f.id = id;
31385      tile.features.push(f);
31386    }
31387  }
31388  _limitZoom(z) {
31389    return Math.max(this.options.minZoom, Math.min(Math.floor(+z), this.options.maxZoom + 1));
31390  }
31391  _cluster(tree, zoom) {
31392    const { radius, extent, reduce: reduce2, minPoints } = this.options;
31393    const r = radius / (extent * Math.pow(2, zoom));
31394    const data = tree.data;
31395    const nextData = [];
31396    const stride = this.stride;
31397    for (let i = 0; i < data.length; i += stride) {
31398      if (data[i + OFFSET_ZOOM] <= zoom) continue;
31399      data[i + OFFSET_ZOOM] = zoom;
31400      const x = data[i];
31401      const y = data[i + 1];
31402      const neighborIds = tree.within(data[i], data[i + 1], r);
31403      const numPointsOrigin = data[i + OFFSET_NUM];
31404      let numPoints = numPointsOrigin;
31405      for (const neighborId of neighborIds) {
31406        const k = neighborId * stride;
31407        if (data[k + OFFSET_ZOOM] > zoom) numPoints += data[k + OFFSET_NUM];
31408      }
31409      if (numPoints > numPointsOrigin && numPoints >= minPoints) {
31410        let wx = x * numPointsOrigin;
31411        let wy = y * numPointsOrigin;
31412        let clusterProperties;
31413        let clusterPropIndex = -1;
31414        const id = ((i / stride | 0) << 5) + (zoom + 1) + this.points.length;
31415        for (const neighborId of neighborIds) {
31416          const k = neighborId * stride;
31417          if (data[k + OFFSET_ZOOM] <= zoom) continue;
31418          data[k + OFFSET_ZOOM] = zoom;
31419          const numPoints2 = data[k + OFFSET_NUM];
31420          wx += data[k] * numPoints2;
31421          wy += data[k + 1] * numPoints2;
31422          data[k + OFFSET_PARENT] = id;
31423          if (reduce2) {
31424            if (!clusterProperties) {
31425              clusterProperties = this._map(data, i, true);
31426              clusterPropIndex = this.clusterProps.length;
31427              this.clusterProps.push(clusterProperties);
31428            }
31429            reduce2(clusterProperties, this._map(data, k));
31430          }
31431        }
31432        data[i + OFFSET_PARENT] = id;
31433        nextData.push(wx / numPoints, wy / numPoints, Infinity, id, -1, numPoints);
31434        if (reduce2) nextData.push(clusterPropIndex);
31435      } else {
31436        for (let j = 0; j < stride; j++) nextData.push(data[i + j]);
31437        if (numPoints > 1) {
31438          for (const neighborId of neighborIds) {
31439            const k = neighborId * stride;
31440            if (data[k + OFFSET_ZOOM] <= zoom) continue;
31441            data[k + OFFSET_ZOOM] = zoom;
31442            for (let j = 0; j < stride; j++) nextData.push(data[k + j]);
31443          }
31444        }
31445      }
31446    }
31447    return nextData;
31448  }
31449  // get index of the point from which the cluster originated
31450  _getOriginId(clusterId) {
31451    return clusterId - this.points.length >> 5;
31452  }
31453  // get zoom of the point from which the cluster originated
31454  _getOriginZoom(clusterId) {
31455    return (clusterId - this.points.length) % 32;
31456  }
31457  _map(data, i, clone) {
31458    if (data[i + OFFSET_NUM] > 1) {
31459      const props2 = this.clusterProps[data[i + OFFSET_PROP]];
31460      return clone ? Object.assign({}, props2) : props2;
31461    }
31462    const original = this.points[data[i + OFFSET_ID]].properties;
31463    const result = this.options.map(original);
31464    return clone && result === original ? Object.assign({}, result) : result;
31465  }
31466}
31467function getClusterJSON(data, i, clusterProps) {
31468  return {
31469    type: "Feature",
31470    id: data[i + OFFSET_ID],
31471    properties: getClusterProperties(data, i, clusterProps),
31472    geometry: {
31473      type: "Point",
31474      coordinates: [xLng(data[i]), yLat(data[i + 1])]
31475    }
31476  };
31477}
31478function getClusterProperties(data, i, clusterProps) {
31479  const count = data[i + OFFSET_NUM];
31480  const abbrev = count >= 1e4 ? `${Math.round(count / 1e3)}k` : count >= 1e3 ? `${Math.round(count / 100) / 10}k` : count;
31481  const propIndex = data[i + OFFSET_PROP];
31482  const properties = propIndex === -1 ? {} : Object.assign({}, clusterProps[propIndex]);
31483  return Object.assign(properties, {
31484    cluster: true,
31485    cluster_id: data[i + OFFSET_ID],
31486    point_count: count,
31487    point_count_abbreviated: abbrev
31488  });
31489}
31490function lngX(lng) {
31491  return lng / 360 + 0.5;
31492}
31493function latY(lat) {
31494  const sin = Math.sin(lat * Math.PI / 180);
31495  const y = 0.5 - 0.25 * Math.log((1 + sin) / (1 - sin)) / Math.PI;
31496  return y < 0 ? 0 : y > 1 ? 1 : y;
31497}
31498function xLng(x) {
31499  return (x - 0.5) * 360;
31500}
31501function yLat(y) {
31502  const y2 = (180 - y * 360) * Math.PI / 180;
31503  return 360 * Math.atan(Math.exp(y2)) / Math.PI - 90;
31504}
31505/*! *****************************************************************************
31506Copyright (c) Microsoft Corporation.
31507
31508Permission to use, copy, modify, and/or distribute this software for any
31509purpose with or without fee is hereby granted.
31510
31511THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
31512REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
31513AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
31514INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
31515LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
31516OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
31517PERFORMANCE OF THIS SOFTWARE.
31518***************************************************************************** */
31519function __rest(s, e) {
31520  var t = {};
31521  for (var p2 in s) if (Object.prototype.hasOwnProperty.call(s, p2) && e.indexOf(p2) < 0)
31522    t[p2] = s[p2];
31523  if (s != null && typeof Object.getOwnPropertySymbols === "function")
31524    for (var i = 0, p2 = Object.getOwnPropertySymbols(s); i < p2.length; i++) {
31525      if (e.indexOf(p2[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p2[i]))
31526        t[p2[i]] = s[p2[i]];
31527    }
31528  return t;
31529}
31530class MarkerUtils {
31531  static isAdvancedMarkerAvailable(map) {
31532    return google.maps.marker && map.getMapCapabilities().isAdvancedMarkersAvailable === true;
31533  }
31534  static isAdvancedMarker(marker) {
31535    return google.maps.marker && marker instanceof google.maps.marker.AdvancedMarkerElement;
31536  }
31537  static setMap(marker, map) {
31538    if (this.isAdvancedMarker(marker)) {
31539      marker.map = map;
31540    } else {
31541      marker.setMap(map);
31542    }
31543  }
31544  static getPosition(marker) {
31545    if (this.isAdvancedMarker(marker)) {
31546      if (marker.position) {
31547        if (marker.position instanceof google.maps.LatLng) {
31548          return marker.position;
31549        }
31550        if (marker.position.lat && marker.position.lng) {
31551          return new google.maps.LatLng(marker.position.lat, marker.position.lng);
31552        }
31553      }
31554      return new google.maps.LatLng(null);
31555    }
31556    return marker.getPosition();
31557  }
31558  static getVisible(marker) {
31559    if (this.isAdvancedMarker(marker)) {
31560      return true;
31561    }
31562    return marker.getVisible();
31563  }
31564}
31565class Cluster {
31566  constructor({ markers, position }) {
31567    this.markers = markers;
31568    if (position) {
31569      if (position instanceof google.maps.LatLng) {
31570        this._position = position;
31571      } else {
31572        this._position = new google.maps.LatLng(position);
31573      }
31574    }
31575  }
31576  get bounds() {
31577    if (this.markers.length === 0 && !this._position) {
31578      return;
31579    }
31580    const bounds = new google.maps.LatLngBounds(this._position, this._position);
31581    for (const marker of this.markers) {
31582      bounds.extend(MarkerUtils.getPosition(marker));
31583    }
31584    return bounds;
31585  }
31586  get position() {
31587    return this._position || this.bounds.getCenter();
31588  }
31589  /**
31590   * Get the count of **visible** markers.
31591   */
31592  get count() {
31593    return this.markers.filter((m) => MarkerUtils.getVisible(m)).length;
31594  }
31595  /**
31596   * Add a marker to the cluster.
31597   */
31598  push(marker) {
31599    this.markers.push(marker);
31600  }
31601  /**
31602   * Cleanup references and remove marker from map.
31603   */
31604  delete() {
31605    if (this.marker) {
31606      MarkerUtils.setMap(this.marker, null);
31607      this.marker = void 0;
31608    }
31609    this.markers.length = 0;
31610  }
31611}
31612class AbstractAlgorithm {
31613  constructor({ maxZoom = 16 }) {
31614    this.maxZoom = maxZoom;
31615  }
31616  /**
31617   * Helper function to bypass clustering based upon some map state such as
31618   * zoom, number of markers, etc.
31619   *
31620   * ```typescript
31621   *  cluster({markers, map}: AlgorithmInput): Cluster[] {
31622   *    if (shouldBypassClustering(map)) {
31623   *      return this.noop({markers})
31624   *    }
31625   * }
31626   * ```
31627   */
31628  noop({ markers }) {
31629    return noop(markers);
31630  }
31631}
31632const noop = (markers) => {
31633  const clusters = markers.map((marker) => new Cluster({
31634    position: MarkerUtils.getPosition(marker),
31635    markers: [marker]
31636  }));
31637  return clusters;
31638};
31639class SuperClusterAlgorithm extends AbstractAlgorithm {
31640  constructor(_a) {
31641    var { maxZoom, radius = 60 } = _a, options2 = __rest(_a, ["maxZoom", "radius"]);
31642    super({ maxZoom });
31643    this.state = { zoom: -1 };
31644    this.superCluster = new Supercluster(Object.assign({ maxZoom: this.maxZoom, radius }, options2));
31645  }
31646  calculate(input) {
31647    let changed = false;
31648    const state2 = { zoom: input.map.getZoom() };
31649    if (!equal(input.markers, this.markers)) {
31650      changed = true;
31651      this.markers = [...input.markers];
31652      const points = this.markers.map((marker) => {
31653        const position = MarkerUtils.getPosition(marker);
31654        const coordinates = [position.lng(), position.lat()];
31655        return {
31656          type: "Feature",
31657          geometry: {
31658            type: "Point",
31659            coordinates
31660          },
31661          properties: { marker }
31662        };
31663      });
31664      this.superCluster.load(points);
31665    }
31666    if (!changed) {
31667      if (this.state.zoom <= this.maxZoom || state2.zoom <= this.maxZoom) {
31668        changed = !equal(this.state, state2);
31669      }
31670    }
31671    this.state = state2;
31672    if (changed) {
31673      this.clusters = this.cluster(input);
31674    }
31675    return { clusters: this.clusters, changed };
31676  }
31677  cluster({ map }) {
31678    return this.superCluster.getClusters([-180, -90, 180, 90], Math.round(map.getZoom())).map((feature) => this.transformCluster(feature));
31679  }
31680  transformCluster({ geometry: { coordinates: [lng, lat] }, properties }) {
31681    if (properties.cluster) {
31682      return new Cluster({
31683        markers: this.superCluster.getLeaves(properties.cluster_id, Infinity).map((leaf) => leaf.properties.marker),
31684        position: { lat, lng }
31685      });
31686    }
31687    const marker = properties.marker;
31688    return new Cluster({
31689      markers: [marker],
31690      position: MarkerUtils.getPosition(marker)
31691    });
31692  }
31693}
31694class ClusterStats {
31695  constructor(markers, clusters) {
31696    this.markers = { sum: markers.length };
31697    const clusterMarkerCounts = clusters.map((a) => a.count);
31698    const clusterMarkerSum = clusterMarkerCounts.reduce((a, b) => a + b, 0);
31699    this.clusters = {
31700      count: clusters.length,
31701      markers: {
31702        mean: clusterMarkerSum / clusters.length,
31703        sum: clusterMarkerSum,
31704        min: Math.min(...clusterMarkerCounts),
31705        max: Math.max(...clusterMarkerCounts)
31706      }
31707    };
31708  }
31709}
31710class DefaultRenderer {
31711  /**
31712   * The default render function for the library used by {@link MarkerClusterer}.
31713   *
31714   * Currently set to use the following:
31715   *
31716   * ```typescript
31717   * // change color if this cluster has more markers than the mean cluster
31718   * const color =
31719   *   count > Math.max(10, stats.clusters.markers.mean)
31720   *     ? "#ff0000"
31721   *     : "#0000ff";
31722   *
31723   * // create svg url with fill color
31724   * const svg = window.btoa(`
31725   * <svg fill="${color}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240">
31726   *   <circle cx="120" cy="120" opacity=".6" r="70" />
31727   *   <circle cx="120" cy="120" opacity=".3" r="90" />
31728   *   <circle cx="120" cy="120" opacity=".2" r="110" />
31729   *   <circle cx="120" cy="120" opacity=".1" r="130" />
31730   * </svg>`);
31731   *
31732   * // create marker using svg icon
31733   * return new google.maps.Marker({
31734   *   position,
31735   *   icon: {
31736   *     url: `data:image/svg+xml;base64,${svg}`,
31737   *     scaledSize: new google.maps.Size(45, 45),
31738   *   },
31739   *   label: {
31740   *     text: String(count),
31741   *     color: "rgba(255,255,255,0.9)",
31742   *     fontSize: "12px",
31743   *   },
31744   *   // adjust zIndex to be above other markers
31745   *   zIndex: 1000 + count,
31746   * });
31747   * ```
31748   */
31749  render({ count, position }, stats, map) {
31750    const color = count > Math.max(10, stats.clusters.markers.mean) ? "#ff0000" : "#0000ff";
31751    const svg = `<svg fill="${color}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 240 240" width="50" height="50">
31752<circle cx="120" cy="120" opacity=".6" r="70" />
31753<circle cx="120" cy="120" opacity=".3" r="90" />
31754<circle cx="120" cy="120" opacity=".2" r="110" />
31755<text x="50%" y="50%" style="fill:#fff" text-anchor="middle" font-size="50" dominant-baseline="middle" font-family="roboto,arial,sans-serif">${count}</text>
31756</svg>`;
31757    const title = `Cluster of ${count} markers`, zIndex = Number(google.maps.Marker.MAX_ZINDEX) + count;
31758    if (MarkerUtils.isAdvancedMarkerAvailable(map)) {
31759      const parser = new DOMParser();
31760      const svgEl = parser.parseFromString(svg, "image/svg+xml").documentElement;
31761      svgEl.setAttribute("transform", "translate(0 25)");
31762      const clusterOptions2 = {
31763        map,
31764        position,
31765        zIndex,
31766        title,
31767        content: svgEl
31768      };
31769      return new google.maps.marker.AdvancedMarkerElement(clusterOptions2);
31770    }
31771    const clusterOptions = {
31772      position,
31773      zIndex,
31774      title,
31775      icon: {
31776        url: `data:image/svg+xml;base64,${btoa(svg)}`,
31777        anchor: new google.maps.Point(25, 25)
31778      }
31779    };
31780    return new google.maps.Marker(clusterOptions);
31781  }
31782}
31783function extend(type1, type2) {
31784  for (let property in type2.prototype) {
31785    type1.prototype[property] = type2.prototype[property];
31786  }
31787}
31788class OverlayViewSafe {
31789  constructor() {
31790    extend(OverlayViewSafe, google.maps.OverlayView);
31791  }
31792}
31793var MarkerClustererEvents;
31794(function(MarkerClustererEvents2) {
31795  MarkerClustererEvents2["CLUSTERING_BEGIN"] = "clusteringbegin";
31796  MarkerClustererEvents2["CLUSTERING_END"] = "clusteringend";
31797  MarkerClustererEvents2["CLUSTER_CLICK"] = "click";
31798})(MarkerClustererEvents || (MarkerClustererEvents = {}));
31799const defaultOnClusterClickHandler = (_, cluster, map) => {
31800  map.fitBounds(cluster.bounds);
31801};
31802class MarkerClusterer extends OverlayViewSafe {
31803  constructor({ map, markers = [], algorithmOptions = {}, algorithm = new SuperClusterAlgorithm(algorithmOptions), renderer: renderer2 = new DefaultRenderer(), onClusterClick = defaultOnClusterClickHandler }) {
31804    super();
31805    this.markers = [...markers];
31806    this.clusters = [];
31807    this.algorithm = algorithm;
31808    this.renderer = renderer2;
31809    this.onClusterClick = onClusterClick;
31810    if (map) {
vendor: 1,043 bytes, lines 31811-31860
31811      this.setMap(map);
31812    }
31813  }
31814  addMarker(marker, noDraw) {
31815    if (this.markers.includes(marker)) {
31816      return;
31817    }
31818    this.markers.push(marker);
31819    if (!noDraw) {
31820      this.render();
31821    }
31822  }
31823  addMarkers(markers, noDraw) {
31824    markers.forEach((marker) => {
31825      this.addMarker(marker, true);
31826    });
31827    if (!noDraw) {
31828      this.render();
31829    }
31830  }
31831  removeMarker(marker, noDraw) {
31832    const index2 = this.markers.indexOf(marker);
31833    if (index2 === -1) {
31834      return false;
31835    }
31836    MarkerUtils.setMap(marker, null);
31837    this.markers.splice(index2, 1);
31838    if (!noDraw) {
31839      this.render();
31840    }
31841    return true;
31842  }
31843  removeMarkers(markers, noDraw) {
31844    let removed = false;
31845    markers.forEach((marker) => {
31846      removed = this.removeMarker(marker, true) || removed;
31847    });
31848    if (removed && !noDraw) {
31849      this.render();
31850    }
31851    return removed;
31852  }
31853  clearMarkers(noDraw) {
31854    this.markers.length = 0;
31855    if (!noDraw) {
31856      this.render();
31857    }
31858  }
31859  /**
31860   * Recalculates and draws all the marker cluster
31860s.
31861   */
31862  render() {
31863    const map = this.getMap();
31864    if (map instanceof google.maps.Map && map.getProjection()) {
31865      google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_BEGIN, this);
31866      const { clusters, changed } = this.algorithm.calculate({
31867        markers: this.markers,
31868        map,
31869        mapCanvasProjection: this.getProjection()
31870      });
31871      if (changed || changed == void 0) {
31872        const singleMarker = /* @__PURE__ */ new Set();
31873        for (const cluster of clusters) {
31874          if (cluster.markers.length == 1) {
31875            singleMarker.add(cluster.markers[0]);
31876          }
31877        }
31878        const groupMarkers = [];
31879        for (const cluster of this.clusters) {
31880          if (cluster.marker == null) {
31881            continue;
31882          }
31883          if (cluster.markers.length == 1) {
31884            if (!singleMarker.has(cluster.marker)) {
31885              MarkerUtils.setMap(cluster.marker, null);
31886            }
31887          } else {
31888            groupMarkers.push(cluster.marker);
31889          }
31890        }
31891        this.clusters = clusters;
31892        this.renderClusters();
31893        requestAnimationFrame(() => groupMarkers.forEach((marker) => MarkerUtils.setMap(marker, null)));
31894      }
31895      google.maps.event.trigger(this, MarkerClustererEvents.CLUSTERING_END, this);
31896    }
31897  }
31898  onAdd() {
31899    this.idleListener = this.getMap().addListener("idle", this.render.bind(this));
31900    this.render();
31901  }
31902  onRemove() {
31903    google.maps.event.removeListener(this.idleListener);
31904    this.reset();
31905  }
31906  reset() {
31907    this.markers.forEach((marker) => MarkerUtils.setMap(marker, null));
31908    this.clusters.forEach((cluster) => cluster.delete());
31909    this.clusters = [];
31910  }
31911  renderClusters() {
31912    const stats = new ClusterStats(this.markers, this.clusters);
31913    const map = this.getMap();
31914    this.clusters.forEach((cluster) => {
31915      if (cluster.markers.length === 1) {
31916        cluster.marker = cluster.markers[0];
31917      } else {
31918        cluster.marker = this.renderer.render(cluster, stats, map);
31919        cluster.markers.forEach((marker) => MarkerUtils.setMap(marker, null));
31920        if (this.onClusterClick) {
31921          cluster.marker.addListener(
31922            "click",
31923            /* istanbul ignore next */
31924            (event) => {
31925              google.maps.event.trigger(this, MarkerClustererEvents.CLUSTER_CLICK, cluster);
31926              this.onClusterClick(event, cluster, map);
31927            }
31928          );
31929        }
31930      }
31931      MarkerUtils.setMap(cluster.marker, map);
31932    });
31933  }
31934}
31935const props$4 = {
31936  algorithm: {
31937    type: Object,
31938    default: new SuperClusterAlgorithm({}),
31939    noBind: true
31940  },
31941  renderer: {
31942    type: Object,
31943    default: new DefaultRenderer(),
31944    noBind: true
31945  }
31946};
31947const events$3 = ["clusteringbegin", "clusteringend"];
31948const _sfc_main$1B = buildComponent({
31949  mappedProps: props$4,
31950  events: events$3,
31951  name: "cluster",
31952  ctr: () => {
31953    if (typeof MarkerClusterer === "undefined") {
31954      const errorMessage = "MarkerClusterer is not installed!";
31955      console.error(errorMessage);
31956      throw new Error(errorMessage);
31957    }
31958    return MarkerClusterer;
31959  },
31960  ctrArgs: ({ map, ...otherOptions }) => [{ map, ...otherOptions }],
31961  afterCreate(inst) {
31962    const reinsertMarkers = () => {
31963      const oldMarkers = inst.getMarkers();
31964      inst.clearMarkers();
31965      inst.addMarkers(oldMarkers);
31966    };
31967    for (let prop in props$4) {
31968      if (props$4[prop].twoWay) {
31969        this.$on(prop.toLowerCase() + "_changed", reinsertMarkers);
31970      }
31971    }
31972  },
31973  updated() {
31974    if (this.$clusterObject) {
31975      this.$clusterObject.render();
31976    }
31977  },
31978  beforeUnmount() {
31979    if (this.$children && this.$children.length) {
31980      this.$children.forEach((marker) => {
31981        if (marker.$clusterObject === this.$clusterObject) {
31982          marker.$clusterObject = null;
31983        }
31984      });
31985    }
31986    if (this.$clusterObject) {
31987      this.$clusterObject.clearMarkers();
31988    }
31989  }
31990});
31991function _sfc_render$1z(_ctx, _cache, $props, $setup, $data, $options) {
31992  return openBlock(), createElementBlock("div", null, [
31993    renderSlot(_ctx.$slots, "default")
31994  ]);
31995}
31996const GMapCluster = /* @__PURE__ */ _export_sfc(_sfc_main$1B, [["render", _sfc_render$1z]]);
31997const props$3 = {
31998  options: {
31999    type: Object,
32000    required: false,
32001    default() {
32002      return {};
32003    }
32004  },
32005  position: {
32006    type: Object,
32007    twoWay: true
32008  },
32009  zIndex: {
32010    type: Number,
32011    twoWay: true
32012  }
32013};
32014const events$2 = ["domready", "click", "closeclick", "content_changed"];
32015const _sfc_main$1A = buildComponent({
32016  mappedProps: props$3,
32017  events: events$2,
32018  name: "infoWindow",
32019  ctr: () => google.maps.InfoWindow,
32020  props: {
32021    opened: {
32022      type: Boolean,
32023      default: true
32024    }
32025  },
32026  inject: {
32027    $markerPromise: {
32028      default: null
32029    }
32030  },
32031  mounted() {
32032    const el = this.$refs.infoWindow;
32033    el.parentNode.removeChild(el);
32034  },
32035  beforeCreate(options2) {
32036    options2.content = this.$refs.infoWindow;
32037    if (this.$markerPromise) {
32038      delete options2.position;
32039      return this.$markerPromise.then((mo) => {
32040        this.$markerObject = mo;
32041        return mo;
32042      });
32043    }
32044  },
32045  emits: ["closeclick"],
32046  methods: {
32047    _openInfoWindow() {
32048      this.$infoWindowObject.close();
32049      if (this.opened) {
32050        this.$infoWindowObject.open(this.$map, this.$markerObject);
32051      }
32052    }
32053  },
32054  afterCreate() {
32055    this._openInfoWindow();
32056    this.$infoWindowObject.addListener("closeclick", () => {
32057      this.$emit("closeclick");
32058      this.$infoWindowObject.open(this.$map, this.$markerObject);
32059    });
32060    this.$watch("opened", () => {
32061      this._openInfoWindow();
32062    });
32063  }
32064});
32065const _hoisted_1$1t = { ref: "infoWindow" };
32066function _sfc_render$1y(_ctx, _cache, $props, $setup, $data, $options) {
32067  return openBlock(), createElementBlock("div", _hoisted_1$1t, [
32068    renderSlot(_ctx.$slots, "default")
32069  ], 512);
32070}
32071const InfoWindow = /* @__PURE__ */ _export_sfc(_sfc_main$1A, [["render", _sfc_render$1y]]);
32072const mountableMixin = {
32073  props: ["resizeBus"],
32074  data() {
32075    return {
32076      _actualResizeBus: null
32077    };
32078  },
32079  created() {
32080    if (typeof this.resizeBus === "undefined") {
32081      this.$data._actualResizeBus = this.$gmapDefaultResizeBus;
32082    } else {
32083      this.$data._actualResizeBus = this.resizeBus;
32084    }
32085  },
32086  methods: {
32087    _resizeCallback() {
32088      this.resize();
32089    },
32090    isFunction(functionToCheck) {
32091      return functionToCheck && {}.toString.call(functionToCheck) === "[object Function]";
32092    },
32093    _delayedResizeCallback() {
32094      this.$nextTick(() => this._resizeCallback());
32095    }
32096  },
32097  watch: {
32098    resizeBus(newVal) {
32099      this.$data._actualResizeBus = newVal;
32100    },
32101    "$data._actualResizeBus"(newVal, oldVal) {
32102      if (oldVal) {
32103        oldVal.$off("resize", this._delayedResizeCallback);
32104      }
32105    }
32106  },
32107  unmounted() {
32108    if (this.$data._actualResizeBus && this.isFunction(this.$data._actualResizeBus.$off)) {
32109      this.$data._actualResizeBus.$off("resize", this._delayedResizeCallback);
32110    }
32111  }
32112};
32113function TwoWayBindingWrapper(fn) {
32114  let counter = 0;
32115  fn(
32116    () => {
32117      counter += 1;
32118    },
32119    () => {
32120      counter = Math.max(0, counter - 1);
32121    },
32122    () => counter === 0
32123  );
32124}
32125const props$2 = {
32126  center: {
32127    default: { lat: 0, lng: 0 },
32128    twoWay: true,
32129    type: Object,
32130    noBind: true
32131  },
32132  zoom: {
32133    required: false,
32134    twoWay: true,
32135    type: Number,
32136    noBind: true
32137  },
32138  maxZoom: {
32139    required: false,
32140    twoWay: true,
32141    type: Number,
32142    noBind: true
32143  },
32144  minZoom: {
32145    required: false,
32146    twoWay: true,
32147    type: Number,
32148    noBind: true
32149  },
32150  heading: {
32151    type: Number,
32152    twoWay: true
32153  },
32154  mapTypeId: {
32155    twoWay: true,
32156    type: String
32157  },
32158  tilt: {
32159    twoWay: true,
32160    type: Number
32161  },
32162  options: {
32163    type: Object,
32164    default() {
32165      return {};
32166    }
32167  }
32168};
32169const events$1 = [
32170  "bounds_changed",
32171  "click",
32172  "dblclick",
32173  "drag",
32174  "dragend",
32175  "dragstart",
32176  "idle",
32177  "mousemove",
32178  "mouseout",
32179  "mouseover",
32180  "resize",
32181  "rightclick",
32182  "tilesloaded"
32183];
32184const linkedMethods = ["panBy", "panTo", "panToBounds", "fitBounds"].reduce((all3, methodName) => {
32185  all3[methodName] = function() {
32186    if (this.$mapObject) {
32187      this.$mapObject[methodName].apply(this.$mapObject, arguments);
32188    }
32189  };
32190  return all3;
32191}, {});
32192const customMethods = {
32193  resize() {
32194    if (this.$mapObject) {
32195      google.maps.event.trigger(this.$mapObject, "resize");
32196    }
32197  },
32198  resizePreserveCenter() {
32199    if (!this.$mapObject) {
32200      return;
32201    }
32202    const oldCenter = this.$mapObject.getCenter();
32203    google.maps.event.trigger(this.$mapObject, "resize");
32204    this.$mapObject.setCenter(oldCenter);
32205  },
32206  /// Override mountableMixin::_resizeCallback
32207  /// because resizePreserveCenter is usually the
32208  /// expected behaviour
32209  _resizeCallback() {
32210    this.resizePreserveCenter();
32211  }
32212};
32213const _sfc_main$1z = {
32214  mixins: [mountableMixin],
32215  props: mappedPropsToVueProps({
32216    ...props$2,
32217    ...events$1.reduce(
32218      (obj, eventName) => ({
32219        ...obj,
32220        [`on${eventName.charAt(0).toUpperCase()}${eventName.slice(1)}`.replace(
32221          /[-_]+(.)?/g,
32222          (_, c) => c ? c.toUpperCase() : ""
32223        )]: Function
32224      }),
32225      {}
32226    )
32227  }),
32228  inheritAttrs: false,
32229  provide() {
32230    this.$mapPromise = new Promise((resolve2, reject) => {
32231      this.$mapPromiseDeferred = { resolve: resolve2, reject };
32232    });
32233    return {
32234      $mapPromise: this.$mapPromise
32235    };
32236  },
32237  emits: ["center_changed", "zoom_changed", "bounds_changed"],
32238  computed: {
32239    finalLat() {
32240      return this.center && typeof this.center.lat === "function" ? this.center.lat() : this.center.lat;
32241    },
32242    finalLng() {
32243      return this.center && typeof this.center.lng === "function" ? this.center.lng() : this.center.lng;
32244    },
32245    finalLatLng() {
32246      return { lat: this.finalLat, lng: this.finalLng };
32247    }
32248  },
32249  watch: {
32250    zoom(zoom) {
32251      if (this.$mapObject) {
32252        this.$mapObject.setZoom(zoom);
32253      }
32254    }
32255  },
32256  mounted() {
32257    return this.$gmapApiPromiseLazy().then(() => {
32258      const element = this.$refs["vue-map"];
32259      const options2 = {
32260        ...this.options,
32261        ...getPropsValues(this, props$2)
32262      };
32263      delete options2.options;
32264      this.$mapObject = new google.maps.Map(element, options2);
32265      bindProps(this, this.$mapObject, props$2);
32266      bindEvents(this, this.$mapObject, events$1);
32267      TwoWayBindingWrapper((increment, decrement, shouldUpdate) => {
32268        this.$mapObject.addListener("center_changed", () => {
32269          if (shouldUpdate()) {
32270            this.$emit("center_changed", this.$mapObject.getCenter());
32271          }
32272          decrement();
32273        });
32274        const updateCenter = () => {
32275          increment();
32276          this.$mapObject.setCenter(this.finalLatLng);
32277        };
32278        WatchPrimitiveProperties(this, ["finalLat", "finalLng"], updateCenter);
32279      });
32280      this.$mapObject.addListener("zoom_changed", () => {
32281        this.$emit("zoom_changed", this.$mapObject.getZoom());
32282      });
32283      this.$mapObject.addListener("bounds_changed", () => {
32284        this.$emit("bounds_changed", this.$mapObject.getBounds());
32285      });
32286      this.$mapPromiseDeferred.resolve(this.$mapObject);
32287      return this.$mapObject;
32288    }).catch((error) => {
32289      throw error;
32290    });
32291  },
32292  methods: {
32293    ...customMethods,
32294    ...linkedMethods
32295  }
32296};
32297const _hoisted_1$1s = { class: "vue-map-hidden" };
32298function _sfc_render$1x(_ctx, _cache, $props, $setup, $data, $options) {
32299  return openBlock(), createElementBlock("div", {
32300    class: normalizeClass(["vue-map-container", _ctx.$attrs.class])
32301  }, [
32302    createBaseVNode("div", {
32303      ref: "vue-map",
32304      class: "vue-map",
32305      style: normalizeStyle(_ctx.$attrs.style ? _ctx.$attrs.style : "")
32306    }, null, 4),
32307    createBaseVNode("div", _hoisted_1$1s, [
32308      renderSlot(_ctx.$slots, "default")
32309    ]),
32310    renderSlot(_ctx.$slots, "visible")
32311  ], 2);
32312}
32313const Map$1 = /* @__PURE__ */ _export_sfc(_sfc_main$1z, [["render", _sfc_render$1x]]);
32314const props$1 = {
32315  options: {
32316    type: Object,
32317    twoWay: false,
32318    default: () => {
32319    }
32320  },
32321  data: {
32322    type: Array,
32323    twoWay: true
32324  }
32325};
32326const events = [];
32327const Heatmap = buildComponent({
32328  mappedProps: props$1,
32329  name: "heatmap",
32330  ctr: () => google.maps.visualization.HeatmapLayer,
32331  events
32332});
32333const downArrowSimulator = (input) => {
32334  const _addEventListener = input.addEventListener ? input.addEventListener : input.attachEvent;
32335  function addEventListenerWrapper(type, listener) {
32336    if (type === "keydown") {
32337      const origListener = listener;
32338      listener = function(event) {
32339        const suggestionSelected = document.getElementsByClassName("pac-item-selected").length > 0;
32340        if (event.which === 13 && !suggestionSelected) {
32341          const simulatedEvent = document.createEvent("Event");
32342          simulatedEvent.keyCode = 40;
32343          simulatedEvent.which = 40;
32344          origListener.apply(input, [simulatedEvent]);
32345        }
32346        origListener.apply(input, [event]);
32347      };
32348    }
32349    _addEventListener.apply(input, [type, listener]);
32350  }
32351  input.addEventListener = addEventListenerWrapper;
32352  input.attachEvent = addEventListenerWrapper;
32353};
32354const mappedProps = {
32355  bounds: {
32356    type: Object
32357  },
32358  componentRestrictions: {
32359    type: Object,
32360    // Do not bind -- must check for undefined
32361    // in the property
32362    noBind: true
32363  },
32364  types: {
32365    type: Array,
32366    default: function() {
32367      return [];
32368    }
32369  }
32370};
32371const props = {
32372  selectFirstOnEnter: {
32373    required: false,
32374    type: Boolean,
32375    default: false
32376  },
32377  options: {
32378    type: Object
32379  }
32380};
32381const _sfc_main$1y = {
32382  mounted() {
32383    const _this = this;
32384    this.$gmapApiPromiseLazy().then(() => {
32385      let refInput = _this.$refs.input;
32386      if (_this.$slots.input) {
32387        const refName = _this.$slots.input()[0].props.ref;
32388        const scopedInput = _this.$slots.input()[0].ref.i.ctx.$refs[refName];
32389        if (scopedInput) {
32390          refInput = scopedInput.$el.getElementsByTagName("input")[0];
32391        }
32392      }
32393      if (this.selectFirstOnEnter) {
32394        downArrowSimulator(refInput);
32395      }
32396      if (typeof google.maps.places.Autocomplete !== "function") {
32397        throw new Error(
32398          "google.maps.places.Autocomplete is undefined. Did you add 'places' to libraries when loading Google Maps?"
32399        );
32400      }
32401      const finalOptions = {
32402        ...getPropsValues(this, mappedProps),
32403        ...this.options
32404      };
32405      this.$autocomplete = new google.maps.places.Autocomplete(refInput, finalOptions);
32406      bindProps(this, this.$autocomplete, mappedProps);
32407      this.$watch("componentRestrictions", (v) => {
32408        if (v !== void 0) {
32409          this.$autocomplete.setComponentRestrictions(v);
32410        }
32411      });
32412      this.$autocomplete.addListener("place_changed", () => {
32413        this.$emit("place_changed", this.$autocomplete.getPlace());
32414      });
32415    });
32416  },
32417  props: {
32418    ...mappedPropsToVueProps(mappedProps),
32419    ...props
32420  }
32421};
32422function _sfc_render$1w(_ctx, _cache, $props, $setup, $data, $options) {
32423  return _ctx.$slots["input"] ? renderSlot(_ctx.$slots, "input", normalizeProps(mergeProps({ key: 0 }, _ctx.$attrs))) : !_ctx.$slots["input"] ? (openBlock(), createElementBlock("input", mergeProps({
32424    key: 1,
32425    ref: "input"
32426  }, _ctx.$attrs, toHandlers(_ctx.$attrs, true)), null, 16)) : createCommentVNode("", true);
32427}
32428const Autocomplete = /* @__PURE__ */ _export_sfc(_sfc_main$1y, [["render", _sfc_render$1w]]);
32429let GMapApi = null;
32430function install2(Vue, options2) {
32431  options2 = {
32432    installComponents: true,
32433    autobindAllEvents: false,
32434    ...options2
32435  };
32436  GMapApi = createApp({
32437    data: function() {
32438      return { gmapApi: null };
32439    }
32440  });
32441  const defaultResizeBus = createApp();
32442  let gmapApiPromiseLazy = makeGMapApiPromiseLazy(options2);
32443  Vue.mixin({
32444    created() {
32445      this.$gmapDefaultResizeBus = defaultResizeBus;
32446      this.$gmapOptions = options2;
32447      this.$gmapApiPromiseLazy = gmapApiPromiseLazy;
32448    }
32449  });
32450  Vue.$gmapDefaultResizeBus = defaultResizeBus;
32451  Vue.$gmapApiPromiseLazy = gmapApiPromiseLazy;
32452  if (options2.installComponents) {
32453    Vue.component("GMapMap", Map$1);
32454    Vue.component("GMapMarker", Marker);
32455    Vue.component("GMapInfoWindow", InfoWindow);
32456    Vue.component("GMapCluster", GMapCluster);
32457    Vue.component("GMapPolyline", Polyline);
32458    Vue.component("GMapPolygon", Polygon);
32459    Vue.component("GMapCircle", Circle);
32460    Vue.component("GMapRectangle", Rectangle);
32461    Vue.component("GMapAutocomplete", Autocomplete);
32462    Vue.component("GMapHeatmap", Heatmap);
32463  }
32464}
32465function makeGMapApiPromiseLazy(options2) {
32466  function onApiLoaded() {
32467    GMapApi.gmapApi = {};
32468    return window.google;
32469  }
32470  if (options2.load) {
32471    return lazy(() => {
32472      if (Env.isServer()) {
32473        return new Promise(() => {
32474        }).then(onApiLoaded);
32475      } else {
32476        return new Promise((resolve2, reject) => {
32477          try {
32478            window["vueGoogleMapsInit"] = resolve2;
32479            loadGMapApi(options2.load);
32480          } catch (err) {
32481            reject(err);
32482          }
32483        }).then(onApiLoaded);
32484      }
32485    });
32486  } else {
32487    const promise = new Promise((resolve2) => {
32488      if (Env.isServer()) {
32489        return;
32490      }
32491      window["vueGoogleMapsInit"] = resolve2;
32492    }).then(onApiLoaded);
32493    return lazy(() => promise);
32494  }
32495}
32496var sweetalert2$1 = { exports: {} };
32497/*!
32498* sweetalert2 v11.22.0
32499* Released under the MIT License.
32500*/
32501var sweetalert2 = sweetalert2$1.exports;
32502var hasRequiredSweetalert2;
32503function requireSweetalert2() {
32504  if (hasRequiredSweetalert2) return sweetalert2$1.exports;
32505  hasRequiredSweetalert2 = 1;
32506  (function(module, exports) {
32507    (function(global2, factory) {
32508      module.exports = factory();
32509    })(sweetalert2, function() {
32510      function _assertClassBrand(e, t, n) {
32511        if ("function" == typeof e ? e === t : e.has(t)) return arguments.length < 3 ? t : n;
32512        throw new TypeError("Private element is not present on this object");
32513      }
32514      function _checkPrivateRedeclaration(e, t) {
32515        if (t.has(e)) throw new TypeError("Cannot initialize the same private elements twice on an object");
32516      }
32517      function _classPrivateFieldGet2(s, a) {
32518        return s.get(_assertClassBrand(s, a));
32519      }
32520      function _classPrivateFieldInitSpec(e, t, a) {
32521        _checkPrivateRedeclaration(e, t), t.set(e, a);
32522      }
32523      function _classPrivateFieldSet2(s, a, r) {
32524        return s.set(_assertClassBrand(s, a), r), r;
32525      }
32526      const RESTORE_FOCUS_TIMEOUT = 100;
32527      const globalState = {};
32528      const focusPreviousActiveElement = () => {
32529        if (globalState.previousActiveElement instanceof HTMLElement) {
32530          globalState.previousActiveElement.focus();
32531          globalState.previousActiveElement = null;
32532        } else if (document.body) {
32533          document.body.focus();
32534        }
32535      };
32536      const restoreActiveElement = (returnFocus) => {
32537        return new Promise((resolve2) => {
32538          if (!returnFocus) {
32539            return resolve2();
32540          }
32541          const x = window.scrollX;
32542          const y = window.scrollY;
32543          globalState.restoreFocusTimeout = setTimeout(() => {
32544            focusPreviousActiveElement();
32545            resolve2();
32546          }, RESTORE_FOCUS_TIMEOUT);
32547          window.scrollTo(x, y);
32548        });
32549      };
32550      const swalPrefix = "swal2-";
32551      const classNames = ["container", "shown", "height-auto", "iosfix", "popup", "modal", "no-backdrop", "no-transition", "toast", "toast-shown", "show", "hide", "close", "title", "html-container", "actions", "confirm", "deny", "cancel", "footer", "icon", "icon-content", "image", "input", "file", "range", "select", "radio", "checkbox", "label", "textarea", "inputerror", "input-label", "validation-message", "progress-steps", "active-progress-step", "progress-step", "progress-step-line", "loader", "loading", "styled", "top", "top-start", "top-end", "top-left", "top-right", "center", "center-start", "center-end", "center-left", "center-right", "bottom", "bottom-start", "bottom-end", "bottom-left", "bottom-right", "grow-row", "grow-column", "grow-fullscreen", "rtl", "timer-progress-bar", "timer-progress-bar-container", "scrollbar-measure", "icon-success", "icon-warning", "icon-info", "icon-question", "icon-error", "draggable", "dragging"];
32552      const swalClasses = classNames.reduce(
32553        (acc, className) => {
32554          acc[className] = swalPrefix + className;
32555          return acc;
32556        },
32557        /** @type {SwalClasses} */
32558        {}
32559      );
32560      const icons = ["success", "warning", "info", "question", "error"];
32561      const iconTypes = icons.reduce(
32562        (acc, icon) => {
32563          acc[icon] = swalPrefix + icon;
32564          return acc;
32565        },
32566        /** @type {SwalIcons} */
32567        {}
32568      );
32569      const consolePrefix = "SweetAlert2:";
32570      const capitalizeFirstLetter = (str) => str.charAt(0).toUpperCase() + str.slice(1);
32571      const warn2 = (message) => {
32572        console.warn(`${consolePrefix} ${typeof message === "object" ? message.join(" ") : message}`);
32573      };
32574      const error = (message) => {
32575        console.error(`${consolePrefix} ${message}`);
32576      };
32577      const previousWarnOnceMessages = [];
32578      const warnOnce = (message) => {
32579        if (!previousWarnOnceMessages.includes(message)) {
32580          previousWarnOnceMessages.push(message);
32581          warn2(message);
32582        }
32583      };
32584      const warnAboutDeprecation = (deprecatedParam, useInstead = null) => {
32585        warnOnce(`"${deprecatedParam}" is deprecated and will be removed in the next major release.${useInstead ? ` Use "${useInstead}" instead.` : ""}`);
32586      };
32587      const callIfFunction = (arg) => typeof arg === "function" ? arg() : arg;
32588      const hasToPromiseFn = (arg) => arg && typeof arg.toPromise === "function";
32589      const asPromise = (arg) => hasToPromiseFn(arg) ? arg.toPromise() : Promise.resolve(arg);
32590      const isPromise2 = (arg) => arg && Promise.resolve(arg) === arg;
32591      const getContainer = () => document.body.querySelector(`.${swalClasses.container}`);
32592      const elementBySelector = (selectorString) => {
32593        const container = getContainer();
32594        return container ? container.querySelector(selectorString) : null;
32595      };
32596      const elementByClass = (className) => {
32597        return elementBySelector(`.${className}`);
32598      };
32599      const getPopup = () => elementByClass(swalClasses.popup);
32600      const getIcon = () => elementByClass(swalClasses.icon);
32601      const getIconContent = () => elementByClass(swalClasses["icon-content"]);
32602      const getTitle = () => elementByClass(swalClasses.title);
32603      const getHtmlContainer = () => elementByClass(swalClasses["html-container"]);
32604      const getImage = () => elementByClass(swalClasses.image);
32605      const getProgressSteps = () => elementByClass(swalClasses["progress-steps"]);
32606      const getValidationMessage = () => elementByClass(swalClasses["validation-message"]);
32607      const getConfirmButton = () => (
32608        /** @type {HTMLButtonElement} */
32609        elementBySelector(`.${swalClasses.actions} .${swalClasses.confirm}`)
32610      );
32611      const getCancelButton = () => (
32612        /** @type {HTMLButtonElement} */
32613        elementBySelector(`.${swalClasses.actions} .${swalClasses.cancel}`)
32614      );
32615      const getDenyButton = () => (
32616        /** @type {HTMLButtonElement} */
32617        elementBySelector(`.${swalClasses.actions} .${swalClasses.deny}`)
32618      );
32619      const getInputLabel = () => elementByClass(swalClasses["input-label"]);
32620      const getLoader = () => elementBySelector(`.${swalClasses.loader}`);
32621      const getActions = () => elementByClass(swalClasses.actions);
32622      const getFooter = () => elementByClass(swalClasses.footer);
32623      const getTimerProgressBar = () => elementByClass(swalClasses["timer-progress-bar"]);
32624      const getCloseButton = () => elementByClass(swalClasses.close);
32625      const focusable = `
32626  a[href],
32627  area[href],
32628  input:not([disabled]),
32629  select:not([disabled]),
32630  textarea:not([disabled]),
32631  button:not([disabled]),
32632  iframe,
32633  object,
32634  embed,
32635  [tabindex="0"],
32636  [contenteditable],
32637  audio[controls],
32638  video[controls],
32639  summary
32640`;
32641      const getFocusableElements = () => {
32642        const popup = getPopup();
32643        if (!popup) {
32644          return [];
32645        }
32646        const focusableElementsWithTabindex = popup.querySelectorAll('[tabindex]:not([tabindex="-1"]):not([tabindex="0"])');
32647        const focusableElementsWithTabindexSorted = Array.from(focusableElementsWithTabindex).sort((a, b) => {
32648          const tabindexA = parseInt(a.getAttribute("tabindex") || "0");
32649          const tabindexB = parseInt(b.getAttribute("tabindex") || "0");
32650          if (tabindexA > tabindexB) {
32651            return 1;
32652          } else if (tabindexA < tabindexB) {
32653            return -1;
32654          }
32655          return 0;
32656        });
32657        const otherFocusableElements = popup.querySelectorAll(focusable);
32658        const otherFocusableElementsFiltered = Array.from(otherFocusableElements).filter((el) => el.getAttribute("tabindex") !== "-1");
32659        return [...new Set(focusableElementsWithTabindexSorted.concat(otherFocusableElementsFiltered))].filter((el) => isVisible$1(el));
32660      };
32661      const isModal = () => {
32662        return hasClass(document.body, swalClasses.shown) && !hasClass(document.body, swalClasses["toast-shown"]) && !hasClass(document.body, swalClasses["no-backdrop"]);
32663      };
32664      const isToast = () => {
32665        const popup = getPopup();
32666        if (!popup) {
32667          return false;
32668        }
32669        return hasClass(popup, swalClasses.toast);
32670      };
32671      const isLoading = () => {
32672        const popup = getPopup();
32673        if (!popup) {
32674          return false;
32675        }
32676        return popup.hasAttribute("data-loading");
32677      };
32678      const setInnerHtml = (elem, html) => {
32679        elem.textContent = "";
32680        if (html) {
32681          const parser = new DOMParser();
32682          const parsed = parser.parseFromString(html, `text/html`);
32683          const head = parsed.querySelector("head");
32684          if (head) {
32685            Array.from(head.childNodes).forEach((child) => {
32686              elem.appendChild(child);
32687            });
32688          }
32689          const body = parsed.querySelector("body");
32690          if (body) {
32691            Array.from(body.childNodes).forEach((child) => {
32692              if (child instanceof HTMLVideoElement || child instanceof HTMLAudioElement) {
32693                elem.appendChild(child.cloneNode(true));
32694              } else {
32695                elem.appendChild(child);
32696              }
32697            });
32698          }
32699        }
32700      };
32701      const hasClass = (elem, className) => {
32702        if (!className) {
32703          return false;
32704        }
32705        const classList = className.split(/\s+/);
32706        for (let i = 0; i < classList.length; i++) {
32707          if (!elem.classList.contains(classList[i])) {
32708            return false;
32709          }
32710        }
32711        return true;
32712      };
32713      const removeCustomClasses = (elem, params) => {
32714        Array.from(elem.classList).forEach((className) => {
32715          if (!Object.values(swalClasses).includes(className) && !Object.values(iconTypes).includes(className) && !Object.values(params.showClass || {}).includes(className)) {
32716            elem.classList.remove(className);
32717          }
32718        });
32719      };
32720      const applyCustomClass = (elem, params, className) => {
32721        removeCustomClasses(elem, params);
32722        if (!params.customClass) {
32723          return;
32724        }
32725        const customClass = params.customClass[
32726          /** @type {keyof SweetAlertCustomClass} */
32727          className
32728        ];
32729        if (!customClass) {
32730          return;
32731        }
32732        if (typeof customClass !== "string" && !customClass.forEach) {
32733          warn2(`Invalid type of customClass.${className}! Expected string or iterable object, got "${typeof customClass}"`);
32734          return;
32735        }
32736        addClass(elem, customClass);
32737      };
32738      const getInput$1 = (popup, inputClass) => {
32739        if (!inputClass) {
32740          return null;
32741        }
32742        switch (inputClass) {
32743          case "select":
32744          case "textarea":
32745          case "file":
32746            return popup.querySelector(`.${swalClasses.popup} > .${swalClasses[inputClass]}`);
32747          case "checkbox":
32748            return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.checkbox} input`);
32749          case "radio":
32750            return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:checked`) || popup.querySelector(`.${swalClasses.popup} > .${swalClasses.radio} input:first-child`);
32751          case "range":
32752            return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.range} input`);
32753          default:
32754            return popup.querySelector(`.${swalClasses.popup} > .${swalClasses.input}`);
32755        }
32756      };
32757      const focusInput = (input) => {
32758        input.focus();
32759        if (input.type !== "file") {
32760          const val = input.value;
32761          input.value = "";
32762          input.value = val;
32763        }
32764      };
32765      const toggleClass = (target, classList, condition) => {
32766        if (!target || !classList) {
32767          return;
32768        }
32769        if (typeof classList === "string") {
32770          classList = classList.split(/\s+/).filter(Boolean);
32771        }
32772        classList.forEach((className) => {
32773          if (Array.isArray(target)) {
32774            target.forEach((elem) => {
32775              if (condition) {
32776                elem.classList.add(className);
32777              } else {
32778                elem.classList.remove(className);
32779              }
32780            });
32781          } else {
32782            if (condition) {
32783              target.classList.add(className);
32784            } else {
32785              target.classList.remove(className);
32786            }
32787          }
32788        });
32789      };
32790      const addClass = (target, classList) => {
32791        toggleClass(target, classList, true);
32792      };
32793      const removeClass = (target, classList) => {
32794        toggleClass(target, classList, false);
32795      };
32796      const getDirectChildByClass = (elem, className) => {
32797        const children = Array.from(elem.children);
32798        for (let i = 0; i < children.length; i++) {
32799          const child = children[i];
32800          if (child instanceof HTMLElement && hasClass(child, className)) {
32801            return child;
32802          }
32803        }
32804      };
32805      const applyNumericalStyle = (elem, property, value) => {
32806        if (value === `${parseInt(value)}`) {
32807          value = parseInt(value);
32808        }
32809        if (value || parseInt(value) === 0) {
32810          elem.style.setProperty(property, typeof value === "number" ? `${value}px` : value);
32811        } else {
32812          elem.style.removeProperty(property);
32813        }
32814      };
32815      const show = (elem, display = "flex") => {
32816        if (!elem) {
32817          return;
32818        }
32819        elem.style.display = display;
32820      };
32821      const hide = (elem) => {
32822        if (!elem) {
32823          return;
32824        }
32825        elem.style.display = "none";
32826      };
32827      const showWhenInnerHtmlPresent = (elem, display = "block") => {
32828        if (!elem) {
32829          return;
32830        }
32831        new MutationObserver(() => {
32832          toggle(elem, elem.innerHTML, display);
32833        }).observe(elem, {
32834          childList: true,
32835          subtree: true
32836        });
32837      };
32838      const setStyle2 = (parent, selector, property, value) => {
32839        const el = parent.querySelector(selector);
32840        if (el) {
32841          el.style.setProperty(property, value);
32842        }
32843      };
32844      const toggle = (elem, condition, display = "flex") => {
32845        if (condition) {
32846          show(elem, display);
32847        } else {
32848          hide(elem);
32849        }
32850      };
32851      const isVisible$1 = (elem) => !!(elem && (elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length));
32852      const allButtonsAreHidden = () => !isVisible$1(getConfirmButton()) && !isVisible$1(getDenyButton()) && !isVisible$1(getCancelButton());
32853      const isScrollable = (elem) => !!(elem.scrollHeight > elem.clientHeight);
32854      const selfOrParentIsScrollable = (element, stopElement) => {
32855        let parent = element;
32856        while (parent && parent !== stopElement) {
32857          if (isScrollable(parent)) {
32858            return true;
32859          }
32860          parent = parent.parentElement;
32861        }
32862        return false;
vendor: 9,952 bytes, lines 32863-33090
32863      };
32864      const hasCssAnimation = (elem) => {
32865        const style = window.getComputedStyle(elem);
32866        const animDuration = parseFloat(style.getPropertyValue("animation-duration") || "0");
32867        const transDuration = parseFloat(style.getPropertyValue("transition-duration") || "0");
32868        return animDuration > 0 || transDuration > 0;
32869      };
32870      const animateTimerProgressBar = (timer, reset2 = false) => {
32871        const timerProgressBar = getTimerProgressBar();
32872        if (!timerProgressBar) {
32873          return;
32874        }
32875        if (isVisible$1(timerProgressBar)) {
32876          if (reset2) {
32877            timerProgressBar.style.transition = "none";
32878            timerProgressBar.style.width = "100%";
32879          }
32880          setTimeout(() => {
32881            timerProgressBar.style.transition = `width ${timer / 1e3}s linear`;
32882            timerProgressBar.style.width = "0%";
32883          }, 10);
32884        }
32885      };
32886      const stopTimerProgressBar = () => {
32887        const timerProgressBar = getTimerProgressBar();
32888        if (!timerProgressBar) {
32889          return;
32890        }
32891        const timerProgressBarWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
32892        timerProgressBar.style.removeProperty("transition");
32893        timerProgressBar.style.width = "100%";
32894        const timerProgressBarFullWidth = parseInt(window.getComputedStyle(timerProgressBar).width);
32895        const timerProgressBarPercent = timerProgressBarWidth / timerProgressBarFullWidth * 100;
32896        timerProgressBar.style.width = `${timerProgressBarPercent}%`;
32897      };
32898      const isNodeEnv = () => typeof window === "undefined" || typeof document === "undefined";
32899      const sweetHTML = `
32900 <div aria-labelledby="${swalClasses.title}" aria-describedby="${swalClasses["html-container"]}" class="${swalClasses.popup}" tabindex="-1">
32901   <button type="button" class="${swalClasses.close}"></button>
32902   <ul class="${swalClasses["progress-steps"]}"></ul>
32903   <div class="${swalClasses.icon}"></div>
32904   <img class="${swalClasses.image}" />
32905   <h2 class="${swalClasses.title}" id="${swalClasses.title}"></h2>
32906   <div class="${swalClasses["html-container"]}" id="${swalClasses["html-container"]}"></div>
32907   <input class="${swalClasses.input}" id="${swalClasses.input}" />
32908   <input type="file" class="${swalClasses.file}" />
32909   <div class="${swalClasses.range}">
32910     <input type="range" />
32911     <output></output>
32912   </div>
32913   <select class="${swalClasses.select}" id="${swalClasses.select}"></select>
32914   <div class="${swalClasses.radio}"></div>
32915   <label class="${swalClasses.checkbox}">
32916     <input type="checkbox" id="${swalClasses.checkbox}" />
32917     <span class="${swalClasses.label}"></span>
32918   </label>
32919   <textarea class="${swalClasses.textarea}" id="${swalClasses.textarea}"></textarea>
32920   <div class="${swalClasses["validation-message"]}" id="${swalClasses["validation-message"]}"></div>
32921   <div class="${swalClasses.actions}">
32922     <div class="${swalClasses.loader}"></div>
32923     <button type="button" class="${swalClasses.confirm}"></button>
32924     <button type="button" class="${swalClasses.deny}"></button>
32925     <button type="button" class="${swalClasses.cancel}"></button>
32926   </div>
32927   <div class="${swalClasses.footer}"></div>
32928   <div class="${swalClasses["timer-progress-bar-container"]}">
32929     <div class="${swalClasses["timer-progress-bar"]}"></div>
32930   </div>
32931 </div>
32932`.replace(/(^|\n)\s*/g, "");
32933      const resetOldContainer = () => {
32934        const oldContainer = getContainer();
32935        if (!oldContainer) {
32936          return false;
32937        }
32938        oldContainer.remove();
32939        removeClass([document.documentElement, document.body], [swalClasses["no-backdrop"], swalClasses["toast-shown"], swalClasses["has-column"]]);
32940        return true;
32941      };
32942      const resetValidationMessage$1 = () => {
32943        globalState.currentInstance.resetValidationMessage();
32944      };
32945      const addInputChangeListeners = () => {
32946        const popup = getPopup();
32947        const input = getDirectChildByClass(popup, swalClasses.input);
32948        const file = getDirectChildByClass(popup, swalClasses.file);
32949        const range = popup.querySelector(`.${swalClasses.range} input`);
32950        const rangeOutput = popup.querySelector(`.${swalClasses.range} output`);
32951        const select2 = getDirectChildByClass(popup, swalClasses.select);
32952        const checkbox = popup.querySelector(`.${swalClasses.checkbox} input`);
32953        const textarea = getDirectChildByClass(popup, swalClasses.textarea);
32954        input.oninput = resetValidationMessage$1;
32955        file.onchange = resetValidationMessage$1;
32956        select2.onchange = resetValidationMessage$1;
32957        checkbox.onchange = resetValidationMessage$1;
32958        textarea.oninput = resetValidationMessage$1;
32959        range.oninput = () => {
32960          resetValidationMessage$1();
32961          rangeOutput.value = range.value;
32962        };
32963        range.onchange = () => {
32964          resetValidationMessage$1();
32965          rangeOutput.value = range.value;
32966        };
32967      };
32968      const getTarget2 = (target) => typeof target === "string" ? document.querySelector(target) : target;
32969      const setupAccessibility = (params) => {
32970        const popup = getPopup();
32971        popup.setAttribute("role", params.toast ? "alert" : "dialog");
32972        popup.setAttribute("aria-live", params.toast ? "polite" : "assertive");
32973        if (!params.toast) {
32974          popup.setAttribute("aria-modal", "true");
32975        }
32976      };
32977      const setupRTL = (targetElement) => {
32978        if (window.getComputedStyle(targetElement).direction === "rtl") {
32979          addClass(getContainer(), swalClasses.rtl);
32980        }
32981      };
32982      const init = (params) => {
32983        const oldContainerExisted = resetOldContainer();
32984        if (isNodeEnv()) {
32985          error("SweetAlert2 requires document to initialize");
32986          return;
32987        }
32988        const container = document.createElement("div");
32989        container.className = swalClasses.container;
32990        if (oldContainerExisted) {
32991          addClass(container, swalClasses["no-transition"]);
32992        }
32993        setInnerHtml(container, sweetHTML);
32994        container.dataset["swal2Theme"] = params.theme;
32995        const targetElement = getTarget2(params.target);
32996        targetElement.appendChild(container);
32997        if (params.topLayer) {
32998          container.setAttribute("popover", "");
32999          container.showPopover();
33000        }
33001        setupAccessibility(params);
33002        setupRTL(targetElement);
33003        addInputChangeListeners();
33004      };
33005      const parseHtmlToContainer = (param, target) => {
33006        if (param instanceof HTMLElement) {
33007          target.appendChild(param);
33008        } else if (typeof param === "object") {
33009          handleObject(param, target);
33010        } else if (param) {
33011          setInnerHtml(target, param);
33012        }
33013      };
33014      const handleObject = (param, target) => {
33015        if (param.jquery) {
33016          handleJqueryElem(target, param);
33017        } else {
33018          setInnerHtml(target, param.toString());
33019        }
33020      };
33021      const handleJqueryElem = (target, elem) => {
33022        target.textContent = "";
33023        if (0 in elem) {
33024          for (let i = 0; i in elem; i++) {
33025            target.appendChild(elem[i].cloneNode(true));
33026          }
33027        } else {
33028          target.appendChild(elem.cloneNode(true));
33029        }
33030      };
33031      const renderActions = (instance, params) => {
33032        const actions2 = getActions();
33033        const loader = getLoader();
33034        if (!actions2 || !loader) {
33035          return;
33036        }
33037        if (!params.showConfirmButton && !params.showDenyButton && !params.showCancelButton) {
33038          hide(actions2);
33039        } else {
33040          show(actions2);
33041        }
33042        applyCustomClass(actions2, params, "actions");
33043        renderButtons(actions2, loader, params);
33044        setInnerHtml(loader, params.loaderHtml || "");
33045        applyCustomClass(loader, params, "loader");
33046      };
33047      function renderButtons(actions2, loader, params) {
33048        const confirmButton = getConfirmButton();
33049        const denyButton = getDenyButton();
33050        const cancelButton = getCancelButton();
33051        if (!confirmButton || !denyButton || !cancelButton) {
33052          return;
33053        }
33054        renderButton(confirmButton, "confirm", params);
33055        renderButton(denyButton, "deny", params);
33056        renderButton(cancelButton, "cancel", params);
33057        handleButtonsStyling(confirmButton, denyButton, cancelButton, params);
33058        if (params.reverseButtons) {
33059          if (params.toast) {
33060            actions2.insertBefore(cancelButton, confirmButton);
33061            actions2.insertBefore(denyButton, confirmButton);
33062          } else {
33063            actions2.insertBefore(cancelButton, loader);
33064            actions2.insertBefore(denyButton, loader);
33065            actions2.insertBefore(confirmButton, loader);
33066          }
33067        }
33068      }
33069      function handleButtonsStyling(confirmButton, denyButton, cancelButton, params) {
33070        if (!params.buttonsStyling) {
33071          removeClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
33072          return;
33073        }
33074        addClass([confirmButton, denyButton, cancelButton], swalClasses.styled);
33075        if (params.confirmButtonColor) {
33076          confirmButton.style.setProperty("--swal2-confirm-button-background-color", params.confirmButtonColor);
33077        }
33078        if (params.denyButtonColor) {
33079          denyButton.style.setProperty("--swal2-deny-button-background-color", params.denyButtonColor);
33080        }
33081        if (params.cancelButtonColor) {
33082          cancelButton.style.setProperty("--swal2-cancel-button-background-color", params.cancelButtonColor);
33083        }
33084        applyOutlineColor(confirmButton);
33085        applyOutlineColor(denyButton);
33086        applyOutlineColor(cancelButton);
33087      }
33088      function applyOutlineColor(button) {
33089        const buttonStyle = window.getComputedStyle(button);
33090        if (buttonStyle.getPropertyValue("--swal2-action-button-focus-box-sha
vendor: 7,022 bytes, lines 33090-33268
33090dow")) {
33091          return;
33092        }
33093        const outlineColor = buttonStyle.backgroundColor.replace(/rgba?\((\d+), (\d+), (\d+).*/, "rgba($1, $2, $3, 0.5)");
33094        button.style.setProperty("--swal2-action-button-focus-box-shadow", buttonStyle.getPropertyValue("--swal2-outline").replace(/ rgba\(.*/, ` ${outlineColor}`));
33095      }
33096      function renderButton(button, buttonType, params) {
33097        const buttonName = (
33098          /** @type {'Confirm' | 'Deny' | 'Cancel'} */
33099          capitalizeFirstLetter(buttonType)
33100        );
33101        toggle(button, params[`show${buttonName}Button`], "inline-block");
33102        setInnerHtml(button, params[`${buttonType}ButtonText`] || "");
33103        button.setAttribute("aria-label", params[`${buttonType}ButtonAriaLabel`] || "");
33104        button.className = swalClasses[buttonType];
33105        applyCustomClass(button, params, `${buttonType}Button`);
33106      }
33107      const renderCloseButton = (instance, params) => {
33108        const closeButton = getCloseButton();
33109        if (!closeButton) {
33110          return;
33111        }
33112        setInnerHtml(closeButton, params.closeButtonHtml || "");
33113        applyCustomClass(closeButton, params, "closeButton");
33114        toggle(closeButton, params.showCloseButton);
33115        closeButton.setAttribute("aria-label", params.closeButtonAriaLabel || "");
33116      };
33117      const renderContainer = (instance, params) => {
33118        const container = getContainer();
33119        if (!container) {
33120          return;
33121        }
33122        handleBackdropParam(container, params.backdrop);
33123        handlePositionParam(container, params.position);
33124        handleGrowParam(container, params.grow);
33125        applyCustomClass(container, params, "container");
33126      };
33127      function handleBackdropParam(container, backdrop) {
33128        if (typeof backdrop === "string") {
33129          container.style.background = backdrop;
33130        } else if (!backdrop) {
33131          addClass([document.documentElement, document.body], swalClasses["no-backdrop"]);
33132        }
33133      }
33134      function handlePositionParam(container, position) {
33135        if (!position) {
33136          return;
33137        }
33138        if (position in swalClasses) {
33139          addClass(container, swalClasses[position]);
33140        } else {
33141          warn2('The "position" parameter is not valid, defaulting to "center"');
33142          addClass(container, swalClasses.center);
33143        }
33144      }
33145      function handleGrowParam(container, grow) {
33146        if (!grow) {
33147          return;
33148        }
33149        addClass(container, swalClasses[`grow-${grow}`]);
33150      }
33151      var privateProps = {
33152        innerParams: /* @__PURE__ */ new WeakMap(),
33153        domCache: /* @__PURE__ */ new WeakMap()
33154      };
33155      const inputClasses = ["input", "file", "range", "select", "radio", "checkbox", "textarea"];
33156      const renderInput = (instance, params) => {
33157        const popup = getPopup();
33158        if (!popup) {
33159          return;
33160        }
33161        const innerParams = privateProps.innerParams.get(instance);
33162        const rerender = !innerParams || params.input !== innerParams.input;
33163        inputClasses.forEach((inputClass) => {
33164          const inputContainer = getDirectChildByClass(popup, swalClasses[inputClass]);
33165          if (!inputContainer) {
33166            return;
33167          }
33168          setAttributes(inputClass, params.inputAttributes);
33169          inputContainer.className = swalClasses[inputClass];
33170          if (rerender) {
33171            hide(inputContainer);
33172          }
33173        });
33174        if (params.input) {
33175          if (rerender) {
33176            showInput(params);
33177          }
33178          setCustomClass(params);
33179        }
33180      };
33181      const showInput = (params) => {
33182        if (!params.input) {
33183          return;
33184        }
33185        if (!renderInputType[params.input]) {
33186          error(`Unexpected type of input! Expected ${Object.keys(renderInputType).join(" | ")}, got "${params.input}"`);
33187          return;
33188        }
33189        const inputContainer = getInputContainer(params.input);
33190        if (!inputContainer) {
33191          return;
33192        }
33193        const input = renderInputType[params.input](inputContainer, params);
33194        show(inputContainer);
33195        if (params.inputAutoFocus) {
33196          setTimeout(() => {
33197            focusInput(input);
33198          });
33199        }
33200      };
33201      const removeAttributes = (input) => {
33202        for (let i = 0; i < input.attributes.length; i++) {
33203          const attrName = input.attributes[i].name;
33204          if (!["id", "type", "value", "style"].includes(attrName)) {
33205            input.removeAttribute(attrName);
33206          }
33207        }
33208      };
33209      const setAttributes = (inputClass, inputAttributes) => {
33210        const popup = getPopup();
33211        if (!popup) {
33212          return;
33213        }
33214        const input = getInput$1(popup, inputClass);
33215        if (!input) {
33216          return;
33217        }
33218        removeAttributes(input);
33219        for (const attr in inputAttributes) {
33220          input.setAttribute(attr, inputAttributes[attr]);
33221        }
33222      };
33223      const setCustomClass = (params) => {
33224        if (!params.input) {
33225          return;
33226        }
33227        const inputContainer = getInputContainer(params.input);
33228        if (inputContainer) {
33229          applyCustomClass(inputContainer, params, "input");
33230        }
33231      };
33232      const setInputPlaceholder = (input, params) => {
33233        if (!input.placeholder && params.inputPlaceholder) {
33234          input.placeholder = params.inputPlaceholder;
33235        }
33236      };
33237      const setInputLabel = (input, prependTo, params) => {
33238        if (params.inputLabel) {
33239          const label = document.createElement("label");
33240          const labelClass = swalClasses["input-label"];
33241          label.setAttribute("for", input.id);
33242          label.className = labelClass;
33243          if (typeof params.customClass === "object") {
33244            addClass(label, params.customClass.inputLabel);
33245          }
33246          label.innerText = params.inputLabel;
33247          prependTo.insertAdjacentElement("beforebegin", label);
33248        }
33249      };
33250      const getInputContainer = (inputType) => {
33251        const popup = getPopup();
33252        if (!popup) {
33253          return;
33254        }
33255        return getDirectChildByClass(popup, swalClasses[
33256          /** @type {SwalClass} */
33257          inputType
33258        ] || swalClasses.input);
33259      };
33260      const checkAndSetInputValue = (input, inputValue) => {
33261        if (["string", "number"].includes(typeof inputValue)) {
33262          input.value = `${inputValue}`;
33263        } else if (!isPromise2(inputValue)) {
33264          warn2(`Unexpected type of inputValue! Expected "string", "number" or "Promise", got "${typeof inputValue}"`);
33265        }
33266      };
33267      const renderInputType = {};
33268      renderInputType.text = renderInputType.email = renderInputType.password = renderInputType.number = renderInputType.tel = renderInputType.url = renderInputType.search = renderInputType.date = renderInputType["datetime-local"] = renderInputType.time = renderInputType.week = renderInputType.month = /** @type {(input: Input | HTMLElement, params: SweetAlertOptions) =>
vendor: 21,663 bytes, lines 33268-33828
33268 Input} */
33269      (input, params) => {
33270        checkAndSetInputValue(input, params.inputValue);
33271        setInputLabel(input, input, params);
33272        setInputPlaceholder(input, params);
33273        input.type = params.input;
33274        return input;
33275      };
33276      renderInputType.file = (input, params) => {
33277        setInputLabel(input, input, params);
33278        setInputPlaceholder(input, params);
33279        return input;
33280      };
33281      renderInputType.range = (range, params) => {
33282        const rangeInput = range.querySelector("input");
33283        const rangeOutput = range.querySelector("output");
33284        checkAndSetInputValue(rangeInput, params.inputValue);
33285        rangeInput.type = params.input;
33286        checkAndSetInputValue(rangeOutput, params.inputValue);
33287        setInputLabel(rangeInput, range, params);
33288        return range;
33289      };
33290      renderInputType.select = (select2, params) => {
33291        select2.textContent = "";
33292        if (params.inputPlaceholder) {
33293          const placeholder = document.createElement("option");
33294          setInnerHtml(placeholder, params.inputPlaceholder);
33295          placeholder.value = "";
33296          placeholder.disabled = true;
33297          placeholder.selected = true;
33298          select2.appendChild(placeholder);
33299        }
33300        setInputLabel(select2, select2, params);
33301        return select2;
33302      };
33303      renderInputType.radio = (radio) => {
33304        radio.textContent = "";
33305        return radio;
33306      };
33307      renderInputType.checkbox = (checkboxContainer, params) => {
33308        const checkbox = getInput$1(getPopup(), "checkbox");
33309        checkbox.value = "1";
33310        checkbox.checked = Boolean(params.inputValue);
33311        const label = checkboxContainer.querySelector("span");
33312        setInnerHtml(label, params.inputPlaceholder || params.inputLabel);
33313        return checkbox;
33314      };
33315      renderInputType.textarea = (textarea, params) => {
33316        checkAndSetInputValue(textarea, params.inputValue);
33317        setInputPlaceholder(textarea, params);
33318        setInputLabel(textarea, textarea, params);
33319        const getMargin = (el) => parseInt(window.getComputedStyle(el).marginLeft) + parseInt(window.getComputedStyle(el).marginRight);
33320        setTimeout(() => {
33321          if ("MutationObserver" in window) {
33322            const initialPopupWidth = parseInt(window.getComputedStyle(getPopup()).width);
33323            const textareaResizeHandler = () => {
33324              if (!document.body.contains(textarea)) {
33325                return;
33326              }
33327              const textareaWidth = textarea.offsetWidth + getMargin(textarea);
33328              if (textareaWidth > initialPopupWidth) {
33329                getPopup().style.width = `${textareaWidth}px`;
33330              } else {
33331                applyNumericalStyle(getPopup(), "width", params.width);
33332              }
33333            };
33334            new MutationObserver(textareaResizeHandler).observe(textarea, {
33335              attributes: true,
33336              attributeFilter: ["style"]
33337            });
33338          }
33339        });
33340        return textarea;
33341      };
33342      const renderContent = (instance, params) => {
33343        const htmlContainer = getHtmlContainer();
33344        if (!htmlContainer) {
33345          return;
33346        }
33347        showWhenInnerHtmlPresent(htmlContainer);
33348        applyCustomClass(htmlContainer, params, "htmlContainer");
33349        if (params.html) {
33350          parseHtmlToContainer(params.html, htmlContainer);
33351          show(htmlContainer, "block");
33352        } else if (params.text) {
33353          htmlContainer.textContent = params.text;
33354          show(htmlContainer, "block");
33355        } else {
33356          hide(htmlContainer);
33357        }
33358        renderInput(instance, params);
33359      };
33360      const renderFooter = (instance, params) => {
33361        const footer = getFooter();
33362        if (!footer) {
33363          return;
33364        }
33365        showWhenInnerHtmlPresent(footer);
33366        toggle(footer, params.footer, "block");
33367        if (params.footer) {
33368          parseHtmlToContainer(params.footer, footer);
33369        }
33370        applyCustomClass(footer, params, "footer");
33371      };
33372      const renderIcon = (instance, params) => {
33373        const innerParams = privateProps.innerParams.get(instance);
33374        const icon = getIcon();
33375        if (!icon) {
33376          return;
33377        }
33378        if (innerParams && params.icon === innerParams.icon) {
33379          setContent(icon, params);
33380          applyStyles(icon, params);
33381          return;
33382        }
33383        if (!params.icon && !params.iconHtml) {
33384          hide(icon);
33385          return;
33386        }
33387        if (params.icon && Object.keys(iconTypes).indexOf(params.icon) === -1) {
33388          error(`Unknown icon! Expected "success", "error", "warning", "info" or "question", got "${params.icon}"`);
33389          hide(icon);
33390          return;
33391        }
33392        show(icon);
33393        setContent(icon, params);
33394        applyStyles(icon, params);
33395        addClass(icon, params.showClass && params.showClass.icon);
33396        const colorSchemeQueryList = window.matchMedia("(prefers-color-scheme: dark)");
33397        colorSchemeQueryList.addEventListener("change", adjustSuccessIconBackgroundColor);
33398      };
33399      const applyStyles = (icon, params) => {
33400        for (const [iconType, iconClassName] of Object.entries(iconTypes)) {
33401          if (params.icon !== iconType) {
33402            removeClass(icon, iconClassName);
33403          }
33404        }
33405        addClass(icon, params.icon && iconTypes[params.icon]);
33406        setColor(icon, params);
33407        adjustSuccessIconBackgroundColor();
33408        applyCustomClass(icon, params, "icon");
33409      };
33410      const adjustSuccessIconBackgroundColor = () => {
33411        const popup = getPopup();
33412        if (!popup) {
33413          return;
33414        }
33415        const popupBackgroundColor = window.getComputedStyle(popup).getPropertyValue("background-color");
33416        const successIconParts = popup.querySelectorAll("[class^=swal2-success-circular-line], .swal2-success-fix");
33417        for (let i = 0; i < successIconParts.length; i++) {
33418          successIconParts[i].style.backgroundColor = popupBackgroundColor;
33419        }
33420      };
33421      const successIconHtml = `
33422  <div class="swal2-success-circular-line-left"></div>
33423  <span class="swal2-success-line-tip"></span> <span class="swal2-success-line-long"></span>
33424  <div class="swal2-success-ring"></div> <div class="swal2-success-fix"></div>
33425  <div class="swal2-success-circular-line-right"></div>
33426`;
33427      const errorIconHtml = `
33428  <span class="swal2-x-mark">
33429    <span class="swal2-x-mark-line-left"></span>
33430    <span class="swal2-x-mark-line-right"></span>
33431  </span>
33432`;
33433      const setContent = (icon, params) => {
33434        if (!params.icon && !params.iconHtml) {
33435          return;
33436        }
33437        let oldContent = icon.innerHTML;
33438        let newContent = "";
33439        if (params.iconHtml) {
33440          newContent = iconContent(params.iconHtml);
33441        } else if (params.icon === "success") {
33442          newContent = successIconHtml;
33443          oldContent = oldContent.replace(/ style=".*?"/g, "");
33444        } else if (params.icon === "error") {
33445          newContent = errorIconHtml;
33446        } else if (params.icon) {
33447          const defaultIconHtml = {
33448            question: "?",
33449            warning: "!",
33450            info: "i"
33451          };
33452          newContent = iconContent(defaultIconHtml[params.icon]);
33453        }
33454        if (oldContent.trim() !== newContent.trim()) {
33455          setInnerHtml(icon, newContent);
33456        }
33457      };
33458      const setColor = (icon, params) => {
33459        if (!params.iconColor) {
33460          return;
33461        }
33462        icon.style.color = params.iconColor;
33463        icon.style.borderColor = params.iconColor;
33464        for (const sel of [".swal2-success-line-tip", ".swal2-success-line-long", ".swal2-x-mark-line-left", ".swal2-x-mark-line-right"]) {
33465          setStyle2(icon, sel, "background-color", params.iconColor);
33466        }
33467        setStyle2(icon, ".swal2-success-ring", "border-color", params.iconColor);
33468      };
33469      const iconContent = (content) => `<div class="${swalClasses["icon-content"]}">${content}</div>`;
33470      const renderImage = (instance, params) => {
33471        const image = getImage();
33472        if (!image) {
33473          return;
33474        }
33475        if (!params.imageUrl) {
33476          hide(image);
33477          return;
33478        }
33479        show(image, "");
33480        image.setAttribute("src", params.imageUrl);
33481        image.setAttribute("alt", params.imageAlt || "");
33482        applyNumericalStyle(image, "width", params.imageWidth);
33483        applyNumericalStyle(image, "height", params.imageHeight);
33484        image.className = swalClasses.image;
33485        applyCustomClass(image, params, "image");
33486      };
33487      let dragging = false;
33488      let mousedownX = 0;
33489      let mousedownY = 0;
33490      let initialX = 0;
33491      let initialY = 0;
33492      const addDraggableListeners = (popup) => {
33493        popup.addEventListener("mousedown", down);
33494        document.body.addEventListener("mousemove", move);
33495        popup.addEventListener("mouseup", up);
33496        popup.addEventListener("touchstart", down);
33497        document.body.addEventListener("touchmove", move);
33498        popup.addEventListener("touchend", up);
33499      };
33500      const removeDraggableListeners = (popup) => {
33501        popup.removeEventListener("mousedown", down);
33502        document.body.removeEventListener("mousemove", move);
33503        popup.removeEventListener("mouseup", up);
33504        popup.removeEventListener("touchstart", down);
33505        document.body.removeEventListener("touchmove", move);
33506        popup.removeEventListener("touchend", up);
33507      };
33508      const down = (event) => {
33509        const popup = getPopup();
33510        if (event.target === popup || getIcon().contains(
33511          /** @type {HTMLElement} */
33512          event.target
33513        )) {
33514          dragging = true;
33515          const clientXY = getClientXY(event);
33516          mousedownX = clientXY.clientX;
33517          mousedownY = clientXY.clientY;
33518          initialX = parseInt(popup.style.insetInlineStart) || 0;
33519          initialY = parseInt(popup.style.insetBlockStart) || 0;
33520          addClass(popup, "swal2-dragging");
33521        }
33522      };
33523      const move = (event) => {
33524        const popup = getPopup();
33525        if (dragging) {
33526          let {
33527            clientX,
33528            clientY
33529          } = getClientXY(event);
33530          popup.style.insetInlineStart = `${initialX + (clientX - mousedownX)}px`;
33531          popup.style.insetBlockStart = `${initialY + (clientY - mousedownY)}px`;
33532        }
33533      };
33534      const up = () => {
33535        const popup = getPopup();
33536        dragging = false;
33537        removeClass(popup, "swal2-dragging");
33538      };
33539      const getClientXY = (event) => {
33540        let clientX = 0, clientY = 0;
33541        if (event.type.startsWith("mouse")) {
33542          clientX = /** @type {MouseEvent} */
33543          event.clientX;
33544          clientY = /** @type {MouseEvent} */
33545          event.clientY;
33546        } else if (event.type.startsWith("touch")) {
33547          clientX = /** @type {TouchEvent} */
33548          event.touches[0].clientX;
33549          clientY = /** @type {TouchEvent} */
33550          event.touches[0].clientY;
33551        }
33552        return {
33553          clientX,
33554          clientY
33555        };
33556      };
33557      const renderPopup = (instance, params) => {
33558        const container = getContainer();
33559        const popup = getPopup();
33560        if (!container || !popup) {
33561          return;
33562        }
33563        if (params.toast) {
33564          applyNumericalStyle(container, "width", params.width);
33565          popup.style.width = "100%";
33566          const loader = getLoader();
33567          if (loader) {
33568            popup.insertBefore(loader, getIcon());
33569          }
33570        } else {
33571          applyNumericalStyle(popup, "width", params.width);
33572        }
33573        applyNumericalStyle(popup, "padding", params.padding);
33574        if (params.color) {
33575          popup.style.color = params.color;
33576        }
33577        if (params.background) {
33578          popup.style.background = params.background;
33579        }
33580        hide(getValidationMessage());
33581        addClasses$1(popup, params);
33582        if (params.draggable && !params.toast) {
33583          addClass(popup, swalClasses.draggable);
33584          addDraggableListeners(popup);
33585        } else {
33586          removeClass(popup, swalClasses.draggable);
33587          removeDraggableListeners(popup);
33588        }
33589      };
33590      const addClasses$1 = (popup, params) => {
33591        const showClass = params.showClass || {};
33592        popup.className = `${swalClasses.popup} ${isVisible$1(popup) ? showClass.popup : ""}`;
33593        if (params.toast) {
33594          addClass([document.documentElement, document.body], swalClasses["toast-shown"]);
33595          addClass(popup, swalClasses.toast);
33596        } else {
33597          addClass(popup, swalClasses.modal);
33598        }
33599        applyCustomClass(popup, params, "popup");
33600        if (typeof params.customClass === "string") {
33601          addClass(popup, params.customClass);
33602        }
33603        if (params.icon) {
33604          addClass(popup, swalClasses[`icon-${params.icon}`]);
33605        }
33606      };
33607      const renderProgressSteps = (instance, params) => {
33608        const progressStepsContainer = getProgressSteps();
33609        if (!progressStepsContainer) {
33610          return;
33611        }
33612        const {
33613          progressSteps,
33614          currentProgressStep
33615        } = params;
33616        if (!progressSteps || progressSteps.length === 0 || currentProgressStep === void 0) {
33617          hide(progressStepsContainer);
33618          return;
33619        }
33620        show(progressStepsContainer);
33621        progressStepsContainer.textContent = "";
33622        if (currentProgressStep >= progressSteps.length) {
33623          warn2("Invalid currentProgressStep parameter, it should be less than progressSteps.length (currentProgressStep like JS arrays starts from 0)");
33624        }
33625        progressSteps.forEach((step, index2) => {
33626          const stepEl = createStepElement(step);
33627          progressStepsContainer.appendChild(stepEl);
33628          if (index2 === currentProgressStep) {
33629            addClass(stepEl, swalClasses["active-progress-step"]);
33630          }
33631          if (index2 !== progressSteps.length - 1) {
33632            const lineEl = createLineElement(params);
33633            progressStepsContainer.appendChild(lineEl);
33634          }
33635        });
33636      };
33637      const createStepElement = (step) => {
33638        const stepEl = document.createElement("li");
33639        addClass(stepEl, swalClasses["progress-step"]);
33640        setInnerHtml(stepEl, step);
33641        return stepEl;
33642      };
33643      const createLineElement = (params) => {
33644        const lineEl = document.createElement("li");
33645        addClass(lineEl, swalClasses["progress-step-line"]);
33646        if (params.progressStepsDistance) {
33647          applyNumericalStyle(lineEl, "width", params.progressStepsDistance);
33648        }
33649        return lineEl;
33650      };
33651      const renderTitle = (instance, params) => {
33652        const title = getTitle();
33653        if (!title) {
33654          return;
33655        }
33656        showWhenInnerHtmlPresent(title);
33657        toggle(title, params.title || params.titleText, "block");
33658        if (params.title) {
33659          parseHtmlToContainer(params.title, title);
33660        }
33661        if (params.titleText) {
33662          title.innerText = params.titleText;
33663        }
33664        applyCustomClass(title, params, "title");
33665      };
33666      const render2 = (instance, params) => {
33667        renderPopup(instance, params);
33668        renderContainer(instance, params);
33669        renderProgressSteps(instance, params);
33670        renderIcon(instance, params);
33671        renderImage(instance, params);
33672        renderTitle(instance, params);
33673        renderCloseButton(instance, params);
33674        renderContent(instance, params);
33675        renderActions(instance, params);
33676        renderFooter(instance, params);
33677        const popup = getPopup();
33678        if (typeof params.didRender === "function" && popup) {
33679          params.didRender(popup);
33680        }
33681        globalState.eventEmitter.emit("didRender", popup);
33682      };
33683      const isVisible = () => {
33684        return isVisible$1(getPopup());
33685      };
33686      const clickConfirm = () => {
33687        var _dom$getConfirmButton;
33688        return (_dom$getConfirmButton = getConfirmButton()) === null || _dom$getConfirmButton === void 0 ? void 0 : _dom$getConfirmButton.click();
33689      };
33690      const clickDeny = () => {
33691        var _dom$getDenyButton;
33692        return (_dom$getDenyButton = getDenyButton()) === null || _dom$getDenyButton === void 0 ? void 0 : _dom$getDenyButton.click();
33693      };
33694      const clickCancel = () => {
33695        var _dom$getCancelButton;
33696        return (_dom$getCancelButton = getCancelButton()) === null || _dom$getCancelButton === void 0 ? void 0 : _dom$getCancelButton.click();
33697      };
33698      const DismissReason = Object.freeze({
33699        cancel: "cancel",
33700        backdrop: "backdrop",
33701        close: "close",
33702        esc: "esc",
33703        timer: "timer"
33704      });
33705      const removeKeydownHandler = (globalState2) => {
33706        if (globalState2.keydownTarget && globalState2.keydownHandlerAdded) {
33707          globalState2.keydownTarget.removeEventListener("keydown", globalState2.keydownHandler, {
33708            capture: globalState2.keydownListenerCapture
33709          });
33710          globalState2.keydownHandlerAdded = false;
33711        }
33712      };
33713      const addKeydownHandler = (globalState2, innerParams, dismissWith) => {
33714        removeKeydownHandler(globalState2);
33715        if (!innerParams.toast) {
33716          globalState2.keydownHandler = (e) => keydownHandler(innerParams, e, dismissWith);
33717          globalState2.keydownTarget = innerParams.keydownListenerCapture ? window : getPopup();
33718          globalState2.keydownListenerCapture = innerParams.keydownListenerCapture;
33719          globalState2.keydownTarget.addEventListener("keydown", globalState2.keydownHandler, {
33720            capture: globalState2.keydownListenerCapture
33721          });
33722          globalState2.keydownHandlerAdded = true;
33723        }
33724      };
33725      const setFocus = (index2, increment) => {
33726        var _dom$getPopup;
33727        const focusableElements = getFocusableElements();
33728        if (focusableElements.length) {
33729          index2 = index2 + increment;
33730          if (index2 === -2) {
33731            index2 = focusableElements.length - 1;
33732          }
33733          if (index2 === focusableElements.length) {
33734            index2 = 0;
33735          } else if (index2 === -1) {
33736            index2 = focusableElements.length - 1;
33737          }
33738          focusableElements[index2].focus();
33739          return;
33740        }
33741        (_dom$getPopup = getPopup()) === null || _dom$getPopup === void 0 || _dom$getPopup.focus();
33742      };
33743      const arrowKeysNextButton = ["ArrowRight", "ArrowDown"];
33744      const arrowKeysPreviousButton = ["ArrowLeft", "ArrowUp"];
33745      const keydownHandler = (innerParams, event, dismissWith) => {
33746        if (!innerParams) {
33747          return;
33748        }
33749        if (event.isComposing || event.keyCode === 229) {
33750          return;
33751        }
33752        if (innerParams.stopKeydownPropagation) {
33753          event.stopPropagation();
33754        }
33755        if (event.key === "Enter") {
33756          handleEnter(event, innerParams);
33757        } else if (event.key === "Tab") {
33758          handleTab(event);
33759        } else if ([...arrowKeysNextButton, ...arrowKeysPreviousButton].includes(event.key)) {
33760          handleArrows(event.key);
33761        } else if (event.key === "Escape") {
33762          handleEsc(event, innerParams, dismissWith);
33763        }
33764      };
33765      const handleEnter = (event, innerParams) => {
33766        if (!callIfFunction(innerParams.allowEnterKey)) {
33767          return;
33768        }
33769        const input = getInput$1(getPopup(), innerParams.input);
33770        if (event.target && input && event.target instanceof HTMLElement && event.target.outerHTML === input.outerHTML) {
33771          if (["textarea", "file"].includes(innerParams.input)) {
33772            return;
33773          }
33774          clickConfirm();
33775          event.preventDefault();
33776        }
33777      };
33778      const handleTab = (event) => {
33779        const targetElement = event.target;
33780        const focusableElements = getFocusableElements();
33781        let btnIndex = -1;
33782        for (let i = 0; i < focusableElements.length; i++) {
33783          if (targetElement === focusableElements[i]) {
33784            btnIndex = i;
33785            break;
33786          }
33787        }
33788        if (!event.shiftKey) {
33789          setFocus(btnIndex, 1);
33790        } else {
33791          setFocus(btnIndex, -1);
33792        }
33793        event.stopPropagation();
33794        event.preventDefault();
33795      };
33796      const handleArrows = (key) => {
33797        const actions2 = getActions();
33798        const confirmButton = getConfirmButton();
33799        const denyButton = getDenyButton();
33800        const cancelButton = getCancelButton();
33801        if (!actions2 || !confirmButton || !denyButton || !cancelButton) {
33802          return;
33803        }
33804        const buttons = [confirmButton, denyButton, cancelButton];
33805        if (document.activeElement instanceof HTMLElement && !buttons.includes(document.activeElement)) {
33806          return;
33807        }
33808        const sibling = arrowKeysNextButton.includes(key) ? "nextElementSibling" : "previousElementSibling";
33809        let buttonToFocus = document.activeElement;
33810        if (!buttonToFocus) {
33811          return;
33812        }
33813        for (let i = 0; i < actions2.children.length; i++) {
33814          buttonToFocus = buttonToFocus[sibling];
33815          if (!buttonToFocus) {
33816            return;
33817          }
33818          if (buttonToFocus instanceof HTMLButtonElement && isVisible$1(buttonToFocus)) {
33819            break;
33820          }
33821        }
33822        if (buttonToFocus instanceof HTMLButtonElement) {
33823          buttonToFocus.focus();
33824        }
33825      };
33826      const handleEsc = (event, innerParams, dismissWith) => {
33827        if (callIfFunction(innerParams.allowEscapeKey)) {
33828          event.preventDefault();
33829          dismissWith(DismissReason.esc);
33830        }
33831      };
33832      var privateMethods = {
33833        swalPromiseResolve: /* @__PURE__ */ new WeakMap(),
33834        swalPromiseReject: /* @__PURE__ */ new WeakMap()
33835      };
33836      const setAriaHidden = () => {
33837        const container = getContainer();
33838        const bodyChildren = Array.from(document.body.children);
33839        bodyChildren.forEach((el) => {
33840          if (el.contains(container)) {
33841            return;
33842          }
33843          if (el.hasAttribute("aria-hidden")) {
33844            el.setAttribute("data-previous-aria-hidden", el.getAttribute("aria-hidden") || "");
33845          }
33846          el.setAttribute("aria-hidden", "true");
33847        });
33848      };
33849      const unsetAriaHidden = () => {
33850        const bodyChildren = Array.from(document.body.children);
33851        bodyChildren.forEach((el) => {
33852          if (el.hasAttribute("data-previous-aria-hidden")) {
33853            el.setAttribute("aria-hidden", el.getAttribute("data-previous-aria-hidden") || "");
33854            el.removeAttribute("data-previous-aria-hidden");
33855          } else {
33856            el.removeAttribute("aria-hidden");
33857          }
33858        });
33859      };
33860      const isSafariOrIOS = typeof window !== "undefined" && !!window.GestureEvent;
33861      const iOSfix = () => {
33862        if (isSafariOrIOS && !hasClass(document.body, swalClasses.iosfix)) {
33863          const offset = document.body.scrollTop;
33864          document.body.style.top = `${offset * -1}px`;
33865          addClass(document.body, swalClasses.iosfix);
33866          lockBodyScroll();
33867        }
33868      };
33869      const lockBodyScroll = () => {
33870        const container = getContainer();
33871        if (!container) {
33872          return;
33873        }
33874        let preventTouchMove;
33875        container.ontouchstart = (event) => {
33876          preventTouchMove = shouldPreventTouchMove(event);
33877        };
33878        container.ontouchmove = (event) => {
33879          if (preventTouchMove) {
33880            event.preventDefault();
33881            event.stopPropagation();
33882          }
33883        };
33884      };
33885      const shouldPreventTouchMove = (event) => {
33886        const target = event.target;
33887        const container = getContainer();
33888        const htmlContainer = getHtmlContainer();
33889        if (!container || !htmlContainer) {
33890          return false;
33891        }
33892        if (isStylus(event) || isZoom(event)) {
33893          return false;
33894        }
33895        if (target === container) {
33896          return true;
33897        }
33898        if (!isScrollable(container) && target instanceof HTMLElement && !selfOrParentIsScrollable(target, htmlContainer) && // #2823
33899        target.tagName !== "INPUT" && // #1603
33900        target.tagName !== "TEXTAREA" && // #2266
33901        !(isScrollable(htmlContainer) && // #1944
33902        htmlContainer.contains(target))) {
33903          return true;
33904        }
33905        return false;
33906      };
33907      const isStylus = (event) => {
33908        return event.touches && event.touches.length && event.touches[0].touchType === "stylus";
33909      };
33910      const isZoom = (event) => {
33911        return event.touches && event.touches.length > 1;
33912      };
33913      const undoIOSfix = () => {
33914        if (hasClass(document.body, swalClasses.iosfix)) {
33915          const offset = parseInt(document.body.style.top, 10);
33916          removeClass(document.body, swalClasses.iosfix);
33917          document.body.style.top = "";
33918          document.body.scrollTop = offset * -1;
33919        }
33920      };
33921      const measureScrollbar = () => {
33922        const scrollDiv = document.createElement("div");
33923        scrollDiv.className = swalClasses["scrollbar-measure"];
33924        document.body.appendChild(scrollDiv);
33925        const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
33926        document.body.removeChild(scrollDiv);
33927        return scrollbarWidth;
33928      };
33929      let previousBodyPadding = null;
33930      const replaceScrollbarWithPadding = (initialBodyOverflow) => {
33931        if (previousBodyPadding !== null) {
33932          return;
33933        }
33934        if (document.body.scrollHeight > window.innerHeight || initialBodyOverflow === "scroll") {
33935          previousBodyPadding = parseInt(window.getComputedStyle(document.body).getPropertyValue("padding-right"));
33936          document.body.style.paddingRight = `${previousBodyPadding + measureScrollbar()}px`;
33937        }
33938      };
33939      const undoReplaceScrollbarWithPadding = () => {
33940        if (previousBodyPadding !== null) {
33941          document.body.style.paddingRight = `${previousBodyPadding}px`;
33942          previousBodyPadding = null;
33943        }
33944      };
vendor: 10,166 bytes, lines 33945-34193
33945      function removePopupAndResetState(instance, container, returnFocus, didClose) {
33946        if (isToast()) {
33947          triggerDidCloseAndDispose(instance, didClose);
33948        } else {
33949          restoreActiveElement(returnFocus).then(() => triggerDidCloseAndDispose(instance, didClose));
33950          removeKeydownHandler(globalState);
33951        }
33952        if (isSafariOrIOS) {
33953          container.setAttribute("style", "display:none !important");
33954          container.removeAttribute("class");
33955          container.innerHTML = "";
33956        } else {
33957          container.remove();
33958        }
33959        if (isModal()) {
33960          undoReplaceScrollbarWithPadding();
33961          undoIOSfix();
33962          unsetAriaHidden();
33963        }
33964        removeBodyClasses();
33965      }
33966      function removeBodyClasses() {
33967        removeClass([document.documentElement, document.body], [swalClasses.shown, swalClasses["height-auto"], swalClasses["no-backdrop"], swalClasses["toast-shown"]]);
33968      }
33969      function close(resolveValue2) {
33970        resolveValue2 = prepareResolveValue(resolveValue2);
33971        const swalPromiseResolve = privateMethods.swalPromiseResolve.get(this);
33972        const didClose = triggerClosePopup(this);
33973        if (this.isAwaitingPromise) {
33974          if (!resolveValue2.isDismissed) {
33975            handleAwaitingPromise(this);
33976            swalPromiseResolve(resolveValue2);
33977          }
33978        } else if (didClose) {
33979          swalPromiseResolve(resolveValue2);
33980        }
33981      }
33982      const triggerClosePopup = (instance) => {
33983        const popup = getPopup();
33984        if (!popup) {
33985          return false;
33986        }
33987        const innerParams = privateProps.innerParams.get(instance);
33988        if (!innerParams || hasClass(popup, innerParams.hideClass.popup)) {
33989          return false;
33990        }
33991        removeClass(popup, innerParams.showClass.popup);
33992        addClass(popup, innerParams.hideClass.popup);
33993        const backdrop = getContainer();
33994        removeClass(backdrop, innerParams.showClass.backdrop);
33995        addClass(backdrop, innerParams.hideClass.backdrop);
33996        handlePopupAnimation(instance, popup, innerParams);
33997        return true;
33998      };
33999      function rejectPromise(error2) {
34000        const rejectPromise2 = privateMethods.swalPromiseReject.get(this);
34001        handleAwaitingPromise(this);
34002        if (rejectPromise2) {
34003          rejectPromise2(error2);
34004        }
34005      }
34006      const handleAwaitingPromise = (instance) => {
34007        if (instance.isAwaitingPromise) {
34008          delete instance.isAwaitingPromise;
34009          if (!privateProps.innerParams.get(instance)) {
34010            instance._destroy();
34011          }
34012        }
34013      };
34014      const prepareResolveValue = (resolveValue2) => {
34015        if (typeof resolveValue2 === "undefined") {
34016          return {
34017            isConfirmed: false,
34018            isDenied: false,
34019            isDismissed: true
34020          };
34021        }
34022        return Object.assign({
34023          isConfirmed: false,
34024          isDenied: false,
34025          isDismissed: false
34026        }, resolveValue2);
34027      };
34028      const handlePopupAnimation = (instance, popup, innerParams) => {
34029        var _globalState$eventEmi;
34030        const container = getContainer();
34031        const animationIsSupported = hasCssAnimation(popup);
34032        if (typeof innerParams.willClose === "function") {
34033          innerParams.willClose(popup);
34034        }
34035        (_globalState$eventEmi = globalState.eventEmitter) === null || _globalState$eventEmi === void 0 || _globalState$eventEmi.emit("willClose", popup);
34036        if (animationIsSupported) {
34037          animatePopup(instance, popup, container, innerParams.returnFocus, innerParams.didClose);
34038        } else {
34039          removePopupAndResetState(instance, container, innerParams.returnFocus, innerParams.didClose);
34040        }
34041      };
34042      const animatePopup = (instance, popup, container, returnFocus, didClose) => {
34043        globalState.swalCloseEventFinishedCallback = removePopupAndResetState.bind(null, instance, container, returnFocus, didClose);
34044        const swalCloseAnimationFinished = function(e) {
34045          if (e.target === popup) {
34046            var _globalState$swalClos;
34047            (_globalState$swalClos = globalState.swalCloseEventFinishedCallback) === null || _globalState$swalClos === void 0 || _globalState$swalClos.call(globalState);
34048            delete globalState.swalCloseEventFinishedCallback;
34049            popup.removeEventListener("animationend", swalCloseAnimationFinished);
34050            popup.removeEventListener("transitionend", swalCloseAnimationFinished);
34051          }
34052        };
34053        popup.addEventListener("animationend", swalCloseAnimationFinished);
34054        popup.addEventListener("transitionend", swalCloseAnimationFinished);
34055      };
34056      const triggerDidCloseAndDispose = (instance, didClose) => {
34057        setTimeout(() => {
34058          var _globalState$eventEmi2;
34059          if (typeof didClose === "function") {
34060            didClose.bind(instance.params)();
34061          }
34062          (_globalState$eventEmi2 = globalState.eventEmitter) === null || _globalState$eventEmi2 === void 0 || _globalState$eventEmi2.emit("didClose");
34063          if (instance._destroy) {
34064            instance._destroy();
34065          }
34066        });
34067      };
34068      const showLoading = (buttonToReplace) => {
34069        let popup = getPopup();
34070        if (!popup) {
34071          new Swal2();
34072        }
34073        popup = getPopup();
34074        if (!popup) {
34075          return;
34076        }
34077        const loader = getLoader();
34078        if (isToast()) {
34079          hide(getIcon());
34080        } else {
34081          replaceButton(popup, buttonToReplace);
34082        }
34083        show(loader);
34084        popup.setAttribute("data-loading", "true");
34085        popup.setAttribute("aria-busy", "true");
34086        popup.focus();
34087      };
34088      const replaceButton = (popup, buttonToReplace) => {
34089        const actions2 = getActions();
34090        const loader = getLoader();
34091        if (!actions2 || !loader) {
34092          return;
34093        }
34094        if (!buttonToReplace && isVisible$1(getConfirmButton())) {
34095          buttonToReplace = getConfirmButton();
34096        }
34097        show(actions2);
34098        if (buttonToReplace) {
34099          hide(buttonToReplace);
34100          loader.setAttribute("data-button-to-replace", buttonToReplace.className);
34101          actions2.insertBefore(loader, buttonToReplace);
34102        }
34103        addClass([popup, actions2], swalClasses.loading);
34104      };
34105      const handleInputOptionsAndValue = (instance, params) => {
34106        if (params.input === "select" || params.input === "radio") {
34107          handleInputOptions(instance, params);
34108        } else if (["text", "email", "number", "tel", "textarea"].some((i) => i === params.input) && (hasToPromiseFn(params.inputValue) || isPromise2(params.inputValue))) {
34109          showLoading(getConfirmButton());
34110          handleInputValue(instance, params);
34111        }
34112      };
34113      const getInputValue = (instance, innerParams) => {
34114        const input = instance.getInput();
34115        if (!input) {
34116          return null;
34117        }
34118        switch (innerParams.input) {
34119          case "checkbox":
34120            return getCheckboxValue2(input);
34121          case "radio":
34122            return getRadioValue(input);
34123          case "file":
34124            return getFileValue(input);
34125          default:
34126            return innerParams.inputAutoTrim ? input.value.trim() : input.value;
34127        }
34128      };
34129      const getCheckboxValue2 = (input) => input.checked ? 1 : 0;
34130      const getRadioValue = (input) => input.checked ? input.value : null;
34131      const getFileValue = (input) => input.files && input.files.length ? input.getAttribute("multiple") !== null ? input.files : input.files[0] : null;
34132      const handleInputOptions = (instance, params) => {
34133        const popup = getPopup();
34134        if (!popup) {
34135          return;
34136        }
34137        const processInputOptions = (inputOptions) => {
34138          if (params.input === "select") {
34139            populateSelectOptions(popup, formatInputOptions(inputOptions), params);
34140          } else if (params.input === "radio") {
34141            populateRadioOptions(popup, formatInputOptions(inputOptions), params);
34142          }
34143        };
34144        if (hasToPromiseFn(params.inputOptions) || isPromise2(params.inputOptions)) {
34145          showLoading(getConfirmButton());
34146          asPromise(params.inputOptions).then((inputOptions) => {
34147            instance.hideLoading();
34148            processInputOptions(inputOptions);
34149          });
34150        } else if (typeof params.inputOptions === "object") {
34151          processInputOptions(params.inputOptions);
34152        } else {
34153          error(`Unexpected type of inputOptions! Expected object, Map or Promise, got ${typeof params.inputOptions}`);
34154        }
34155      };
34156      const handleInputValue = (instance, params) => {
34157        const input = instance.getInput();
34158        if (!input) {
34159          return;
34160        }
34161        hide(input);
34162        asPromise(params.inputValue).then((inputValue) => {
34163          input.value = params.input === "number" ? `${parseFloat(inputValue) || 0}` : `${inputValue}`;
34164          show(input);
34165          input.focus();
34166          instance.hideLoading();
34167        }).catch((err) => {
34168          error(`Error in inputValue promise: ${err}`);
34169          input.value = "";
34170          show(input);
34171          input.focus();
34172          instance.hideLoading();
34173        });
34174      };
34175      function populateSelectOptions(popup, inputOptions, params) {
34176        const select2 = getDirectChildByClass(popup, swalClasses.select);
34177        if (!select2) {
34178          return;
34179        }
34180        const renderOption = (parent, optionLabel, optionValue) => {
34181          const option = document.createElement("option");
34182          option.value = optionValue;
34183          setInnerHtml(option, optionLabel);
34184          option.selected = isSelected(optionValue, params.inputValue);
34185          parent.appendChild(option);
34186        };
34187        inputOptions.forEach((inputOption) => {
34188          const optionValue = inputOption[0];
34189          const optionLabel = inputOption[1];
34190          if (Array.isArray(optionLabel)) {
34191            const optgroup = document.createElement("optgroup");
34192            optgroup.label = optionValue;
34193            optgroup.disabled = false;
34194            select2.appendChild(optgroup);
34195            optionLabel.forEach((o) => renderOption(optgroup, o[1], o[0]));
34196          } else {
34197            renderOption(select2, optionLabel, optionValue);
34198          }
34199        });
34200        select2.focus();
34201      }
34202      function populateRadioOptions(popup, inputOptions, params) {
34203        const radio = getDirectChildByClass(popup, swalClasses.radio);
34204        if (!radio) {
34205          return;
34206        }
34207        inputOptions.forEach((inputOption) => {
34208          const radioValue = inputOption[0];
34209          const radioLabel = inputOption[1];
34210          const radioInput = document.createElement("input");
34211          const radioLabelElement = document.createElement("label");
34212          radioInput.type = "radio";
34213          radioInput.name = swalClasses.radio;
34214          radioInput.value = radioValue;
34215          if (isSelected(radioValue, params.inputValue)) {
34216            radioInput.checked = true;
34217          }
34218          const label = document.createElement("span");
34219          setInnerHtml(label, radioLabel);
34220          label.className = swalClasses.label;
34221          radioLabelElement.appendChild(radioInput);
34222          radioLabelElement.appendChild(label);
34223          radio.appendChild(radioLabelElement);
34224        });
34225        const radios = radio.querySelectorAll("input");
34226        if (radios.length) {
34227          radios[0].focus();
34228        }
34229      }
34230      const formatInputOptions = (inputOptions) => {
34231        const result = [];
34232        if (inputOptions instanceof Map) {
34233          inputOptions.forEach((value, key) => {
34234            let valueFormatted = value;
34235            if (typeof valueFormatted === "object") {
34236              valueFormatted = formatInputOptions(valueFormatted);
34237            }
34238            result.push([key, valueFormatted]);
34239          });
34240        } else {
34241          Object.keys(inputOptions).forEach((key) => {
34242            let valueFormatted = inputOptions[key];
34243            if (typeof valueFormatted === "object") {
34244              valueFormatted = formatInputOptions(valueFormatted);
34245            }
34246            result.push([key, valueFormatted]);
34247          });
34248        }
34249        return result;
34250      };
34251      const isSelected = (optionValue, inputValue) => {
34252        return !!inputValue && inputValue.toString() === optionValue.toString();
34253      };
34254      const handleConfirmButtonClick = (instance) => {
34255        const innerParams = privateProps.innerParams.get(instance);
34256        instance.disableButtons();
34257        if (innerParams.input) {
34258          handleConfirmOrDenyWithInput(instance, "confirm");
34259        } else {
34260          confirm(instance, true);
34261        }
34262      };
34263      const handleDenyButtonClick = (instance) => {
34264        const innerParams = privateProps.innerParams.get(instance);
34265        instance.disableButtons();
34266        if (innerParams.returnInputValueOnDeny) {
34267          handleConfirmOrDenyWithInput(instance, "deny");
34268        } else {
34269          deny(instance, false);
34270        }
34271      };
34272      const handleCancelButtonClick = (instance, dismissWith) => {
34273        instance.disableButtons();
34274        dismissWith(DismissReason.cancel);
34275      };
34276      const handleConfirmOrDenyWithInput = (instance, type) => {
34277        const innerParams = privateProps.innerParams.get(instance);
34278        if (!innerParams.input) {
34279          error(`The "input" parameter is needed to be set when using returnInputValueOn${capitalizeFirstLetter(type)}`);
34280          return;
34281        }
34282        const input = instance.getInput();
34283        const inputValue = getInputValue(instance, innerParams);
34284        if (innerParams.inputValidator) {
34285          handleInputValidator(instance, inputValue, type);
34286        } else if (input && !input.checkValidity()) {
34287          instance.enableButtons();
34288          instance.showValidationMessage(innerParams.validationMessage || input.validationMessage);
34289        } else if (type === "deny") {
34290          deny(instance, inputValue);
34291        } else {
34292          confirm(instance, inputValue);
34293        }
34294      };
34295      const handleInputValidator = (instance, inputValue, type) => {
34296        const innerParams = privateProps.innerParams.get(instance);
34297        instance.disableInput();
34298        const validationPromise = Promise.resolve().then(() => asPromise(innerParams.inputValidator(inputValue, innerParams.validationMessage)));
34299        validationPromise.then((validationMessage) => {
34300          instance.enableButtons();
34301          instance.enableInput();
34302          if (validationMessage) {
34303            instance.showValidationMessage(validationMessage);
34304          } else if (type === "deny") {
34305            deny(instance, inputValue);
34306          } else {
34307            confirm(instance, inputValue);
34308          }
34309        });
34310      };
34311      const deny = (instance, value) => {
34312        const innerParams = privateProps.innerParams.get(instance || void 0);
34313        if (innerParams.showLoaderOnDeny) {
34314          showLoading(getDenyButton());
34315        }
34316        if (innerParams.preDeny) {
34317          instance.isAwaitingPromise = true;
34318          const preDenyPromise = Promise.resolve().then(() => asPromise(innerParams.preDeny(value, innerParams.validationMessage)));
34319          preDenyPromise.then((preDenyValue) => {
34320            if (preDenyValue === false) {
34321              instance.hideLoading();
34322              handleAwaitingPromise(instance);
34323            } else {
34324              instance.close({
34325                isDenied: true,
34326                value: typeof preDenyValue === "undefined" ? value : preDenyValue
34327              });
34328            }
34329          }).catch((error2) => rejectWith(instance || void 0, error2));
34330        } else {
34331          instance.close({
34332            isDenied: true,
34333            value
34334          });
34335        }
34336      };
34337      const succeedWith = (instance, value) => {
34338        instance.close({
34339          isConfirmed: true,
34340          value
34341        });
34342      };
34343      const rejectWith = (instance, error2) => {
34344        instance.rejectPromise(error2);
34345      };
34346      const confirm = (instance, value) => {
34347        const innerParams = privateProps.innerParams.get(instance || void 0);
34348        if (innerParams.showLoaderOnConfirm) {
34349          showLoading();
34350        }
34351        if (innerParams.preConfirm) {
34352          instance.resetValidationMessage();
34353          instance.isAwaitingPromise = true;
34354          const preConfirmPromise = Promise.resolve().then(() => asPromise(innerParams.preConfirm(value, innerParams.validationMessage)));
34355          preConfirmPromise.then((preConfirmValue) => {
34356            if (isVisible$1(getValidationMessage()) || preConfirmValue === false) {
34357              instance.hideLoading();
34358              handleAwaitingPromise(instance);
34359            } else {
34360              succeedWith(instance, typeof preConfirmValue === "undefined" ? value : preConfirmValue);
34361            }
34362          }).catch((error2) => rejectWith(instance || void 0, error2));
34363        } else {
34364          succeedWith(instance, value);
34365        }
34366      };
34367      function hideLoading() {
34368        const innerParams = privateProps.innerParams.get(this);
34369        if (!innerParams) {
34370          return;
34371        }
34372        const domCache = privateProps.domCache.get(this);
34373        hide(domCache.loader);
34374        if (isToast()) {
34375          if (innerParams.icon) {
34376            show(getIcon());
34377          }
34378        } else {
34379          showRelatedButton(domCache);
34380        }
34381        removeClass([domCache.popup, domCache.actions], swalClasses.loading);
34382        domCache.popup.removeAttribute("aria-busy");
34383        domCache.popup.removeAttribute("data-loading");
34384        domCache.confirmButton.disabled = false;
34385        domCache.denyButton.disabled = false;
34386        domCache.cancelButton.disabled = false;
34387      }
34388      const showRelatedButton = (domCache) => {
34389        const buttonToReplace = domCache.popup.getElementsByClassName(domCache.loader.getAttribute("data-button-to-replace"));
34390        if (buttonToReplace.length) {
34391          show(buttonToReplace[0], "inline-block");
34392        } else if (allButtonsAreHidden()) {
34393          hide(domCache.actions);
34394        }
34395      };
34396      function getInput() {
34397        const innerParams = privateProps.innerParams.get(this);
34398        const domCache = privateProps.domCache.get(this);
34399        if (!domCache) {
34400          return null;
34401        }
34402        return getInput$1(domCache.popup, innerParams.input);
34403      }
34404      function setButtonsDisabled(instance, buttons, disabled) {
34405        const domCache = privateProps.domCache.get(instance);
34406        buttons.forEach((button) => {
34407          domCache[button].disabled = disabled;
34408        });
34409      }
34410      function setInputDisabled(input, disabled) {
34411        const popup = getPopup();
34412        if (!popup || !input) {
34413          return;
34414        }
34415        if (input.type === "radio") {
34416          const radios = popup.querySelectorAll(`[name="${swalClasses.radio}"]`);
34417          for (let i = 0; i < radios.length; i++) {
34418            radios[i].disabled = disabled;
34419          }
34420        } else {
34421          input.disabled = disabled;
34422        }
34423      }
34424      function enableButtons() {
34425        setButtonsDisabled(this, ["confirmButton", "denyButton", "cancelButton"], false);
34426      }
34427      function disableButtons() {
34428        setButtonsDisabled(this, ["confirmButton", "denyButton", "cancelButton"], true);
34429      }
34430      function enableInput() {
34431        setInputDisabled(this.getInput(), false);
34432      }
34433      function disableInput() {
34434        setInputDisabled(this.getInput(), true);
34435      }
34436      function showValidationMessage(error2) {
34437        const domCache = privateProps.domCache.get(this);
34438        const params = privateProps.innerParams.get(this);
34439        setInnerHtml(domCache.validationMessage, error2);
34440        domCache.validationMessage.className = swalClasses["validation-message"];
34441        if (params.customClass && params.customClass.validationMessage) {
34442          addClass(domCache.validationMessage, params.customClass.validationMessage);
34443        }
34444        show(domCache.validationMessage);
34445        const input = this.getInput();
34446        if (input) {
34447          input.setAttribute("aria-invalid", "true");
34448          input.setAttribute("aria-describedby", swalClasses["validation-message"]);
34449          focusInput(input);
34450          addClass(input, swalClasses.inputerror);
34451        }
34452      }
34453      function resetValidationMessage() {
34454        const domCache = privateProps.domCache.get(this);
34455        if (domCache.validationMessage) {
34456          hide(domCache.validationMessage);
34457        }
34458        const input = this.getInput();
34459        if (input) {
34460          input.removeAttribute("aria-invalid");
34461          input.removeAttribute("aria-describedby");
34462          removeClass(input, swalClasses.inputerror);
34463        }
34464      }
34465      const defaultParams = {
34466        title: "",
34467        titleText: "",
34468        text: "",
34469        html: "",
34470        footer: "",
34471        icon: void 0,
34472        iconColor: void 0,
34473        iconHtml: void 0,
34474        template: void 0,
34475        toast: false,
34476        draggable: false,
34477        animation: true,
34478        theme: "light",
34479        showClass: {
34480          popup: "swal2-show",
34481          backdrop: "swal2-backdrop-show",
34482          icon: "swal2-icon-show"
34483        },
34484        hideClass: {
34485          popup: "swal2-hide",
34486          backdrop: "swal2-backdrop-hide",
34487          icon: "swal2-icon-hide"
34488        },
34489        customClass: {},
34490        target: "body",
34491        color: void 0,
34492        backdrop: true,
34493        heightAuto: true,
34494        allowOutsideClick: true,
34495        allowEscapeKey: true,
34496        allowEnterKey: true,
34497        stopKeydownPropagation: true,
34498        keydownListenerCapture: false,
34499        showConfirmButton: true,
34500        showDenyButton: false,
34501        showCancelButton: false,
34502        preConfirm: void 0,
34503        preDeny: void 0,
34504        confirmButtonText: "OK",
34505        confirmButtonAriaLabel: "",
34506        confirmButtonColor: void 0,
34507        denyButtonText: "No",
34508        denyButtonAriaLabel: "",
34509        denyButtonColor: void 0,
34510        cancelButtonText: "Cancel",
34511        cancelButtonAriaLabel: "",
34512        cancelButtonColor: void 0,
34513        buttonsStyling: true,
34514        reverseButtons: false,
34515        focusConfirm: true,
34516        focusDeny: false,
34517        focusCancel: false,
34518        returnFocus: true,
34519        showCloseButton: false,
34520        closeButtonHtml: "&times;",
34521        closeButtonAriaLabel: "Close this dialog",
34522        loaderHtml: "",
34523        showLoaderOnConfirm: false,
34524        showLoaderOnDeny: false,
34525        imageUrl: void 0,
34526        imageWidth: void 0,
34527        imageHeight: void 0,
34528        imageAlt: "",
34529        timer: void 0,
34530        timerProgressBar: false,
34531        width: void 0,
34532        padding: void 0,
34533        background: void 0,
34534        input: void 0,
34535        inputPlaceholder: "",
34536        inputLabel: "",
34537        inputValue: "",
34538        inputOptions: {},
34539        inputAutoFocus: true,
34540        inputAutoTrim: true,
34541        inputAttributes: {},
34542        inputValidator: void 0,
34543        returnInputValueOnDeny: false,
34544        validationMessage: void 0,
34545        grow: false,
34546        position: "center",
34547        progressSteps: [],
34548        currentProgressStep: void 0,
34549        progressStepsDistance: void 0,
34550        willOpen: void 0,
34551        didOpen: void 0,
34552        didRender: void 0,
34553        willClose: void 0,
34554        didClose: void 0,
34555        didDestroy: void 0,
34556        scrollbarPadding: true,
34557        topLayer: false
34558      };
34559      const updatableParams = ["allowEscapeKey", "allowOutsideClick", "background", "buttonsStyling", "cancelButtonAriaLabel", "cancelButtonColor", "cancelButtonText", "closeButtonAriaLabel", "closeButtonHtml", "color", "confirmButtonAriaLabel", "confirmButtonColor", "confirmButtonText", "currentProgressStep", "customClass", "denyButtonAriaLabel", "denyButtonColor", "denyButtonText", "didClose", "didDestroy", "draggable", "footer", "hideClass", "html", "icon", "iconColor", "iconHtml", "imageAlt", "imageHeight", "imageUrl", "imageWidth", "preConfirm", "preDeny", "progressSteps", "returnFocus", "reverseButtons", "showCancelButton", "showCloseButton", "showConfirmButton", "showDenyButton", "text", "title", "titleText", "theme", "willClose"];
34560      const deprecatedParams = {
34561        allowEnterKey: void 0
34562      };
34563      const toastIncompatibleParams = ["allowOutsideClick", "allowEnterKey", "backdrop", "draggable", "focusConfirm", "focusDeny", "focusCancel", "returnFocus", "heightAuto", "keydownListenerCapture"];
34564      const isValidParameter = (paramName) => {
34565        return Object.prototype.hasOwnProperty.call(defaultParams, paramName);
34566      };
34567      const isUpdatableParameter = (paramName) => {
34568        return updatableParams.indexOf(paramName) !== -1;
34569      };
34570      const isDeprecatedParameter = (paramName) => {
34571        return deprecatedParams[paramName];
34572      };
34573      const checkIfParamIsValid = (param) => {
34574        if (!isValidParameter(param)) {
34575          warn2(`Unknown parameter "${param}"`);
34576        }
34577      };
34578      const checkIfToastParamIsValid = (param) => {
34579        if (toastIncompatibleParams.includes(param)) {
34580          warn2(`The parameter "${param}" is incompatible with toasts`);
34581        }
34582      };
34583      const checkIfParamIsDeprecated = (param) => {
34584        const isDeprecated = isDeprecatedParameter(param);
34585        if (isDeprecated) {
34586          warnAboutDeprecation(param, isDeprecated);
34587        }
34588      };
34589      const showWarningsForParams = (params) => {
34590        if (params.backdrop === false && params.allowOutsideClick) {
34591          warn2('"allowOutsideClick" parameter requires `backdrop` parameter to be set to `true`');
34592        }
34593        if (params.theme && !["light", "dark", "auto", "minimal", "borderless", "embed-iframe", "bulma", "bulma-light", "bulma-dark"].includes(params.theme)) {
34594          warn2(`Invalid theme "${params.theme}"`);
34595        }
34596        for (const param in params) {
34597          checkIfParamIsValid(param);
34598          if (params.toast) {
34599            checkIfToastParamIsValid(param);
34600          }
34601          checkIfParamIsDeprecated(param);
34602        }
34603      };
34604      function update4(params) {
34605        const container = getContainer();
34606        const popup = getPopup();
34607        const innerParams = privateProps.innerParams.get(this);
34608        if (!popup || hasClass(popup, innerParams.hideClass.popup)) {
34609          warn2(`You're trying to update the closed or closing popup, that won't work. Use the update() method in preConfirm parameter or show a new popup.`);
34610          return;
34611        }
34612        const validUpdatableParams = filterValidParams(params);
34613        const updatedParams = Object.assign({}, innerParams, validUpdatableParams);
34614        showWarningsForParams(updatedParams);
34615        container.dataset["swal2Theme"] = updatedParams.theme;
34616        render2(this, updatedParams);
34617        privateProps.innerParams.set(this, updatedParams);
34618        Object.defineProperties(this, {
34619          params: {
34620            value: Object.assign({}, this.params, params),
34621            writable: false,
34622            enumerable: true
34623          }
34624        });
34625      }
34626      const filterValidParams = (params) => {
34627        const validUpdatableParams = {};
34628        Object.keys(params).forEach((param) => {
34629          if (isUpdatableParameter(param)) {
34630            validUpdatableParams[param] = params[param];
34631          } else {
34632            warn2(`Invalid parameter to update: ${param}`);
34633          }
34634        });
34635        return validUpdatableParams;
34636      };
34637      function _destroy() {
34638        const domCache = privateProps.domCache.get(this);
34639        const innerParams = privateProps.innerParams.get(this);
34640        if (!innerParams) {
34641          disposeWeakMaps(this);
34642          return;
34643        }
34644        if (domCache.popup && globalState.swalCloseEventFinishedCallback) {
34645          globalState.swalCloseEventFinishedCallback();
34646          delete globalState.swalCloseEventFinishedCallback;
34647        }
34648        if (typeof innerParams.didDestroy === "function") {
34649          innerParams.didDestroy();
34650        }
34651        globalState.eventEmitter.emit("didDestroy");
34652        disposeSwal(this);
34653      }
34654      const disposeSwal = (instance) => {
34655        disposeWeakMaps(instance);
34656        delete instance.params;
34657        delete globalState.keydownHandler;
34658        delete globalState.keydownTarget;
34659        delete globalState.currentInstance;
34660      };
34661      const disposeWeakMaps = (instance) => {
34662        if (instance.isAwaitingPromise) {
34663          unsetWeakMaps(privateProps, instance);
34664          instance.isAwaitingPromise = true;
34665        } else {
34666          unsetWeakMaps(privateMethods, instance);
34667          unsetWeakMaps(privateProps, instance);
34668          delete instance.isAwaitingPromise;
34669          delete instance.disableButtons;
34670          delete instance.enableButtons;
34671          delete instance.getInput;
34672          delete instance.disableInput;
34673          delete instance.enableInput;
34674          delete instance.hideLoading;
34675          delete instance.disableLoading;
34676          delete instance.showValidationMessage;
34677          delete instance.resetValidationMessage;
34678          delete instance.close;
34679          delete instance.closePopup;
34680          delete instance.closeModal;
34681          delete instance.closeToast;
34682          delete instance.rejectPromise;
34683          delete instance.update;
34684          delete instance._destroy;
34685        }
34686      };
34687      const unsetWeakMaps = (obj, instance) => {
34688        for (const i in obj) {
34689          obj[i].delete(instance);
34690        }
34691      };
34692      var instanceMethods = /* @__PURE__ */ Object.freeze({
34693        __proto__: null,
34694        _destroy,
34695        close,
34696        closeModal: close,
34697        closePopup: close,
34698        closeToast: close,
34699        disableButtons,
34700        disableInput,
34701        disableLoading: hideLoading,
34702        enableButtons,
34703        enableInput,
34704        getInput,
34705        handleAwaitingPromise,
34706        hideLoading,
34707        rejectPromise,
34708        resetValidationMessage,
34709        showValidationMessage,
34710        update: update4
34711      });
34712      const handlePopupClick = (innerParams, domCache, dismissWith) => {
34713        if (innerParams.toast) {
34714          handleToastClick(innerParams, domCache, dismissWith);
34715        } else {
34716          handleModalMousedown(domCache);
34717          handleContainerMousedown(domCache);
34718          handleModalClick(innerParams, domCache, dismissWith);
34719        }
34720      };
34721      const handleToastClick = (innerParams, domCache, dismissWith) => {
34722        domCache.popup.onclick = () => {
34723          if (innerParams && (isAnyButtonShown(innerParams) || innerParams.timer || innerParams.input)) {
34724            return;
34725          }
34726          dismissWith(DismissReason.close);
34727        };
34728      };
34729      const isAnyButtonShown = (innerParams) => {
34730        return !!(innerParams.showConfirmButton || innerParams.showDenyButton || innerParams.showCancelButton || innerParams.showCloseButton);
34731      };
34732      let ignoreOutsideClick = false;
34733      const handleModalMousedown = (domCache) => {
34734        domCache.popup.onmousedown = () => {
34735          domCache.container.onmouseup = function(e) {
34736            domCache.container.onmouseup = () => {
34737            };
34738            if (e.target === domCache.container) {
34739              ignoreOutsideClick = true;
34740            }
34741          };
34742        };
34743      };
34744      const handleContainerMousedown = (domCache) => {
34745        domCache.container.onmousedown = (e) => {
34746          if (e.target === domCache.container) {
34747            e.preventDefault();
34748          }
34749          domCache.popup.onmouseup = function(e2) {
34750            domCache.popup.onmouseup = () => {
34751            };
34752            if (e2.target === domCache.popup || e2.target instanceof HTMLElement && domCache.popup.contains(e2.target)) {
34753              ignoreOutsideClick = true;
34754            }
34755          };
34756        };
34757      };
34758      const handleModalClick = (innerParams, domCache, dismissWith) => {
34759        domCache.container.onclick = (e) => {
34760          if (ignoreOutsideClick) {
34761            ignoreOutsideClick = false;
34762            return;
34763          }
34764          if (e.target === domCache.container && callIfFunction(innerParams.allowOutsideClick)) {
34765            dismissWith(DismissReason.backdrop);
34766          }
34767        };
34768      };
34769      const isJqueryElement = (elem) => typeof elem === "object" && elem.jquery;
34770      const isElement = (elem) => elem instanceof Element || isJqueryElement(elem);
34771      const argsToParams = (args) => {
34772        const params = {};
34773        if (typeof args[0] === "object" && !isElement(args[0])) {
34774          Object.assign(params, args[0]);
34775        } else {
34776          ["title", "html", "icon"].forEach((name, index2) => {
34777            const arg = args[index2];
34778            if (typeof arg === "string" || isElement(arg)) {
34779              params[name] = arg;
34780            } else if (arg !== void 0) {
34781              error(`Unexpected type of ${name}! Expected "string" or "Element", got ${typeof arg}`);
34782            }
34783          });
34784        }
34785        return params;
34786      };
34787      function fire(...args) {
34788        return new this(...args);
34789      }
34790      function mixin(mixinParams) {
34791        class MixinSwal extends this {
34792          _main(params, priorityMixinParams) {
34793            return super._main(params, Object.assign({}, mixinParams, priorityMixinParams));
34794          }
34795        }
34796        return MixinSwal;
34797      }
34798      const getTimerLeft = () => {
34799        return globalState.timeout && globalState.timeout.getTimerLeft();
34800      };
34801      const stopTimer = () => {
34802        if (globalState.timeout) {
34803          stopTimerProgressBar();
34804          return globalState.timeout.stop();
34805        }
34806      };
34807      const resumeTimer = () => {
34808        if (globalState.timeout) {
34809          const remaining = globalState.timeout.start();
34810          animateTimerProgressBar(remaining);
34811          return remaining;
34812        }
34813      };
34814      const toggleTimer = () => {
34815        const timer = globalState.timeout;
34816        return timer && (timer.running ? stopTimer() : resumeTimer());
34817      };
34818      const increaseTimer = (ms) => {
34819        if (globalState.timeout) {
34820          const remaining = globalState.timeout.increase(ms);
34821          animateTimerProgressBar(remaining, true);
34822          return remaining;
34823        }
34824      };
34825      const isTimerRunning = () => {
34826        return !!(globalState.timeout && globalState.timeout.isRunning());
34827      };
34828      let bodyClickListenerAdded = false;
34829      const clickHandlers = {};
34830      function bindClickHandler(attr = "data-swal-template") {
34831        clickHandlers[attr] = this;
34832        if (!bodyClickListenerAdded) {
34833          document.body.addEventListener("click", bodyClickListener);
34834          bodyClickListenerAdded = true;
34835        }
34836      }
34837      const bodyClickListener = (event) => {
34838        for (let el = event.target; el && el !== document; el = el.parentNode) {
34839          for (const attr in clickHandlers) {
34840            const template = el.getAttribute(attr);
34841            if (template) {
34842              clickHandlers[attr].fire({
34843                template
34844              });
34845              return;
34846            }
34847          }
34848        }
34849      };
34850      class EventEmitter {
34851        constructor() {
34852          this.events = {};
34853        }
34854        /**
34855         * @param {string} eventName
34856         * @returns {EventHandlers}
34857         */
34858        _getHandlersByEventName(eventName) {
34859          if (typeof this.events[eventName] === "undefined") {
34860            this.events[eventName] = [];
34861          }
34862          return this.events[eventName];
34863        }
34864        /**
34865         * @param {string} eventName
34866         * @param {EventHandler} eventHandler
34867         */
34868        on(eventName, eventHandler) {
34869          const currentHandlers = this._getHandlersByEventName(eventName);
34870          if (!currentHandlers.includes(eventHandler)) {
34871            currentHandlers.push(eventHandler);
34872          }
34873        }
34874        /**
34875         * @param {string} eventName
34876         * @param {EventHandler} eventHandler
34877         */
34878        once(eventName, eventHandler) {
34879          const onceFn = (...args) => {
34880            this.removeListener(eventName, onceFn);
34881            eventHandler.apply(this, args);
34882          };
34883          this.on(eventName, onceFn);
34884        }
34885        /**
34886         * @param {string} eventName
34887         * @param {Array} args
34888         */
34889        emit(eventName, ...args) {
34890          this._getHandlersByEventName(eventName).forEach(
34891            /**
34892             * @param {EventHandler} eventHandler
34893             */
34894            (eventHandler) => {
34895              try {
34896                eventHandler.apply(this, args);
34897              } catch (error2) {
34898                console.error(error2);
34899              }
34900            }
34901          );
34902        }
34903        /**
34904         * @param {string} eventName
34905         * @param {EventHandler} eventHandler
34906         */
34907        removeListener(eventName, eventHandler) {
34908          const currentHandlers = this._getHandlersByEventName(eventName);
34909          const index2 = currentHandlers.indexOf(eventHandler);
34910          if (index2 > -1) {
34911            currentHandlers.splice(index2, 1);
34912          }
34913        }
34914        /**
34915         * @param {string} eventName
34916         */
34917        removeAllListeners(eventName) {
34918          if (this.events[eventName] !== void 0) {
34919            this.events[eventName].length = 0;
34920          }
34921        }
34922        reset() {
34923          this.events = {};
34924        }
34925      }
34926      globalState.eventEmitter = new EventEmitter();
34927      const on = (eventName, eventHandler) => {
34928        globalState.eventEmitter.on(eventName, eventHandler);
34929      };
34930      const once = (eventName, eventHandler) => {
34931        globalState.eventEmitter.once(eventName, eventHandler);
34932      };
34933      const off = (eventName, eventHandler) => {
34934        if (!eventName) {
34935          globalState.eventEmitter.reset();
34936          return;
34937        }
34938        if (eventHandler) {
34939          globalState.eventEmitter.removeListener(eventName, eventHandler);
34940        } else {
34941          globalState.eventEmitter.removeAllListeners(eventName);
34942        }
34943      };
34944      var staticMethods = /* @__PURE__ */ Object.freeze({
34945        __proto__: null,
34946        argsToParams,
34947        bindClickHandler,
34948        clickCancel,
34949        clickConfirm,
34950        clickDeny,
34951        enableLoading: showLoading,
34952        fire,
34953        getActions,
34954        getCancelButton,
34955        getCloseButton,
34956        getConfirmButton,
34957        getContainer,
34958        getDenyButton,
34959        getFocusableElements,
34960        getFooter,
34961        getHtmlContainer,
34962        getIcon,
34963        getIconContent,
34964        getImage,
34965        getInputLabel,
34966        getLoader,
34967        getPopup,
34968        getProgressSteps,
34969        getTimerLeft,
34970        getTimerProgressBar,
34971        getTitle,
34972        getValidationMessage,
34973        increaseTimer,
34974        isDeprecatedParameter,
34975        isLoading,
34976        isTimerRunning,
34977        isUpdatableParameter,
34978        isValidParameter,
34979        isVisible,
34980        mixin,
34981        off,
34982        on,
34983        once,
34984        resumeTimer,
34985        showLoading,
34986        stopTimer,
34987        toggleTimer
34988      });
34989      class Timer {
34990        /**
34991         * @param {Function} callback
34992         * @param {number} delay
34993         */
34994        constructor(callback, delay) {
34995          this.callback = callback;
34996          this.remaining = delay;
34997          this.running = false;
34998          this.start();
34999        }
35000        /**
35001         * @returns {number}
35002         */
35003        start() {
35004          if (!this.running) {
35005            this.running = true;
35006            this.started = /* @__PURE__ */ new Date();
35007            this.id = setTimeout(this.callback, this.remaining);
35008          }
35009          return this.remaining;
35010        }
35011        /**
35012         * @returns {number}
35013         */
35014        stop() {
35015          if (this.started && this.running) {
35016            this.running = false;
35017            clearTimeout(this.id);
35018            this.remaining -= (/* @__PURE__ */ new Date()).getTime() - this.started.getTime();
35019          }
35020          return this.remaining;
35021        }
35022        /**
35023         * @param {number} n
35024         * @returns {number}
35025         */
35026        increase(n) {
35027          const running = this.running;
35028          if (running) {
35029            this.stop();
35030          }
35031          this.remaining += n;
35032          if (running) {
35033            this.start();
35034          }
35035          return this.remaining;
35036        }
35037        /**
35038         * @returns {number}
35039         */
35040        getTimerLeft() {
35041          if (this.running) {
35042            this.stop();
35043            this.start();
35044          }
35045          return this.remaining;
35046        }
35047        /**
35048         * @returns {boolean}
35049         */
35050        isRunning() {
35051          return this.running;
35052        }
35053      }
35054      const swalStringParams = ["swal-title", "swal-html", "swal-footer"];
35055      const getTemplateParams = (params) => {
35056        const template = typeof params.template === "string" ? (
35057          /** @type {HTMLTemplateElement} */
35058          document.querySelector(params.template)
35059        ) : params.template;
35060        if (!template) {
35061          return {};
35062        }
35063        const templateContent = template.content;
35064        showWarningsForElements(templateContent);
35065        const result = Object.assign(getSwalParams(templateContent), getSwalFunctionParams(templateContent), getSwalButtons(templateContent), getSwalImage(templateContent), getSwalIcon(templateContent), getSwalInput(templateContent), getSwalStringParams(templateContent, swalStringParams));
35066        return result;
35067      };
35068      const getSwalParams = (templateContent) => {
35069        const result = {};
35070        const swalParams = Array.from(templateContent.querySelectorAll("swal-param"));
35071        swalParams.forEach((param) => {
35072          showWarningsForAttributes(param, ["name", "value"]);
35073          const paramName = (
35074            /** @type {keyof SweetAlertOptions} */
35075            param.getAttribute("name")
35076          );
35077          const value = param.getAttribute("value");
35078          if (!paramName || !value) {
35079            return;
35080          }
35081          if (typeof defaultParams[paramName] === "boolean") {
35082            result[paramName] = value !== "false";
35083          } else if (typeof defaultParams[paramName] === "object") {
35084            result[paramName] = JSON.parse(value);
35085          } else {
35086            result[paramName] = value;
35087          }
35088        });
35089        return result;
35090      };
35091      const getSwalFunctionParams = (templateContent) => {
35092        const result = {};
35093        const swalFunctions = Array.from(templateContent.querySelectorAll("swal-function-param"));
35094        swalFunctions.forEach((param) => {
35095          const paramName = (
35096            /** @type {keyof SweetAlertOptions} */
35097            param.getAttribute("name")
35098          );
35099          const value = param.getAttribute("value");
35100          if (!paramName || !value) {
35101            return;
35102          }
35103          result[paramName] = new Function(`return ${value}`)();
35104        });
35105        return result;
35106      };
35107      const getSwalButtons = (templateContent) => {
35108        const result = {};
35109        const swalButtons = Array.from(templateContent.querySelectorAll("swal-button"));
35110        swalButtons.forEach((button) => {
35111          showWarningsForAttributes(button, ["type", "color", "aria-label"]);
35112          const type = button.getAttribute("type");
35113          if (!type || !["confirm", "cancel", "deny"].includes(type)) {
35114            return;
35115          }
35116          result[`${type}ButtonText`] = button.innerHTML;
35117          result[`show${capitalizeFirstLetter(type)}Button`] = true;
35118          if (button.hasAttribute("color")) {
35119            result[`${type}ButtonColor`] = button.getAttribute("color");
35120          }
35121          if (button.hasAttribute("aria-label")) {
35122            result[`${type}ButtonAriaLabel`] = button.getAttribute("aria-label");
35123          }
35124        });
35125        return result;
35126      };
35127      const getSwalImage = (templateContent) => {
35128        const result = {};
35129        const image = templateContent.querySelector("swal-image");
35130        if (image) {
35131          showWarningsForAttributes(image, ["src", "width", "height", "alt"]);
35132          if (image.hasAttribute("src")) {
35133            result.imageUrl = image.getAttribute("src") || void 0;
35134          }
35135          if (image.hasAttribute("width")) {
35136            result.imageWidth = image.getAttribute("width") || void 0;
35137          }
35138          if (image.hasAttribute("height")) {
35139            result.imageHeight = image.getAttribute("height") || void 0;
35140          }
35141          if (image.hasAttribute("alt")) {
35142            result.imageAlt = image.getAttribute("alt") || void 0;
35143          }
35144        }
35145        return result;
35146      };
35147      const getSwalIcon = (templateContent) => {
35148        const result = {};
35149        const icon = templateContent.querySelector("swal-icon");
35150        if (icon) {
35151          showWarningsForAttributes(icon, ["type", "color"]);
35152          if (icon.hasAttribute("type")) {
35153            result.icon = icon.getAttribute("type");
35154          }
35155          if (icon.hasAttribute("color")) {
35156            result.iconColor = icon.getAttribute("color");
35157          }
35158          result.iconHtml = icon.innerHTML;
35159        }
35160        return result;
35161      };
35162      const getSwalInput = (templateContent) => {
35163        const result = {};
35164        const input = templateContent.querySelector("swal-input");
35165        if (input) {
35166          showWarningsForAttributes(input, ["type", "label", "placeholder", "value"]);
35167          result.input = input.getAttribute("type") || "text";
35168          if (input.hasAttribute("label")) {
35169            result.inputLabel = input.getAttribute("label");
35170          }
35171          if (input.hasAttribute("placeholder")) {
35172            result.inputPlaceholder = input.getAttribute("placeholder");
35173          }
35174          if (input.hasAttribute("value")) {
35175            result.inputValue = input.getAttribute("value");
35176          }
35177        }
35178        const inputOptions = Array.from(templateContent.querySelectorAll("swal-input-option"));
35179        if (inputOptions.length) {
35180          result.inputOptions = {};
35181          inputOptions.forEach((option) => {
35182            showWarningsForAttributes(option, ["value"]);
35183            const optionValue = option.getAttribute("value");
35184            if (!optionValue) {
35185              return;
35186            }
35187            const optionName = option.innerHTML;
35188            result.inputOptions[optionValue] = optionName;
35189          });
35190        }
35191        return result;
35192      };
35193      const getSwalStringParams = (templateContent, paramNames) => {
35194        const result = {};
35195        for (const i in paramNames) {
35196          const paramName = paramNames[i];
35197          const tag = templateContent.querySelector(paramName);
35198          if (tag) {
35199            showWarningsForAttributes(tag, []);
35200            result[paramName.replace(/^swal-/, "")] = tag.innerHTML.trim();
35201          }
35202        }
35203        return result;
35204      };
35205      const showWarningsForElements = (templateContent) => {
35206        const allowedElements = swalStringParams.concat(["swal-param", "swal-function-param", "swal-button", "swal-image", "swal-icon", "swal-input", "swal-input-option"]);
vendor: 5,101 bytes, lines 35207-35323
35207        Array.from(templateContent.children).forEach((el) => {
35208          const tagName = el.tagName.toLowerCase();
35209          if (!allowedElements.includes(tagName)) {
35210            warn2(`Unrecognized element <${tagName}>`);
35211          }
35212        });
35213      };
35214      const showWarningsForAttributes = (el, allowedAttributes) => {
35215        Array.from(el.attributes).forEach((attribute) => {
35216          if (allowedAttributes.indexOf(attribute.name) === -1) {
35217            warn2([`Unrecognized attribute "${attribute.name}" on <${el.tagName.toLowerCase()}>.`, `${allowedAttributes.length ? `Allowed attributes are: ${allowedAttributes.join(", ")}` : "To set the value, use HTML within the element."}`]);
35218          }
35219        });
35220      };
35221      const SHOW_CLASS_TIMEOUT = 10;
35222      const openPopup = (params) => {
35223        const container = getContainer();
35224        const popup = getPopup();
35225        if (typeof params.willOpen === "function") {
35226          params.willOpen(popup);
35227        }
35228        globalState.eventEmitter.emit("willOpen", popup);
35229        const bodyStyles = window.getComputedStyle(document.body);
35230        const initialBodyOverflow = bodyStyles.overflowY;
35231        addClasses2(container, popup, params);
35232        setTimeout(() => {
35233          setScrollingVisibility(container, popup);
35234        }, SHOW_CLASS_TIMEOUT);
35235        if (isModal()) {
35236          fixScrollContainer(container, params.scrollbarPadding, initialBodyOverflow);
35237          setAriaHidden();
35238        }
35239        if (!isToast() && !globalState.previousActiveElement) {
35240          globalState.previousActiveElement = document.activeElement;
35241        }
35242        if (typeof params.didOpen === "function") {
35243          setTimeout(() => params.didOpen(popup));
35244        }
35245        globalState.eventEmitter.emit("didOpen", popup);
35246        removeClass(container, swalClasses["no-transition"]);
35247      };
35248      const swalOpenAnimationFinished = (event) => {
35249        const popup = getPopup();
35250        if (event.target !== popup) {
35251          return;
35252        }
35253        const container = getContainer();
35254        popup.removeEventListener("animationend", swalOpenAnimationFinished);
35255        popup.removeEventListener("transitionend", swalOpenAnimationFinished);
35256        container.style.overflowY = "auto";
35257      };
35258      const setScrollingVisibility = (container, popup) => {
35259        if (hasCssAnimation(popup)) {
35260          container.style.overflowY = "hidden";
35261          popup.addEventListener("animationend", swalOpenAnimationFinished);
35262          popup.addEventListener("transitionend", swalOpenAnimationFinished);
35263        } else {
35264          container.style.overflowY = "auto";
35265        }
35266      };
35267      const fixScrollContainer = (container, scrollbarPadding, initialBodyOverflow) => {
35268        iOSfix();
35269        if (scrollbarPadding && initialBodyOverflow !== "hidden") {
35270          replaceScrollbarWithPadding(initialBodyOverflow);
35271        }
35272        setTimeout(() => {
35273          container.scrollTop = 0;
35274        });
35275      };
35276      const addClasses2 = (container, popup, params) => {
35277        addClass(container, params.showClass.backdrop);
35278        if (params.animation) {
35279          popup.style.setProperty("opacity", "0", "important");
35280          show(popup, "grid");
35281          setTimeout(() => {
35282            addClass(popup, params.showClass.popup);
35283            popup.style.removeProperty("opacity");
35284          }, SHOW_CLASS_TIMEOUT);
35285        } else {
35286          show(popup, "grid");
35287        }
35288        addClass([document.documentElement, document.body], swalClasses.shown);
35289        if (params.heightAuto && params.backdrop && !params.toast) {
35290          addClass([document.documentElement, document.body], swalClasses["height-auto"]);
35291        }
35292      };
35293      var defaultInputValidators = {
35294        /**
35295         * @param {string} string
35296         * @param {string} [validationMessage]
35297         * @returns {Promise<string | void>}
35298         */
35299        email: (string, validationMessage) => {
35300          return /^[a-zA-Z0-9.+_'-]+@[a-zA-Z0-9.-]+\.[a-zA-Z0-9-]+$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || "Invalid email address");
35301        },
35302        /**
35303         * @param {string} string
35304         * @param {string} [validationMessage]
35305         * @returns {Promise<string | void>}
35306         */
35307        url: (string, validationMessage) => {
35308          return /^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-z]{2,63}\b([-a-zA-Z0-9@:%_+.~#?&/=]*)$/.test(string) ? Promise.resolve() : Promise.resolve(validationMessage || "Invalid URL");
35309        }
35310      };
35311      function setDefaultInputValidators(params) {
35312        if (params.inputValidator) {
35313          return;
35314        }
35315        if (params.input === "email") {
35316          params.inputValidator = defaultInputValidators["email"];
35317        }
35318        if (params.input === "url") {
35319          params.inputValidator = defaultInputValidators["url"];
35320        }
35321      }
35322      function validateCustomTargetElement(params) {
35323        if (!params.target || typeof params.target === "string" && !document.querySelector(params.target) || typeof params.target !== "string" && !params.target.appendChild) {
35324          warn2('Target parameter is not valid, defaulting to "body"');
35325          params.target = "body";
35326        }
35327      }
35328      function setParameters(params) {
35329        setDefaultInputValidators(params);
35330        if (params.showLoaderOnConfirm && !params.preConfirm) {
35331          warn2("showLoaderOnConfirm is set to true, but preConfirm is not defined.\nshowLoaderOnConfirm should be used together with preConfirm, see usage example:\nhttps://sweetalert2.github.io/#ajax-request");
35332        }
35333        validateCustomTargetElement(params);
35334        if (typeof params.title === "string") {
35335          params.title = params.title.split("\n").join("<br />");
35336        }
35337        init(params);
35338      }
35339      let currentInstance2;
35340      var _promise = /* @__PURE__ */ new WeakMap();
35341      class SweetAlert {
35342        /**
35343         * @param {...any} args
35344         * @this {SweetAlert}
35345         */
35346        constructor(...args) {
35347          _classPrivateFieldInitSpec(this, _promise, void 0);
35348          if (typeof window === "undefined") {
35349            return;
35350          }
35351          currentInstance2 = this;
35352          const outerParams = Object.freeze(this.constructor.argsToParams(args));
35353          this.params = outerParams;
35354          this.isAwaitingPromise = false;
35355          _classPrivateFieldSet2(_promise, this, this._main(currentInstance2.params));
35356        }
35357        _main(userParams, mixinParams = {}) {
35358          showWarningsForParams(Object.assign({}, mixinParams, userParams));
35359          if (globalState.currentInstance) {
35360            const swalPromiseResolve = privateMethods.swalPromiseResolve.get(globalState.currentInstance);
35361            const {
35362              isAwaitingPromise
35363            } = globalState.currentInstance;
35364            globalState.currentInstance._destroy();
35365            if (!isAwaitingPromise) {
35366              swalPromiseResolve({
35367                isDismissed: true
35368              });
35369            }
35370            if (isModal()) {
35371              unsetAriaHidden();
35372            }
35373          }
35374          globalState.currentInstance = currentInstance2;
35375          const innerParams = prepareParams(userParams, mixinParams);
35376          setParameters(innerParams);
35377          Object.freeze(innerParams);
35378          if (globalState.timeout) {
35379            globalState.timeout.stop();
35380            delete globalState.timeout;
35381          }
35382          clearTimeout(globalState.restoreFocusTimeout);
35383          const domCache = populateDomCache(currentInstance2);
35384          render2(currentInstance2, innerParams);
35385          privateProps.innerParams.set(currentInstance2, innerParams);
35386          return swalPromise(currentInstance2, domCache, innerParams);
35387        }
35388        // `catch` cannot be the name of a module export, so we define our thenable methods here instead
35389        then(onFulfilled) {
35390          return _classPrivateFieldGet2(_promise, this).then(onFulfilled);
35391        }
35392        finally(onFinally) {
35393          return _classPrivateFieldGet2(_promise, this).finally(onFinally);
35394        }
35395      }
35396      const swalPromise = (instance, domCache, innerParams) => {
35397        return new Promise((resolve2, reject) => {
35398          const dismissWith = (dismiss) => {
35399            instance.close({
35400              isDismissed: true,
35401              dismiss
35402            });
35403          };
35404          privateMethods.swalPromiseResolve.set(instance, resolve2);
35405          privateMethods.swalPromiseReject.set(instance, reject);
35406          domCache.confirmButton.onclick = () => {
35407            handleConfirmButtonClick(instance);
35408          };
35409          domCache.denyButton.onclick = () => {
35410            handleDenyButtonClick(instance);
35411          };
35412          domCache.cancelButton.onclick = () => {
35413            handleCancelButtonClick(instance, dismissWith);
35414          };
35415          domCache.closeButton.onclick = () => {
35416            dismissWith(DismissReason.close);
35417          };
35418          handlePopupClick(innerParams, domCache, dismissWith);
35419          addKeydownHandler(globalState, innerParams, dismissWith);
35420          handleInputOptionsAndValue(instance, innerParams);
35421          openPopup(innerParams);
35422          setupTimer(globalState, innerParams, dismissWith);
35423          initFocus(domCache, innerParams);
35424          setTimeout(() => {
35425            domCache.container.scrollTop = 0;
35426          });
35427        });
35428      };
35429      const prepareParams = (userParams, mixinParams) => {
35430        const templateParams = getTemplateParams(userParams);
35431        const params = Object.assign({}, defaultParams, mixinParams, templateParams, userParams);
35432        params.showClass = Object.assign({}, defaultParams.showClass, params.showClass);
35433        params.hideClass = Object.assign({}, defaultParams.hideClass, params.hideClass);
35434        if (params.animation === false) {
35435          params.showClass = {
35436            backdrop: "swal2-noanimation"
35437          };
35438          params.hideClass = {};
35439        }
35440        return params;
35441      };
35442      const populateDomCache = (instance) => {
35443        const domCache = {
35444          popup: getPopup(),
35445          container: getContainer(),
35446          actions: getActions(),
35447          confirmButton: getConfirmButton(),
35448          denyButton: getDenyButton(),
35449          cancelButton: getCancelButton(),
35450          loader: getLoader(),
35451          closeButton: getCloseButton(),
35452          validationMessage: getValidationMessage(),
35453          progressSteps: getProgressSteps()
35454        };
35455        privateProps.domCache.set(instance, domCache);
35456        return domCache;
35457      };
35458      const setupTimer = (globalState2, innerParams, dismissWith) => {
35459        const timerProgressBar = getTimerProgressBar();
35460        hide(timerProgressBar);
35461        if (innerParams.timer) {
35462          globalState2.timeout = new Timer(() => {
35463            dismissWith("timer");
35464            delete globalState2.timeout;
35465          }, innerParams.timer);
35466          if (innerParams.timerProgressBar) {
35467            show(timerProgressBar);
35468            applyCustomClass(timerProgressBar, innerParams, "timerProgressBar");
35469            setTimeout(() => {
35470              if (globalState2.timeout && globalState2.timeout.running) {
35471                animateTimerProgressBar(innerParams.timer);
35472              }
35473            });
35474          }
35475        }
35476      };
35477      const initFocus = (domCache, innerParams) => {
35478        if (innerParams.toast) {
35479          return;
35480        }
35481        if (!callIfFunction(innerParams.allowEnterKey)) {
35482          warnAboutDeprecation("allowEnterKey");
35483          blurActiveElement();
35484          return;
35485        }
35486        if (focusAutofocus(domCache)) {
35487          return;
35488        }
35489        if (focusButton(domCache, innerParams)) {
35490          return;
35491        }
35492        setFocus(-1, 1);
35493      };
35494      const focusAutofocus = (domCache) => {
35495        const autofocusElements = Array.from(domCache.popup.querySelectorAll("[autofocus]"));
35496        for (const autofocusElement of autofocusElements) {
35497          if (autofocusElement instanceof HTMLElement && isVisible$1(autofocusElement)) {
35498            autofocusElement.focus();
35499            return true;
35500          }
35501        }
35502        return false;
35503      };
35504      const focusButton = (domCache, innerParams) => {
35505        if (innerParams.focusDeny && isVisible$1(domCache.denyButton)) {
35506          domCache.denyButton.focus();
35507          return true;
35508        }
35509        if (innerParams.focusCancel && isVisible$1(domCache.cancelButton)) {
35510          domCache.cancelButton.focus();
35511          return true;
35512        }
35513        if (innerParams.focusConfirm && isVisible$1(domCache.confirmButton)) {
35514          domCache.confirmButton.focus();
35515          return true;
35516        }
35517        return false;
35518      };
35519      const blurActiveElement = () => {
35520        if (document.activeElement instanceof HTMLElement && typeof document.activeElement.blur === "function") {
35521          document.activeElement.blur();
35522        }
35523      };
35524      if (typeof window !== "undefined" && /^ru\b/.test(navigator.language) && location.host.match(/\.(ru|su|by|xn--p1ai)$/)) {
35525        const now2 = /* @__PURE__ */ new Date();
35526        const initiationDate = localStorage.getItem("swal-initiation");
35527        if (!initiationDate) {
35528          localStorage.setItem("swal-initiation", `${now2}`);
35529        } else if ((now2.getTime() - Date.parse(initiationDate)) / (1e3 * 60 * 60 * 24) > 3) {
35530          setTimeout(() => {
35531            document.body.style.pointerEvents = "none";
35532            const ukrainianAnthem = document.createElement("audio");
35533            ukrainianAnthem.src = "https://flag-gimn.ru/wp-content/uploads/2021/09/Ukraina.mp3";
35534            ukrainianAnthem.loop = true;
35535            document.body.appendChild(ukrainianAnthem);
35536            setTimeout(() => {
35537              ukrainianAnthem.play().catch(() => {
35538              });
35539            }, 2500);
35540          }, 500);
35541        }
35542      }
35543      SweetAlert.prototype.disableButtons = disableButtons;
35544      SweetAlert.prototype.enableButtons = enableButtons;
35545      SweetAlert.prototype.getInput = getInput;
35546      SweetAlert.prototype.disableInput = disableInput;
35547      SweetAlert.prototype.enableInput = enableInput;
35548      SweetAlert.prototype.hideLoading = hideLoading;
35549      SweetAlert.prototype.disableLoading = hideLoading;
35550      SweetAlert.prototype.showValidationMessage = showValidationMessage;
35551      SweetAlert.prototype.resetValidationMessage = resetValidationMessage;
35552      SweetAlert.prototype.close = close;
35553      SweetAlert.prototype.closePopup = close;
35554      SweetAlert.prototype.closeModal = close;
35555      SweetAlert.prototype.closeToast = close;
35556      SweetAlert.prototype.rejectPromise = rejectPromise;
35557      SweetAlert.prototype.update = update4;
35558      SweetAlert.prototype._destroy = _destroy;
35559      Object.assign(SweetAlert, staticMethods);
35560      Object.keys(instanceMethods).forEach((key) => {
35561        SweetAlert[key] = function(...args) {
35562          if (currentInstance2 && currentInstance2[key]) {
35563            return currentInstance2[key](...args);
35564          }
35565          return null;
35566        };
35567      });
35568      SweetAlert.DismissReason = DismissReason;
35569      SweetAlert.version = "11.22.0";
35570      const Swal2 = SweetAlert;
35571      Swal2.default = Swal2;
35572      return Swal2;
35573    });
35574    if (typeof sweetalert2 !== "undefined" && sweetalert2.Sweetalert2) {
35575      sweetalert2.swal = sweetalert2.sweetAlert = sweetalert2.Swal = sweetalert2.SweetAlert = sweetalert2.Sweetalert2;
35576    }
35577  })(sweetalert2$1);
35578  return sweetalert2$1.exports;
35579}
35580var sweetalert2Exports = requireSweetalert2();
35581const Swal = /* @__PURE__ */ getDefaultExportFromCjs(sweetalert2Exports);
35582const _sfc_main$1x = {
35583  name: "AnchorTarget"
35584  // components: {},
35585  // props: {},
35586  // data() {return{};},
35587  // computed: {},
35588  // methods: {},
35589  // Livecycle hooks
35590  // created() {},
35591  // mounted() {},
35592  // updated() {},
35593  // beforeDestroy() {},
35594};
35595const _hoisted_1$1r = { class: "anchor-target" };
35596function _sfc_render$1v(_ctx, _cache, $props, $setup, $data, $options) {
35597  return openBlock(), createElementBlock("span", _hoisted_1$1r);
35598}
35599const AnchorTarget = /* @__PURE__ */ _export_sfc(_sfc_main$1x, [["render", _sfc_render$1v]]);
35600const _sfc_main$1w = {
35601  name: "AudioPlayer",
35602  props: {
35603    imgSource: {
35604      type: String,
35605      default: ""
35606    },
35607    imgAlt: {
35608      type: String,
35609      default: ""
35610    },
35611    audioSource: {
35612      type: String,
35613      default: ""
35614    }
35615  },
35616  data() {
35617    return {
35618      seekPrecision: 5e3,
35619      seekValue: 0,
35620      currentTime: 0,
35621      displayTime: "00:00",
35622      displayDuration: "00:00",
35623      currentVolume: 1,
35624      lastVolume: 1,
35625      muted: false,
35626      paused: true
35627    };
35628  },
35629  // computed: {},
35630  // watch: {},
35631  // Livecycle hooks
35632  // created() {},
35633  //  mounted() {},
35634  // updated() {},
35635  // beforeDestroy() {},
35636  methods: {
35637    play() {
35638      this.$refs.audioPlayer.play();
35639    },
35640    pause() {
35641      this.$refs.audioPlayer.pause();
35642    },
35643    stop() {
35644      const { audioPlayer } = this.$refs;
35645      audioPlayer.pause();
35646      audioPlayer.currentTime = 0;
35647    },
35648    onPlaying() {
35649      const { audioPlayer } = this.$refs;
35650      if (!audioPlayer) {
35651        return;
35652      }
35653      this.currentTime = audioPlayer.currentTime;
35654      this.displayTime = this.getTimeString(this.currentTime);
35655      this.seekValue = audioPlayer.currentTime / audioPlayer.duration * this.seekPrecision;
35656    },
35657    onSeek() {
35658      const { audioPlayer } = this.$refs;
35659      const seekto = audioPlayer.duration * (this.seekValue / this.seekPrecision);
35660      audioPlayer.currentTime = seekto;
35661    },
35662    onSeekVolume() {
35663      const { audioPlayer } = this.$refs;
35664      audioPlayer.volume = this.currentVolume;
35665      this.muted = this.currentVolume == 0;
35666    },
35667    onAudioLoaded() {
35668      const { audioPlayer } = this.$refs;
35669      this.displayDuration = this.getTimeString(audioPlayer.duration);
35670    },
35671    onAudioEnded() {
35672      this.paused = true;
35673    },
35674    onTogglePlay() {
35675      const { audioPlayer } = this.$refs;
35676      if (audioPlayer.paused) {
35677        this.$refs.audioPlayer.play();
35678        this.paused = false;
35679      } else {
35680        this.$refs.audioPlayer.pause();
35681        this.paused = true;
35682      }
35683    },
35684    onToggleMute() {
35685      const { audioPlayer } = this.$refs;
35686      if (this.muted === false) {
35687        this.lastVolume = this.currentVolume;
35688        audioPlayer.volume = 0;
35689        this.currentVolume = 0;
35690        this.muted = true;
35691      } else {
35692        this.muted = false;
35693        this.currentVolume = this.lastVolume;
35694        audioPlayer.volume = this.lastVolume;
35695      }
35696    },
35697    getTimeString(duration) {
35698      let seconds = Math.floor(duration) % 60;
35699      let minutes = Math.floor(duration / 60) % 60;
35700      const hours = Math.floor(duration / 3600);
35701      if (seconds < 10) {
35702        seconds = `0${seconds}`;
35703      }
35704      if (minutes < 10) {
35705        minutes = `0${minutes}`;
35706      }
35707      if (hours > 0) {
35708        return `${hours}:${minutes}:${seconds}`;
35709      }
35710      return `${minutes}:${seconds}`;
35711    }
35712  }
35713};
35714const _hoisted_1$1q = { class: "audio-player" };
35715const _hoisted_2$15 = { class: "player-image" };
35716const _hoisted_3$V = ["src", "alt"];
35717const _hoisted_4$G = { class: "audio-body" };
35718const _hoisted_5$t = { class: "btn-wrapper" };
35719const _hoisted_6$n = ["title"];
35720const _hoisted_7$l = { class: "control-box-side" };
35721const _hoisted_8$f = { class: "progress-bar volume-bar" };
35722const _hoisted_9$c = ["title"];
35723const _hoisted_10$7 = ["title"];
35724const _hoisted_12$7 = { class: "progress-bar" };
35725const _hoisted_13$7 = ["max", "title"];
35726const _hoisted_14$7 = ["src"];
35727const _hoisted_15$6 = { class: "time-wrapper" };
35728function _sfc_render$1u(_ctx, _cache, $props, $setup, $data, $options) {
35729  return openBlock(), createElementBlock("div", _hoisted_1$1q, [
35730    createBaseVNode("div", _hoisted_2$15, [
35731      renderSlot(_ctx.$slots, "default", {}, () => [
35732        $props.imgSource ? (openBlock(), createElementBlock("img", {
35733          key: 0,
35734          src: $props.imgSource,
35735          alt: $props.imgAlt,
35736          loading: "lazy"
35737        }, null, 8, _hoisted_3$V)) : createCommentVNode("", true)
35738      ])
35739    ]),
35740    createBaseVNode("div", _hoisted_4$G, [
35741      createBaseVNode("div", _hoisted_5$t, [
35742        createBaseVNode("button", {
35743          class: normalizeClass(["play-pause-btn", {
35744            "icon-play": $data.paused,
35745            "icon-pause": !$data.paused
35746          }]),
35747          title: $data.paused ? _ctx.$t("audio.label.play") : _ctx.$t("audio.label.pause"),
35748          onClick: _cache[0] || (_cache[0] = (...args) => $options.onTogglePlay && $options.onTogglePlay(...args))
35749        }, null, 10, _hoisted_6$n),
35750        createBaseVNode("div", _hoisted_7$l, [
35751          createBaseVNode("div", _hoisted_8$f, [
35752            createBaseVNode("span", {
35753              class: "range-track",
35754              style: normalizeStyle({ width: $data.currentVolume * 100 + "%" })
35755            }, null, 4),
35756            _cache[9] || (_cache[9] = createBaseVNode("span", { class: "standard-range" }, null, -1)),
35757            withDirectives(createBaseVNode("input", {
35758              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.currentVolume = $event),
35759              class: "volume-slider",
35760              type: "range",
35761              min: "0",
35762              max: "1",
35763              step: "0.1",
35764              title: _ctx.$t("audio.label.volume"),
35765              onInput: _cache[2] || (_cache[2] = (...args) => $options.onSeekVolume && $options.onSeekVolume(...args))
35766            }, null, 40, _hoisted_9$c), [
35767              [vModelText, $data.currentVolume]
35768            ])
35769          ]),
35770          createBaseVNode("button", {
35771            class: normalizeClass(["volume-btn", {
35772              "icon-volume-up": !$data.muted,
35773              "icon-mute": $data.muted
35774            }]),
35775            title: $data.muted ? _ctx.$t("audio.label.unmute") : _ctx.$t("audio.label.mute"),
35776            onClick: _cache[3] || (_cache[3] = (...args) => $options.onToggleMute && $options.onToggleMute(...args))
35777          }, null, 10, _hoisted_10$7),
35778          createCommentVNode("", true)
35779        ])
35780      ]),
35781      createBaseVNode("div", _hoisted_12$7, [
35782        createBaseVNode("span", {
35783          class: "range-track",
35784          style: normalizeStyle({ width: $data.seekValue / $data.seekPrecision * 100 + "%" })
35785        }, null, 4),
35786        _cache[10] || (_cache[10] = createBaseVNode("span", { class: "standard-range" }, null, -1)),
35787        withDirectives(createBaseVNode("input", {
35788          "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => $data.seekValue = $event),
35789          class: "process-slider",
35790          type: "range",
35791          min: "0",
35792          max: $data.seekPrecision,
35793          title: _ctx.$t("audio.label.progress"),
35794          onInput: _cache[5] || (_cache[5] = (...args) => $options.onSeek && $options.onSeek(...args))
35795        }, null, 40, _hoisted_13$7), [
35796          [vModelText, $data.seekValue]
35797        ])
35798      ]),
35799      createBaseVNode("audio", {
35800        ref: "audioPlayer",
35801        src: $props.audioSource,
35802        onTimeupdate: _cache[6] || (_cache[6] = (...args) => $options.onPlaying && $options.onPlaying(...args)),
35803        onLoadedmetadata: _cache[7] || (_cache[7] = (...args) => $options.onAudioLoaded && $options.onAudioLoaded(...args)),
35804        onEnded: _cache[8] || (_cache[8] = (...args) => $options.onAudioEnded && $options.onAudioEnded(...args))
35805      }, toDisplayString$1(_ctx.$t("audio.label.notSupported")), 41, _hoisted_14$7),
35806      createBaseVNode("div", _hoisted_15$6, [
35807        createBaseVNode("p", null, toDisplayString$1($data.displayTime), 1),
35808        createBaseVNode("p", null, toDisplayString$1($data.displayDuration), 1)
35809      ])
35810    ])
35811  ]);
35812}
35813const AudioPlayer = /* @__PURE__ */ _export_sfc(_sfc_main$1w, [["render", _sfc_render$1u]]);
35814const _sfc_main$1v = {
35815  name: "AddToCart",
35816  // components: {},
35817  props: {
35818    articleNumber: {
35819      type: String,
35820      default: ""
35821    },
35822    cartUrl: {
35823      type: String,
35824      default: "#"
35825    }
35826  },
35827  data() {
35828    return {
35829      count: 1,
35830      wasAnCart: false
35831    };
35832  },
35833  computed: {
35834    ...mapGetters(CART_TYPES.NAME, {
35835      isOnCart: CART_TYPES.getters.CART_GET_EXISTS
35836    }),
35837    fieldName() {
35838      return `cart${this.articleNumber}`;
35839    }
35840  },
35841  // watch: {},
35842  // Livecycle hooks
35843  // created() {},
35844  mounted() {
35845    const check = this.isOnCart({
35846      code: this.articleNumber
35847    });
35848    if (check === true) {
35849      this.wasAnCart = true;
35850    }
35851  },
35852  // updated() {},
35853  // beforeUnmount() {},
35854  methods: {
35855    ...mapMutations(CART_TYPES.NAME, {
35856      addToCart: CART_TYPES.mutations.CART_SET_ADD
35857    }),
35858    addItem() {
35859      this.addToCart({
35860        code: this.articleNumber,
35861        count: this.count
35862      });
35863      this.wasAnCart = true;
35864      this.$nextTick(() => {
35865        this.$refs.inCartInfo.focus();
35866      });
35867    }
35868  }
35869};
35870const _hoisted_1$1p = { class: "add-to-cart" };
35871const _hoisted_2$14 = {
35872  key: 0,
35873  ref: "inCartInfo",
35874  class: "in-cart-info"
35875};
35876const _hoisted_3$U = ["href"];
35877const _hoisted_4$F = { key: 1 };
35878const _hoisted_5$s = ["for"];
35879const _hoisted_6$m = ["name", "title"];
35880function _sfc_render$1t(_ctx, _cache, $props, $setup, $data, $options) {
35881  return openBlock(), createElementBlock("div", _hoisted_1$1p, [
35882    $data.wasAnCart ? (openBlock(), createElementBlock("p", _hoisted_2$14, [
35883      createTextVNode(toDisplayString$1(_ctx.$t("shop.inCart")) + "   ", 1),
35884      createBaseVNode("a", {
35885        class: "link-button",
35886        href: $props.cartUrl
35887      }, toDisplayString$1(_ctx.$t("shop.cart.button.label")), 9, _hoisted_3$U)
35888    ], 512)) : (openBlock(), createElementBlock("fieldset", _hoisted_4$F, [
35889      createBaseVNode("label", {
35890        id: "label_quantity",
35891        for: $options.fieldName
35892      }, toDisplayString$1(_ctx.$t("shop.quantity")), 9, _hoisted_5$s),
35893      withDirectives(createBaseVNode("input", {
35894        "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.count = $event),
35895        type: "number",
35896        class: "link-button input-text",
35897        min: "1",
35898        max: "",
35899        name: $options.fieldName,
35900        title: _ctx.$t("shop.quantity"),
35901        size: "4",
35902        pattern: "[0-9]*",
35903        inputmode: "numeric",
35904        "aria-labelledby": "label_quantity"
35905      }, null, 8, _hoisted_6$m), [
35906        [vModelText, $data.count]
35907      ]),
35908      createBaseVNode("button", {
35909        class: "link-button",
35910        onClick: _cache[1] || (_cache[1] = ($event) => $options.addItem())
35911      }, toDisplayString$1(_ctx.$t("shop.buyItem.label")), 1)
35912    ]))
35913  ]);
35914}
35915const AddToCart = /* @__PURE__ */ _export_sfc(_sfc_main$1v, [["render", _sfc_render$1t]]);
35916const _sfc_main$1u = {
35917  name: "LinkButton",
35918  // components: {},
35919  props: {
35920    label: {
35921      type: String,
35922      default: "Mehr Info"
35923    },
35924    url: {
35925      type: String,
35926      default: "/"
35927    },
35928    isDownload: {
35929      type: Boolean,
35930      default: false
35931    }
35932  }
35933  // data() {
35934  //   return {};
35935  // },
35936  // computed: {},
35937  // methods: {},
35938  // watch() {},
35939  // Livecycle hooks
35940  // created() {},
35941  // mounted() {},
35942  // updated() {},
35943  // beforeDestroy() {},
35944};
35945const _hoisted_1$1o = ["href"];
35946function _sfc_render$1s(_ctx, _cache, $props, $setup, $data, $options) {
35947  return openBlock(), createElementBlock("a", {
35948    class: normalizeClass(["link-button", $props.isDownload ? "iconafter-download" : ""]),
35949    href: $props.url
35950  }, [
35951    renderSlot(_ctx.$slots, "default"),
35952    createTextVNode(" " + toDisplayString$1($props.label ? $props.label : _ctx.$t("teaser.button.label")), 1
35952)
35953  ], 10, _hoisted_1$1o);
35954}
35955const LinkButton = /* @__PURE__ */ _export_sfc(_sfc_main$1u, [["render", _sfc_render$1s]]);
35956const _sfc_main$1t = {
35957  name: "TeaserTextImage",
35958  props: {
35959    title: {
35960      type: String,
35961      default: ""
35962    },
35963    subTitle: {
35964      type: String,
35965      default: ""
35966    },
35967    category: {
35968      type: String,
35969      default: ""
35970    },
35971    summary: {
35972      type: String,
35973      required: true
35974    },
35975    url: {
35976      type: String,
35977      required: true
35978    },
35979    linkText: {
35980      type: String,
35981      default: ""
35982    },
35983    imgSrc: {
35984      type: String,
35985      default: ""
35986    },
35987    imgAlt: {
35988      type: String,
35989      default: ""
35990    },
35991    imgWidth: {
35992      type: Number,
35993      default: 640
35994    },
35995    imgHeight: {
35996      type: Number,
35997      default: 400
35998    },
35999    bgColorName: {
36000      type: String,
36001      default: "white"
36002    },
36003    linkStyleButton: {
36004      type: Boolean,
36005      default: false
36006    },
36007    hTag: {
36008      type: String,
36009      default: "h3"
36010    },
36011    isExtern: {
36012      type: Boolean,
36013      default: false
36014    },
36015    isMagazineArticle: {
36016      type: Boolean,
36017      default: false
36018    }
36019  },
36020  computed: {
36021    element() {
36022      return this.url ? "a" : "div";
36023    },
36024    bgColorClass() {
36025      if (empty(this.bgColorName)) return "";
36026      return `-${this.bgColorName}`;
36027    },
36028    iconDevider() {
36029      if (this.isExtern) {
36030        return " ";
36031      }
36032      return "";
36033    }
36034  }
36035};
36036const _hoisted_1$1n = { key: 0 };
36037const _hoisted_2$13 = {
36038  key: 0,
36039  class: "article-info"
36040};
36041const _hoisted_3$T = ["src", "alt", "height", "width"];
36042const _hoisted_4$E = { class: "teaser-body" };
36043const _hoisted_5$r = { key: 0 };
36044const _hoisted_6$l = { class: "title" };
36045const _hoisted_7$k = {
36046  key: 0,
36047  class: "sub-title"
36048};
36049const _hoisted_8$e = ["innerHTML"];
36050const _hoisted_9$b = {
36051  key: 0,
36052  class: "iconafter-link-extern"
36053};
36054function _sfc_render$1r(_ctx, _cache, $props, $setup, $data, $options) {
36055  return openBlock(), createBlock(resolveDynamicComponent($options.element), {
36056    href: $props.url,
36057    class: normalizeClass(["teaser-text-image", {
36058      [$options.bgColorClass]: true,
36059      "has-image": !!$props.imgSrc
36060    }]),
36061    target: $props.isExtern ? "_blank" : null,
36062    rel: $props.isExtern ? "noopener" : null
36063  }, {
36064    default: withCtx(() => [
36065      $props.imgSrc ? (openBlock(), createElementBlock("figure", _hoisted_1$1n, [
36066        $props.isMagazineArticle ? (openBlock(), createElementBlock("span", _hoisted_2$13, " Online-Magazin ")) : createCommentVNode("", true),
36067        createBaseVNode("img", {
36068          src: $props.imgSrc,
36069          alt: $props.imgAlt ? $props.imgAlt : $props.title,
36070          height: $props.imgHeight,
36071          width: $props.imgWidth,
36072          loading: "lazy"
36073        }, null, 8, _hoisted_3$T)
36074      ])) : createCommentVNode("", true),
36075      createBaseVNode("div", _hoisted_4$E, [
36076        $props.title ? (openBlock(), createElementBlock("h3", _hoisted_5$r, [
36077          createBaseVNode("span", _hoisted_6$l, toDisplayString$1($props.title), 1),
36078          $props.subTitle || $props.category ? (openBlock(), createElementBlock("span", _hoisted_7$k, [
36079            createBaseVNode("span", null, toDisplayString$1($props.subTitle), 1),
36080            createBaseVNode("span", null, toDisplayString$1($props.category), 1)
36081          ])) : createCommentVNode("", true)
36082        ])) : createCommentVNode("", true),
36083        $props.summary ? (openBlock(), createElementBlock("p", {
36084          key: 1,
36085          innerHTML: $props.summary
36086        }, null, 8, _hoisted_8$e)) : createCommentVNode("", true),
36087        $props.linkText ? (openBlock(), createElementBlock("span", {
36088          key: 2,
36089          class: normalizeClass({
36090            "link-button": $props.linkStyleButton,
36091            "link-text": !$props.linkStyleButton
36092          })
36093        }, [
36094          createTextVNode(toDisplayString$1($props.linkText), 1),
36095          $props.isExtern ? (openBlock(), createElementBlock("i", _hoisted_9$b, toDisplayString$1(" "))) : createCommentVNode("", true)
36096        ], 2)) : createCommentVNode("", true)
36097      ])
36098    ]),
36099    _: 1
36100  }, 8, ["href", "class", "target", "rel"]);
36101}
36102const TeaserTextImage = /* @__PURE__ */ _export_sfc(_sfc_main$1t, [["render", _sfc_render$1r]]);
36103const _sfc_main$1s = {
36104  name: "PageWrapper"
36105  // components: {},
36106  // props: {},
36107  // data() {
36108  //   return {};
36109  // },
36110  // computed: {},
36111  // methods: {},
36112  // watch() {},
36113  // Livecycle hooks
36114  // created() {},
36115  // mounted() {},
36116  // updated() {},
36117  // beforeDestroy() {},
36118};
36119const _hoisted_1$1m = { class: "page-wrapper" };
36120function _sfc_render$1q(_ctx, _cache, $props, $setup, $data, $options) {
36121  return openBlock(), createElementBlock("div", _hoisted_1$1m, [
36122    renderSlot(_ctx.$slots, "default")
36123  ]);
36124}
36125const PageWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1s, [["render", _sfc_render$1q]]);
36126const _sfc_main$1r = {
36127  name: "ArticleWrapper",
36128  // components: {},
36129  props: {
36130    headline: {
36131      type: String,
36132      default: "H1"
36133    },
36134    citymapNumber: {
36135      type: String,
36136      default: ""
36137    },
36138    intro: {
36139      type: String,
36140      default: ""
36141    },
36142    headerExtraMarginBottom: {
36143      type: Boolean,
36144      default: false
36145    },
36146    withSidebar: {
36147      type: Boolean,
36148      default: false
36149    },
36150    isMediathekDetailPage: {
36151      type: Boolean,
36152      default: false
36153    },
36154    isShopPage: {
36155      type: Boolean,
36156      default: false
36157    },
36158    isCitymapPage: {
36159      type: Boolean,
36160      default: false
36161    },
36162    disableOverflow: {
36163      type: Boolean,
36164      default: false
36165    }
36166  }
36167  // data() {
36168  //   return {};
36169  // },
36170  //computed: { },
36171  // methods: {},
36172  // watch() {},
36173  // Livecycle hooks
36174  // created() {},
36175  // mounted() {},
36176  // updated() {},
36177  // beforeDestroy() {},
36178};
36179const _hoisted_1$1l = {
36180  key: 0,
36181  class: "citymap-number"
36182};
36183const _hoisted_2$12 = { key: 0 };
36184const _hoisted_3$S = { class: "article-content" };
36185const _hoisted_4$D = { class: "article-content-wrapper" };
36186const _hoisted_5$q = { class: "article-sidebar" };
36187function _sfc_render$1p(_ctx, _cache, $props, $setup, $data, $options) {
36188  return openBlock(), createElementBlock("article", {
36189    class: normalizeClass(["article-wrapper", {
36190      "mediathek-detail-page": $props.isMediathekDetailPage,
36191      "shop-page": $props.isShopPage,
36192      "-no-overflow-rules": $props.disableOverflow
36193    }])
36194  }, [
36195    createBaseVNode("header", {
36196      class: normalizeClass($props.headerExtraMarginBottom ? "extra-margin-bottom" : "")
36197    }, [
36198      createBaseVNode("h1", null, [
36199        $props.isCitymapPage ? (openBlock(), createElementBlock("span", _hoisted_1$1l, toDisplayString$1($props.citymapNumber), 1)) : createCommentVNode("", true),
36200        createTextVNode(toDisplayString$1($props.headline), 1)
36201      ]),
36202      $props.intro ? (openBlock(), createElementBlock("p", _hoisted_2$12, toDisplayString$1($props.intro), 1)) : createCommentVNode("", true)
36203    ], 2),
36204    createBaseVNode("div", _hoisted_3$S, [
36205      createBaseVNode("div", _hoisted_4$D, [
36206        renderSlot(_ctx.$slots, "default")
36207      ]),
36208      withDirectives(createBaseVNode("aside", _hoisted_5$q, [
36209        renderSlot(_ctx.$slots, "sidebar")
36210      ], 512), [
36211        [vShow, $props.withSidebar]
36212      ])
36213    ])
36214  ], 2);
36215}
36216const ArticleWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1r, [["render", _sfc_render$1p]]);
36217const _sfc_main$1q = {
36218  name: "ContentImage",
36219  // components: {},
36220  props: {
36221    src: {
36222      type: String,
36223      required: true
36224    },
36225    // NOTE does not have any effect
36226    inline: {
36227      type: Boolean,
36228      default: false
36229    },
36230    copyright: {
36231      default: "",
36232      type: String
36233    },
36234    alt: {
36235      default: "",
36236      type: String
36237    },
36238    description: {
36239      default: "",
36240      type: String
36241    },
36242    freeAspect: {
36243      type: Boolean,
36244      default: false
36245    },
36246    galleryIndex: {
36247      default: "",
36248      type: String
36249    }
36250  },
36251  // data() {
36252  //   return {};
36253  // },
36254  computed: {
36255    hasSubs() {
36256      return this.copyright.length || this.description.length;
36257    },
36258    hasIndex() {
36259      return this.galleryIndex || this.galleryIndex.length > 0;
36260    }
36261  }
36262  // methods: {},
36263  // watch() {},
36264  // Livecycle hooks
36265  // created() {},
36266  // mounted() {},
36267  // updated() {},
36268  // beforeDestroy() {},
36269};
36270const _hoisted_1$1k = { class: "image-wrapper" };
36271const _hoisted_2$11 = ["src", "alt"];
36272const _hoisted_3$R = { key: 0 };
36273const _hoisted_4$C = {
36274  key: 0,
36275  class: "content-image-index"
36276};
36277const _hoisted_5$p = { class: "content-image-caption" };
36278const _hoisted_6$k = { class: "content-image-description" };
36279const _hoisted_7$j = ["innerHTML"];
36280function _sfc_render$1o(_ctx, _cache, $props, $setup, $data, $options) {
36281  return openBlock(), createElementBlock("figure", {
36282    class: normalizeClass(["content-image", {
36283      "-inline": $props.inline,
36284      "-free-aspect": $props.freeAspect
36285    }])
36286  }, [
36287    createBaseVNode("div", _hoisted_1$1k, [
36288      createBaseVNode("img", {
36289        src: $props.src,
36290        alt: $props.alt.length > 0 ? $props.alt : $props.description,
36291        loading: "lazy"
36292      }, null, 8, _hoisted_2$11)
36293    ]),
36294    $options.hasSubs ? (openBlock(), createElementBlock("figcaption", _hoisted_3$R, [
36295      $options.hasIndex ? (openBlock(), createElementBlock("div", _hoisted_4$C, toDisplayString$1($props.galleryIndex), 1)) : createCommentVNode("", true),
36296      createBaseVNode("div", _hoisted_5$p, [
36297        createBaseVNode("div", _hoisted_6$k, [
36298          createTextVNode(toDisplayString$1($props.description) + " ", 1),
36299          $props.copyright.length > 0 ? (openBlock(), createElementBlock("span", {
36300            key: 0,
36301            class: "content-image-copyright",
36302            innerHTML: $props.copyright
36303          }, null, 8, _hoisted_7$j)) : createCommentVNode("", true)
36304        ])
36305      ])
36306    ])) : createCommentVNode("", true)
36307  ], 2);
36308}
36309const ContentImage = /* @__PURE__ */ _export_sfc(_sfc_main$1q, [["render", _sfc_render$1o]]);
36310const _sfc_main$1p = {
36311  name: "ContentBlock",
36312  // components: {},
36313  props: {
36314    theme: {
36315      type: String,
36316      default: "light"
36317    },
36318    contentTitle: {
36319      type: String,
36320      default: ""
36321    },
36322    addSpacing: {
36323      type: Boolean,
36324      default: false
36325    }
36326  },
36327  // data() {
36328  //   return {};
36329  // },
36330  computed: {
36331    themeClass() {
36332      return `-${this.theme}`;
36333    }
36334  }
36335  // methods: {},
36336  // watch() {},
36337  // Livecycle hooks
36338  // created() {},
36339  // mounted() {},
36340  // updated() {},
36341  // beforeDestroy() {},
36342};
36343const _hoisted_1$1j = { class: "columns" };
36344const _hoisted_2$10 = {
36345  key: 0,
36346  class: "content-headline"
36347};
36348function _sfc_render$1n(_ctx, _cache, $props, $setup, $data, $options) {
36349  return openBlock(), createElementBlock("div", {
36350    class: normalizeClass(["content-block row", {
36351      [$options.themeClass]: true,
36352      "-extra-spacing": $props.addSpacing
36353    }])
36354  }, [
36355    createBaseVNode("div", _hoisted_1$1j, [
36356      $props.contentTitle.length ? (openBlock(), createElementBlock("h2", _hoisted_2$10, toDisplayString$1($props.contentTitle), 1)) : createCommentVNode("", true),
36357      renderSlot(_ctx.$slots, "default")
36358    ])
36359  ], 2);
36360}
36361const ContentBlock = /* @__PURE__ */ _export_sfc(_sfc_main$1p, [["render", _sfc_render$1n]]);
36362const _sfc_main$1o = {
36363  name: "FormSelect",
36364  // components: {},
36365  props: {
36366    name: {
36367      type: String,
36368      default: ""
36369    },
36370    options: {
36371      type: Array,
36372      default: () => []
36373    }
36374  }
36375  // data() {
36376  //   return {};
36377  // },
36378  // computed: {},
36379  // watch: {},
36380  // Livecycle hooks
36381  // created() {},
36382  // mounted() {},
36383  // updated() {},
36384  // beforeUnmount() {},
36385  // methods: {},
36386};
36387const _hoisted_1$1i = ["name"];
36388const _hoisted_2$$ = ["value"];
36389function _sfc_render$1m(_ctx, _cache, $props, $setup, $data, $options) {
36390  return openBlock(), createElementBlock("select", {
36391    name: $props.name,
36392    class: "form-select"
36393  }, [
36394    (openBlock(true), createElementBlock(Fragment, null, renderList($props.options, (option, index2) => {
36395      return openBlock(), createElementBlock("option", {
36396        key: `option${index2}`,
36397        value: option.value
36398      }, toDisplayString$1(option.label), 9, _hoisted_2$$);
36399    }), 128))
36400  ], 8, _hoisted_1$1i);
36401}
36402const FormSelect = /* @__PURE__ */ _export_sfc(_sfc_main$1o, [["render", _sfc_render$1m]]);
36403const _sfc_main$1n = {
36404  name: "RichtextWrapper"
36405  // components: {},
36406  // props: {},
36407  // data() {
36408  //   return {};
36409  // },
36410  // computed: {},
36411  // methods: {},
36412  // watch() {},
36413  // Livecycle hooks
36414  // created() {},
36415  // mounted() {},
36416  // updated() {},
36417  // beforeDestroy() {},
36418};
36419const _hoisted_1$1h = { class: "richtext-wrapper" };
36420function _sfc_render$1l(_ctx, _cache, $props, $setup, $data, $options) {
36421  return openBlock(), createElementBlock("div", _hoisted_1$1h, [
36422    renderSlot(_ctx.$slots, "default")
36423  ]);
36424}
36425const RichtextWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1n, [["render", _sfc_render$1l]]);
36426const _sfc_main$1m = {
36427  name: "ConsentInline",
36428  // components: {},
36429  props: {
36430    serviceName: {
36431      type: Object,
36432      required: true
36433    },
36434    videoLink: {
36435      type: String,
36436      default: null
36437    }
36438  },
36439  // data() {
36440  //   return {};
36441  // },
36442  emits: [
36443    "setSingleConsent",
36444    "setAlwaysConsent"
36445  ],
36446  // computed: {},
36447  methods: {
36448    setSingleConsent() {
36449      this.$emit("setSingleConsent");
36450    },
36451    setAlwaysConsent() {
36452      this.$emit("setAlwaysConsent");
36453    }
36454  }
36455  // watch() {},
36456  // Livecycle hooks
36457  // created() {},
36458  // mounted() {},
36459  // updated() {},
36460  // beforeDestroy() {},
36461};
36462const _hoisted_1$1g = { class: "consent-inline" };
36463const _hoisted_2$_ = { class: "header" };
36464const _hoisted_3$Q = { class: "button-group -no-mobile-collapse" };
36465const _hoisted_4$B = ["href"];
36466function _sfc_render$1k(_ctx, _cache, $props, $setup, $data, $options) {
36467  return openBlock(), createElementBlock("div", _hoisted_1$1g, [
36468    createBaseVNode("p", _hoisted_2$_, toDisplayString$1(_ctx.$t("consent.inline.label", $props.serviceName)), 1),
36469    createBaseVNode("div", _hoisted_3$Q, [
36470      createBaseVNode("button", {
36471        class: "link-button",
36472        onClick: _cache[0] || (_cache[0] = (...args) => $options.setSingleConsent && $options.setSingleConsent(...args))
36473      }, toDisplayString$1(_ctx.$t("consent.inline.single")), 1),
36474      createBaseVNode("button", {
36475        class: "link-button",
36476        onClick: _cache[1] || (_cache[1] = (...args) => $options.setAlwaysConsent && $options.setAlwaysConsent(...args))
36477      }, toDisplayString$1(_ctx.$t("consent.inline.always")), 1)
36478    ]),
36479    $props.videoLink ? (openBlock(), createElementBlock("a", {
36480      key: 0,
36481      href: $props.videoLink,
36482      rel: "noopener",
36483      target: "_blank",
36484      class: "iconafter-link-extern original-link link-button"
36485    }, toDisplayString$1(_ctx.$t("consent.inline.videoLink", $props.serviceName)), 9, _hoisted_4$B)) : createCommentVNode("", true)
36486  ]);
36487}
36488const ConsentInline = /* @__PURE__ */ _export_sfc(_sfc_main$1m, [["render", _sfc_render$1k]]);
36489const YOUTUBE_IMG_URL = "https://i1.ytimg.com/vi";
36490const YOUTUBE_IMG_THUMB = "sddefault.jpg";
36491const VIMEO_API_URL = "https://vimeo.com/api/oembed.json?url=https://vimeo.com/";
36492const _sfc_main$1l = {
36493  name: "VideoEmbed",
36494  components: {
36495    ConsentInline
36496  },
36497  props: {
36498    aspectRatio: {
36499      type: String,
36500      default: "16x9"
36501    },
36502    shareLink: {
36503      type: String,
36504      default: null
36505    }
36506  },
36507  data() {
36508    return {
36509      options: {
36510        controls: true,
36511        color: "white"
36512      },
36513      imageUrl: null,
36514      loaded: false,
36515      started: false,
36516      singleConsent: false
36517    };
36518  },
36519  computed: {
36520    ...mapState(CONSENT_TYPES.NAME, {
36521      consentVimeo: CONSENT_TYPES.state.CONSENT_VIMEO,
36522      consentYoutube: CONSENT_TYPES.state.CONSENT_YOUTUBE
36523    }),
36524    hasConsent() {
36525      if (this.singleConsent === true) return true;
36526      if (this.youtubeCode && this.consentYoutube) return true;
36527      if (this.vimeoCode && this.consentVimeo) return true;
36528      return false;
36529    },
36530    whichService() {
36531      if (this.youtubeCode) return "Youtube";
36532      if (this.vimeoCode) return "Vimeo";
36533      return "unknown";
36534    },
36535    aspectClass() {
36536      return `-aspect-${this.aspectRatio}`;
36537    },
36538    embedUrl() {
36539      return null;
36540    },
36541    videoCode() {
36542      if (!this.shareLink) return null;
36543      if (this.youtubeCode) return this.youtubeCode;
36544      if (this.vimeoCode) return this.vimeoCode;
36545      return null;
36546    },
36547    youtubeCode() {
36548      if (!this.shareLink) return false;
36549      const re = /\/\/(?:www\.)?youtu(?:\.be|be\.com)\/(?:watch\?v=|embed\/)?([a-z0-9_\-]+)/i;
36550      const matches2 = re.exec(this.shareLink);
36551      if (matches2 && matches2[1]) {
36552        return matches2[1];
36553      } else {
36554        return false;
36555      }
36556    },
36557    vimeoCode() {
36558      if (!this.shareLink) return null;
36559      const re = /\/\/(?:www\.|player\.)?vimeo.com\/(?:video\/|)([0-9a-z\-_]+)/i;
36560      const matches2 = re.exec(this.shareLink);
36561      if (matches2 && matches2[1]) {
36562        return matches2[1];
36563      } else {
36564        return false;
36565      }
36566    },
36567    videoUrl() {
36568      if (!this.shareLink) return null;
36569      if (this.youtubeCode) return this.youtubeUrl;
36570      if (this.vimeoCode) return this.vimeoUrl;
36571      return null;
36572    },
36573    vimeoUrl() {
36574      if (!this.vimeoCode) return null;
36575      return `https://player.vimeo.com/video/${this.vimeoCode}?color=${this.options.color}&title=0&portrait=1`;
36576    },
36577    youtubeUrl() {
36578      let src = `https://www.youtube-nocookie.com/embed/${this.youtubeCode}?rel=0&showinfo=0&color=${this.options.color}`;
36579      if (!this.options.controls) {
36580        src = `${src}&controls=0`;
36581      } else {
36582        src = `${src}&controls=1`;
36583      }
36584      return src;
36585    }
36586  },
36587  watch: {
36588    async hasConsent(to) {
36589      if (to === true) {
36590        this.initVideo();
36591      }
36592    }
36593  },
36594  // Livecycle hooks
36595  // created() {},
36596  async mounted() {
36597    if (this.hasConsent) {
36598      this.initVideo();
36599    }
36600  },
36601  // updated() {},
36602  // beforeUnmount() {},
36603  methods: {
36604    ...mapMutations(CONSENT_TYPES.NAME, {
36605      consentSetVimeo: CONSENT_TYPES.mutations.CONSENT_SET_VIMEO,
36606      consentSetYoutube: CONSENT_TYPES.mutations.CONSENT_SET_YOUTUBE
36607    }),
36608    setConsent() {
36609      if (this.whichService === "Vimeo") {
36610        this.consentSetVimeo({
36611          [CONSENT_TYPES.state.CONSENT_VIMEO]: true
36612        });
36613      } else if (this.whichService === "Youtube") {
36614        this.consentSetYoutube({
36615          [CONSENT_TYPES.state.CONSENT_YOUTUBE]: true
36616        });
36617      }
36618    },
36619    async initVideo() {
36620      await this.createImage();
36621      this.loaded = true;
36622    },
36623    startVideo() {
36624      this.started = true;
36625    },
36626    createYouTubeImage() {
36627      this.imageUrl = `${YOUTUBE_IMG_URL}/${this.videoCode}/${YOUTUBE_IMG_THUMB}`;
36628    },
36629    async createVimeoImage() {
36630      const imageUrl = `${VIMEO_API_URL}
36630${this.videoCode}`;
36631      const { status, data } = await axios.get(imageUrl);
36632      if (status === 200 && typeof data !== "undefined") {
36633        if (data && data.thumbnail_url) {
36634          this.imageUrl = data.thumbnail_url;
36635        }
36636      }
36637    },
36638    async createImage() {
36639      if (this.youtubeCode) {
36640        this.createYouTubeImage();
36641      } else if (this.vimeoCode) {
36642        await this.createVimeoImage();
36643      }
36644    }
36645  }
36646};
36647const _hoisted_1$1f = {
36648  key: 1,
36649  class: "video-wrapper"
36650};
36651const _hoisted_2$Z = ["src", "alt"];
36652const _hoisted_3$P = ["title"];
36653const _hoisted_4$A = ["src"];
36654function _sfc_render$1j(_ctx, _cache, $props, $setup, $data, $options) {
36655  const _component_consent_inline = resolveComponent("consent-inline");
36656  return openBlock(), createElementBlock("div", {
36657    class: normalizeClass(["video-embed", `${$options.aspectClass}`])
36658  }, [
36659    !$options.hasConsent ? (openBlock(), createBlock(_component_consent_inline, {
36660      key: 0,
36661      "service-name": { service: $options.whichService },
36662      "video-link": $props.shareLink,
36663      onSetSingleConsent: _cache[0] || (_cache[0] = ($event) => $data.singleConsent = true),
36664      onSetAlwaysConsent: $options.setConsent
36665    }, null, 8, ["service-name", "video-link", "onSetAlwaysConsent"])) : createCommentVNode("", true),
36666    $data.loaded && $options.hasConsent ? (openBlock(), createElementBlock("div", _hoisted_1$1f, [
36667      createBaseVNode("img", {
36668        src: $data.imageUrl,
36669        class: "cover-image",
36670        loading: "lazy",
36671        width: "640",
36672        height: "640",
36673        role: "presentation",
36674        alt: _ctx.$t("video.coverAlt")
36675      }, null, 8, _hoisted_2$Z),
36676      !$data.started ? (openBlock(), createElementBlock("button", {
36677        key: 0,
36678        title: _ctx.$t("video.load"),
36679        class: "play-button",
36680        onClick: _cache[1] || (_cache[1] = (...args) => $options.startVideo && $options.startVideo(...args))
36681      }, _cache[2] || (_cache[2] = [
36682        createBaseVNode("span", null, null, -1)
36683      ]), 8, _hoisted_3$P)) : createCommentVNode("", true),
36684      $data.started ? (openBlock(), createElementBlock("iframe", {
36685        key: 1,
36686        src: $options.videoUrl
36687      }, null, 8, _hoisted_4$A)) : createCommentVNode("", true)
36688    ])) : createCommentVNode("", true)
36689  ], 2);
36690}
36691const VideoEmbed = /* @__PURE__ */ _export_sfc(_sfc_main$1l, [["render", _sfc_render$1j]]);
36692const _sfc_main$1k = {
36693  name: "DividerLine"
36694  // components: {},
36695  // cprops: {},
36696  // data() {
36697  //   return {};
36698  // },
36699  // computed: {},
36700  // methods: {},
36701  // watch() {},
36702  // Livecycle hooks
36703  // created() {},
36704  // mounted() {},
36705  // updated() {},
36706  // beforeDestroy() {},
36707};
36708const _hoisted_1$1e = { class: "divider-line" };
36709function _sfc_render$1i(_ctx, _cache, $props, $setup, $data, $options) {
36710  return openBlock(), createElementBlock("hr", _hoisted_1$1e);
36711}
36712const DividerLine = /* @__PURE__ */ _export_sfc(_sfc_main$1k, [["render", _sfc_render$1i]]);
36713const _sfc_main$1j = {
36714  name: "GridWrapper",
36715  props: {
36716    limitToThree: {
36717      type: Boolean,
36718      default: false
36719    },
36720    limitToTwo: {
36721      type: Boolean,
36722      default: false
36723    }
36724  }
36725};
36726function _sfc_render$1h(_ctx, _cache, $props, $setup, $data, $options) {
36727  return openBlock(), createElementBlock("div", {
36728    class: normalizeClass(["grid-wrapper", {
36729      "-max-three": $props.limitToThree,
36730      "-max-two": $props.limitToTwo
36731    }])
36732  }, [
36733    renderSlot(_ctx.$slots, "default")
36734  ], 2);
36735}
36736const GridWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$1j, [["render", _sfc_render$1h]]);
36737const _sfc_main$1i = {
36738  name: "TeaserQuickLink",
36739  // components: {},
36740  props: {
36741    title: {
36742      type: String,
36743      required: true
36744    },
36745    supTitle: {
36746      type: String,
36747      required: true
36748    },
36749    text: {
36750      type: String,
36751      default: null
36752    },
36753    icon: {
36754      type: String,
36755      default: "iconafter-arrow-right"
36756    },
36757    url: {
36758      type: String,
36759      required: true
36760    },
36761    bgColorName: {
36762      type: String,
36763      default: ""
36764    },
36765    mediaLink: {
36766      type: Boolean,
36767      default: false
36768    }
36769  },
36770  // data() {
36771  //   return {};
36772  // },
36773  computed: {
36774    bgColorClass() {
36775      if (empty(this.bgColorName)) return "";
36776      return `-${this.bgColorName}`;
36777    }
36778  }
36779  // methods: {},
36780  // watch() {},
36781  // Livecycle hooks
36782  // created() {},
36783  // mounted() {},
36784  // updated() {},
36785  // beforeDestroy() {},
36786};
36787const _hoisted_1$1d = ["href"];
36788const _hoisted_2$Y = ["innerHTML"];
36789const _hoisted_3$O = ["innerHTML"];
36790function _sfc_render$1g(_ctx, _cache, $props, $setup, $data, $options) {
36791  return openBlock(), createElementBlock("a", {
36792    href: $props.url,
36793    class: normalizeClass(["teaser-quick-link", {
36794      [$options.bgColorClass]: true,
36795      "-media-link": $props.mediaLink
36796    }])
36797  }, [
36798    createBaseVNode("h3", {
36799      class: normalizeClass($props.icon)
36800    }, [
36801      createBaseVNode("span", { innerHTML: $props.title }, null, 8, _hoisted_2$Y)
36802    ], 2),
36803    createBaseVNode("h4", null, toDisplayString$1($props.supTitle), 1),
36804    $props.text ? (openBlock(), createElementBlock("div", {
36805      key: 0,
36806      class: "text",
36807      innerHTML: $props.text
36808    }, null, 8, _hoisted_3$O)) : createCommentVNode("", true)
36809  ], 10, _hoisted_1$1d);
36810}
36811const TeaserQuickLink = /* @__PURE__ */ _export_sfc(_sfc_main$1i, [["render", _sfc_render$1g]]);
36812const _sfc_main$1h = {
36813  name: "TeaserTextOnly",
36814  // components: {},
36815  props: {
36816    title: {
36817      type: String,
36818      required: true
36819    },
36820    teaserText: {
36821      type: String,
36822      required: true
36823    },
36824    url: {
36825      type: String,
36826      required: true
36827    }
36828  }
36829  // data() {
36830  //   return {};
36831  // },
36832  // computed: {},
36833  // methods: {},
36834  // watch() {},
36835  // Livecycle hooks
36836  // created() {},
36837  // mounted() {},
36838  // updated() {},
36839  // beforeDestroy() {},
36840};
36841const _hoisted_1$1c = ["href"];
36842function _sfc_render$1f(_ctx, _cache, $props, $setup, $data, $options) {
36843  return openBlock(), createElementBlock("a", {
36844    href: $props.url,
36845    class: "teaser-text-only"
36846  }, [
36847    createBaseVNode("h3", null, toDisplayString$1($props.title), 1),
36848    createBaseVNode("p", null, [
36849      createTextVNode(toDisplayString$1($props.teaserText) + " ", 1),
36850      _cache[0] || (_cache[0] = createBaseVNode("span", { class: "iconafter-
36850arrow-right" }, null, -1))
36851    ])
36852  ], 8, _hoisted_1$1c);
36853}
36854const TeaserTextOnly = /* @__PURE__ */ _export_sfc(_sfc_main$1h, [["render", _sfc_render$1f]]);
36855const _sfc_main$1g = {
36856  name: "ButtonGroup",
36857  // components: {},
36858  props: {
36859    noCollapse: {
36860      type: Boolean,
36861      default: false
36862    },
36863    noGrow: {
36864      type: Boolean,
36865      default: false
36866    }
36867  }
36868  // data() {
36869  //   return {};
36870  // },
36871  // computed: {},
36872  // watch: {},
36873  // Livecycle hooks
36874  // created() {},
36875  // mounted() {},
36876  // updated() {},
36877  // beforeUnmount() {},
36878  // methods: {},
36879};
36880function _sfc_render$1e(_ctx, _cache, $props, $setup, $data, $options) {
36881  return openBlock(), createElementBlock("div", {
36882    class: normalizeClass(["button-group", {
36883      "-no-mobile-collapse": $props.noCollapse,
36884      "-no-grow": $props.noGrow
36885    }])
36886  }, [
36887    renderSlot(_ctx.$slots, "default")
36888  ], 2);
36889}
36890const ButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main$1g, [["render", _sfc_render$1e]]);
36891const _sfc_main$1f = {
36892  name: "DownloadButton",
36893  // components: {},
36894  props: {
36895    url: {
36896      type: String,
36897      default: "/"
36898    }
36899  }
36900  // data() {
36901  //   return {};
36902  // },
36903  // computed: {},
36904  // methods: {},
36905  // watch() {},
36906  // Livecycle hooks
36907  // created() {},
36908  // mounted() {},
36909  // updated() {},
36910  // beforeDestroy() {},
36911};
36912const _hoisted_1$1b = ["href"];
36913function _sfc_render$1d(_ctx, _cache, $props, $setup, $data, $options) {
36914  return openBlock(), createElementBlock("button", {
36915    class: normalizeClass(["download-button", "iconafter-download"]),
36916    href: $props.url
36917  }, null, 8, _hoisted_1$1b);
36918}
36919const DownloadButton = /* @__PURE__ */ _export_sfc(_sfc_main$1f, [["render", _sfc_render$1d]]);
36920const _sfc_main$1e = {
36921  name: "ArticleList",
36922  components: {
36923    LinkButton,
36924    DownloadButton
36925  },
36926  props: {
36927    // list content type
36928    isArchive: {
36929      type: Boolean,
36930      default: false
36931    },
36932    isMagazine: {
36933      type: Boolean,
36934      default: false
36935    },
36936    isMagazineArchive: {
36937      type: Boolean,
36938      default: false
36939    },
36940    isEvent: {
36941      type: Boolean,
36942      default: false
36943    },
36944    isArticle: {
36945      type: Boolean,
36946      default: false
36947    },
36948    isJob: {
36949      type: Boolean,
36950      default: false
36951    },
36952    // list content
36953    articles: {
36954      type: Array,
36955      required: true,
36956      default: () => []
36957    }
36958  }
36959  // data() {
36960  //   return {};
36961  // },
36962  // computed: {},
36963  // methods: {},
36964  // watch() {},
36965  // Livecycle hooks
36966  // created() {},
36967  // mounted() {},
36968  // updated() {},
36969  // beforeDestroy() {},
36970};
36971const _hoisted_1$1a = { class: "article-list" };
36972const _hoisted_2$X = ["href"];
36973const _hoisted_3$N = {
36974  key: 0,
36975  class: "columns large-2 article-meta"
36976};
36977const _hoisted_4$z = {
36978  key: 0,
36979  class: "article-category"
36980};
36981const _hoisted_5$o = {
36982  key: 1,
36983  class: "article-info"
36984};
36985const _hoisted_6$j = {
36986  key: 1,
36987  class: "columns large-2"
36988};
36989const _hoisted_7$i = { key: 0 };
36990const _hoisted_8$d = {
36991  key: 2,
36992  class: "columns large-2"
36993};
36994const _hoisted_9$a = { key: 0 };
36995const _hoisted_10$6 = {
36996  key: 3,
36997  class: "columns large-2 article-location"
36998};
36999const _hoisted_11$6 = { key: 0 };
37000const _hoisted_12$6 = {
37001  key: 4,
37002  class: "columns large-4"
37003};
37004const _hoisted_13$6 = {
37005  key: 5,
37006  class: "article-info"
37007};
37008const _hoisted_14$6 = {
37009  key: 6,
37010  class: "columns large-5 article-title-container"
37011};
37012const _hoisted_15$5 = { key: 0 };
37013const _hoisted_16$5 = {
37014  key: 7,
37015  class: "columns large-5 article-abstract"
37016};
37017const _hoisted_17$4 = { key: 0 };
37018const _hoisted_18$4 = {
37019  key: 8,
37020  class: "columns large-2 article-byline"
37021};
37022const _hoisted_19$3 = { key: 0 };
37023const _hoisted_20$2 = {
37024  key: 9,
37025  class: "columns large-6 article-title-container"
37026};
37027const _hoisted_21$2 = { key: 0 };
37028const _hoisted_22$2 = {
37029  key: 10,
37030  class: "columns large-6 article-abstract"
37031};
37032const _hoisted_23$2 = { key: 0 };
37033const _hoisted_24$2 = {
37034  key: 11,
37035  class: "columns large-6 article-title-container"
37036};
37037const _hoisted_25$2 = { key: 0 };
37038const _hoisted_26$1 = {
37039  key: 12,
37040  class: "columns large-6"
37041};
37042const _hoisted_27$1 = { key: 0 };
37043const _hoisted_28$1 = {
37044  key: 13,
37045  class: "columns large-4 article-title-container"
37046};
37047const _hoisted_29 = { key: 0 };
37048const _hoisted_30 = {
37049  key: 14,
37050  class: "columns large-4 article-abstract"
37051};
37052const _hoisted_31 = { key: 0 };
37053const _hoisted_32 = {
37054  key: 15,
37055  class: "columns large-4 article-button-group"
37056};
37057const _hoisted_33 = { class: "flex-wrapper" };
37058const _hoisted_34 = {
37059  key: 16,
37060  class: "columns large-6"
37061};
37062function _sfc_render$1c(_ctx, _cache, $props, $setup, $data, $options) {
37063  const _component_link_button = resolveComponent("link-button");
37064  const _component_download_button = resolveComponent("download-button");
37065  return openBlock(), createElementBlock("div", _hoisted_1$1a, [
37066    (openBlock(true), createElementBlock(Fragment, null, renderList($props.articles, (article, index2) => {
37067      return openBlock(), createElementBlock("a", {
37068        key: index2,
37069        href: article.url,
37070        class: normalizeClass(["row", {
37071          "event": $props.isEvent,
37072          "magazine": $props.isMagazine,
37073          "article": $props.isArticle,
37074          "magazine-archive": $props.isMagazineArchive,
37075          "collapse": $props.isMagazine,
37076          "archive": $props.isArchive,
37077          "equalize-large": $props.isMagazine || $props.isArticle || $props.isMagazineArchive,
37078          "narrow": $props.isArticle
37079        }])
37080      }, [
37081        $props.isEvent && (article.category || article.info) ? (openBlock(), createElementBlock("div", _hoisted_3$N, [
37082          article.category ? (openBlock(), createElementBlock("span", _hoisted_4$z, toDisplayString$1(article.category), 1)) : createCommentVNode("", true),
37083          _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)),
37084          article.info ? (openBlock(), createElementBlock("span", _hoisted_5$o, toDisplayString$1(article.info), 1)) : createCommentVNode("", true)
37085        ])) : createCommentVNode("", true),
37086        $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_6$j, [
37087          article.date ? (openBlock(), createElementBlock("span", _hoisted_7$i, toDisplayString$1(article.date), 1)) : createCommentVNode("", true)
37088        ])) : createCommentVNode("", true),
37089        $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_8$d, [
37090          article.shortDescription ? (openBlock(), createElementBlock("span", _hoisted_9$a, toDisplayString$1(article.shortDescription), 1)) : createCommentVNode("", true)
37091        ])) : createCommentVNode("", true),
37092        $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_10$6, [
37093          article.location ? (openBlock(), createElementBlock("span", _hoisted_11$6, toDisplayString$1(article.location), 1)) : createCommentVNode("", true)
37094        ])) : createCommentVNode("", true),
37095        $props.isEvent ? (openBlock(), createElementBlock("div", _hoisted_12$6, [
37096          createBaseVNode("h3", null, toDisplayString$1(article.title), 1)
37097        ])) : createCommentVNode("", true),
37098        $props.isMagazine && (article.category || article.info) ? (openBlock(), createElementBlock("span", _hoisted_13$6, toDisplayString$1(article.info), 1)) : createCommentVNode("", true),
37099        $props.isMagazine ? (openBlock(), createElementBlock("div", _hoisted_14$6, [
37100          article.title ? (openBlock(), createElementBlock("h3", _hoisted_15$5, toDisplayString$1(article.title), 1)) : createCommentVNode("", true)
37101        ])) : createCommentVNode("", true),
37102        $props.isMagazine ? (openBlock(), createElementBlock("div", _hoisted_16$5, [
37103          article.abstract ? (openBlock(), createElementBlock("span", _hoisted_17$4, toDisplayString$1(article.abstract), 1)) : createCommentVNode("", true)
37104        ])) : createCommentVNode("", true),
37105        $props.isMagazine ? (openBlock(), createElementBlock("div", _hoisted_18$4, [
37106          article.byLine ? (openBlock(), createElementBlock("span", _hoisted_19$3)) : createCommentVNode("", true)
37107        ])) : createCommentVNode("", true),
37108        $props.isArticle ? (openBlock(), createElementBlock("div", _hoisted_20$2, [
37109          article.title ? (openBlock(), createElementBlock("h3", _hoisted_21$2, toDisplayString$1(article.title), 1)) : createCommentVNode("", true)
37110        ])) : createCommentVNode("", true),
37111        $props.isArticle ? (openBlock(), createElementBlock("div", _hoisted_22$2, [
37112          article.abstract ? (openBlock(), createElementBlock("span", _hoisted_23$2, toDisplayString$1(article.abstract), 1)) : createCommentVNode("", true)
37113        ])) : createCommentVNode("", true),
37114        $props.isJob ? (openBlock(), createElementBlock("div", _hoisted_24$2, [
37115          article.title ? (openBlock(), createElementBlock("h3", _hoisted_25$2, toDisplayString$1(article.title), 1)) : createCommentVNode("", true)
37116        ])) : createCommentVNode("", true),
37117        $props.isJob ? (openBlock(), createElementBlock("div", _hoisted_26$1, [
37118          article.date ? (openBlock(), createElementBlock("span", _hoisted_27$1, toDisplayString$1(article.date), 1)) : createCommentVNode("", true)
37119        ])) : createCommentVNode("", true),
37120        $props.isMagazineArchive ? (openBlock(), createElementBlock("div", _hoisted_28$1, [
37121          article.title ? (openBlock(), createElementBlock("h3", _hoisted_29, toDisplayString$1(article.title), 1)) : createCommentVNode("", true)
37122        ])) : createCommentVNode("", true),
37123        $props.isMagazineArchive ? (openBlock(), createElementBlock("div", _hoisted_30, [
37124          article.abstract ? (openBlock(), createElementBlock("span", _hoisted_31, toDisplayString$1(article.abstract), 1)) : createCommentVNode("", true)
37125        ])) : createCommentVNode("", true),
37126        $props.isMagazineArchive ? (openBlock(), createElementBlock("div", _hoisted_32, [
37127          createBaseVNode("div", _hoisted_33, [
37128            article.magazineUrl ? (openBlock(), createBlock(_component_link_button, {
37129              key: 0,
37130              label: _ctx.$t("magazine.navigateToOnlineMagazine"),
37131              url: article.magazineUrl
37132            }, null, 8, ["label", "url"])) : createCommentVNode("", true),
37133            article.downloadUrl ? (openBlock(), createBlock(_component_download_button, {
37134              key: 1,
37135              url: article.downloadUrl
37136            }, null, 8, ["url"])) : createCommentVNode("", true)
37137          ])
37138        ])) : createCommentVNode("", true),
37139        article.title && !$props.isEvent && !$props.isMagazine && !$props.isMagazineArchive && !$props.isArticle && !$props.isJob ? (openBlock(), createElementBlock("div", _hoisted_34, [
37140          createBaseVNode("h3", null, toDisplayString$1(article.title), 1)
37141        ])) : createCommentVNode("", true)
37142      ], 10, _hoisted_2$X);
37143    }), 128))
37144  ]);
37145}
37146const ArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$1e, [["render", _sfc_render$1c]]);
37147const _sfc_main$1d = {
37148  name: "SkipToContent"
37149  // components: {},
37150  // props: {},
37151  // data() {
37152  //   return {};
37153  // },
37154  // computed: {},
37155  // methods: {},
37156  // watch() {},
37157  // Livecycle hooks
37158  // created() {},
37159  // mounted() {},
37160  // updated() {},
37161  // beforeDestroy() {},
37162};
37163const _hoisted_1$19 = {
37164  class: "skip-to-content",
37165  href: "#main_content"
37166};
37167function _sfc_render$1b(_ctx, _cache, $props, $setup, $data, $options) {
37168  return openBlock(), createElementBlock("a", _hoisted_1$19, toDisplayString$1(_ctx.$t("menu.skipToContent.label")), 1);
37169}
37170const SkipToContent = /* @__PURE__ */ _export_sfc(_sfc_main$1d, [["render", _sfc_render$1b]]);
37171const _sfc_main$1c = {
37172  name: "BreadcrumbNavigation",
37173  // components: {},
37174  props: {
37175    path: {
37176      type: Array,
37177      default: () => []
37178    }
37179  },
37180  data() {
37181    return {
37182      reflowOptions: {
37183        property: "width",
37184        transition: "width 130ms ease-in-out"
37185      },
37186      partsActive: [],
37187      partsActiveRef: [],
37188      partsSize: [],
37189      partsFocus: [],
37190      initialized: false
37191    };
37192  },
37193  computed: {
37194    ...mapState(ENVIRONMENT_TYPES.NAME, {
37195      breadcrumbExtension: ENVIRONMENT_TYPES.state.ENVIRONMENT_BREADCRUMB_EXTENSION,
37196      windowWidth: ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH
37197    }),
37198    extendedPath() {
37199      if (this.breadcrumbExtension) {
37200        return [
37201          ...this.path,
37202          this.breadcrumbExtension
37203        ];
37204      }
37205      return this.path;
37206    }
37207  },
37208  watch: {
37209    windowWidth() {
37210      this.onResize();
37211    }
37212  },
37213  mounted() {
37214    if (!this.$isServer) {
37215      this.$nextTick(() => {
37216        this.onResize();
37217      });
37218    }
37219  },
37220  methods: {
37221    checkActive(index2) {
37222      if (!this.initialized) return true;
37223      if (this.partsActive[index2] === true) {
37224        return true;
37225      }
37226      return false;
37227    },
37228    setActive(index2) {
37229      this.partsActive[index2] = true;
37230    },
37231    resetActive(index2) {
37232      this.partsActive[index2] = this.partsActiveRef[index2];
37233    },
37234    checkFocus(index2) {
37235      if (!this.initialized) return false;
37236      if (this.partsFocus[index2] === true) {
37237        return true;
37238      }
37239      return false;
37240    },
37241    setFocus(index2) {
37242      this.partsFocus[index2] = true;
37243    },
37244    resetFocus(index2) {
37245      this.partsFocus[index2] = false;
37246    },
37247    limitLabel(label) {
37248      if (label.length > 25) {
37249        return `${label.substr(0, 23)}...`;
37250      }
37251      return label;
37252    },
37253    /**
37254     * Compares available width with the required width to display the breadcrumb.
37255     * Then shortens the entries at the beginning to "..." if required.
37256     * Always keeps at least the last entry.
37257     */
37258    onResize() {
37259      this.initialized = false;
37260      if (this.$refs.breadcrumb && this.$refs.container && this.$refs.crumb) {
37261        const count = this.$refs.crumb.length;
37262        for (let i = 0; i < count; i++) {
37263          this.partsFocus[i] = false;
37264        }
37265        const full = this.$refs.breadcrumb.offsetWidth;
37266        const current = this.$refs.container.offsetWidth;
37267        let computed2 = current - 1;
37268        if (this.partsSize.length === 0) {
37269          this.partsSize = new Array(count);
37270        }
37271        this.partsActive = new Array(count);
37272        this.partsActiveRef = new Array(count);
37273        this.partsFocus = [];
37274        this.partsActive[count - 1] = true;
37275        this.partsActiveRef[count - 1] = true;
37276        for (let i = count - 2; i >= 0; i--) {
37277          const width = this.partsSize[i] ? this.partsSize[i] : this.$refs.crumb[i].offsetWidth;
37278          this.partsSize[i] = width;
37279          if (computed2 + width < full) {
37280            computed2 += width;
37281            this.partsActive[i] = true;
37282            this.partsActiveRef[i] = true;
37283          } else {
37284            this.partsActive[i] = false;
37285            this.partsActiveRef[i] = false;
37286            break;
37287          }
37288        }
37289      }
37290      this.$nextTick(() => {
37291        this.initialized = true;
37292      });
37293    }
37294  }
37295};
37296const _hoisted_1$18 = {
37297  id: "breadcrumb_nav_label",
37298  class: "visually-hidden",
37299  "aria-hidden": "true"
37300};
37301const _hoisted_2$W = {
37302  ref: "container",
37303  class: "breadcrumb-container"
37304};
37305const _hoisted_3$M = ["onMouseover", "onMouseleave"];
37306const _hoisted_4$y = ["href", "alt", "aria-label", "aria-current", "onFocus", "onBlur"];
37307const _hoisted_5$n = ["innerHTML"];
37308const _hoisted_6$i = ["innerHTML"];
37309const _hoisted_7$h = {
37310  key: 2,
37311  "aria-hidden": "true"
37312};
37313function _sfc_render$1a(_ctx, _cache, $props, $setup, $data, $options) {
37314  return openBlock(), createElementBlock("nav", {
37315    id: "breadcrumb",
37316    ref: "breadcrumb",
37317    class: normalizeClass({
37318      "--active": $data.initialized
37319    }),
37320    "aria-labelledby": "breadcrumb_nav_label"
37321  }, [
37322    createBaseVNode("span", _hoisted_1$18, toDisplayString$1(_ctx.$t("menu.breadcrumbNav.label")), 1),
37323    createBaseVNode("div", _hoisted_2$W, [
37324      (openBlock(true), createElementBlock(Fragment, null, renderList($options.extendedPath, (part, index2) => {
37325        return openBlock(), createElementBlock("div", {
37326          key: `crumb${index2}`,
37327          class: normalizeClass(["breadcrumb-wrapper", { "--active": $options.checkActive(index2) }]),
37328          onMouseover: ($event) => $options.setFocus(index2),
37329          onMouseleave: ($event) => $options.resetFocus(index2)
37330        }, [
37331          createBaseVNode("a", {
37332            href: part.url,
37333            alt: part.label,
37334            "aria-label": part.label,
37335            "aria-current": $options.extendedPath.length - 1 == index2,
37336            onFocus: ($event) => $options.setFocus(index2),
37337            onBlur: ($event) => $options.resetFocus(index2)
37338          }, [
37339            $options.checkFocus(index2) ? (openBlock(), createElementBlock("span", {
37340              key: 0,
37341              "aria-hidden": "true",
37342              innerHTML: part.label
37343            }, null, 8, _hoisted_5$n)) : createCommentVNode("", true),
37344            !$options.checkFocus(index2) ? withDirectives((openBlock(), createElementBlock("span", {
37345              key: 1,
37346              ref_for: true,
37347              ref: "crumb",
37348              "aria-hidden": "true",
37349              innerHTML: $options.limitLabel(part.label)
37350            }, null, 8, _hoisted_6$i)), [
37351              [vShow, $options.checkActive(index2)]
37352            ]) : createCommentVNode("", true),
37353            !$options.checkFocus(index2) ? withDirectives((openBlock(), createElementBlock("span", _hoisted_7$h, "...", 512)), [
37354              [vShow, !$options.checkActive(index2)]
37355            ]) : createCommentVNode("", true)
37356          ], 40, _hoisted_4$y)
37357        ], 42, _hoisted_3$M);
37358      }), 128))
37359    ], 512)
37360  ], 2);
37361}
37362const BreadcrumbNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1c, [["render", _sfc_render$1a]]);
37363const _sfc_main$1b = {
37364  name: "TagList",
37365  // components: {},
37366  props: {
37367    tags: {
37368      type: Array,
37369      default: () => []
37370    },
37371    selectedTag: {
37372      type: Array,
37373      default: () => []
37374    }
37375  },
37376  // data() {
37377  //   return {};
37378  // },
37379  computed: {
37380    showTags() {
37381      if (this.selectedTag.length === 1) {
37382        return this.selectedTag.concat(this.tags.slice(0, 1));
37383      } else {
37384        return this.tags.slice(0, 2);
37385      }
37386    }
37387  }
37388  // methods: {},
37389  // watch() {},
37390  // Livecycle hooks
37391  // created() {},
37392  // mounted() {},
37393  // updated() {},
37394  // beforeDestroy() {},
37395};
37396const _hoisted_1$17 = { class: "tag-list" };
37397const _hoisted_2$V = ["href"];
37398function _sfc_render$19(_ctx, _cache, $props, $setup, $data, $options) {
37399  return openBlock(), createElementBlock("div", _hoisted_1$17, [
37400    createBaseVNode("span", null, toDisplayString$1(_ctx.$t("teaser.tags.label")), 1
37400),
37401    (openBlock(true), createElementBlock(Fragment, null, renderList($options.showTags, (item, index2) => {
37402      return openBlock(), createElementBlock("a", {
37403        key: index2,
37404        href: item.url
37405      }, toDisplayString$1(item.name), 9, _hoisted_2$V);
37406    }), 128))
37407  ]);
37408}
37409const TagList = /* @__PURE__ */ _export_sfc(_sfc_main$1b, [["render", _sfc_render$19]]);
37410const _sfc_main$1a = {
37411  name: "BiographyHeader",
37412  // components: {},
37413  props: {
37414    name: {
37415      type: String,
37416      default: ""
37417    },
37418    birthDate: {
37419      type: String,
37420      default: ""
37421    },
37422    birthPlace: {
37423      type: String,
37424      default: ""
37425    },
37426    deathDate: {
37427      type: String,
37428      default: ""
37429    },
37430    deathPlace: {
37431      type: String,
37432      default: ""
37433    },
37434    profession: {
37435      type: String,
37436      default: ""
37437    }
37438  }
37439  // data() {
37440  //   return {};
37441  // },
37442  //computed: { },
37443  // methods: {},
37444  // watch() {},
37445  // Livecycle hooks
37446  // created() {},
37447  // mounted() {},
37448  // updated() {},
37449  // beforeDestroy() {},
37450};
37451const _hoisted_1$16 = { class: "biography-header" };
37452function _sfc_render$18(_ctx, _cache, $props, $setup, $data, $options) {
37453  return openBlock(), createElementBlock("header", _hoisted_1$16, [
37454    createBaseVNode("h1", null, toDisplayString$1($props.name), 1),
37455    createBaseVNode("p", null, [
37456      createTextVNode(" * " + toDisplayString$1($props.birthDate) + " (" + toDisplayString$1($props.birthPlace) + ")", 1),
37457      _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)),
37458      createTextVNode(" ? " + toDisplayString$1($props.deathDate) + " (" + toDisplayString$1($props.deathPlace) + ") ", 1)
37459    ]),
37460    createBaseVNode("p", null, toDisplayString$1($props.profession), 1),
37461    renderSlot(_ctx.$slots, "default")
37462  ]);
37463}
37464const BiographyHeader = /* @__PURE__ */ _export_sfc(_sfc_main$1a, [["render", _sfc_render$18]]);
37465function truncateHtmlString(str, n, hardmode = false) {
37466  const regex = /(<([^>]+)>)/ig;
37467  const checkstring = str.replace(regex, "");
37468  if (checkstring.length <= n) {
37469    return str;
37470  }
37471  const small = [];
37472  const openTags = [];
37473  let inTag = false;
37474  let tagName = "";
37475  let tagNameComplete = true;
37476  let tagClosing = false;
37477  let lastSpace = 0;
37478  let tagLessCount = 0;
37479  let lastIndex = 0;
37480  for (let p2 = 0; p2 < str.length && tagLessCount < n; p2++) {
37481    const c = str.charAt(p2);
37482    switch (c) {
37483      case "<":
37484        lastSpace = !inTag && p2 + 3 < n ? p2 : lastSpace;
37485        inTag = true;
37486        tagName = "";
37487        tagNameComplete = false;
37488        break;
37489      case ">":
37490        if (inTag && !tagNameComplete) {
37491          openTags.push({
37492            tag: tagName,
37493            p: p2
37494          });
37495          tagNameComplete = true;
37496        }
37497        inTag = false;
37498        if (tagClosing) {
37499          openTags.pop();
37500        }
37501        tagClosing = false;
37502        tagName = "";
37503        break;
37504      case "/":
37505        tagClosing = inTag;
37506        break;
37507      case " ":
37508        lastSpace = !inTag && tagLessCount < n ? p2 : lastSpace;
37509        if (inTag && !tagNameComplete) {
37510          openTags.push({
37511            tag: tagName,
37512            p: p2
37513          });
37514          tagNameComplete = true;
37515        }
37516        break;
37517    }
37518    if (!inTag) {
37519      lastIndex = p2;
37520    }
37521    if (c !== "<" && c !== ">") {
37522      if (!tagNameComplete) {
37523        tagName += c;
37524      } else {
37525        tagLessCount += 1;
37526      }
37527    }
37528  }
37529  if (hardmode === true) {
37530    small.push(str.substring(0, lastIndex));
37531  } else {
37532    small.push(str.substring(0, lastSpace));
37533  }
37534  small.push("&nbsp;&hellip;");
37535  for (let i = openTags.length - 1; i >= 0; i--) {
37536    if (hardmode === true) {
37537      if (openTags[i].p <= lastIndex) {
37538        small.push(`</${openTags[i].tag}>`);
37539      }
37540    } else if (openTags[i].p <= lastSpace) {
37541      small.push(`</${openTags[i].tag}>`);
37542    }
37543  }
37544  return small.join("");
37545}
37546function generateUid() {
37547  return (performance.now().toString(36) + Math.random().toString(36)).replace(/\./g, "");
37548}
37549const _sfc_main$19 = {
37550  name: "DynamicLink",
37551  components: {
37552    TeaserTextImage
37553  },
37554  props: {
37555    targetId: {
37556      type: String,
37557      default: "id"
37558    },
37559    targetUrl: {
37560      type: String,
37561      default: null
37562    },
37563    linkLabel: {
37564      type: String,
37565      default: "id"
37566    },
37567    url: {
37568      type: String,
37569      default: null
37570    },
37571    linkType: {
37572      type: String,
37573      default: null
37574    },
37575    imgSrc: {
37576      type: String,
37577      default: ""
37578    },
37579    imgAlt: {
37580      type: String,
37581      default: ""
37582    },
37583    imgWidth: {
37584      type: Number,
37585      default: 640
37586    },
37587    imgHeight: {
37588      type: Number,
37589      default: 400
37590    }
37591  },
37592  data() {
37593    return {
37594      id: null,
37595      toggled: false,
37596      active: false,
37597      hasPortal: false,
37598      observer: null,
37599      loaded: false,
37600      title: "",
37601      subtitle: null,
37602      text: "",
37603      link: null,
37604      image: "",
37605      hovered: false
37606    };
37607  },
37608  computed: {
37609    ...mapState(ENVIRONMENT_TYPES.NAME, {
37610      sidebarPortal: ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL,
37611      activeLinkTeaser: ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER
37612    }),
37613    ...mapGetters(ENVIRONMENT_TYPES.NAME, {
37614      isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE,
37615      isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET
37616    }),
37617    belowBreakpoint() {
37618      return this.isMobile || this.isTablet;
37619    },
37620    linkTeaserUid() {
37621      return "link_teaser_" + generateUid();
37622    },
37623    getLinkRole() {
37624      if (this.isMobile || this.isTablet) return "button";
37625      else return "link";
37626    },
37627    shortText() {
37628      if (!this.text) return "";
37629      const textClean = this.text.replace(/<\/?[^>]+(>|$)/g, "");
37630      return truncateHtmlString(textClean, 320);
37631    },
37632    targetHref() {
37633      if (this.linkType === "extern" && this.link) {
37634        return this.link;
37635      }
37636      if (this.linkType === "glossar" && this.url) {
37637        return this.url;
37638      }
37639      if (this.linkType === "intern" && this.url) {
37640        return this.url;
37641      }
37642      if (this.linkType === "event" && this.url) {
37643        return this.url;
37644      }
37645      if (this.linkType === "job" && this.url) {
37646        return this.url;
37647      }
37648      if (this.linkType === "bio" && this.url) {
37649        return this.url;
37650      }
37651      if (this.linkType === "news" && this.url) {
37652        return this.url;
37653      }
37654      return "";
37655    },
37656    getLinkLabel() {
37657      if (this.linkType === "extern") {
37658        return this.$t("teaser.label.extern");
37659      }
37660      if (this.linkType === "glossar") {
37661        return this.$t("teaser.label.glossar");
37662      }
37663      return this.$t("teaser.label.intern");
37664    }
37665  },
37666  watch: {
37667    sidebarPortal(to) {
37668      if (to) {
37669        this.hasPortal = true;
37670      } else {
37671        this.hasPortal = false;
37672      }
37673    },
37674    activeLinkTeaser(to) {
37675      if (this.toggled === true && to != this.id) {
37676        this.toggled = false;
37677      }
37678    },
37679    belowBreakpoint(to) {
37680      if (to === true) {
37681        this.stopObserver();
37682        this.active = false;
37683      } else {
37684        this.$nextTick(() => {
37685          this.startObserver();
37686        });
37687      }
37688    }
37689  },
37690  // Livecycle hooks
37691  // created() {},
37692  async mounted() {
37693    this.id = this.linkTeaserUid;
37694    this.registerLink({
37695      // eslint-disable-next-line
37696      id: this._uid,
37697      el: this.$refs.link,
37698      target: this.targetId
37699    });
37700    await this.loadTeaserData();
37701    this.startObserver();
37702  },
37703  // updated() {},
37704  // beforeDestroy() {},
37705  methods: {
37706    ...mapMutations(ENVIRONMENT_TYPES.NAME, {
37707      registerLink: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_LINK,
37708      setActiveLinkTeaser: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_ACTIVE_LINK_TEASER
37709    }),
37710    async loadTeaserData() {
37711      try {
37712        const { status, data } = await axios.get(this.targetUrl);
37713        if (status === 200 && typeof data !== "undefined") {
37714          if (data.title) {
37715            this.title = data.title;
37716          } else if (data.name) {
37717            this.title = data.name;
37718          }
37719          if (data.subtitle) {
37720            this.subtitle = data.subtitle;
37721          }
37722          if (data.text) {
37723            this.text = data.text;
37724          } else if (data.description) {
37725            this.text = data.description;
37726          }
37727          if (data.link) {
37728            this.link = data.link;
37729          }
37730          if (data.image) {
37731            if (data.image.image) {
37732              this.image = data.image.image;
37733            } else if (typeof data.image === "string") {
37734              this.image = data.image;
37735            }
37736          }
37737          this.loaded = true;
37738        }
37739      } catch (error) {
37740        console.warn(error);
37741      }
37742    },
37743    toggleActive(event) {
37744      this.toggled = !this.toggled;
37745      if (this.belowBreakpoint) {
37746        event.preventDefault();
37747        if (this.toggled) {
37748          this.$nextTick(() => {
37749            this.setActiveLinkTeaser({
37750              [ENVIRONMENT_TYPES.state.ENVIRONMENT_ACTIVE_LINK_TEASER]: this.id
37751            });
37752            const clientRectTeaser = this.$refs.linkTeaser.$el.getBoundingClientRect();
37753            if (clientRectTeaser.right > window.innerWidth) {
37754              const clientRect = this.$el.getBoundingClientRect();
37755              const computedRight = -1 * Math.round(window.innerWidth - clientRect.right) + 18;
37756              this.$refs.linkTeaser.$el.style.right = `${computedRight}px`;
37757            }
37758            this.$refs.linkTeaser.$el.focus();
37759          });
37760        }
37761      }
37762    },
37763    onObserverChange(entries) {
37764      if (entries[0]) {
37765        this.active = entries[0].isIntersecting;
37766      }
37767    },
37768    startObserver() {
37769      if (this.belowBreakpoint) return;
37770      if (!this.observer) {
37771        const options2 = {
37772          root: document,
37773          rootMargin: "-140px 0px 0px 0px",
37774          threshold: 0.5
37775        };
37776        this.observer = new IntersectionObserver(this.onObserverChange, options2);
37777        this.observer.observe(this.$refs.link);
37778      }
37779    },
37780    stopObserver() {
37781      if (this.observer) {
37782        this.observer.disconnect();
37783        this.observer = null;
37784      }
37785    }
37786  }
37787};
37788const _hoisted_1$15 = ["href", "role", "data-close-text"];
37789const _hoisted_2$U = { key: 1 };
37790function _sfc_render$17(_ctx, _cache, $props, $setup, $data, $options) {
37791  const _component_teaser_text_image = resolveComponent("teaser-text-image");
37792  return openBlock(), createElementBlock("span", {
37793    ref: "link",
37794    class: normalizeClass(["dynamic-link", {
37795      "active": ($data.active || $data.toggled) && $data.loaded
37796    }])
37797  }, [
37798    $data.loaded ? (openBlock(), createElementBlock("a", {
37799      key: 0,
37800      href: $options.targetHref,
37801      role: $options.getLinkRole,
37802      class: normalizeClass(["dynamic-link-link", {
37803        "iconafter-link-extern": $props.linkType === "extern"
37804      }]),
37805      "data-close-text": _ctx.$t("overlay.close.label"),
37806      onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleActive && $options.toggleActive(...args)),
37807      onMouseenter: _cache[1] || (_cache[1] = ($event) => $data.hovered = true),
37808      onMouseleave: _cache[2] || (_cache[2] = ($event) => $data.hovered = false)
37809    }, [
37810      createBaseVNode("span", null, [
37811        renderSlot(_ctx.$slots, "default")
37812      ])
37813    ], 42, _hoisted_1$15)) : (openBlock(), createElementBlock("span", _hoisted_2$U, [
37814      renderSlot(_ctx.$slots, "default")
37815    ])),
37816    (openBlock(), createBlock(Teleport, {
37817      disabled: $options.belowBreakpoint || !$data.hasPortal,
37818      to: $options.belowBreakpoint || !$data.hasPortal ? null : _ctx.sidebarPortal
37819    }, [
37820      createVNode(Transition, { name: "sidebarTeaserTransition" }, {
37821        default: withCtx(() => [
37822          $data.loaded && ($data.active && $data.hasPortal || $data.toggled) ? (openBlock(), createBlock(_component_teaser_text_image, {
37823            key: 0,
37824            ref: "linkTeaser",
37825            class: normalizeClass([{
37826              "dynamic-link-teaser": $options.belowBreakpoint || !$data.hasPortal,
37827              "active-hover": $data.hovered
37828            }, "dynamic-link-sidebar"]),
37829            "sub-title": $data.subtitle,
37830            title: $data.title,
37831            summary: $options.shortText,
37832            url: $options.targetHref,
37833            "link-text": $options.getLinkLabel,
37834            "is-extern": $props.linkType === "extern",
37835            "img-src": $data.image,
37836            "img-alt": $props.imgAlt,
37837            "img-height": $props.imgHeight,
37838            "img-width": $props.imgWidth
37839          }, null, 8, ["class", "sub-title", "title", "summary", "url", "link-text", "is-extern", "img-src", "img-alt", "img-height", "img-width"])) : createCommentVNode("", true)
37840        ]),
37841        _: 1
37842      })
37843    ], 8, ["disabled", "to"]))
37844  ], 2);
37845}
37846const DynamicLink = /* @__PURE__ */ _export_sfc(_sfc_main$19, [["render", _sfc_render$17]]);
37847const _sfc_main$18 = {
37848  name: "SidebarPortal",
37849  // components: {},
37850  // props: {},
37851  // data() {
37852  //   return {};
37853  // },
37854  // computed: {},
37855  // watch: {},
37856  // Livecycle hooks
37857  // created() {},
37858  mounted() {
37859    this.setSidebarPortal({
37860      [ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL]: "#sidebar_portal"
37861    });
37862  },
37863  // updated() {},
37864  beforeUnmount() {
37865    this.setSidebarPortal({
37866      [ENVIRONMENT_TYPES.state.ENVIRONMENT_SIDEBAR_PORTAL]: null
37867    });
37868  },
37869  methods: {
37870    ...mapMutations(ENVIRONMENT_TYPES.NAME, {
37871      setSidebarPortal: ENVIRONMENT_TYPES.mutations.SET_ENVIRONMENT_SIDEBAR_PORTAL
37872    })
37873  }
37874};
37875const _hoisted_1$14 = { class: "sidebar-portal" };
37876function _sfc_render$16(_ctx, _cache, $props, $setup, $data, $options) {
37877  return openBlock(), createElementBlock("div", _hoisted_1$14, _cache[0] || (_cache[0] = [
37878    createBaseVNode("div", {
37879      id: "sidebar_portal",
37880      class: "sidebar-portal-wrapper"
37881    }, null, -1)
37882  ]));
37883}
37884const SidebarPortal = /* @__PURE__ */ _export_sfc(_sfc_main$18, [["render", _sfc_render$16]]);
37885const _sfc_main$17 = {
37886  name: "PaginationLinkList"
37887  // components: {},
37888  // props: {},
37889  // data() {
37890  //   return {};
37891  // },
37892  // computed: {},
37893  // watch: {},
37894  // Livecycle hooks
37895  // created() {},
37896  // mounted() {},
37897  // updated() {},
37898  // beforeUnmount() {},
37899  // methods: {},
37900};
37901const _hoisted_1$13 = {
37902  class: "pagination-link-list",
37903  role: "navigation",
37904  "aria-label": "pagination navigation"
37905};
37906const _hoisted_2$T = { class: "pagination-links-wrapper" };
37907const _hoisted_3$L = { class: "pagination-links" };
37908const _hoisted_4$x = ["aria-label"];
37909function _sfc_render$15(_ctx, _cache, $props, $setup, $data, $options) {
37910  return openBlock(), createElementBlock("nav", _hoisted_1$13, [
37911    _cache[0] || (_cache[0] = createBaseVNode("a", {
37912      class: "pagination-next icon-arrow-right",
37913      "aria-label": "next page"
37914    }, null, -1)),
37915    _cache[1] || (_cache[1] = createBaseVNode("a", {
37916      class: "pagination-prev icon-arrow-right",
37917      "aria-label": "previous page"
37918    }, null, -1)),
37919    createBaseVNode("div", _hoisted_2$T, [
37920      createBaseVNode("div", _hoisted_3$L, [
37921        (openBlock(), createElementBlock(Fragment, null, renderList(12, (index2) => {
37922          return createBaseVNode("a", {
37923            key: `entry${index2}`,
37924            class: normalizeClass(["pagination-link", {
37925              "-current": index2 === 3
37926            }]),
37927            "aria-label": `goto page ${index2}`
37928          }, toDisplayString$1(index2), 11, _hoisted_4$x);
37929        }), 64))
37930      ])
37931    ])
37932  ]);
37933}
37934const PaginationLinkList = /* @__PURE__ */ _export_sfc(_sfc_main$17, [["render", _sfc_render$15]]);
37935const _sfc_main$16 = {
37936  name: "SearchResultEntry",
37937  // components: {},
37938  props: {
37939    title: {
37940      type: String,
37941      required: true
37942    },
37943    supTitle: {
37944      type: String,
37945      required: true
37946    },
37947    text: {
37948      type: String,
37949      default: null
37950    },
37951    url: {
37952      type: String,
37953      required: true
37954    },
37955    imgSrc: {
37956      type: String,
37957      default: ""
37958    },
37959    imgAlt: {
37960      type: String,
37961      default: ""
37962    },
37963    imgWidth: {
37964      type: Number,
37965      default: 640
37966    },
37967    imgHeight: {
37968      type: Number,
37969      default: 400
37970    }
37971  }
37972  // data() {
37973  //   return {};
37974  // },
37975  // computed: {},
37976  // methods: {},
37977  // watch() {},
37978  // Livecycle hooks
37979  // created() {},
37980  // mounted() {},
37981  // updated() {},
37982  // beforeDestroy() {},
37983};
37984const _hoisted_1$12 = ["href"];
37985const _hoisted_2$S = { class: "columns medium-2" };
37986const _hoisted_3$K = { key: 0 };
37987const _hoisted_4$w = ["src", "alt", "height", "width"];
37988const _hoisted_5$m = { class: "columns medium-6" };
37989const _hoisted_6$h = { class: "search-result-text" };
37990const _hoisted_7$g = ["innerHTML"];
37991const _hoisted_8$c = { key: 0 };
37992const _hoisted_9$9 = ["innerHTML"];
37993function _sfc_render$14(_ctx, _cache, $props, $setup, $data, $options) {
37994  return openBlock(), createElementBlock("a", {
37995    href: $props.url,
37996    class: "search-result-entry row"
37997  }, [
37998    createBaseVNode("div", _hoisted_2$S, [
37999      $props.imgSrc ? (openBlock(), createElementBlock("figure", _hoisted_3$K, [
38000        createBaseVNode("img", {
38001          src: $props.imgSrc,
38002          alt: $props.imgAlt ? $props.imgAlt : $props.title,
38003          height: $props.imgHeight,
38004          width: $props.imgWidth,
38005          loading: "lazy"
38006        }, null, 8, _hoisted_4$w)
38007      ])) : createCommentVNode("", true)
38008    ]),
38009    createBaseVNode("div", _hoisted_5$m, [
38010      createBaseVNode("div", _hoisted_6$h, [
38011        createBaseVNode("h3", null, [
38012          createBaseVNode("span", { innerHTML: $props.title }, null, 8, _hoisted_7$g)
38013        ]),
38014        $props.supTitle ? (openBlock(), createElementBlock("h4", _hoisted_8$c, toDisplayString$1($props.supTitle), 1)) : createCommentVNode("", true),
38015        $props.text ? (openBlock(), createElementBlock("div", {
38016          key: 1,
38017          class: "excerpt",
38018          innerHTML: $props.text
38019        }, null, 8, _hoisted_9$9)) : createCommentVNode("", true)
38020      ])
38021    ])
38022  ], 8, _hoisted_1$12);
38023}
38024const SearchResultEntry = /* @__PURE__ */ _export_sfc(_sfc_main$16, [["render", _sfc_render$14]]);
38025const _sfc_main$15 = {
38026  name: "MatomoEmbed",
38027  // components: {},
38028  props: {
38029    src: {
38030      type: String,
38031      default: null
38032    }
38033  },
38034  // data() {
38035  //   return {};
38036  // },
38037  computed: {
38038    ...mapState(CONSENT_TYPES.NAME, {
38039      matomoConsent: CONSENT_TYPES.state.CONSENT_MATOMO
38040    })
38041  }
38042  // watch: {},
38043  // Livecycle hooks
38044  // created() {},
38045  // mounted() {},
38046  // updated() {},
38047  // beforeUnmount() {},
38048  // methods: {},
38049};
38050function _sfc_render$13(_ctx, _cache, $props, $setup, $data, $options) {
38051  return openBlock(), createBlock(resolveDynamicComponent(_ctx.matomoConsent ? "script" : "span"), {
38052    class: "matomo-embed",
38053    src: $props.src
38054  }, {
38055    default: withCtx(() => [
38056      renderSlot(_ctx.$slots, "default")
38057    ]),
38058    _: 3
38059  }, 8, ["src"]);
38060}
38061const MatomoEmbed = /* @__PURE__ */ _export_sfc(_sfc_main$15, [["render", _sfc_render$13]]);
38062const _sfc_main$14 = {
38063  name: "SearchNav",
38064  // components: {},
38065  props: {
38066    currentPage: {
38067      type: Number,
38068      default: 1
38069    },
38070    maxPages: {
38071      type: Number,
38072      default: 2
38073    }
38074  },
38075  data() {
38076    return {
38077      pageNumbers: [],
38078      disablePrev: false,
38079      disableNext: false
38080    };
38081  },
38082  // computed: {},
38083  // watch: {},
38084  // Livecycle hooks
38085  // created() {},
38086  mounted() {
38087    this.disablePrev = parseInt(this.currentPage) <= 1;
38088    this.disableNext = parseInt(this.currentPage) >= this.maxPages;
38089    if (parseInt(this.currentPage) < 2) {
38090      if (parseInt(this.maxPages) < 4) {
38091        for (let i = 1; i <= parseInt(this.maxPages); i++) {
38092          this.pageNumbers.push(i);
38093        }
38094      } else {
38095        for (let i = 1; i <= 4; i++) {
38096          this.pageNumbers.push(i);
38097        }
38098      }
38099    } else if (parseInt(this.currentPage) > parseInt(this.maxPages) - 2) {
38100      if (parseInt(this.maxPages) < 4) {
38101        for (let i = 1; i <= parseInt(this.maxPages); i++) {
38102          this.pageNumbers.push(i);
38103        }
38104      } else {
38105        for (let i = parseInt(this.maxPages) - 3; i <= parseInt(this.maxPages); i++) {
38106          this.pageNumbers.push(i);
38107        }
38108      }
38109    } else {
38110      for (let i = parseInt(this.currentPage) - 1; i <= parseInt(this.currentPage) + 2; i++) {
38111        this.pageNumbers.push(i);
38112      }
38113    }
38114  },
38115  // updated() {},
38116  // beforeUnmount() {},
38117  methods: {
38118    nextPage() {
38119      this.changePage(parseInt(this.currentPage) + 1);
38120    },
38121    prevPage() {
38122      this.changePage(parseInt(this.currentPage) - 1);
38123    },
38124    changePage(newPage) {
38125      let params = new URL(document.location).searchParams;
38126      params.set("page", newPage);
38127      window.location.href = window.location.protocol + "//" + window.location.host + window.location.pathname + "?" + params.toString();
38128    }
38129  }
38130};
38131const _hoisted_1$11 = { class: "search-nav" };
38132const _hoisted_2$R = { class: "wrapper" };
38133const _hoisted_3$J = ["disabled"];
38134const _hoisted_4$v = ["onClick"];
38135const _hoisted_5$l = ["disabled"];
38136function _sfc_render$12(_ctx, _cache, $props, $setup, $data, $options) {
38137  return openBlock(), createElementBlock("div", _hoisted_1$11, [
38138    createBaseVNode("div", _hoisted_2$R, [
38139      createBaseVNode("button", {
38140        ref: "next",
38141        class: normalizeClass(["swiper-button-prev", { "swiper-button-disabled": $data.disablePrev }]),
38142        disabled: $data.disablePrev,
38143        onClick: _cache[0] || (_cache[0] = ($event) => $options.prevPage())
38144      }, null, 10, _hoisted_3$J),
38145      (openBlock(true), createElementBlock(Fragment, null, renderList($data.pageNumbers, (pageNumber) => {
38146        return openBlock(), createElementBlock("div", {
38147          key: pageNumber.id,
38148          class: normalizeClass(["page-number", { "current-page-number": parseInt($props.currentPage) === parseInt(pageNumber) }]),
38149          onClick: ($event) => $options.changePage(parseInt(pageNumber))
38150        }, toDisplayString$1(pageNumber), 11, _hoisted_4$v);
38151      }), 128)),
38152      createBaseVNode("button", {
38153        ref: "next",
38154        class: normalizeClass(["swiper-button-next", { "swiper-button-disabled": $data.disableNext }]),
38155        disabled: $data.disableNext,
38156        onClick: _cache[1] || (_cache[1] = ($event) => $options.nextPage())
38157      }, null, 10, _hoisted_5$l)
38158    ])
38159  ]);
38160}
38161const SearchNav = /* @__PURE__ */ _export_sfc(_sfc_main$14, [["render", _sfc_render$12]]);
38162const _sfc_main$13 = {
38163  name: "MagazineHeader",
38164  props: {
38165    headingSubline: {
38166      type: String,
38167      required: true
38168    },
38169    headerDescription: {
38170      type: String,
38171      default: null
38172    },
38173    hasBorder: {
38174      type: Boolean,
38175      default: true
38176    },
38177    heading: {
38178      type: String,
38179      default: null
38180    },
38181    yearNumber: {
38182      type: String,
38183      default: null
38184    }
38185  }
38186};
38187const _hoisted_1$10 = { class: "magazine-header" };
38188const _hoisted_2$Q = { class: "magazine-header-main-content" };
38189const _hoisted_3$I = { class: "magazine-heading" };
38190const _hoisted_4$u = { class: "magazine-heading-title-container" };
38191const _hoisted_5$k = { class: "magazine-heading-title" };
38192const _hoisted_6$g = {
38193  key: 0,
38194  class: "magazine-heading-year"
38195};
38196const _hoisted_7$f = { class: "magazine-heading-subline" };
38197const _hoisted_8$b = {
38198  key: 0,
38199  class: "magazine-header-description"
38200};
38201function _sfc_render$11(_ctx, _cache, $props, $setup, $data, $options) {
38202  return openBlock(), createElementBlock("header", _hoisted_1$10, [
38203    createBaseVNode("div", {
38204      class: normalizeClass(["magazine-header-main", $props.hasBorder ? "has-border" : ""])
38205    }, [
38206      createBaseVNode("div", _hoisted_2$Q, [
38207        createBaseVNode("h1", _hoisted_3$I, [
38208          createBaseVNode("div", _hoisted_4$u, [
38209            createBaseVNode("span", _hoisted_5$k, toDisplayString$1($props.heading ? $props.heading : _ctx.$t("magazine.heading")), 1),
38210            createBaseVNode("span", {
38211              class: normalizeClass(["magazine-heading-title-line-suffix", $props.hasBorder ? "has-border" : ""])
38212            }, null, 2)
38213          ]),
38214          $props.yearNumber ? (openBlock(), createElementBlock("div", _hoisted_6$g, toDisplayString$1($props.yearNumber), 1)) : createCommentVNode("", true)
38215        ]),
38216        createBaseVNode("p", _hoisted_7$f, toDisplayString$1($props.headingSubline), 1)
38217      ])
38218    ], 2),
38219    $props.headerDescription ? (openBlock(), createElementBlock("div", _hoisted_8$b, toDisplayString$1($props.headerDescription), 1)) : createCommentVNode("", true)
38220  ]);
38221}
38222const MagazineHeader = /* @__PURE__ */ _export_sfc(_sfc_main$13, [["render", _sfc_render$11]]);
38223const _sfc_main$12 = {
38224  name: "MagazineEditorialContent",
38225  props: {
38226    heading: {
38227      type: String,
38228      required: true
38229    },
38230    text: {
38231      type: String,
38232      required: true
38233    }
38234  }
38235};
38236const _hoisted_1$$ = { class: "magazine-editorial-content" };
38237const _hoisted_2$P = { class: "magazine-editorial-content-heading" };
38238const _hoisted_3$H = { class: "magazine-editorial-content-text" };
38239function _sfc_render$10(_ctx, _cache, $props, $setup, $data, $options) {
38240  return openBlock(), createElementBlock("div", _hoisted_1$$, [
38241    createBaseVNode("h2", _hoisted_2$P, toDisplayString$1($props.heading), 1),
38242    createBaseVNode("p", _hoisted_3$H, toDisplayString$1($props.text), 1)
38243  ]);
38244}
38245const MagazineEditorialContent = /* @__PURE__ */ _export_sfc(_sfc_main$12, [["render", _sfc_render$10]]);
38246const _sfc_main$11 = {
38247  name: "MagazineEditorialFigure",
38248  props: {
38249    imageUrl: {
38250      type: String,
38251      required: true
38252    },
38253    imageAlt: {
38254      type: String,
38255      required: true
38256    },
38257    captionHeadline: {
38258      type: String,
38259      required: true
38260    },
38261    captionText: {
38262      type: String,
38263      required: true
38264    }
38265  }
38266};
38267const _hoisted_1$_ = { class: "magazine-editorial-figure" };
38268const _hoisted_2$O = ["src", "alt"];
38269const _hoisted_3$G = { class: "magazine-editorial-figure-caption-headline" };
38270function _sfc_render$$(_ctx, _cache, $props, $setup, $data, $options) {
38271  return openBlock(), createElementBlock("div", _hoisted_1$_, [
38272    createBaseVNode("div", null, [
38273      createBaseVNode("figure", null, [
38274        createBaseVNode("img", {
38275          src: $props.imageUrl,
38276          alt: $props.imageAlt
38277        }, null, 8, _hoisted_2$O),
38278        createBaseVNode("figcaption", null, [
38279          createBaseVNode("p", _hoisted_3$G, toDisplayString$1($props.captionHeadline), 1),
38280          createBaseVNode("p", null, toDisplayString$1($props.captionText), 1)
38281        ])
38282      ])
38283    ])
38284  ]);
38285}
38286const MagazineEditorialFigure = /* @__PURE__ */ _export_sfc(_sfc_main$11, [["render", _sfc_render$$]]);
38287const _sfc_main$10 = {
38288  name: "MagazineFilter",
38289  // components: {},
38290  props: {
38291    label: {
38292      type: String,
38293      required: true
38294    },
38295    isSelected: {
38296      type: Boolean,
38297      default: false
38298    }
38299  }
38300  // data() {
38301  //   return {}
38302  // },
38303  // computed: {}
38304  // methods: {},
38305  // Livecycle hooks
38306  // created() {},
38307  // mounted() {},
38308  // updated() {},
38309  // beforeDestroy() {},
38310};
38311function _sfc_render$_(_ctx, _cache, $props, $setup, $data, $options) {
38312  return openBlock(), createElementBlock("a", {
38313    class: normalizeClass(["magazine-filter link-button", { "selected": $props.isSelected }])
38314  }, toDisplayString$1($props.label), 3);
38315}
38316const MagazineFilter = /* @__PURE__ */ _export_sfc(_sfc_main$10, [["render", _sfc_render$_]]);
38317var __defProp = Object.defineProperty;
38318var __defProps = Object.defineProperties;
38319var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
38320var __getOwnPropSymbols = Object.getOwnPropertySymbols;
38321var __hasOwnProp = Object.prototype.hasOwnProperty;
38322var __propIsEnum = Object.prototype.propertyIsEnumerable;
38323var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
38324var __spreadValues = (a, b) => {
38325  for (var prop in b || (b = {}))
38326    if (__hasOwnProp.call(b, prop))
38327      __defNormalProp(a, prop, b[prop]);
38328  if (__getOwnPropSymbols)
38329    for (var prop of __getOwnPropSymbols(b)) {
38330      if (__propIsEnum.call(b, prop))
38331        __defNormalProp(a, prop, b[prop]);
38332    }
38333  return a;
38334};
38335var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
38336var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
38337var FUNC_ERROR_TEXT$1 = "Expected a function";
38338var NAN$1 = 0 / 0;
38339var symbolTag$1 = "[object Symbol]";
38340var reTrim$1 = /^\s+|\s+$/g;
38341var reIsBadHex$1 = /^[-+]0x[0-9a-f]+$/i;
38342var reIsBinary$1 = /^0b[01]+$/i;
38343var reIsOctal$1 = /^0o[0-7]+$/i;
38344var freeParseInt$1 = parseInt;
38345var freeGlobal$1 = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
38346var freeSelf$1 = typeof self == "object" && self && self.Object === Object && self;
38347var root$1 = freeGlobal$1 || freeSelf$1 || Function("return this")();
38348var objectProto$1 = Object.prototype;
38349var objectToString$1 = objectProto$1.toString;
38350var nativeMax$1 = Math.max, nativeMin$1 = Math.min;
38351var now$1 = function() {
38352  return root$1.Date.now();
38353};
38354function debounce$1(func, wait, options2) {
38355  var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
38356  if (typeof func != "function") {
38357    throw new TypeError(FUNC_ERROR_TEXT$1);
38358  }
38359  wait = toNumber$1(wait) || 0;
38360  if (isObject$1(options2)) {
38361    leading = !!options2.leading;
38362    maxing = "maxWait" in options2;
38363    maxWait = maxing ? nativeMax$1(toNumber$1(options2.maxWait) || 0, wait) : maxWait;
38364    trailing = "trailing" in options2 ? !!options2.trailing : trailing;
38365  }
38366  function invokeFunc(time) {
38367    var args = lastArgs, thisArg = lastThis;
38368    lastArgs = lastThis = void 0;
38369    lastInvokeTime = time;
38370    result = func.apply(thisArg, args);
38371    return result;
38372  }
38373  function leadingEdge(time) {
38374    lastInvokeTime = time;
38375    timerId = setTimeout(timerExpired, wait);
38376    return leading ? invokeFunc(time) : result;
38377  }
38378  function remainingWait(time) {
38379    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;
38380    return maxing ? nativeMin$1(result2, maxWait - timeSinceLastInvoke) : result2;
38381  }
38382  function shouldInvoke(time) {
38383    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
38384    return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
38385  }
38386  function timerExpired() {
38387    var time = now$1();
38388    if (shouldInvoke(time)) {
38389      return trailingEdge(time);
38390    }
38391    timerId = setTimeout(timerExpired, remainingWait(time));
38392  }
38393  function trailingEdge(time) {
38394    timerId = void 0;
38395    if (trailing && lastArgs) {
38396      return invokeFunc(time);
38397    }
38398    lastArgs = lastThis = void 0;
38399    return result;
38400  }
38401  function cancel() {
38402    if (timerId !== void 0) {
38403      clearTimeout(timerId);
38404    }
38405    lastInvokeTime = 0;
38406    lastArgs = lastCallTime = lastThis = timerId = void 0;
38407  }
38408  function flush() {
38409    return timerId === void 0 ? result : trailingEdge(now$1());
38410  }
38411  function debounced() {
38412    var time = now$1(), isInvoking = shouldInvoke(time);
38413    lastArgs = arguments;
38414    lastThis = this;
38415    lastCallTime = time;
38416    if (isInvoking) {
38417      if (timerId === void 0) {
38418        return leadingEdge(lastCallTime);
38419      }
38420      if (maxing) {
38421        timerId = setTimeout(timerExpired, wait);
38422        return invokeFunc(lastCallTime);
38423      }
38424    }
38425    if (timerId === void 0) {
38426      timerId = setTimeout(timerExpired, wait);
38427    }
38428    return result;
38429  }
38430  debounced.cancel = cancel;
38431  debounced.flush = flush;
38432  return debounced;
38433}
38434function isObject$1(value) {
38435  var type = typeof value;
38436  return !!value && (type == "object" || type == "function");
38437}
38438function isObjectLike$1(value) {
38439  return !!value && typeof value == "object";
38440}
38441function isSymbol$1(value) {
38442  return typeof value == "symbol" || isObjectLike$1(value) && objectToString$1.call(value) == symbolTag$1;
38443}
38444function toNumber$1(value) {
38445  if (typeof value == "number") {
38446    return value;
38447  }
38448  if (isSymbol$1(value)) {
38449    return NAN$1;
38450  }
38451  if (isObject$1(value)) {
38452    var other = typeof value.valueOf == "function" ? value.valueOf() : value;
38453    value = isObject$1(other) ? other + "" : other;
38454  }
38455  if (typeof value != "string") {
38456    return value === 0 ? value : +value;
38457  }
38458  value = value.replace(reTrim$1, "");
38459  var isBinary = reIsBinary$1.test(value);
38460  return isBinary || reIsOctal$1.test(value) ? freeParseInt$1(value.slice(2), isBinary ? 2 : 8) : reIsBadHex$1.test(value) ? NAN$1 : +value;
38461}
38462var lodash_debounce = debounce$1;
38463var FUNC_ERROR_TEXT = "Expected a function";
38464var NAN = 0 / 0;
38465var symbolTag = "[object Symbol]";
38466var reTrim = /^\s+|\s+$/g;
38467var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;
38468var reIsBinary = /^0b[01]+$/i;
38469var reIsOctal = /^0o[0-7]+$/i;
38470var freeParseInt = parseInt;
38471var freeGlobal = typeof commonjsGlobal == "object" && commonjsGlobal && commonjsGlobal.Object === Object && commonjsGlobal;
38472var freeSelf = typeof self == "object" && self && self.Object === Object && self;
38473var root = freeGlobal || freeSelf || Function("return this")();
38474var objectProto = Object.prototype;
38475var objectToString = objectProto.toString;
38476var nativeMax = Math.max, nativeMin = Math.min;
38477var now = function() {
38478  return root.Date.now();
38479};
38480function debounce(func, wait, options2) {
38481  var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
38482  if (typeof func != "function") {
38483    throw new TypeError(FUNC_ERROR_TEXT);
38484  }
38485  wait = toNumber(wait) || 0;
38486  if (isObject(options2)) {
38487    leading = !!options2.leading;
38488    maxing = "maxWait" in options2;
38489    maxWait = maxing ? nativeMax(toNumber(options2.maxWait) || 0, wait) : maxWait;
38490    trailing = "trailing" in options2 ? !!options2.trailing : trailing;
38491  }
38492  function invokeFunc(time) {
38493    var args = lastArgs, thisArg = lastThis;
38494    lastArgs = lastThis = void 0;
38495    lastInvokeTime = time;
38496    result = func.apply(thisArg, args);
38497    return result;
38498  }
38499  function leadingEdge(time) {
38500    lastInvokeTime = time;
38501    timerId = setTimeout(timerExpired, wait);
38502    return leading ? invokeFunc(time) : result;
38503  }
38504  function remainingWait(time) {
38505    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, result2 = wait - timeSinceLastCall;
38506    return maxing ? nativeMin(result2, maxWait - timeSinceLastInvoke) : result2;
38507  }
38508  function shouldInvoke(time) {
38509    var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
38510    return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
38511  }
38512  function timerExpired() {
38513    var time = now();
38514    if (shouldInvoke(time)) {
38515      return trailingEdge(time);
38516    }
38517    timerId = setTimeout(timerExpired, remainingWait(time));
38518  }
38519  function trailingEdge(time) {
38520    timerId = void 0;
38521    if (trailing && lastArgs) {
38522      return invokeFunc(time);
38523    }
38524    lastArgs = lastThis = void 0;
38525    return result;
38526  }
38527  function cancel() {
38528    if (timerId !== void 0) {
38529      clearTimeout(timerId);
38530    }
38531    lastInvokeTime = 0;
38532    lastArgs = lastCallTime = lastThis = timerId = void 0;
38533  }
38534  function flush() {
38535    return timerId === void 0 ? result : trailingEdge(now());
38536  }
38537  function debounced() {
38538    var time = now(), isInvoking = shouldInvoke(time);
38539    lastArgs = arguments;
38540    lastThis = this;
38541    lastCallTime = time;
38542    if (isInvoking) {
38543      if (timerId === void 0) {
38544        return leadingEdge(lastCallTime);
38545      }
38546      if (maxing) {
38547        timerId = setTimeout(timerExpired, wait);
38548        return invokeFunc(lastCallTime);
38549      }
38550    }
38551    if (timerId === void 0) {
38552      timerId = setTimeout(timerExpired, wait);
38553    }
38554    return result;
38555  }
38556  debounced.cancel = cancel;
38557  debounced.flush = flush;
38558  return debounced;
38559}
38560function throttle(func, wait, options2) {
38561  var leading = true, trailing = true;
38562  if (typeof func != "function") {
38563    throw new TypeError(FUNC_ERROR_TEXT);
38564  }
38565  if (isObject(options2)) {
38566    leading = "leading" in options2 ? !!options2.leading : leading;
38567    trailing = "trailing" in options2 ? !!options2.trailing : trailing;
38568  }
38569  return debounce(func, wait, {
38570    "leading": leading,
38571    "maxWait": wait,
38572    "trailing": trailing
38573  });
38574}
38575function isObject(value) {
38576  var type = typeof value;
38577  return !!value && (type == "object" || type == "function");
38578}
38579function isObjectLike(value) {
38580  return !!value && typeof value == "object";
38581}
38582function isSymbol(value) {
38583  return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
38584}
38585function toNumber(value) {
38586  if (typeof value == "number") {
38587    return value;
38588  }
38589  if (isSymbol(value)) {
38590    return NAN;
38591  }
38592  if (isObject(value)) {
38593    var other = typeof value.valueOf == "function" ? value.valueOf() : value;
38594    value = isObject(other) ? other + "" : other;
38595  }
38596  if (typeof value != "string") {
38597    return value === 0 ? value : +value;
38598  }
38599  value = value.replace(reTrim, "");
38600  var isBinary = reIsBinary.test(value);
38601  return isBinary || reIsOctal.test(value) ? freeParseInt(value.slice(2), isBinary ? 2 : 8) : reIsBadHex.test(value) ? NAN : +value;
38602}
38603var lodash_throttle = throttle;
38604const _hoisted_1$Z = ["src"];
38605const __default__ = {
38606  inheritAttrs: false
38607};
38608const _sfc_main$$ = /* @__PURE__ */ defineComponent(__spreadProps(__spreadValues({}, __default__), {
38609  props: {
38610    src: { default: "" },
38611    width: { default: "100%" },
38612    height: { default: "auto" },
38613    className: { default: "" },
38614    zoomImgSrc: { default: "" },
38615    zoomFactor: { default: 1.5 },
38616    mgWidth: { default: 150 },
38617    mgHeight: { default: 150 },
38618    mgBorderWidth: { default: 2 },
38619    mgShape: { default: "circle" },
38620    mgShowOverflow: { type: Boolean, default: true },
38621    mgMouseOffsetX: { default: 0 },
38622    mgMouseOffsetY: { default: 0 },
38623    mgTouchOffsetX: { default: () => -50 },
38624    mgTouchOffsetY: { default: () => -50 },
38625    mgShow: { type: Boolean, default: true },
38626    mgCornerBgColor: { default: "#fff" }
38627  },
38628  emits: ["image:load"],
38629  setup(__props, { emit: emit2 }) {
38630    const img = ref();
38631    let imgBounds = ref(new DOMRect());
38632    let showZoom = ref(false);
38633    let mgOffsetX = ref(0);
38634    let mgOffsetY = ref(0);
38635    let relX = ref(0);
38636    let relY = ref(0);
38637    const mgClasses = computed(() => {
38638      let classes2 = "vue-magnifier__magnifying-glass";
38639      if (showZoom.value)
38640        classes2 += " vue-magnifier__visible";
38641      if (__props.mgShape === "circle")
38642        classes2 += " vue-magnifier__circle";
38643      return classes2;
38644    });
38645    const mgWrapperStyle = computed(() => ({
38646      width: __props.width,
38647      height: __props.height,
38648      overflow: __props.mgShowOverflow ? "visible" : "hidden"
38649    }));
38650    const mgImgStyle = computed(() => ({
38651      cursor: __props.mgShow ? "none" : "",
38652      width: "100%",
38653      height: "100%"
38654    }));
38655    const mgStyle = computed(() => ({
38656      width: `${__props.mgWidth}px`,
38657      height: `${__props.mgHeight}px`,
38658      left: `calc(${relX.value * 100}% - ${__props.mgWidth / 2}px + ${mgOffsetX.value}px - ${__props.mgBorderWidth}px)`,
38659      top: `calc(${relY.value * 100}% - ${__props.mgHeight / 2}px + ${mgOffsetY.value}px - ${__props.mgBorderWidth}px)`,
38660      backgroundImage: `url(${__props.zoomImgSrc || __props.src})`,
38661      backgroundPosition: `calc(${relX.value * 100}% + ${__props.mgWidth / 2}px - ${relX.value * __props.mgWidth}px) calc(${relY.value * 100}% + ${__props.mgHeight / 2}px - ${relY.value * __props.mgWidth}px)`,
38662      backgroundSize: `${__props.zoomFactor * imgBounds.value.width}% ${__props.zoomFactor * imgBounds.value.height}%`,
38663      borderWidth: `${__props.mgBorderWidth}px`,
38664      backgroundColor: __props.mgCornerBgColor
38665    }));
38666    const calcImgBounds = () => {
38667      if (img.value) {
38668        imgBounds.value = img.value.getBoundingClientRect();
38669      }
38670    };
38671    const onImageLoad = (event) => {
38672      emit2("image:load", event);
38673      calcImgBounds();
38674    };
38675    const onMouseEnter = () => {
38676      calcImgBounds();
38677    };
38678    let onMouseMove = (e) => {
38679      if (imgBounds.value) {
38680        const target = e.target;
38681        mgOffsetX.value = __props.mgMouseOffsetX;
38682        mgOffsetY.value = __props.mgMouseOffsetY;
38683        relX.value = (e.clientX - imgBounds.value.left) / target.clientWidth;
38684        relY.value = (e.clientY - imgBounds.value.top) / target.clientHeight;
38685        showZoom.value = true;
38686      }
38687    };
38688    const onMouseOut = () => {
38689      showZoom.value = false;
38690    };
38691    const onTouchStart2 = () => {
38692      calcImgBounds();
38693    };
38694    let onTouchMove2 = (e) => {
38695      if (imgBounds.value) {
38696        const target = e.target;
38697        const relXLocal = (e.targetTouches[0].clientX - imgBounds.value.left) / target.clientWidth;
38698        const relYLocal = (e.targetTouches[0].clientY - imgBounds.value.top) / target.clientHeight;
38699        if (relXLocal >= 0 && relYLocal >= 0 && relXLocal <= 1 && relYLocal <= 1) {
38700          mgOffsetX.value = __props.mgTouchOffsetX;
38701          mgOffsetY.value = __props.mgTouchOffsetY;
38702          relX.value = relXLocal;
38703          relY.value = relYLocal;
38704          showZoom.value = true;
38705        } else {
38706          showZoom.value = false;
38707        }
38708      }
38709    };
38710    const onTouchEnd2 = () => {
38711      showZoom.value = false;
38712    };
38713    const calcImgBoundsDebounced = lodash_debounce(calcImgBounds, 200);
38714    onMouseMove = lodash_throttle(onMouseMove, 20, { trailing: false });
38715    onTouchMove2 = lodash_throttle(onTouchMove2, 20, { trailing: false });
38716    const registerEventListeners = () => {
38717      window.addEventListener("resize", calcImgBoundsDebounced);
38718      window.addEventListener("scroll", calcImgBoundsDebounced, true);
38719    };
38720    const unRegisterEventListeners = () => {
38721      window.removeEventListener("resize", calcImgBoundsDebounced);
38722      window.removeEventListener("scroll", calcImgBoundsDebounced, true);
38723    };
38724    onMounted(() => {
38725      registerEventListeners();
38726    });
38727    onUnmounted(() => {
38728      unRegisterEventListeners();
38729    });
38730    return (_ctx, _cache) => {
38731      return openBlock(), createElementBlock("div", {
38732        class: normalizeClass(`vue-magnifier__magnifier ${__props.className}`),
38733        style: normalizeStyle(unref(mgWrapperStyle))
38734      }, [
38735        createBaseVNode("img", mergeProps({
38736          ref_key: "img",
38737          ref: img,
38738          src: __props.src
38739        }, _ctx.$attrs, {
38740          class: "vue-magnifier__magnifier-image",
38741          style: unref(mgImgStyle),
38742          onLoad: _cache[0] || (_cache[0] = ($event) => onImageLoad($event)),
38743          onMouseenter: _cache[1] || (_cache[1] = ($event) => onMouseEnter()),
38744          onMousemove: _cache[2] || (_cache[2] = ($event) => unref(onMouseMove)($event)),
38745          onMouseout: _cache[3] || (_cache[3] = ($event) => onMouseOut()),
38746          onTouchstart: _cache[4] || (_cache[4] = withModifiers(($event) => onTouchStart2(), ["prevent"])),
38747          onTouchmove: _cache[5] || (_cache[5] = withModifiers(($event) => unref(onTouchMove2)($event), ["prevent"])),
38748          onTouchend: _cache[6] || (_cache[6] = ($event) => onTouchEnd2())
38749        }), null, 16, _hoisted_1$Z),
38750        imgBounds.value && __props.mgShow ? (openBlock(), createElementBlock("div", {
38751          key: 0,
38752          class: normalizeClass(unref(mgClasses)),
38753          style: normalizeStyle(unref(mgStyle))
38754        }, null, 6)) : createCommentVNode("", true)
38755      ], 6);
38756    };
38757  }
38758}));
38759_sfc_main$$.install = (app2) => {
38760  app2.component("VueMagnifier", _sfc_main$$);
38761};
38762const _sfc_main$_ = {
38763  name: "ImageMagnify",
38764  components: { VueMagnifier: _sfc_main$$ },
38765  props: {
38766    src: {
38767      type: String,
38768      required: true
38769    },
38770    alt: {
38771      type: String,
38772      required: true
38773    },
38774    imageWidth: {
38775      type: Number,
38776      default: 1e3
38777    },
38778    imageHeight: {
38779      type: Number,
38780      default: 1e3
38781    }
38782  },
38783  data() {
38784    return {
38785      magnifierWidth: "100%",
38786      magnifierHeight: "100%",
38787      imgWidth: 0,
38788      imgHeight: 0,
38789      loaded: false
38790    };
38791  },
38792  computed: {
38793    ...mapState(ENVIRONMENT_TYPES.NAME, {
38794      windowWidth: ENVIRONMENT_TYPES.state.ENVIRONMENT_WINDOW_WIDTH
38795    })
38796  },
38797  watch: {
38798    windowWidth() {
38799      this.actualizeSize();
38800    }
38801  },
38802  mounted() {
38803    this.actualizeSize();
38804  },
38805  methods: {
38806    actualizeSize: function() {
38807      if (!this.$refs.wrapper) return;
38808      const widthEl = this.$refs.wrapper.offsetWidth;
38809      const heightEl = this.$refs.wrapper.offsetHeight;
38810      const ratio = Math.min(widthEl / this.imageWidth, heightEl / this.imageHeight);
38811      this.magnifierWidth = `${this.imageWidth * ratio}px`;
38812      this.magnifierHeight = `${this.imageHeight * ratio}px`;
38813      this.loaded = true;
38814    }
38815  }
38816};
38817const _hoisted_1$Y = {
38818  ref: "wrapper",
38819  class: "image-magnify-wrapper"
38820};
38821function _sfc_render$Z(_ctx, _cache, $props, $setup, $data, $options) {
38822  const _component_VueMagnifier = resolveComponent("VueMagnifier");
38823  return openBlock(), createElementBlock("div", _hoisted_1$Y, [
38824    createVNode(_component_VueMagnifier, {
38825      src: $props.src,
38826      alt: $props.alt,
38827      "mg-shape": "circle",
38828      loading: "lazy",
38829      "zoom-factor": 1.2,
38830      "mg-touch-offset-x": 0,
38831      "mg-touch-offset-y": 0,
38832      width: $data.magnifierWidth,
38833      height: $data.magnifierHeight,
38834      "onImage:load": $options.actualizeSize
38835    }, null, 8, ["src", "alt", "width", "height", "onImage:load"])
38836  ], 512);
38837}
38838const ImageMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$_, [["render", _sfc_render$Z]]);
38839const _sfc_main$Z = {
38840  name: "CityMapPagesList",
38841  // components: {},
38842  props: {
38843    // list content
38844    pages: {
38845      type: Array,
38846      required: true,
38847      default: () => []
38848    }
38849  }
38850  // data() {
38851  //   return {};
38852  // },
38853  // computed: {},
38854  // methods: {},
38855  // watch() {},
38856  // Livecycle hooks
38857  // created() {},
38858  // mounted() {},
38859  // updated() {},
38860  // beforeDestroy() {},
38861};
38862const _hoisted_1$X = { class: "citymap-pages-list" };
38863const _hoisted_2$N = { class: "citymap-parent-page-title" };
38864const _hoisted_3$F = { class: "citymap-pages" };
38865const _hoisted_4$t = ["href"];
38866const _hoisted_5$j = { class: "citymap-page-number" };
38867function _sfc_render$Y(_ctx, _cache, $props, $setup, $data, $options) {
38868  return openBlock(), createElementBlock("div", _hoisted_1$X, [
38869    (openBlock(true), createElementBlock(Fragment, null, renderList($props.pages, (page, pageIndex) => {
38870      return openBlock(), createElementBlock("div", {
38871        key: pageIndex,
38872        class: "citymap-parent-pages"
38873      }, [
38874        createBaseVNode("h3", _hoisted_2$N, toDisplayString$1(page.title), 1),
38875        createBaseVNode("div", _hoisted_3$F, [
38876          (openBlock(true), createElementBlock(Fragment, null, renderList(page.citymapPages, (citymapPage, citymapPageIndex) => {
38877            return openBlock(), createElementBlock("a", {
38878              key: `${citymapPage.title}-${citymapPageIndex}`,
38879              href: citymapPage.url,
38880              target: "_blank"
38881            }, [
38882              createBaseVNode("span", _hoisted_5$j, toDisplayString$1(citymapPage.number), 1),
38883              createTextVNode(" " + toDisplayString$1(citymapPage.title), 1)
38884            ], 8, _hoisted_4$t);
38885          }), 128))
38886        ])
38887      ]);
38888    }), 128))
38889  ]);
38890}
38891const CitymapPagesList = /* @__PURE__ */ _export_sfc(_sfc_main$Z, [["render", _sfc_render$Y]]);
38892let $form;
38893const _sfc_main$Y = {
38894  name: "RecaptchaField",
38895  $form,
38896  components: {
38897    ConsentInline
38898  },
38899  props: {
38900    captchaSiteKey: {
38901      type: String,
38902      default: ""
38903    }
38904  },
38905  data() {
38906    return {
38907      token: "initial",
38908      error: false,
38909      singleConsent: false
38910    };
38911  },
38912  computed: {
38913    ...mapState(CONSENT_TYPES.NAME, {
38914      consentRecaptcha: CONSENT_TYPES.state.CONSENT_RECAPTCHA
38915    }),
38916    hasConsent() {
38917      if (this.singleConsent === true) return true;
38918      if (this.consentRecaptcha) return true;
38919      return false;
38920    }
38921  },
38922  watch: {
38923    hasConsent(hasConsentNew) {
38924      if (hasConsentNew === true && !(this.captchaSiteKey.length === 0)) {
38925        this.embedScript();
38926      }
38927    }
38928  },
38929  mounted() {
38930    this.$form = this.$refs.captchaHiddenInput.closest("form");
38931    this.$form.addEventListener("submit", (e) => this.onSubmit(e));
38932    if (this.hasConsent && !(this.captchaSiteKey.length === 0)) {
38933      this.embedScript();
38934    }
38935  },
38936  methods: {
38937    ...mapMutations(CONSENT_TYPES.NAME, {
38938      consentSetRecaptcha: CONSENT_TYPES.mutations.CONSENT_SET_RECAPTCHA
38939    }),
38940    embedScript() {
38941      nextTick$1(() => {
38942        if (window && window.grecaptcha) return;
38943        let recaptchaScript = document.createElement("script");
38944        recaptchaScript.setAttribute("src", "https://www.google.com/recaptcha/api.js?render=" + this.captchaSiteKey);
38945        document.head.appendChild(recaptchaScript);
38946      });
38947    },
38948    setConsent() {
38949      this.consentSetRecaptcha({
38950        [CONSENT_TYPES.state.CONSENT_RECAPTCHA]: true
38951      });
38952    },
38953    async setToken() {
38954      try {
38955        this.error = false;
38956        this.token = await this.execute();
38957      } catch (e) {
38958        this.error = true;
38959        throw new Error("Failed" + e);
38960      }
38961    },
38962    async onSubmit(e) {
38963      e.preventDefault();
38964      if (this.hasConsent) {
38965        await this.setToken();
38966        this.$form.submit();
38967      } else {
38968        const consentInline = document.getElementById("consentInline");
38969        const scrollHeight = consentInline.offsetTop;
38970        if (scrollHeight) {
38971          window.scrollTo({
38972            top: scrollHeight,
38973            behavior: "smooth"
38974          });
38975        }
38976      }
38977    },
38978    async execute() {
38979      return await window.grecaptcha.execute(this.captchaSiteKey, { action: "submit" });
38980    }
38981  }
38982};
38983const _hoisted_1$W = { class: "recaptcha-field" };
38984const _hoisted_2$M = { class: "flex" };
38985const _hoisted_3$E = ["value"];
38986const _hoisted_4$s = { key: 1 };
38987function _sfc_render$X(_ctx, _cache, $props, $setup, $data, $options) {
38988  const _component_consent_inline = resolveComponent("consent-inline");
38989  return openBlock(), createElementBlock("div", _hoisted_1$W, [
38990    !$options.hasConsent ? (openBlock(), createBlock(_component_consent_inline, {
38991      key: 0,
38992      id: "consentInline",
38993      "service-name": { service: _ctx.$t("cookieConsent.config.recaptcha") },
38994      onSetSingleConsent: _cache[0] || (_cache[0] = ($event) => $data.singleConsent = true),
38995      onSetAlwaysConsent: $options.setConsent
38996    }, null, 8, ["service-name", "onSetAlwaysConsent"])) : createCommentVNode("", true),
38997    createBaseVNode("div", _hoisted_2$M, [
38998      createBaseVNode("input", {
38999        id: "reCaptcha",
39000        ref: "captchaHiddenInput",
39001        type: "hidden",
39002        value: $data.token,
39003        name: "reCaptcha"
39004      }, null, 8, _hoisted_3$E)
39005    ]),
39006    $data.error ? (openBlock(), createElementBlock("div", _hoisted_4$s, toDisplayString$1(_ctx.$t("captcha.error.text")), 1)) : createCommentVNode("", true)
39007  ]);
39008}
39009const RecaptchaField = /* @__PURE__ */ _export_sfc(_sfc_main$Y, [["render", _sfc_render$X]]);
39010const _sfc_main$X = {
39011  name: "SliderScreenWrapper",
39012  props: {
39013    headline: {
39014      type: String,
39015      default: "Headline"
39016    },
39017    footerline: {
39018      type: String,
39019      default: "Footerline"
39020    },
39021    hasBgHighlight: {
39022      type: Boolean,
39023      default: false
39024    },
39025    isStartPage: {
39026      type: Boolean,
39027      default: false
39028    },
39029    isImageOnlyPage: {
39030      type: Boolean,
39031      default: false
39032    }
39033  }
39034};
39035const _hoisted_1$V = {
39036  key: 0,
39037  class: "logo"
39038};
39039const _hoisted_2$L = {
39040  key: 1,
39041  class: "slider-screen-content"
39042};
39043function _sfc_render$W(_ctx, _cache, $props, $setup, $data, $options) {
39044  return openBlock(), createElementBlock("div", {
39045    class: normalizeClass(["slider-screen-wrapper", {
39046      "-bg-highlight": $props.hasBgHighlight,
39047      "-start": $props.isStartPage,
39048      "-image-only": $props.isImageOnlyPage
39049    }])
39050  }, [
39051    $props.isStartPage ? (openBlock(), createElementBlock("div", _hoisted_1$V, _cache[0] || (_cache[0] = [
39052      createBaseVNode("img", {
39053        src: `assets/img/Logo_Zwangsarbeit_black.svg`,
39054        alt: "Logo Museum für Zwangsarbeit"
39055      }, null, -1)
39056    ]))) : createCommentVNode("", true),
39057    !$props.isStartPage ? (openBlock(), createElementBlock("div", _hoisted_2$L, [
39058      renderSlot(_ctx.$slots, "default")
39059    ])) : createCommentVNode("", true),
39060    createBaseVNode("footer", null, toDisplayString$1($props.footerline), 1)
39061  ], 2);
39062}
39063const SliderScreenWrapper = /* @__PURE__ */ _export_sfc(_sfc_main$X, [["render", _sfc_render$W]]);
39064const _sfc_main$W = {
39065  name: "LateEmbed",
39066  props: {
39067    dataSrc: {
39068      type: String,
39069      default: null
39070    }
39071  },
39072  data() {
39073    return {
39074      isMounted: false
39075    };
39076  },
39077  mounted() {
39078    this.isMounted = true;
39079  }
39080};
39081function _sfc_render$V(_ctx, _cache, $props, $setup, $data, $options) {
39082  return openBlock(), createBlock(resolveDynamicComponent($data.isMounted ? "script" : "span"), { src: $props.dataSrc }, {
39083    default: withCtx(() => [
39084      renderSlot(_ctx.$slots, "default")
39085    ]),
39086    _: 3
39087  }, 8, ["src"]);
39088}
39089const LateEmbed = /* @__PURE__ */ _export_sfc(_sfc_main$W, [["render", _sfc_render$V]]);
39090const _sfc_main$V = {
39091  name: "EventList",
39092  props: {
39093    // list content type
39094    isArchive: {
39095      type: Boolean,
39096      default: false
39097    },
39098    // list content
39099    events: {
39100      type: Array,
39101      required: true,
39102      default: () => []
39103    }
39104  }
39105  // data() {
39106  //   return {};
39107  // },
39108  // computed: {},
39109  // methods: {},
39110  // watch() {},
39111  // Livecycle hooks
39112  // created() {},
39113  // mounted() {},
39114  // updated() {},
39115  // beforeDestroy() {},
39116};
39117const _hoisted_1$U = { class: "event-list" };
39118const _hoisted_2$K = ["href"];
39119const _hoisted_3$D = { class: "event-image columns large-4" };
39120const _hoisted_4$r = ["src", "alt"];
39121const _hoisted_5$i = { class: "event-content columns row large-8" };
39122const _hoisted_6$f = {
39123  key: 0,
39124  class: "columns large-12 event-meta"
39125};
39126const _hoisted_7$e = {
39127  key: 0,
39128  class: "event-info"
39129};
39130const _hoisted_8$a = { class: "event-date" };
39131const _hoisted_9$8 = { key: 0 };
39132const _hoisted_10$5 = { class: "event-categories" };
39133const _hoisted_11$5 = { class: "event-location" };
39134const _hoisted_12$5 = { key: 0 };
39135const _hoisted_13$5 = {
39136  key: 0,
39137  class: "event-category"
39138};
39139const _hoisted_14$5 = { class: "columns large-12 event-title" };
39140const _hoisted_15$4 = { class: "title-prefix" };
39141const _hoisted_16$4 = { class: "columns large-12" };
39142const _hoisted_17$3 = { key: 0 };
39143const _hoisted_18$3 = { class: "columns large-12 event-link" };
39144function _sfc_render$U(_ctx, _cache, $props, $setup, $data, $options) {
39145  return openBlock(), createElementBlock("div", _hoisted_1$U, [
39146    (openBlock(true), createElementBlock(Fragment, null, renderList($props.events, (event, index2) => {
39147      return openBlock(), createElementBlock("a", {
39148        key: index2,
39149        href: event.url,
39150        class: normalizeClass(["row event", {
39151          "archive": $props.isArchive
39152        }])
39153      }, [
39154        createBaseVNode("div", _hoisted_3$D, [
39155          event.image ? (openBlock(), createElementBlock("img", {
39156            key: 0,
39157            class: "event-image columns large-12",
39158            src: event.image.src,
39159            alt: event.image.alt
39160          }, null, 8, _hoisted_4$r)) : createCommentVNode("", true)
39161        ]),
39162        createBaseVNode("div", _hoisted_5$i, [
39163          event.category || event.info ? (openBlock(), createElementBlock("div", _hoisted_6$f, [
39164            event.info ? (openBlock(), createElementBlock("span", _hoisted_7$e, toDisplayString$1(event.info), 1)) : createCommentVNode("", true),
39165            createBaseVNode("div", _hoisted_8$a, [
39166              event.date ? (openBlock(), createElementBlock("span", _hoisted_9$8, toDisplayString$1(event.date), 1)) : createCommentVNode("", true)
39167            ]),
39168            createBaseVNode("div", _hoisted_10$5, [
39169              createBaseVNode("div", _hoisted_11$5, [
39170                event.location ? (openBlock(), createElementBlock("span", _hoisted_12$5, toDisplayString$1(event.location), 1)) : createCommentVNode("", true)
39171              ]),
39172              event.category ? (openBlock(), createElementBlock("span", _hoisted_13$5, toDisplayString$1(event.category), 1)) : createCommentVNode("", true)
39173            ])
39174          ])) : createCommentVNode("", true),
39175          createBaseVNode("div", _hoisted_14$5, [
39176            createBaseVNode("span", _hoisted_15$4, toDisplayString$1(event.category), 1),
39177            createBaseVNode("h3", null, toDisplayString$1(event.title), 1)
39178          ]),
39179          createBaseVNode("div", _hoisted_16$4, [
39180            event.shortDescription ? (openBlock(), createElementBlock("span", _hoisted_17$3, toDisplayString$1(event.shortDescription), 1)) : createCommentVNode("", true)
39181          ]),
39182          createBaseVNode("div", _hoisted_18$3, toDisplayString$1(_ctx.Details), 1)
39183        ])
39184      ], 10, _hoisted_2$K);
39185    }), 128))
39186  ]);
39187}
39188const EventList = /* @__PURE__ */ _export_sfc(_sfc_main$V, [["render", _sfc_render$U]]);
39189const _sfc_main$U = {
39190  name: "FilterSection",
39191  // components: {},
39192  props: {
39193    initiallyOpen: {
39194      type: Boolean,
39195      default: false
39196    }
39197  },
39198  data() {
39199    return {
39200      isOpen: this.initiallyOpen,
39201      contentId: `filter-section-${Math.random().toString(36).slice(2, 11)}`
39202    };
39203  },
39204  computed: {},
39205  // watch: {},
39206  // Livecycle hooks
39207  // created() {},
39208  mounted() {
39209  },
39210  // updated() {},
39211  // beforeUnmount() {},
39212  methods: {
39213    toggle() {
39214      this.isOpen = !this.isOpen;
39215    }
39216  }
39217};
39218const _hoisted_1$T = { class: "filter-section" };
39219const _hoisted_2$J = { class: "filter-section-header" };
39220const _hoisted_3$C = ["aria-expanded", "aria-controls"];
39221const _hoisted_4$q = ["id", "aria-hidden"];
39222function _sfc_render$T(_ctx, _cache, $props, $setup, $data, $options) {
39223  return openBlock(), createElementBlock("div", _hoisted_1$T, [
39224    createBaseVNode("div", _hoisted_2$J, [
39225      createBaseVNode("button", {
39226        class: normalizeClass(["link-button iconafter-dach", { "is-open": $data.isOpen }]),
39227        type: "button",
39228        "aria-expanded": $data.isOpen.toString(),
39229        "aria-controls": $data.contentId,
39230        onClick: _cache[0] || (_cache[0] = (...args) => $options.toggle && $options.toggle(...args))
39231      }, [
39232        renderSlot(_ctx.$slots, "button", {}, () => [
39233          createTextVNode(toDisplayString$1(_ctx.$t("buchenwald-base.events.filter.collapsableButton.label")), 1
39233)
39234        ])
39235      ], 10, _hoisted_3$C),
39236      renderSlot(_ctx.$slots, "filter-display")
39237    ]),
39238    createBaseVNode("div", {
39239      id: $data.contentId,
39240      class: normalizeClass(["filter-section-wrapper", { "is-open": $data.isOpen }]),
39241      "aria-hidden": (!$data.isOpen).toString()
39242    }, [
39243      renderSlot(_ctx.$slots, "content")
39244    ], 10, _hoisted_4$q)
39245  ]);
39246}
39247const FilterSection = /* @__PURE__ */ _export_sfc(_sfc_main$U, [["render", _sfc_render$T]]);
39248const _sfc_main$T = {
39249  name: "TeaserChronology",
39250  props: {
39251    title: {
39252      type: String,
39253      default: ""
39254    },
39255    subTitle: {
39256      type: String,
39257      default: ""
39258    },
39259    category: {
39260      type: String,
39261      default: ""
39262    },
39263    summary: {
39264      type: String,
39265      required: true
39266    },
39267    url: {
39268      type: String,
39269      required: true
39270    },
39271    linkText: {
39272      type: String,
39273      default: ""
39274    },
39275    imgSrc: {
39276      type: String,
39277      default: ""
39278    },
39279    imgAlt: {
39280      type: String,
39281      default: ""
39282    },
39283    imgWidth: {
39284      type: Number,
39285      default: 640
39286    },
39287    imgHeight: {
39288      type: Number,
39289      default: 400
39290    },
39291    bgColorName: {
39292      type: String,
39293      default: "white"
39294    },
39295    linkStyleButton: {
39296      type: Boolean,
39297      default: false
39298    },
39299    hTag: {
39300      type: String,
39301      default: "h3"
39302    },
39303    isExtern: {
39304      type: Boolean,
39305      default: false
39306    },
39307    isMagazineArticle: {
39308      type: Boolean,
39309      default: false
39310    }
39311  },
39312  computed: {
39313    element() {
39314      return this.url ? "a" : "div";
39315    },
39316    bgColorClass() {
39317      if (empty(this.bgColorName)) return "";
39318      return `-${this.bgColorName}`;
39319    }
39320  }
39321};
39322const _hoisted_1$S = { key: 0 };
39323const _hoisted_2$I = {
39324  key: 0,
39325  class: "article-info"
39326};
39327const _hoisted_3$B = ["src", "alt", "height", "width"];
39328const _hoisted_4$p = { class: "teaser-body" };
39329const _hoisted_5$h = {
39330  key: 0,
39331  class: "sub-title"
39332};
39333const _hoisted_6$e = { key: 1 };
39334const _hoisted_7$d = { class: "title" };
39335const _hoisted_8$9 = ["innerHTML"];
39336const _hoisted_9$7 = {
39337  key: 0,
39338  class: "iconafter-link-extern"
39339};
39340function _sfc_render$S(_ctx, _cache, $props, $setup, $data, $options) {
39341  return openBlock(), createBlock(resolveDynamicComponent($options.element), {
39342    href: $props.url,
39343    class: normalizeClass(["teaser-chronology", {
39344      [$options.bgColorClass]: true,
39345      "has-image": !!$props.imgSrc
39346    }]),
39347    target: $props.isExtern ? "_blank" : null,
39348    rel: $props.isExtern ? "noopener" : null
39349  }, {
39350    default: withCtx(() => [
39351      $props.imgSrc ? (openBlock(), createElementBlock("figure", _hoisted_1$S, [
39352        $props.isMagazineArticle ? (openBlock(), createElementBlock("span", _hoisted_2$I, " Online-Magazin ")) : createCommentVNode("", true),
39353        createBaseVNode("img", {
39354          src: $props.imgSrc,
39355          alt: $props.imgAlt ? $props.imgAlt : $props.title,
39356          height: $props.imgHeight,
39357          width: $props.imgWidth,
39358          loading: "lazy"
39359        }, null, 8, _hoisted_3$B)
39360      ])) : createCommentVNode("", true),
39361      createBaseVNode("div", _hoisted_4$p, [
39362        $props.subTitle ? (openBlock(), createElementBlock("span", _hoisted_5$h, [
39363          createBaseVNode("span", null, toDisplayString$1($props.subTitle), 1)
39364        ])) : createCommentVNode("", true),
39365        $props.title ? (openBlock(), createElementBlock("h3", _hoisted_6$e, [
39366          createBaseVNode("span", _hoisted_7$d, toDisplayString$1($props.title), 1)
39367        ])) : createCommentVNode("", true),
39368        $props.summary ? (openBlock(), createElementBlock("p", {
39369          key: 2,
39370          innerHTML: $props.summary
39371        }, null, 8, _hoisted_8$9)) : createCommentVNode("", true),
39372        $props.linkText ? (openBlock(), createElementBlock("span", {
39373          key: 3,
39374          class: normalizeClass({
39375            "link-button": $props.linkStyleButton,
39376            "link-text": !$props.linkStyleButton
39377          })
39378        }, [
39379          createTextVNode(toDisplayString$1($props.linkText), 1),
39380          $props.isExtern ? (openBlock(), createElementBlock("i", _hoisted_9$7, toDisplayString$1(" "))) : createCommentVNode("", true)
39381        ], 2)) : createCommentVNode("", true)
39382      ])
39383    ]),
39384    _: 1
39385  }, 8, ["href", "class", "target", "rel"]);
39386}
39387const TeaserChronology = /* @__PURE__ */ _export_sfc(_sfc_main$T, [["render", _sfc_render$S]]);
39388const _hoisted_1$R = { class: "chronology-wrapper" };
39389const _hoisted_2$H = { class: "years" };
39390const _hoisted_3$A = ["href"];
39391const _sfc_main$S = {
39392  __name: "index",
39393  setup(__props) {
39394    const years = ref([]);
39395    const activeYear = ref(years.value[0] || "");
39396    let observer;
39397    let fadeInObserver;
39398    let chronologyWrapperElements = [];
39399    const updateProgress2 = () => {
39400      chronologyWrapperElements.forEach((section) => {
39401        const rect = section.getBoundingClientRect();
39402        const progressBar = section.querySelector(".progress-bar");
39403        if (!progressBar) return;
39404        const windowHeight = window.innerHeight;
39405        const elementHeight = rect.height;
39406        const elementTop = rect.top;
39407        let progress = (windowHeight / 2 - elementTop) / elementHeight;
39408        progress = Math.max(0, Math.min(1, progress)) * 100;
39409        progressBar.style.height = `${progress}%`;
39410      });
39411    };
39412    onMounted(() => {
39413      chronologyWrapperElements = document.querySelectorAll(".chronology-year");
39414      const yearIds = [];
39415      chronologyWrapperElements.forEach((element) => {
39416        const id = element.getAttribute("id");
39417        if (id) {
39418          yearIds.push(id);
39419        }
39420      });
39421      years.value = yearIds;
39422      observer = new IntersectionObserver((entries) => {
39423        entries.forEach((entry) => {
39424          if (entry.isIntersecting) {
39425            activeYear.value = entry.target.getAttribute("id");
39426          }
39427        });
39428      }, { threshold: 0.5 });
39429      chronologyWrapperElements.forEach((element) => {
39430        observer.observe(element);
39431      });
39432      const teaserElements = document.querySelectorAll(".teaser-chronology");
39433      fadeInObserver = new IntersectionObserver((entries) => {
39434        entries.forEach((entry) => {
39435          if (entry.isIntersecting) {
39436            entry.target.classList.add("is-visible");
39437            fadeInObserver.unobserve(entry.target);
39438          }
39439        });
39440      }, { threshold: 0.5 });
39441      teaserElements.forEach((element) => {
39442        fadeInObserver.observe(element);
39443      });
39444      window.addEventListener("scroll", updateProgress2);
39445      updateProgress2();
39446    });
39447    onUnmounted(() => {
39448      observer.disconnect();
39449      fadeInObserver.disconnect();
39450      window.removeEventListener("scroll", updateProgress2);
39451    });
39452    return (_ctx, _cache) => {
39453      return openBlock(), createElementBlock("div", _hoisted_1$R, [
39454        createBaseVNode("ul", _hoisted_2$H, [
39455          (openBlock(true), createElementBlock(Fragment, null, renderList(years.value, (year) => {
39456            return openBlock(), createElementBlock("li", { key: year }, [
39457              createBaseVNode("a", {
39458                href: "#" + year,
39459                class: normalizeClass({ active: activeYear.value === year })
39460              }, toDisplayString$1(year), 11, _hoisted_3$A)
39461            ]);
39462          }), 128))
39463        ]),
39464        renderSlot(_ctx.$slots, "default")
39465      ]);
39466    };
39467  }
39468};
39469const _sfc_main$R = {};
39470const _hoisted_1$Q = { class: "chronology-year" };
39471const _hoisted_2$G = { class: "year-content" };
39472function _sfc_render$R(_ctx, _cache) {
39473  return openBlock(), createElementBlock("div", _hoisted_1$Q, [
39474    _cache[0] || (_cache[0] = createBaseVNode("div", { class: "vertical-line" }, [
39475      createBaseVNode("div", { class: "progress-bar" })
39476    ], -1)),
39477    createBaseVNode("h2", null, [
39478      renderSlot(_ctx.$slots, "year")
39479    ]),
39480    createBaseVNode("div", _hoisted_2$G, [
39481      renderSlot(_ctx.$slots, "default")
39482    ])
39483  ]);
39484}
39485const ChronologyYear = /* @__PURE__ */ _export_sfc(_sfc_main$R, [["render", _sfc_render$R]]);
39486const _sfc_main$Q = {
39487  name: "DetailAboutBox"
39488};
39489const _hoisted_1$P = { class: "content-block row" };
39490const _hoisted_2$F = { class: "columns" };
39491const _hoisted_3$z = { class: "detail-about-box" };
39492function _sfc_render$Q(_ctx, _cache, $props, $setup, $data, $options) {
39493  return openBlock(), createElementBlock("div", _hoisted_1$P, [
39494    createBaseVNode("div", _hoisted_2$F, [
39495      createBaseVNode("div", _hoisted_3$z, [
39496        _cache[0] || (_cache[0] = createBaseVNode("img", {
39497          src: "/assets/img/swoosh_sand.jpg",
39498          role: "decoration"
39499        }, null, -1)),
39500        createBaseVNode("p", null, [
39501          renderSlot(_ctx.$slots, "default")
39502        ])
39503      ])
39504    ])
39505  ]);
39506}
39507const DetailAboutBox = /* @__PURE__ */ _export_sfc(_sfc_main$Q, [["render", _sfc_render$Q]]);
39508function Keyboard(_ref) {
39509  let {
39510    swiper,
39511    extendParams,
39512    on,
39513    emit: emit2
39514  } = _ref;
39515  const document2 = getDocument();
39516  const window2 = getWindow();
39517  swiper.keyboard = {
39518    enabled: false
39519  };
39520  extendParams({
39521    keyboard: {
39522      enabled: false,
39523      onlyInViewport: true,
39524      pageUpDown: true
39525    }
39526  });
39527  function handle(event) {
39528    if (!swiper.enabled) return;
39529    const {
39530      rtlTranslate: rtl
39531    } = swiper;
39532    let e = event;
39533    if (e.originalEvent) e = e.originalEvent;
39534    const kc = e.keyCode || e.charCode;
39535    const pageUpDown = swiper.params.keyboard.pageUpDown;
39536    const isPageUp = pageUpDown && kc === 33;
39537    const isPageDown = pageUpDown && kc === 34;
39538    const isArrowLeft = kc === 37;
39539    const isArrowRight = kc === 39;
39540    const isArrowUp = kc === 38;
39541    const isArrowDown = kc === 40;
39542    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {
39543      return false;
39544    }
39545    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {
39546      return false;
39547    }
39548    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {
39549      return void 0;
39550    }
39551    if (document2.activeElement && document2.activeElement.nodeName && (document2.activeElement.nodeName.toLowerCase() === "input" || document2.activeElement.nodeName.toLowerCase() === "textarea")) {
39552      return void 0;
39553    }
39554    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {
39555      let inView = false;
39556      if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {
39557        return void 0;
39558      }
39559      const el = swiper.el;
39560      const swiperWidth = el.clientWidth;
39561      const swiperHeight = el.clientHeight;
39562      const windowWidth = window2.innerWidth;
39563      const windowHeight = window2.innerHeight;
39564      const swiperOffset = elementOffset(el);
39565      if (rtl) swiperOffset.left -= el.scrollLeft;
39566      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];
39567      for (let i = 0; i < swiperCoord.length; i += 1) {
39568        const point = swiperCoord[i];
39569        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {
39570          if (point[0] === 0 && point[1] === 0) continue;
39571          inView = true;
39572        }
39573      }
39574      if (!inView) return void 0;
39575    }
39576    if (swiper.isHorizontal()) {
39577      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {
39578        if (e.preventDefault) e.preventDefault();
39579        else e.returnValue = false;
39580      }
39581      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();
39582      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();
39583    } else {
39584      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {
39585        if (e.preventDefault) e.preventDefault();
39586        else e.returnValue = false;
39587      }
39588      if (isPageDown || isArrowDown) swiper.slideNext();
39589      if (isPageUp || isArrowUp) swiper.slidePrev();
39590    }
39591    emit2("keyPress", kc);
39592    return void 0;
39593  }
39594  function enable() {
39595    if (swiper.keyboard.enabled) return;
39596    document2.addEventListener("keydown", handle);
39597    swiper.keyboard.enabled = true;
39598  }
39599  function disable() {
39600    if (!swiper.keyboard.enabled) return;
39601    document2.removeEventListener("keydown", handle);
39602    swiper.keyboard.enabled = false;
39603  }
39604  on("init", () => {
39605    if (swiper.params.keyboard.enabled) {
39606      enable();
39607    }
39608  });
39609  on("destroy", () => {
39610    if (swiper.keyboard.enabled) {
39611      disable();
39612    }
39613  });
39614  Object.assign(swiper.keyboard, {
39615    enable,
39616    disable
39617  });
39618}
39619function createElementIfNotDefined(swiper, originalParams, params, checkProps) {
39620  if (swiper.params.createElements) {
39621    Object.keys(checkProps).forEach((key) => {
39622      if (!params[key] && params.auto === true) {
39623        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];
39624        if (!element) {
39625          element = createElement("div", checkProps[key]);
39626          element.className = checkProps[key];
39627          swiper.el.append(element);
39628        }
39629        params[key] = element;
39630        originalParams[key] = element;
39631      }
39632    });
39633  }
39634  return params;
39635}
39636function Navigation(_ref) {
39637  let {
39638    swiper,
39639    extendParams,
39640    on,
39641    emit: emit2
39642  } = _ref;
39643  extendParams({
39644    navigation: {
39645      nextEl: null,
39646      prevEl: null,
39647      hideOnClick: false,
39648      disabledClass: "swiper-button-disabled",
39649      hiddenClass: "swiper-button-hidden",
39650      lockClass: "swiper-button-lock",
39651      navigationDisabledClass: "swiper-navigation-disabled"
39652    }
39653  });
39654  swiper.navigation = {
39655    nextEl: null,
39656    prevEl: null
39657  };
39658  function getEl(el) {
39659    let res;
39660    if (el && typeof el === "string" && swiper.isElement) {
39661      res = swiper.el.querySelector(el) || swiper.hostEl.querySelector(el);
39662      if (res) return res;
39663    }
39664    if (el) {
39665      if (typeof el === "string") res = [...document.querySelectorAll(el)];
39666      if (swiper.params.uniqueNavElements && typeof el === "string" && res && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {
39667        res = swiper.el.querySelector(el);
39668      } else if (res && res.length === 1) {
39669        res = res[0];
39670      }
39671    }
39672    if (el && !res) return el;
39673    return res;
39674  }
39675  function toggleEl(el, disabled) {
39676    const params = swiper.params.navigation;
39677    el = makeElementsArray(el);
39678    el.forEach((subEl) => {
39679      if (subEl) {
39680        subEl.classList[disabled ? "add" : "remove"](...params.disabledClass.split(" "));
39681        if (subEl.tagName === "BUTTON") subEl.disabled = disabled;
39682        if (swiper.params.watchOverflow && swiper.enabled) {
39683          subEl.classList[swiper.isLocked ? "add" : "remove"](params.lockClass);
39684        }
39685      }
39686    });
39687  }
39688  function update4() {
39689    const {
39690      nextEl,
39691      prevEl
39692    } = swiper.navigation;
39693    if (swiper.params.loop) {
39694      toggleEl(prevEl, false);
39695      toggleEl(nextEl, false);
39696      return;
39697    }
39698    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);
39699    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);
39700  }
39701  function onPrevClick(e) {
39702    e.preventDefault();
39703    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;
39704    swiper.slidePrev();
39705    emit2("navigationPrev");
39706  }
39707  function onNextClick(e) {
39708    e.preventDefault();
39709    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;
39710    swiper.slideNext();
39711    emit2("navigationNext");
39712  }
39713  function init() {
39714    const params = swiper.params.navigation;
39715    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {
39716      nextEl: "swiper-button-next",
39717      prevEl: "swiper-button-prev"
39718    });
39719    if (!(params.nextEl || params.prevEl)) return;
39720    let nextEl = getEl(params.nextEl);
39721    let prevEl = getEl(params.prevEl);
39722    Object.assign(swiper.navigation, {
39723      nextEl,
39724      prevEl
39725    });
39726    nextEl = makeElementsArray(nextEl);
39727    prevEl = makeElementsArray(prevEl);
39728    const initButton = (el, dir) => {
39729      if (el) {
39730        el.addEventListener("click", dir === "next" ? onNextClick : onPrevClick);
39731      }
39732      if (!swiper.enabled && el) {
39733        el.classList.add(...params.lockClass.split(" "));
39734      }
39735    };
39736    nextEl.forEach((el) => initButton(el, "next"));
39737    prevEl.forEach((el) => initButton(el, "prev"));
39738  }
39739  function destroy() {
39740    let {
39741      nextEl,
39742      prevEl
39743    } = swiper.navigation;
39744    nextEl = makeElementsArray(nextEl);
39745    prevEl = makeElementsArray(prevEl);
39746    const destroyButton = (el, dir) => {
39747      el.removeEventListener("click", dir === "next" ? onNextClick : onPrevClick);
39748      el.classList.remove(...swiper.params.navigation.disabledClass.split(" "));
39749    };
39750    nextEl.forEach((el) => destroyButton(el, "next"));
39751    prevEl.forEach((el) => destroyButton(el, "prev"));
39752  }
39753  on("init", () => {
39754    if (swiper.params.navigation.enabled === false) {
39755      disable();
39756    } else {
39757      init();
39758      update4();
39759    }
39760  });
39761  on("toEdge fromEdge lock unlock", () => {
39762    update4();
39763  });
39764  on("destroy", () => {
39765    destroy();
39766  });
39767  on("enable disable", () => {
39768    let {
39769      nextEl,
39770      prevEl
39771    } = swiper.navigation;
39772    nextEl = makeElementsArray(nextEl);
39773    prevEl = makeElementsArray(prevEl);
39774    if (swiper.enabled) {
39775      update4();
39776      return;
39777    }
39778    [...nextEl, ...prevEl].filter((el) => !!el).forEach((el) => el.classList.add(swiper.params.navigation.lockClass));
39779  });
39780  on("click", (_s, e) => {
39781    let {
39782      nextEl,
39783      prevEl
39784    } = swiper.navigation;
39785    nextEl = makeElementsArray(nextEl);
39786    prevEl = makeElementsArray(prevEl);
39787    const targetEl = e.target;
39788    let targetIsButton = prevEl.includes(targetEl) || nextEl.includes(targetEl);
39789    if (swiper.isElement && !targetIsButton) {
39790      const path = e.path || e.composedPath && e.composedPath();
39791      if (path) {
39792        targetIsButton = path.find((pathEl) => nextEl.includes(pathEl) || prevEl.includes(pathEl));
39793      }
39794    }
39795    if (swiper.params.navigation.hideOnClick && !targetIsButton) {
39796      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;
39797      let isHidden;
39798      if (nextEl.length) {
39799        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);
39800      } else if (prevEl.length) {
39801        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);
39802      }
39803      if (isHidden === true) {
39804        emit2("navigationShow");
39805      } else {
39806        emit2("navigationHide");
39807      }
39808      [...nextEl, ...prevEl].filter((el) => !!el).forEach((el) => el.classList.toggle(swiper.params.navigation.hiddenClass));
39809    }
39810  });
39811  const enable = () => {
39812    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(" "));
39813    init();
39814    update4();
39815  };
39816  const disable = () => {
39817    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(" "));
39818    destroy();
39819  };
39820  Object.assign(swiper.navigation, {
39821    enable,
39822    disable,
39823    update: update4,
39824    init,
39825    destroy
39826  });
39827}
39828function classesToSelector(classes2) {
39829  if (classes2 === void 0) {
39830    classes2 = "";
39831  }
39832  return `.${classes2.trim().replace(/([\.:!+\/])/g, "\\$1").replace(/ /g, ".")}`;
39833}
39834function Zoom(_ref) {
39835  let {
39836    swiper,
39837    extendParams,
39838    on,
39839    emit: emit2
39840  } = _ref;
39841  const window2 = getWindow();
39842  extendParams({
39843    zoom: {
39844      enabled: false,
39845      limitToOriginalSize: false,
39846      maxRatio: 3,
39847      minRatio: 1,
39848      panOnMouseMove: false,
39849      toggle: true,
39850      containerClass: "swiper-zoom-container",
39851      zoomedSlideClass: "swiper-slide-zoomed"
39852    }
39853  });
39854  swiper.zoom = {
39855    enabled: false
39856  };
39857  let currentScale = 1;
39858  let isScaling = false;
vendor: 19,656 bytes, lines 39859-40362
39859  let isPanningWithMouse = false;
39860  let mousePanStart = {
39861    x: 0,
39862    y: 0
39863  };
39864  const mousePanSensitivity = -3;
39865  let fakeGestureTouched;
39866  let fakeGestureMoved;
39867  const evCache = [];
39868  const gesture = {
39869    originX: 0,
39870    originY: 0,
39871    slideEl: void 0,
39872    slideWidth: void 0,
39873    slideHeight: void 0,
39874    imageEl: void 0,
39875    imageWrapEl: void 0,
39876    maxRatio: 3
39877  };
39878  const image = {
39879    isTouched: void 0,
39880    isMoved: void 0,
39881    currentX: void 0,
39882    currentY: void 0,
39883    minX: void 0,
39884    minY: void 0,
39885    maxX: void 0,
39886    maxY: void 0,
39887    width: void 0,
39888    height: void 0,
39889    startX: void 0,
39890    startY: void 0,
39891    touchesStart: {},
39892    touchesCurrent: {}
39893  };
39894  const velocity = {
39895    x: void 0,
39896    y: void 0,
39897    prevPositionX: void 0,
39898    prevPositionY: void 0,
39899    prevTime: void 0
39900  };
39901  let scale = 1;
39902  Object.defineProperty(swiper.zoom, "scale", {
39903    get() {
39904      return scale;
39905    },
39906    set(value) {
39907      if (scale !== value) {
39908        const imageEl = gesture.imageEl;
39909        const slideEl = gesture.slideEl;
39910        emit2("zoomChange", value, imageEl, slideEl);
39911      }
39912      scale = value;
39913    }
39914  });
39915  function getDistanceBetweenTouches() {
39916    if (evCache.length < 2) return 1;
39917    const x1 = evCache[0].pageX;
39918    const y1 = evCache[0].pageY;
39919    const x2 = evCache[1].pageX;
39920    const y2 = evCache[1].pageY;
39921    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);
39922    return distance;
39923  }
39924  function getMaxRatio() {
39925    const params = swiper.params.zoom;
39926    const maxRatio = gesture.imageWrapEl.getAttribute("data-swiper-zoom") || params.maxRatio;
39927    if (params.limitToOriginalSize && gesture.imageEl && gesture.imageEl.naturalWidth) {
39928      const imageMaxRatio = gesture.imageEl.naturalWidth / gesture.imageEl.offsetWidth;
39929      return Math.min(imageMaxRatio, maxRatio);
39930    }
39931    return maxRatio;
39932  }
39933  function getScaleOrigin() {
39934    if (evCache.length < 2) return {
39935      x: null,
39936      y: null
39937    };
39938    const box = gesture.imageEl.getBoundingClientRect();
39939    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x - window2.scrollX) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y - window2.scrollY) / currentScale];
39940  }
39941  function getSlideSelector() {
39942    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;
39943  }
39944  function eventWithinSlide(e) {
39945    const slideSelector = getSlideSelector();
39946    if (e.target.matches(slideSelector)) return true;
39947    if (swiper.slides.filter((slideEl) => slideEl.contains(e.target)).length > 0) return true;
39948    return false;
39949  }
39950  function eventWithinZoomContainer(e) {
39951    const selector = `.${swiper.params.zoom.containerClass}`;
39952    if (e.target.matches(selector)) return true;
39953    if ([...swiper.hostEl.querySelectorAll(selector)].filter((containerEl) => containerEl.contains(e.target)).length > 0) return true;
39954    return false;
39955  }
39956  function onGestureStart(e) {
39957    if (e.pointerType === "mouse") {
39958      evCache.splice(0, evCache.length);
39959    }
39960    if (!eventWithinSlide(e)) return;
39961    const params = swiper.params.zoom;
39962    fakeGestureTouched = false;
39963    fakeGestureMoved = false;
39964    evCache.push(e);
39965    if (evCache.length < 2) {
39966      return;
39967    }
39968    fakeGestureTouched = true;
39969    gesture.scaleStart = getDistanceBetweenTouches();
39970    if (!gesture.slideEl) {
39971      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
39972      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];
39973      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
39974      if (imageEl) {
39975        imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0];
39976      }
39977      gesture.imageEl = imageEl;
39978      if (imageEl) {
39979        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
39980      } else {
39981        gesture.imageWrapEl = void 0;
39982      }
39983      if (!gesture.imageWrapEl) {
39984        gesture.imageEl = void 0;
39985        return;
39986      }
39987      gesture.maxRatio = getMaxRatio();
39988    }
39989    if (gesture.imageEl) {
39990      const [originX, originY] = getScaleOrigin();
39991      gesture.originX = originX;
39992      gesture.originY = originY;
39993      gesture.imageEl.style.transitionDuration = "0ms";
39994    }
39995    isScaling = true;
39996  }
39997  function onGestureChange(e) {
39998    if (!eventWithinSlide(e)) return;
39999    const params = swiper.params.zoom;
40000    const zoom = swiper.zoom;
40001    const pointerIndex = evCache.findIndex((cachedEv) => cachedEv.pointerId === e.pointerId);
40002    if (pointerIndex >= 0) evCache[pointerIndex] = e;
40003    if (evCache.length < 2) {
40004      return;
40005    }
40006    fakeGestureMoved = true;
40007    gesture.scaleMove = getDistanceBetweenTouches();
40008    if (!gesture.imageEl) {
40009      return;
40010    }
40011    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;
40012    if (zoom.scale > gesture.maxRatio) {
40013      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;
40014    }
40015    if (zoom.scale < params.minRatio) {
40016      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;
40017    }
40018    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
40019  }
40020  function onGestureEnd(e) {
40021    if (!eventWithinSlide(e)) return;
40022    if (e.pointerType === "mouse" && e.type === "pointerout") return;
40023    const params = swiper.params.zoom;
40024    const zoom = swiper.zoom;
40025    const pointerIndex = evCache.findIndex((cachedEv) => cachedEv.pointerId === e.pointerId);
40026    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);
40027    if (!fakeGestureTouched || !fakeGestureMoved) {
40028      return;
40029    }
40030    fakeGestureTouched = false;
40031    fakeGestureMoved = false;
40032    if (!gesture.imageEl) return;
40033    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);
40034    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;
40035    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
40036    currentScale = zoom.scale;
40037    isScaling = false;
40038    if (zoom.scale > 1 && gesture.slideEl) {
40039      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
40040    } else if (zoom.scale <= 1 && gesture.slideEl) {
40041      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
40042    }
40043    if (zoom.scale === 1) {
40044      gesture.originX = 0;
40045      gesture.originY = 0;
40046      gesture.slideEl = void 0;
40047    }
40048  }
40049  let allowTouchMoveTimeout;
40050  function allowTouchMove() {
40051    swiper.touchEventsData.preventTouchMoveFromPointerMove = false;
40052  }
40053  function preventTouchMove() {
40054    clearTimeout(allowTouchMoveTimeout);
40055    swiper.touchEventsData.preventTouchMoveFromPointerMove = true;
40056    allowTouchMoveTimeout = setTimeout(() => {
40057      if (swiper.destroyed) return;
40058      allowTouchMove();
40059    });
40060  }
40061  function onTouchStart2(e) {
40062    const device = swiper.device;
40063    if (!gesture.imageEl) return;
40064    if (image.isTouched) return;
40065    if (device.android && e.cancelable) e.preventDefault();
40066    image.isTouched = true;
40067    const event = evCache.length > 0 ? evCache[0] : e;
40068    image.touchesStart.x = event.pageX;
40069    image.touchesStart.y = event.pageY;
40070  }
40071  function onTouchMove2(e) {
40072    const isMouseEvent = e.pointerType === "mouse";
40073    const isMousePan = isMouseEvent && swiper.params.zoom.panOnMouseMove;
40074    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) {
40075      return;
40076    }
40077    const zoom = swiper.zoom;
40078    if (!gesture.imageEl) {
40079      return;
40080    }
40081    if (!image.isTouched || !gesture.slideEl) {
40082      if (isMousePan) onMouseMove(e);
40083      return;
40084    }
40085    if (isMousePan) {
40086      onMouseMove(e);
40087      return;
40088    }
40089    if (!image.isMoved) {
40090      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
40091      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
40092      image.startX = getTranslate(gesture.imageWrapEl, "x") || 0;
40093      image.startY = getTranslate(gesture.imageWrapEl, "y") || 0;
40094      gesture.slideWidth = gesture.slideEl.offsetWidth;
40095      gesture.slideHeight = gesture.slideEl.offsetHeight;
40096      gesture.imageWrapEl.style.transitionDuration = "0ms";
40097    }
40098    const scaledWidth = image.width * zoom.scale;
40099    const scaledHeight = image.height * zoom.scale;
40100    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
40101    image.maxX = -image.minX;
40102    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
40103    image.maxY = -image.minY;
40104    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;
40105    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;
40106    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));
40107    if (touchesDiff > 5) {
40108      swiper.allowClick = false;
40109    }
40110    if (!image.isMoved && !isScaling) {
40111      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {
40112        image.isTouched = false;
40113        allowTouchMove();
40114        return;
40115      }
40116      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {
40117        image.isTouched = false;
40118        allowTouchMove();
40119        return;
40120      }
40121    }
40122    if (e.cancelable) {
40123      e.preventDefault();
40124    }
40125    e.stopPropagation();
40126    preventTouchMove();
40127    image.isMoved = true;
40128    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);
40129    const {
40130      originX,
40131      originY
40132    } = gesture;
40133    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);
40134    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);
40135    if (image.currentX < image.minX) {
40136      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;
40137    }
40138    if (image.currentX > image.maxX) {
40139      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;
40140    }
40141    if (image.currentY < image.minY) {
40142      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;
40143    }
40144    if (image.currentY > image.maxY) {
40145      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;
40146    }
40147    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;
40148    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;
40149    if (!velocity.prevTime) velocity.prevTime = Date.now();
40150    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;
40151    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;
40152    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;
40153    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;
40154    velocity.prevPositionX = image.touchesCurrent.x;
40155    velocity.prevPositionY = image.touchesCurrent.y;
40156    velocity.prevTime = Date.now();
40157    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
40158  }
40159  function onTouchEnd2() {
40160    const zoom = swiper.zoom;
40161    evCache.length = 0;
40162    if (!gesture.imageEl) return;
40163    if (!image.isTouched || !image.isMoved) {
40164      image.isTouched = false;
40165      image.isMoved = false;
40166      return;
40167    }
40168    image.isTouched = false;
40169    image.isMoved = false;
40170    let momentumDurationX = 300;
40171    let momentumDurationY = 300;
40172    const momentumDistanceX = velocity.x * momentumDurationX;
40173    const newPositionX = image.currentX + momentumDistanceX;
40174    const momentumDistanceY = velocity.y * momentumDurationY;
40175    const newPositionY = image.currentY + momentumDistanceY;
40176    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);
40177    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);
40178    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);
40179    image.currentX = newPositionX;
40180    image.currentY = newPositionY;
40181    const scaledWidth = image.width * zoom.scale;
40182    const scaledHeight = image.height * zoom.scale;
40183    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);
40184    image.maxX = -image.minX;
40185    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);
40186    image.maxY = -image.minY;
40187    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);
40188    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);
40189    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;
40190    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;
40191  }
40192  function onTransitionEnd() {
40193    const zoom = swiper.zoom;
40194    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {
40195      if (gesture.imageEl) {
40196        gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)";
40197      }
40198      if (gesture.imageWrapEl) {
40199        gesture.imageWrapEl.style.transform = "translate3d(0,0,0)";
40200      }
40201      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);
40202      zoom.scale = 1;
40203      currentScale = 1;
40204      gesture.slideEl = void 0;
40205      gesture.imageEl = void 0;
40206      gesture.imageWrapEl = void 0;
40207      gesture.originX = 0;
40208      gesture.originY = 0;
40209    }
40210  }
40211  function onMouseMove(e) {
40212    if (currentScale <= 1 || !gesture.imageWrapEl) return;
40213    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;
40214    const currentTransform = window2.getComputedStyle(gesture.imageWrapEl).transform;
40215    const matrix = new window2.DOMMatrix(currentTransform);
40216    if (!isPanningWithMouse) {
40217      isPanningWithMouse = true;
40218      mousePanStart.x = e.clientX;
40219      mousePanStart.y = e.clientY;
40220      image.startX = matrix.e;
40221      image.startY = matrix.f;
40222      image.width = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
40223      image.height = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
40224      gesture.slideWidth = gesture.slideEl.offsetWidth;
40225      gesture.slideHeight = gesture.slideEl.offsetHeight;
40226      return;
40227    }
40228    const deltaX = (e.clientX - mousePanStart.x) * mousePanSensitivity;
40229    const deltaY = (e.clientY - mousePanStart.y) * mousePanSensitivity;
40230    const scaledWidth = image.width * currentScale;
40231    const scaledHeight = image.height * currentScale;
40232    const slideWidth = gesture.slideWidth;
40233    const slideHeight = gesture.slideHeight;
40234    const minX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
40235    const maxX = -minX;
40236    const minY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
40237    const maxY = -minY;
40238    const newX = Math.max(Math.min(image.startX + deltaX, maxX), minX);
40239    const newY = Math.max(Math.min(image.startY + deltaY, maxY), minY);
40240    gesture.imageWrapEl.style.transitionDuration = "0ms";
40241    gesture.imageWrapEl.style.transform = `translate3d(${newX}px, ${newY}px, 0)`;
40242    mousePanStart.x = e.clientX;
40243    mousePanStart.y = e.clientY;
40244    image.startX = newX;
40245    image.startY = newY;
40246    image.currentX = newX;
40247    image.currentY = newY;
40248  }
40249  function zoomIn(e) {
40250    const zoom = swiper.zoom;
40251    const params = swiper.params.zoom;
40252    if (!gesture.slideEl) {
40253      if (e && e.target) {
40254        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
40255      }
40256      if (!gesture.slideEl) {
40257        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
40258          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
40259        } else {
40260          gesture.slideEl = swiper.slides[swiper.activeIndex];
40261        }
40262      }
40263      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
40264      if (imageEl) {
40265        imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0];
40266      }
40267      gesture.imageEl = imageEl;
40268      if (imageEl) {
40269        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
40270      } else {
40271        gesture.imageWrapEl = void 0;
40272      }
40273    }
40274    if (!gesture.imageEl || !gesture.imageWrapEl) return;
40275    if (swiper.params.cssMode) {
40276      swiper.wrapperEl.style.overflow = "hidden";
40277      swiper.wrapperEl.style.touchAction = "none";
40278    }
40279    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);
40280    let touchX;
40281    let touchY;
40282    let offsetX;
40283    let offsetY;
40284    let diffX;
40285    let diffY;
40286    let translateX;
40287    let translateY;
40288    let imageWidth;
40289    let imageHeight;
40290    let scaledWidth;
40291    let scaledHeight;
40292    let translateMinX;
40293    let translateMinY;
40294    let translateMaxX;
40295    let translateMaxY;
40296    let slideWidth;
40297    let slideHeight;
40298    if (typeof image.touchesStart.x === "undefined" && e) {
40299      touchX = e.pageX;
40300      touchY = e.pageY;
40301    } else {
40302      touchX = image.touchesStart.x;
40303      touchY = image.touchesStart.y;
40304    }
40305    const prevScale = currentScale;
40306    const forceZoomRatio = typeof e === "number" ? e : null;
40307    if (currentScale === 1 && forceZoomRatio) {
40308      touchX = void 0;
40309      touchY = void 0;
40310      image.touchesStart.x = void 0;
40311      image.touchesStart.y = void 0;
40312    }
40313    const maxRatio = getMaxRatio();
40314    zoom.scale = forceZoomRatio || maxRatio;
40315    currentScale = forceZoomRatio || maxRatio;
40316    if (e && !(currentScale === 1 && forceZoomRatio)) {
40317      slideWidth = gesture.slideEl.offsetWidth;
40318      slideHeight = gesture.slideEl.offsetHeight;
40319      offsetX = elementOffset(gesture.slideEl).left + window2.scrollX;
40320      offsetY = elementOffset(gesture.slideEl).top + window2.scrollY;
40321      diffX = offsetX + slideWidth / 2 - touchX;
40322      diffY = offsetY + slideHeight / 2 - touchY;
40323      imageWidth = gesture.imageEl.offsetWidth || gesture.imageEl.clientWidth;
40324      imageHeight = gesture.imageEl.offsetHeight || gesture.imageEl.clientHeight;
40325      scaledWidth = imageWidth * zoom.scale;
40326      scaledHeight = imageHeight * zoom.scale;
40327      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);
40328      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);
40329      translateMaxX = -translateMinX;
40330      translateMaxY = -translateMinY;
40331      if (prevScale > 0 && forceZoomRatio && typeof image.currentX === "number" && typeof image.currentY === "number") {
40332        translateX = image.currentX * zoom.scale / prevScale;
40333        translateY = image.currentY * zoom.scale / prevScale;
40334      } else {
40335        translateX = diffX * zoom.scale;
40336        translateY = diffY * zoom.scale;
40337      }
40338      if (translateX < translateMinX) {
40339        translateX = translateMinX;
40340      }
40341      if (translateX > translateMaxX) {
40342        translateX = translateMaxX;
40343      }
40344      if (translateY < translateMinY) {
40345        translateY = translateMinY;
40346      }
40347      if (translateY > translateMaxY) {
40348        translateY = translateMaxY;
40349      }
40350    } else {
40351      translateX = 0;
40352      translateY = 0;
40353    }
40354    if (forceZoomRatio && zoom.scale === 1) {
40355      gesture.originX = 0;
40356      gesture.originY = 0;
40357    }
40358    image.currentX = translateX;
40359    image.currentY = translateY;
40360    gesture.imageWrapEl.style.transitionDuration = "300ms";
40361    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;
40362    gesture.imageEl.style.transitionDuration = "300ms";
40363    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;
40364  }
40365  function zoomOut() {
40366    const zoom = swiper.zoom;
40367    const params = swiper.params.zoom;
40368    if (!gesture.slideEl) {
40369      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {
40370        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];
40371      } else {
40372        gesture.slideEl = swiper.slides[swiper.activeIndex];
40373      }
40374      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);
40375      if (imageEl) {
40376        imageEl = imageEl.querySelectorAll("picture, img, svg, canvas, .swiper-zoom-target")[0];
40377      }
40378      gesture.imageEl = imageEl;
40379      if (imageEl) {
40380        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];
40381      } else {
40382        gesture.imageWrapEl = void 0;
40383      }
40384    }
40385    if (!gesture.imageEl || !gesture.imageWrapEl) return;
40386    if (swiper.params.cssMode) {
40387      swiper.wrapperEl.style.overflow = "";
40388      swiper.wrapperEl.style.touchAction = "";
40389    }
40390    zoom.scale = 1;
40391    currentScale = 1;
40392    image.currentX = void 0;
40393    image.currentY = void 0;
40394    image.touchesStart.x = void 0;
40395    image.touchesStart.y = void 0;
40396    gesture.imageWrapEl.style.transitionDuration = "300ms";
40397    gesture.imageWrapEl.style.transform = "translate3d(0,0,0)";
40398    gesture.imageEl.style.transitionDuration = "300ms";
40399    gesture.imageEl.style.transform = "translate3d(0,0,0) scale(1)";
40400    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);
40401    gesture.slideEl = void 0;
40402    gesture.originX = 0;
40403    gesture.originY = 0;
40404    if (swiper.params.zoom.panOnMouseMove) {
40405      mousePanStart = {
40406        x: 0,
40407        y: 0
40408      };
40409      if (isPanningWithMouse) {
40410        isPanningWithMouse = false;
40411        image.startX = 0;
40412        image.startY = 0;
40413      }
40414    }
40415  }
40416  function zoomToggle(e) {
40417    const zoom = swiper.zoom;
40418    if (zoom.scale && zoom.scale !== 1) {
40419      zoomOut();
40420    } else {
40421      zoomIn(e);
40422    }
40423  }
40424  function getListeners() {
40425    const passiveListener = swiper.params.passiveListeners ? {
40426      passive: true,
40427      capture: false
40428    } : false;
40429    const activeListenerWithCapture = swiper.params.passiveListeners ? {
40430      passive: false,
40431      capture: true
40432    } : true;
40433    return {
40434      passiveListener,
40435      activeListenerWithCapture
40436    };
40437  }
40438  function enable() {
40439    const zoom = swiper.zoom;
40440    if (zoom.enabled) return;
40441    zoom.enabled = true;
40442    const {
40443      passiveListener,
40444      activeListenerWithCapture
40445    } = getListeners();
40446    swiper.wrapperEl.addEventListener("pointerdown", onGestureStart, passiveListener);
40447    swiper.wrapperEl.addEventListener("pointermove", onGestureChange, activeListenerWithCapture);
40448    ["pointerup", "pointercancel", "pointerout"].forEach((eventName) => {
40449      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);
40450    });
40451    swiper.wrapperEl.addEventListener("pointermove", onTouchMove2, activeListenerWithCapture);
40452  }
40453  function disable() {
40454    const zoom = swiper.zoom;
40455    if (!zoom.enabled) return;
40456    zoom.enabled = false;
40457    const {
40458      passiveListener,
40459      activeListenerWithCapture
40460    } = getListeners();
40461    swiper.wrapperEl.removeEventListener("pointerdown", onGestureStart, passiveListener);
40462    swiper.wrapperEl.removeEventListener("pointermove", onGestureChange, activeListenerWithCapture);
40463    ["pointerup", "pointercancel", "pointerout"].forEach((eventName) => {
40464      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);
40465    });
40466    swiper.wrapperEl.removeEventListener("pointermove", onTouchMove2, activeListenerWithCapture);
40467  }
40468  on("init", () => {
40469    if (swiper.params.zoom.enabled) {
40470      enable();
40471    }
40472  });
40473  on("destroy", () => {
40474    disable();
40475  });
40476  on("touchStart", (_s, e) => {
40477    if (!swiper.zoom.enabled) return;
40478    onTouchStart2(e);
40479  });
40480  on("touchEnd", (_s, e) => {
40481    if (!swiper.zoom.enabled) return;
40482    onTouchEnd2();
40483  });
40484  on("doubleTap", (_s, e) => {
40485    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {
40486      zoomToggle(e);
40487    }
40488  });
40489  on("transitionEnd", () => {
40490    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {
40491      onTransitionEnd();
40492    }
40493  });
40494  on("slideChange", () => {
40495    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {
40496      onTransitionEnd();
40497    }
40498  });
40499  Object.assign(swiper.zoom, {
40500    enable,
40501    disable,
40502    in: zoomIn,
40503    out: zoomOut,
40504    toggle: zoomToggle
40505  });
40506}
40507function A11y(_ref) {
40508  let {
40509    swiper,
40510    extendParams,
40511    on
40512  } = _ref;
40513  extendParams({
40514    a11y: {
40515      enabled: true,
40516      notificationClass: "swiper-notification",
40517      prevSlideMessage: "Previous slide",
40518      nextSlideMessage: "Next slide",
40519      firstSlideMessage: "This is the first slide",
40520      lastSlideMessage: "This is the last slide",
40521      paginationBulletMessage: "Go to slide {{index}}",
40522      slideLabelMessage: "{{index}} / {{slidesLength}}",
40523      containerMessage: null,
40524      containerRoleDescriptionMessage: null,
40525      containerRole: null,
40526      itemRoleDescriptionMessage: null,
40527      slideRole: "group",
40528      id: null,
40529      scrollOnFocus: true
40530    }
40531  });
40532  swiper.a11y = {
vendor: 4,291 bytes, lines 40533-40676
40533    clicked: false
40534  };
40535  let liveRegion = null;
40536  let preventFocusHandler;
40537  let focusTargetSlideEl;
40538  let visibilityChangedTimestamp = (/* @__PURE__ */ new Date()).getTime();
40539  function notify(message) {
40540    const notification = liveRegion;
40541    if (notification.length === 0) return;
40542    setInnerHTML(notification, message);
40543  }
40544  function getRandomNumber(size) {
40545    const randomChar = () => Math.round(16 * Math.random()).toString(16);
40546    return "x".repeat(size).replace(/x/g, randomChar);
40547  }
40548  function makeElFocusable(el) {
40549    el = makeElementsArray(el);
40550    el.forEach((subEl) => {
40551      subEl.setAttribute("tabIndex", "0");
40552    });
40553  }
40554  function makeElNotFocusable(el) {
40555    el = makeElementsArray(el);
40556    el.forEach((subEl) => {
40557      subEl.setAttribute("tabIndex", "-1");
40558    });
40559  }
40560  function addElRole(el, role) {
40561    el = makeElementsArray(el);
40562    el.forEach((subEl) => {
40563      subEl.setAttribute("role", role);
40564    });
40565  }
40566  function addElRoleDescription(el, description) {
40567    el = makeElementsArray(el);
40568    el.forEach((subEl) => {
40569      subEl.setAttribute("aria-roledescription", description);
40570    });
40571  }
40572  function addElControls(el, controls) {
40573    el = makeElementsArray(el);
40574    el.forEach((subEl) => {
40575      subEl.setAttribute("aria-controls", controls);
40576    });
40577  }
40578  function addElLabel(el, label) {
40579    el = makeElementsArray(el);
40580    el.forEach((subEl) => {
40581      subEl.setAttribute("aria-label", label);
40582    });
40583  }
40584  function addElId(el, id) {
40585    el = makeElementsArray(el);
40586    el.forEach((subEl) => {
40587      subEl.setAttribute("id", id);
40588    });
40589  }
40590  function addElLive(el, live) {
40591    el = makeElementsArray(el);
40592    el.forEach((subEl) => {
40593      subEl.setAttribute("aria-live", live);
40594    });
40595  }
40596  function disableEl(el) {
40597    el = makeElementsArray(el);
40598    el.forEach((subEl) => {
40599      subEl.setAttribute("aria-disabled", true);
40600    });
40601  }
40602  function enableEl(el) {
40603    el = makeElementsArray(el);
40604    el.forEach((subEl) => {
40605      subEl.setAttribute("aria-disabled", false);
40606    });
40607  }
40608  function onEnterOrSpaceKey(e) {
40609    if (e.keyCode !== 13 && e.keyCode !== 32) return;
40610    const params = swiper.params.a11y;
40611    const targetEl = e.target;
40612    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {
40613      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;
40614    }
40615    if (swiper.navigation && swiper.navigation.prevEl && swiper.navigation.nextEl) {
40616      const prevEls = makeElementsArray(swiper.navigation.prevEl);
40617      const nextEls = makeElementsArray(swiper.navigation.nextEl);
40618      if (nextEls.includes(targetEl)) {
40619        if (!(swiper.isEnd && !swiper.params.loop)) {
40620          swiper.slideNext();
40621        }
40622        if (swiper.isEnd) {
40623          notify(params.lastSlideMessage);
40624        } else {
40625          notify(params.nextSlideMessage);
40626        }
40627      }
40628      if (prevEls.includes(targetEl)) {
40629        if (!(swiper.isBeginning && !swiper.params.loop)) {
40630          swiper.slidePrev();
40631        }
40632        if (swiper.isBeginning) {
40633          notify(params.firstSlideMessage);
40634        } else {
40635          notify(params.prevSlideMessage);
40636        }
40637      }
40638    }
40639    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {
40640      targetEl.click();
40641    }
40642  }
40643  function updateNavigation() {
40644    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;
40645    const {
40646      nextEl,
40647      prevEl
40648    } = swiper.navigation;
40649    if (prevEl) {
40650      if (swiper.isBeginning) {
40651        disableEl(prevEl);
40652        makeElNotFocusable(prevEl);
40653      } else {
40654        enableEl(prevEl);
40655        makeElFocusable(prevEl);
40656      }
40657    }
40658    if (nextEl) {
40659      if (swiper.isEnd) {
40660        disableEl(nextEl);
40661        makeElNotFocusable(nextEl);
40662      } else {
40663        enableEl(nextEl);
40664        makeElFocusable(nextEl);
40665      }
40666    }
40667  }
40668  function hasPagination() {
40669    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;
40670  }
40671  function hasClickablePagination() {
40672    return hasPagination() && swiper.params.pagination.clickable;
40673  }
40674  function updatePagination() {
40675    const params = swiper.params.a11y;
40676    if (!hasPagination()) return;
40677    swiper.pagination.bullets.forEach((bulletEl) => {
40678      if (swiper.params.pagination.clickable) {
40679        makeElFocusable(bulletEl);
40680        if (!swiper.params.pagination.renderBullet) {
40681          addElRole(bulletEl, "button");
40682          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\{\{index\}\}/, elementIndex(bulletEl) + 1));
40683        }
40684      }
40685      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {
40686        bulletEl.setAttribute("aria-current", "true");
40687      } else {
40688        bulletEl.removeAttribute("aria-current");
40689      }
40690    });
40691  }
40692  const initNavEl = (el, wrapperId, message) => {
40693    makeElFocusable(el);
40694    if (el.tagName !== "BUTTON") {
40695      addElRole(el, "button");
40696      el.addEventListener("keydown", onEnterOrSpaceKey);
40697    }
40698    addElLabel(el, message);
40699    addElControls(el, wrapperId);
40700  };
40701  const handlePointerDown = (e) => {
40702    if (focusTargetSlideEl && focusTargetSlideEl !== e.target && !focusTargetSlideEl.contains(e.target)) {
40703      preventFocusHandler = true;
40704    }
40705    swiper.a11y.clicked = true;
40706  };
40707  const handlePointerUp = () => {
40708    preventFocusHandler = false;
40709    requestAnimationFrame(() => {
40710      requestAnimationFrame(() => {
40711        if (!swiper.destroyed) {
40712          swiper.a11y.clicked = false;
40713        }
40714      });
40715    });
40716  };
40717  const onVisibilityChange = (e) => {
40718    visibilityChangedTimestamp = (/* @__PURE__ */ new Date()).getTime();
40719  };
40720  const handleFocus = (e) => {
40721    if (swiper.a11y.clicked || !swiper.params.a11y.scrollOnFocus) return;
40722    if ((/* @__PURE__ */ new Date()).getTime() - visibilityChangedTimestamp < 100) return;
40723    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);
40724    if (!slideEl || !swiper.slides.includes(slideEl)) return;
40725    focusTargetSlideEl = slideEl;
40726    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;
40727    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);
40728    if (isActive || isVisible) return;
40729    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;
40730    if (swiper.isHorizontal()) {
40731      swiper.el.scrollLeft = 0;
40732    } else {
40733      swiper.el.scrollTop = 0;
40734    }
40735    requestAnimationFrame(() => {
40736      if (preventFocusHandler) return;
40737      if (swiper.params.loop) {
40738        swiper.slideToLoop(parseInt(slideEl.getAttribute("data-swiper-slide-index")), 0);
40739      } else {
40740        swiper.slideTo(swiper.slides.indexOf(slideEl), 0);
40741      }
40742      preventFocusHandler = false;
40743    });
40744  };
40745  const initSlides = () => {
40746    const params = swiper.params.a11y;
40747    if (params.itemRoleDescriptionMessage) {
40748      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);
40749    }
40750    if (params.slideRole) {
40751      addElRole(swiper.slides, params.slideRole);
40752    }
40753    const slidesLength = swiper.slides.length;
40754    if (params.slideLabelMessage) {
40755      swiper.slides.forEach((slideEl, index2) => {
40756        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute("data-swiper-slide-index"), 10) : index2;
40757        const ariaLabelMessage = params.slideLabelMessage.replace(/\{\{index\}\}/, slideIndex + 1).replace(/\{\{slidesLength\}\}/, slidesLength);
40758        addElLabel(slideEl, ariaLabelMessage);
40759      });
40760    }
40761  };
40762  const init = () => {
40763    const params = swiper.params.a11y;
40764    swiper.el.append(liveRegion);
40765    const containerEl = swiper.el;
40766    if (params.containerRoleDescriptionMessage) {
40767      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);
40768    }
40769    if (params.containerMessage) {
40770      addElLabel(containerEl, params.containerMessage);
40771    }
40772    if (params.containerRole) {
40773      addElRole(containerEl, params.containerRole);
40774    }
40775    const wrapperEl = swiper.wrapperEl;
40776    const wrapperId = params.id || wrapperEl.getAttribute("id") || `swiper-wrapper-${getRandomNumber(16)}`;
40777    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? "off" : "polite";
40778    addElId(wrapperEl, wrapperId);
40779    addElLive(wrapperEl, live);
40780    initSlides();
40781    let {
40782      nextEl,
40783      prevEl
40784    } = swiper.navigation ? swiper.navigation : {};
40785    nextEl = makeElementsArray(nextEl);
40786    prevEl = makeElementsArray(prevEl);
40787    if (nextEl) {
40788      nextEl.forEach((el) => initNavEl(el, wrapperId, params.nextSlideMessage));
40789    }
40790    if (prevEl) {
40791      prevEl.forEach((el) => initNavEl(el, wrapperId, params.prevSlideMessage));
40792    }
40793    if (hasClickablePagination()) {
40794      const paginationEl = makeElementsArray(swiper.pagination.el);
40795      paginationEl.forEach((el) => {
40796        el.addEventListener("keydown", onEnterOrSpaceKey);
40797      });
40798    }
40799    const document2 = getDocument();
40800    document2.addEventListener("visibilitychange", onVisibilityChange);
40801    swiper.el.addEventListener("focus", handleFocus, true);
40802    swiper.el.addEventListener("focus", handleFocus, true);
40803    swiper.el.addEventListener("pointerdown", handlePointerDown, true);
40804    swiper.el.addEventListener("pointerup", handlePointerUp, true);
40805  };
40806  function destroy() {
40807    if (liveRegion) liveRegion.remove();
40808    let {
40809      nextEl,
40810      prevEl
40811    } = swiper.navigation ? swiper.navigation : {};
40812    nextEl = makeElementsArray(nextEl);
40813    prevEl = makeElementsArray(prevEl);
40814    if (nextEl) {
40815      nextEl.forEach((el) => el.removeEventListener("keydown", onEnterOrSpaceKey));
40816    }
40817    if (prevEl) {
40818      prevEl.forEach((el) => el.removeEventListener("keydown", onEnterOrSpaceKey));
40819    }
40820    if (hasClickablePagination()) {
40821      const paginationEl = makeElementsArray(swiper.pagination.el);
40822      paginationEl.forEach((el) => {
40823        el.removeEventListener("keydown", onEnterOrSpaceKey);
40824      });
40825    }
40826    const document2 = getDocument();
40827    document2.removeEventListener("visibilitychange", onVisibilityChange);
40828    if (swiper.el && typeof swiper.el !== "string") {
40829      swiper.el.removeEventListener("focus", handleFocus, true);
40830      swiper.el.removeEventListener("pointerdown", handlePointerDown, true);
40831      swiper.el.removeEventListener("pointerup", handlePointerUp, true);
40832    }
40833  }
40834  on("beforeInit", () => {
40835    liveRegion = createElement("span", swiper.params.a11y.notificationClass);
40836    liveRegion.setAttribute("aria-live", "assertive");
40837    liveRegion.setAttribute("aria-atomic", "true");
40838  });
40839  on("afterInit", () => {
40840    if (!swiper.params.a11y.enabled) return;
40841    init();
40842  });
40843  on("slidesLengthChange snapGridLengthChange slidesGridLengthChange", () => {
40844    if (!swiper.params.a11y.enabled) return;
40845    initSlides();
40846  });
40847  on("fromEdge toEdge afterInit lock unlock", () => {
40848    if (!swiper.params.a11y.enabled) return;
40849    updateNavigation();
40850  });
40851  on("paginationUpdate", () => {
40852    if (!swiper.params.a11y.enabled) return;
40853    updatePagination();
40854  });
40855  on("destroy", () => {
40856    if (!swiper.params.a11y.enabled) return;
40857    destroy();
40858  });
40859}
40860function HashNavigation(_ref) {
40861  let {
40862    swiper,
40863    extendParams,
40864    emit: emit2,
40865    on
40866  } = _ref;
40867  let initialized = false;
vendor: 4,690 bytes, lines 40868-41000
40868  const document2 = getDocument();
40869  const window2 = getWindow();
40870  extendParams({
40871    hashNavigation: {
40872      enabled: false,
40873      replaceState: false,
40874      watchState: false,
40875      getSlideIndex(_s, hash) {
40876        if (swiper.virtual && swiper.params.virtual.enabled) {
40877          const slideWithHash = swiper.slides.find((slideEl) => slideEl.getAttribute("data-hash") === hash);
40878          if (!slideWithHash) return 0;
40879          const index2 = parseInt(slideWithHash.getAttribute("data-swiper-slide-index"), 10);
40880          return index2;
40881        }
40882        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash="${hash}"], swiper-slide[data-hash="${hash}"]`)[0]);
40883      }
40884    }
40885  });
40886  const onHashChange = () => {
40887    emit2("hashChange");
40888    const newHash = document2.location.hash.replace("#", "");
40889    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
40890    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") : "";
40891    if (newHash !== activeSlideHash) {
40892      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);
40893      if (typeof newIndex === "undefined" || Number.isNaN(newIndex)) return;
40894      swiper.slideTo(newIndex);
40895    }
40896  };
40897  const setHash = () => {
40898    if (!initialized || !swiper.params.hashNavigation.enabled) return;
40899    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index="${swiper.activeIndex}"]`) : swiper.slides[swiper.activeIndex];
40900    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute("data-hash") || activeSlideEl.getAttribute("data-history") : "";
40901    if (swiper.params.hashNavigation.replaceState && window2.history && window2.history.replaceState) {
40902      window2.history.replaceState(null, null, `#${activeSlideHash}` || "");
40903      emit2("hashSet");
40904    } else {
40905      document2.location.hash = activeSlideHash || "";
40906      emit2("hashSet");
40907    }
40908  };
40909  const init = () => {
40910    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;
40911    initialized = true;
40912    const hash = document2.location.hash.replace("#", "");
40913    if (hash) {
40914      const speed = 0;
40915      const index2 = swiper.params.hashNavigation.getSlideIndex(swiper, hash);
40916      swiper.slideTo(index2 || 0, speed, swiper.params.runCallbacksOnInit, true);
40917    }
40918    if (swiper.params.hashNavigation.watchState) {
40919      window2.addEventListener("hashchange", onHashChange);
40920    }
40921  };
40922  const destroy = () => {
40923    if (swiper.params.hashNavigation.watchState) {
40924      window2.removeEventListener("hashchange", onHashChange);
40925    }
40926  };
40927  on("init", () => {
40928    if (swiper.params.hashNavigation.enabled) {
40929      init();
40930    }
40931  });
40932  on("destroy", () => {
40933    if (swiper.params.hashNavigation.enabled) {
40934      destroy();
40935    }
40936  });
40937  on("transitionEnd _freeModeNoMomentumRelease", () => {
40938    if (initialized) {
40939      setHash();
40940    }
40941  });
40942  on("slideChange", () => {
40943    if (initialized && swiper.params.cssMode) {
40944      setHash();
40945    }
40946  });
40947}
40948function Autoplay(_ref) {
40949  let {
40950    swiper,
40951    extendParams,
40952    on,
40953    emit: emit2,
40954    params
40955  } = _ref;
40956  swiper.autoplay = {
40957    running: false,
40958    paused: false,
40959    timeLeft: 0
40960  };
40961  extendParams({
40962    autoplay: {
40963      enabled: false,
40964      delay: 3e3,
40965      waitForTransition: true,
40966      disableOnInteraction: false,
40967      stopOnLastSlide: false,
40968      reverseDirection: false,
40969      pauseOnMouseEnter: false
40970    }
40971  });
40972  let timeout;
40973  let raf;
40974  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3e3;
40975  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3e3;
40976  let autoplayTimeLeft;
40977  let autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
40978  let wasPaused;
40979  let isTouched;
40980  let pausedByTouch;
40981  let touchStartTimeout;
40982  let slideChanged;
40983  let pausedByInteraction;
40984  let pausedByPointerEnter;
40985  function onTransitionEnd(e) {
40986    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;
40987    if (e.target !== swiper.wrapperEl) return;
40988    swiper.wrapperEl.removeEventListener("transitionend", onTransitionEnd);
40989    if (pausedByPointerEnter || e.detail && e.detail.bySwiperTouchMove) {
40990      return;
40991    }
40992    resume();
40993  }
40994  const calcTimeLeft = () => {
40995    if (swiper.destroyed || !swiper.autoplay.running) return;
40996    if (swiper.autoplay.paused) {
40997      wasPaused = true;
40998    } else if (wasPaused) {
40999      autoplayDelayCurrent = autoplayTimeLeft;
41000      wasPaused = false;
vendor: 8,384 bytes, lines 41001-41263
41001    }
41002    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - (/* @__PURE__ */ new Date()).getTime();
41003    swiper.autoplay.timeLeft = timeLeft;
41004    emit2("autoplayTimeLeft", timeLeft, timeLeft / autoplayDelayTotal);
41005    raf = requestAnimationFrame(() => {
41006      calcTimeLeft();
41007    });
41008  };
41009  const getSlideDelay = () => {
41010    let activeSlideEl;
41011    if (swiper.virtual && swiper.params.virtual.enabled) {
41012      activeSlideEl = swiper.slides.find((slideEl) => slideEl.classList.contains("swiper-slide-active"));
41013    } else {
41014      activeSlideEl = swiper.slides[swiper.activeIndex];
41015    }
41016    if (!activeSlideEl) return void 0;
41017    const currentSlideDelay = parseInt(activeSlideEl.getAttribute("data-swiper-autoplay"), 10);
41018    return currentSlideDelay;
41019  };
41020  const run = (delayForce) => {
41021    if (swiper.destroyed || !swiper.autoplay.running) return;
41022    cancelAnimationFrame(raf);
41023    calcTimeLeft();
41024    let delay = typeof delayForce === "undefined" ? swiper.params.autoplay.delay : delayForce;
41025    autoplayDelayTotal = swiper.params.autoplay.delay;
41026    autoplayDelayCurrent = swiper.params.autoplay.delay;
41027    const currentSlideDelay = getSlideDelay();
41028    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === "undefined") {
41029      delay = currentSlideDelay;
41030      autoplayDelayTotal = currentSlideDelay;
41031      autoplayDelayCurrent = currentSlideDelay;
41032    }
41033    autoplayTimeLeft = delay;
41034    const speed = swiper.params.speed;
41035    const proceed = () => {
41036      if (!swiper || swiper.destroyed) return;
41037      if (swiper.params.autoplay.reverseDirection) {
41038        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {
41039          swiper.slidePrev(speed, true, true);
41040          emit2("autoplay");
41041        } else if (!swiper.params.autoplay.stopOnLastSlide) {
41042          swiper.slideTo(swiper.slides.length - 1, speed, true, true);
41043          emit2("autoplay");
41044        }
41045      } else {
41046        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {
41047          swiper.slideNext(speed, true, true);
41048          emit2("autoplay");
41049        } else if (!swiper.params.autoplay.stopOnLastSlide) {
41050          swiper.slideTo(0, speed, true, true);
41051          emit2("autoplay");
41052        }
41053      }
41054      if (swiper.params.cssMode) {
41055        autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
41056        requestAnimationFrame(() => {
41057          run();
41058        });
41059      }
41060    };
41061    if (delay > 0) {
41062      clearTimeout(timeout);
41063      timeout = setTimeout(() => {
41064        proceed();
41065      }, delay);
41066    } else {
41067      requestAnimationFrame(() => {
41068        proceed();
41069      });
41070    }
41071    return delay;
41072  };
41073  const start = () => {
41074    autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
41075    swiper.autoplay.running = true;
41076    run();
41077    emit2("autoplayStart");
41078  };
41079  const stop2 = () => {
41080    swiper.autoplay.running = false;
41081    clearTimeout(timeout);
41082    cancelAnimationFrame(raf);
41083    emit2("autoplayStop");
41084  };
41085  const pause = (internal, reset2) => {
41086    if (swiper.destroyed || !swiper.autoplay.running) return;
41087    clearTimeout(timeout);
41088    if (!internal) {
41089      pausedByInteraction = true;
41090    }
41091    const proceed = () => {
41092      emit2("autoplayPause");
41093      if (swiper.params.autoplay.waitForTransition) {
41094        swiper.wrapperEl.addEventListener("transitionend", onTransitionEnd);
41095      } else {
41096        resume();
41097      }
41098    };
41099    swiper.autoplay.paused = true;
41100    if (reset2) {
41101      if (slideChanged) {
41102        autoplayTimeLeft = swiper.params.autoplay.delay;
41103      }
41104      slideChanged = false;
41105      proceed();
41106      return;
41107    }
41108    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;
41109    autoplayTimeLeft = delay - ((/* @__PURE__ */ new Date()).getTime() - autoplayStartTime);
41110    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;
41111    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;
41112    proceed();
41113  };
41114  const resume = () => {
41115    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;
41116    autoplayStartTime = (/* @__PURE__ */ new Date()).getTime();
41117    if (pausedByInteraction) {
41118      pausedByInteraction = false;
41119      run(autoplayTimeLeft);
41120    } else {
41121      run();
41122    }
41123    swiper.autoplay.paused = false;
41124    emit2("autoplayResume");
41125  };
41126  const onVisibilityChange = () => {
41127    if (swiper.destroyed || !swiper.autoplay.running) return;
41128    const document2 = getDocument();
41129    if (document2.visibilityState === "hidden") {
41130      pausedByInteraction = true;
41131      pause(true);
41132    }
41133    if (document2.visibilityState === "visible") {
41134      resume();
41135    }
41136  };
41137  const onPointerEnter = (e) => {
41138    if (e.pointerType !== "mouse") return;
41139    pausedByInteraction = true;
41140    pausedByPointerEnter = true;
41141    if (swiper.animating || swiper.autoplay.paused) return;
41142    pause(true);
41143  };
41144  const onPointerLeave = (e) => {
41145    if (e.pointerType !== "mouse") return;
41146    pausedByPointerEnter = false;
41147    if (swiper.autoplay.paused) {
41148      resume();
41149    }
41150  };
41151  const attachMouseEvents = () => {
41152    if (swiper.params.autoplay.pauseOnMouseEnter) {
41153      swiper.el.addEventListener("pointerenter", onPointerEnter);
41154      swiper.el.addEventListener("pointerleave", onPointerLeave);
41155    }
41156  };
41157  const detachMouseEvents = () => {
41158    if (swiper.el && typeof swiper.el !== "string") {
41159      swiper.el.removeEventListener("pointerenter", onPointerEnter);
41160      swiper.el.removeEventListener("pointerleave", onPointerLeave);
41161    }
41162  };
41163  const attachDocumentEvents = () => {
41164    const document2 = getDocument();
41165    document2.addEventListener("visibilitychange", onVisibilityChange);
41166  };
41167  const detachDocumentEvents = () => {
41168    const document2 = getDocument();
41169    document2.removeEventListener("visibilitychange", onVisibilityChange);
41170  };
41171  on("init", () => {
41172    if (swiper.params.autoplay.enabled) {
41173      attachMouseEvents();
41174      attachDocumentEvents();
41175      start();
41176    }
41177  });
41178  on("destroy", () => {
41179    detachMouseEvents();
41180    detachDocumentEvents();
41181    if (swiper.autoplay.running) {
41182      stop2();
41183    }
41184  });
41185  on("_freeModeStaticRelease", () => {
41186    if (pausedByTouch || pausedByInteraction) {
41187      resume();
41188    }
41189  });
41190  on("_freeModeNoMomentumRelease", () => {
41191    if (!swiper.params.autoplay.disableOnInteraction) {
41192      pause(true, true);
41193    } else {
41194      stop2();
41195    }
41196  });
41197  on("beforeTransitionStart", (_s, speed, internal) => {
41198    if (swiper.destroyed || !swiper.autoplay.running) return;
41199    if (internal || !swiper.params.autoplay.disableOnInteraction) {
41200      pause(true, true);
41201    } else {
41202      stop2();
41203    }
41204  });
41205  on("sliderFirstMove", () => {
41206    if (swiper.destroyed || !swiper.autoplay.running) return;
41207    if (swiper.params.autoplay.disableOnInteraction) {
41208      stop2();
41209      return;
41210    }
41211    isTouched = true;
41212    pausedByTouch = false;
41213    pausedByInteraction = false;
41214    touchStartTimeout = setTimeout(() => {
41215      pausedByInteraction = true;
41216      pausedByTouch = true;
41217      pause(true);
41218    }, 200);
41219  });
41220  on("touchEnd", () => {
41221    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;
41222    clearTimeout(touchStartTimeout);
41223    clearTimeout(timeout);
41224    if (swiper.params.autoplay.disableOnInteraction) {
41225      pausedByTouch = false;
41226      isTouched = false;
41227      return;
41228    }
41229    if (pausedByTouch && swiper.params.cssMode) resume();
41230    pausedByTouch = false;
41231    isTouched = false;
41232  });
41233  on("slideChange", () => {
41234    if (swiper.destroyed || !swiper.autoplay.running) return;
41235    slideChanged = true;
41236  });
41237  Object.assign(swiper.autoplay, {
41238    start,
41239    stop: stop2,
41240    pause,
41241    resume
41242  });
41243}
41244function effectInit(params) {
41245  const {
41246    effect: effect2,
41247    swiper,
41248    on,
41249    setTranslate: setTranslate2,
41250    setTransition: setTransition2,
41251    overwriteParams,
41252    perspective,
41253    recreateShadows,
41254    getEffectParams
41255  } = params;
41256  on("beforeInit", () => {
41257    if (swiper.params.effect !== effect2) return;
41258    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect2}`);
41259    if (perspective && perspective()) {
41260      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);
41261    }
41262    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};
41263    Object.assign(swiper.params, overwriteParamsResult);
41264    Object.assign(swiper.originalParams, overwriteParamsResult);
41265  });
41266  on("setTranslate _virtualUpdated", () => {
41267    if (swiper.params.effect !== effect2) return;
41268    setTranslate2();
41269  });
41270  on("setTransition", (_s, duration) => {
41271    if (swiper.params.effect !== effect2) return;
41272    setTransition2(duration);
41273  });
41274  on("transitionEnd", () => {
41275    if (swiper.params.effect !== effect2) return;
41276    if (recreateShadows) {
41277      if (!getEffectParams || !getEffectParams().slideShadows) return;
41278      swiper.slides.forEach((slideEl) => {
41279        slideEl.querySelectorAll(".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left").forEach((shadowEl) => shadowEl.remove());
41280      });
41281      recreateShadows();
41282    }
41283  });
41284  let requireUpdateOnVirtual;
41285  on("virtualUpdate", () => {
41286    if (swiper.params.effect !== effect2) return;
41287    if (!swiper.slides.length) {
41288      requireUpdateOnVirtual = true;
41289    }
41290    requestAnimationFrame(() => {
41291      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {
41292        setTranslate2();
41293        requireUpdateOnVirtual = false;
41294      }
41295    });
41296  });
41297}
41298function effectTarget(effectParams, slideEl) {
41299  const transformEl = getSlideTransformEl(slideEl);
41300  if (transformEl !== slideEl) {
41301    transformEl.style.backfaceVisibility = "hidden";
41302    transformEl.style["-webkit-backface-visibility"] = "hidden";
41303  }
41304  return transformEl;
41305}
41306function effectVirtualTransitionEnd(_ref) {
41307  let {
41308    swiper,
41309    duration,
41310    transformElements
41311  } = _ref;
41312  const {
41313    activeIndex
41314  } = swiper;
41315  if (swiper.params.virtualTranslate && duration !== 0) {
41316    let eventTriggered = false;
41317    let transitionEndTarget;
41318    {
41319      transitionEndTarget = transformElements;
41320    }
41321    transitionEndTarget.forEach((el) => {
41322      elementTransitionEnd(el, () => {
41323        if (eventTriggered) return;
41324        if (!swiper || swiper.destroyed) return;
41325        eventTriggered = true;
41326        swiper.animating = false;
41327        const evt = new window.CustomEvent("transitionend", {
41328          bubbles: true,
41329          cancelable: true
41330        });
41331        swiper.wrapperEl.dispatchEvent(evt);
41332      });
41333    });
41334  }
41335}
41336function EffectFade(_ref) {
41337  let {
41338    swiper,
41339    extendParams,
41340    on
41341  } = _ref;
41342  extendParams({
41343    fadeEffect: {
41344      crossFade: false
41345    }
41346  });
41347  const setTranslate2 = () => {
41348    const {
41349      slides
41350    } = swiper;
41351    const params = swiper.params.fadeEffect;
41352    for (let i = 0; i < slides.length; i += 1) {
41353      const slideEl = swiper.slides[i];
41354      const offset = slideEl.swiperSlideOffset;
41355      let tx = -offset;
41356      if (!swiper.params.virtualTranslate) tx -= swiper.translate;
41357      let ty = 0;
41358      if (!swiper.isHorizontal()) {
41359        ty = tx;
41360        tx = 0;
41361      }
41362      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);
41363      const targetEl = effectTarget(params, slideEl);
41364      targetEl.style.opacity = slideOpacity;
41365      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;
41366    }
41367  };
41368  const setTransition2 = (duration) => {
41369    const transformElements = swiper.slides.map((slideEl) => getSlideTransformEl(slideEl));
41370    transformElements.forEach((el) => {
41371      el.style.transitionDuration = `${duration}ms`;
41372    });
41373    effectVirtualTransitionEnd({
41374      swiper,
41375      duration,
41376      transformElements
41377    });
41378  };
41379  effectInit({
41380    effect: "fade",
41381    swiper,
41382    on,
41383    setTranslate: setTranslate2,
41384    setTransition: setTransition2,
41385    overwriteParams: () => ({
41386      slidesPerView: 1,
41387      slidesPerGroup: 1,
41388      watchSlidesProgress: true,
41389      spaceBetween: 0,
41390      virtualTranslate: !swiper.params.cssMode
41391    })
41392  });
41393}
41394const _sfc_main$P = {
41395  name: "ImageGallery",
41396  components: {
41397    Swiper: Swiper2
41398  },
41399  props: {
41400    alternateStyle: {
41401      type: Boolean,
41402      default: false
41403    },
41404    heroStyle: {
41405      type: Boolean,
41406      default: false
41407    },
41408    columnsStyle: {
41409      type: Boolean,
41410      default: false
41411    },
41412    autoplay: {
41413      type: Boolean,
41414      default: false
41415    },
41416    transitionTime: {
41417      type: Number,
41418      default: 300
41419    }
41420  },
41421  data() {
41422    return {
41423      loaded: false,
41424      modules: [Keyboard, Navigation, Zoom, A11y, HashNavigation, EffectFade, Autoplay],
41425      swiper: null,
41426      reinit: false,
41427      slidesPerView: null
41428    };
41429  },
41430  computed: {
41431    ...mapGetters(ENVIRONMENT_TYPES.NAME, {
41432      isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE,
41433      isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET,
41434      isDesktop: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_DESKTOP
41435    }),
41436    navOptions() {
41437      return {
41438        nextEl: this.$refs.next,
41439        prevEl: this.$refs.prev
41440      };
41441    },
41442    autoplayOptions() {
41443      if (this.autoplay) {
41444        return {
41445          delay: 12e3,
41446          disableOnInteraction: false
41447        };
41448      } else return false;
41449    },
41450    breakPoints() {
41451      let slidesPerViewMobile = 1;
41452      let slidesPerViewTablet = 1;
41453      let slidesPerViewDesktop = 1;
41454      if (this.columnsStyle) {
41455        slidesPerViewMobile = 1;
41456        slidesPerViewTablet = 2;
41457        slidesPerViewDesktop = 3;
41458      }
41459      return {
41460        640: {
41461          slidesPerView: slidesPerViewMobile
41462        },
41463        1024: {
41464          slidesPerView: slidesPerViewTablet
41465        },
41466        1440: {
41467          slidesPerView: slidesPerViewDesktop
41468        }
41469      };
41470    },
41471    swiperEffect() {
41472      if (this.columnsStyle) return void 0;
41473      return "slide";
41474    }
41475  },
41476  // watch: {},
41477  // Livecycle hooks
41478  // created() {},
41479  mounted() {
41480    this.$nextTick(() => {
41481      this.loaded = true;
41482    });
41483  },
41484  // updated() {},
41485  // beforeDestroy() {},
41486  methods: {
41487    onSwiperReady(swiper) {
41488      this.swiper = swiper;
41489    }
41490  }
41491};
41492const _hoisted_1$O = { class: "gallery-controls" };
41493const _hoisted_2$E = { class: "gallery-controls-wrapper" };
41494const _hoisted_3$y = { class: "swiper-button-next-wrapper" };
41495const _hoisted_4$o = {
41496  ref: "next",
41497  class: "swiper-button-next"
41498};
41499const _hoisted_5$g = { class: "swiper-button-prev-wrapper" };
41500const _hoisted_6$d = {
41501  ref: "prev",
41502  class: "swiper-button-prev"
41503};
41504function _sfc_render$P(_ctx, _cache, $props, $setup, $data, $options) {
41505  const _component_swiper = resolveComponent("swiper");
41506  return openBlock(), createElementBlock("div", {
41507    class: normalizeClass(["image-gallery", {
41508      "-alternate-style": $props.alternateStyle,
41509      "-hero-style": $props.heroStyle,
41510      "columns-style": $props.columnsStyle
41511    }])
41512  }, [
41513    createBaseVNode("div", _hoisted_1$O, [
41514      createBaseVNode("div", _hoisted_2$E, [
41515        createBaseVNode("div", _hoisted_3$y, [
41516          createBaseVNode("button", _hoisted_4$o, null, 512)
41517        ]),
41518        createBaseVNode("div", _hoisted_5$g, [
41519          createBaseVNode("button", _hoisted_6$d, null, 512)
41520        ])
41521      ])
41522    ]),
41523    $data.loaded && !$data.reinit ? (openBlock(), createBlock(_component_swiper, {
41524      key: 0,
41525      modules: $data.modules,
41526      "space-between": 50,
41527      navigation: $options.navOptions,
41528      keyboard: { enabled: true },
41529      effect: $options.swiperEffect,
41530      breakpoints: $options.breakPoints,
41531      "slides-per-view": 1,
41532      autoplay: $options.autoplayOptions,
41533      speed: $props.transitionTime,
41534      threshold: 2,
41535      onSwiper: $options.onSwiperReady
41536    }, {
41537      default: withCtx(() => [
41538        renderSlot(_ctx.$slots, "default")
41539      ]),
41540      _: 3
41541    }, 8, ["modules", "navigation", "effect", "breakpoints", "autoplay", "speed", "onSwiper"])) : createCommentVNode("", true)
41542  ], 2);
41543}
41544const ImageGallery = /* @__PURE__ */ _export_sfc(_sfc_main$P, [["render", _sfc_render$P]]);
41545const _sfc_main$O = {
41546  name: "InfoBox",
41547  // components: {},
41548  props: {
41549    headline: {
41550      type: String,
41551      default: ""
41552    },
41553    text: {
41554      type: String,
41555      default: ""
41556    },
41557    imageSrc: {
41558      type: String,
41559      default: ""
41560    },
41561    imageAlt: {
41562      type: String,
41563      default: ""
41564    }
41565  }
41566  // data() {
41567  //   return {};
41568  // },
41569  // computed: {},
41570  // methods: {},
41571  // watch() {},
41572  // Livecycle hooks
41573  // created() {},
41574  // mounted() {},
41575  // updated() {},
41576  // beforeDestroy() {},
41577};
41578const _hoisted_1$N = { class: "info-box" };
41579const _hoisted_2$D = { class: "body-wrapper" };
41580const _hoisted_3$x = { class: "ib-headline" };
41581function _sfc_render$O(_ctx, _cache, $props, $setup, $data, $options) {
41582  return openBlock(), createElementBlock("div", _hoisted_1$N, [
41583    createBaseVNode("div", _hoisted_2$D, [
41584      createBaseVNode("h3", _hoisted_3$x, toDisplayString$1($props.headline), 1),
41585      createBaseVNode("p", null, toDisplayString$1($props.text), 1),
41586      _cache[0] || (_cache[0] = createBaseVNode("p", null, [
41587        createBaseVNode("a", { href: "#" }, "Link to further info")
41588      ], -1))
41589    ])
41590  ]);
41591}
41592const InfoBox = /* @__PURE__ */ _export_sfc(_sfc_main$O, [["render", _sfc_render$O]]);
41593const _sfc_main$N = {
41594  name: "TeaserQuote",
41595  // components: {},
41596  props: {
41597    teaserQuote: {
41598      type: String,
41599      default: ""
41600    },
41601    quoteAuthor: {
41602      type: String,
41603      default: ""
41604    },
41605    imgSrc: {
41606      type: String,
41607      default: ""
41608    },
41609    link: {
41610      type: String,
41611      default: ""
41612    }
41613  }
41614  // data() {
41615  //   return {};
41616  // },
41617  // computed: {},
41618  // watch: {},
41619  // Livecycle hooks
41620  // created() {},
41621  // mounted() {},
41622  // updated() {},
41623  // beforeDestroy() {},
41624  // methods: {},
41625};
41626const _hoisted_1$M = {
41627  class: "teaser-quote",
41628  "aria-label": "Zitat"
41629};
41630const _hoisted_2$C = ["src"];
41631const _hoisted_3$w = {
41632  key: 0,
41633  href: "#"
41634};
41635function _sfc_render$N(_ctx, _cache, $props, $setup, $data, $options) {
41636  return openBlock(), createElementBlock("div", _hoisted_1$M, [
41637    createBaseVNode("img", {
41638      src: $props.imgSrc,
41639      loading: "lazy",
41640      role: "decoration"
41641    }, null, 8, _hoisted_2$C),
41642    createBaseVNode("figure", null, [
41643      createBaseVNode("blockquote", null, toDisplayString$1($props.teaserQuote), 1),
41644      createBaseVNode("figcaption", null, toDisplayString$1($props.quoteAuthor), 1),
41645      $props.link ? (openBlock(), createElementBlock("a", _hoisted_3$w, "Zur Mediathek")) : createCommentVNode("", true)
41646    ])
41647  ]);
41648}
41649const TeaserQuote = /* @__PURE__ */ _export_sfc(_sfc_main$N, [["render", _sfc_render$N]]);
41650const _sfc_main$M = {
41651  name: "TeaserMonoBlock",
41652  components: {}
41653  // props: {},
41654  // data() {
41655  //   return {};
41656  // },
41657  // computed: {},
41658  // methods: {},
41659  // watch() {},
41660  // Livecycle hooks
41661  // created() {},
41662  // mounted() {},
41663  // updated() {},
41664  // beforeDestroy() {},
41665};
41666const _hoisted_1$L = { class: "teaser-mono-block row" };
41667const _hoisted_2$B = { class: "columns medium-9 medium-push-2" };
41668function _sfc_render$M(_ctx, _cache, $props, $setup, $data, $options) {
41669  return openBlock(), createElementBlock("div", _hoisted_1$L, [
41670    createBaseVNode("div", _hoisted_2$B, [
41671      renderSlot(_ctx.$slots, "default")
41672    ])
41673  ]);
41674}
41675const TeaserMonoBlock = /* @__PURE__ */ _export_sfc(_sfc_main$M, [["render", _sfc_render$M]]);
41676const _sfc_main$L = {
41677  name: "TeaserDuoBlock",
41678  components: {}
41679  // props: {},
41680  // data() {
41681  //   return {};
41682  // },
41683  // computed: {},
41684  // methods: {},
41685  // watch() {},
41686  // Livecycle hooks
41687  // created() {},
41688  // mounted() {},
41689  // updated() {},
41690  // beforeDestroy() {},
41691};
41692const _hoisted_1$K = { class: "teaser-duo-block row equalize-medium" };
41693const _hoisted_2$A = { class: "columns medium-7 teaser-1" };
41694const _hoisted_3$v = { class: "columns medium-3 medium-push-1 teaser-2" };
41695function _sfc_render$L(_ctx, _cache, $props, $setup, $data, $options) {
41696  return openBlock(), createElementBlock("div", _hoisted_1$K, [
41697    createBaseVNode("div", _hoisted_2$A, [
41698      renderSlot(_ctx.$slots, "teaser1")
41699    ]),
41700    createBaseVNode("div", _hoisted_3$v, [
41701      renderSlot(_ctx.$slots, "teaser2")
41702    ])
41703  ]);
41704}
41705const TeaserDuoBlock = /* @__PURE__ */ _export_sfc(_sfc_main$L, [["render", _sfc_render$L]]);
41706const _sfc_main$K = {
41707  name: "TeaserColorBlock",
41708  components: {}
41709  // props: {},
41710  // data() {
41711  //   return {};
41712  // },
41713  // computed: {},
41714  // methods: {},
41715  // watch() {},
41716  // Livecycle hooks
41717  // created() {},
41718  // mounted() {},
41719  // updated() {},
41720  // beforeDestroy() {},
41721};
41722const _hoisted_1$J = { class: "content-block teaser-color-block row" };
41723const _hoisted_2$z = { class: "columns large-6" };
41724const _hoisted_3$u = { class: "columns large-6" };
41725const _hoisted_4$n = { class: "columns large-6" };
41726const _hoisted_5$f = { class: "columns large-6" };
41727const _hoisted_6$c = { class: "columns large-6" };
41728const _hoisted_7$c = { class: "columns large-6" };
41729function _sfc_render$K(_ctx, _cache, $props, $setup, $data, $options) {
41730  return openBlock(), createElementBlock("div", _hoisted_1$J, [
41731    createBaseVNode("div", _hoisted_2$z, [
41732      renderSlot(_ctx.$slots, "teaserMustard")
41733    ]),
41734    createBaseVNode("div", _hoisted_3$u, [
41735      renderSlot(_ctx.$slots, "teaserBlue")
41736    ]),
41737    createBaseVNode("div", _hoisted_4$n, [
41738      renderSlot(_ctx.$slots, "teaserOrange")
41739    ]),
41740    createBaseVNode("div", _hoisted_5$f, [
41741      renderSlot(_ctx.$slots, "teaserPaleblue")
41742    ]),
41743    createBaseVNode("div", _hoisted_6$c, [
41744      renderSlot(_ctx.$slots, "teaserLavender")
41745    ]),
41746    createBaseVNode("div", _hoisted_7$c, [
41747      renderSlot(_ctx.$slots, "teaserOrchid")
41748    ])
41749  ]);
41750}
41751const TeaserColorBlock = /* @__PURE__ */ _export_sfc(_sfc_main$K, [["render", _sfc_render$K]]);
41752const _sfc_main$J = {
41753  name: "TeaserHeroBlock"
41754  // components: {},
41755  // props: {},
41756  // data() {
41757  //   return {};
41758  // },
41759  // computed: {},
41760  // methods: {},
41761  // watch() {},
41762  // Livecycle hooks
41763  // created() {},
41764  // mounted() {},
41765  // updated() {},
41766  // beforeDestroy() {},
41767};
41768const _hoisted_1$I = { class: "teaser-hero-block" };
41769function _sfc_render$J(_ctx, _cache, $props, $setup, $data, $options) {
41770  return openBlock(), createElementBlock("div", _hoisted_1$I, [
41771    renderSlot(_ctx.$slots, "default")
41772  ]);
41773}
41774const TeaserHeroBlock = /* @__PURE__ */ _export_sfc(_sfc_main$J, [["render", _sfc_render$J]]);
41775const _sfc_main$I = {
41776  name: "LangSearchNavigation"
41777  // components: {},
41778  // props: {},
41779  // data() {},
41780  // computed() {},
41781  // methods: { },
41782  // watch() {},
41783  // Livecycle hooks
41784  // created() {},
41785  // mounted() {},
41786  // updated() {},
41787  // beforeDestroy() {},
41788};
41789const _hoisted_1$H = {
41790  class: "lang-search-nav",
41791  "aria-label": "Sprachmenü und Suche"
41792};
41793const _hoisted_2$y = {
41794  class: "icon-easy-to-read",
41795  href: "/"
41796};
41797const _hoisted_3$t = {
41798  class: "icon-sign-language",
41799  href: "/"
41800};
41801const _hoisted_4$m = {
41802  class: "link-search icon-search",
41803  href: "/"
41804};
41805function _sfc_render$I(_ctx, _cache, $props, $setup, $data, $options) {
41806  return openBlock(), createElementBlock("section", _hoisted_1$H, [
41807    createBaseVNode("a", _hoisted_2$y, toDisplayString$1(_ctx.$t("menu.langSearchNav.easyToRead")), 1),
41808    createBaseVNode("a", _hoisted_3$t, toDisplayString$1(_ctx.$t("menu.langSearchNav.signLanguage")), 1
41808),
41809    _cache[0] || (_cache[0] = createStaticVNode('<div class="lang-nav"><a href="/" class="active">DE</a><a href="/">FR</a><a href="/">EN</a><a href="/">RU</a></div>', 1)),
41810    createBaseVNode("a", _hoisted_4$m, toDisplayString$1(_ctx.$t("menu.langSearchNav.search")), 1)
41811  ]);
41812}
41813const LangSearchNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$I, [["render", _sfc_render$I]]);
41814const _sfc_main$H = {
41815  name: "SoMeFollow",
41816  // components: {},
41817  props: {
41818    datenschutzUrl: {
41819      type: String,
41820      required: true
41821    },
41822    urlTwitter: {
41823      type: String,
41824      default: null
41825    },
41826    urlFacebook: {
41827      type: String,
41828      default: null
41829    },
41830    urlInstagram: {
41831      type: String,
41832      default: null
41833    },
41834    urlYoutube: {
41835      type: String,
41836      default: null
41837    },
41838    newsletterActive: {
41839      type: Boolean,
41840      default: true
41841    },
41842    newsletterOptInConfirmText: {
41843      type: String,
41844      default: "Bitte hier akzeptieren."
41845    }
41846  },
41847  data() {
41848    return {
41849      optInChecked: false,
41850      mailInputErrorActive: false,
41851      newsletterMail: "",
41852      newsletterSignOnSent: false
41853    };
41854  },
41855  computed: {
41856    hasButtons() {
41857      return !!(this.urlFacebook || this.urlInstagram || this.urlTwitter || this.urlYoutube);
41858    }
41859  },
41860  methods: {
41861    submitNewsletterSignOn() {
41862      if (!this.isValidNewsletterMail()) {
41863        return;
41864      }
41865      const options2 = {
41866        method: "POST",
41867        headers: {
41868          accept: "application/json",
41869          "content-type": "application/json",
41870          "api-key": void 0
41871        },
41872        body: JSON.stringify({
41873          updateEnabled: false,
41874          email: this.newsletterMail
41875        })
41876      };
41877      fetch("https://api.sendinblue.com/v3/contacts", options2).then((response) => response.json()).then((response) => {
41878        if (200 === response.status) {
41879          this.newsletterMail = "";
41880          this.newsletterSignOnSent = true;
41881        }
41882      }).catch((err) => {
41883        console.error(err);
41884      });
41885    },
41886    isValidNewsletterMail() {
41887      if (this.newsletterMail && "" !== this.newsletterMail.trim().replace(" ", "") && // eslint-disable-next-line
41888      /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(this.newsletterMail)) {
41889        this.mailInputErrorActive = false;
41890        this.newsletterMail = "";
41891        return true;
41892      }
41893      this.mailInputErrorActive = true;
41894      return false;
41895    }
41896  }
41897  // watch() {},
41898  // Livecycle hooks
41899  // created() {},
41900  // mounted() {},
41901  // updated() {},
41902  // beforeDestroy() {},
41903};
41904const _hoisted_1$G = { class: "so-me-follow" };
41905const _hoisted_2$x = {
41906  key: 0,
41907  class: "social-wrapper"
41908};
41909const _hoisted_3$s = { class: "button-group" };
41910const _hoisted_4$l = ["href"];
41911const _hoisted_5$e = ["href"];
41912const _hoisted_6$b = ["href"];
41913const _hoisted_7$b = ["href"];
41914const _hoisted_8$8 = {
41915  key: 1,
41916  class: "nwl-wrapper"
41917};
41918const _hoisted_9$6 = {
41919  key: 0,
41920  class: "success-message-container"
41921};
41922const _hoisted_10$4 = {
41923  key: 1,
41924  class: "nwl-form-container"
41925};
41926const _hoisted_11$4 = {
41927  key: 1,
41928  class: "newsletter-opt-in"
41929};
41930const _hoisted_12$4 = { class: "newsletter-opt-in--info" };
41931const _hoisted_13$4 = { class: "nwl-form-label-container" };
41932const _hoisted_14$4 = { class: "nwl-mail-error" };
41933const _hoisted_15$3 = { class: "so-me-disclaimer" };
41934const _hoisted_16$3 = ["href"];
41935function _sfc_render$H(_ctx, _cache, $props, $setup, $data, $options) {
41936  return openBlock(), createElementBlock("div", _hoisted_1$G, [
41937    $options.hasButtons ? (openBlock(), createElementBlock("div", _hoisted_2$x, [
41938      _cache[4] || (_cache[4] = createBaseVNode("h2", { class: "so-me-title" }, " Folgen sie uns ", -1)),
41939      createBaseVNode("div", _hoisted_3$s, [
41940        $props.urlTwitter ? (openBlock(), createElementBlock("a", {
41941          key: 0,
41942          class: "link-button",
41943          href: $props.urlTwitter
41944        }, " Twitter ", 8, _hoisted_4$l)) : createCommentVNode("", true),
41945        $props.urlFacebook ? (openBlock(), createElementBlock("a", {
41946          key: 1,
41947          class: "link-button",
41948          href: $props.urlFacebook
41949        }, " Facebook ", 8, _hoisted_5$e)) : createCommentVNode("", true),
41950        $props.urlInstagram ? (openBlock(), createElementBlock("a", {
41951          key: 2,
41952          class: "link-button",
41953          href: $props.urlInstagram
41954        }, " Instagram ", 8, _hoisted_6$b)) : createCommentVNode("", true),
41955        $props.urlYoutube ? (openBlock(), createElementBlock("a", {
41956          key: 3,
41957          class: "link-button",
41958          href: $props.urlYoutube
41959        }, " Youtube ", 8, _hoisted_7$b)) : createCommentVNode("", true)
41960      ])
41961    ])) : createCommentVNode("", true),
41962    $props.newsletterActive ? (openBlock(), createElementBlock("div", _hoisted_8$8, [
41963      _cache[6] || (_cache[6] = createBaseVNode("h2", { class: "so-me-title" }, " Newsletter ", -1)),
41964      $data.newsletterSignOnSent ? (openBlock(), createElementBlock("div", _hoisted_9$6, _cache[5] || (_cache[5] = [
41965        createBaseVNode("p", null, " Danke für ihre Anmeldung. ", -1)
41966      ]))) : (openBlock(), createElementBlock("div", _hoisted_10$4, [
41967        withDirectives(createBaseVNode("input", {
41968          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.newsletterMail = $event),
41969          type: "text",
41970          class: normalizeClass(["nwls-text", $data.mailInputErrorActive ? "error-active" : ""]),
41971          placeholder: "E-Mail-Adresse eingeben",
41972          onKeyup: _cache[1] || (_cache[1] = ($event) => $data.mailInputErrorActive = false)
41973        }, null, 34), [
41974          [vModelText, $data.newsletterMail]
41975        ]),
41976        $data.optInChecked ? (openBlock(), createElementBlock("p", {
41977          key: 0,
41978          class: "nwls-btn",
41979          onClick: _cache[2] || (_cache[2] = ($event) => $options.submitNewsletterSignOn())
41980        }, " Anmelden ")) : (openBlock(), createElementBlock("div", _hoisted_11$4, [
41981          createBaseVNode("p", _hoisted_12$4, toDisplayString$1($props.newsletterOptInConfirmText), 1),
41982          withDirectives(createBaseVNode("input", {
41983            id: "newsletterOptInCheckbox",
41984            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.optInChecked = $event),
41985            type: "checkbox",
41986            name: "newsletterOptInCheckbox"
41987          }, null, 512), [
41988            [vModelCheckbox, $data.optInChecked]
41989          ])
41990        ]))
41991      ])),
41992      createBaseVNode("div", _hoisted_13$4, [
41993        withDirectives(createBaseVNode("p", _hoisted_14$4, " Überprüfen Sie die Eingabe ", 512), [
41994          [vShow, $data.mailInputErrorActive]
41995        ]),
41996        createBaseVNode("p", _hoisted_15$3, [
41997          createBaseVNode("a", { href: $props.datenschutzUrl }, "Datenschutzerklärung", 8, _hoisted_16$3)
41998        ])
41999      ])
42000    ])) : createCommentVNode("", true)
42001  ]);
42002}
42003const SoMeFollow = /* @__PURE__ */ _export_sfc(_sfc_main$H, [["render", _sfc_render$H]]);
42004const _sfc_main$G = {
42005  name: "TextImage",
42006  // components: {},
42007  props: {
42008    headline: {
42009      type: String,
42010      default: null
42011    },
42012    category: {
42013      type: String,
42014      default: null
42015    }
42016  }
42017  // data() {
42018  //   return {};
42019  // },
42020  // computed: {},
42021  // watch: {},
42022  // Livecycle hooks
42023  // created() {},
42024  // mounted() {},
42025  // updated() {},
42026  // beforeUnmount() {},
42027  // methods: {},
42028};
42029const _hoisted_1$F = { class: "text-image row" };
42030const _hoisted_2$w = { class: "columns medium-5 large-4" };
42031const _hoisted_3$r = { class: "columns medium-7 large-6" };
42032const _hoisted_4$k = { class: "header" };
42033const _hoisted_5$d = {
42034  key: 0,
42035  class: "headline"
42036};
42037const _hoisted_6$a = {
42038  key: 1,
42039  class: "category"
42040};
42041const _hoisted_7$a = { class: "richtext-wrapper -small" };
42042const _hoisted_8$7 = { class: "button-group" };
42043function _sfc_render$G(_ctx, _cache, $props, $setup, $data, $options) {
42044  return openBlock(), createElementBlock("div", _hoisted_1$F, [
42045    createBaseVNode("div", _hoisted_2$w, [
42046      renderSlot(_ctx.$slots, "image")
42047    ]),
42048    createBaseVNode("div", _hoisted_3$r, [
42049      createBaseVNode("div", _hoisted_4$k, [
42050        $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_5$d, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true),
42051        $props.category ? (openBlock(), createElementBlock("p", _hoisted_6$a, toDisplayString$1($props.category), 1)) : createCommentVNode("", true)
42052      ]),
42053      createBaseVNode("div", _hoisted_7$a, [
42054        renderSlot(_ctx.$slots, "default")
42055      ]),
42056      createBaseVNode("div", _hoisted_8$7, [
42057        renderSlot(_ctx.$slots, "buttons")
42058      ])
42059    ])
42060  ]);
42061}
42062const TextImage = /* @__PURE__ */ _export_sfc(_sfc_main$G, [["render", _sfc_render$G]]);
42063const _sfc_main$F = {
42064  name: "TextImageEasyLanguage"
42065  // components: {},
42066  //props: {},
42067  // data() {
42068  //   return {};
42069  // },
42070  // computed: {},
42071  // watch: {},
42072  // Livecycle hooks
42073  // created() {},
42074  // mounted() {},
42075  // updated() {},
42076  // beforeUnmount() {},
42077  // methods: {},
42078};
42079const _hoisted_1$E = { class: "text-image-easy-language row" };
42080const _hoisted_2$v = { class: "columns medium-5 large-4" };
42081const _hoisted_3$q = { class: "columns medium-7 large-6" };
42082const _hoisted_4$j = { class: "richtext-wrapper" };
42083function _sfc_render$F(_ctx, _cache, $props, $setup, $data, $options) {
42084  return openBlock(), createElementBlock("div", _hoisted_1$E, [
42085    createBaseVNode("div", _hoisted_2$v, [
42086      renderSlot(_ctx.$slots, "image")
42087    ]),
42088    createBaseVNode("div", _hoisted_3$q, [
42089      createBaseVNode("div", _hoisted_4$j, [
42090        renderSlot(_ctx.$slots, "default")
42091      ])
42092    ])
42093  ]);
42094}
42095const TextImageEasyLanguage = /* @__PURE__ */ _export_sfc(_sfc_main$F, [["render", _sfc_render$F]]);
42096const _sfc_main$E = {
42097  name: "TextImageList"
42098  // components: {},
42099  // props: {},
42100  // data() {
42101  //   return {};
42102  // },
42103  // computed: {},
42104  // watch: {},
42105  // Livecycle hooks
42106  // created() {},
42107  // mounted() {},
42108  // updated() {},
42109  // beforeUnmount() {},
42110  // methods: {},
42111};
42112const _hoisted_1$D = { class: "text-image-list" };
42113function _sfc_render$E(_ctx, _cache, $props, $setup, $data, $options) {
42114  return openBlock(), createElementBlock("div", _hoisted_1$D, [
42115    renderSlot(_ctx.$slots, "default")
42116  ]);
42117}
42118const TextImageList = /* @__PURE__ */ _export_sfc(_sfc_main$E, [["render", _sfc_render$E]]);
42119const _sfc_main$D = {
42120  name: "VisitNavigation",
42121  // components: {},
42122  props: {
42123    visitNavItems: {
42124      type: Array,
42125      required: true,
42126      default: () => []
42127    }
42128  },
42129  data() {
42130    return {
42131      isOpenVisitNav: false
42132    };
42133  },
42134  computed: {
42135    ...mapGetters(ENVIRONMENT_TYPES.NAME, {
42136      isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET,
42137      isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE
42138    }),
42139    belowBreakpoint() {
42140      return this.isMobile || this.isTablet;
42141    }
42142  },
42143  methods: {
42144    toggleVisitNav() {
42145      this.isOpenVisitNav = !this.isOpenVisitNav;
42146      this.$nextTick(() => {
42147        if (this.isOpenVisitNav) {
42148          if (this.$refs.linkList.children.length > 0) {
42149            this.$refs.linkList.children[0].focus();
42150          }
42151        } else {
42152          this.$refs.visitNavToggle.focus();
42153        }
42154      });
42155    },
42156    handleEsc() {
42157      if (this.isOpenVisitNav) {
42158        this.toggleVisitNav();
42159      }
42160    },
42161    handleFirstItem(index2, event) {
42162      if (index2 === 0) {
42163        event.preventDefault();
42164        this.handleEsc();
42165      }
42166    },
42167    handleLastItem() {
42168      this.handleEsc();
42169    }
42170  }
42171  // watch() {},
42172  // Livecycle hooks
42173  // created() {},
42174  // mounted() {},
42175  // updated() {},
42176  // beforeDestroy() {},
42177};
42178const _hoisted_1$C = {
42179  id: "visit_nav_label",
42180  class: "visually-hidden",
42181  "aria-hidden": "true"
42182};
42183const _hoisted_2$u = {
42184  ref: "linkList",
42185  class: "visit-nav"
42186};
42187const _hoisted_3$p = ["onKeydown"];
42188const _hoisted_4$i = ["aria-expanded"];
42189const _hoisted_5$c = {
42190  id: "visit_nav_toggle_label",
42191  class: "visually-hidden",
42192  "aria-hidden": "true"
42193};
42194function _sfc_render$D(_ctx, _cache, $props, $setup, $data, $options) {
42195  return openBlock(), createElementBlock("nav", {
42196    class: normalizeClass(["visit-navigation", {
42197      "is-open": $data.isOpenVisitNav
42198    }]),
42199    "aria-labelledby": "visit_nav_label",
42200    onKeyup: _cache[2] || (_cache[2] = withKeys((...args) => $options.handleEsc && $options.handleEsc(...args), ["esc"]))
42201  }, [
42202    createBaseVNode("span", _hoisted_1$C, toDisplayString$1(_ctx.$t("menu.visitNav.label")), 1),
42203    createBaseVNode("div", _hoisted_2$u, [
42204      (openBlock(true), createElementBlock(Fragment, null, renderList($props.visitNavItems, (item, index2) => {
42205        return openBlock(), createElementBlock("a", {
42206          key: item.id,
42207          ref_for: true,
42208          ref: "visitNavItem",
42209          class: "icon-link-extern",
42210          href: "item.url",
42211          onKeydown: withKeys(withModifiers(($event) => $options.handleFirstItem(index2, $event), ["shift"]), ["tab"])
42212        }, toDisplayString$1(item.name), 41, _hoisted_3$p);
42213      }), 128)),
42214      renderSlot(_ctx.$slots, "default")
42215    ], 512),
42216    $options.belowBreakpoint ? (openBlock(), createElementBlock("button", {
42217      key: 0,
42218      ref: "visitNavToggle",
42219      class: "visit-nav-toggle icon-dach",
42220      "aria-expanded": $data.isOpenVisitNav,
42221      "aria-labelledby": "visit_nav_toggle_label",
42222      onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleVisitNav && $options.toggleVisitNav(...args)),
42223      onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => $options.handleLastItem(), ["exact"]), ["tab"]))
42224    }, [
42225      createBaseVNode("span", _hoisted_5$c, toDisplayString$1(_ctx.$t("menu.visitNav.label")) + " " + toDisplayString$1($data.isOpenVisitNav ? _ctx.$t("menu.toggle.label.off") : _ctx.$t("menu.toggle.label.on")), 1)
42226    ], 40, _hoisted_4$i)) : createCommentVNode("", true)
42227  ], 34);
42228}
42229const VisitNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$D, [["render", _sfc_render$D]]);
42230const _sfc_main$C = {
42231  name: "MainFooter"
42232};
42233const _hoisted_1$B = { class: "main-footer" };
42234function _sfc_render$C(_ctx, _cache, $props, $setup, $data, $options) {
42235  return openBlock(), createElementBlock("footer", _hoisted_1$B, _cache[0] || (_cache[0] = [
42236    createStaticVNode('<nav aria-label="Footer Navigation"><div class="footer-row"><div class="f-link-container"><a href="#" class="f-menu-home-btn"> Home </a><h2 class="footer-title"> Besuch </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div><div class="f-link-container"><h2 class="footer-title"> Museum </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div><div class="f-link-container"><h2 class="footer-title"> Vermittlung </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div><div class="f-link-container"><h2 class="footer-title"> Netzwerk </h2><a href="#">Ausstellung</a><a href="#">Veranstaltungen</a><a href="#">Angebote und Führungen</a><a href="#">Digitales Museum</a><a href="#">Mediathek</a></div></div><div class="footer-row line-skip"><div class="f-link-container"><a href="#" class="footer-title"> Glossar </a></div><div class="f-link-container"><a href="#" class="footer-title"> Newsroom </a></div><div class="f-link-container"><a href="#" class="footer-title"> Ansprechpartner:innen </a><a href="#" class="footer-title"> Stellenangebote </a></div><div class="f-link-container"><a href="#" class="footer-title"> Spenden </a><a href="#" class="footer-title"> Engagement </a></div></div></nav><div class="footer-row"><div class="f-link-container"><h2 class="footer-title"> Kontakt </h2><p class="line-skip"> Museum <br> Zwangsarbeit im Nationalsozialismus <br> Musterstraße 12 <br> 12345 Weimar </p><p> T +49 12 234567 12 <br><a href="mailto:[email protected]" class="mail">[email protected]</a></p></div><div class="f-link-container"><h2 class="footer-title"> Öffnungszeiten </h2><p>
42236 Dienstag bis Sonntag 10 Uhr bis 18 Uhr <br> Montag geschlossen </p></div><div class="f-link-container"><h2 class="footer-title"> Weitere Hinweise </h2><a href="#">Datenschutz</a><a href="#">Impressum</a><a href="#">Erklärung zur Barrierefreiheit</a></div><div class="f-link-container"><h2 class="footer-title"> Dem Museum folgen </h2><a href="#">Twitter</a><a href="#">Instagram</a><a class="line-skip" href="#">Facebook</a><a href="#">Newsletter</a></div></div>', 2)
42237  ]));
42238}
42239const MainFooter = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$C]]);
42240const _sfc_main$B = {
42241  name: "GlossaryBlock",
42242  components: {},
42243  props: {
42244    letters: {
42245      type: Array,
42246      required: true,
42247      default: () => [
42248        "A",
42249        "B",
42250        "C",
42251        "D",
42252        "E",
42253        "F",
42254        "G",
42255        "H",
42256        "I",
42257        "J",
42258        "K",
42259        "L",
42260        "M",
42261        "N",
42262        "O",
42263        "P",
42264        "Q",
42265        "R",
42266        "S",
42267        "T",
42268        "U",
42269        "V",
42270        "W",
42271        "X",
42272        "Y",
42273        "Z"
42274      ]
42275    },
42276    glossaryTerms: {
42277      type: Array,
42278      required: true,
42279      default: () => []
42280    },
42281    initialItem: {
42282      type: String,
42283      default: null
42284    }
42285  },
42286  data() {
42287    return {
42288      selectedTerm: null,
42289      isOpenDescription: false
42290    };
42291  },
42292  computed: {
42293    ...mapState(ENVIRONMENT_TYPES.NAME, {
42294      siteName: ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME
42295    }),
42296    /** only show items assigned to current site or not assign to a specific site */
42297    siteList() {
42298      if (empty(this.glossaryTerms)) return [];
42299      if (empty(this.siteName)) return this.glossaryTerms;
42300      return this.glossaryTerms.filter((entry) => {
42301        if (empty(entry.useForSite)) return true;
42302        if (entry.useForSite.indexOf(this.siteName) >= 0) return true;
42303        return false;
42304      });
42305    },
42306    /** convert flat unsorted term list to sorted list per letter */
42307    sortedList() {
42308      if (empty(this.siteList)) return [];
42309      const list = [];
42310      this.letters.forEach((letter) => {
42311        const collect = {
42312          letter,
42313          terms: []
42314        };
42315        collect.terms = this.siteList.filter((term) => {
42316          if (empty(term.title)) return false;
42317          let title = term.title.toLowerCase();
42318          title = title.replace(/\u00e4/g, "a").replace(/\u00f6/g, "o").replace(/\u00fc/g, "u");
42319          return title[0] === letter.toLowerCase();
42320        });
42321        if (collect.terms.length > 0) {
42322          collect.terms.sort((a, b) => a.title > b.title ? 1 : b.title > a.title ? -1 : 0);
42323          list.push(collect);
42324        }
42325      });
42326      return list;
42327    }
42328  },
42329  // Livecycle hooks
42330  // created() {},
42331  mounted() {
42332    if (!empty(this.initialItem)) {
42333      this.toggleDescription(this.initialItem, true);
42334    }
42335    this.$window.onpopstate = this.onPopState;
42336  },
42337  beforeUnmount() {
42338    this.$window.onpopstate = null;
42339  },
42340  // updated() {},
42341  // beforeDestroy() {},
42342  methods: {
42343    onPopState(e) {
42344      if (empty(e.state) || empty(e.state.id)) {
42345        if (!empty(this.selectedTerm)) {
42346          this.toggleDescription(this.selectedTerm, true);
42347        }
42348      } else {
42349        this.toggleDescription(e.state.id, true);
42350      }
42351    },
42352    toggleDescription(id, initial = false) {
42353      const urlPath = window.location.pathname;
42354      if (this.selectedTerm == id) {
42355        const newPath = urlPath.replace(`/${this.selectedTerm}`, "");
42356        this.isOpenDescription = false;
42357        this.selectedTerm = null;
42358        if (!initial) {
42359          history.pushState({ id: null }, null, newPath);
42360        }
42361      } else {
42362        const newPath = empty(this.selectedTerm) ? `${urlPath}/${id}` : urlPath.replace(`/${this.selectedTerm}`, `/${id}`);
42363        this.selectedTerm = id;
42364        this.isOpenDescription = true;
42365        if (!initial) {
42366          history.pushState({ id: this.selectedTerm }, null, newPath);
42367        }
42368      }
42369    },
42370    hasTerms(letter) {
42371      let found = this.sortedList.findIndex(function(item) {
42372        if (item.letter == letter) return true;
42373      });
42374      if (found != -1) return true;
42375      else return false;
42376    }
42377  }
42378  // watch() {},
42379};
42380const _hoisted_1$A = { class: "glossary-block" };
42381const _hoisted_2$t = { class: "alphabet-wrapper" };
42382const _hoisted_3$o = {
42383  class: "alphabet",
42384  "aria-label": "Buchstaben Liste"
42385};
42386const _hoisted_4$h = ["href", "aria-disabled"];
42387const _hoisted_5$b = { class: "glossary-wrapper" };
42388const _hoisted_6$9 = {
42389  class: "glossary-terms",
42390  "aria-label": "Glossar Begriffe"
42391};
42392const _hoisted_7$9 = ["id"];
42393const _hoisted_8$6 = { class: "terms" };
42394const _hoisted_9$5 = ["aria-expanded"];
42395const _hoisted_10$3 = ["onClick"];
42396const _hoisted_11$3 = { key: 0 };
42397const _hoisted_12$3 = { class: "term-wrapper" };
42398const _hoisted_13$3 = ["innerHTML"];
42399const _hoisted_14$3 = ["onClick"];
42400function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
42401  return openBlock(), createElementBlock("div", _hoisted_1$A, [
42402    createBaseVNode("div", _hoisted_2$t, [
42403      createBaseVNode("ol", _hoisted_3$o, [
42404        (openBlock(true), createElementBlock(Fragment, null, renderList($props.letters, (letter) => {
42405          return openBlock(), createElementBlock("li", { key: letter }, [
42406            createBaseVNode("a", {
42407              class: normalizeClass($options.hasTerms(letter) ? "" : "no-terms"),
42408              href: $options.hasTerms(letter) ? `#letter_${letter}` : "",
42409              "aria-disabled": $options.hasTerms(letter) ? "false" : "true"
42410            }, toDisplayString$1(letter), 11, _hoisted_4$h)
42411          ]);
42412        }), 128))
42413      ])
42414    ]),
42415    createBaseVNode("div", _hoisted_5$b, [
42416      createBaseVNode("dl", _hoisted_6$9, [
42417        (openBlock(true), createElementBlock(Fragment, null, renderList($options.sortedList, (item) => {
42418          return openBlock(), createElementBlock("div", {
42419            key: item.letter,
42420            class: "letter-section"
42421          }, [
42422            createBaseVNode("div", {
42423              id: `letter_${item.letter}`,
42424              class: "letter"
42425            }, toDisplayString$1(item.letter), 9, _hoisted_7$9),
42426            createBaseVNode("div", _hoisted_8$6, [
42427              (openBlock(true), createElementBlock(Fragment, null, renderList(item.terms, (term, index2) => {
42428                return openBlock(), createElementBlock("div", {
42429                  key: item.letter + index2,
42430                  class: normalizeClass([{
42431                    "active": $data.selectedTerm == term["@name"]
42432                  }, "term"]),
42433                  "aria-expanded": $data.selectedTerm == term["@name"]
42434                }, [
42435                  createBaseVNode("dt", null, [
42436                    createBaseVNode("button", {
42437                      onClick: ($event) => $options.toggleDescription(term["@name"])
42438                    }, [
42439                      createBaseVNode("span", null, toDisplayString$1(term.title), 1)
42440                    ], 8, _hoisted_10$3)
42441                  ]),
42442                  $data.isOpenDescription ? (openBlock(), createElementBlock("dd", _hoisted_11$3, [
42443                    createBaseVNode("div", _hoisted_12$3, [
42444                      createBaseVNode("h2", null, toDisplayString$1(term.title), 1),
42445                      createBaseVNode("div", {
42446                        innerHTML: term.text
42447                      }, null, 8, _hoisted_13$3),
42448                      createBaseVNode("button", {
42449                        ref_for: true,
42450                        ref: "btnClose",
42451                        class: "description-close",
42452                        onClick: ($event) => $options.toggleDescription(item.letter + index2)
42453                      }, toDisplayString$1(_ctx.$t("menu.subNav.back")), 9, _hoisted_14$3)
42454                    ])
42455                  ])) : createCommentVNode("", true)
42456                ], 10, _hoisted_9$5);
42457              }), 128))
42458            ])
42459          ]);
42460        }), 128))
42461      ])
42462    ])
42463  ]);
42464}
42465const GlossaryBlock = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$B]]);
42466const _sfc_main$A = {
42467  name: "MapHistoricSites",
42468  components: {
42469    ConsentInline
42470  },
42471  props: {
42472    center: {
42473      type: Object,
42474      required: true
42475    },
42476    zoom: {
42477      type: Number,
42478      default: 12
42479    },
42480    satellite: {
42481      type: Boolean,
42482      default: false
42483    },
42484    showMoreDetails: {
42485      type: Boolean,
42486      default: false
42487    },
42488    filterShowAll: {
42489      type: Boolean,
42490      default: false
42491    },
42492    imageUrl: {
42493      type: String,
42494      default: ""
42495    },
42496    imageBounds: {
42497      type: Object,
42498      default: () => ({})
42499    },
42500    mapMarkerImageTerrain: {
42501      type: String,
42502      default: ""
42503    },
42504    mapMarkerImageSatellite: {
42505      type: String,
42506      default: ""
42507    },
42508    mapClusterImageTerrain: {
42509      type: String,
42510      default: ""
42511    },
42512    mapClusterImageSatellite: {
42513      type: String,
42514      default: ""
42515    },
42516    mapMarkerColor1ImageTerrain: {
42517      type: String,
42518      default: ""
42519    },
42520    mapMarkerColor1ImageSatellite: {
42521      type: String,
42522      default: ""
42523    },
42524    mapClusterColor1ImageTerrain: {
42525      type: String,
42526      default: ""
42527    },
42528    mapClusterColor1ImageSatellite: {
42529      type: String,
42530      default: ""
42531    },
42532    mapMarkerColor2ImageTerrain: {
42533      type: String,
42534      default: ""
42535    },
42536    mapMarkerColor2ImageSatellite: {
42537      type: String,
42538      default: ""
42539    },
42540    mapClusterColor2ImageTerrain: {
42541      type: String,
42542      default: ""
42543    },
42544    mapClusterColor2ImageSatellite: {
42545      type: String,
42546      default: ""
42547    },
42548    mapMarkerColor3ImageTerrain: {
42549      type: String,
42550      default: ""
42551    },
42552    mapMarkerColor3ImageSatellite: {
42553      type: String,
42554      default: ""
42555    },
42556    mapClusterColor3ImageTerrain: {
42557      type: String,
42558      default: ""
42559    },
42560    mapClusterColor3ImageSatellite: {
42561      type: String,
42562      default: ""
42563    },
42564    categories: {
42565      type: Array,
42566      default: () => []
42567    },
42568    markers: {
42569      type: Object,
42570      required: true
42571    },
42572    icon: {
42573      type: String,
42574      default: null
42575    },
42576    categoryOverlays: {
42577      type: Array,
42578      default: () => []
42579    },
42580    shouldBeRendered: {
42581      type: Boolean,
42582      default: true
42583    },
42584    isInsideOverlay: {
42585      type: Boolean,
42586      default: true
42587    }
42588  },
42589  data() {
42590    return {
42591      loaded: false,
42592      singleConsent: false,
42593      filterActive: false,
42594      filterActiveLabel: "",
42595      filterActiveColor: "",
42596      currentMapMarkerImageTerrain: "",
42597      currentMapMarkerImageSatellite: "",
42598      currentMapClusterImageTerrain: "",
42599      currentMapClusterImageSatellite: "",
42600      openedMarkerID: null,
42601      selectedMarker: null,
42602      currentZoom: 10,
42603      hasDefaultOverlay: false,
42604      overlays: [],
42605      mapStyles: [
42606        {
42607          featureType: "transit",
42608          stylers: [
42609            {
42610              visibility: "off"
42611            }
42612          ]
42613        }
42614        /*
42615        // if needed, make all streets gray to provide more contrast to the light gray background
42616        {
42617          featureType: "road",
42618          elementType: "geometry",
42619          stylers: [
42620            {
42621              color: "#d6d6d6",
42622            },
42623          ],
42624        },
42625        */
42626      ],
42627      mapStylesMinimalistic: [
42628        {
42629          featureType: "poi",
42630          stylers: [
42631            {
42632              visibility: "off"
42633            }
42634          ]
42635        },
42636        {
42637          featureType: "transit",
42638          stylers: [
42639            {
42640              visibility: "off"
42641            }
42642          ]
42643        },
42644        {
42645          featureType: "road",
42646          stylers: [
42647            {
42648              visibility: "simplified"
42649            }
42650          ]
42651        },
42652        {
42653          featureType: "road",
42654          elementType: "labels",
42655          stylers: [
42656            {
42657              visibility: "off"
42658            }
42659          ]
42660        },
42661        {
42662          featureType: "administrative.land_parcel",
42663          stylers: [
42664            {
42665              visibility: "off"
42666            }
42667          ]
42668        },
42669        {
42670          featureType: "administrative.neighborhood",
42671          stylers: [
42672            {
42673              visibility: "off"
42674            }
42675          ]
42676        }
42677      ],
42678      showMarkerLabels: true,
42679      showLabelZoom: 15
42680    };
42681  },
42682  computed: {
42683    ...mapGetters(ENVIRONMENT_TYPES.NAME, {
42684      isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET,
42685      isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE,
42686      assetsUrl: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_ASSETS_URL
42687    }),
42688    ...mapState(CONSENT_TYPES.NAME, {
42689      consentGoogleMaps: CONSENT_TYPES.state.CONSENT_GOOGLEMAPS
42690    }),
42691    gestureHandling() {
42692      if (!this.isInsideOverlay && !this.isMobile && !this.isTablet) return "cooperative";
42693      else return "greedy";
42694    },
42695    hasFilter() {
42696      if (this.categories && this.categories.length > 0) {
42697        return true;
42698      }
42699      return false;
42700    },
42701    hasConsent() {
42702      if (this.singleConsent === true) return true;
42703      if (this.consentGoogleMaps === true) return true;
42704      return false;
42705    },
42706    currentMarkers() {
42707      if (this.filterActive) {
42708        return this.markers.filter((item) => {
42709          return item.filter === this.filterActive;
42710        });
42711      }
42712      if (this.loaded) {
42713        return this.markers;
42714      }
42715      return null;
42716    },
42717    mapCenter() {
42718      if (!this.currentMap) return;
42719      return {
42720        lat: this.currentMap.center.lat(),
42721        lng: this.currentMap.center.lng()
42722      };
42723    }
42724  },
42725  watch: {
42726    hasConsent(to) {
42727      if (to === true && this.shouldBeRendered === true) {
42728        this.$nextTick(() => {
42729          this.initGoogleMaps();
42730        });
42731      }
42732    },
42733    shouldBeRendered(to) {
42734      if (to === true && this.hasConsent === true) {
42735        this.$nextTick(() => {
42736          this.initGoogleMaps();
42737        });
42738      }
42739    },
42740    currentZoom(to) {
42741      if (to > this.showLabelZoom) {
42742        this.showMarkerLabels = true;
42743      } else {
42744        this.showMarkerLabels = false;
42745      }
42746    },
42747    selectedMarker(to) {
42748      if (!to || !this.currentMap) return;
42749      else if (to.id) {
42750        this.openMarker(to.id);
42751        this.currentMap.panTo({
42752          lat: to.latitude,
42753          lng: to.longitude
42754        });
42755        this.currentMap.setZoom(17);
42756      } else {
42757        this.setFilter(to);
42758      }
42759    }
42760  },
42761  // Livecycle hooks
42762  // created() {},
42763  mounted() {
42764    this.$nextTick(() => {
42765      this.loaded = true;
42766    });
42767    this.currentZoom = this.zoom;
42768    if (this.hasConsent && this.shouldBeRendered) {
42769      this.initGoogleMaps();
42770    }
42771    if (this.categories && this.categories.length > 0) {
42772      const firstCategoryId = this.categories[0].id;
42773      this.setFilter(firstCategoryId);
42774    }
42775    this.currentMapMarkerImageTerrain = this.mapMarkerImageTerrain;
42776    this.currentMapMarkerImageSatellite = this.mapMarkerImageSatellite;
42777    this.currentMapClusterImageTerrain = this.mapClusterImageTerrain;
42778    this.currentMapClusterImageSatellite = this.mapClusterImageSatellite;
42779    if (this.currentZoom > this.showLabelZoom) {
42780      this.showMarkerLabels = true;
42781    } else {
42782      this.showMarkerLabels = false;
42783    }
42784  },
42785  // updated() {},
42786  // beforeDestroy() {},
42787  methods: {
42788    ...mapMutations(CONSENT_TYPES.NAME, {
42789      consentSetGoogleMaps: CONSENT_TYPES.mutations.CONSENT_SET_GOOGLEMAPS
42790    }),
42791    setAlwaysConsent() {
42792      this.consentSetGoogleMaps({
42793        [CONSENT_TYPES.state.CONSENT_GOOGLEMAPS]: true
42794      });
42795    },
42796    initGoogleMaps() {
42797      this.$refs.mapRef.$mapPromise.then((map) => {
42798        this.currentMap = map;
42799        this.google = window.google;
42800        if (this.imageUrl && this.imageBounds) {
42801          this.initOverlay(this.imageUrl, this.imageBounds, "default");
42802          this.hasDefaultOverlay = true;
42803        }
42804        this.categoryOverlays.forEach((overlay) => {
42805          this.initOverlay(overlay.imageUrl, overlay.imageBounds, overlay.category);
42806        });
42807        this.setOverlay();
42808        window.google.maps.event.addListener(map, "zoom_changed", () => {
42809          this.currentZoom = map.getZoom();
42810        });
42811      });
42812    },
42813    setOverlay() {
42814      let overlay = null;
42815      if (this.filterActive) {
42816        overlay = this.overlays.find((o) => o.id === this.filterActive);
42817      }
42818      if (!overlay && this.hasDefaultOverlay) {
42819        overlay = this.overlays.find((o) => o.id === "default");
42820      }
42821      this.overlays.forEach((overlay2) => {
42822        overlay2.overlay.setMap(null);
42823      });
42824      if (overlay) {
42825        overlay.overlay.setMap(this.currentMap);
42826      }
42827    },
42828    initOverlay(imageUrl, imageBounds, id) {
42829      const overlay = new this.google.maps.GroundOverlay(
42830        imageUrl,
42831        imageBounds,
42832        {
42833          clickable: false
42834        }
42835      );
42836      this.overlays.push({
42837        id,
42838        overlay
42839      });
42840    },
42841    openMarker(id) {
42842      this.openedMarkerID = id;
42843    },
42844    setFilter(id) {
42845      this.selectedMarker = null;
42846      this.openMarker(null);
42847      if (this.currentMap) {
42848        this.currentMap.setZoom(this.zoom);
42849        this.currentMap.panTo(this.mapCenter);
42850      }
42851      this.filterActive = id;
42852      if (id != 0) {
42853        let selectedCategory = this.categories.find((item) => item.id === id);
42854        this.filterActiveLabel = selectedCategory.label;
42855        this.filterActiveColor = selectedCategory.color;
42856        if (this.filterActiveColor == "color1") {
42857          if (this.mapMarkerColor1ImageTerrain) {
42858            this.currentMapMarkerImageTerrain = this.mapMarkerColor1ImageTerrain;
42859          }
42860          if (this.mapMarkerColor1ImageSatellite) {
42861            this.currentMapMarkerImageSatellite = this.mapMarkerColor1ImageSatellite;
42862          }
42863          if (this.mapClusterColor1ImageTerrain) {
42864            this.currentMapClusterImageTerrain = this.mapClusterColor1ImageTerrain;
42865          }
42866          if (this.mapClusterColor1ImageSatellite) {
42867            this.currentMapClusterImageSatellite = this.mapClusterColor1ImageSatellite;
42868          }
42869        }
42870        if (this.filterActiveColor == "color2") {
42871          if (this.mapMarkerColor2ImageTerrain) {
42872            this.currentMapMarkerImageTerrain = this.mapMarkerColor2ImageTerrain;
42873          }
42874          if (this.mapMarkerColor2ImageSatellite) {
42875            this.currentMapMarkerImageSatellite = this.mapMarkerColor2ImageSatellite;
42876          }
42877          if (this.mapClusterColor2ImageTerrain) {
42878            this.currentMapClusterImageTerrain = this.mapClusterColor2ImageTerrain;
42879          }
42880          if (this.mapClusterColor2ImageSatellite) {
42881            this.currentMapClusterImageSatellite = this.mapClusterColor2ImageSatellite;
42882          }
42883        }
42884        if (this.filterActiveColor == "color3") {
42885          if (this.mapMarkerColor3ImageTerrain) {
42886            this.currentMapMarkerImageTerrain = this.mapMarkerColor3ImageTerrain;
42887          }
42888          if (this.mapMarkerColor3ImageSatellite) {
42889            this.currentMapMarkerImageSatellite = this.mapMarkerColor3ImageSatellite;
42890          }
42891          if (this.mapClusterColor3ImageTerrain) {
42892            this.currentMapClusterImageTerrain = this.mapClusterColor3ImageTerrain;
42893          }
42894          if (this.mapClusterColor3ImageSatellite) {
42895            this.currentMapClusterImageSatellite = this.mapClusterColor3ImageSatellite;
42896          }
42897        }
42898        this.setOverlay();
42899      }
42900    },
42901    zoomIn() {
42902      this.currentMap.setZoom(this.currentMap.getZoom() + 1);
42903    },
42904    zoomOut() {
42905      this.currentMap.setZoom(this.currentMap.getZoom() - 1);
42906    },
42907    getMarkerIcon(marker) {
42908      let markerIconUrl = this.currentMapMarkerImageTerrain;
42909      if (this.satellite) {
42910        markerIconUrl = this.currentMapMarkerImageSatellite;
42911      }
42912      if (marker.icon && marker.icon !== "none") {
42913        markerIconUrl = this.assetsUrl + "/img/" + marker.icon + "_black.svg";
42914        if (this.satellite) markerIconUrl = this.assetsUrl + "/img/" + marker.icon + "_white.svg";
42915      }
42916      if (this.openedMarkerID === marker.id) {
42917        return {
42918          url: `${markerIconUrl}`,
42919          scaledSize: { width: 40, height: 40 },
42920          labelOrigin: { x: 25, y: 50 }
42921        };
42922      } else {
42923        return {
42924          url: `${markerIconUrl}`,
42925          scaledSize: { width: 30, height: 30 },
42926          labelOrigin: { x: 20, y: 40 }
42927        };
42928      }
42929    },
42930    removeHtmlEntities(text) {
42931      const HTML_ENTITY_MAP = {
42932        "&amp;": "&",
42933        "&lt;": "<",
42934        "&gt;": ">",
42935        "&quot;": '"',
42936        "&apos;": "'",
42937        "&copy;": "©",
42938        "&reg;": "®",
42939        "&euro;": "€"
42940      };
42941      return text.replace(/&[a-z]+;/gi, (match) => {
42942        return HTML_ENTITY_MAP[match.toLowerCase()] || match;
42943      });
42944    },
42945    getMarkerLabel(marker) {
42946      if (marker.title) return this.removeHtmlEntities(marker.title);
42947      else return this.$t("map.iconLabel." + marker.icon);
42948    },
42949    getMarkerLabelText(marker) {
42950      let markerTitle = this.removeHtmlEntities(marker.title);
42951      if (marker.type && marker.type == "citymap") {
42952        markerTitle = markerTitle.split(" ");
42953        markerTitle = markerTitle[0];
42954      }
42955      return markerTitle;
42956    },
42957    getMarkerLabelGhost(marker) {
42958      if (!marker.type || marker.type != "citymap") return;
42959      let markerTitle = marker.title;
42960      markerTitle = this.removeHtmlEntities(markerTitle);
42961      markerTitle = markerTitle.split(" ");
42962      const firstLetterIsNumber = !isNaN(Number(markerTitle[0]));
42963      if (firstLetterIsNumber && markerTitle.length < 2) return;
42964      if (firstLetterIsNumber) {
42965        markerTitle.shift();
42966      }
42967      markerTitle = markerTitle.join(" ");
42968      return markerTitle;
42969    },
42970    getMarkerLabelClass(marker) {
42971      let markerLabelClass = "marker-label";
42972      if (this.satellite) {
42973        markerLabelClass += " marker-label-white";
42974      }
42975      if (marker.type && marker.type == "citymap") {
42976        markerLabelClass += " marker-label-citymap";
42977      }
42978      if (this.openedMarkerID === marker.id) {
42979        markerLabelClass += " marker-active";
42980      }
42981      return markerLabelClass;
42982    },
42983    clusterRenderer({ count, position }) {
42984      return new google.maps.Marker({
42985        icon: {
42986          url: this.satellite ? this.currentMapClusterImageSatellite : this.currentMapClusterImageTerrain,
42987          // eslint-disable-next-line
42988          scaledSize: new google.maps.Size(41, 41)
42989        },
42990        label: {
42991          text: String(count),
42992          color: "black",
42993          className: count > 9 ? "cluster-marker-label -small" : "cluster-marker-label"
42994        },
42995        position,
42996        // eslint-disable-next-line
42997        zIndex: Number(google.maps.Marker.MAX_ZINDEX) + count
42998      });
42999    }
43000  }
43001};
43002const _hoisted_1$z = {
43003  key: 0,
43004  class: "map-historic-sites"
43005};
43006const _hoisted_2$s = {
43007  key: 1,
43008  class: "tools-bar"
43009};
43010const _hoisted_3$n = { class: "filter-bar" };
43011const _hoisted_4$g = {
43012  key: 0,
43013  class: "filter-buttons"
43014};
43015const _hoisted_5$a = ["id", "onClick"];
43016const _hoisted_6$8 = {
43017  key: 1,
43018  class: "camp-select"
43019};
43020const _hoisted_7$8 = {
43021  for: "campSelect",
43022  class: "visually-hidden"
43023};
43024const _hoisted_8$5 = { value: null };
43025const _hoisted_9$4 = ["value"];
43026const _hoisted_10$2 = {
43027  key: 2,
43028  class: "camp-select"
43029};
43030const _hoisted_11$2 = {
43031  for: "campSelect",
43032  class: "visually-hidden"
43033};
43034const _hoisted_12$2 = { value: null };
43035const _hoisted_13$2 = ["label"];
43036const _hoisted_14$2 = ["value"];
43037const _hoisted_15$2 = ["label"];
43038const _hoisted_16$2 = ["value"];
43039const _hoisted_17$2 = { class: "zoom-bar" };
43040const _hoisted_18$2 = ["src"];
43041const _hoisted_19$2 = ["src"];
43042const _hoisted_20$1 = ["src"];
43043const _hoisted_21$1 = { key: 1 };
43044const _hoisted_22$1 = ["href"];
43045const _hoisted_23$1 = {
43046  key: 0,
43047  class: "marker-info"
43048};
43049const _hoisted_24$1 = { class: "visually-hidden" };
43050const _hoisted_25$1 = ["src"];
43051const _hoisted_26 = ["innerHTML"];
43052const _hoisted_27 = { key: 1 };
43053const _hoisted_28 = ["href"];
43054function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
43055  const _component_consent_inline = resolveComponent("consent-inline");
43056  const _component_GMapInfoWindow = resolveComponent("GMapInfoWindow");
43057  const _component_GMapMarker = resolveComponent("GMapMarker");
43058  const _component_GMapCluster = resolveComponent("GMapCluster");
43059  const _component_GMapMap = resolveComponent("GMapMap");
43060  return $props.shouldBeRendered ? (openBlock(), createElementBlock("div", _hoisted_1$z, [
43061    !$options.hasConsent ? (openBlock(), createBlock(_component_consent_inline, {
43062      key: 0,
43063      "service-name": { service: "Google Maps" },
43064      onSetSingleConsent: _cache[0] || (_cache[0] = ($event) => $data.singleConsent = true),
43065      onSetAlwaysConsent: $options.setAlwaysConsent
43066    }, null, 8, ["onSetAlwaysConsent"])) : createCommentVNode("", true),
43067    $options.hasConsent ? (openBlock(), createElementBlock("div", _hoisted_2$s, [
43068      createBaseVNode("div", _hoisted_3$n, [
43069        $options.hasFilter && !_ctx.isTablet && !_ctx.isMobile ? (openBlock(), createElementBlock("div", _hoisted_4$g, [
43070          (openBlock(true), createElementBlock(Fragment, null, renderList($props.categories, (c, index2) => {
43071            return openBlock(), createElementBlock("button", {
43072              id: c.id,
43073              key: index2,
43074              class: normalizeClass(["link-button map-filter", ($data.filterActive == c.id ? " active" : "") + " color-" + c.color]),
43075              onClick: ($event) => $options.setFilter(c.id)
43076            }, toDisplayString$1(c.label), 11, _hoisted_5$a);
43077          }), 128)),
43078          $props.filterShowAll ? (openBlock(), createElementBlock("button", {
43079            key: 0,
43080            id: "0",
43081            class: normalizeClass(["link-button map-filter", $data.filterActive == 0 ? "active" : ""]),
43082            onClick: _cache[1] || (_cache[1] = ($event) => $options.setFilter(0))
43083          }, toDisplayString$1(_ctx.$t("map.toolbar.showAll")), 3)) : createCommentVNode("", true)
43084        ])) : createCommentVNode("", true),
43085        $options.currentMarkers && ($options.hasFilter && !_ctx.isTablet && !_ctx.isMobile || !$options.hasFilter) ? (openBlock(), createElementBlock("div", _hoisted_6$8, [
43086          createBaseVNode("label", _hoisted_7$8, toDisplayString$1(_ctx.$t("map.toolbar.selectDefault")), 1),
43087          withDirectives(createBaseVNode("select", {
43088            id: "campSelect",
43089            "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => $data.selectedMarker = $event),
43090            name: "campSelect",
43091            class: normalizeClass("color-" + $data.filterActiveColor)
43092          }, [
43093            createBaseVNode("option", _hoisted_8$5, toDisplayString$1(_ctx.$t("map.toolbar.selectDefault")), 1),
43094            (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (marker) => {
43095              return openBlock(), createElementBlock("option", {
43096                key: marker.id,
43097                value: marker
43098              }, toDisplayString$1($options.getMarkerLabel(marker)), 9, _hoisted_9$4);
43099            }), 128))
43100          ], 2), [
43101            [vModelSelect, $data.selectedMarker]
43102          ])
43103        ])) : createCommentVNode("", true),
43104        $options.hasFilter && (_ctx.isTablet || _ctx.isMobile) ? (openBlock(), createElementBlock("div", _hoisted_10$2, [
43105          createBaseVNode("label", _hoisted_11$2, toDisplayString$1(_ctx.$t("map.toolbar.showAll")), 1),
43106          withDirectives(createBaseVNode("select", {
43107            id: "campSelect",
43108            "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.selectedMarker = $event),
43109            name: "campSelect",
43110            class: normalizeClass("color-" + $data.filterActiveColor)
43111          }, [
43112            createBaseVNode("option", _hoisted_12$2, toDisplayString$1(_ctx.$t("map.toolbar.showAll")), 1),
43113            createBaseVNode("optgroup", {
43114              label: _ctx.$t("map.toolbar.selectFilter")
43115            }, [
43116              (openBlock(true), createElementBlock(Fragment, null, renderList($props.categories, (c, index2) => {
43117                return openBlock(), createElementBlock("option", {
43118                  key: index2,
43119                  value: c.id,
43120                  class: normalizeClass($data.filterActive == c.id ? "active" : "")
43121                }, toDisplayString$1(c.label), 11, _hoisted_14$2);
43122              }), 128))
43123            ], 8, _hoisted_13$2),
43124            $options.currentMarkers ? (openBlock(), createElementBlock("optgroup", {
43125              key: 0,
43126              label: _ctx.$t("map.toolbar.selectCamp") + " " + $data.filterActiveLabel
43127            }, [
43128              (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (marker) => {
43129                return openBlock(), createElementBlock("option", {
43130                  key: marker.id,
43131                  value: marker
43132                }, toDisplayString$1($options.getMarkerLabel(marker)), 9, _hoisted_16$2);
43133              }), 128))
43134            ], 8, _hoisted_15$2)) : createCommentVNode("", true)
43135          ], 2), [
43136            [vModelSelect, $data.selectedMarker]
43137          ])
43138        ])) : createCommentVNode("", true)
43139      ]),
43140      createBaseVNode("div", _hoisted_17$2, [
43141        createBaseVNode("button", {
43142          class: "link-button zoom-in",
43143          onClick: _cache[4] || (_cache[4] = (...args) => $options.zoomIn && $options.zoomIn(...args))
43144        }, [
43145          createBaseVNode("img", {
43146            src: `${_ctx.assetsUrl}/img/zoom-in.svg`,
43147            alt: "+"
43148          }, null, 8, _hoisted_18$2)
43149        ]),
43150        createBaseVNode("button", {
43151          class: "link-button zoom-out",
43152          onClick: _cache[5] || (_cache[5] = (...args) => $options.zoomOut && $options.zoomOut(...args))
43153        }, [
43154          createBaseVNode("img", {
43155            src: `${_ctx.assetsUrl}/img/zoom-out.svg`,
43156            alt: "-"
43157          }, null, 8, _hoisted_19$2)
43158        ])
43159      ])
43160    ])) : createCommentVNode("", true),
43161    $options.hasConsent ? (openBlock(), createBlock(_component_GMapMap, {
43162      key: 2,
43163      ref: "mapRef",
43164      center: $props.center,
43165      zoom: $props.zoom,
43166      "map-type-id": $props.satellite ? "hybrid" : $props.showMoreDetails ? "roadmap" : "terrain",
43167      class: normalizeClass($props.satellite ? "map-satellite" : "map-terrain"),
43168      options: {
43169        zoomControl: false,
43170        mapTypeControl: false,
43171        scaleControl: false,
43172        streetViewControl: false,
43173        rotateControl: false,
43174        fullscreenControl: false,
43175        disableDefaultUi: false,
43176        styles: $props.showMoreDetails ? $data.mapStyles : $data.mapStylesMinimalistic,
43177        draggableCursor: "grab",
43178        gestureHandling: $options.gestureHandling
43179      }
43180    }, {
43181      default: withCtx(() => [
43182        createVNode(_component_GMapCluster, {
43183          renderer: { render: $options.clusterRenderer }
43184        }, {
43185          default: withCtx(() => [
43186            (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (m) => {
43187              return openBlock(), createBlock(_component_GMapMarker, {
43188                key: `m${m.id}`,
43189                position: {
43190                  lat: m.latitude,
43191                  lng: m.longitude
43192                },
43193                clickable: m.showInfo,
43194                cursor: m.showInfo ? "pointer" : "grab",
43195                draggable: false,
43196                label: $data.showMarkerLabels && m.title ? {
43197                  text: $options.getMarkerLabelText(m),
43198                  className: $options.getMarkerLabelClass(m)
43199                } : null,
43200                icon: $options.getMarkerIcon(m),
43201                onClick: ($event) => $options.openMarker(m.id)
43202              }, {
43203                default: withCtx(() => [
43204                  m.showInfo ? (openBlock(), createBlock(_component_GMapInfoWindow, {
43205                    key: 0,
43206                    options: {
43207                      pixelOffset: {
43208                        width: 0,
43209                        height: 0
43210                      },
43211                      maxWidth: 400,
43212                      maxHeight: 400
43213                    },
43214                    closeclick: true,
43215                    opened: false,
43216                    onCloseclick: _cache[6] || (_cache[6] = ($event) => $options.openMarker(null))
43217                  }, {
43218                    default: withCtx(() => [
43219                      m.image ? (openBlock(), createElementBlock("img", {
43220                        key: 0,
43221                        src: m.image,
43222                        role: "decoration",
43223                        loading: "lazy",
43224                        width: "400",
43225                        height: "250"
43226                      }, null, 8, _hoisted_20$1)) : createCommentVNode("", true),
43227                      createBaseVNode("h3", null, toDisplayString$1(m.title), 1),
43228                      m.text ? (openBlock(), createElementBlock("p", _hoisted_21$1, toDisplayString$1(m.text), 1)) : createCommentVNode("", true),
43229                      m.detailPage ? (openBlock(), createElementBlock("a", {
43230                        key: 2,
43231                        href: m.detailPage,
43232                        target: "_blank"
43233                      }, toDisplayString$1(_ctx.$t("map.infoWindow.readMore")), 9, _hoisted_22$1)) : createCommentVNode("", true)
43234                    ]),
43235                    _: 2
43236                  }, 1024)) : createCommentVNode("", true)
43237                ]),
43238                _: 2
43239              }, 1032, ["position", "clickable", "cursor", "label", "icon", "onClick"]);
43240            }), 128)),
43241            (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (m) => {
43242              return openBlock(), createElementBlock(Fragment, {
43243                key: `m${m.id}`
43244              }, [
43245                m.showTitle ? (openBlock(), createBlock(_component_GMapMarker, {
43246                  key: 0,
43247                  position: {
43248                    lat: m.latitude,
43249                    lng: m.longitude
43250                  },
43251                  draggable: false,
43252                  icon: {
43253                    path: "M 0,0",
43254                    scale: 0
43255                  },
43256                  label: $data.showMarkerLabels && m.title ? {
43257                    text: $options.getMarkerLabelGhost(m),
43258                    className: "marker-label-ghost"
43259                  } : null
43260                }, null, 8, ["position", "label"])) : createCommentVNode("", true)
43261              ], 64);
43262            }), 128))
43263          ]),
43264          _: 1
43265        }, 8, ["renderer"])
43266      ]),
43267      _: 1
43268    }, 8, ["center", "zoom", "map-type-id", "class", "options"])) : createCommentVNode("", true),
43269    (openBlock(true), createElementBlock(Fragment, null, renderList($options.currentMarkers, (m) => {
43270      return openBlock(), createElementBlock("div", {
43271        key: `minfo${m.id}`
43272      }, [
43273        m.showInfo && $data.openedMarkerID === m.id ? (openBlock(), createElementBlock("div", _hoisted_23$1, [
43274          createBaseVNode("button", {
43275            ref_for: true,
43276            ref: "closeMarkerInfo",
43277            class: "link-button icon-close-menu-mobile",
43278            onClick: _cache[7] || (_cache[7] = ($event) => $options.openMarker(null))
43279          }, [
43280            createBaseVNode("span", _hoisted_24$1, toDisplayString$1(_ctx.$t("overlay.close.label")), 1
43280)
43281          ], 512),
43282          m.image ? (openBlock(), createElementBlock("img", {
43283            key: 0,
43284            src: m.image,
43285            role: "decoration",
43286            loading: "lazy",
43287            width: "400",
43288            height: "250"
43289          }, null, 8, _hoisted_25$1)) : createCommentVNode("", true),
43290          createBaseVNode("h3", {
43291            innerHTML: m.infoboxTitle || m.title
43292          }, null, 8, _hoisted_26),
43293          m.text ? (openBlock(), createElementBlock("p", _hoisted_27, toDisplayString$1(m.text), 1)) : createCommentVNode("", true),
43294          m.detailPage ? (openBlock(), createElementBlock("a", {
43295            key: 2,
43296            href: m.detailPage,
43297            target: "_blank"
43298          }, toDisplayString$1(_ctx.$t("map.infoWindow.readMore")), 9, _hoisted_28)) : createCommentVNode("", true)
43299        ])) : createCommentVNode("", true)
43300      ]);
43301    }), 128))
43302  ])) : createCommentVNode("", true);
43303}
43304const MapHistoricSites = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$A]]);
43305const _sfc_main$z = {
43306  name: "ShopItemHeader",
43307  components: {
43308    AddToCart
43309  },
43310  props: {
43311    title: {
43312      type: String,
43313      default: ""
43314    },
43315    summary: {
43316      type: String,
43317      default: ""
43318    },
43319    author: {
43320      type: String,
43321      default: ""
43322    },
43323    price: {
43324      type: String,
43325      default: ""
43326    },
43327    publisher: {
43328      type: String,
43329      default: ""
43330    },
43331    publicationDate: {
43332      type: String,
43333      default: ""
43334    },
43335    pages: {
43336      type: String,
43337      default: ""
43338    },
43339    duration: {
43340      type: String,
43341      default: ""
43342    },
43343    articleNumber: {
43344      type: String,
43345      default: ""
43346    }
43347  }
43348  // data() {
43349  //   return {};
43350  // },
43351  //computed: { },
43352  // methods: {},
43353  // watch() {},
43354  // Livecycle hooks
43355  // created() {},
43356  // mounted() {},
43357  // updated() {},
43358  // beforeDestroy() {},
43359};
43360const _hoisted_1$y = { class: "shop-item-header" };
43361const _hoisted_2$r = { class: "content-block row collapse" };
43362const _hoisted_3$m = { class: "columns large-5" };
43363const _hoisted_4$f = { class: "columns large-5 large-push-1" };
43364const _hoisted_5$9 = { class: "richtext-wrapper -small" };
43365const _hoisted_6$7 = { class: "richtext-wrapper -small" };
43366const _hoisted_7$7 = { class: "price" };
43367const _hoisted_8$4 = { class: "richtext-wrapper -small shop-item-meta" };
43368function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
43369  const _component_add_to_cart = resolveComponent("add-to-cart");
43370  return openBlock(), createElementBlock("header", _hoisted_1$y, [
43371    createBaseVNode("div", _hoisted_2$r, [
43372      createBaseVNode("div", _hoisted_3$m, [
43373        renderSlot(_ctx.$slots, "image")
43374      ]),
43375      createBaseVNode("div", _hoisted_4$f, [
43376        createBaseVNode("h1", null, toDisplayString$1($props.title), 1),
43377        createBaseVNode("h2", _hoisted_5$9, toDisplayString$1($props.summary), 1),
43378        createBaseVNode("h3", _hoisted_6$7, [
43379          createTextVNode(toDisplayString$1($props.author), 1),
43380          _cache[0] || (_cache[0] = createBaseVNode("br", null, null, -1)),
43381          createBaseVNode("span", _hoisted_7$7, toDisplayString$1($props.price), 1)
43382        ]),
43383        createVNode(_component_add_to_cart, { "article-number": $props.articleNumber }, null, 8, ["article-number"]),
43384        createBaseVNode("div", _hoisted_8$4, [
43385          createTextVNode(toDisplayString$1($props.publisher), 1),
43386          _cache[1] || (_cache[1] = createBaseVNode("br", null, null, -1)),
43387          createTextVNode(" " + toDisplayString$1($props.publicationDate), 1),
43388          _cache[2] || (_cache[2] = createBaseVNode("br", null, null, -1)),
43389          createTextVNode(" " + toDisplayString$1($props.pages) + toDisplayString$1($props.duration), 1),
43390          _cache[3] || (_cache[3] = createBaseVNode("br", null, null, -1)),
43391          createTextVNode(" " + toDisplayString$1(_ctx.$t("shop.article.prefix.short")) + " " + toDisplayString$1($props.articleNumber), 1)
43392        ]),
43393        renderSlot(_ctx.$slots, "tags")
43394      ])
43395    ])
43396  ]);
43397}
43398const ShopItemHeader = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$z]]);
43399const _sfc_main$y = {
43400  name: "FormBlock",
43401  // components: {},
43402  props: {
43403    headline: {
43404      type: String,
43405      default: ""
43406    },
43407    text: {
43408      type: String,
43409      default: ""
43410    },
43411    imageSrc: {
43412      type: String,
43413      default: ""
43414    },
43415    imageAlt: {
43416      type: String,
43417      default: ""
43418    }
43419  }
43420  // data() {
43421  //   return {};
43422  // },
43423  // computed: {},
43424  // methods: {},
43425  // watch() {},
43426  // Livecycle hooks
43427  // created() {},
43428  // mounted() {},
43429  // updated() {},
43430  // beforeDestroy() {},
43431};
43432const _hoisted_1$x = { class: "form form-block" };
43433function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
43434  return openBlock(), createElementBlock("form", _hoisted_1$x, _cache[0] || (_cache[0] = [
43435    createStaticVNode('<div class="form-errors"><h2>Fehler</h2><ul><li><a href="#">Error Text</a></li><li><a href="#">Error Text</a></li></ul></div><p class="required"><span>Die mit <span>*</span> markierten Felder müssen ausgefüllt werden.</span></p><fieldset><legend>Ansprechpartner:innen</legend><div class="form-item large error"><label for="field09"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field09" name="" type="text" value="" class="" required></div><div class="form-item medium"><label for="field08"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field08" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field07"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field07" name="" type="text" value="" class=""></div></fieldset><fieldset><legend>Angaben zur Gruppe</legend><div class="form-item medium"><label for="field06"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field06" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field05"><span> Field 0 <dfn title="required">*</dfn></span></label><input id="field05" name="" type="text" value="" class=""></div><div class="form-item large"><p class="label"><span> Dolmetscher ist bei der Gruppe * </span></p><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field04" type="radio" name="field1" value="val 1" checked><label for="field04"><span>val 1</span></label></div><div class="radiocheck"><input id="field03" type="radio" name="field1" value="val 2"><label for="field03"><span>val 2</span></label></div></div></div><div class="form-item medium error"><p class="label"> Der Besuch findet statt im Rahmen von </p><div class="radiocheck-wrapper"><div class="radiocheck">
43435<input id="field02" type="checkbox" name="field1" value="val 1"><label for="field02"><span>Projekttagen</span></label></div><div class="radiocheck"><input id="field01" type="checkbox" name="field1" value="val 2" checked><label for="field01"><span>Unterricht</span></label></div><div class="radiocheck"><input id="field30" type="checkbox" name="field1" value="val 2"><label for="field30"><span>Klassenfahrt</span></label></div></div></div><div class="form-item medium"><label for="field29"><span> Oder </span></label><input id="field29" name="" type="text" value="" class=""></div></fieldset><fieldset><legend>Welche Angebote der Gedenkstätte möchten Sie nutzen? *</legend><div class="form-item large error"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field28" type="radio" name="field1" value="val 1" checked><label for="field28"><span>Überblicksführungen</span></label></div><div class="radiocheck"><input id="field27" type="radio" name="field1" value="val 2"><label for="field27"><span>Ausführliche Geländeführungen</span></label></div><div class="radiocheck"><input id="field26" type="radio" name="field1" value="val 2"><label for="field26"><span> Ausführliche Geländeführungen können zu verschiedenen Themenschwerpunkten der KZ-Geschichte (z.B. Gedenkweg Buchenwaldbahn, Zwangsarbeit, Täterbereich u.a.m.) sowie zum Mahnmal und Umgang mit der Erinnerung vereinbart werden. </span></label></div></div></div><div class="form-item large"><p class="info-text"><strong>Überblicksführungen (2 Stunden - beim Erstbesuch empfohlen):</strong><span> Diese Führung, beginnend im Bereich der Besucherinformation, wird über den Carachoweg und das Lagertor zum ehemaligen Appellplatz fortgesetzt, schließt einen Vortrag zur Lagergeschichte an einem Modell ein, und endet nach der betreuten Besichtigung des Krematoriums.<br> Für Schulklassen empfehlen wir vorher den Einführungsfilm der Gedenkstätte (30 Minuten) und anschließend eine angeleitete Vertiefung in der Dauerausstellung zur Geschichte des Konzentrationslagers (ca. 1 Stunde). </span></p><p class="info-text"><strong>Ausführliche Geländeführungen (3 Stunden):</strong><br><span> Ausführliche Geländeführungen können zu verschiedenen Themenschwerpunkten der KZ-Geschichte (z.B. Gedenkweg Buchenwaldbahn, Zwangsarbeit, Täterbereich u.a.m.) sowie zum Mahnmal und Umgang mit der Erinnerung vereinbart werden.<br> Nähere Informationen erteilt die Besucherinformation. </span></p><p class="info-text"><strong>iPod touch/iPod (2 Stunden):</strong><br><span> Für einen individuellen Rundgang durch die Gedenkstätte haben Sie die Möglichkeit, mittels eines iPod, wahlweise auch mit Einblendung von historischen Aufnahmen, zusätzliche Informationen zur Geschichte des Ortes zu erhalten. Der iPod ist in folgenden Sprachen erhältlich: deutsch, englisch, französisch, italienisch, spanisch, japanisch, russisch, niederländisch; der iPod touch ist erhältlich in: deutsch, englisch, französisch, italienisch, spanisch, niederländisch. </span></p></div></fieldset><fieldset><legend>Terminwunsch/Aufenthaltsdauer</legend><div class="form-item large"><label for="field25"><span> Datum a) <dfn title="required">*</dfn></span></label><input id="field25" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field24"><span> Uhrzeit von <dfn title="required">*</dfn></span></label><input id="field24" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field23"><span> Uhrzeit bis <dfn title="required">*</dfn></span></label><input id="field23" name="" type="text" value="" class=""></div><div class="form-item large"><label for="field22"><span> Datum b) </span></label><input id="field22" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field21"><span> Uhrzeit von </span></label><input id="field21" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field20"><span> Uhrzeit bis </span></label><input id="field20" name="" type="text" value="" class=""></div><div class="form-item large"><label for="field19"><span>
43435 Datum c) </span></label><input id="field19" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field18"><span> Uhrzeit von </span></label><input id="field18" name="" type="text" value="" class=""></div><div class="form-item medium"><label for="field17"><span> Uhrzeit bis </span></label><input id="field17" name="" type="text" value="" class=""></div></fieldset><fieldset><legend>Gründe für den Besuch der Gedenkstätte Buchenwald</legend><div class="form-item large"><p class="info-text"><span> Je genauer Sie uns informieren, desto besser können wir Ihre Betreuung vorbereiten und an die Fragen und das Wissen der Schülerinnen und Schüler anknüpfen. </span></p></div><div class="form-item medium"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field16" type="checkbox" name="field1" value="val 2"><label for="field16">Ergänzung zum Schulstoff im Fach</label></div></div></div><div class="form-item medium label-hidden"><label for="field15"><span> Fachname </span></label><input id="field15" name="" type="text" value="" class=""></div><div class="form-item large"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field14" type="checkbox" name="field1" value="val 2"><label for="field14">Diskussionen in der Klasse/Gruppe über die NS-Zeit und aktuelle Situationen</label></div></div></div><div class="form-item medium"><div class="radiocheck-wrapper"><div class="radiocheck"><input id="field13" type="checkbox" name="field1" value="val 2"><label for="field13">andere Anlässe</label></div></div></div><div class="form-item medium label-hidden"><label for="field12"><span> Anlässe </span></label><input id="field12" name="" type="text" value="" class=""></div><div class="form-item large"><label for="field11"><span> Wie erfolgte die Vorbereitung der Gruppe? Wie wird die Nachbereitung erfolgen? <dfn title="required">*</dfn></span></label><textarea id="field11" name="" rows="10" value=""></textarea></div><div class="form-submit"><button type="submit" class="link-button"> Absenden </button></div></fieldset>', 7)
43436  ]));
43437}
43438const FormBlock = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$y]]);
43439const _sfc_main$x = {
43440  name: "SearchField",
43441  components: {
43442    DividerLine
43443  },
43444  props: {
43445    label: {
43446      type: String,
43447      default: "Mehr Info"
43448    },
43449    url: {
43450      type: String,
43451      default: "/"
43452    },
43453    isDownload: {
43454      type: Boolean,
43455      default: false
43456    }
43457  },
43458  data() {
43459    return {
43460      searchWord: ""
43461    };
43462  },
43463  //   return {};
43464  // },
43465  // computed: {},
43466  methods: {
43467    printToConsole() {
43468      console.log(this.searchWord);
43469    }
43470  }
43471  // watch() {},
43472  // Livecycle hooks
43473  // created() {},
43474  // mounted() {},
43475  // updated() {},
43476  // beforeDestroy() {},
43477};
43478const _hoisted_1$w = { class: "search-field" };
43479const _hoisted_2$q = { class: "search-field-wrapper" };
43480const _hoisted_3$l = ["placeholder", "aria-label"];
43481const _hoisted_4$e = {
43482  class: "search-button",
43483  type: "submit"
43484};
43485function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
43486  const _component_divider_line = resolveComponent("divider-line");
43487  return openBlock(), createElementBlock("div", _hoisted_1$w, [
43488    createBaseVNode("div", _hoisted_2$q, [
43489      createBaseVNode("form", {
43490        id: "search_form",
43491        role: "search",
43492        onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => $options.printToConsole && $options.printToConsole(...args), ["prevent"]))
43493      }, [
43494        withDirectives(createBaseVNode("input", {
43495          id: "search",
43496          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.searchWord = $event),
43497          type: "search",
43498          name: "search",
43499          class: "search-input",
43500          placeholder: _ctx.$t("search.field.placeholder"),
43501          autofocus: "",
43502          "aria-label": _ctx.$t("search.field.label")
43503        }, null, 8, _hoisted_3$l), [
43504          [vModelText, $data.searchWord]
43505        ]),
43506        createBaseVNode("button", _hoisted_4$e, toDisplayString$1(_ctx.$t("search.button.label")), 1)
43507      ], 32)
43508    ]),
43509    createVNode(_component_divider_line),
43510    _cache[2] || (_cache[2] = createBaseVNode("div", { class: "search-result-count" }, " (4 Treffer) ", -1))
43511  ]);
43512}
43513const SearchField = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$x]]);
43514const _sfc_main$w = {
43515  name: "SupporterLogoArea",
43516  // components: {},
43517  props: {
43518    text: {
43519      type: Object,
43520      required: true
43521    },
43522    mainAreaStyling: {
43523      type: Boolean,
43524      default: false
43525    }
43526  }
43527  // data() {
43528  //   return {};
43529  // },
43530  // computed: {},
43531  // watch: {},
43532  // Livecycle hooks
43533  // created() {},
43534  // mounted() {},
43535  // updated() {},
43536  // beforeUnmount() {},
43537  // methods: {},
43538};
43539const _hoisted_1$v = { class: "text" };
43540const _hoisted_2$p = { class: "container" };
43541function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
43542  return openBlock(), createElementBlock("div", {
43543    class: normalizeClass(["supporter-logo-area", { "main-area-styling": $props.mainAreaStyling }])
43544  }, [
43545    createBaseVNode("p", _hoisted_1$v, toDisplayString$1($props.text), 1),
43546    createBaseVNode("div", _hoisted_2$p, [
43547      renderSlot(_ctx.$slots, "default")
43548    ])
43549  ], 2);
43550}
43551const SupporterLogoArea = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$w]]);
43552const _sfc_main$v = {
43553  name: "NewsletterRegistration",
43554  // components: {},
43555  props: {
43556    labels: {
43557      type: Object,
43558      required: true
43559    },
43560    sendinblueListIds: {
43561      type: Object,
43562      required: true
43563    }
43564  },
43565  data() {
43566    return {
43567      email: "",
43568      firstName: "",
43569      lastName: "",
43570      organization: "",
43571      emailInvalid: false,
43572      firstNameInvalid: false,
43573      lastNameInvalid: false,
43574      organizationInvalid: false,
43575      privacyInvalid: false,
43576      isBuchenwald: false,
43577      isDora: false,
43578      isMuseum: false,
43579      isStiftung: false,
43580      privacyIsChecked: false,
43581      buchenwaldChecked: false,
43582      doraChecked: false,
43583      stiftungChecked: false,
43584      museumChecked: false
43585    };
43586  },
43587  computed: {
43588    ...mapState(ENVIRONMENT_TYPES.NAME, {
43589      siteName: ENVIRONMENT_TYPES.state.ENVIRONMENT_SITE_NAME
43590    })
43591  },
43592  // watch: {},
43593  // Livecycle hooks
43594  created() {
43595    switch (this.siteName) {
43596      case "buchenwald":
43597        this.isBuchenwald = true;
43598        break;
43599      case "dora":
43600        this.isDora = true;
43601        break;
43602      case "stiftung-gedenkstaetten":
43603        this.isStiftung = true;
43604        break;
43605      case "museum-zwangsarbeit":
43606        this.isMuseum = true;
43607        break;
43608    }
43609  },
43610  mounted() {
43611  },
43612  // updated() {},
43613  // beforeUnmount() {},
43614  methods: {
43615    submitNewsletterSignOn() {
43616      if (this.validate()) {
43617        return;
43618      }
43619      let ids = this.sendinblueIdMapping();
43620      const options2 = {
43621        method: "POST",
43622        headers: {
43623          accept: "application/json",
43624          "content-type": "application/json",
43625          "api-key": "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"
43626        },
43627        body: JSON.stringify({
43628          updateEnabled: false,
43629          email: this.email,
43630          attributes: { "VORNAME": this.firstName, "NACHNAME": this.lastName, "ORGANISATION": this.organization },
43631          listIds: ids
43632        })
43633      };
43634      fetch("https://api.sendinblue.com/v3/contacts", options2).then((response) => response.json()).then((response) => {
43635        if (200 === response.status) {
43636          this.newsletterMail = "";
43637          this.newsletterSignOnSent = true;
43638        }
43639      }).catch((err) => {
43640        console.error(err);
43641      });
43642    },
43643    validate() {
43644      let error = false;
43645      if (this.firstName === "") {
43646        error = true;
43647        this.firstNameInvalid = true;
43648      } else {
43649        this.firstNameInvalid = false;
43650      }
43651      if (this.lastName === "") {
43652        error = true;
43653        this.lastNameInvalid = true;
43654      } else {
43655        this.lastNameInvalid = false;
43656      }
43657      if (this.organization === "") {
43658        error = true;
43659        this.organizationInvalid = true;
43660      } else {
43661        this.organizationInvalid = false;
43662      }
43663      if (!this.isValidEmail()) {
43664        error = true;
43665        this.emailInvalid = true;
43666      } else {
43667        this.emailInvalid = false;
43668      }
43669      if (!this.privacyIsChecked) {
43670        error = true;
43671        this.privacyInvalid = true;
43672      } else {
43673        this.privacyInvalid = false;
43674      }
43675      return error;
43676    },
43677    isValidEmail() {
43678      return !!(this.email && "" !== this.email.trim().replace(" ", "") && // eslint-disable-next-line
43679      /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(this.email));
43680    },
43681    sendinblueIdMapping() {
43682      let ids = [];
43683      if (this.isBuchenwald) {
43684        ids.push(this.sendinblueListIds["buchenwald"]);
43685      } else if (this.isDora) {
43686        ids.push(this.sendinblueListIds["dora"]);
43687      } else if (this.isMuseum) {
43688        ids.push(this.sendinblueListIds["museum"]);
43689      } else if (this.isStiftung) {
43690        ids.push(this.sendinblueListIds["stiftung"]);
43691      }
43692      if (this.buchenwaldChecked) {
43693        const id = this.sendinblueListIds["buchenwald"];
43694        ids.indexOf(id) === -1 ? ids.push(id) : {};
43695      }
43696      if (this.doraChecked) {
43697        const id = this.sendinblueListIds["dora"];
43698        ids.indexOf(id) === -1 ? ids.push(id) : {};
43699      }
43700      if (this.museumChecked) {
43701        const id = this.sendinblueListIds["museum"];
43702        ids.indexOf(id) === -1 ? ids.push(id) : {};
43703      }
43704      if (this.stiftungChecked) {
43705        const id = this.sendinblueListIds["stiftung"];
43706        ids.indexOf(id) === -1 ? ids.push(id) : {};
43707      }
43708      return ids;
43709    }
43710  }
43711};
43712const _hoisted_1$u = { class: "newsletter-registration" };
43713const _hoisted_2$o = { class: "container" };
43714const _hoisted_3$k = { class: "headline" };
43715const _hoisted_4$d = { class: "info-text" };
43716const _hoisted_5$8 = { class: "input-container" };
43717const _hoisted_6$6 = { class: "input-text" };
43718const _hoisted_7$6 = {
43719  key: 0,
43720  class: "error-message"
43721};
43722const _hoisted_8$3 = { class: "input-container" };
43723const _hoisted_9$3 = { class: "input-text" };
43724const _hoisted_10$1 = {
43725  key: 0,
43726  class: "error-message"
43727};
43728const _hoisted_11$1 = { class: "input-container" };
43729const _hoisted_12$1 = { class: "input-text" };
43730const _hoisted_13$1 = {
43731  key: 0,
43732  class: "error-message"
43733};
43734const _hoisted_14$1 = { class: "input-container" };
43735const _hoisted_15$1 = { class: "input-text" };
43736const _hoisted_16$1 = {
43737  key: 0,
43738  class: "error-message"
43739};
43740const _hoisted_17$1 = { class: "other-text" };
43741const _hoisted_18$1 = {
43742  key: 0,
43743  class: "checkbox-container-other-newsletter"
43744};
43745const _hoisted_19$1 = {
43746  key: 1,
43747  class: "checkbox-container-other-newsletter"
43748};
43749const _hoisted_20 = {
43750  key: 2,
43751  class: "checkbox-container-other-newsletter"
43752};
43753const _hoisted_21 = {
43754  key: 3,
43755  class: "checkbox-container-other-newsletter"
43756};
43757const _hoisted_22 = { class: "" };
43758const _hoisted_23 = { for: "privacy" };
43759const _hoisted_24 = {
43760  key: 0,
43761  class: "error-message"
43762};
43763const _hoisted_25 = { class: "privacy-info" };
43764function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
43765  return openBlock(), createElementBlock("div", _hoisted_1$u, [
43766    createBaseVNode("div", _hoisted_2$o, [
43767      createBaseVNode("p", _hoisted_3$k, toDisplayString$1($props.labels.headline), 1),
43768      createBaseVNode("p", _hoisted_4$d, toDisplayString$1($props.labels.info), 1),
43769      createBaseVNode("div", _hoisted_5$8, [
43770        createBaseVNode("p", _hoisted_6$6, toDisplayString$1(_ctx.$t("newsletterRegistration.label.email")), 1),
43771        withDirectives(createBaseVNode("input", {
43772          "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.email = $event),
43773          placeholder: "EMAIL"
43774        }, null, 512), [
43775          [vModelText, $data.email]
43776        ]),
43777        $data.emailInvalid ? (openBlock(), createElementBlock("p", _hoisted_7$6, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.email")), 1)) : createCommentVNode("", true)
43778      ]),
43779      createBaseVNode("div", _hoisted_8$3, [
43780        createBaseVNode("p", _hoisted_9$3, toDisplayString$1(_ctx.$t("newsletterRegistration.label.firstName")), 1),
43781        withDirectives(createBaseVNode("input", {
43782          "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.firstName = $event),
43783          placeholder: "VORNAME"
43784        }, null, 512), [
43785          [vModelText, $data.firstName]
43786        ]),
43787        $data.firstNameInvalid ? (openBlock(), createElementBlock("p", _hoisted_10$1, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.firstName")), 1)) : createCommentVNode("", true)
43788      ]),
43789      createBaseVNode("div", _hoisted_11$1, [
43790        createBaseVNode("p", _hoisted_12$1, toDisplayString$1(_ctx.$t("newsletterRegistration.label.lastName")), 1),
43791        withDirectives(createBaseVNode("input", {
43792          "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => $data.lastName = $event),
43793          placeholder: "NAME"
43794        }, null, 512), [
43795          [vModelText, $data.lastName]
43796        ]),
43797        $data.lastNameInvalid ? (openBlock(), createElementBlock("p", _hoisted_13$1, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.lastName")), 1)) : createCommentVNode("", true)
43798      ]),
43799      createBaseVNode("div", _hoisted_14$1, [
43800        createBaseVNode("p", _hoisted_15$1, toDisplayString$1(_ctx.$t("newsletterRegistration.label.organization")), 1),
43801        withDirectives(createBaseVNode("input", {
43802          "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.organization = $event),
43803          placeholder: "ORGANISATION"
43804        }, null, 512), [
43805          [vModelText, $data.organization]
43806        ]),
43807        $data.organizationInvalid ? (openBlock(), createElementBlock("p", _hoisted_16$1, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.organization")), 1)) : createCommentVNode("", true)
43808      ]),
43809      createBaseVNode("p", _hoisted_17$1, toDisplayString$1($props.labels.otherText), 1),
43810      !$data.isBuchenwald ? (openBlock(), createElementBlock("div", _hoisted_18$1, [
43811        withDirectives(createBaseVNode("input", {
43812          "onUpdate:modelValue": _cache[4] || (_cache[4] = ($event) => $data.buchenwaldChecked = $event),
43813          type: "checkbox"
43814        }, null, 512), [
43815          [vModelCheckbox, $data.buchenwaldChecked]
43816        ]),
43817        _cache[10] || (_cache[10] = createBaseVNode("label", { for: "buchenwald" }, "Newsletter Buchenwald", -1))
43818      ])) : createCommentVNode("", true),
43819      !$data.isDora ? (openBlock(), createElementBlock("div", _hoisted_19$1, [
43820        withDirectives(createBaseVNode("input", {
43821          "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => $data.doraChecked = $event),
43822          type: "checkbox"
43823        }, null, 512), [
43824          [vModelCheckbox, $data.doraChecked]
43825        ]),
43826        _cache[11] || (_cache[11] = createBaseVNode("label", { for: "dora" }, "Newsletter Mittelbau-Dora", -1))
43827      ])) : createCommentVNode("", true),
43828      !$data.isStiftung ? (openBlock(), createElementBlock("div", _hoisted_20, [
43829        withDirectives(createBaseVNode("input", {
43830          "onUpdate:modelValue": _cache[6] || (_cache[6] = ($event) => $data.stiftungChecked = $event),
43831          type: "checkbox"
43832        }, null, 512), [
43833          [vModelCheckbox, $data.stiftungChecked]
43834        ]),
43835        _cache[12] || (_cache[12] = createBaseVNode("label", { for: "stiftung" }, "Newsletter Stiftung", -1))
43836      ])) : createCommentVNode("", true),
43837      !$data.isMuseum ? (openBlock(), createElementBlock("div", _hoisted_21, [
43838        withDirectives(createBaseVNode("input", {
43839          "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => $data.museumChecked = $event),
43840          type: "checkbox"
43841        }, null, 512), [
43842          [vModelCheckbox, $data.museumChecked]
43843        ]),
43844        _cache[13] || (_cache[13] = createBaseVNode("label", { for: "museum" }, "Newsletter Museum", -1))
43845      ])) : createCommentVNode("", true),
43846      _cache[14] || (_cache[14] = createBaseVNode("div", { class: "divider" }, null, -1)),
43847      createBaseVNode("div", _hoisted_22, [
43848        withDirectives(createBaseVNode("input", {
43849          "onUpdate:modelValue": _cache[8] || (_cache[8] = ($event) => $data.privacyIsChecked = $event),
43850          type: "checkbox"
43851        }, null, 512), [
43852          [vModelCheckbox, $data.privacyIsChecked]
43853        ]),
43854        createBaseVNode("label", _hoisted_23, toDisplayString$1($props.labels.privacyCheckboxText), 1),
43855        $data.privacyInvalid ? (openBlock(), createElementBlock("p", _hoisted_24, toDisplayString$1(_ctx.$t("newsletterRegistration.errorMessage.privacy")), 1)) : createCommentVNode("", true)
43856      ]),
43857      createBaseVNode("p", _hoisted_25, toDisplayString$1($props.labels.privacyInfo), 1),
43858      createBaseVNode("p", null, toDisplayString$1($props.labels.privacyLinkText), 1),
43859      createBaseVNode("div", {
43860        class: "link-button",
43861        onClick: _cache[9] || (_cache[9] = ($event) => $options.submitNewsletterSignOn())
43862      }, toDisplayString$1(_ctx.$t("newsletterRegistration.label.registerButton")), 1)
43863    ])
43864  ]);
43865}
43866const NewsletterRegistration = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$v]]);
43867const _sfc_main$u = {
43868  name: "MagazineFurtherReadingBox",
43869  components: {
43870    LinkButton
43871  },
43872  props: {
43873    title: {
43874      type: String,
43875      required: true
43876    },
43877    links: {
43878      type: Array,
43879      required: true
43880    },
43881    buttonLabel: {
43882      type: String,
43883      required: true
43884    },
43885    buttonUrl: {
43886      type: String,
43887      required: true
43888    },
43889    sandBackground: {
43890      type: Boolean,
43891      default: false
43892    }
43893  }
43894  // data() {
43895  //   return {};
43896  // },
43897  // computed: {},
43898  // watch: {},
43899  // Livecycle hooks
43900  // created() {},
43901  // mounted() {},
43902  // updated() {},
43903  // beforeUnmount() {},
43904  // methods: {},
43905};
43906const _hoisted_1$t = { class: "link-list" };
43907const _hoisted_2$n = ["href"];
43908const _hoisted_3$j = { class: "link-button-container" };
43909function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
43910  const _component_link_button = resolveComponent("link-button");
43911  return openBlock(), createElementBlock("div", {
43912    class: normalizeClass(["magazine-further-reading-box", {
43913      "sand-background": $props.sandBackground
43914    }])
43915  }, [
43916    createBaseVNode("h2", null, toDisplayString$1($props.title), 1),
43917    createBaseVNode("ul", _hoisted_1$t, [
43918      (openBlock(true), createElementBlock(Fragment, null, renderList($props.links, (link) => {
43919        return openBlock(), createElementBlock("li", {
43920          key: link.text
43921        }, [
43922          createBaseVNode("a", {
43923            href: link.url
43924          }, toDisplayString$1(link.text), 9, _hoisted_2$n)
43925        ]);
43926      }), 128))
43927    ]),
43928    createBaseVNode("div", _hoisted_3$j, [
43929      createVNode(_component_link_button, {
43930        label: $props.buttonLabel,
43931        url: $props.buttonUrl
43932      }, null, 8, ["label", "url"])
43933    ])
43934  ], 2);
43935}
43936const MagazineFurtherReadingBox = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$u]]);
43937const _sfc_main$t = {
43938  name: "MagazineArticleAboutBox"
43939};
43940const _hoisted_1$s = { class: "content-block row" };
43941const _hoisted_2$m = { class: "columns" };
43942const _hoisted_3$i = { class: "magazine-article-about-box" };
43943function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
43944  return openBlock(), createElementBlock("div", _hoisted_1$s, [
43945    createBaseVNode("div", _hoisted_2$m, [
43946      createBaseVNode("div", _hoisted_3$i, [
43947        _cache[0] || (_cache[0] = createBaseVNode("img", {
43948          src: "/assets/img/swoosh_sand.jpg",
43949          loading: "lazy",
43950          role: "decoration"
43951        }, null, -1)),
43952        createBaseVNode("p", null, [
43953          renderSlot(_ctx.$slots, "default")
43954        ])
43955      ])
43956    ])
43957  ]);
43958}
43959const MagazineArticleAboutBox = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$t]]);
43960const _sfc_main$s = {
43961  name: "MagazineArticleFigure",
43962  props: {
43963    src: {
43964      type: String,
43965      required: true
43966    },
43967    alt: {
43968      type: String,
43969      required: true
43970    },
43971    caption: {
43972      type: String,
43973      default: null
43974    },
43975    alignment: {
43976      type: String,
43977      default: "full"
43978    }
43979  }
43980};
43981const _hoisted_1$r = { class: "content-block row" };
43982const _hoisted_2$l = ["src", "alt"];
43983function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
43984  return openBlock(), createElementBlock("div", _hoisted_1$r, [
43985    createBaseVNode("div", {
43986      class: normalizeClass(["magazine-article-figure columns", {
43987        "large-9 left-aligned": $props.alignment === "left",
43988        "large-9 large-push-3 right-aligned": $props.alignment === "right",
43989        "large-9 large-push-2 center-aligned": $props.alignment === "center"
43990      }])
43991    }, [
43992      createBaseVNode("figure", null, [
43993        createBaseVNode("img", {
43994          src: $props.src,
43995          alt: $props.alt
43996        }, null, 8, _hoisted_2$l),
43997        createBaseVNode("figcaption", null, toDisplayString$1($props.caption), 1)
43998      ])
43999    ], 2)
44000  ]);
44001}
44002const MagazineArticleFigure = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$s]]);
44003const _sfc_main$r = {
44004  name: "MagazineArticleHeader",
44005  props: {
44006    themeName: {
44007      type: String,
44008      required: true
44009    },
44010    themeSwooshUrl: {
44011      type: String,
44012      required: true
44013    },
44014    headline: {
44015      type: String,
44016      required: true
44017    },
44018    subline: {
44019      type: String,
44020      required: true
44021    },
44022    byline1: {
44023      type: String,
44024      default: null
44025    },
44026    byline2: {
44027      type: String,
44028      default: null
44029    }
44030  },
44031  computed: {
44032    swooshUrl() {
44033      return `url(${this.themeSwooshUrl})`;
44034    }
44035  }
44036};
44037const __injectCSSVars__$1 = () => {
44038  useCssVars((_ctx) => ({
44039    "b26d4ee0": _ctx.swooshUrl
44040  }));
44041};
44042const __setup__$1 = _sfc_main$r.setup;
44043_sfc_main$r.setup = __setup__$1 ? (props2, ctx) => {
44044  __injectCSSVars__$1();
44045  return __setup__$1(props2, ctx);
44046} : __injectCSSVars__$1;
44047const _hoisted_1$q = { class: "magazine-article-header" };
44048const _hoisted_2$k = { class: "magazine-article-header-theme" };
44049const _hoisted_3$h = { class: "slide-transform-wrapper" };
44050const _hoisted_4$c = { class: "slide-transform-wrapper" };
44051const _hoisted_5$7 = { class: "magazine-article-header-subline" };
44052const _hoisted_6$5 = {
44053  key: 0,
44054  class: "magazine-article-header-byline"
44055};
44056const _hoisted_7$5 = {
44057  key: 0,
44058  class: "magazine-article-header-byline"
44059};
44060function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
44061  return openBlock(), createElementBlock("header", _hoisted_1$q, [
44062    createVNode(Transition, {
44063      appear: "",
44064      name: "fadeInDelayed"
44065    }, {
44066      default: withCtx(() => [
44067        createBaseVNode("p", _hoisted_2$k, toDisplayString$1($props.themeName), 1)
44068      ]),
44069      _: 1
44070    }),
44071    createBaseVNode("div", _hoisted_3$h, [
44072      createVNode(Transition, {
44073        appear: "",
44074        name: "fadeInTextFromBelow"
44075      }, {
44076        default: withCtx(() => [
44077          createBaseVNode("h1", null, toDisplayString$1($props.headline), 1)
44078        ]),
44079        _: 1
44080      })
44081    ]),
44082    createBaseVNode("div", _hoisted_4$c, [
44083      createVNode(Transition, {
44084        appear: "",
44085        name: "fadeInTextFromBelow"
44086      }, {
44087        default: withCtx(() => [
44088          createBaseVNode("p", _hoisted_5$7, toDisplayString$1($props.subline), 1)
44089        ]),
44090        _: 1
44091      })
44092    ]),
44093    createVNode(Transition, {
44094      appear: "",
44095      name: "fadeInDelayed"
44096    }, {
44097      default: withCtx(() => [
44098        $props.byline1 ? (openBlock(), createElementBlock("p", _hoisted_6$5, toDisplayString$1($props.byline1), 1)) : createCommentVNode("", true)
44099      ]),
44100      _: 1
44101    }),
44102    createVNode(Transition, {
44103      appear: "",
44104      name: "fadeInDelayed"
44105    }, {
44106      default: withCtx(() => [
44107        $props.byline2 ? (openBlock(), createElementBlock("p", _hoisted_7$5, toDisplayString$1($props.byline2), 1)) : createCommentVNode("", true)
44108      ]),
44109      _: 1
44110    })
44111  ]);
44112}
44113const MagazineArticleHeader = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$r]]);
44114const _sfc_main$q = {
44115  name: "MagazineArticleIntro",
44116  props: {
44117    text: {
44118      type: String,
44119      required: true
44120    }
44121  }
44122};
44123const _hoisted_1$p = { class: "magazine-article-intro columns" };
44124function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
44125  return openBlock(), createElementBlock("div", _hoisted_1$p, [
44126    createBaseVNode("p", null, toDisplayString$1($props.text), 1)
44127  ]);
44128}
44129const MagazineArticleIntro = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$q]]);
44130const _sfc_main$p = {
44131  name: "MagazineArticleList",
44132  components: {
44133    ArticleList
44134  },
44135  props: {
44136    title: {
44137      type: String,
44138      required: true
44139    },
44140    articles: {
44141      type: Array,
44142      required: true
44143    }
44144  }
44145  // data() {
44146  //   return {};
44147  // },
44148  // computed: {},
44149  // watch: {},
44150  // Livecycle hooks
44151  // created() {},
44152  // mounted() {},
44153  // updated() {},
44154  // beforeUnmount() {},
44155  // methods: {},
44156};
44157const _hoisted_1$o = { class: "magazine-article-list" };
44158function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
44159  const _component_article_list = resolveComponent("article-list");
44160  return openBlock(), createElementBlock("div", _hoisted_1$o, [
44161    createBaseVNode("h2", null, toDisplayString$1($props.title), 1),
44162    createVNode(_component_article_list, {
44163      "is-magazine": "",
44164      articles: $props.articles
44165    }, null, 8, ["articles"])
44166  ]);
44167}
44168const MagazineArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$p]]);
44169const _sfc_main$o = {
44170  name: "MagazineArticleMediaIntro",
44171  props: {
44172    text: {
44173      type: String,
44174      required: true
44175    },
44176    imageUrl: {
44177      type: String,
44178      required: true
44179    },
44180    imageAlt: {
44181      type: String,
44182      required: true
44183    },
44184    imageCaption: {
44185      type: String,
44186      default: null
44187    }
44188  }
44189};
44190const _hoisted_1$n = { class: "magazine-article-media-intro" };
44191const _hoisted_2$j = { class: "columns large-4" };
44192const _hoisted_3$g = ["src", "alt"];
44193const _hoisted_4$b = { key: 0 };
44194const _hoisted_5$6 = { class: "columns large-8" };
44195function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
44196  return openBlock(), createElementBlock("div", _hoisted_1$n, [
44197    createBaseVNode("figure", _hoisted_2$j, [
44198      createBaseVNode("img", {
44199        src: $props.imageUrl,
44200        alt: $props.imageAlt
44201      }, null, 8, _hoisted_3$g),
44202      $props.imageCaption ? (openBlock(), createElementBlock("figcaption", _hoisted_4$b, toDisplayString$1($props.imageCaption), 1)) : createCommentVNode("", true)
44203    ]),
44204    createBaseVNode("p", _hoisted_5$6, toDisplayString$1($props.text), 1)
44205  ]);
44206}
44207const MagazineArticleMediaIntro = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$o]]);
44208const _sfc_main$n = {
44209  name: "MagazineArticleTextBlock",
44210  // components: {},
44211  props: {
44212    headline: {
44213      type: String,
44214      default: null
44215    },
44216    alignment: {
44217      type: String,
44218      default: "full"
44219    }
44220  },
44221  data() {
44222    return {
44223      throttleHandleScroll: null
44224    };
44225  },
44226  // computed: {},
44227  // watch: {},
44228  // Livecycle hooks
44229  created() {
44230    this.throttleHandleScroll = throttle$1(this.handleScroll, 50);
44231    window.addEventListener("scroll", this.throttleHandleScroll);
44232  },
44233  // updated() {},
44234  beforeUnmount() {
44235    window.removeEventListener("scroll", this.throttleHandleScroll);
44236  },
44237  methods: {
44238    handleScroll() {
44239      const windowHeight = window.innerHeight;
44240      const scrolledDistance = window.scrollY || document.documentElement.scrollTop;
44241      const positionOfTheElement = this.$refs.magazineArticleTextBlock.getBoundingClientRect().top + scrolledDistance;
44242      const bottomOfTheElement = this.$refs.magazineArticleTextBlock.getBoundingClientRect().bottom + scrolledDistance;
44243      const buffer2 = windowHeight / 3.25;
44244      let visibilityPercent = 0;
44245      const posToHit = positionOfTheElement - windowHeight + buffer2;
44246      const posToStop = bottomOfTheElement - windowHeight + buffer2;
44247      if (posToHit < scrolledDistance) {
44248        visibilityPercent = 100 * (scrolledDistance - posToHit) / (posToStop - posToHit);
44249        if (visibilityPercent > 100) {
44250          visibilityPercent = 100;
44251        }
44252      }
44253      this.$refs.readingLine.style.height = `${visibilityPercent}%`;
44254    }
44255  }
44256};
44257const _hoisted_1$m = {
44258  ref: "magazineArticleTextBlock",
44259  class: "magazine-article-text-block"
44260};
44261const _hoisted_2$i = ["v-if"];
44262const _hoisted_3$f = { class: "magazine-article-text-block-content" };
44263const _hoisted_4$a = {
44264  ref: "readingLine",
44265  class: "reading-line"
44266};
44267function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
44268  return openBlock(), createElementBlock("div", _hoisted_1$m, [
44269    createBaseVNode("h2", {
44270      "v-if": $props.headline,
44271      class: "magazine-article-text-block-headline"
44272    }, toDisplayString$1($props.headline), 9, _hoisted_2$i),
44273    createBaseVNode("div", _hoisted_3$f, [
44274      createBaseVNode("div", _hoisted_4$a, null, 512),
44275      renderSlot(_ctx.$slots, "default")
44276    ])
44277  ], 512);
44278}
44279const MagazineArticleTextBlock = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$n]]);
44280const _sfc_main$m = {
44281  name: "MagazineEditorial"
44282};
44283const _hoisted_1$l = {
44284  href: "#",
44285  class: "magazine-editorial"
44286};
44287const _hoisted_2$h = { class: "magazine-editorial-content-container" };
44288const _hoisted_3$e = { class: "magazine-editorial-figure-container" };
44289function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
44290  return openBlock(), createElementBlock("a", _hoisted_1$l, [
44291    createBaseVNode("div", _hoisted_2$h, [
44292      renderSlot(_ctx.$slots, "content")
44293    ]),
44294    createBaseVNode("div", _hoisted_3$e, [
44295      renderSlot(_ctx.$slots, "figure")
44296    ])
44297  ]);
44298}
44299const MagazineEditorial = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$m]]);
44300const _sfc_main$l = {
44301  name: "MagazineQuote",
44302  props: {
44303    content: {
44304      type: String,
44305      required: true
44306    },
44307    author: {
44308      type: String,
44309      required: true
44310    },
44311    authorDescription: {
44312      type: String,
44313      default: null
44314    },
44315    themeSwooshUrl: {
44316      type: String,
44317      required: true
44318    }
44319  },
44320  computed: {
44321    swooshUrl() {
44322      return `url(${this.themeSwooshUrl})`;
44323    }
44324  }
44325};
44326const __injectCSSVars__ = () => {
44327  useCssVars((_ctx) => ({
44328    "119e0cf9": _ctx.swooshUrl
44329  }));
44330};
44331const __setup__ = _sfc_main$l.setup;
44332_sfc_main$l.setup = __setup__ ? (props2, ctx) => {
44333  __injectCSSVars__();
44334  return __setup__(props2, ctx);
44335} : __injectCSSVars__;
44336const _hoisted_1$k = { class: "magazine-quote" };
44337const _hoisted_2$g = { class: "columns large-4 large-push-8" };
44338const _hoisted_3$d = { class: "magazine-quote-author" };
44339const _hoisted_4$9 = {
44340  key: 0,
44341  class: "magazine-quote-author-description"
44342};
44343function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
44344  return openBlock(), createElementBlock("div", _hoisted_1$k, [
44345    createBaseVNode("figure", null, [
44346      createBaseVNode("blockquote", null, toDisplayString$1($props.content), 1),
44347      createBaseVNode("figcaption", _hoisted_2$g, [
44348        createBaseVNode("p", _hoisted_3$d, toDisplayString$1($props.author), 1),
44349        $props.authorDescription ? (openBlock(), createElementBlock("p", _hoisted_4$9, toDisplayString$1($props.authorDescription), 1)) : createCommentVNode("", true)
44350      ])
44351    ])
44352  ]);
44353}
44354const MagazineQuote = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$l]]);
44355const _sfc_main$k = {
44356  name: "MagazineTopicGroup",
44357  props: {
44358    title: {
44359      type: String,
44360      required: true
44361    },
44362    articles: {
44363      type: Array,
44364      required: true
44365    }
44366  }
44367};
44368const _hoisted_1$j = { class: "magazine-topic-group" };
44369const _hoisted_2$f = ["href"];
44370function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
44371  return openBlock(), createElementBlock("div", _hoisted_1$j, [
44372    createBaseVNode("h3", null, toDisplayString$1($props.title), 1),
44373    createBaseVNode("ul", null, [
44374      (openBlock(true), createElementBlock(Fragment, null, renderList($props.articles, (article) => {
44375        return openBlock(), createElementBlock("li", {
44376          key: article.id
44377        }, [
44378          createBaseVNode("a", {
44379            href: article.url
44380          }, toDisplayString$1(article.title), 9, _hoisted_2$f)
44381        ]);
44382      }), 128))
44383    ])
44384  ]);
44385}
44386const MagazineTopicGroup = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$k]]);
44387const _sfc_main$j = {
44388  name: "MagazinesArticleList",
44389  components: {
44390    ArticleList
44391  },
44392  props: {
44393    magazinesWithArticles: {
44394      type: Array,
44395      required: true
44396    }
44397  }
44398  // data() {
44399  //   return {};
44400  // },
44401  // computed: {},
44402  // watch: {},
44403  // Livecycle hooks
44404  // created() {},
44405  // mounted() {},
44406  // updated() {},
44407  // beforeUnmount() {},
44408  // methods: {},
44409};
44410const _hoisted_1$i = { class: "magazines-article-list" };
44411function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
44412  const _component_article_list = resolveComponent("article-list");
44413  return openBlock(), createElementBlock("div", _hoisted_1$i, [
44414    (openBlock(true), createElementBlock(Fragment, null, renderList($props.magazinesWithArticles, (magazine, index2) => {
44415      return openBlock(), createElementBlock("div", {
44416        key: index2,
44417        class: "magazine-articled-wrapper"
44418      }, [
44419        createBaseVNode("h2", null, toDisplayString$1(magazine.title), 1),
44420        createVNode(_component_article_list, {
44421          "is-article": "",
44422          articles: magazine.articleList
44423        }, null, 8, ["articles"])
44424      ]);
44425    }), 128))
44426  ]);
44427}
44428const MagazinesArticleList = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$j]]);
44429const _sfc_main$i = {
44430  name: "MagazineFilterList",
44431  components: {
44432    MagazineFilter
44433  },
44434  props: {
44435    heading: {
44436      type: String,
44437      default: null
44438    },
44439    filters: {
44440      type: Array,
44441      default: () => []
44442    }
44443  },
44444  data() {
44445    return {
44446      selectedFilter: null
44447    };
44448  },
44449  // computed: {},
44450  methods: {
44451    selectFilter(filterValue) {
44452      if (filterValue === this.selectedFilter) {
44453        this.selectedFilter = null;
44454      } else {
44455        this.selectedFilter = filterValue;
44456      }
44457    }
44458  }
44459  // watch() {},
44460  // Livecycle hooks
44461  // created() {},
44462  // mounted() {},
44463  // updated() {},
44464  // beforeDestroy() {},
44465};
44466const _hoisted_1$h = { class: "magazine-filter-list" };
44467const _hoisted_2$e = {
44468  key: 0,
44469  class: "heading"
44470};
44471const _hoisted_3$c = { class: "filter-list-wrapper" };
44472function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
44473  const _component_magazine_filter = resolveComponent("magazine-filter");
44474  return openBlock(), createElementBlock("div", _hoisted_1$h, [
44475    $props.heading ? (openBlock(), createElementBlock("h2", _hoisted_2$e, toDisplayString$1($props.heading), 1)) : createCommentVNode("", true),
44476    createBaseVNode("div", _hoisted_3$c, [
44477      (openBlock(true), createElementBlock(Fragment, null, renderList($props.filters, (filter2, index2) => {
44478        return openBlock(), createBlock(_component_magazine_filter, {
44479          key: index2,
44480          "is-selected": $data.selectedFilter === filter2.value ? true : false,
44481          label: filter2.label,
44482          onClick: ($event) => $options.selectFilter(filter2.value)
44483        }, null, 8, ["is-selected", "label", "onClick"]);
44484      }), 128))
44485    ])
44486  ]);
44487}
44488const MagazineFilterList = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$i]]);
44489const _sfc_main$h = {
44490  name: "TextFootnote"
44491  // components: {},
44492  // props: {},
44493  // data() {
44494  //   return {};
44495  // },
44496  // computed: {},
44497  // watch: {},
44498  // Livecycle hooks
44499  // created() {},
44500  // mounted() {},
44501  // updated() {},
44502  // beforeUnmount() {},
44503  // methods: {},
44504};
44505const _hoisted_1$g = { class: "text-footnote content-block row" };
44506const _hoisted_2$d = { class: "columns" };
44507const _hoisted_3$b = { class: "richtext-wrapper" };
44508function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
44509  return openBlock(), createElementBlock("div", _hoisted_1$g, [
44510    createBaseVNode("div", _hoisted_2$d, [
44511      createBaseVNode("div", _hoisted_3$b, [
44512        renderSlot(_ctx.$slots, "default")
44513      ])
44514    ])
44515  ]);
44516}
44517const TextFootnote = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$h]]);
44518const _sfc_main$g = {
44519  name: "OverlayContainer",
44520  // components: {},
44521  // props: {},
44522  data() {
44523    return {
44524      swalOpen: false,
44525      captionOpen: false
44526    };
44527  },
44528  // computed: {},
44529  // watch: {},
44530  // Livecycle hooks
44531  // created() {},
44532  // mounted() {},
44533  updated() {
44534    this.showCaptionToggleButton();
44535  },
44536  // beforeUnmount() {},
44537  methods: {
44538    openOverlay() {
44539      this.$Swal.fire({
44540        html: this.$refs.swalWrapperRef,
44541        showClass: {
44542          backdrop: "swal2-noanimation",
44543          // disable backdrop animation
44544          popup: "swal2-noanimation",
44545          // disable popup animation
44546          icon: "swal2-noanimation"
44547          // disable icon animation
44548        },
44549        customClass: {
44550          container: "overlay-content",
44551          popup: "overlay-popup",
44552          closeButton: "overlay-close-button  icon-close-menu-mobile"
44553        },
44554        backdrop: `hsla(0,0%,100%, 1.00)	`,
44555        buttonsStyling: false,
44556        showConfirmButton: false,
44557        allowOutsideClick: true,
44558        allowEscapeKey: true,
44559        showCloseButton: true,
44560        closeButtonAriaLabel: "Schließen",
44561        didRender: () => {
44562          this.showCaptionToggleButton();
44563        }
44564      });
44565      this.swalOpen = true;
44566    },
44567    closeOverlay() {
44568      this.$Swal.close();
44569      this.swalOpen = false;
44570    },
44571    showCaptionToggleButton() {
44572      const contentImages = document.querySelectorAll(".swal-wrapper .content-image");
44573      contentImages.forEach((contentImage) => {
44574        const figcaption = contentImage.querySelector("figcaption");
44575        if (figcaption) {
44576          const contentImageDescription = figcaption.querySelector(".content-image-description");
44577          if (contentImageDescription) {
44578            const isOverflowing = this.isTextOverflowing(contentImageDescription);
44579            if (isOverflowing) {
44580              const toggleButton = contentImage.querySelector(".caption-toggle-button");
44581              toggleButton.classList.add("show");
44582              toggleButton.addEventListener("click", () => this.toggleCaption(contentImage));
44583            }
44584          }
44585        }
44586      });
44587    },
44588    // Modified toggle caption to work with multiple images
44589    toggleCaption(specificContentImage = null) {
44590      const targetFigcaption = specificContentImage ? specificContentImage.querySelector("figcaption") : document.querySelector(".swal-wrapper figcaption");
44591      if (targetFigcaption) {
44592        targetFigcaption.classList.toggle("caption-open");
44593        const toggleButton = targetFigcaption.querySelector(".caption-toggle-button");
44594        if (toggleButton) {
44595          toggleButton.textContent = targetFigcaption.classList.contains("caption-open") ? "Schließen" : "Weiterlesen";
44596        }
44597      }
44598    },
44599    // Method to check if text is overflowing
44600    isTextOverflowing(element) {
44601      if (!element) return false;
44602      const computedStyle = window.getComputedStyle(element);
44603      const lineClamp = computedStyle.getPropertyValue("-webkit-line-clamp");
44604      const lineHeight = parseFloat(computedStyle.lineHeight);
44605      const maxHeight = lineClamp ? lineHeight * parseInt(lineClamp, 10) : null;
44606      return maxHeight ? element.scrollHeight > maxHeight : element.scrollHeight > element.clientHeight;
44607    }
44608  }
44609};
44610const _hoisted_1$f = { class: "overlay-container" };
44611const _hoisted_2$c = {
44612  ref: "swalWrapperRef",
44613  class: "swal-wrapper"
44614};
44615function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
44616  return openBlock(), createElementBlock("div", _hoisted_1$f, [
44617    createBaseVNode("button", {
44618      class: "overlay-open-button",
44619      onClick: _cache[0] || (_cache[0] = ($event) => $options.openOverlay())
44620    }, [
44621      renderSlot(_ctx.$slots, "overlay-open-button-content", {}, () => [
44622        _cache[1] || (_cache[1] = createTextVNode(" This is Fallback for Overlay Button "))
44623      ])
44624    ]),
44625    withDirectives(createBaseVNode("div", null, [
44626      createBaseVNode("div", _hoisted_2$c, [
44627        renderSlot(_ctx.$slots, "overlay-container-content", { shouldBeRendered: $data.swalOpen }, () => [
44628          _cache[2] || (_cache[2] = createTextVNode(" This is Fallback for Overlay Content "))
44629        ])
44630      ], 512)
44631    ], 512), [
44632      [vShow, false]
44633    ])
44634  ]);
44635}
44636const OverlayContainer = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$g]]);
44637const _sfc_main$f = {
44638  name: "CampList",
44639  // components: {},
44640  props: {
44641    markers: {
44642      type: Array,
44643      default: () => []
44644    }
44645  },
44646  emits: ["openMarker"],
44647  computed: {
44648    alphabeticalOrderedCampList() {
44649      let list = {};
44650      for (const marker of this.markers) {
44651        if (!marker.title || typeof marker.title !== "string") continue;
44652        const beginningLetter = marker.title[0].toLowerCase();
44653        if (list[beginningLetter] === void 0) {
44654          list[beginningLetter] = [];
44655        }
44656        list[beginningLetter].push(marker);
44657      }
44658      const sortedKeys = Object.keys(list).sort((a, b) => a.localeCompare(b, "de"));
44659      const orderedList = {};
44660      sortedKeys.forEach((key) => {
44661        orderedList[key] = this.sortLetterListByTitle(list[key]);
44662      });
44663      return orderedList;
44664    }
44665  },
44666  methods: {
44667    sortLetterListByTitle(letterList) {
44668      return letterList.sort(function(a, b) {
44669        const titleA = a.title.toLowerCase();
44670        const titleB = b.title.toLowerCase();
44671        return titleA.localeCompare(titleB, "de");
44672      });
44673    }
44674  }
44675  // updated() {},
44676  // beforeDestroy() {},
44677};
44678const _hoisted_1$e = { class: "camp-list" };
44679const _hoisted_2$b = { class: "initial-letter" };
44680const _hoisted_3$a = { class: "names" };
44681const _hoisted_4$8 = ["href"];
44682function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
44683  return openBlock(), createElementBlock("div", _hoisted_1$e, [
44684    (openBlock(true), createElementBlock(Fragment, null, renderList($options.alphabeticalOrderedCampList, (campsForLetter, letterIndex) => {
44685      return openBlock(), createElementBlock("div", {
44686        key: letterIndex,
44687        class: "letter-container"
44688      }, [
44689        createBaseVNode("span", _hoisted_2$b, toDisplayString$1(letterIndex.toUpperCase()), 1),
44690        createBaseVNode("div", _hoisted_3$a, [
44691          (openBlock(true), createElementBlock(Fragment, null, renderList(campsForLetter, (camp, campIndex) => {
44692            return openBlock(), createElementBlock("a", {
44693              key: `${camp.title}-${campIndex}`,
44694              href: camp.detailPage,
44695              target: "_blank"
44696            }, toDisplayString$1(camp.title), 9, _hoisted_4$8);
44697          }), 128))
44698        ])
44699      ]);
44700    }), 128))
44701  ]);
44702}
44703const CampList = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$f]]);
44704const _sfc_main$e = {
44705  name: "TeaserDuoMagnify",
44706  components: {}
44707  // props: {},
44708  // data() {
44709  //   return {};
44710  // },
44711  // computed: {},
44712  // methods: {},
44713  // watch() {},
44714  // Livecycle hooks
44715  // created() {},
44716  // mounted() {},
44717  // updated() {},
44718  // beforeDestroy() {},
44719};
44720const _hoisted_1$d = { class: "teaser-duo-magnify row equalize-medium" };
44721const _hoisted_2$a = { class: "columns medium-7 teaser-1" };
44722const _hoisted_3$9 = { class: "columns medium-4 medium-push-1 teaser-2" };
44723function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
44724  return openBlock(), createElementBlock("div", _hoisted_1$d, [
44725    createBaseVNode("div", _hoisted_2$a, [
44726      renderSlot(_ctx.$slots, "teaser1")
44727    ]),
44728    createBaseVNode("div", _hoisted_3$9, [
44729      renderSlot(_ctx.$slots, "teaser2")
44730    ])
44731  ]);
44732}
44733const TeaserDuoMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$e]]);
44734const _sfc_main$d = {
44735  name: "TextOverlayImage",
44736  // components: {},
44737  props: {
44738    headline: {
44739      type: String,
44740      default: null
44741    }
44742  }
44743  // data() {
44744  //   return {};
44745  // },
44746  // computed: {},
44747  // watch: {},
44748  // Livecycle hooks
44749  // created() {},
44750  // mounted() {},
44751  // updated() {},
44752  // beforeUnmount() {},
44753  // methods: {},
44754};
44755const _hoisted_1$c = { class: "text-overlay-image row equalize-medium" };
44756const _hoisted_2$9 = { class: "columns medium-5 large-4" };
44757const _hoisted_3$8 = { class: "overlay-image-wrapper" };
44758const _hoisted_4$7 = { class: "columns medium-7 medium-push-1 large-6" };
44759const _hoisted_5$5 = { class: "header" };
44760const _hoisted_6$4 = {
44761  key: 0,
44762  class: "headline"
44763};
44764const _hoisted_7$4 = { class: "richtext-wrapper" };
44765function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
44766  return openBlock(), createElementBlock("div", _hoisted_1$c, [
44767    createBaseVNode("div", _hoisted_2$9, [
44768      createBaseVNode("div", _hoisted_3$8, [
44769        renderSlot(_ctx.$slots, "image1"),
44770        renderSlot(_ctx.$slots, "image2")
44771      ])
44772    ]),
44773    createBaseVNode("div", _hoisted_4$7, [
44774      createBaseVNode("div", _hoisted_5$5, [
44775        $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_6$4, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true)
44776      ]),
44777      createBaseVNode("div", _hoisted_7$4, [
44778        renderSlot(_ctx.$slots, "default")
44779      ])
44780    ])
44781  ]);
44782}
44783const TextOverlayImage = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$d]]);
44784const _sfc_main$c = {
44785  name: "TextOffset",
44786  // components: {},
44787  props: {
44788    headline: {
44789      type: String,
44790      default: null
44791    }
44792  }
44793  // data() {
44794  //   return {};
44795  // },
44796  // computed: {},
44797  // watch: {},
44798  // Livecycle hooks
44799  // created() {},
44800  // mounted() {},
44801  // updated() {},
44802  // beforeUnmount() {},
44803  // methods: {},
44804};
44805const _hoisted_1$b = { class: "text-offset row" };
44806const _hoisted_2$8 = { class: "columns medium-10 large-9" };
44807const _hoisted_3$7 = { class: "header" };
44808const _hoisted_4$6 = {
44809  key: 0,
44810  class: "headline"
44811};
44812function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
44813  return openBlock(), createElementBlock("div", _hoisted_1$b, [
44814    createBaseVNode("div", _hoisted_2$8, [
44815      createBaseVNode("div", _hoisted_3$7, [
44816        $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_4$6, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true)
44817      ]),
44818      renderSlot(_ctx.$slots, "default")
44819    ])
44820  ]);
44821}
44822const TextOffset = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$c]]);
44823const _sfc_main$b = {
44824  name: "CitymapArticlesNavigation",
44825  components: {
44826    LinkButton
44827  },
44828  props: {
44829    previousArticleUrl: {
44830      type: String,
44831      default: null
44832    },
44833    nextArticleUrl: {
44834      type: String,
44835      default: null
44836    },
44837    backToOverviewUrl: {
44838      type: String,
44839      required: true
44840    }
44841  }
44842};
44843const _hoisted_1$a = { class: "citymap-articles-navigation" };
44844function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
44845  const _component_link_button = resolveComponent("link-button");
44846  return openBlock(), createElementBlock("div", _hoisted_1$a, [
44847    createVNode(_component_link_button, {
44848      label: _ctx.$t("citymap.previousArticle"),
44849      url: $props.previousArticleUrl
44850    }, null, 8, ["label", "url"]),
44851    createVNode(_component_link_button, {
44852      label: _ctx.$t("citymap.backToOverview"),
44853      url: $props.backToOverviewUrl,
44854      class: "icon-arrow-back"
44855    }, {
44856      default: withCtx(() => _cache[0] || (_cache[0] = [
44857        createBaseVNode("span", { class: "visually-hidden" }, " $t('citymap.backToOverview') ", -1)
44858      ])),
44859      _: 1,
44860      __: [0]
44861    }, 8, ["label", "url"]),
44862    createVNode(_component_link_button, {
44863      label: _ctx.$t("citymap.nextArticle"),
44864      url: $props.nextArticleUrl
44865    }, null, 8, ["label", "url"])
44866  ]);
44867}
44868const CitymapArticlesNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$b]]);
44869const _sfc_main$a = {
44870  name: "TextVideoList"
44871  // components: {},
44872  // props: {},
44873  // data() {
44874  //   return {};
44875  // },
44876  // computed: {},
44877  // watch: {},
44878  // Livecycle hooks
44879  // created() {},
44880  // mounted() {},
44881  // updated() {},
44882  // beforeUnmount() {},
44883  // methods: {},
44884};
44885const _hoisted_1$9 = { class: "text-video-list" };
44886function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
44887  return openBlock(), createElementBlock("div", _hoisted_1$9, [
44888    renderSlot(_ctx.$slots, "default")
44889  ]);
44890}
44891const TextVideoList = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$a]]);
44892const _sfc_main$9 = {
44893  name: "TextVideo",
44894  props: {
44895    headline: {
44896      type: String,
44897      default: null
44898    },
44899    category: {
44900      type: String,
44901      default: null
44902    },
44903    videoUrl: {
44904      type: String,
44905      default: null
44906    }
44907  }
44908};
44909const _hoisted_1$8 = { class: "text-video row" };
44910const _hoisted_2$7 = { class: "columns medium-5 large-4" };
44911const _hoisted_3$6 = { class: "video-url-wrapper" };
44912const _hoisted_4$5 = {
44913  key: 0,
44914  class: "video-url"
44915};
44916const _hoisted_5$4 = { class: "columns medium-7 large-6" };
44917const _hoisted_6$3 = { class: "header" };
44918const _hoisted_7$3 = {
44919  key: 0,
44920  class: "headline"
44921};
44922const _hoisted_8$2 = {
44923  key: 1,
44924  class: "category"
44925};
44926const _hoisted_9$2 = { class: "richtext-wrapper -small" };
44927function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
44928  return openBlock(), createElementBlock("div", _hoisted_1$8, [
44929    createBaseVNode("div", _hoisted_2$7, [
44930      createBaseVNode("div", _hoisted_3$6, [
44931        $props.videoUrl ? (openBlock(), createElementBlock("p", _hoisted_4$5, toDisplayString$1($props.videoUrl), 1)) : createCommentVNode("", true)
44932      ])
44933    ]),
44934    createBaseVNode("div", _hoisted_5$4, [
44935      createBaseVNode("div", _hoisted_6$3, [
44936        $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_7$3, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true),
44937        $props.category ? (openBlock(), createElementBlock("p", _hoisted_8$2, toDisplayString$1($props.category), 1)) : createCommentVNode("", true)
44938      ]),
44939      createBaseVNode("div", _hoisted_9$2, [
44940        renderSlot(_ctx.$slots, "default")
44941      ]),
44942      renderSlot(_ctx.$slots, "buttons")
44943    ])
44944  ]);
44945}
44946const TextVideo = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$9]]);
44947const readParams = () => {
44948  const queryString = window.location.search;
44949  const urlParams = new URLSearchParams(queryString);
44950  return urlParams;
44951};
44952const UrlParamsRepository = {
44953  // returns value for a param or false if param does not exist
44954  get(param) {
44955    const urlParams = readParams();
44956    if (urlParams.has(param) === true) {
44957      if (urlParams.getAll(param).length > 1) {
44958        return urlParams.getAll(param);
44959      }
44960      return urlParams.get(param);
44961    }
44962    return false;
44963  },
44964  // returns value(s) for a param as array or an empty array
44965  getAll(param) {
44966    const urlParams = readParams();
44967    if (urlParams.has(param) === true) {
44968      return urlParams.getAll(param);
44969    }
44970    return false;
44971  },
44972  // set value for a query param
44973  set(param, value, replace = false, data = {}) {
44974    const urlParams = readParams();
44975    urlParams.set(param, value);
44976    if (replace === true) {
44977      window.history.replaceState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`));
44978    } else {
44979      window.history.pushState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`));
44980    }
44981  },
44982  // check if param exists
44983  has(param) {
44984    const urlParams = readParams();
44985    return urlParams.has(param);
44986  },
44987  // delete param from url query string
44988  delete(param, replace = false, data = {}) {
44989    const urlParams = readParams();
44990    if (urlParams.has(param) === true) {
44991      urlParams.delete(param);
44992      if (replace === true) {
44993        window.history.replaceState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`));
44994      } else {
44995        window.history.pushState(data, "", decodeURIComponent(`${window.location.pathname}?${urlParams}`));
44996      }
44997    }
44998  }
44999};
45000const baseURL = window.location.origin;
45001const Repository = axios.create({
45002  baseURL
45003});
45004const MagnoliaShopItemRepository = {
45005  get(articleNumbers = []) {
45006    const baseUrl = store.state[ENVIRONMENT_TYPES.NAME][`${ENVIRONMENT_TYPES.state.ENVIRONMENT_BASE_URL}`];
45007    const language = store.state[ENVIRONMENT_TYPES.NAME][`${ENVIRONMENT_TYPES.state.ENVIRONMENT_LANGUAGE}`];
45008    return Repository.get(
45009      `${baseUrl}/.rest/shop/getShopItems?articleNumber=${articleNumbers.join(",")}&locale=${language}`
45010    );
45011  }
45012};
45013const repositories = {
45014  UrlParamsRepository,
45015  MagnoliaShopItemRepository
45016};
45017const RepositoryFactory = {
45018  get: (name) => repositories[name]
45019};
45020const _sfc_main$8 = {
45021  name: "RemoveFromCart",
45022  // components: {},
45023  props: {
45024    articleNumber: {
45025      type: String,
45026      default: ""
45027    }
45028  },
45029  // data() {},
45030  // computed: {},
45031  // watch: {},
45032  // Livecycle hooks
45033  // created() {},
45034  // mounted() {},
45035  // updated() {},
45036  // beforeUnmount() {},
45037  methods: {
45038    ...mapMutations(CART_TYPES.NAME, {
45039      removeFromCart: CART_TYPES.mutations.CART_SET_REMOVE
45040    }),
45041    removeItem() {
45042      this.removeFromCart({
45043        code: this.articleNumber
45044      });
45045    }
45046  }
45047};
45048function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
45049  return openBlock(), createElementBlock("button", {
45050    class: "link-button remove-from-cart",
45051    onClick: _cache[0] || (_cache[0] = withModifiers((...args) => $options.removeItem && $options.removeItem(...args), ["prevent"]))
45052  }, toDisplayString$1(_ctx.$t("shop.removeItem.label")), 1);
45053}
45054const RemoveFromCart = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$8]]);
45055const _sfc_main$7 = {
45056  name: "CartItem",
45057  components: {
45058    TextImage,
45059    RemoveFromCart
45060  },
45061  props: {
45062    articleNumber: {
45063      type: String,
45064      required: true
45065    },
45066    articleCount: {
45067      type: Number,
45068      default: 1
45069    },
45070    condensed: {
45071      type: Boolean,
45072      default: false
45073    },
45074    title: {
45075      type: String,
45076      default: ""
45077    },
45078    price: {
45079      type: Number,
45080      default: 0
45081    },
45082    imageSrc: {
45083      type: String,
45084      default: ""
45085    },
45086    link: {
45087      type: String,
45088      default: ""
45089    }
45090  },
45091  data() {
45092    return {
45093      count: 1
45094    };
45095  },
45096  computed: {
45097    displayPrice() {
45098      const roundedPrice = (parseFloat(this.price) * this.count).toFixed(2);
45099      const priceString = roundedPrice.toString().replace(".", ",");
45100      return priceString;
45101    }
45102  },
45103  watch: {
45104    articleCount(to) {
45105      this.count = to;
45106    }
45107  },
45108  // Livecycle hooks
45109  // created() {},
45110  mounted() {
45111    this.count = this.articleCount;
45112  },
45113  // updated() {},
45114  // beforeUnmount() {},
45115  methods: {
45116    ...mapMutations(CART_TYPES.NAME, {
45117      addToCart: CART_TYPES.mutations.CART_SET_ADD
45118    }),
45119    updateArticle() {
45120      this.addToCart({
45121        code: this.articleNumber,
45122        count: this.count
45123      });
45124    }
45125  }
45126};
45127const _hoisted_1$7 = { class: "cart-item" };
45128const _hoisted_2$6 = { key: 0 };
45129const _hoisted_3$5 = ["href"];
45130const _hoisted_4$4 = ["href"];
45131const _hoisted_5$3 = { class: "image-wrapper" };
45132const _hoisted_6$2 = ["src"];
45133const _hoisted_7$2 = { class: "cart-quantity" };
45134const _hoisted_8$1 = ["title"];
45135const _hoisted_9$1 = ["value"];
45136function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
45137  const _component_remove_from_cart = resolveComponent("remove-from-cart");
45138  const _component_text_image = resolveComponent("text-image");
45139  return openBlock(), createElementBlock("div", _hoisted_1$7, [
45140    $props.condensed ? (openBlock(), createElementBlock("p", _hoisted_2$6, [
45141      createBaseVNode("span", null, [
45142        createTextVNode(toDisplayString$1($data.count) + " x ", 1),
45143        createBaseVNode("a", { href: $props.link }, toDisplayString$1($props.title), 9, _hoisted_3$5),
45144        createTextVNode(" (" + toDisplayString$1($props.articleNumber) + ") ", 1)
45145      ]),
45146      createBaseVNode("span", null, toDisplayString$1($options.displayPrice) + "€ ", 1)
45147    ])) : (openBlock(), createBlock(_component_text_image, {
45148      key: 1,
45149      headline: $props.title
45150    }, {
45151      image: withCtx(() => [
45152        createBaseVNode("a", { href: $props.link }, [
45153          createBaseVNode("div", _hoisted_5$3, [
45154            createBaseVNode("img", { src: $props.imageSrc }, null, 8, _hoisted_6$2)
45155          ])
45156        ], 8, _hoisted_4$4)
45157      ]),
45158      buttons: withCtx(() => [
45159        createVNode(_component_remove_from_cart, { "article-number": $props.articleNumber }, null, 8, ["article-number"])
45160      ]),
45161      default: withCtx(() => [
45162        createBaseVNode("p", null, toDisplayString$1(_ctx.$t("shop.article.prefix.short")) + " " + toDisplayString$1($props.articleNumber), 1),
45163        createBaseVNode("p", _hoisted_7$2, [
45164          createBaseVNode("label", null, [
45165            createTextVNode(toDisplayString$1(_ctx.$t("shop.quantity")) + ": ", 1),
45166            withDirectives(createBaseVNode("input", {
45167              "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.count = $event),
45168              type: "number",
45169              class: "",
45170              min: "1",
45171              max: "",
45172              title: _ctx.$t("shop.quantity"),
45173              size: "4",
45174              pattern: "[0-9]*",
45175              inputmode: "numeric",
45176              "aria-labelledby": "label_quantity",
45177              onInput: _cache[1] || (_cache[1] = (...args) => $options.updateArticle && $options.updateArticle(...args))
45178            }, null, 40, _hoisted_8$1), [
45179              [vModelText, $data.count]
45180            ])
45181          ])
45182        ]),
45183        createBaseVNode("p", null, toDisplayString$1($options.displayPrice) + " €", 1)
45184      ]),
45185      _: 1
45186    }, 8, ["headline"])),
45187    createBaseVNode("input", {
45188      type: "hidden",
45189      value: `${$data.count}x${$props.articleNumber}`,
45190      name: "articles[]"
45191    }, null, 8, _hoisted_9$1)
45192  ]);
45193}
45194const CartItem = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$7]]);
45195const ShopItemRepository = RepositoryFactory.get("MagnoliaShopItemRepository");
45196const _sfc_main$6 = {
45197  name: "CartList",
45198  components: {
45199    CartItem
45200  },
45201  props: {
45202    shopLink: {
45203      type: String,
45204      default: ""
45205    },
45206    cartLink: {
45207      type: String,
45208      default: ""
45209    },
45210    checkoutLink: {
45211      type: String,
45212      default: ""
45213    },
45214    checkoutMode: {
45215      type: Boolean,
45216      default: false
45217    }
45218  },
45219  data() {
45220    return {
45221      data: [],
45222      loading: true
45223    };
45224  },
45225  computed: {
45226    ...mapState(CART_TYPES.NAME, {
45227      cartList: CART_TYPES.state.CART_LIST
45228    }),
45229    canCheckout() {
45230      return this.checkoutMode === false && this.mergedList.length > 0;
45231    },
45232    codeList() {
45233      if (this.cartList.length > 0) {
45234        return this.cartList.map((entry) => entry.code);
45235      }
45236      return [];
45237    },
45238    mergedList() {
45239      const cleanList = this.data.filter((entry) => {
45240        const cartEntry = this.cartList.find((item) => item.code === entry.articleNumber);
45241        return !empty(cartEntry);
45242      });
45243      return cleanList.map((entry) => {
45244        const cartEntry = this.cartList.find((item) => item.code === entry.articleNumber);
45245        if (!empty(cartEntry)) {
45246          const { count } = cartEntry;
45247          return {
45248            ...entry,
45249            count
45250          };
45251        }
45252        return {
45253          ...entry,
45254          count: 2
45255        };
45256      });
45257    },
45258    totalPrice() {
45259      let total = 0;
45260      for (let i = 0; i < this.mergedList.length; i++) {
45261        total += this.mergedList[i].price * this.mergedList[i].count;
45262      }
45263      total = total.toFixed(2).toString().replace(".", ",");
45264      return total;
45265    }
45266  },
45267  // watch: {},
45268  // Livecycle hooks
45269  // created() {},
45270  mounted() {
45271    this.loadItemData();
45272  },
45273  // updated() {},
45274  // beforeUnmount() {},
45275  methods: {
45276    async loadItemData() {
45277      if (this.codeList.length > 0) {
45278        try {
45279          const response = await ShopItemRepository.get(this.codeList);
45280          if (response.status === 200 && response.data) {
45281            this.data = response.data;
45282          }
45283        } catch (error) {
45284          console.warn(error);
45285        }
45286      }
45287      this.loading = false;
45288    }
45289  }
45290};
45291const _hoisted_1$6 = {
45292  key: 0,
45293  class: "cart-empty-message"
45294};
45295const _hoisted_2$5 = { class: "cart-list-summary" };
45296const _hoisted_3$4 = { class: "total-price" };
45297const _hoisted_4$3 = ["href"];
45298const _hoisted_5$2 = ["href"];
45299function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
45300  const _component_cart_item = resolveComponent("cart-item");
45301  return openBlock(), createElementBlock("fieldset", {
45302    class: normalizeClass(["cart-list", {
45303      "-condensed": $props.checkoutMode
45304    }])
45305  }, [
45306    (openBlock(true), createElementBlock(Fragment, null, renderList($options.mergedList, (entry) => {
45307      return openBlock(), createBlock(_component_cart_item, {
45308        key: `cart${entry.code}`,
45309        "article-number": entry.articleNumber,
45310        "article-count": entry.count,
45311        "image-src": entry.image,
45312        title: entry.title,
45313        price: entry.price,
45314        condensed: $props.checkoutMode,
45315        link: `${$props.shopLink}${entry.itemPath}`
45316      }, null, 8, ["article-number", "article-count", "image-src", "title", "price", "condensed", "link"]);
45317    }), 128)),
45318    $options.mergedList.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_1$6, toDisplayString$1(_ctx.$t("shop.cart.empty.message")), 1)) : createCommentVNode("", true),
45319    createBaseVNode("div", _hoisted_2$5, [
45320      createBaseVNode("p", _hoisted_3$4, [
45321        createTextVNode(toDisplayString$1(_ctx.$t("shop.cart.totalPrice")) + ": ", 1),
45322        createBaseVNode("span", null, toDisplayString$1($options.totalPrice) + " €", 1)
45323      ]),
45324      !$props.checkoutMode ? (openBlock(), createElementBlock("a", {
45325        key: 0,
45326        class: "link-button shop-link",
45327        href: $props.shopLink
45328      }, toDisplayString$1(_ctx.$t("shop.continueShopping")), 9, _hoisted_4$3)) : createCommentVNode("", true),
45329      $options.canCheckout ? (openBlock(), createElementBlock("a", {
45330        key: 1,
45331        class: "link-button",
45332        href: $props.checkoutLink
45333      }, toDisplayString$1(_ctx.$t("shop.proceedToOrder")), 9, _hoisted_5$2)) : createCommentVNode("", true)
45334    ])
45335  ], 2);
45336}
45337const CartList = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$6]]);
45338const _sfc_main$5 = {
45339  name: "SubNavigation",
45340  // components: {},
45341  props: {
45342    subNavItems: {
45343      type: Array,
45344      required: true,
45345      default: () => []
45346    },
45347    isOpen: {
45348      type: Boolean,
45349      default: false
45350    }
45351  },
45352  emits: ["closeSubNav"],
45353  data() {
45354    return {
45355      currentPath: ""
45356    };
45357  },
45358  computed: {
45359    ...mapGetters(ENVIRONMENT_TYPES.NAME, {
45360      isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET,
45361      isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE
45362    }),
45363    belowBreakpoint() {
45364      return this.isMobile || this.isTablet;
45365    }
45366  },
45367  mounted() {
45368    setTimeout(() => {
45369      window.requestAnimationFrame(() => {
45370        this.focusFirstItem();
45371      });
45372    }, 420);
45373  },
45374  methods: {
45375    focusFirstItem() {
45376      if (this.isOpen) {
45377        this.$refs.subNavItem[0].focus();
45378      }
45379    },
45380    closeSubNav() {
45381      this.$emit("closeSubNav");
45382    },
45383    focusBackButton() {
45384      this.$refs.btnClose.focus();
45385    },
45386    handleFirstItem(index2, event) {
45387      if (index2 === 0) {
45388        event.preventDefault();
45389        if (this.belowBreakpoint) {
45390          this.focusBackButton();
45391        } else {
45392          this.$emit("closeSubNav");
45393        }
45394      }
45395    },
45396    handleLastItem(event) {
45397      if (this.belowBreakpoint) {
45398        event.preventDefault();
45399        this.focusFirstItem();
45400      }
45401    }
45402  },
45403  // watch() {},
45404  // Livecycle hooks
45405  created() {
45406    if (typeof window !== "undefined") {
45407      this.currentPath = window.location.pathname;
45408    }
45409  }
45410  // updated() {},
45411  // beforeDestroy() {},
45412};
45413const _hoisted_1$5 = ["aria-label"];
45414const _hoisted_2$4 = ["href", "onKeydown", "innerHTML"];
45415const _hoisted_3$3 = ["aria-label"];
45416function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
45417  return openBlock(), createElementBlock("div", {
45418    id: "sub_nav",
45419    class: normalizeClass(["sub-navigation", {
45420      "is-open": $props.isOpen
45421    }]),
45422    "aria-label": _ctx.$t("menu.subNav.label")
45423  }, [
45424    (openBlock(true), createElementBlock(Fragment, null, renderList($props.subNavItems, (item, index2) => {
45425      return openBlock(), createElementBlock("a", {
45426        key: index2,
45427        ref_for: true,
45428        ref: "subNavItem",
45429        href: item.url,
45430        onKeydown: withKeys(withModifiers(($event) => $options.handleFirstItem(index2, $event), ["shift"]), ["tab"]),
45431        class: normalizeClass({ "active": item.url && $data.currentPath.startsWith(item.url) }),
45432        innerHTML: item.name
45433      }, null, 42, _hoisted_2$4);
45434    }), 128)),
45435    $options.belowBreakpoint ? (openBlock(), createElementBlock("button", {
45436      key: 0,
45437      ref: "btnClose",
45438      class: "sub-nav-close",
45439      "aria-label": _ctx.$t("menu.subNav.close"),
45440      onClick: _cache[0] || (_cache[0] = ($event) => $options.closeSubNav()),
45441      onKeydown: _cache[1] || (_cache[1] = withKeys(withModifiers(($event) => $options.handleLastItem($event), ["exact"]), ["tab"]))
45442    }, toDisplayString$1(_ctx.$t("menu.subNav.back")), 41, _hoisted_3$3)) : createCommentVNode("", true)
45443  ], 10, _hoisted_1$5);
45444}
45445const SubNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$5]]);
45446const _sfc_main$4 = {
45447  name: "MainNavigation",
45448  components: {
45449    SubNavigation
45450  },
45451  props: {
45452    homeLink: {
45453      type: String,
45454      default: "/"
45455    },
45456    mainNavItems: {
45457      type: Array,
45458      required: true,
45459      default: () => []
45460    },
45461    disableSubNav: {
45462      type: Boolean,
45463      default: false
45464    }
45465  },
45466  data() {
45467    return {
45468      isOpenMainNav: false,
45469      selectedSubNav: null,
45470      currentPath: ""
45471    };
45472  },
45473  computed: {
45474    ...mapGetters(ENVIRONMENT_TYPES.NAME, {
45475      isTablet: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_TABLET,
45476      isMobile: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_IS_MOBILE,
45477      assetsUrl: ENVIRONMENT_TYPES.getters.GET_ENVIRONMENT_ASSETS_URL
45478    }),
45479    belowBreakpoint() {
45480      return this.isMobile || this.isTablet;
45481    },
45482    currentSubNavItems() {
45483      if (this.selectedSubNav) {
45484        let currentMainNavItem = this.mainNavItems.find((element) => element.id === this.selectedSubNav);
45485        if (currentMainNavItem && currentMainNavItem.items && Array.isArray(currentMainNavItem.items)) {
45486          return currentMainNavItem.items;
45487        }
45488      }
45489      return [];
45490    },
45491    currentSubNavTeaser() {
45492      if (this.selectedSubNav) {
45493        let currentMainNavItem = this.mainNavItems.find((element) => element.id === this.selectedSubNav);
45494        if (currentMainNavItem && currentMainNavItem.subnavteaser) {
45495          return currentMainNavItem.subnavteaser;
45496        }
45497      }
45498      return null;
45499    },
45500    getSlotNameTablet() {
45501      if (this.belowBreakpoint) return "meta";
45502      return "off";
45503    },
45504    getSlotNameDesktop() {
45505      if (!this.belowBreakpoint) return "meta";
45506      return "off";
45507    },
45508    // show subnavigation
45509    isOpenSubNav() {
45510      if (this.belowBreakpoint === true && this.isOpenMainNav === true) return true;
45511      return this.selectedSubNav !== null;
45512    },
45513    // show subnavigation link block
45514    showSubNav() {
45515      return this.selectedSubNav !== null;
45516    },
45517    selectedMainNavIndex() {
45518      if (!this.selectedSubNav) return -1;
45519      return this.mainNavItems.findIndex((item) => item.id === this.selectedSubNav);
45520    },
45521    disabledSubNav() {
45522      return this.disableSubNav;
45523    }
45524  },
45525  methods: {
45526    // used on mobile to open menu
45527    toggleMainNav() {
45528      this.isOpenMainNav = !this.isOpenMainNav;
45529      this.$nextTick(() => {
45530        if (this.isOpenMainNav) {
45531          this.$refs.mainNavItem[0].focus();
45532        } else if (this.isOpenSubNav) {
45533          this.toggleSubNav(this.selectedSubNav);
45534        } else {
45535          if (this.isTablet || this.isMobile) {
45536            this.$refs.mainNavToggle.focus();
45537          }
45538        }
45539      });
45540    },
45541    // close dropdown on click on content
45542    handleClick(event) {
45543      if (!this.$el.contains(event.target)) {
45544        this.toggleSubNav(this.selectedSubNav);
45545      }
45546    },
45547    // show/hide subnavigation
45548    toggleSubNav(id) {
45549      const storeIndex = this.selectedMainNavIndex + 0;
45550      if (this.selectedSubNav === id) {
45551        this.selectedSubNav = null;
45552      } else {
45553        this.selectedSubNav = id;
45554      }
45555      if (!this.selectedSubNav) {
45556        this.$refs.mainNavItem[storeIndex].focus();
45557      }
45558      if (this.selectedSubNav) {
45559        window.onclick = this.handleClick;
45560      } else {
45561        window.onclick = () => {
45562        };
45563      }
45564    },
45565    handleLastItem(event) {
45566      event.preventDefault();
45567      this.handleEsc();
45568    },
45569    handleEsc() {
45570      if (this.showSubNav) {
45571        this.toggleSubNav(this.selectedSubNav);
45572      } else if (this.belowBreakpoint && this.isOpenMainNav) {
45573        this.toggleMainNav();
45574      }
45575    }
45576  },
45577  // watch() {},
45578  // Livecycle hooks
45579  created() {
45580    if (typeof window !== "undefined") {
45581      this.currentPath = window.location.pathname;
45582    }
45583  }
45584  // mounted() {},
45585  // updated() {},
45586  // beforeDestroy() {},
45587};
45588const _hoisted_1$4 = { id: "main_header" };
45589const _hoisted_2$3 = { class: "main-nav-wrapper" };
45590const _hoisted_3$2 = {
45591  id: "main_nav_label",
45592  class: "visually-hidden",
45593  "aria-hidden": "true"
45594};
45595const _hoisted_4$2 = ["href"];
45596const _hoisted_5$1 = ["src"];
45597const _hoisted_6$1 = ["aria-expanded"];
45598const _hoisted_7$1 = { class: "visually-hidden" };
45599const _hoisted_8 = {
45600  id: "main_nav",
45601  class: "main-nav"
45602};
45603const _hoisted_9 = ["href"];
45604const _hoisted_10 = ["innerHTML"];
45605const _hoisted_11 = ["aria-expanded", "onClick"];
45606const _hoisted_12 = ["innerHTML"];
45607const _hoisted_13 = {
45608  key: 0,
45609  class: "sub-nav-wrapper"
45610};
45611const _hoisted_14 = {
45612  ref: "subNavTeaserSection",
45613  class: "sub-nav-section sub-nav-teaser"
45614};
45615const _hoisted_15 = ["href"];
45616const _hoisted_16 = ["src"];
45617const _hoisted_17 = ["innerHTML"];
45618const _hoisted_18 = { class: "sub-nav-section" };
45619const _hoisted_19 = { class: "sub-nav-section --no-border" };
45620function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
45621  const _component_sub_navigation = resolveComponent("sub-navigation");
45622  return openBlock(), createElementBlock("header", _hoisted_1$4, [
45623    createBaseVNode("nav", {
45624      id: "main_navigation",
45625      class: normalizeClass({
45626        "is-open": $data.isOpenMainNav
45627      }),
45628      "aria-labelledby": "main_nav_label",
45629      onKeyup: _cache[4] || (_cache[4] = withKeys((...args) => $options.handleEsc && $options.handleEsc(...args), ["esc"]))
45630    }, [
45631      createBaseVNode("div", _hoisted_2$3, [
45632        createBaseVNode("span", _hoisted_3$2, toDisplayString$1(_ctx.$t("menu.mainNav.label")), 1),
45633        renderSlot(_ctx.$slots, $options.getSlotNameDesktop),
45634        createBaseVNode("a", {
45635          href: $props.homeLink,
45636          class: "logo"
45637        }, [
45638          renderSlot(_ctx.$slots, "logo", {}, () => [
45639            createBaseVNode("img", {
45640              src: `${_ctx.assetsUrl}/img/Logo_Zwangsarbeit_Standard.svg`,
45641              alt: "Logo Museum für Zwangsarbeit"
45642            }, null, 8, _hoisted_5$1)
45643          ])
45644        ], 8, _hoisted_4$2),
45645        renderSlot(_ctx.$slots, "mobile", {}, () => [
45646          _cache[5] || (_cache[5] = createBaseVNode("section", { class: "mobile-menu-bar" }, null, -1))
45647        ]),
45648        createBaseVNode("button", {
45649          ref: "mainNavToggle",
45650          class: normalizeClass(["main-nav-toggle", {
45651            "active": $data.isOpenMainNav
45652          }]),
45653          "aria-expanded": $data.isOpenMainNav,
45654          "aria-controls": "main_nav",
45655          onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleMainNav && $options.toggleMainNav(...args))
45656        }, [
45657          _cache[6] || (_cache[6] = createBaseVNode("span", { class: "burger" }, null, -1)),
45658          createBaseVNode("span", _hoisted_7$1, toDisplayString$1(_ctx.$t("menu.mainNav.label")) + " " + toDisplayString$1($data.isOpenMainNav ? _ctx.$t("menu.toggle.label.off") : _ctx.$t("menu.toggle.label.on")), 1)
45659        ], 10, _hoisted_6$1),
45660        createBaseVNode("div", _hoisted_8, [
45661          (openBlock(true), createElementBlock(Fragment, null, renderList($props.mainNavItems, (item) => {
45662            return openBlock(), createElementBlock("div", {
45663              key: item.id,
45664              class: normalizeClass(["sub-nav-toggle-wrapper", {
45665                "active": $options.isOpenSubNav && $data.selectedSubNav == item.id || item.url && $data.currentPath.startsWith(item.url)
45666              }])
45667            }, [
45668              $options.disabledSubNav ? (openBlock(), createElementBlock("a", {
45669                key: 0,
45670                href: item.url,
45671                class: "main-nav-link"
45672              }, [
45673                createBaseVNode("span", {
45674                  innerHTML: item.name
45675                }, null, 8, _hoisted_10)
45676              ], 8, _hoisted_9)) : createCommentVNode("", true),
45677              !$options.disabledSubNav ? (openBlock(), createElementBlock("button", {
45678                key: 1,
45679                ref_for: true,
45680                ref: "mainNavItem",
45681                class: "sub-nav-toggle",
45682                "aria-expanded": $options.isOpenSubNav && $data.selectedSubNav == item.id || item.url && $data.currentPath.startsWith(item.url),
45683                "aria-controls": "sub_nav",
45684                onClick: ($event) => $options.toggleSubNav(item.id)
45685              }, [
45686                createBaseVNode("span", {
45687                  innerHTML: item.name
45688                }, null, 8, _hoisted_12)
45689              ], 8, _hoisted_11)) : createCommentVNode("", true)
45690            ], 2);
45691          }), 128))
45692        ])
45693      ]),
45694      createVNode(Transition, {
45695        name: $options.belowBreakpoint ? "" : "nav-transition"
45696      }, {
45697        default: withCtx(() => [
45698          $options.isOpenSubNav ? (openBlock(), createElementBlock("div", _hoisted_13, [
45699            createVNode(Transition, { name: "subnav-transition" }, {
45700              default: withCtx(() => [
45701                $options.showSubNav ? (openBlock(), createBlock(_component_sub_navigation, {
45702                  key: $data.selectedSubNav,
45703                  ref: "subNavItem",
45704                  tabindex: "-1",
45705                  "sub-nav-items": $options.currentSubNavItems,
45706                  "is-open": $options.showSubNav,
45707                  onCloseSubNav: _cache[1] || (_cache[1] = ($event) => $options.toggleSubNav($data.selectedSubNav))
45708                }, null, 8, ["sub-nav-items", "is-open"])) : createCommentVNode("", true)
45709              ]),
45710              _: 1
45711            }),
45712            createBaseVNode("section", _hoisted_14, [
45713              createVNode(Transition, { name: "subnav-transition" }, {
45714                default: withCtx(() => [
45715                  $options.currentSubNavTeaser ? (openBlock(), createElementBlock("a", {
45716                    key: $data.selectedSubNav,
45717                    href: $options.currentSubNavTeaser.link
45718                  }, [
45719                    $options.currentSubNavTeaser.image ? (openBlock(), createElementBlock("img", {
45720                      key: 0,
45721                      class: "",
45722                      src: $options.currentSubNavTeaser.image,
45723                      role: "presentation",
45724                      alt: "",
45725                      loading: "lazy"
45726                    }, null, 8, _hoisted_16)) : createCommentVNode("", true),
45727                    createBaseVNode("div", {
45728                      class: "icon-arrow-right",
45729                      innerHTML: $options.currentSubNavTeaser.linktext
45730                    }, null, 8, _hoisted_17)
45731                  ], 8, _hoisted_15)) : createCommentVNode("", true)
45732                ]),
45733                _: 1
45734              })
45735            ], 512),
45736            renderSlot(_ctx.$slots, $options.getSlotNameTablet),
45737            createBaseVNode("section", _hoisted_18, [
45738              renderSlot(_ctx.$slots, "links")
45739            ]),
45740            createBaseVNode("section", _hoisted_19, [
45741              renderSlot(_ctx.$slots, "external"),
45742              createBaseVNode("a", {
45743                href: "#main_nav",
45744                class: "tab-close-target",
45745                onKeydown: _cache[2] || (_cache[2] = withKeys(($event) => $options.handleLastItem($event), ["tab"])),
45746                onClick: _cache[3] || (_cache[3] = (...args) => $options.handleEsc && $options.handleEsc(...args))
45747              }, [
45748                createBaseVNode("span", null, toDisplayString$1(_ctx.$t("menu.subNav.close")), 1)
45749              ], 32)
45750            ])
45751          ])) : createCommentVNode("", true)
45752        ]),
45753        _: 3
45754      }, 8, ["name"])
45755    ], 34)
45756  ]);
45757}
45758const MainNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$4]]);
45759const _sfc_main$3 = {
45760  name: "MagazineFurtherReading"
45761};
45762const _hoisted_1$3 = { class: "magazine-further-reading" };
45763function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
45764  return openBlock(), createElementBlock("div", _hoisted_1$3, [
45765    renderSlot(_ctx.$slots, "box-1"),
45766    renderSlot(_ctx.$slots, "box-2")
45767  ]);
45768}
45769const MagazineFurtherReading = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$3]]);
45770const _sfc_main$2 = {
45771  name: "MagazineArticle",
45772  components: {
45773    LinkButton
45774  },
45775  props: {
45776    previousArticleUrl: {
45777      type: String,
45778      default: null
45779    },
45780    nextArticleUrl: {
45781      type: String,
45782      default: null
45783    },
45784    backToOverviewUrl: {
45785      type: String,
45786      required: true
45787    }
45788  }
45789};
45790const _hoisted_1$2 = { class: "magazine-article" };
45791const _hoisted_2$2 = { class: "content-block row" };
45792const _hoisted_3$1 = { class: "columns" };
45793const _hoisted_4$1 = { class: "links-container" };
45794function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
45795  const _component_link_button = resolveComponent("link-button");
45796  return openBlock(), createElementBlock("article", _hoisted_1$2, [
45797    renderSlot(_ctx.$slots, "header"),
45798    createVNode(Transition, {
45799      appear: "",
45800      name: "fadeInDelayed"
45801    }, {
45802      default: withCtx(() => [
45803        renderSlot(_ctx.$slots, "intro")
45804      ]),
45805      _: 3
45806    }),
45807    createVNode(Transition, {
45808      appear: "",
45809      name: "fadeInDelayed"
45810    }, {
45811      default: withCtx(() => [
45812        renderSlot(_ctx.$slots, "content")
45813      ]),
45814      _: 3
45815    }),
45816    createVNode(Transition, {
45817      appear: "",
45818      name: "fadeInDelayed"
45819    }, {
45820      default: withCtx(() => [
45821        createBaseVNode("footer", _hoisted_2$2, [
45822          createBaseVNode("div", _hoisted_3$1, [
45823            createBaseVNode("div", _hoisted_4$1, [
45824              createVNode(_component_link_button, {
45825                label: _ctx.$t("magazine.previousArticle"),
45826                url: $props.previousArticleUrl
45827              }, null, 8, ["label", "url"]),
45828              createVNode(_component_link_button, {
45829                class: "icon-arrow-back",
45830                url: $props.backToOverviewUrl
45831              }, {
45832                default: withCtx(() => _cache[0] || (_cache[0] = [
45833                  createBaseVNode("span", { class: "visually-hidden" }, " $t('magazine.backToOverview') ", -1)
45834                ])),
45835                _: 1,
45836                __: [0]
45837              }, 8, ["url"]),
45838              createVNode(_component_link_button, {
45839                label: _ctx.$t("magazine.nextArticle"),
45840                url: $props.nextArticleUrl
45841              }, null, 8, ["label", "url"])
45842            ])
45843          ])
45844        ])
45845      ]),
45846      _: 1
45847    })
45848  ]);
45849}
45850const MagazineArticle = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$2]]);
45851const _sfc_main$1 = {
45852  name: "MagazineTableOfContent",
45853  components: {
45854    ImageGallery,
45855    MagazineTopicGroup,
45856    SwiperSlide
45857  },
45858  props: {
45859    title: {
45860      type: String,
45861      required: true
45862    },
45863    topicGroups: {
45864      type: Array,
45865      required: true
45866    }
45867  }
45868};
45869const _hoisted_1$1 = { class: "magazine-table-of-content" };
45870const _hoisted_2$1 = { class: "magazine-table-of-content-headline" };
45871function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
45872  const _component_magazine_topic_group = resolveComponent("magazine-topic-group");
45873  const _component_swiper_slide = resolveComponent("swiper-slide");
45874  const _component_image_gallery = resolveComponent("image-gallery");
45875  return openBlock(), createElementBlock("div", _hoisted_1$1, [
45876    createBaseVNode("h2", _hoisted_2$1, toDisplayString$1($props.title), 1),
45877    createVNode(_component_image_gallery, { "columns-style": "" }, {
45878      default: withCtx(() => [
45879        (openBlock(true), createElementBlock(Fragment, null, renderList($props.topicGroups, (topicGroup, index2) => {
45880          return openBlock(), createBlock(_component_swiper_slide, {
45881            key: "topicGroup-" + index2
45882          }, {
45883            default: withCtx(() => [
45884              createVNode(_component_magazine_topic_group, {
45885                title: topicGroup.title,
45886                articles: topicGroup.articles
45887              }, null, 8, ["title", "articles"])
45888            ]),
45889            _: 2
45890          }, 1024);
45891        }), 128))
45892      ]),
45893      _: 1
45894    })
45895  ]);
45896}
45897const MagazineTableOfContent = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render$1]]);
45898const _sfc_main = {
45899  name: "TeaserWitness",
45900  // components: {},
45901  props: {
45902    headline: {
45903      type: String,
45904      default: null
45905    }
45906  }
45907  // data() {
45908  //   return {};
45909  // },
45910  // computed: {},
45911  // watch: {},
45912  // Livecycle hooks
45913  // created() {},
45914  // mounted() {},
45915  // updated() {},
45916  // beforeUnmount() {},
45917  // methods: {},
45918};
45919const _hoisted_1 = { class: "teaser-witness row" };
45920const _hoisted_2 = { class: "columns medium-5 medium-push-1 large-4" };
45921const _hoisted_3 = { class: "columns medium-7 medium-push-1 large-6" };
45922const _hoisted_4 = { class: "columns medium-6 medium-push-1" };
45923const _hoisted_5 = { class: "header" };
45924const _hoisted_6 = {
45925  key: 0,
45926  class: "headline"
45927};
45928const _hoisted_7 = { class: "richtext-wrapper" };
45929function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
45930  return openBlock(), createElementBlock("div", _hoisted_1, [
45931    createBaseVNode("div", _hoisted_2, [
45932      renderSlot(_ctx.$slots, "image")
45933    ]),
45934    createBaseVNode("div", _hoisted_3, [
45935      renderSlot(_ctx.$slots, "quote")
45936    ]),
45937    createBaseVNode("div", _hoisted_4, [
45938      createBaseVNode("div", _hoisted_5, [
45939        $props.headline ? (openBlock(), createElementBlock("h2", _hoisted_6, toDisplayString$1($props.headline), 1)) : createCommentVNode("", true)
45940      ]),
45941      createBaseVNode("div", _hoisted_7, [
45942        renderSlot(_ctx.$slots, "default")
45943      ])
45944    ])
45945  ]);
45946}
45947const HeaderWitness = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render]]);
45948const app = createApp();
45949app.use(store);
45950app.use(i18nInstance);
45951app.use(install2, {
45952  load: {
45953    key: "AIzaSyComhxjrs8wOdzcaDM7KuZzSndj-B4ub0E"
45954    // TODO
45955    // insert google maps api key
45956    // language: 'de',
45957  }
45958});
45959app.config.globalProperties.$Swal = Swal;
45960app.config.globalProperties.$window = window;
45961app.config.compilerOptions.isCustomElement = (tag) => ["svg:style"].includes(tag), app.component("SwiperSlide", SwiperSlide);
45962app.component("AnchorTarget", AnchorTarget);
45963app.component("AudioPlayer", AudioPlayer);
45964app.component("AddToCart", AddToCart);
45965app.component("LinkButton", LinkButton);
45966app.component("TeaserTextImage", TeaserTextImage);
45967app.component("PageWrapper", PageWrapper);
45968app.component("ArticleWrapper", ArticleWrapper);
45969app.component("ContentImage", ContentImage);
45970app.component("ContentBlock", ContentBlock);
45971app.component("FormSelect", FormSelect);
45972app.component("RichtextWrapper", RichtextWrapper);
45973app.component("VideoEmbed", VideoEmbed);
45974app.component("DividerLine", DividerLine);
45975app.component("GridWrapper", GridWrapper);
45976app.component("TeaserQuickLink", TeaserQuickLink);
45977app.component("TeaserTextOnly", TeaserTextOnly);
45978app.component("ButtonGroup", ButtonGroup);
45979app.component("ArticleList", ArticleList);
45980app.component("SkipToContent", SkipToContent);
45981app.component("BreadcrumbNavigation", BreadcrumbNavigation);
45982app.component("TagList", TagList);
45983app.component("BiographyHeader", BiographyHeader);
45984app.component("DynamicLink", DynamicLink);
45985app.component("SidebarPortal", SidebarPortal);
45986app.component("PaginationLinkList", PaginationLinkList);
45987app.component("SearchResultEntry", SearchResultEntry);
45988app.component("MatomoEmbed", MatomoEmbed);
45989app.component("SearchNav", SearchNav);
45990app.component("MagazineHeader", MagazineHeader);
45991app.component("MagazineEditorialContent", MagazineEditorialContent);
45992app.component("MagazineEditorialFigure", MagazineEditorialFigure);
45993app.component("MagazineFilter", MagazineFilter);
45994app.component("ImageMagnify", ImageMagnify);
45995app.component("CitymapPagesList", CitymapPagesList);
45996app.component("RecaptchaField", RecaptchaField);
45997app.component("SliderScreenWrapper", SliderScreenWrapper);
45998app.component("LateEmbed", LateEmbed);
45999app.component("EventList", EventList);
46000app.component("FilterSection", FilterSection);
46001app.component("TeaserChronology", TeaserChronology);
46002app.component("ChronologyWrapper", _sfc_main$S);
46003app.component("ChronologyYear", ChronologyYear);
46004app.component("DetailAboutBox", DetailAboutBox);
46005app.component("ImageGallery", ImageGallery);
46006app.component("InfoBox", InfoBox);
46007app.component("TeaserQuote", TeaserQuote);
46008app.component("TeaserMonoBlock", TeaserMonoBlock);
46009app.component("TeaserDuoBlock", TeaserDuoBlock);
46010app.component("TeaserColorBlock", TeaserColorBlock);
46011app.component("TeaserHeroBlock", TeaserHeroBlock);
46012app.component("LangSearchNavigation", LangSearchNavigation);
46013app.component("SoMeFollow", SoMeFollow);
46014app.component("TextImage", TextImage);
46015app.component("TextImageEasyLanguage", TextImageEasyLanguage);
46016app.component("TextImageList", TextImageList);
46017app.component("VisitNavigation", VisitNavigation);
46018app.component("MainFooter", MainFooter);
46019app.component("GlossaryBlock", GlossaryBlock);
46020app.component("MapHistoricSites", MapHistoricSites);
46021app.component("ShopItemHeader", ShopItemHeader);
46022app.component("FormBlock", FormBlock);
46023app.component("SearchField", SearchField);
46024app.component("NewsletterRegistration", NewsletterRegistration);
46025app.component("SupporterLogoArea", SupporterLogoArea);
46026app.component("MagazineEditorial", MagazineEditorial);
46027app.component("MagazineArticleList", MagazineArticleList);
46028app.component("MagazineFurtherReadingBox", MagazineFurtherReadingBox);
46029app.component("MagazineArticleAboutBox", MagazineArticleAboutBox);
46030app.component("MagazineArticleFigure", MagazineArticleFigure);
46031app.component("MagazineArticleHeader", MagazineArticleHeader);
46032app.component("MagazineArticleIntro", MagazineArticleIntro);
46033app.component("MagazineArticleList", MagazineArticleList);
46034app.component("MagazineArticleMediaIntro", MagazineArticleMediaIntro);
46035app.component("MagazineArticleTextBlock", MagazineArticleTextBlock);
46036app.component("MagazineEditorial", MagazineEditorial);
46037app.component("MagazineQuote", MagazineQuote);
46038app.component("MagazineTopicGroup", MagazineTopicGroup);
46039app.component("MagazinesArticleList", MagazinesArticleList);
46040app.component("MagazineFilterList", MagazineFilterList);
46041app.component("TextFootnote", TextFootnote);
46042app.component("OverlayContainer", OverlayContainer);
46043app.component("CampList", CampList);
46044app.component("TeaserDuoMagnify", TeaserDuoMagnify);
46045app.component("TextOverlayImage", TextOverlayImage);
46046app.component("TextOffset", TextOffset);
46047app.component("CitymapArticlesNavigation", CitymapArticlesNavigation);
46048app.component("TextVideoList", TextVideoList);
46049app.component("TextVideo", TextVideo);
46050app.component("CartList", CartList);
46051app.component("MainNavigation", MainNavigation);
46052app.component("MagazineFurtherReading", MagazineFurtherReading);
46053app.component("MagazineArticle", MagazineArticle);
46054app.component("MagazineTableOfContent", MagazineTableOfContent);
46055app.component("TeaserWitness", HeaderWitness);
46056app.component("HeaderWitness", HeaderWitness);
46057app.component("App", App);
46058app.directive("breadcrumbExtension", breadcrumbExtension);
46059app.directive("hideCookieConsent", hideCookieConsent);
46060app.directive("anchorScrollIntoView", anchorScrollIntoView);
46061app.mount("#app");

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.