PageSourceSearch

https://www.principal.com/profiles/contrib/houston/modules/pfg_pds…/5.22.1/es/PdsElement.BuTF7VEW.js

js principal.com collected 2026-09-24 08:40:34 UTC 107,268 bytes, 2,457 lines download raw bytes

1import { LitElement as Fe, isServer as ee } from "lit";
2import { classMap as Ae } from "lit/directives/class-map.js";
3import { property as Ie, state as X } from "lit/decorators.js";
4const Pt = 320, De = 540, Ue = 768, ze = 1024, Ve = 1366, h = (r) => typeof r == "string", M = () => {
5  let r, e;
6  const t = new Promise((a, s) => {
7    r = a, e = s;
8  });
9  return t.resolve = r, t.reject = e, t;
10}, de = (r) => r == null ? "" : String(r), Me = (r, e, t) => {
11  r.forEach((a) => {
12    e[a] && (t[a] = e[a]);
13  });
14}, Ke = /###/g, ue = (r) => r && r.includes("###") ? r.replace(Ke, ".") : r, ce = (r) => !r || h(r), K = (r, e, t) => {
15  const a = h(e) ? e.split(".") : e;
16  let s = 0;
17  for (; s < a.length - 1; ) {
18    if (ce(r)) return {};
19    const i = ue(a[s]);
20    !r[i] && t && (r[i] = new t()), Object.prototype.hasOwnProperty.call(r, i) ? r = r[i] : r = {}, ++s;
21  }
22  return ce(r) ? {} : {
23    obj: r,
24    k: ue(a[s])
25  };
26}, pe = (r, e, t) => {
27  const {
28    obj: a,
29    k: s
30  } = K(r, e, Object);
31  if (a !== void 0 || e.length === 1) {
32    a[s] = t;
33    return;
34  }
35  let i = e[e.length - 1], n = e.slice(0, e.length - 1), o = K(r, n, Object);
36  for (; o.obj === void 0 && n.length; )
37    i = `${n[n.length - 1]}.${i}`, n = n.slice(0, n.length - 1), o = K(r, n, Object), o?.obj && typeof o.obj[`${o.k}.${i}`] < "u" && (o.obj = void 0);
38  o.obj[`${o.k}.${i}`] = t;
39}, He = (r, e, t, a) => {
40  const {
41    obj: s,
42    k: i
43  } = K(r, e, Object);
44  s[i] = s[i] || [], s[i].push(t);
45}, _ = (r, e) => {
46  const {
47    obj: t,
48    k: a
49  } = K(r, e);
50  if (t && Object.prototype.hasOwnProperty.call(t, a))
51    return t[a];
52}, qe = (r, e, t) => {
53  const a = _(r, t);
54  return a !== void 0 ? a : _(e, t);
55}, ke = (r, e, t) => {
56  for (const a in e)
57    a !== "__proto__" && a !== "constructor" && (a in r ? h(r[a]) || r[a] instanceof String || h(e[a]) || e[a] instanceof String ? t && (r[a] = e[a]) : ke(r[a], e[a], t) : r[a] = e[a]);
58  return r;
59}, T = (r) => r.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"), Be = {
60  "&": "&amp;",
61  "<": "&lt;",
62  ">": "&gt;",
63  '"': "&quot;",
64  "'": "&#39;",
65  "/": "&#x2F;"
66}, We = (r) => h(r) ? r.replace(/[&<>"'\/]/g, (e) => Be[e]) : r;
67class Ge {
68  constructor(e) {
69    this.capacity = e, this.regExpMap = /* @__PURE__ */ new Map(), this.regExpQueue = [];
70  }
71  getRegExp(e) {
72    const t = this.regExpMap.get(e);
73    if (t !== void 0)
74      return t;
75    const a = new RegExp(e);
76    return this.regExpQueue.length === this.capacity && this.regExpMap.delete(this.regExpQueue.shift()), this.regExpMap.set(e, a), this.regExpQueue.push(e), a;
77  }
78}
79const Je = [" ", ",", "?", "!", ";"], _e = new Ge(20), Ye = (r, e, t) => {
80  e = e || "", t = t || "";
81  const a = Je.filter((n) => !e.includes(n) && !t.includes(n));
82  if (a.length === 0) return !0;
83  const s = _e.getRegExp(`(${a.map((n) => n === "?" ? "\\?" : n).join("|")})`);
84  let i = !s.test(r);
85  if (!i) {
86    const n = r.indexOf(t);
87    n > 0 && !s.test(r.substring(0, n)) && (i = !0);
88  }
89  return i;
90}, ie = (r, e, t = ".") => {
91  if (!r) return;
92  if (r[e])
93    return Object.prototype.hasOwnProperty.call(r, e) ? r[e] : void 0;
94  const a = e.split(t);
95  let s = r;
96  for (let i = 0; i < a.length; ) {
97    if (!s || typeof s != "object")
98      return;
99    let n, o = "";
100    for (let l = i; l < a.length; ++l)
101      if (l !== i && (o += t), o += a[l], n = s[o], n !== void 0) {
102        if (["string", "number", "boolean"].includes(typeof n) && l < a.length - 1)
103          continue;
104        i += l - i + 1;
105        break;
106      }
107    s = n;
108  }
109  return s;
110}, q = (r) => r?.replace(/_/g, "-"), Qe = {
111  type: "logger",
112  log(r) {
113    this.output("log", r);
114  },
115  warn(r) {
116    this.output("warn", r);
117  },
118  error(r) {
119    this.output("error", r);
120  },
121  output(r, e) {
122    console?.[r]?.apply?.(console, e);
123  }
124};
125class Y {
126  constructor(e, t = {}) {
127    this.init(e, t);
128  }
129  init(e, t = {}) {
130    this.prefix = t.prefix || "i18next:", this.logger = e || Qe, this.options = t, this.debug = t.debug;
131  }
132  log(...e) {
133    return this.forward(e, "log", "", !0);
134  }
135  warn(...e) {
136    return this.forward(e, "warn", "", !0);
137  }
138  error(...e) {
139    return this.forward(e, "error", "");
140  }
141  deprecate(...e) {
142    return this.forward(e, "warn", "WARNING DEPRECATED: ", !0);
143  }
144  forward(e, t, a, s) {
145    return s && !this.debug ? null : (h(e[0]) && (e[0] = `${a}${this.prefix} ${e[0]}`), this.logger[t](e));
146  }
147  create(e) {
148    return new Y(this.logger, {
149      prefix: `${this.prefix}:${e}:`,
150      ...this.options
151    });
152  }
153  clone(e) {
154    return e = e || this.options, e.prefix = e.prefix || this.prefix, new Y(this.logger, e);
155  }
156}
157var R = new Y();
158class Z {
159  constructor() {
160    this.observers = {};
161  }
162  on(e, t) {
163    return e.split(" ").forEach((a) => {
164      this.observers[a] || (this.observers[a] = /* @__PURE__ */ new Map());
165      const s = this.observers[a].get(t) || 0;
166      this.observers[a].set(t, s + 1);
167    }), this;
168  }
169  off(e, t) {
170    if (this.observers[e]) {
171      if (!t) {
172        delete this.observers[e];
173        return;
174      }
175      this.observers[e].delete(t);
176    }
177  }
178  once(e, t) {
179    const a = (...s) => {
180      t(...s), this.off(e, a);
181    };
182    return this.on(e, a), this;
183  }
184  emit(e, ...t) {
185    this.observers[e] && Array.from(this.observers[e].entries()).forEac
185h(([s, i]) => {
186      for (let n = 0; n < i; n++)
187        s(...t);
188    }), this.observers["*"] && Array.from(this.observers["*"].entries()).forEach(([s, i]) => {
189      for (let n = 0; n < i; n++)
190        s(e, ...t);
191    });
192  }
193}
194class he extends Z {
195  constructor(e, t = {
196    ns: ["translation"],
197    defaultNS: "translation"
198  }) {
199    super(), this.data = e || {}, this.options = t, this.options.keySeparator === void 0 && (this.options.keySeparator = "."), this.options.ignoreJSONStructure === void 0 && (this.options.ignoreJSONStructure = !0);
200  }
201  addNamespaces(e) {
202    this.options.ns.includes(e) || this.options.ns.push(e);
203  }
204  removeNamespaces(e) {
205    const t = this.options.ns.indexOf(e);
206    t > -1 && this.options.ns.splice(t, 1);
207  }
208  getResource(e, t, a, s = {}) {
209    const i = s.keySeparator !== void 0 ? s.keySeparator : this.options.keySeparator, n = s.ignoreJSONStructure !== void 0 ? s.ignoreJSONStructure : this.options.ignoreJSONStructure;
210    let o;
211    e.includes(".") ? o = e.split(".") : (o = [e, t], a && (Array.isArray(a) ? o.push(...a) : h(a) && i ? o.push(...a.split(i)) : o.push(a)));
212    const l = _(this.data, o);
213    return !l && !t && !a && e.includes(".") && (e = o[0], t = o[1], a = o.slice(2).join(".")), l || !n || !h(a) ? l : ie(this.data?.[e]?.[t], a, i);
214  }
215  addResource(e, t, a, s, i = {
216    silent: !1
217  }) {
218    const n = i.keySeparator !== void 0 ? i.keySeparator : this.options.keySeparator;
219    let o = [e, t];
220    a && (o = o.concat(n ? a.split(n) : a)), e.includes(".") && (o = e.split("."), s = t, t = o[1]), this.addNamespaces(t), pe(this.data, o, s), i.silent || this.emit("added", e, t, a, s);
221  }
222  addResources(e, t, a, s = {
223    silent: !1
224  }) {
225    for (const i in a)
226      (h(a[i]) || Array.isArray(a[i])) && this.addResource(e, t, i, a[i], {
227        silent: !0
228      });
229    s.silent || this.emit("added", e, t, a);
230  }
231  addResourceBundle(e, t, a, s, i, n = {
232    silent: !1,
233    skipCopy: !1
234  }) {
235    let o = [e, t];
236    e.includes(".") && (o = e.split("."), s = a, a = t, t = o[1]), this.addNamespaces(t);
237    let l = _(this.data, o) || {};
238    n.skipCopy || (a = JSON.parse(JSON.stringify(a))), s ? ke(l, a, i) : l = {
239      ...l,
240      ...a
241    }, pe(this.data, o, l), n.silent || this.emit("added", e, t, a);
242  }
243  removeResourceBundle(e, t) {
244    this.hasResourceBundle(e, t) && delete this.data[e][t], this.removeNamespaces(t), this.emit("removed", e, t);
245  }
246  hasResourceBundle(e, t) {
247    return this.getResource(e, t) !== void 0;
248  }
249  getResourceBundle(e, t) {
250    return t || (t = this.options.defaultNS), this.getResource(e, t);
251  }
252  getDataByLanguage(e) {
253    return this.data[e];
254  }
255  hasLanguageSomeTranslations(e) {
256    const t = this.getDataByLanguage(e);
257    return !!(t && Object.keys(t) || []).find((s) => t[s] && Object.keys(t[s]).length > 0);
258  }
259  toJSON() {
260    return this.data;
261  }
262}
263var Re = {
264  processors: {},
265  addPostProcessor(r) {
266    this.processors[r.name] = r;
267  },
268  handle(r, e, t, a, s) {
269    return r.forEach((i) => {
270      e = this.processors[i]?.process(e, t, a, s) ?? e;
271    }), e;
272  }
273};
274const Ee = /* @__PURE__ */ Symbol("i18next/PATH_KEY");
275function Xe() {
276  const r = [], e = /* @__PURE__ */ Object.create(null);
277  let t;
278  return e.get = (a, s) => (t?.revoke?.(), s === Ee ? r : (r.push(s), t = Proxy.revocable(a, e), t.proxy)), Proxy.revocable(/* @__PURE__ */ Object.create(null), e).proxy;
279}
280function U(r, e) {
281  const {
282    [Ee]: t
283  } = r(Xe()), a = e?.keySeparator ?? ".", s = e?.nsSeparator ?? ":";
284  if (t.length > 1 && s) {
285    const i = e?.ns, n = Array.isArray(i) ? i : null;
286    if (n && n.length > 1 && n.slice(1).includes(t[0]))
287      return `${t[0]}${s}${t.slice(1).join(a)}`;
288  }
289  return t.join(a);
290}
291const te = (r) => !h(r) && typeof r != "boolean" && typeof r != "number";
292class Q extends Z {
293  constructor(e, t = {}) {
294    super(), Me(["resourceStore", "languageUtils", "pluralResolver", "interpolator", "backendConnector", "i18nFormat", "utils"], e, this), this.options = t, this.options.keySeparator === void 0 && (this.options.keySeparator = "."), this.logger = R.create("translator"), this.checkedLoadedFor = {};
295  }
296  changeLanguage(e) {
297    e && (this.language = e);
298  }
299  exists(e, t = {
300    interpolation: {}
301  }) {
302    const a = {
303      ...t
304    };
305    if (e == null) return !1;
306    const s = this.resolve(e, a);
307    if (s?.res === void 0) return !1;
308    const i = te(s.res);
309    return !(a.returnObjects === !1 && i);
310  }
311  extractFromKey(e, t) {
312    let a = t.nsSeparator !== void 0 ? t.nsSeparator : this.options.nsSeparator;
313    a === void 0 && (a = ":");
314    const s = t.keySeparator !== void 0 ? t.keySeparator : this.options.keySeparator;
315    let i = t.ns || this.options.defaultNS || [];
316    const n = a && e.includes(a), o = !this.options.userDefinedKeySeparator && !t.keySeparator && !this.options.userDefinedNsSeparator && !t.nsSeparator && !Ye(e, a, s);
317    if (n && !o) {
318      const l = e.match(this.interpolator.nestingRegexp);
319      if (l && l.length > 0)
320        return {
321          key: e,
322          namespaces: h(i) ? [i] : i
323        };
324      const d = e.split(a);
325      (a !== s || a === s && this.options.ns.includes(d[0])) && (i = d.shift()), e = d.join(s);
326    }
327    return {
328      key: e,
329      namespaces: h(i) ? [i] : i
330    };
331  }
332  translate(e, t, a) {
333    let s = typeof t == "object" ? {
334      ...t
335    } : t;
336    if (typeof s != "object" && this.options.overloadTranslationOptionHandler && (s = this.options.overloadTranslationOptionHandler(arguments)), typeof s == "object" && (s = {
337      ...s
338    }), s || (s = {}), e == null) return "";
339    typeof e == "function" && (e = U(e, {
340      ...this.options,
341      ...s
342    })), Array.isArray(e) || (e = [String(e)]), e = e.map((w) => typeof w == "function" ? U(w, {
343      ...this.options,
344      ...s
345    }) : String(w));
346    const i = s.returnDetails !== void 0 ? s.returnDetails : this.options.returnDetails, n = s.keySeparator !== void 0 ? s.keySeparator : this.options.keySeparator, {
347      key: o,
348      namespaces: l
349    } = this.extractFromKey(e[e.length - 1], s), d = l[l.length - 1];
350    let c = s.nsSeparator !== void 0 ? s.nsSeparator : this.options.nsSeparator;
351    c === void 0 && (c = ":");
352    const u = s.lng || this.language, p = s.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;
353    if (u?.toLowerCase() === "cimode")
354      return p ? i ? {
355        res: `${d}${c}${o}`,
356        usedKey: o,
357        exactUsedKey: o,
358        usedLng: u,
359        usedNS: d,
360        usedParams: this.getUsedParamsDetails(s)
361      } : `${d}${c}${o}` : i ? {
362        res: o,
363        usedKey: o,
364        exactUsedKey: o,
365        usedLng: u,
366        usedNS: d,
367        usedParams: this.getUsedParamsDetails(s)
368      } : o;
369    const g = this.resolve(e, s);
370    let f = g?.res;
371    const b = g?.usedKey || o, y = g?.exactUsedKey || o, L = ["[object Number]", "[object Function]", "[object RegExp]"], v = s.joinArrays !== void 0 ? s.joinArrays : this.options.joinArrays, $ = !this.i18nFormat || this.i18nFormat.handleAsObject, S = s.count !== void 0 && !h(s.count), O = Q.hasDefaultValue(s), F = S ? this.pluralResolver.getSuffix(u, s.count, s) : "", A = s.ordinal && S ? this.pluralResolver.getSuffix(u, s.count, {
372      ordinal: !1
373    }) : "", ne = S && !s.ordinal && s.count === 0, N = ne && s[`defaultValue${this.options.pluralSeparator}zero`] || s[`defaultValue${F}`] || s[`defaultValue${A}`] || s.defaultValue;
374    let P = f;
375    $ && !f && O && (P = N);
376    const je = te(P), Te = Object.prototype.toString.apply(P);
377    if ($ && P && je && !L.includes(Te) && !(h(v) && Array.isArray(P))) {
378      if (!s.returnObjects && !this.options.returnObjects) {
379        this.options.returnedObjectHandler || this.logger.warn("accessing an object - but returnObjects options is not enabled!");
380        const w = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(b, P, {
381          ...s,
382          ns: l
383        }) : `key '${o} (${this.language})' returned an object instead of string.`;
384        return i ? (g.res = w, g.usedParams = this.getUsedParamsDetails(s), g) : w;
385      }
386      if (n) {
387        const w = Array.isArray(P), C = w ? [] : {}, re = w ? y : b;
388        for (const k in P)
389          if (Object.prototype.hasOwnProperty.call(P, k)) {
390            const E = `${re}${n}${k}`;
391            O && !f ? C[k] = this.translate(E, {
392              ...s,
393              defaultValue: te(N) ? N[k] : void 0,
394              joinArrays: !1,
395              ns: l
396            }) : C[k] = this.translate(E, {
397              ...s,
398              joinArrays: !1,
399              ns: l
400            }), C[k] === E && (C[k] = P[k]);
401          }
402        f = C;
403      }
404    } else if ($ && h(v) && Array.isArray(f))
405      f = f.join(v), f && (f = this.extendTranslation(f, e, s, a));
406    else {
407      let w = !1, C = !1;
408      !this.isValidLookup(f) && O && (w = !0, f = N), this.isValidLookup(f) || (C = !0, f = o);
409      const k = (s.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey) && C ? void 0 : f, E = O && N !== f && this.options.updateMissing;
410      if (C || w || E) {
411        if (this.logger.log(E ? "updateKey" : "missingKey", u, d, o, E ? N : f), n) {
412          const x = this.resolve(o, {
413            ...s,
414            keySeparator: !1
415          });
416          x && x.res && this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.");
417        }
418        let z = [];
419        const G = this.languageUtils.getFallbackCodes(this.options.fallbackLng, s.lng || this.language);
420        if (this.options.saveMissingTo === "fallback" && G && G[0])
421          for (let x = 0; x < G.length; x++)
422            z.push(G[x]);
423        else this.options.saveMissingTo === "all" ? z = this.languageUtils.toResolveHierarchy(s.lng || this.language) : z.push(s.lng || this.language);
424        const oe = (x, j, V) => {
425          const le = O && V !== f ? V : k;
426          this.options.missingKeyHandler ? this.options.missingKeyHandler(x, d, j, le, E, s) : this.backendConnector?.saveMissing && this.backendConnector.saveMissing(x, d, j, le, E, s), this.emit
426("missingKey", x, d, j, f);
427        };
428        this.options.saveMissing && (this.options.saveMissingPlurals && S ? z.forEach((x) => {
429          const j = this.pluralResolver.getSuffixes(x, s);
430          ne && s[`defaultValue${this.options.pluralSeparator}zero`] && !j.includes(`${this.options.pluralSeparator}zero`) && j.push(`${this.options.pluralSeparator}zero`), j.forEach((V) => {
431            oe([x], o + V, s[`defaultValue${V}`] || N);
432          });
433        }) : oe(z, o, N));
434      }
435      f = this.extendTranslation(f, e, s, g, a), C && f === o && this.options.appendNamespaceToMissingKey && (f = `${d}${c}${o}`), (C || w) && this.options.parseMissingKeyHandler && (f = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? `${d}${c}${o}` : o, w ? f : void 0, s));
436    }
437    return i ? (g.res = f, g.usedParams = this.getUsedParamsDetails(s), g) : f;
438  }
439  extendTranslation(e, t, a, s, i) {
440    if (this.i18nFormat?.parse)
441      e = this.i18nFormat.parse(e, {
442        ...this.options.interpolation.defaultVariables,
443        ...a
444      }, a.lng || this.language || s.usedLng, s.usedNS, s.usedKey, {
445        resolved: s
446      });
447    else if (!a.skipInterpolation) {
448      a.interpolation && this.interpolator.init({
449        ...a,
450        interpolation: {
451          ...this.options.interpolation,
452          ...a.interpolation
453        }
454      });
455      const l = h(e) && (a?.interpolation?.skipOnVariables !== void 0 ? a.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);
456      let d;
457      if (l) {
458        const u = e.match(this.interpolator.nestingRegexp);
459        d = u && u.length;
460      }
461      let c = a.replace && !h(a.replace) ? a.replace : a;
462      if (this.options.interpolation.defaultVariables && (c = {
463        ...this.options.interpolation.defaultVariables,
464        ...c
465      }), e = this.interpolator.interpolate(e, c, a.lng || this.language || s.usedLng, a), l) {
466        const u = e.match(this.interpolator.nestingRegexp), p = u && u.length;
467        d < p && (a.nest = !1);
468      }
469      !a.lng && s && s.res && (a.lng = this.language || s.usedLng), a.nest !== !1 && (e = this.interpolator.nest(e, (...u) => i?.[0] === u[0] && !a.context ? (this.logger.warn(`It seems you are nesting recursively key: ${u[0]} in key: ${t[0]}`), null) : this.translate(...u, t), a)), a.interpolation && this.interpolator.reset();
470    }
471    const n = a.postProcess || this.options.postProcess, o = h(n) ? [n] : n;
472    return e != null && o?.length && a.applyPostProcessor !== !1 && (e = Re.handle(o, e, t, this.options && this.options.postProcessPassResolved ? {
473      i18nResolved: {
474        ...s,
475        usedParams: this.getUsedParamsDetails(a)
476      },
477      ...a
478    } : a, this)), e;
479  }
480  resolve(e, t = {}) {
481    let a, s, i, n, o;
482    return h(e) && (e = [e]), Array.isArray(e) && (e = e.map((l) => typeof l == "function" ? U(l, {
483      ...this.options,
484      ...t
485    }) : l)), e.forEach((l) => {
486      if (this.isValidLookup(a)) return;
487      const d = this.extractFromKey(l, t), c = d.key;
488      s = c;
489      let u = d.namespaces;
490      this.options.fallbackNS && (u = u.concat(this.options.fallbackNS));
491      const p = t.count !== void 0 && !h(t.count), g = p && !t.ordinal && t.count === 0, f = t.context !== void 0 && (h(t.context) || typeof t.context == "number") && t.context !== "", b = t.lngs ? t.lngs : this.languageUtils.toResolveHierarchy(t.lng || this.language, t.fallbackLng);
492      u.forEach((y) => {
493        this.isValidLookup(a) || (o = y, !this.checkedLoadedFor[`${b[0]}-${y}`] && this.utils?.hasLoadedNamespace && !this.utils?.hasLoadedNamespace(o) && (this.checkedLoadedFor[`${b[0]}-${y}`] = !0, this.logger.warn(`key "${s}" for languages "${b.join(", ")}" won't get resolved as namespace "${o}" was not yet loaded`, "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")), b.forEach((L) => {
494          if (this.isValidLookup(a)) return;
495          n = L;
496          const v = [c];
497          if (this.i18nFormat?.addLookupKeys)
498            this.i18nFormat.addLookupKeys(v, c, L, y, t);
499          else {
500            let S;
501            p && (S = this.pluralResolver.getSuffix(L, t.count, t));
502            const O = `${this.options.pluralSeparator}zero`, F = `${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;
503            if (p && (t.ordinal && S.startsWith(F) && v.push(c + S.replace(F, this.options.pluralSeparator)), v.push(c + S), g && v.push(c + O)), f) {
504              const A = `${c}${this.options.contextSeparator || "_"}${t.context}`;
505              v.push(A), p && (t.ordinal && S.startsWith(F) && v.push(A + S.replace(F, this.options.pluralSeparator)), v.push(A + S), g && v.push(A + O));
506            }
507          }
508          let $;
509          for (; $ = v.pop(); )
510            this.isValidLookup(a) || (i = $, a = this.getResource(L, y, $, t));
511        }));
512      });
513    }), {
514      res: a,
515      usedKey: s,
516      exactUsedKey: i,
517      usedLng: n,
518      usedNS: o
519    };
520  }
521  isValidLookup(e) {
522    return e !== void 0 && !(!this.options.returnNull && e === null) && !(!this.options.returnEmptyString && e === "");
523  }
524  getResource(e, t, a, s = {}) {
525    return this.i18nFormat?.getResource ? this.i18nFormat.getResource(e, t, a, s) : this.resourceStore.getResource(e, t, a, s);
526  }
527  getUsedParamsDetails(e = {}) {
528    const t = ["defaultValue", "ordinal", "context", "replace", "lng", "lngs", "fallbackLng", "ns", "keySeparator", "nsSeparator", "returnObjects", "returnDetails", "joinArrays", "postProcess", "interpolation"], a = e.replace && !h(e.replace);
529    let s = a ? e.replace : e;
530    if (a && typeof e.count < "u" && (s.count = e.count), this.options.interpolation.defaultVariables && (s = {
531      ...this.options.interpolation.defaultVariables,
532      ...s
533    }), !a) {
534      s = {
535        ...s
536      };
537      for (const i of t)
538        delete s[i];
539    }
540    return s;
541  }
542  static hasDefaultValue(e) {
543    const t = "defaultValue";
544    for (const a in e)
545      if (Object.prototype.hasOwnProperty.call(e, a) && a.startsWith(t) && e[a] !== void 0)
546        return !0;
547    return !1;
548  }
549}
550class fe {
551  constructor(e) {
552    this.options = e, this.supportedLngs = this.options.supportedLngs || !1, this.logger = R.create("languageUtils");
553  }
554  getScriptPartFromCode(e) {
555    if (e = q(e), !e || !e.includes("-")) return null;
556    const t = e.split("-");
557    return t.length === 2 || (t.pop(), t[t.length - 1].toLowerCase() === "x") ? null : this.formatLanguageCode(t.join("-"));
558  }
559  getLanguagePartFromCode(e) {
560    if (e = q(e), !e || !e.includes("-")) return e;
561    const t = e.split("-");
562    return this.formatLanguageCode(t[0]);
563  }
564  formatLanguageCode(e) {
565    if (h(e) && e.includes("-")) {
566      let t;
567      try {
568        t = Intl.getCanonicalLocales(e)[0];
569      } catch {
570      }
571      return t && this.options.lowerCaseLng && (t = t.toLowerCase()), t || (this.options.lowerCaseLng ? e.toLowerCase() : e);
572    }
573    return this.options.cleanCode || this.options.lowerCaseLng ? e.toLowerCase() : e;
574  }
575  isSupportedCode(e) {
576    return (this.options.load === "languageOnly" || this.options.nonExplicitSupportedLngs) && (e = this.getLanguagePartFromCode(e)), !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.includes(e);
577  }
578  getBestMatchFromCodes(e) {
579    if (!e) return null;
580    let t;
581    return e.forEach((a) => {
582      if (t) return;
583      const s = this.formatLanguageCode(a);
584      (!this.options.supportedLngs || this.isSupportedCode(s)) && (t = s);
585    }), !t && this.options.supportedLngs && e.forEach((a) => {
586      if (t) return;
587      const s = this.getScriptPartFromCode(a);
588      if (this.isSupportedCode(s)) return t = s;
589      const i = this.getLanguagePartFromCode(a);
590      if (this.isSupportedCode(i)) return t = i;
591      t = this.options.supportedLngs.find((n) => n === i ? !0 : !n.includes("-") && !i.includes("-") ? !1 : !!(n.includes("-") && !i.includes("-") && n.slice(0, n.indexOf("-")) === i || n.startsWith(i) && i.length > 1));
592    }), t || (t = this.getFallbackCodes(this.options.fallbackLng)[0]), t;
593  }
594  getFallbackCodes(e, t) {
595    if (!e) return [];
596    if (typeof e == "function" && (e = e(t)), h(e) && (e = [e]), Array.isArray(e)) return e;
597    if (!t) return e.default || [];
598    let a = e[t];
599    return a || (a = e[this.getScriptPartFromCode(t)]), a || (a = e[this.formatLanguageCode(t)]), a || (a = e[this.getLanguagePartFromCode(t)]), a || (a = e.default), a || [];
600  }
601  toResolveHierarchy(e, t) {
602    const a = this.getFallbackCodes((t === !1 ? [] : t) || this.options.fallbackLng || [], e), s = [], i = (n) => {
603      n && (this.isSupportedCode(n) ? s.push(n) : this.logger.warn(`rejecting language code not found in supportedLngs: ${n}`));
604    };
605    return h(e) && (e.includes("-") || e.includes("_")) ? (this.options.load !== "languageOnly" && i(this.formatLanguageCode(e)), this.options.load !== "languageOnly" && this.options.load !== "currentOnly" && i(this.getScriptPartFromCode(e)), this.options.load !== "currentOnly" && i(this.getLanguagePartFromCode(e))) : h(e) && i(this.formatLanguageCode(e)), a.forEach((n) => {
606      s.includes(n) || i(this.formatLanguageCode(n));
607    }), s;
608  }
609}
610const ge = {
611  zero: 0,
612  one: 1,
613  two: 2,
614  few: 3,
615  many: 4,
616  other: 5
617}, me = {
618  select: (r) => r === 1 ? "one" : "other",
619  resolvedOptions: () => ({
620    pluralCategories: ["one", "other"]
621  })
622};
623class Ze {
624  constructor(e, t = {}) {
625    this.languageUtils = e, this.options = t, this.logger = R.create("pluralResolver"), this.pluralRulesCache = {};
626  }
627  clearCache() {
628    this.pluralRulesCache = {};
629  }
630  getRule(e, t = {}) {
631    const a = q(e === "dev" ? "en" : e), s = t.ordinal ? "ordinal" : "cardinal", i = JSON.stringify({
632      cleanedCode: a,
633      type: s
634    });
635    if (i in this.pluralRulesCache)
636      return this.pluralRulesCache[i];
637    let n;
638    try {
639      n = new Intl.PluralRules(a, {
640        type: s
641      });
642    } catch {
643      if (typeof Intl > "u")
644        return this.logger.error("No Intl support, please use an Intl polyfill!"), me;
645      if (!e.match(/-|_/)) return me;
646      const l = this.languageUtils.getLanguagePartFromCode(e);
647      n = this.getRule(l, t);
648    }
649    return this.pluralRulesCache[i] = n, n;
650  }
651  needsPlural(e, t = {}) {
652    let a = this.getRule(e, t);
653    return a || (a = this.getRule("dev", t)), a?.resolvedOptions().pluralCategories.length > 1;
654  }
655  getPluralFormsOfKey(e, t, a = {}) {
656    return this.getSuffixes(e, a).map((s) => `${t}${s}`);
657  }
658  getSuffixes(e, t = {}) {
659    let a = this.getRule(e, t);
660    return a || (a = this.getRule("dev", t)), a ? a.resolvedOptions().pluralCategories.sort((s, i) => ge[s] - ge[i]).map((s) => `${this.options.prepend}${t.ordinal ? `ordinal${this.options.prepend}` : ""}${s}`) : [];
661  }
662  getSuffix(e, t, a = {}) {
663    const s = this.getRule(e, a);
664    return s ? `${this.options.prepend}${a.ordinal ? `ordinal${this.options.prepend}` : ""}${s.select(t)}` : (this.logger.warn(`no plural rule found for: ${e}
664`), this.getSuffix("dev", t, a));
665  }
666}
667const be = (r, e, t, a = ".", s = !0) => {
668  let i = qe(r, e, t);
669  return !i && s && h(t) && (i = ie(r, t, a), i === void 0 && (i = ie(e, t, a))), i;
670}, ae = (r) => r.replace(/\$/g, "$$$$");
671class ve {
672  constructor(e = {}) {
673    this.logger = R.create("interpolator"), this.options = e, this.format = e?.interpolation?.format || ((t) => t), this.init(e);
674  }
675  init(e = {}) {
676    e.interpolation || (e.interpolation = {
677      escapeValue: !0
678    });
679    const {
680      escape: t,
681      escapeValue: a,
682      useRawValueToEscape: s,
683      prefix: i,
684      prefixEscaped: n,
685      suffix: o,
686      suffixEscaped: l,
687      formatSeparator: d,
688      unescapeSuffix: c,
689      unescapePrefix: u,
690      nestingPrefix: p,
691      nestingPrefixEscaped: g,
692      nestingSuffix: f,
693      nestingSuffixEscaped: b,
694      nestingOptionsSeparator: y,
695      maxReplaces: L,
696      alwaysFormat: v
697    } = e.interpolation;
698    this.escape = t !== void 0 ? t : We, this.escapeValue = a !== void 0 ? a : !0, this.useRawValueToEscape = s !== void 0 ? s : !1, this.prefix = i ? T(i) : n || "{{", this.suffix = o ? T(o) : l || "}}", this.formatSeparator = d || ",", this.unescapePrefix = c ? "" : u || "-", this.unescapeSuffix = this.unescapePrefix ? "" : c || "", this.nestingPrefix = p ? T(p) : g || T("$t("), this.nestingSuffix = f ? T(f) : b || T(")"), this.nestingOptionsSeparator = y || ",", this.maxReplaces = L || 1e3, this.alwaysFormat = v !== void 0 ? v : !1, this.resetRegExp();
699  }
700  reset() {
701    this.options && this.init(this.options);
702  }
703  resetRegExp() {
704    const e = (t, a) => t?.source === a ? (t.lastIndex = 0, t) : new RegExp(a, "g");
705    this.regexp = e(this.regexp, `${this.prefix}(.+?)${this.suffix}`), this.regexpUnescape = e(this.regexpUnescape, `${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`), this.nestingRegexp = e(this.nestingRegexp, `${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`);
706  }
707  interpolate(e, t, a, s) {
708    let i, n, o;
709    const l = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {}, d = (g) => {
710      if (!g.includes(this.formatSeparator)) {
711        const L = be(t, l, g, this.options.keySeparator, this.options.ignoreJSONStructure);
712        return this.alwaysFormat ? this.format(L, void 0, a, {
713          ...s,
714          ...t,
715          interpolationkey: g
716        }) : L;
717      }
718      const f = g.split(this.formatSeparator), b = f.shift().trim(), y = f.join(this.formatSeparator).trim();
719      return this.format(be(t, l, b, this.options.keySeparator, this.options.ignoreJSONStructure), y, a, {
720        ...s,
721        ...t,
722        interpolationkey: b
723      });
724    };
725    this.resetRegExp();
726    const c = s?.missingInterpolationHandler || this.options.missingInterpolationHandler, u = s?.interpolation?.skipOnVariables !== void 0 ? s.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;
727    return [{
728      regex: this.regexpUnescape,
729      safeValue: (g) => ae(g)
730    }, {
731      regex: this.regexp,
732      safeValue: (g) => this.escapeValue ? ae(this.escape(g)) : ae(g)
733    }].forEach((g) => {
734      for (o = 0; i = g.regex.exec(e); ) {
735        const f = i[1].trim();
736        if (n = d(f), n === void 0)
737          if (typeof c == "function") {
738            const y = c(e, i, s);
739            n = h(y) ? y : "";
740          } else if (s && Object.prototype.hasOwnProperty.call(s, f))
741            n = "";
742          else if (u) {
743            n = i[0];
744            continue;
745          } else
746            this.logger.warn(`missed to pass in variable ${f} for interpolating ${e}`), n = "";
747        else !h(n) && !this.useRawValueToEscape && (n = de(n));
748        const b = g.safeValue(n);
749        if (e = e.replace(i[0], b), u ? (g.regex.lastIndex += n.length, g.regex.lastIndex -= i[0].length) : g.regex.lastIndex = 0, o++, o >= this.maxReplaces)
750          break;
751      }
752    }), e;
753  }
754  nest(e, t, a = {}) {
755    let s, i, n;
756    const o = (l, d) => {
757      const c = this.nestingOptionsSeparator;
758      if (!l.includes(c)) return l;
759      const u = l.split(new RegExp(`${T(c)}[ ]*{`));
760      let p = `{${u[1]}`;
761      l = u[0], p = this.interpolate(p, n);
762      const g = p.match(/'/g), f = p.match(/"/g);
763      ((g?.length ?? 0) % 2 === 0 && !f || (f?.length ?? 0) % 2 !== 0) && (p = p.replace(/'/g, '"'));
764      try {
765        n = JSON.parse(p), d && (n = {
766          ...d,
767          ...n
768        });
769      } catch (b) {
770        return this.logger.warn(`failed parsing options string in nesting for key ${l}`, b), `${l}${c}${p}`;
771      }
772      return n.defaultValue && n.defaultValue.includes(this.prefix) && delete n.defaultValue, l;
773    };
774    for (; s = this.nestingRegexp.exec(e); ) {
775      let l = [];
776      n = {
777        ...a
778      }, n = n.replace && !h(n.replace) ? n.replace : n, n.applyPostProcessor = !1, delete n.defaultValue;
779      const d = /{.*}/.test(s[1]) ? s[1].lastIndexOf("}") + 1 : s[1].indexOf(this.formatSeparator);
780      if (d !== -1 && (l = s[1].slice(d).split(this.formatSeparator).map((c) => c.trim()).filter(Boolean), s[1] = s[1].slice(0, d)), i = t(o.call(this, s[1].trim(), n), n), i && s[0] === e && !h(i)) return i;
781      h(i) || (i = de(i)), i || (this.logger.warn(`missed to resolve ${s[1]} for nesting ${e}`), i = ""), l.length && (i = l.reduce((c, u) => this.format(c, u, a.lng, {
782        ...a,
783        interpolationkey: s[1].trim()
784      }), i.trim())), e = e.replace(s[0], i), this.regexp.lastIndex = 0;
785    }
786    return e;
787  }
788}
789const et = (r) => {
790  let e = r.toLowerCase().trim();
791  const t = {};
792  if (r.includes("(")) {
793    const a = r.split("(");
794    e = a[0].toLowerCase().trim();
795    const s = a[1].slice(0, -1);
796    e === "currency" && !s.includes(":") ? t.currency || (t.currency = s.trim()) : e === "relativetime" && !s.includes(":") ? t.range || (t.range = s.trim()) : s.split(";").forEach((n) => {
797      if (n) {
798        const [o, ...l] = n.split(":"), d = l.join(":").trim().replace(/^'+|'+$/g, ""), c = o.trim();
799        t[c] || (t[c] = d), d === "false" && (t[c] = !1), d === "true" && (t[c] = !0), isNaN(d) || (t[c] = parseInt(d, 10));
800      }
801    });
802  }
803  return {
804    formatName: e,
805    formatOptions: t
806  };
807}, ye = (r) => {
808  const e = {};
809  return (t, a, s) => {
810    let i = s;
811    s && s.interpolationkey && s.formatParams && s.formatParams[s.interpolationkey] && s[s.interpolationkey] && (i = {
812      ...i,
813      [s.interpolationkey]: void 0
814    });
815    const n = a + JSON.stringify(i);
816    let o = e[n];
817    return o || (o = r(q(a), s), e[n] = o), o(t);
818  };
819}, tt = (r) => (e, t, a) => r(q(t), a)(e);
820class at {
821  constructor(e = {}) {
822    this.logger = R.create("formatter"), this.options = e, this.init(e);
823  }
824  init(e, t = {
825    interpolation: {}
826  }) {
827    this.formatSeparator = t.interpolation.formatSeparator || ",";
828    const a = t.cacheInBuiltFormats ? ye : tt;
829    this.formats = {
830      number: a((s, i) => {
831        const n = new Intl.NumberFormat(s, {
832          ...i
833        });
834        return (o) => n.format(o);
835      }),
836      currency: a((s, i) => {
837        const n = new Intl.NumberFormat(s, {
838          ...i,
839          style: "currency"
840        });
841        return (o) => n.format(o);
842      }),
843      datetime: a((s, i) => {
844        const n = new Intl.DateTimeFormat(s, {
845          ...i
846        });
847        return (o) => n.format(o);
848      }),
849      relativetime: a((s, i) => {
850        const n = new Intl.RelativeTimeFormat(s, {
851          ...i
852        });
853        return (o) => n.format(o, i.range || "day");
854      }),
855      list: a((s, i) => {
856        const n = new Intl.ListFormat(s, {
857          ...i
858        });
859        return (o) => n.format(o);
860      })
861    };
862  }
863  add(e, t) {
864    this.formats[e.toLowerCase().trim()] = t;
865  }
866  addCached(e, t) {
867    this.formats[e.toLowerCase().trim()] = ye(t);
868  }
869  format(e, t, a, s = {}) {
870    if (!t || e == null) return e;
871    const i = t.split(this.formatSeparator);
872    if (i.length > 1 && i[0].indexOf("(") > 1 && !i[0].includes(")") && i.find((o) => o.includes(")"))) {
873      const o = i.findIndex((l) => l.includes(")"));
874      i[0] = [i[0], ...i.splice(1, o)].join(this.formatSeparator);
875    }
876    return i.reduce((o, l) => {
877      const {
878        formatName: d,
879        formatOptions: c
880      } = et(l);
881      if (this.formats[d]) {
882        let u = o;
883        try {
884          const p = s?.formatParams?.[s.interpolationkey] || {}, g = p.locale || p.lng || s.locale || s.lng || a;
885          u = this.formats[d](o, g, {
886            ...c,
887            ...s,
888            ...p
889          });
890        } catch (p) {
891          this.logger.warn(p);
892        }
893        return u;
894      } else
895        this.logger.warn(`there was no format function for ${d}`);
896      return o;
897    }, e);
898  }
899}
900const st = (r, e) => {
901  r.pending[e] !== void 0 && (delete r.pending[e], r.pendingCount--);
902};
903class it extends Z {
904  constructor(e, t, a, s = {}) {
905    super(), this.backend = e, this.store = t, this.services = a, this.languageUtils = a.languageUtils, this.options = s, this.logger = R.create("backendConnector"), this.waitingReads = [], this.maxParallelReads = s.maxParallelReads || 10, this.readingCalls = 0, this.maxRetries = s.maxRetries >= 0 ? s.maxRetries : 5, this.retryTimeout = s.retryTimeout >= 1 ? s.retryTimeout : 350, this.state = {}, this.queue = [], this.backend?.init?.(a, s.backend, s);
906  }
907  queueLoad(e, t, a, s) {
908    const i = {}, n = {}, o = {}, l = {};
909    return e.forEach((d) => {
910      let c = !0;
911      t.forEach((u) => {
912        const p = `${d}|${u}`;
913        !a.reload && this.store.hasResourceBundle(d, u) ? this.state[p] = 2 : this.state[p] < 0 || (this.state[p] === 1 ? n[p] === void 0 && (n[p] = !0) : (this.state[p] = 1, c = !1, n[p] === void 0 && (n[p] = !0), i[p] === void 0 && (i[p] = !0), l[u] === void 0 && (l[u] = !0)));
914      }), c || (o[d] = !0);
915    }), (Object.keys(i).length || Object.keys(n).length) && this.queue.push({
916      pending: n,
917      pendingCount: Object.keys(n).length,
918      loaded: {},
919      errors: [],
920      callback: s
921    }), {
922      toLoad: Object.keys(i),
923      pending: Object.keys(n),
924      toLoadLanguages: Object.keys(o),
925      toLoadNamespaces: Object.keys(l)
926    };
927  }
928  loaded(e, t, a) {
929    const s = e.split("|"), i = s[0], n = s[1];
930    t && this.emit("failedLoading", i, n, t), !t && a && this.store.addResourceBundle(i, n, a, void 0, void 0, {
931      skipCopy: !0
932    }), this.state[e] = t ? -1 : 2, t && a && (this.state[e] = 0);
933    const o = {};
934    this.queue.forEach((l) => {
935      He(l.loaded, [i], n), st(l, e), t && l.errors.push(t), l.pendingCount === 0 && !l.done && (Object.keys(l.loaded).forEach((d) => {
936        o[d] || (o[d] = {});
937        const c = l.loaded[d];
938        c.length && c.forEach((u) => {
939          o[d][u] === void 0 && (o[d][u] = !0);
940        });
941      }), l.done = !0, l.errors.length ? l.callback(l.errors) : l.callback());
942    }), this.emit("loaded", o), this.queue = this.queue.filter((l) => !l.done);
943  }
944  read(e, t, a, s = 0, i = this.retryTimeout, n) {
945    if (!e.length) return n(null, {});
946    if (this.readingCalls >= this.maxParallelReads) {
947      this.waitingReads.push({
948        lng: e,
949        ns: t,
950        fcName: a,
951        tried: s,
952        wait: i,
953        callback: n
954      });
955      return;
956    }
957    this.readingCalls++;
958    const o = (d, c) => {
959      if (this.readingCalls--, this.waitingReads.length > 0) {
960        const u = this.waitingReads.shift();
961        this.read(u.lng, u.ns, u.fcName, u.tried, u.wait, u.callback);
962      }
963      if (d && c && s < this.maxRetries) {
964        setTimeout(() => {
965          this.read(e, t, a, s + 1, i * 2, n);
966        }, i);
967        return;
968      }
969      n(d, c);
970    }, l = this.backend[a].bind(this.backend);
971    if (l.length === 2) {
972      try {
973        const d = l(e, t);
974        d && typeof d.then == "function" ? d.then((c) => o(null, c)).catch(o) : o(null, d);
975      } catch (d) {
976        o(d);
977      }
978      return;
979    }
980    return l(e, t, o);
981  }
982  prepareLoading(e, t, a = {}, s) {
983    if (!this.backend)
984      return this.logger.warn("No backend was added via i18next.use. Will not load resources."), s && s();
985    h(e) && (e = this.languageUtils.toResolveHierarchy(e)), h(t) && (t = [t]);
986    const i = this.queueLoad(e, t, a, s);
987    if (!i.toLoad.length)
988      return i.pending.length || s(), null;
989    i.toLoad.forEach((n) => {
990      this.loadOne(n);
991    });
992  }
993  load(e, t, a) {
994    this.prepareLoading(e, t, {}, a);
995  }
996  reload(e, t, a) {
997    this.prepareLoading(e, t, {
998      reload: !0
999    }, a);
1000  }
1001  loadOne(e, t = "") {
1002    const a = e.split("|"), s = a[0], i = a[1];
1003    this.read(s, i, "read", void 0, void 0, (n, o) => {
1004      n && this.logger.warn(`${t}loading namespace ${i} for language ${s} failed`, n), !n && o && this.logger.log(`${t}loaded namespace ${i} for language ${s}`, o), this.loaded(e, n, o);
1005    });
1006  }
1007  saveMissing(e, t, a, s, i, n = {}, o = () => {
1008  }) {
1009    if (this.services?.utils?.hasLoadedNamespace && !this.services?.utils?.hasLoadedNamespace(t)) {
1010      this.logger.warn(`did not save key "${a}" as the namespace "${t}" was not yet loaded`, "This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");
1011      return;
1012    }
1013    if (!(a == null || a === "")) {
1014      if (this.backend?.create) {
1015        const l = {
1016          ...n,
1017          isUpdate: i
1018        }, d = this.backend.create.bind(this.backend);
1019        if (d.length < 6)
1020          try {
1021            let c;
1022            d.length === 5 ? c = d(e, t, a, s, l) : c = d(e, t, a, s), c && typeof c.then == "function" ? c.then((u) => o(null, u)).catch(o) : o(null, c);
1023          } catch (c) {
1024            o(c);
1025          }
1026        else
1027          d(e, t, a, s, o, l);
1028      }
1029      !e || !e[0] || this.store.addResource(e[0], t, a, s);
1030    }
1031  }
1032}
1033const se = () => ({
1034  debug: !1,
1035  initAsync: !0,
1036  ns: ["translation"],
1037  defaultNS: ["translation"],
1038  fallbackLng: ["dev"],
1039  fallbackNS: !1,
1040  supportedLngs: !1,
1041  nonExplicitSupportedLngs: !1,
1042  load: "all",
1043  preload: !1,
1044  keySeparator: ".",
1045  nsSeparator: ":",
1046  pluralSeparator: "_",
1047  contextSeparator: "_",
1048  partialBundledLanguages: !1,
1049  saveMissing: !1,
1050  updateMissing: !1,
1051  saveMissingTo: "fallback",
1052  saveMissingPlurals: !0,
1053  missingKeyHandler: !1,
1054  missingInterpolationHandler: !1,
1055  postProcess: !1,
1056  postProcessPassResolved: !1,
1057  returnNull: !1,
1058  returnEmptyString: !0,
1059  returnObjects: !1,
1060  joinArrays: !1,
1061  returnedObjectHandler: !1,
1062  parseMissingKeyHandler: !1,
1063  appendNamespaceToMissingKey: !1,
1064  appendNamespaceToCIMode: !1,
1065  overloadTranslationOptionHandler: (r) => {
1066    let e = {};
1067    if (typeof r[1] == "object" && (e = r[1]), h(r[1]) && (e.defaultValue = r[1]), h(r[2]) && (e.tDescription = r[2]), typeof r[2] == "object" || typeof r[3] == "object") {
1068      const t = r[3] || r[2];
1069      Object.keys(t).forEach((a) => {
1070        e[a] = t[a];
1071      });
1072    }
1073    return e;
1074  },
1075  interpolation: {
1076    escapeValue: !0,
1077    prefix: "{{",
1078    suffix: "}}",
1079    formatSeparator: ",",
1080    unescapePrefix: "-",
1081    nestingPrefix: "$t(",
1082    nestingSuffix: ")",
1083    nestingOptionsSeparator: ",",
1084    maxReplaces: 1e3,
1085    skipOnVariables: !0
1086  },
1087  cacheInBuiltFormats: !0
1088}), we = (r) => (h(r.ns) && (r.ns = [r.ns]), h(r.fallbackLng) && (r.fallbackLng = [r.fallbackLng]), h(r.fallbackNS) && (r.fallbackNS = [r.fallbackNS]), r.supportedLngs && !r.supportedLngs.includes("cimode") && (r.supportedLngs = r.supportedLngs.concat(["cimode"])), r), J = () => {
1089}, nt = (r) => {
1090  Object.getOwnPropertyNames(Object.getPrototypeOf(r)).forEach((t) => {
1091    typeof r[t] == "function" && (r[t] = r[t].bind(r));
1092  });
1093};
1094class H extends Z {
1095  constructor(e = {}, t) {
1096    if (super(), this.options = we(e), this.services = {}, this.logger = R, this.modules = {
1097      external: []
1098    }, nt(this), t && !this.isInitialized && !e.isClone) {
1099      if (!this.options.initAsync)
1100        return this.init(e, t), this;
1101      setTimeout(() => {
1102        this.init(e, t);
1103      }, 0);
1104    }
1105  }
1106  init(e = {}, t) {
1107    this.isInitializing = !0, typeof e == "function" && (t = e, e = {}), e.defaultNS == null && e.ns && (h(e.ns) ? e.defaultNS = e.ns : e.ns.includes("translation") || (e.defaultNS = e.ns[0]));
1108    const a = se();
1109    this.options = {
1110      ...a,
1111      ...this.options,
1112      ...we(e)
1113    }, this.options.interpolation = {
1114      ...a.interpolation,
1115      ...this.options.interpolation
1116    }, e.keySeparator !== void 0 && (this.options.userDefinedKeySeparator = e.keySeparator), e.nsSeparator !== void 0 && (this.options.userDefinedNsSeparator = e.nsSeparator), typeof this.options.overloadTranslationOptionHandler != "function" && (this.options.overloadTranslationOptionHandler = a.overloadTranslationOptionHandler);
1117    const s = (d) => d ? typeof d == "function" ? new d() : d : null;
1118    if (!this.options.isClone) {
1119      this.modules.logger ? R.init(s(this.modules.logger), this.options) : R.init(null, this.options);
1120      let d;
1121      this.modules.formatter ? d = this.modules.formatter : d = at;
1122      const c = new fe(this.options);
1123      this.store = new he(this.options.resources, this.options);
1124      const u = this.services;
1125      u.logger = R, u.resourceStore = this.store, u.languageUtils = c, u.pluralResolver = new Ze(c, {
1126        prepend: this.options.pluralSeparator
1127      }), d && (u.formatter = s(d), u.formatter.init && u.formatter.init(u, this.options), this.options.interpolation.format = u.formatter.format.bind(u.formatter)), u.interpolator = new ve(this.options), u.utils = {
1128        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)
1129      }, u.backendConnector = new it(s(this.modules.backend), u.resourceStore, u, this.options), u.backendConnector.on("*", (p, ...g) => {
1130        this.emit(p, ...g);
1131      }), this.modules.languageDetector && (u.languageDetector = s(this.modules.languageDetector), u.languageDetector.init && u.languageDetector.init(u, this.options.detection, this.options)), this.modules.i18nFormat && (u.i18nFormat = s(this.modules.i18nFormat), u.i18nFormat.init && u.i18nFormat.init(this)), this.translator = new Q(this.services, this.options), this.translator.on("*", (p, ...g) => {
1132        this.emit(p, ...g);
1133      }), this.modules.external.forEach((p) => {
1134        p.init && p.init(this);
1135      });
1136    }
1137    if (this.format = this.options.interpolation.format, t || (t = J), this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {
1138      const d = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);
1139      d.length > 0 && d[0] !== "dev" && (this.options.lng = d[0]);
1140    }
1141    !this.services.languageDetector && !this.options.lng && this.logger.warn("init: no languageDetector is used and no lng is defined"), ["getResource", "hasResourceBundle", "getResourceBundle", "getDataByLanguage"].forEach((d) => {
1142      this[d] = (...c) => this.store[d](...c);
1143    }), ["addResource", "addResources", "addResourceBundle", "removeResourceBundle"].forEach((d) => {
1144      this[d] = (...c) => (this.store[d](...c), this);
1145    });
1146    const o = M(), l = () => {
1147      const d = (c, u) => {
1148        this.isInitializing = !1, this.isInitialized && !this.initializedStoreOnce && this.logger.warn("init: i18next is already initialized. You should call init just once!"), this.isInitialized = !0, this.options.isClone || this.logger.log("initialized", this.options), this.emit("initialized", this.options), o.resolve(u), t(c, u);
1149      };
1150      if (this.languages && !this.isInitialized) return d(null, this.t.bind(this));
1151      this.changeLanguage(this.options.lng, d);
1152    };
1153    return this.options.resources || !this.options.initAsync ? l() : setTimeout(l, 0), o;
1154  }
1155  loadResources(e, t = J) {
1156    let a = t;
1157    const s = h(e) ? e : this.language;
1158    if (typeof e == "function" && (a = e), !this.options.resources || this.options.partialBundledLanguages) {
1159      if (s?.toLowerCase() === "cimode" && (!this.options.preload || this.options.preload.length === 0)) return a();
1160      const i = [], n = (o) => {
1161        if (!o || o === "cimode") return;
1162        this.services.languageUtils.toResolveHierarchy(o).forEac
1162h((d) => {
1163          d !== "cimode" && (i.includes(d) || i.push(d));
1164        });
1165      };
1166      s ? n(s) : this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach((l) => n(l)), this.options.preload?.forEach?.((o) => n(o)), this.services.backendConnector.load(i, this.options.ns, (o) => {
1167        !o && !this.resolvedLanguage && this.language && this.setResolvedLanguage(this.language), a(o);
1168      });
1169    } else
1170      a(null);
1171  }
1172  reloadResources(e, t, a) {
1173    const s = M();
1174    return typeof e == "function" && (a = e, e = void 0), typeof t == "function" && (a = t, t = void 0), e || (e = this.languages), t || (t = this.options.ns), a || (a = J), this.services.backendConnector.reload(e, t, (i) => {
1175      s.resolve(), a(i);
1176    }), s;
1177  }
1178  use(e) {
1179    if (!e) throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");
1180    if (!e.type) throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");
1181    return e.type === "backend" && (this.modules.backend = e), (e.type === "logger" || e.log && e.warn && e.error) && (this.modules.logger = e), e.type === "languageDetector" && (this.modules.languageDetector = e), e.type === "i18nFormat" && (this.modules.i18nFormat = e), e.type === "postProcessor" && Re.addPostProcessor(e), e.type === "formatter" && (this.modules.formatter = e), e.type === "3rdParty" && this.modules.external.push(e), this;
1182  }
1183  setResolvedLanguage(e) {
1184    if (!(!e || !this.languages) && !["cimode", "dev"].includes(e)) {
1185      for (let t = 0; t < this.languages.length; t++) {
1186        const a = this.languages[t];
1187        if (!["cimode", "dev"].includes(a) && this.store.hasLanguageSomeTranslations(a)) {
1188          this.resolvedLanguage = a;
1189          break;
1190        }
1191      }
1192      !this.resolvedLanguage && !this.languages.includes(e) && this.store.hasLanguageSomeTranslations(e) && (this.resolvedLanguage = e, this.languages.unshift(e));
1193    }
1194  }
1195  changeLanguage(e, t) {
1196    this.isLanguageChangingTo = e;
1197    const a = M();
1198    this.emit("languageChanging", e);
1199    const s = (o) => {
1200      this.language = o, this.languages = this.services.languageUtils.toResolveHierarchy(o), this.resolvedLanguage = void 0, this.setResolvedLanguage(o);
1201    }, i = (o, l) => {
1202      l ? this.isLanguageChangingTo === e && (s(l), this.translator.changeLanguage(l), this.isLanguageChangingTo = void 0, this.emit("languageChanged", l), this.logger.log("languageChanged", l)) : this.isLanguageChangingTo = void 0, a.resolve((...d) => this.t(...d)), t && t(o, (...d) => this.t(...d));
1203    }, n = (o) => {
1204      !e && !o && this.services.languageDetector && (o = []);
1205      const l = h(o) ? o : o && o[0], d = this.store.hasLanguageSomeTranslations(l) ? l : this.services.languageUtils.getBestMatchFromCodes(h(o) ? [o] : o);
1206      d && (this.language || s(d), this.translator.language || this.translator.changeLanguage(d), this.services.languageDetector?.cacheUserLanguage?.(d)), this.loadResources(d, (c) => {
1207        i(c, d);
1208      });
1209    };
1210    return !e && this.services.languageDetector && !this.services.languageDetector.async ? n(this.services.languageDetector.detect()) : !e && this.services.languageDetector && this.services.languageDetector.async ? this.services.languageDetector.detect.length === 0 ? this.services.languageDetector.detect().then(n) : this.services.languageDetector.detect(n) : n(e), a;
1211  }
1212  getFixedT(e, t, a) {
1213    const s = (i, n, ...o) => {
1214      let l;
1215      typeof n != "object" ? l = this.options.overloadTranslationOptionHandler([i, n].concat(o)) : l = {
1216        ...n
1217      }, l.lng = l.lng || s.lng, l.lngs = l.lngs || s.lngs, l.ns = l.ns || s.ns, l.keyPrefix !== "" && (l.keyPrefix = l.keyPrefix || a || s.keyPrefix);
1218      const d = {
1219        ...this.options,
1220        ...l
1221      };
1222      typeof l.keyPrefix == "function" && (l.keyPrefix = U(l.keyPrefix, d));
1223      const c = this.options.keySeparator || ".";
1224      let u;
1225      return l.keyPrefix && Array.isArray(i) ? u = i.map((p) => (typeof p == "function" && (p = U(p, d)), `${l.keyPrefix}${c}${p}`)) : (typeof i == "function" && (i = U(i, d)), u = l.keyPrefix ? `${l.keyPrefix}${c}${i}` : i), this.t(u, l);
1226    };
1227    return h(e) ? s.lng = e : s.lngs = e, s.ns = t, s.keyPrefix = a, s;
1228  }
1229  t(...e) {
1230    return this.translator?.translate(...e);
1231  }
1232  exists(...e) {
1233    return this.translator?.exists(...e);
1234  }
1235  setDefaultNamespace(e) {
1236    this.options.defaultNS = e;
1237  }
1238  hasLoadedNamespace(e, t = {}) {
1239    if (!this.isInitialized)
1240      return this.logger.warn("hasLoadedNamespace: i18next was not initialized", this.languages), !1;
1241    if (!this.languages || !this.languages.length)
1242      return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty", this.languages), !1;
1243    const a = t.lng || this.resolvedLanguage || this.languages[0], s = this.options ? this.options.fallbackLng : !1, i = this.languages[this.languages.length - 1];
1244    if (a.toLowerCase() === "cimode") return !0;
1245    const n = (o, l) => {
1246      const d = this.services.backendConnector.state[`${o}|${l}`];
1247      return d === -1 || d === 0 || d === 2;
1248    };
1249    if (t.precheck) {
1250      const o = t.precheck(this, n);
1251      if (o !== void 0) return o;
1252    }
1253    return !!(this.hasResourceBundle(a, e) || !this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages || n(a, e) && (!s || n(i, e)));
1254  }
1255  loadNamespaces(e, t) {
1256    const a = M();
1257    return this.options.ns ? (h(e) && (e = [e]), e.forEach((s) => {
1258      this.options.ns.includes(s) || this.options.ns.push(s);
1259    }), this.loadResources((s) => {
1260      a.resolve(), t && t(s);
1261    }), a) : (t && t(), Promise.resolve());
1262  }
1263  loadLanguages(e, t) {
1264    const a = M();
1265    h(e) && (e = [e]);
1266    const s = this.options.preload || [], i = e.filter((n) => !s.includes(n) && this.services.languageUtils.isSupportedCode(n));
1267    return i.length ? (this.options.preload = s.concat(i), this.loadResources((n) => {
1268      a.resolve(), t && t(n);
1269    }), a) : (t && t(), Promise.resolve());
1270  }
1271  dir(e) {
1272    if (e || (e = this.resolvedLanguage || (this.languages?.length > 0 ? this.languages[0] : this.language)), !e) return "rtl";
1273    try {
1274      const s = new Intl.Locale(e);
1275      if (s && s.getTextInfo) {
1276        const i = s.getTextInfo();
1277        if (i && i.direction) return i.direction;
1278      }
1279    } catch {
1280    }
1281    const t = ["ar", "shu", "sqr", "ssh", "xaa", "yhd", "yud", "aao", "abh", "abv", "acm", "acq", "acw", "acx", "acy", "adf", "ads", "aeb", "aec", "afb", "ajp", "apc", "apd", "arb", "arq", "ars", "ary", "arz", "auz", "avl", "ayh", "ayl", "ayn", "ayp", "bbz", "pga", "he", "iw", "ps", "pbt", "pbu", "pst", "prp", "prd", "ug", "ur", "ydd", "yds", "yih", "ji", "yi", "hbo", "men", "xmn", "fa", "jpr", "peo", "pes", "prs", "dv", "sam", "ckb"], a = this.services?.languageUtils || new fe(se());
1282    return e.toLowerCase().indexOf("-latn") > 1 ? "ltr" : t.includes(a.getLanguagePartFromCode(e)) || e.toLowerCase().indexOf("-arab") > 1 ? "rtl" : "ltr";
1283  }
1284  static createInstance(e = {}, t) {
1285    const a = new H(e, t);
1286    return a.createInstance = H.createInstance, a;
1287  }
1288  cloneInstance(e = {}, t = J) {
1289    const a = e.forkResourceStore;
1290    a && delete e.forkResourceStore;
1291    const s = {
1292      ...this.options,
1293      ...e,
1294      isClone: !0
1295    }, i = new H(s);
1296    if ((e.debug !== void 0 || e.prefix !== void 0) && (i.logger = i.logger.clone(e)), ["store", "services", "language"].forEach((o) => {
1297      i[o] = this[o];
1298    }), i.services = {
1299      ...this.services
1300    }, i.services.utils = {
1301      hasLoadedNamespace: i.hasLoadedNamespace.bind(i)
1302    }, a) {
1303      const o = Object.keys(this.store.data).reduce((l, d) => (l[d] = {
1304        ...this.store.data[d]
1305      }, l[d] = Object.keys(l[d]).reduce((c, u) => (c[u] = {
1306        ...l[d][u]
1307      }, c), l[d]), l), {});
1308      i.store = new he(o, s), i.services.resourceStore = i.store;
1309    }
1310    if (e.interpolation) {
1311      const l = {
1312        ...se().interpolation,
1313        ...this.options.interpolation,
1314        ...e.interpolation
1315      }, d = {
1316        ...s,
1317        interpolation: l
1318      };
1319      i.services.interpolator = new ve(d);
1320    }
1321    return i.translator = new Q(i.services, s), i.translator.on("*", (o, ...l) => {
1322      i.emit(o, ...l);
1323    }), i.init(s, t), i.translator.options = s, i.translator.backendConnector.services.utils = {
1324      hasLoadedNamespace: i.hasLoadedNamespace.bind(i)
1325    }, i;
1326  }
1327  toJSON() {
1328    return {
1329      options: this.options,
1330      store: this.store,
1331      language: this.language,
1332      languages: this.languages,
1333      resolvedLanguage: this.resolvedLanguage
1334    };
1335  }
1336}
1337const m = H.createInstance();
1338m.createInstance;
1339m.dir;
1340m.init;
1341m.loadResources;
1342m.reloadResources;
1343m.use;
1344m.changeLanguage;
1345m.getFixedT;
1346m.t;
1347m.exists;
1348m.setDefaultNamespace;
1349m.hasLoadedNamespace;
1350m.loadNamespaces;
1351m.loadLanguages;
1352const {
1353  slice: rt,
1354  forEach: ot
1355} = [];
1356function lt(r) {
1357  return ot.call(rt.call(arguments, 1), (e) => {
1358    if (e)
1359      for (const t in e)
1360        r[t] === void 0 && (r[t] = e[t]);
1361  }), r;
1362}
1363function dt(r) {
1364  return typeof r != "string" ? !1 : [/<\s*script.*?>/i, /<\s*\/\s*script\s*>/i, /<\s*img.*?on\w+\s*=/i, /<\s*\w+\s*on\w+\s*=.*?>/i, /javascript\s*:/i, /vbscript\s*:/i, /expression\s*\(/i, /eval\s*\(/i, /alert\s*\(/i, /document\.cookie/i, /document\.write\s*\(/i, /window\.location/i, /innerHTML/i].some((t) => t.test(r));
1365}
1366const xe = /^[\u0009\u0020-\u007e\u0080-\u00ff]+$/, ut = function(r, e) {
1367  const a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {
1368    path: "/"
1369  }, s = encodeURIComponent(e);
1370  let i = `${r}=${s}`;
1371  if (a.maxAge > 0) {
1372    const n = a.maxAge - 0;
1373    if (Number.isNaN(n)) throw new Error("maxAge should be a Number");
1374    i += `; Max-Age=${Math.floor(n)}`;
1375  }
1376  if (a.domain) {
1377    if (!xe.test(a.domain))
1378      throw new TypeError("option domain is invalid");
1379    i += `; Domain=${a.domain}`;
1380  }
1381  if (a.path) {
1382    if (!xe.test(a.path))
1383      throw new TypeError("option path is invalid");
1384    i += `; Path=${a.path}`;
1385  }
1386  if (a.expires) {
1387    if (typeof a.expires.toUTCString != "function")
1388      throw new TypeError("option expires is invalid");
1389    i += `; Expires=${a.expires.toUTCString()}`;
1390  }
1391  if (a.httpOnly && (i += "; HttpOnly"), a.secure && (i += "; Secure"), a.sameSite)
1392    switch (typeof a.sameSite == "string" ? a.sameSite.toLowerCase() : a.sameSite) {
1393      case !0:
1394        i += "; SameSite=Strict";
1395        break;
1396      case "lax":
1397        i += "; SameSite=Lax";
1398        break;
1399      case "strict":
1400        i += "; SameSite=Strict";
1401        break;
1402      case "none":
1403        i += "; SameSite=None";
1404        break;
1405      default:
1406        throw new TypeError("option sameSite is invalid");
1407    }
1408  return a.partitioned && (i += "; Partitioned"), i;
1409}, Se = {
1410  create(r, e, t, a) {
1411    let s = arguments.length > 4 && arguments[4] !== void 0 ? arguments[4] : {
1412      path: "/",
1413      sameSite: "strict"
1414    };
1415    t && (s.expires = /* @__PURE__ */ new Date(), s.expires.setTime(s.expires.getTime() + t * 60 * 1e3)), a && (s.domain = a), document.cookie = ut(r, e, s);
1416  },
1417  read(r) {
1418    const e = `${r}=`, t = document.cookie.split(";");
1419    for (let a = 0; a < t.length; a++) {
1420      let s = t[a];
1421      for (; s.charAt(0) === " "; ) s = s.substring(1, s.length);
1422      if (s.indexOf(e) === 0) return s.substring(e.length, s.length);
1423    }
1424    return null;
1425  },
1426  remove(r, e) {
1427    this.create(r, "", -1, e);
1428  }
1429};
1430var ct = {
1431  name: "cookie",
1432  // Deconstruct the options object and extract the lookupCookie property
1433  lookup(r) {
1434    let {
1435      lookupCookie: e
1436    } = r;
1437    if (e && typeof document < "u")
1438      return Se.read(e) || void 0;
1439  },
1440  // Deconstruct the options object and extract the lookupCookie, cookieMinutes, cookieDomain, and cookieOptions properties
1441  cacheUserLanguage(r, e) {
1442    let {
1443      lookupCookie: t,
1444      cookieMinutes: a,
1445      cookieDomain: s,
1446      cookieOptions: i
1447    } = e;
1448    t && typeof document < "u" && Se.create(t, r, a, s, i);
1449  }
1450}, pt = {
1451  name: "querystring",
1452  // Deconstruct the options object and extract the lookupQuerystring property
1453  lookup(r) {
1454    let {
1455      lookupQuerystring: e
1456    } = r, t;
1457    if (typeof window < "u") {
1458      let {
1459        search: a
1460      } = window.location;
1461      !window.location.search && window.location.hash?.indexOf("?") > -1 && (a = window.location.hash.substring(window.location.hash.indexOf("?")));
1462      const i = a.substring(1).split("&");
1463      for (let n = 0; n < i.length; n++) {
1464        const o = i[n].indexOf("=");
1465        o > 0 && i[n].substring(0, o) === e && (t = i[n].substring(o + 1));
1466      }
1467    }
1468    return t;
1469  }
1470}, ht = {
1471  name: "hash",
1472  // Deconstruct the options object and extract the lookupHash property and the lookupFromHashIndex property
1473  lookup(r) {
1474    let {
1475      lookupHash: e,
1476      lookupFromHashIndex: t
1477    } = r, a;
1478    if (typeof window < "u") {
1479      const {
1480        hash: s
1481      } = window.location;
1482      if (s && s.length > 2) {
1483        const i = s.substring(1);
1484        if (e) {
1485          const n = i.split("&");
1486          for (let o = 0; o < n.length; o++) {
1487            const l = n[o].indexOf("=");
1488            l > 0 && n[o].substring(0, l) === e && (a = n[o].substring(l + 1));
1489          }
1490        }
1491        if (a) return a;
1492        if (!a && t > -1) {
1493          const n = s.match(/\/([a-zA-Z-]*)/g);
1494          return Array.isArray(n) ? n[typeof t == "number" ? t : 0]?.replace("/", "") : void 0;
1495        }
1496      }
1497    }
1498    return a;
1499  }
1500};
1501let I = null;
1502const Le = () => {
1503  if (I !== null) return I;
1504  try {
1505    if (I = typeof window < "u" && window.localStorage !== null, !I)
1506      return !1;
1507    const r = "i18next.translate.boo";
1508    window.localStorage.setItem(r, "foo"), window.localStorage.removeItem(r);
1509  } catch {
1510    I = !1;
1511  }
1512  return I;
1513};
1514var ft = {
1515  name: "localStorage",
1516  // Deconstruct the options object and extract the lookupLocalStorage property
1517  lookup(r) {
1518    let {
1519      lookupLocalStorage: e
1520    } = r;
1521    if (e && Le())
1522      return window.localStorage.getItem(e) || void 0;
1523  },
1524  // Deconstruct the options object and extract the lookupLocalStorage property
1525  cacheUserLanguage(r, e) {
1526    let {
1527      lookupLocalStorage: t
1528    } = e;
1529    t && Le() && window.localStorage.setItem(t, r);
1530  }
1531};
1532let D = null;
1533const Ce = () => {
1534  if (D !== null) return D;
1535  try {
1536    if (D = typeof window < "u" && window.sessionStorage !== null, !D)
1537      return !1;
1538    const r = "i18next.translate.boo";
1539    window.sessionStorage.setItem(r, "foo"), window.sessionStorage.removeItem(r);
1540  } catch {
1541    D = !1;
1542  }
1543  return D;
1544};
1545var gt = {
1546  name: "sessionStorage",
1547  lookup(r) {
1548    let {
1549      lookupSessionStorage: e
1550    } = r;
1551    if (e && Ce())
1552      return window.sessionStorage.getItem(e) || void 0;
1553  },
1554  cacheUserLanguage(r, e) {
1555    let {
1556      lookupSessionStorage: t
1557    } = e;
1558    t && Ce() && window.sessionStorage.setItem(t, r);
1559  }
1560}, mt = {
1561  name: "navigator",
1562  lookup(r) {
1563    const e = [];
1564    if (typeof navigator < "u") {
1565      const {
1566        languages: t,
1567        userLanguage: a,
1568        language: s
1569      } = navigator;
1570      if (t)
1571        for (let i = 0; i < t.length; i++)
1572          e.push(t[i]);
1573      a && e.push(a), s && e.push(s);
1574    }
1575    return e.length > 0 ? e : void 0;
1576  }
1577}, bt = {
1578  name: "htmlTag",
1579  // Deconstruct the options object and extract the htmlTag property
1580  lookup(r) {
1581    let {
1582      htmlTag: e
1583    } = r, t;
1584    const a = e || (typeof document < "u" ? document.documentElement : null);
1585    return a && typeof a.getAttribute == "function" && (t = a.getAttribute("lang")), t;
1586  }
1587}, vt = {
1588  name: "path",
1589  // Deconstruct the options object and extract the lookupFromPathIndex property
1590  lookup(r) {
1591    let {
1592      lookupFromPathIndex: e
1593    } = r;
1594    if (typeof window > "u") return;
1595    const t = window.location.pathname.match(/\/([a-zA-Z-]*)/g);
1596    return Array.isArray(t) ? t[typeof e == "number" ? e : 0]?.replace("/", "") : void 0;
1597  }
1598}, yt = {
1599  name: "subdomain",
1600  lookup(r) {
1601    let {
1602      lookupFromSubdomainIndex: e
1603    } = r;
1604    const t = typeof e == "number" ? e + 1 : 1, a = typeof window < "u" && window.location?.hostname?.match(/^(\w{2,5})\.(([a-z0-9-]{1,63}\.[a-z]{2,6})|localhost)/i);
1605    if (a)
1606      return a[t];
1607  }
1608};
1609let Oe = !1;
1610try {
1611  document.cookie, Oe = !0;
1612} catch {
1613}
1614const Ne = ["querystring", "cookie", "localStorage", "sessionStorage", "n
1614avigator", "htmlTag"];
1615Oe || Ne.splice(1, 1);
1616const wt = () => ({
1617  order: Ne,
1618  lookupQuerystring: "lng",
1619  lookupCookie: "i18next",
1620  lookupLocalStorage: "i18nextLng",
1621  lookupSessionStorage: "i18nextLng",
1622  // cache user language
1623  caches: ["localStorage"],
1624  excludeCacheFor: ["cimode"],
1625  // cookieMinutes: 10,
1626  // cookieDomain: 'myDomain'
1627  convertDetectedLanguage: (r) => r
1628});
1629class $e {
1630  constructor(e) {
1631    let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
1632    this.type = "languageDetector", this.detectors = {}, this.init(e, t);
1633  }
1634  init() {
1635    let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {
1636      languageUtils: {}
1637    }, t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, a = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
1638    this.services = e, this.options = lt(t, this.options || {}, wt()), typeof this.options.convertDetectedLanguage == "string" && this.options.convertDetectedLanguage.indexOf("15897") > -1 && (this.options.convertDetectedLanguage = (s) => s.replace("-", "_")), this.options.lookupFromUrlIndex && (this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex), this.i18nOptions = a, this.addDetector(ct), this.addDetector(pt), this.addDetector(ft), this.addDetector(gt), this.addDetector(mt), this.addDetector(bt), this.addDetector(vt), this.addDetector(yt), this.addDetector(ht);
1639  }
1640  addDetector(e) {
1641    return this.detectors[e.name] = e, this;
1642  }
1643  detect() {
1644    let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : this.options.order, t = [];
1645    return e.forEach((a) => {
1646      if (this.detectors[a]) {
1647        let s = this.detectors[a].lookup(this.options);
1648        s && typeof s == "string" && (s = [s]), s && (t = t.concat(s));
1649      }
1650    }), t = t.filter((a) => a != null && !dt(a)).map((a) => this.options.convertDetectedLanguage(a)), this.services && this.services.languageUtils && this.services.languageUtils.getBestMatchFromCodes ? t : t.length > 0 ? t[0] : null;
1651  }
1652  cacheUserLanguage(e) {
1653    let t = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : this.options.caches;
1654    t && (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(e) > -1 || t.forEach((a) => {
1655      this.detectors[a] && this.detectors[a].cacheUserLanguage(e, this.options);
1656    }));
1657  }
1658}
1659$e.type = "languageDetector";
1660const Pe = {
1661  en: {
1662    translation: {
1663      "characters-remaining": "{{charactersRemaining}} characters remaining",
1664      ascending: "ascending",
1665      descending: "descending",
1666      "data-table-sorted": "{{caption}} table, column {{headerName}} is now sorted by {{sortDirection}} values",
1667      date: "date",
1668      "column-headers-buttons-sortable": "column headers with buttons are sortable",
1669      "table-sort-removed": "Table sort removed",
1670      "sort-by-ascending-values": "Sort by ascending values",
1671      "sort-by-descending-values": "Sort by descending values",
1672      "reset-sort": "Reset sort",
1673      "table-now-displaying-page": "Table now displaying page {{pageNumber}} of {{totalPages}}",
1674      "table-now-displaying-rows": "Table now displaying {{pageSize}} rows per page which results in {{totalPages}} total pages for {{totalRows}} rows of data",
1675      "no-matching-results-found": "No matching results found, try another filter term",
1676      "table-filtered": "Table filtered, {{numberOfRows}} rows of data available",
1677      "table-filter-removed": "Filter removed, {{numberOfRows}} rows of data are available",
1678      "filter-cannot-be-used-no-available-data": "Filter cannot be used because there is no available data to display",
1679      "video-duration-is": "Video duration is",
1680      "minutes-and": "minutes and",
1681      "seconds-long": "seconds long",
1682      "view-video-transcript": "View video transcript",
1683      close: "Close",
1684      disabled: "disabled",
1685      breadcrumbs: "breadcrumbs",
1686      calendar: "calendar",
1687      "escape-exit-calendar": "Press escape to exit the calendar.",
1688      "previous-year": "Previous year",
1689      "next-year": "Next year",
1690      "previous-month": "Previous month",
1691      "next-month": "Next month",
1692      "show-today": "Show today",
1693      "clear-value": "Clear value",
1694      "choose-date": "Choose date",
1695      "please-follow-format": "Please follow the {{format}} format.",
1696      "please-enter-valid-date": "Please enter a valid date.",
1697      "press-down-for-calendar": "Press the down arrow key to access the calendar.",
1698      error: "ERROR",
1699      "please-refresh-browser": "Please refresh your browser or try again in a few minutes.",
1700      "sorry-no-permission": "Sorry! It looks like you don’t have permission to access this page.",
1701      "sorry-broken-link": "We’re sorry. It looks like the link you followed may be broken or the page may have been moved.",
1702      "sorry-site-unavailable": "Sorry! This part of our site is currently unavailable, we’re working on resolving the issue as quickly as possible.",
1703      "well-thats-puzzling": 'Well, that’s <span class="{{spanClass}}">puzzling.</span>',
1704      "well-shoot": '<span class="{{spanClass}}">Well, shoot.</span> Our system doesn’t recognize you.',
1705      "uh-oh-small-glitch": '<span class="{{spanClass}}">Uh-oh.</span> We’re experiencing a small glitch.',
1706      "bump-in-the-road": 'Looks like there’s a <span class="{{spanClass}}">bump</span> in the road.',
1707      "attach-files": "Attach files",
1708      "attach-file": "Attach file",
1709      "drop-file-click": "Drop a file to attach, or <span class={{spanClass}}>click to browse.</span>",
1710      "drop-files-click": "Drop files to attach, or <span class={{spanClass}}>click to browse.</span>",
1711      "drop-file-tap": "Drop a file to attach, or <span class={{spanClass}}>tap to browse.</span>",
1712      "drop-files-tap": "Drop files to attach, or <span class={{spanClass}}>tap to browse.</span>",
1713      cancel: "Cancel",
1714      "replace-file-confirmation": "Are you sure you want to replace this file:",
1715      with: "With",
1716      replace: "Replace",
1717      "no-files-attached": "No files have been attached.",
1718      "please-ensure-file-formats": "Please make sure your files are in one of the following formats",
1719      "please-ensure-file-size": "Please make sure your files are below",
1720      "file-could-not-be-uploaded": "The following file could not be uploaded",
1721      "try-again": "Try again",
1722      "remove-attachment": "Remove attachment",
1723      "file-added-live-region": "1 file has been attached.",
1724      "files-added-live-region": "{{count}} files have been attached.",
1725      "removed-file-live-region": "Your {{fileToRemove}} file was removed",
1726      "show-more": "Show more",
1727      "show-less": "Show less",
1728      loading: "loading...",
1729      "expand-collapse-row": "Expand/collapse row",
1730      "expand-collapse-column": "Expand/collapse column",
1731      "expand-row": "Expand row",
1732      "collapse-row": "Collapse row",
1733      "trouble-logging-in": "Trouble logging in?",
1734      "get-help": "Get help",
1735      "link-to-principal-homepage": "Link to Principal homepage",
1736      contact: "Contact",
1737      footer: "Footer",
1738      "terms-of-use": "Terms of use",
1739      disclosures: "Disclosures",
1740      privacy: "Privacy",
1741      security: "Security",
1742      "report-fraud": "Report fraud",
1743      accessibility: "Accessibility",
1744      "securities-offered": "Securities offered through Principal Securities, Inc.,",
1745      "member-sipc": "member SIPC",
1746      "principal-on-X": "Principal on X",
1747      "principal-on-youtube": "Principal on YouTube",
1748      "principal-on-facebook": "Principal on Facebook",
1749      "principal-on-linkedin": "Principal on LinkedIn",
1750      "principal-on-AppStore": "Principal on AppStore",
1751      "principal-on-GooglePlay": "Principal on GooglePlay",
1752      "back-to-footnote": "Back to footnote {{footnoteNumber}}",
1753      "mobile-navigation-menu": "Mobile navigation menu",
1754      "few-more-seconds": "Just a few more seconds!",
1755      "session-expired": "Your session has expired.",
1756      "logged-out": "You've logged out.",
1757      "we-logged-you-out": "To keep your account secure, we've logged you out.",
1758      "not-what-you-wanted": "Not what you wanted to do?",
1759      "log-back-in": "Log back in",
1760      "go-to-first-page": "Go to first page",
1761      "go-to-previous-page": "Go to previous page",
1762      "go-to-next-page": "Go to next page",
1763      "go-to-last-page": "Go to last page",
1764      "no-more-additional-pages": "There are no more additional pages.",
1765      "no-more-previous-pages": "There are no more previous pages.",
1766      pagination: "pagination",
1767      "data-table-pagination": "data table pagination",
1768      "primary-navigation": "primary navigation",
1769      "go-to-page": "go to page",
1770      "log-out": "Log out",
1771      "log-in": "Log in",
1772      "skip-to-content": "Skip to content",
1773      search: "Search",
1774      notifications: "Notifications",
1775      messages: "Messages",
1776      "other-alerts": "Other alerts",
1777      "error-displaying-table-data": "Error displaying table data",
1778      "no-available-table-data": "No available table data",
1779      menu: "Menu",
1780      "secondary-navigation": "secondary navigation",
1781      "logout-alert": "Logout alert!",
1782      minutes: "minutes",
1783      "stay-logged-in": "Stay logged in",
1784      seconds: "seconds",
1785      "one-moment": "One moment",
1786      "on-before-a-date": "on",
1787      "close-the-timer": "close the timer",
1788      "to-save-your-work": "to save your work before you get logged out.",
1789      "sorry-something-wrong-session": "Sorry! Something went wrong on our end when trying to extend your session. Give it another try, or ",
1790      "still-there": "Still there? You're about to be logged out.",
1791      "auto-log-you-out-warning": "To keep your account secure, we'll automatically log you out in ",
1792      dismiss: "Dismiss",
1793      minute: "minute",
1794      "time-remaining": "{{time}} remaining",
1795      progress: "progress",
1796      completed: "completed",
1797      incomplete: "incomplete",
1798      "filter-table": "Filter table",
1799      show: "Show",
1800      hide: "Hide",
1801      "value-hidden-show-available": "Value hidden. Show button available.",
1802      "value-visible-hide-available": "Value visible. Hide button available.",
1803      "no-entries": "No entries",
1804      "number-rows-displayed": "Number of rows to display in table",
1805      "rows-per-page": "rows per page",
1806      of: "of",
1807      entries: "entries",
1808      entry: "entry",
1809      "contact-us": "Contact us",
1810      "help-topics": "Help topics",
1811      "call-us-at": "Call us at",
1812      "principal-legal-links": "Principal legal links",
1813      "social-media": "Social media",
1814      "utility-menu": "utility menu",
1815      "user-menu": "user menu",
1816      "dropdown-button": "dropdown-button",
1817      "additional-information": "Additional information",
1818      "required-group": "At least one option within the group must be checked.",
1819      "numeric-characters-allowed": "Only numeric characters are allowed",
1820      "success-alert": "Success alert",
1821      "information-alert": "Information alert",
1822      "warning-alert": "Warning alert",
1823      "error-alert": "Error alert",
1824      "banner-alert": "Banner alert",
1825      "alert-not-dismissible": "This alert is not dismissible",
1826      "not-found": "Not found",
1827      forbidden: "Forbidden",
1828      "internal-server-error": "Internal server error",
1829      "service-unavailable": "Service unavailable",
1830      "this-link-opens-in-a-new-tab": "This link opens in a new tab",
1831      "opens-in-a-new-tab": "opens in a new tab",
1832      "pfg-logo": "Principal Financial Group logo",
1833      "info-toast": "Information toast",
1834      "loading-toast": "Loading toast",
1835      "success-toast": "Success toast",
1836      "error-toast": "Error toast",
1837      "error-loading-chart": "Error loading chart",
1838      retry: "Retry",
1839      label: "Label",
1840      category: "Category",
1841      value: "Value",
1842      total: "Total",
1843      "value-amount": "value",
1844      "bar-chart-aria-label": "Bar chart, {{position}} of {{total}} bars",
1845      description: "Description",
1846      "search-combo-box": "Search combo box",
1847      "your-account-has-notifications": "Your account has notifications",
1848      chart: "Chart",
1849      table: "Table",
1850      "this-triggers-a-tooltip": "This triggers a tooltip",
1851      "no-chart-data": "No chart data available",
1852      expanded: "expanded",
1853      "donut-chart-accompanying-table": "Donut chart has an accompanying table with the following information",
1854      "line-chart-accompanying-table": "Line chart has an accompanying table with the following information",
1855      "line-chart-data-points": "Line chart data points",
1856      "selected-country": "Selected country",
1857      "aria-value-text": "The current value is {{value}} out of a range from {{min}} to {{max}} and increment is {{step}}",
1858      "current-value": "Current value",
1859      "range-slider-aria-value-text": "Range slider with value {{min}} to {{max}}, adjustable in increments of {{step}}. Current slider setting (start) {{rangeStart}}, (end) {{rangeEnd}}",
1860      "range-start": "Range start {{rangeStart}}",
1861      "range-end": "Range end {{rangeEnd}}",
1862      "slider-not-multiple-of-step": "The original value ({{newValue}}) doesn't fall on a valid step increment of {{step}} from the minimum value ({{min}}), so it has been adjusted to the closest valid value ({{clampedValue}}). Use the slider handle to confirm or update this value.",
1863      "slider-outside-valid-range": "The original value ({{newValue}}) was outside of the available range ({{min}} to {{max}}), so it has been adjusted to the closest valid value ({{clampedValue}}). Use the slider handle to confirm or update this value.",
1864      "slider-range-outside-range": "The original values ({{newRangeStart}} and {{newRangeEnd}}) were outside of the available range ({{min}} to {{max}}
1864), so it has been adjusted to the closest valid range ({{min}} to {{max}}). Use the slider handles to confirm or update these values.",
1865      "slider-range-start-above-max": "The original start value ({{newRangeStart}}) is above the maximum range ({{max}}), so it has been adjusted to the valid value ({{min}}). Use the slider handle to confirm or update this value.",
1866      "slider-range-end-below-min": "The original end value ({{newRangeEnd}}) is below the minimum range ({{min}}), so it has been adjusted to the valid value ({{max}}). Use the slider handle to confirm or update this value.",
1867      "slider-range-start-above-range": "The original start value ({{newRangeStart}}) is above the range end value ({{newRangeEnd}}), so it has been adjusted to the valid range ({{min}} to {{max}}). Use the slider handles to confirm or update these values.",
1868      "slider-range-start-outside": "The original start value ({{newRangeStart}}) was outside of the available range ({{min}} to {{max}}), so it has been adjusted to the closest valid value ({{min}}). Use the slider handle to confirm or update this value.",
1869      "slider-range-end-outside": "The original end value ({{newRangeEnd}}) was outside of the available range ({{min}} to {{max}}), so it has been adjusted to the closest valid value ({{max}}). Use the slider handle to confirm or update this value.",
1870      "slider-range-not-multiple-of-step": "The original values ({{newRangeStart}} and {{newRangeEnd}}) don't fall on valid step increments of {{step}} from the minimum value ({{min}}), so they have been adjusted to the closest valid range ({{snappedStart}} to {{snappedEnd}}). Use the slider handles to confirm or update these values.",
1871      "slider-range-start-not-multiple-of-step": "The original value ({{newRangeStart}}) doesn't fall on a valid step increment of {{step}} from the minimum value ({{min}}), so it has been adjusted to the closest valid value ({{snappedStart}}). Use the slider handle to confirm or update this value.",
1872      "slider-range-end-not-multiple-of-step": "The original value ({{newRangeEnd}}) doesn't fall on a valid step increment of {{step}} from the minimum value ({{min}}), so it has been adjusted to the closest valid value ({{snappedEnd}}). Use the slider handle to confirm or update this value.",
1873      "slider-range-same-values": "The original start value ({{newRangeStart}}) and end value ({{newRangeEnd}}) cannot be the same, so it has been adjusted to the valid range ({{min}} to {{max}}). Use the slider handles to confirm or update these values.",
1874      "view-footnote": "View footnote {{footnoteNumber}}",
1875      link: "Link",
1876      through: "through",
1877      "collapse-options": "Collapse options",
1878      "expand-options": "Expand options",
1879      "no-results": "No results",
1880      "clear-all": "Clear all",
1881      "clear-all-items": "Clear all items",
1882      "item-selected": "item selected",
1883      "items-selected": "items selected",
1884      "no-items-selected": "No items selected",
1885      unavailable: "unavailable",
1886      selected: "selected",
1887      "not-selected": "not selected",
1888      deselected: "deselected",
1889      "press-enter-to-deselect": "Press enter to deselect {{label}}",
1890      "almost-there": "Almost there...",
1891      "country-code-dropdown": "A dropdown containing country codes, used to select the country code for the phone number"
1892    }
1893  },
1894  es: {
1895    translation: {
1896      "characters-remaining": "restantes {{charactersRemaining}} caracteres",
1897      ascending: "ascendentes",
1898      descending: "descendentes",
1899      "data-table-sorted": "{{caption}} tabla, la columna {{headerName}} está ordenada por valores {{sortDirection}}",
1900      date: "fecha",
1901      "column-headers-buttons-sortable": "los encabezados de columna con botones se pueden ordenar",
1902      "table-sort-removed": "La clasificación de la tabla se ha eliminado",
1903      "sort-by-ascending-values": "Ordenar por valores ascendentes",
1904      "sort-by-descending-values": "Ordenar por valores descendientes",
1905      "reset-sort": "Restablecer el orden",
1906      "table-now-displaying-page": "La tabla muestra la página {{pageNumber}} de {{totalPages}}",
1907      "table-now-displaying-rows": "La tabla muestra {{pageSize}} filas por página, es decir {{totalPages}} páginas en total con {{totalRows}} filas de datos",
1908      "no-matching-results-found": "No se encontraron resultados concordantes, intenta otra palabra de filtro",
1909      "table-filtered": "La tabla ha aplicado los filtros, hay {{numberOfRows}} filas de datos disponibles",
1910      "table-filter-removed": "El filtro se ha eliminado, hay {{numberOfRows}} filas de datos disponibles",
1911      "filter-cannot-be-used-no-available-data": "No se pueden utilizar filtros porque no hay datos disponibles para mostrar",
1912      "video-duration-is": "La duración del vídeo es de",
1913      "minutes-and": "minutos y",
1914      "seconds-long": "segundos",
1915      "view-video-transcript": "Ver la transcripción del video",
1916      close: "Cerrar",
1917      disabled: "deshabilitado",
1918      breadcrumbs: "ayuda a la navegación",
1919      calendar: "calendario",
1920      "escape-exit-calendar": "Para salir del calendario pulsa la tecla escape.",
1921      "previous-year": "Año anterior",
1922      "next-year": "Año siguiente",
1923      "previous-month": "Mes anterior",
1924      "next-month": "Mes siguiente",
1925      "show-today": "Mostrar la fecha de hoy",
1926      "clear-value": "Borrar la fecha",
1927      "choose-date": "Elegir fecha",
1928      "please-follow-format": "Utiliza el formato {{format}}, por favor.",
1929      "please-enter-valid-date": "Por favor, ingresa una fecha válida.",
1930      "press-down-for-calendar": "Para acceder al calendario pulsa la flecha hacia abajo.",
1931      error: "ERROR",
1932      "please-refresh-browser": "Actualice su navegador o inténtelo de nuevo en unos minutos.",
1933      "sorry-no-permission": "¡Arrepentido! Parece que no tienes permiso para acceder a esta página.",
1934      "sorry-broken-link": "Lo sentimos. Parece que el enlace que siguió puede estar roto o la página puede haber sido movida.",
1935      "sorry-site-unavailable": "Arrepentido! Esta parte de nuestro sitio no está disponible actualmente, estamos trabajando para resolver el problema lo más rápido posible.",
1936      "well-thats-puzzling": 'Bueno, eso es <span class="{{spanClass}}">desconcertante.</span>',
1937      "well-shoot": '<span class="{{spanClass}}">Bueno, dispara.</span> Nuestro sistema no te reconoce.',
1938      "uh-oh-small-glitch": '<span class="{{spanClass}}">Uh-oh.</span> Estamos experimentando una pequeña falla.',
1939      "bump-in-the-road": 'Parece que hay un <span class="{{spanClass}}">chichón</span> en la carretera.',
1940      "attach-files": "Adjuntar archivos",
1941      "attach-file": "Adjuntar archivo",
1942      "drop-file-click": "Arrastra un archivo para adjuntar o <span class={{spanClass}}>haz clic para buscarlo en tu equipo.</span>",
1943      "drop-files-click": "Arrastra los archivos para adjuntar o <span class={{spanClass}}>haz clic para buscarlos en tu equipo.</span>",
1944      "drop-file-tap": "Arrastra un archivo para adjuntar o <span class={{spanClass}}>haz clic para buscarlo en tu equipo.</span>",
1945      "drop-files-tap": "Arrastra los archivos para adjuntar o <span class={{spanClass}}>pulsa para buscarlos en tu equipo.</span>",
1946      cancel: "Cancelar",
1947      "replace-file-confirmation": "¿Está seguro de que desea reemplazar el siguiente archivo?",
1948      with: "Con",
1949      replace: "Reemplazar",
1950      "no-files-attached": "No se adjuntó ningún archivo.",
1951      "please-ensure-file-formats": "Por favor, asegúrate de que tus archivos estén en alguno de los siguientes formatos",
1952      "please-ensure-file-size": "Asegúrese de que sus archivos estén debajo",
1953      "file-could-not-be-uploaded": "El siguiente archivo no se pudo cargar",
1954      "try-again": "Intenta de nuevo",
1955      "remove-attachment": "Eliminar adjunto",
1956      "file-added-live-region": "Se ha adjuntado 1 archivo.",
1957      "files-added-live-region": "Se han adjuntado {{count}} archivos.",
1958      "removed-file-live-region": "Tu {{fileToRemove}} archivo fue eliminado.",
1959      "show-more": "Mostrar más",
1960      "show-less": "Ver menos",
1961      loading: "cargando...",
1962      "expand-collapse-row": "Expandir/contraer fila",
1963      "expand-collapse-column": "Expandir/contraer columna",
1964      "expand-row": "Expanda la fila",
1965      "collapse-row": "Contraiga la fila",
1966      "trouble-logging-in": "¿Tienes problemas para iniciar sesión?",
1967      "get-help": "Consigue ayuda",
1968      "link-to-principal-homepage": "Bienvenida a la página principal",
1969      contact: "Comunícate con nosotros",
1970      footer: "Pie de página",
1971      "terms-of-use": "Términos de uso",
1972      disclosures: "Declaraciones",
1973      privacy: "Privacidad",
1974      security: "Seguridad",
1975      "report-fraud": "Reporte de fraudes",
1976      accessibility: "Accesibilidad",
1977      "securities-offered": "Los valores son ofrecidos a través de Principal Securities, Inc.,",
1978      "member-sipc": "miembro de la SIPC",
1979      "principal-on-X": "Principal en X",
1980      "principal-on-youtube": "Principal en YouTube",
1981      "principal-on-facebook": "Principal en Facebook",
1982      "principal-on-linkedin": "Principal en LinkedIn",
1983      "principal-on-AppStore": "Principal en AppStore",
1984      "principal-on-GooglePlay": "Principal en GooglePlay",
1985      "back-to-footnote": "Volver a la nota a pie de página {{footnoteNumber}}",
1986      "mobile-navigation-menu": "Menú de navegación móvil",
1987      "few-more-seconds": "¡Solo unos segundos más!",
1988      "session-expired": "Tu sesión venció.",
1989      "logged-out": "Cerraste sesión.",
1990      "we-logged-you-out": "Para mantener tu cuenta segura, hemos cerrado tu sesión.",
1991      "not-what-you-wanted": "¿No era lo que querías hacer?",
1992      "log-back-in": "Iniciar sesión de nuevo",
1993      "go-to-first-page": "Ir a la primera página",
1994      "go-to-previous-page": "Ir a la página anterior",
1995      "go-to-next-page": "Ir a la página siguiente",
1996      "go-to-last-page": "Ir a la última página",
1997      "no-more-additional-pages": "No hay más páginas adicionales",
1998      "no-more-previous-pages": "No hay más páginas anteriores.",
1999      pagination: "paginación",
2000      "data-table-pagination": "paginación de tabla de datos",
2001      "primary-navigation": "navegación primaria",
2002      "go-to-page": "ir a la página",
2003      "log-out": "Cerrar sesión",
2004      "log-in": "Ingresar",
2005      "skip-to-content": "Saltar al contenido",
2006      search: "Buscar",
2007      notifications: "Notificaciones",
2008      messages: "Mensajes",
2009      "other-alerts": "Otras alertas",
2010      "error-displaying-table-data": "Error al mostrar los datos de la tabla",
2011      "no-available-table-data": "No hay datos de tabla disponibles",
2012      menu: "Menú",
2013      "secondary-navigation": "secundario navigation",
2014      "logout-alert": "¡Aviso de cierre de sesión!",
2015      minutes: "minutos",
2016      "stay-logged-in": "Mantener la sesión",
2017      seconds: "segundos",
2018      "one-moment": "Un momento",
2019      "on-before-a-date": "el",
2020      "close-the-timer": "cerrar el temporizador",
2021      "to-save-your-work": " y guarda tu trabajo.",
2022      "sorry-something-wrong-session": "¡Disculpa! Algo salió mal al tratar de alargar tu sesión. Antes de que se te cierre la sesión, inténtalo nuevamente o ",
2023      "still-there": "¿Aún estás aquí? Pronto se te cerrará la sesión.",
2024      "auto-log-you-out-warning": "Por la seguridad de tu cuenta, cerraremos tu sesión en ",
2025      dismiss: "Ignorar",
2026      minute: "minuto",
2027      "time-remaining": "El tiempo que te queda es {{time}}",
2028      progress: "progreso",
2029      completed: "paso completo",
2030      incomplete: "paso incompleto",
2031      "filter-table": "Filtrar tabla",
2032      show: "Mostrar",
2033      hide: "Ocultar",
2034      "value-hidden-show-available": "Valor oculto. Botón Mostrar disponible.",
2035      "value-visible-hide-available": "Valor visible. Botón Ocultar disponible.",
2036      "no-entries": "No hay registros",
2037      "number-rows-displayed": "Número de filas que aparecerán en la tabla",
2038      "rows-per-page": "filas por página",
2039      of: "de",
2040      entries: "registros",
2041      entry: "registro",
2042      "contact-us": "Comunícate con nosotros",
2043      "help-topics": "Temas de ayuda",
2044      "call-us-at": "Llamenos al",
2045      "principal-legal-links": "Principales enlaces legales",
2046      "social-media": "Medios de comunicación social",
2047      "utility-menu": "menú de utilidades",
2048      "user-menu": "Menú del Usuario",
2049      "dropdown-button": "botón desplegable",
2050      "additional-information": "Información adicional",
2051      "required-group": "Se debe marcar al menos una opción dentro del grupo.",
2052      "numeric-characters-allowed": "Solo se permiten caracteres numéricos",
2053      "success-alert": "Alerta de éxito",
2054      "information-alert": "Alerta de información",
2055      "warning-alert": "Alerta de advertencia",
2056      "error-alert": "Alerta de error",
2057      "banner-alert": "Alerta de banner",
2058      "alert-not-dismissible": "Esta alerta no se puede descartar",
2059      "not-found": "No se encontró",
2060      forbidden: "No está permitido",
2061      "internal-server-error": "Error del servidor interno",
2062      "service-unavailable": "Servicio no disponible",
2063      "this-link-opens-in-a-new-tab": "Este enlace se abre en una nueva pestaña",
2064      "opens-in-a-new-tab": "abre en una nueva pestaña",
2065      "pfg-logo": "Logo de Principal Financial Group",
2066      "info-toast": "Notificación temporal (toast) informativa",
2067      "loading-toast": "Notificación temporal (toast) sobre una carga (loading)",
2068      "success-toast": "Notificación temporal (toast) sobre un paso exitoso",
2069      "error-toast": "Notificación temporal (toast) sobre un error",
2070      "error-loading-chart": "Error al cargar gráfico",
2071      retry: "Intentar otra vez",
2072      label: "Identificar",
2073      category: "Categoría",
2074      value: "Valor",
2075      total: "Total",
2076      "value-amount": "cantidad",
2077      "bar-chart-aria-label": "Gráfica de barras, {{position}} de {{total}} barras",
2078      description: "Descripción",
2079      "search-combo-box": "Buscar en cuadro combinado",
2080      "your-account-has-notifications": "Tienes notificaciones en tu cuenta",
2081      chart: "Gráfica",
2082      table: "Tabla",
2083      "this-triggers-a-tooltip": "Esto activa información en pantalla",
2084      "no-chart-data": "No hay datos de gráfica disponibles",
2085      expanded: "Vista expandida",
2086      "donut-chart-accompanying-table": "La gráfica circular está acompañada por una tabla con la siguiente información",
2087      "line-chart-accompanying-table": "El gráfico de líneas viene acompañado de una tabla con la siguiente información",
2088      "line-chart-data-points": "Datos del gráfico de líneas",
2089      "selected-country": "País seleccionado",
2090      "aria-value-text": "El valor actual es {{value}} dentro de un rango de {{min}} a {{max}}, en incrementos de {{step}}",
2091      "current-value": "Valor actual",
2092      "range-slider-aria-value-text": "Barra deslizable de rangos con valores del {{min}} al {{max}}, ajustable en incrementos de {{step}}. Configuración actual de la barra deslizable (inicio) {{rangeStart}}, (fin) {{rangeEnd}}",
2093      "range-start": "Inicio de rango {{rangeStart}}",
2094      "range-end": "Fin de rango {{rangeEnd}}",
2095      "slider-not-multiple-of-step": "El valor original ({{newValue}}) no cae en un punto de incremento válido de {{step}} del valor mínimo ({{min}}), por ello se ha ajustado al valor válido más cercano ({{clampedValue}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2096      "slider-outside-valid-range": "El valor original ({{newValue}}) está fuera del rango disponible (de {{min}} a {{max}}), así que se ajustó al valor válido más cercano ({{clampedValue}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2097      "slider-range-outside-range": "Los valores originales ({{newRangeStart}} y {{newRangeEnd}}) están fuera del rango disponible (de {{min}} a {{max}}), así que se ajustó al rango válido más cercano (de {{min}} a {{max}}). Usa las barras deslizadoras para confirmar o actualizar estos valores.",
2098      "slider-range-start-above-max": "El valor inicial original ({{newRangeStart}}) supera el rango máximo ({{max}}), así que se ajustó al valor válido ({{min}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2099      "slider-range-end-below-min": "El valor final original ({{newRangeEnd}}) está por debajo del rango mínimo ({{min}}), así que se ajustó al valor válido ({{max}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2100      "slider-range-start-above-range": "El valor inicial original ({{newRangeStart}}) supera el valor final del rango ({{newRangeEnd}}), así que se ajustó al rango válido (de {{min}} a {{max}}). Usa las barras deslizadoras para confirmar o actualizar estos valores.",
2101      "slider-range-start-outside": "El valor inicial original ({{newRangeStart}}) está fuera del rango disponible (de {{min}} a {{max}}), así que se ajustó al valor válido más cercano ({{min}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2102      "slider-range-end-outside": "El valor final original ({{newRangeEnd}}) está fuera del rango disponible (de {{min}} a {{max}}), así que se ajustó al valor válido más cercano ({{max}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2103      "slider-range-not-multiple-of-step": "Los valores originales ({{newRangeStart}} y {{newRangeEnd}}) no caen en puntos de incremento válidos de {{step}} del valor mínimo ({{min}}), por ello se han ajustado al rango válido más cercano (de {{snappedStart}} a {{snappedEnd}}). Usa las barras deslizadoras para confirmar o actualizar estos valores.",
2104      "slider-range-start-not-multiple-of-step": "El valor original ({{newRangeStart}}) no cae en un punto de incremento válido de {{step}} del valor mínimo ({{min}}), por ello se ha ajustado al valor válido más cercano ({{snappedStart}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2105      "slider-range-end-not-multiple-of-step": "El valor original ({{newRangeEnd}}) no cae en un punto de incremento válido de {{step}} del valor mínimo ({{min}}), por ello se ha ajustado al valor válido más cercano ({{snappedEnd}}). Usa la barra deslizadora para confirmar o actualizar este valor.",
2106      "slider-range-same-values": "El valor inicial original ({{newRangeStart}}) y el valor final ({{newRangeEnd}}) no pueden ser iguales, así que se ha ajustado al rango válido de ({{min}} a {{max}}). Usa la barra deslizadora para confirmar o actualizar estos valores.",
2107      "view-footnote": "Ver nota a pie de página {{footnoteNumber}}",
2108      link: "Enlace",
2109      through: "a",
2110      "collapse-options": "Opciones de contracción",
2111      "expand-options": "Opciones de ampliación",
2112      "no-results": "No hay resultados",
2113      "clear-all": "Borrar todo",
2114      "clear-all-items": "Borrar todos los ítems",
2115      "item-selected": "ítem seleccionado",
2116      "items-selected": "ítems seleccionados",
2117      "no-items-selected": "No hay ítems seleccionados",
2118      unavailable: "indisponible",
2119      selected: "seleccionado",
2120      "not-selected": "no seleccionado",
2121      deselected: "deseleccionado",
2122      "press-enter-to-deselect": "Presione enter para deseleccionar {{label}}",
2123      "almost-there": "Casi listo...",
2124      "country-code-dropdown": "Menú desplegable para seleccionar el código del país que corresponda al número de teléfono"
2125    }
2126  }
2127};
2128var xt = Object.defineProperty, B = (r, e, t, a) => {
2129  for (var s = void 0, i = r.length - 1, n; i >= 0; i--)
2130    (n = r[i]) && (s = n(e, t, s) || s);
2131  return s && xt(e, t, s), s;
2132};
2133class W extends Fe {
2134  constructor() {
2135    super(...arguments), this.initialRenderForRequiredSlotValidation = !0, this.requiredSlotElements = {}, this.requiredSlotTimeout = null, this.requiredPropertyErrors = [], this.isSuspended = !1, this.isHydrationComplete = !1, this.hasFirstUpdatedRun = !1;
2136  }
2137  /**
2138   * Skip updates when the component is suspended
2139   * @internal
2140   */
2141  shouldUpdate() {
2142    return !this.isSuspended;
2143  }
2144  /**
2145   * The class map used to derive the class attribute for the component.
2146   * This will be used by the getClass method.
2147   * @internal
2148   */
2149  get classNames() {
2150    return {};
2151  }
2152  /**
2153   * The class name prefixed with the appropriate global namespace and class prefix.
2154   * @internal
2155   */
2156  get classNamespaceAndPrefix() {
2157    const e = {
2158      component: "c",
2159      layout: "l"
2160    };
2161    return this.isComponent(this.componentType) ? `pds-${e[this.componentCategory]}-${this.componentName}` : `${e[this.componentCategory]}-${this.componentName}`;
2162  }
2163  isComponent(e) {
2164    return e === "component";
2165  }
2166  /**
2167   * Prepends the appropriate namespace to the class: 'pds-' Components or '' Recipes
2168   * @param key
2169   */
2170  getClassNamespace(e) {
2171    return this.isComponent(this.componentType) ? `pds-${e}` : "";
2172  }
2173  /**
2174   * Prepends the appropriate prefix to the class name as a BEM modifier
2175   * @param className
2176   */
2177  classMod(e) {
2178    return `${this.classNamespaceAndPrefix}--${e}`;
2179  }
2180  /**
2181   * Prepends the appropriate prefix to the class as a BEM element
2182   * @param className
2183   */
2184  classEl(e) {
2185    return `${this.classNamespaceAndPrefix}__${e}`;
2186  }
2187  /**
2188   * Wraps the classNames object in Lit's classMap directive,
2189   * adding the appropriate prefix to each class name
2190   * @returns the string to pass to the component's class attribute
2191   * @example
2192   *   class Button extends PdsElement {
2193   *     componentName = 'button';
2194   *
2195   *     componentCategory:ComponentCategory = 'component';
2196   *
2197   *     componentType: ComponentType = 'component';
2198   *
2199   *     \@property()
2200   *     variant: 'primary' | 'secondary';
2201   *
2202   *     get classNames() {
2203   *       return {
2204   *         [this.variant]: !!this.variant, // pds-c-button--primary
2205   *         centered: this.aligned === "centered", // pds-c-button--centered
2206   *         inverse: this.inverted, // pds-c-button--inverse
2207   *         "is-active": this.active, // pds-is-active
2208   *       };
2209   *     }
2210   *   }
2211   *
2212   *   // Given the above component class, if you render the following
2213   *   <pds-button variant="primary">Hello world</pds-button>
2214   *
2215   *   // then if you call this method, it will return the following (recipe components omit 'pds-')
2216   *   this.getClass() // 'pds-c-button pds-c-button--primary'
2217   */
2218  getClass() {
2219    return Ae(
2220      Object.keys(this.classNames).reduce(
2221        (e, t) => {
2222          const a = /^is-/.test(t) ? this.getClassNamespace(t) : this.classMod(t);
2223          return {
2224            ...e,
2225            [a]: this.classNames[t]
2226          };
2227        },
2228        {
2229          [this.classNamespaceAndPrefix]: !0
2230        }
2231      )
2232    );
2233  }
2234  /**
2235   * Sets the isHydrationComplete check to true
2236   * This needs to get set in the element's
2237   * firstUpdated lifecycle hook (this is done by default)
2238   */
2239  setHydrationComplete() {
2240    this.isHydrationComplete = !0;
2241  }
2242  /**
2243   * Check if a slot is empty
2244   * This can only be used once hydration is complete, and thus
2245   * setHydrationComplete will need to run first for this to work
2246   *
2247   * @param slotName
2248   */
2249  slotEmpty(e) {
2250    return this.hasFirstUpdatedRun ? !this.querySelector(`[slot${e ? `="${e}"` : ""}]`) : !0;
2251  }
2252  /**
2253   * Check if a slot is not empty
2254   * This can only be used once hydration is complete, and thus
2255   * setHydrationComplete will need to run first for this to work
2256   *
2257   * @param slotName
2258   */
2259  slotNotEmpty(e) {
2260    return this.slotEmpty(e) ? "" : !this.slotEmpty(e);
2261  }
2262  firstUpdated() {
2263    this.hasFirstUpdatedRun = !0, !ee && typeof window < "u" && this.isConnected && requestAnimationFrame(() => {
2264      this.isConnected && this.setHydrationComplete();
2265    }), m.isInitialized && m.changeLanguage();
2266  }
2267  /**
2268   * Dynamically generate random unique IDs
2269   * Returns '' if window.crypto.randomUUID() is not available
2270   */
2271  getRandomId() {
2272    return !ee && window.crypto && window.crypto.randomUUID ? window.crypto.randomUUID() : Math.random().toString(36).substring(2, 10);
2273  }
2274  /**
2275   * This initializes language localization capabilities on a component
2276   * Call this function from the connectedCallback() function, like this:
2277   *
2278   * connectedCallback() {
2279   *   super.connectedCallback();
2280   *   this.initLocalization();
2281   * }
2282   */
2283  initLocalization() {
2284    m.isInitialized || (m.use($e).init({
2285      fallbackLng: "en",
2286      resources: Pe,
2287      detection: {
2288        lookupLocalStorage: "pds-language",
2289        lookupQuerystring: "lang",
2290        order: [
2291          "htmlTag",
2292          "localStorage",
2293          "querystring",
2294          "cookie",
2295          "sessionStorage",
2296          "navigator"
2297        ]
2298      }
2299    }), m.languages = ["en", "es"]);
2300  }
2301  /**
2302   * This function is a wrapper for i18next.t().
2303   *
2304   * It will default to the English translation if i18next
2305   * is not yet available.
2306   */
2307  translateText(e, t) {
2308    return !this.hasFirstUpdatedRun || !m.isInitialized ? Pe.en.translation[e] : m.t(e, t);
2309  }
2310  /**
2311   * Clone a lit element
2312   */
2313  cloneLitElement(e) {
2314    const t = e.cloneNode(!0);
2315    try {
2316      this.processProps(e, t), this.processChildPdsElements(e, t);
2317    } catch {
2318    }
2319    return t;
2320  }
2321  // Set event listeners and attributes for the cloned element based on the original element
2322  processProps(e, t) {
2323    const a = Object.getOwnPropertyNames(e).filter(
2324      (n) => n.startsWith("__reactFiber")
2325    )[0], i = Object.getOwnPropertyDescriptors(e)[a];
2326    if (i?.value?.return?.pendingProps) {
2327      const n = i.value.return.pendingProps, o = Object.keys(n).filter(
2328        (d) => d !== "children" && d !== "suppressHydrationWarning" && !d.startsWith("_")
2329      ).reduce((d, c) => ({
2330        ...d,
2331        [c]: n[c]
2332      }), {});
2333      Object.keys(o).forEach((d) => {
2334        const c = o[d];
2335        if (d.startsWith("onPds") && typeof c == "function") {
2336          const u = d.substring(2), p = e;
2337          t.addEventListener(u, (g) => {
2338            const f = new CustomEvent(u, {
2339              bubbles: !0,
2340              cancelable: !0,
2341              detail: g instanceof CustomEvent ? g.detail : {}
2342            });
2343            p.dispatchEvent(f);
2344          });
2345        } else c !== !1 && t.setAttribute(d, o[d]);
2346      });
2347    }
2348  }
2349  /**
2350   * Helper to get direct child PDS elements
2351   */
2352  getDirectPdsChildren(e) {
2353    return Array.from(e.children).filter(
2354      (t) => t.tagName.toLowerCase().startsWith("pds-")
2355    );
2356  }
2357  /**
2358   * Recursively process child PDS elements to ensure their React event handlers are preserved
2359   * @internal
2360   */
2361  processChildPdsElements(e, t) {
2362    const a = this.getDirectPdsChildren(e), s = this.getDirectPdsChildren(t);
2363    for (let i = 0; i < a.length; i++) {
2364      const n = a[i], o = s[i];
2365      n && o && this.processProps(n, o);
2366    }
2367  }
2368  /**
2369   * Note: this needs to be called on the client only
2370   * You can call it on the client by calling it from a slotchange event
2371   */
2372  setWindowResizeHandler() {
2373    if (!ee && window) {
2374      const e = () => {
2375        const t = window.innerWidth;
2376        t && (t < De ? this.responsiveViewportSize = "xs" : t < Ue ? this.responsiveViewportSize = "sm" : t < ze ? this.responsiveViewportSize = "md" : t < Ve ? this.responsiveViewportSize = "lg" : this.responsiveViewportSize = "xl");
2377      };
2378      e(), window.visualViewport?.addEventListener("resize", e);
2379    }
2380  }
2381  /**
2382   * Used to duplicate slot markup if the markup differs between mobile and desktop views.
2383   */
2384  duplicateSlotMarkup(e) {
2385    const t = e.assignedNodes();
2386    this.dynamicSlotMarkup = t.map((a) => a);
2387  }
2388  /**
2389   * Returns the duplicated slot markup
2390   */
2391  getDynamicSlotMarkup() {
2392    if (this.dynamicSlotMarkup)
2393      return this.dynamicSlotMarkup.map((e) => {
2394        if (e instanceof HTMLElement && e.tagName && e.tagName.toLowerCase().startsWith("pds-")) {
2395          const t = this.cloneLitElement(e);
2396          return t.removeAttribute("slot"), t.removeAttribute("id"), t;
2397        } else {
2398          const t = e.cloneNode(!0);
2399          return t instanceof HTMLElement && (t.removeAttribute("slot"), t.removeAttribute("id")), t;
2400        }
2401      });
2402  }
2403  /**
2404   * Checks if a slotted element is valid for its slot
2405   * Can pass the slot event on slotchange or the slot
2406   * name to validate
2407   */
2408  handleSlotValidation(e) {
2409    let t;
2410    if (typeof e == "string") {
2411      if (t = this.querySelector(
2412        `slot[name="${e}"]`
2413      ) || this.shadowRoot?.querySelector(
2414        `slot[name="${e}"]`
2415      ), t === null)
2416        return;
2417    } else if (e)
2418      t = e.target;
2419    else if (t = this.querySelector("slot") || this.shadowRoot?.querySelector("slot"), t === null)
2420      return;
2421    const a = t.getAttribute("allowed-elements")?.split(",").map((i) => i.trim().toUpperCase());
2422    if (typeof a > "u")
2423      return;
2424    t.assignedElements().forEach((i) => {
2425      this.validateSlottedElements(i, a) || (console.error("Invalid slotted element:", i), i.remove());
2426    });
2427  }
2428  /**
2429   * Checks if an element's tag name is valid, based on a list of valid tag namesubstrings
2430   */
2431  validateSlottedElements(e, t) {
2432    return !!(e instanceof Element && t.find((a) => e.tagName.toUpperCase().includes(a)));
2433  }
2434}
2435B([
2436  Ie({ type: Boolean, reflect: !0 })
2437], W.prototype, "isSuspended");
2438B([
2439  X()
2440], W.prototype, "isHydrationComplete");
2441B([
2442  X()
2443], W.prototype, "hasFirstUpdatedRun");
2444B([
2445  X()
2446], W.prototype, "responsiveViewportSize");
2447B([
2448  X()
2449], W.prototype, "dynamicSlotMarkup");
2450export {
2451  ze as B,
2452  W as P,
2453  Pt as a,
2454  De as b,
2455  m as i
2456};
2457//# sourceMappingURL=PdsElement.BuTF7VEW.js.map

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.