From 2273c4e6d3be784fb6c9523bc4be84beb9d6e6d6 Mon Sep 17 00:00:00 2001 From: Daniel Regeci <536331+ovx@users.noreply.github.com> Date: Thu, 14 Nov 2024 10:11:53 +0700 Subject: [PATCH] fix: codeql url sanitization [#76] --- dist/altcha.js | 197 ++++++++++++++++++----------------- dist/altcha.umd.cjs | 4 +- dist_external/altcha.js | 195 +++++++++++++++++----------------- dist_external/altcha.umd.cjs | 4 +- src/Altcha.svelte | 3 +- 5 files changed, 203 insertions(+), 200 deletions(-) diff --git a/dist/altcha.js b/dist/altcha.js index 1408ff9..832cf8e 100644 --- a/dist/altcha.js +++ b/dist/altcha.js @@ -1,8 +1,8 @@ var Ft = Object.defineProperty; var Dt = (n, e, t) => e in n ? Ft(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t; -var U = (n, e, t) => Dt(n, typeof e != "symbol" ? e + "" : e, t); +var K = (n, e, t) => Dt(n, typeof e != "symbol" ? e + "" : e, t); const ht = "KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHAoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gcChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChyLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGIoZSx0LHI9IlNIQS0yNTYiLG49MWU2LHM9MCl7Y29uc3Qgbz1uZXcgQWJvcnRDb250cm9sbGVyLGE9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgYz1zO2M8PW47Yys9MSl7aWYoby5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCB3KHQsYyxyKT09PWUpcmV0dXJue251bWJlcjpjLHRvb2s6RGF0ZS5ub3coKS1hfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjpvfX1mdW5jdGlvbiBoKGUpe2NvbnN0IHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyW25dPXQuY2hhckNvZGVBdChuKTtyZXR1cm4gcn1mdW5jdGlvbiBnKGUsdD0xMil7Y29uc3Qgcj1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7bisrKXJbbl09ZSUyNTYsZT1NYXRoLmZsb29yKGUvMjU2KTtyZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBtKGUsdD0iIixyPTFlNixuPTApe2NvbnN0IHM9IkFFUy1HQ00iLG89bmV3IEFib3J0Q29udHJvbGxlcixhPURhdGUubm93KCksbD1hc3luYygpPT57Zm9yKGxldCB1PW47dTw9cjt1Kz0xKXtpZihvLnNpZ25hbC5hYm9ydGVkfHwhY3x8IXkpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IGQ9YXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOnMsaXY6Zyh1KX0sYyx5KTtpZihkKXJldHVybntjbGVhclRleHQ6bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGQpLHRvb2s6RGF0ZS5ub3coKS1hfX1jYXRjaHt9fXJldHVybiBudWxsfTtsZXQgYz1udWxsLHk9bnVsbDt0cnl7eT1oKGUpO2NvbnN0IHU9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGYuZW5jb2RlKHQpKTtjPWF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHUscywhMSxbImRlY3J5cHQiXSl9Y2F0Y2h7cmV0dXJue3Byb21pc2U6UHJvbWlzZS5yZWplY3QoKSxjb250cm9sbGVyOm99fXJldHVybntwcm9taXNlOmwoKSxjb250cm9sbGVyOm99fWxldCBpO29ubWVzc2FnZT1hc3luYyBlPT57Y29uc3R7dHlwZTp0LHBheWxvYWQ6cixzdGFydDpuLG1heDpzfT1lLmRhdGE7bGV0IG89bnVsbDtpZih0PT09ImFib3J0IilpPT1udWxsfHxpLmFib3J0KCksaT12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtpZigib2JmdXNjYXRlZCJpbiByKXtjb25zdHtrZXk6YSxvYmZ1c2NhdGVkOmx9PXJ8fHt9O289YXdhaXQgbShsLGEscyxuKX1lbHNle2NvbnN0e2FsZ29yaXRobTphLGNoYWxsZW5nZTpsLHNhbHQ6Y309cnx8e307bz1iKGwsYyxhLHMsbil9aT1vLmNvbnRyb2xsZXIsby5wcm9taXNlLnRoZW4oYT0+e3NlbGYucG9zdE1lc3NhZ2UoYSYmey4uLmEsd29ya2VyOiEwfSl9KX19fSkoKTsK", jt = (n) => Uint8Array.from(atob(n), (e) => e.charCodeAt(0)), nt = typeof self < "u" && self.Blob && new Blob([jt(ht)], { type: "text/javascript;charset=utf-8" }); -function Pt(n) { +function Wt(n) { let e; try { if (e = nt && (self.URL || self.webkitURL).createObjectURL(nt), !e) throw ""; @@ -25,7 +25,7 @@ function Pt(n) { } function Re() { } -function Wt(n, e) { +function Pt(n, e) { for (const t in e) n[t] = e[t]; return ( /** @type {T & S} */ @@ -57,7 +57,7 @@ function Mt(n, e, t, i) { } } function bt(n, e, t, i) { - return n[1] && i ? Wt(t.ctx.slice(), n[1](i(e))) : t.ctx; + return n[1] && i ? Pt(t.ctx.slice(), n[1](i(e))) : t.ctx; } function Bt(n, e, t, i) { if (n[2] && i) { @@ -292,13 +292,13 @@ function bn(n, e, t, i, o, l, s = null, d = [-1]) { }; s && s(f.root); let C = !1; - if (f.ctx = t ? t(n, e.props || {}, (b, M, ...D) => { - const j = D.length ? D[0] : M; - return f.ctx && o(f.ctx[b], f.ctx[b] = j) && (!f.skip_bound && f.bound[b] && f.bound[b](j), C && mn(n, b)), M; + if (f.ctx = t ? t(n, e.props || {}, (v, D, ...j) => { + const W = j.length ? j[0] : D; + return f.ctx && o(f.ctx[v], f.ctx[v] = W) && (!f.skip_bound && f.bound[v] && f.bound[v](W), C && mn(n, v)), D; }) : [], f.update(), C = !0, we(f.before_update), f.fragment = i ? i(f.ctx) : !1, e.target) { if (e.hydrate) { - const b = tn(e.target); - f.fragment && f.fragment.l(b), b.forEach(Y); + const v = tn(e.target); + f.fragment && f.fragment.l(v), v.forEach(Y); } else f.fragment && f.fragment.c(); e.intro && pt(n.$$.fragment), hn(n, e.target, e.anchor), w(); @@ -310,23 +310,23 @@ typeof HTMLElement == "function" && (wt = class extends HTMLElement { constructor(e, t, i) { super(); /** The Svelte component constructor */ - U(this, "$$ctor"); + K(this, "$$ctor"); /** Slots */ - U(this, "$$s"); + K(this, "$$s"); /** The Svelte component instance */ - U(this, "$$c"); + K(this, "$$c"); /** Whether or not the custom element is connected */ - U(this, "$$cn", !1); + K(this, "$$cn", !1); /** Component props data */ - U(this, "$$d", {}); + K(this, "$$d", {}); /** `true` if currently in the process of reflecting component props back to attributes */ - U(this, "$$r", !1); + K(this, "$$r", !1); /** @type {Record} Props definition (name, reflected, type etc) */ - U(this, "$$p_d", {}); + K(this, "$$p_d", {}); /** @type {Record} Event listeners */ - U(this, "$$l", {}); + K(this, "$$l", {}); /** @type {Map} Event listener unsubscribe functions */ - U(this, "$$l_u", /* @__PURE__ */ new Map()); + K(this, "$$l_u", /* @__PURE__ */ new Map()); this.$$ctor = e, this.$$s = t, i && this.attachShadow({ mode: "open" }); } addEventListener(e, t, i) { @@ -499,7 +499,7 @@ class vn { * * @type {any} */ - U(this, "$$"); + K(this, "$$"); /** * ### PRIVATE API * @@ -507,7 +507,7 @@ class vn { * * @type {any} */ - U(this, "$$set"); + K(this, "$$set"); } /** @returns {void} */ $destroy() { @@ -603,7 +603,7 @@ async function Cn(n, e = "", t = 1e6, i = 0) { if (l.signal.aborted || !h || !f) return null; try { - const b = await crypto.subtle.decrypt( + const v = await crypto.subtle.decrypt( { name: o, iv: Rn(C) @@ -611,9 +611,9 @@ async function Cn(n, e = "", t = 1e6, i = 0) { h, f ); - if (b) + if (v) return { - clearText: new TextDecoder().decode(b), + clearText: new TextDecoder().decode(v), took: Date.now() - s }; } catch { @@ -895,7 +895,7 @@ function ft(n) { }; } function Tn(n) { - let e, t, i, o, l, s, d, h, f, C, b, M, D, j, S, N, O; + let e, t, i, o, l, s, d, h, f, C, v, D, j, W, S, N, O; const J = ( /*#slots*/ n[46].default @@ -910,7 +910,7 @@ function Tn(n) { /*state*/ n[7] === m.VERIFYING && lt() ); - function q(u, y) { + function q(u, b) { return ( /*state*/ u[7] === m.VERIFIED ? zn : ( @@ -919,7 +919,7 @@ function Tn(n) { ) ); } - let K = q(n), H = K(n), x = ( + let M = q(n), H = M(n), x = ( /*hidelogo*/ (n[3] !== !0 || /*isFreeSaaS*/ n[12]) && st(n) @@ -938,7 +938,7 @@ function Tn(n) { ); return { c() { - G && G.c(), e = $(), t = Z("div"), i = Z("div"), A && A.c(), o = $(), l = Z("div"), s = Z("input"), f = $(), C = Z("div"), H.c(), b = $(), x && x.c(), M = $(), T && T.c(), D = $(), z && z.c(), j = $(), _ && _.c(), a(s, "type", "checkbox"), a(s, "id", d = /*name*/ + G && G.c(), e = $(), t = Z("div"), i = Z("div"), A && A.c(), o = $(), l = Z("div"), s = Z("input"), f = $(), C = Z("div"), H.c(), v = $(), x && x.c(), D = $(), T && T.c(), j = $(), z && z.c(), W = $(), _ && _.c(), a(s, "type", "checkbox"), a(s, "id", d = /*name*/ n[4] + "_checkbox"), s.required = h = /*auto*/ n[0] !== "onsubmit" && (!/*floating*/ n[1] || /*auto*/ @@ -959,9 +959,9 @@ function Tn(n) { n[1] ); }, - m(u, y) { - G && G.m(u, y), X(u, e, y), X(u, t, y), L(t, i), A && A.m(i, null), L(i, o), L(i, l), L(l, s), s.checked = /*checked*/ - n[8], L(i, f), L(i, C), H.m(C, null), L(i, b), x && x.m(i, null), L(t, M), T && T.m(t, null), L(t, D), z && z.m(t, null), L(t, j), _ && _.m(t, null), n[49](t), S = !0, N || (O = [ + m(u, b) { + G && G.m(u, b), X(u, e, b), X(u, t, b), L(t, i), A && A.m(i, null), L(i, o), L(i, l), L(l, s), s.checked = /*checked*/ + n[8], L(i, f), L(i, C), H.m(C, null), L(i, v), x && x.m(i, null), L(t, D), T && T.m(t, null), L(t, j), z && z.m(t, null), L(t, W), _ && _.m(t, null), n[49](t), S = !0, N || (O = [ Le( s, "change", @@ -982,8 +982,8 @@ function Tn(n) { ) ], N = !0); }, - p(u, y) { - G && G.p && (!S || y[1] & /*$$scope*/ + p(u, b) { + G && G.p && (!S || b[1] & /*$$scope*/ 16384) && Ot( G, J, @@ -994,7 +994,7 @@ function Tn(n) { J, /*$$scope*/ u[45], - y, + b, null ) : Jt( /*$$scope*/ @@ -1002,35 +1002,35 @@ function Tn(n) { ), null ), /*state*/ - u[7] === m.VERIFYING ? A || (A = lt(), A.c(), A.m(i, o)) : A && (A.d(1), A = null), (!S || y[0] & /*name*/ + u[7] === m.VERIFYING ? A || (A = lt(), A.c(), A.m(i, o)) : A && (A.d(1), A = null), (!S || b[0] & /*name*/ 16 && d !== (d = /*name*/ - u[4] + "_checkbox")) && a(s, "id", d), (!S || y[0] & /*auto, floating*/ + u[4] + "_checkbox")) && a(s, "id", d), (!S || b[0] & /*auto, floating*/ 3 && h !== (h = /*auto*/ u[0] !== "onsubmit" && (!/*floating*/ u[1] || /*auto*/ - u[0] !== "off"))) && (s.required = h), y[0] & /*checked*/ + u[0] !== "off"))) && (s.required = h), b[0] & /*checked*/ 256 && (s.checked = /*checked*/ - u[8]), (!S || y[0] & /*state*/ + u[8]), (!S || b[0] & /*state*/ 128) && it( l, "altcha-hidden", /*state*/ u[7] === m.VERIFYING - ), K === (K = q(u)) && H ? H.p(u, y) : (H.d(1), H = K(u), H && (H.c(), H.m(C, null))), /*hidelogo*/ + ), M === (M = q(u)) && H ? H.p(u, b) : (H.d(1), H = M(u), H && (H.c(), H.m(C, null))), /*hidelogo*/ u[3] !== !0 || /*isFreeSaaS*/ - u[12] ? x ? x.p(u, y) : (x = st(u), x.c(), x.m(i, null)) : x && (x.d(1), x = null), /*error*/ + u[12] ? x ? x.p(u, b) : (x = st(u), x.c(), x.m(i, null)) : x && (x.d(1), x = null), /*error*/ u[5] || /*state*/ - u[7] === m.EXPIRED ? T ? T.p(u, y) : (T = ct(u), T.c(), T.m(t, D)) : T && (T.d(1), T = null), /*_strings*/ + u[7] === m.EXPIRED ? T ? T.p(u, b) : (T = ct(u), T.c(), T.m(t, j)) : T && (T.d(1), T = null), /*_strings*/ u[11].footer && /*hidefooter*/ (u[2] !== !0 || /*isFreeSaaS*/ - u[12]) ? z ? z.p(u, y) : (z = at(u), z.c(), z.m(t, j)) : z && (z.d(1), z = null), /*floating*/ - u[1] ? _ ? _.p(u, y) : (_ = ft(u), _.c(), _.m(t, null)) : _ && (_.d(1), _ = null), (!S || y[0] & /*state*/ + u[12]) ? z ? z.p(u, b) : (z = at(u), z.c(), z.m(t, W)) : z && (z.d(1), z = null), /*floating*/ + u[1] ? _ ? _.p(u, b) : (_ = ft(u), _.c(), _.m(t, null)) : _ && (_.d(1), _ = null), (!S || b[0] & /*state*/ 128) && a( t, "data-state", /*state*/ u[7] - ), (!S || y[0] & /*floating*/ + ), (!S || b[0] & /*floating*/ 2) && a( t, "data-floating", @@ -1055,13 +1055,13 @@ function dt(n) { } function Zn(n, e, t) { var qe, et; - let i, o, l, s, { $$slots: d = {}, $$scope: h } = e, { auto: f = void 0 } = e, { blockspam: C = void 0 } = e, { challengeurl: b = void 0 } = e, { challengejson: M = void 0 } = e, { debug: D = !1 } = e, { delay: j = 0 } = e, { expire: S = void 0 } = e, { floating: N = void 0 } = e, { floatinganchor: O = void 0 } = e, { floatingoffset: J = void 0 } = e, { hidefooter: G = !1 } = e, { hidelogo: A = !1 } = e, { name: q = "altcha" } = e, { maxnumber: K = 1e6 } = e, { mockerror: H = !1 } = e, { obfuscated: x = void 0 } = e, { plugins: T = void 0 } = e, { refetchonexpire: z = !0 } = e, { spamfilter: _ = !1 } = e, { strings: u = void 0 } = e, { test: y = !1 } = e, { verifyurl: ee = void 0 } = e, { workers: le = Math.min(16, navigator.hardwareConcurrency || 8) } = e, { workerurl: ue = void 0 } = e; + let i, o, l, s, { $$slots: d = {}, $$scope: h } = e, { auto: f = void 0 } = e, { blockspam: C = void 0 } = e, { challengeurl: v = void 0 } = e, { challengejson: D = void 0 } = e, { debug: j = !1 } = e, { delay: W = 0 } = e, { expire: S = void 0 } = e, { floating: N = void 0 } = e, { floatinganchor: O = void 0 } = e, { floatingoffset: J = void 0 } = e, { hidefooter: G = !1 } = e, { hidelogo: A = !1 } = e, { name: q = "altcha" } = e, { maxnumber: M = 1e6 } = e, { mockerror: H = !1 } = e, { obfuscated: x = void 0 } = e, { plugins: T = void 0 } = e, { refetchonexpire: z = !0 } = e, { spamfilter: _ = !1 } = e, { strings: u = void 0 } = e, { test: b = !1 } = e, { verifyurl: ee = void 0 } = e, { workers: le = Math.min(16, navigator.hardwareConcurrency || 8) } = e, { workerurl: ue = void 0 } = e; const de = sn(), Te = ["SHA-256", "SHA-384", "SHA-512"], Ze = (et = (qe = document.documentElement.lang) == null ? void 0 : qe.split("-")) == null ? void 0 : et[0]; - let re = !1, E, ie = null, se = null, v = null, he = null, B = null, oe = null, te = [], R = m.UNVERIFIED; + let re = !1, E, ie = null, se = null, y = null, he = null, B = null, oe = null, te = [], R = m.UNVERIFIED; ln(() => { - Et(), v && (v.removeEventListener("submit", Fe), v.removeEventListener("reset", De), v.removeEventListener("focusin", Xe), v = null), B && (clearTimeout(B), B = null), document.removeEventListener("click", He), document.removeEventListener("scroll", Ye), window.removeEventListener("resize", Pe); + Et(), y && (y.removeEventListener("submit", Fe), y.removeEventListener("reset", De), y.removeEventListener("focusin", Xe), y = null), B && (clearTimeout(B), B = null), document.removeEventListener("click", He), document.removeEventListener("scroll", Ye), window.removeEventListener("resize", We); }), on(() => { - k("mounted", "1.0.6"), k("workers", le), Nt(), k("plugins", te.length ? te.map((r) => r.constructor.pluginName).join(", ") : "none"), y && k("using test mode"), S && ke(S), f !== void 0 && k("auto", f), N !== void 0 && We(N), v = E.closest("form"), v && (v.addEventListener("submit", Fe, { capture: !0 }), v.addEventListener("reset", De), f === "onfocus" && v.addEventListener("focusin", Xe)), f === "onload" && (x ? ge() : ne()), i && (G || A) && k("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."), requestAnimationFrame(() => { + k("mounted", "1.0.6"), k("workers", le), Nt(), k("plugins", te.length ? te.map((r) => r.constructor.pluginName).join(", ") : "none"), b && k("using test mode"), S && ke(S), f !== void 0 && k("auto", f), N !== void 0 && Pe(N), y = E.closest("form"), y && (y.addEventListener("submit", Fe, { capture: !0 }), y.addEventListener("reset", De), f === "onfocus" && y.addEventListener("focusin", Xe)), f === "onload" && (x ? ge() : ne()), i && (G || A) && k("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."), requestAnimationFrame(() => { de("load"); }); }); @@ -1072,7 +1072,7 @@ function Zn(n, e, t) { number: c.number, salt: r.salt, signature: r.signature, - test: y ? !0 : void 0, + test: b ? !0 : void 0, took: c.took })); } @@ -1081,7 +1081,7 @@ function Zn(n, e, t) { r.destroy(); } function Ge() { - b && z && R === m.VERIFIED ? ne() : me(m.EXPIRED, s.expired); + v && z && R === m.VERIFIED ? ne() : me(m.EXPIRED, s.expired); } async function Rt() { var r; @@ -1089,38 +1089,38 @@ function Zn(n, e, t) { throw k("mocking error"), new Error("Mocked error."); if (o) return k("using provided json data"), o; - if (y) - return k("generating test challenge", { test: y }), _n(typeof y != "boolean" ? +y : void 0); + if (b) + return k("generating test challenge", { test: b }), _n(typeof b != "boolean" ? +b : void 0); { - if (!b && v) { - const p = v.getAttribute("action"); - p != null && p.includes("/form/") && t(15, b = p + "/altcha"); + if (!v && y) { + const p = y.getAttribute("action"); + p != null && p.includes("/form/") && t(15, v = p + "/altcha"); } - if (!b) + if (!v) throw new Error("Attribute challengeurl not set."); - k("fetching challenge from", b); - const c = await fetch(b, { + k("fetching challenge from", v); + const c = await fetch(v, { headers: _ ? { "x-altcha-spam-filter": "1" } : {} }); if (c.status !== 200) throw new Error(`Server responded with ${c.status}.`); const g = c.headers.get("Expires"), I = c.headers.get("X-Altcha-Config"), P = await c.json(), F = new URLSearchParams((r = P.salt.split("?")) == null ? void 0 : r[1]), V = F.get("expires") || F.get("expire"); if (V) { - const p = new Date(+V * 1e3), W = isNaN(p.getTime()) ? 0 : p.getTime() - Date.now(); - W > 0 && ke(W); + const p = new Date(+V * 1e3), U = isNaN(p.getTime()) ? 0 : p.getTime() - Date.now(); + U > 0 && ke(U); } if (I) try { const p = JSON.parse(I); - p && typeof p == "object" && (p.verifyurl && (p.verifyurl = new URL(p.verifyurl, new URL(b)).toString()), Me(p)); + p && typeof p == "object" && (p.verifyurl && (p.verifyurl = new URL(p.verifyurl, new URL(v)).toString()), Me(p)); } catch (p) { k("unable to configure from X-Altcha-Config", p); } if (!S && (g != null && g.length)) { const p = Date.parse(g); if (p) { - const W = p - Date.now(); - W > 0 && ke(W); + const U = p - Date.now(); + U > 0 && ke(U); } } return P; @@ -1128,7 +1128,7 @@ function Zn(n, e, t) { } function Ct(r) { var g; - const c = v == null ? void 0 : v.querySelector(typeof r == "string" ? `input[name="${r}"]` : 'input[type="email"]:not([data-no-spamfilter])'); + const c = y == null ? void 0 : y.querySelector(typeof r == "string" ? `input[name="${r}"]` : 'input[type="email"]:not([data-no-spamfilter])'); return ((g = c == null ? void 0 : c.value) == null ? void 0 : g.slice(c.value.indexOf("@"))) || void 0; } function It() { @@ -1158,7 +1158,7 @@ function Zn(n, e, t) { } function Lt(r) { return [ - ...(v == null ? void 0 : v.querySelectorAll(r != null && r.length ? r.map((g) => `input[name="${g}"]`).join(", ") : 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || [] + ...(y == null ? void 0 : y.querySelectorAll(r != null && r.length ? r.map((g) => `input[name="${g}"]`).join(", ") : 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || [] ].reduce( (g, I) => { const P = I.name, F = I.value; @@ -1187,10 +1187,10 @@ function Zn(n, e, t) { })); } function k(...r) { - (D || r.some((c) => c instanceof Error)) && console[r[0] instanceof Error ? "error" : "log"]("ALTCHA", `[name=${q}]`, ...r); + (j || r.some((c) => c instanceof Error)) && console[r[0] instanceof Error ? "error" : "log"]("ALTCHA", `[name=${q}]`, ...r); } function zt() { - [m.UNVERIFIED, m.ERROR, m.EXPIRED].includes(R) ? _ && (v == null ? void 0 : v.reportValidity()) === !1 ? t(8, re = !1) : x ? ge() : ne() : t(8, re = !0); + [m.UNVERIFIED, m.ERROR, m.EXPIRED].includes(R) ? _ && (y == null ? void 0 : y.reportValidity()) === !1 ? t(8, re = !1) : x ? ge() : ne() : t(8, re = !0); } function He(r) { const c = r.target; @@ -1207,9 +1207,9 @@ function Zn(n, e, t) { R === m.UNVERIFIED && ne(); } function Fe(r) { - v && f === "onsubmit" ? R === m.UNVERIFIED ? (r.preventDefault(), r.stopPropagation(), ne().then(() => { - v == null || v.requestSubmit(); - })) : R !== m.VERIFIED && (r.preventDefault(), r.stopPropagation(), R === m.VERIFYING && je()) : v && N && f === "off" && R === m.UNVERIFIED && (r.preventDefault(), r.stopPropagation(), t(9, E.style.display = "block", E), _e()); + y && f === "onsubmit" ? R === m.UNVERIFIED ? (r.preventDefault(), r.stopPropagation(), ne().then(() => { + y == null || y.requestSubmit(); + })) : R !== m.VERIFIED && (r.preventDefault(), r.stopPropagation(), R === m.VERIFYING && je()) : y && N && f === "off" && R === m.UNVERIFIED && (r.preventDefault(), r.stopPropagation(), t(9, E.style.display = "block", E), _e()); } function De() { me(); @@ -1224,16 +1224,16 @@ function Zn(n, e, t) { _e(); }), t(8, re = R === m.VERIFIED); } - function Pe() { + function We() { N && _e(); } function _e(r = 20) { if (E) - if (se || (se = (O ? document.querySelector(O) : v == null ? void 0 : v.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])')) || v), se) { + if (se || (se = (O ? document.querySelector(O) : y == null ? void 0 : y.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])')) || y), se) { const c = parseInt(J, 10) || 12, g = se.getBoundingClientRect(), I = E.getBoundingClientRect(), P = document.documentElement.clientHeight, F = document.documentElement.clientWidth, V = N === "auto" ? g.bottom + I.height + c + r > P : N === "top", p = Math.max(r, Math.min(F - r - I.width, g.left + g.width / 2 - I.width / 2)); if (V ? t(9, E.style.top = `${g.top - (I.height + c)}px`, E) : t(9, E.style.top = `${g.bottom + c}px`, E), t(9, E.style.left = `${p}px`, E), E.setAttribute("data-floating", V ? "top" : "bottom"), ie) { - const W = ie.getBoundingClientRect(); - t(10, ie.style.left = g.left - p + g.width / 2 - W.width / 2 + "px", ie); + const U = ie.getBoundingClientRect(); + t(10, ie.style.left = g.left - p + g.width / 2 - U.width / 2 + "px", ie); } } else k("unable to find floating anchor element"); @@ -1244,8 +1244,8 @@ function Zn(n, e, t) { k("requesting server verification from", ee); const c = { payload: r }; if (_) { - const { blockedCountries: P, classifier: F, disableRules: V, email: p, expectedLanguages: W, expectedCountries: Ie, fields: be, ipAddress: ye, text: Xt, timeZone: tt } = It(); - c.blockedCountries = P, c.classifier = F, c.disableRules = V, c.email = p === !1 ? void 0 : Ct(p), c.expectedCountries = Ie, c.expectedLanguages = W || (Ze ? [Ze] : void 0), c.fields = be === !1 ? void 0 : Lt(be), c.ipAddress = ye === !1 ? void 0 : ye || "auto", c.text = Xt, c.timeZone = tt === !1 ? void 0 : tt || xn(); + const { blockedCountries: P, classifier: F, disableRules: V, email: p, expectedLanguages: U, expectedCountries: Ie, fields: be, ipAddress: ye, text: Xt, timeZone: tt } = It(); + c.blockedCountries = P, c.classifier = F, c.disableRules = V, c.email = p === !1 ? void 0 : Ct(p), c.expectedCountries = Ie, c.expectedLanguages = U || (Ze ? [Ze] : void 0), c.fields = be === !1 ? void 0 : Lt(be), c.ipAddress = ye === !1 ? void 0 : ye || "auto", c.text = Xt, c.timeZone = tt === !1 ? void 0 : tt || xn(); } const g = await fetch(ee, { body: JSON.stringify(c), @@ -1261,8 +1261,8 @@ function Zn(n, e, t) { function ke(r) { k("expire", r), B && (clearTimeout(B), B = null), r < 1 ? Ge() : B = setTimeout(Ge, r); } - function We(r) { - k("floating", r), N !== r && (t(9, E.style.left = "", E), t(9, E.style.top = "", E)), t(1, N = r === !0 || r === "" ? "auto" : r === !1 || r === "false" ? void 0 : N), N ? (f || t(0, f = "onsubmit"), document.addEventListener("scroll", Ye), document.addEventListener("click", He), window.addEventListener("resize", Pe)) : f === "onsubmit" && t(0, f = void 0); + function Pe(r) { + k("floating", r), N !== r && (t(9, E.style.left = "", E), t(9, E.style.top = "", E)), t(1, N = r === !0 || r === "" ? "auto" : r === !1 || r === "false" ? void 0 : N), N ? (f || t(0, f = "onsubmit"), document.addEventListener("scroll", Ye), document.addEventListener("click", He), window.addEventListener("resize", We)) : f === "onsubmit" && t(0, f = void 0); } function Ue(r) { if (!r.algorithm) @@ -1293,16 +1293,16 @@ function Zn(n, e, t) { } return { data: r, - solution: await kn(r.challenge, r.salt, r.algorithm, r.maxnumber || K).promise + solution: await kn(r.challenge, r.salt, r.algorithm, r.maxnumber || M).promise }; } - async function Zt(r, c = typeof y == "number" ? y : K, g = Math.ceil(le)) { + async function Zt(r, c = typeof b == "number" ? b : M, g = Math.ceil(le)) { const I = []; g = Math.min(16, Math.max(1, g)); for (let V = 0; V < g; V++) I.push(altchaCreateWorker(ue)); const P = Math.ceil(c / g), F = await Promise.all(I.map((V, p) => { - const W = p * P; + const U = p * P; return new Promise((Ie) => { V.addEventListener("message", (be) => { if (be.data) @@ -1311,8 +1311,8 @@ function Zn(n, e, t) { Ie(be.data); }), V.postMessage({ payload: r, - max: W + P, - start: W, + max: U + P, + start: U, type: "work" }); }); @@ -1335,15 +1335,15 @@ function Zn(n, e, t) { return r.clarify(); } function Me(r) { - r.obfuscated !== void 0 && t(24, x = r.obfuscated), r.auto !== void 0 && (t(0, f = r.auto), f === "onload" && (x ? ge() : ne())), r.blockspam !== void 0 && t(16, C = !!r.blockspam), r.floatinganchor !== void 0 && t(20, O = r.floatinganchor), r.delay !== void 0 && t(18, j = r.delay), r.floatingoffset !== void 0 && t(21, J = r.floatingoffset), r.floating !== void 0 && We(r.floating), r.expire !== void 0 && (ke(r.expire), t(19, S = r.expire)), r.challenge && (Ue(r.challenge), o = r.challenge), r.challengeurl !== void 0 && t(15, b = r.challengeurl), r.debug !== void 0 && t(17, D = !!r.debug), r.hidefooter !== void 0 && t(2, G = !!r.hidefooter), r.hidelogo !== void 0 && t(3, A = !!r.hidelogo), r.maxnumber !== void 0 && t(22, K = +r.maxnumber), r.mockerror !== void 0 && t(23, H = !!r.mockerror), r.name !== void 0 && t(4, q = r.name), r.refetchonexpire !== void 0 && t(25, z = !!r.refetchonexpire), r.spamfilter !== void 0 && t(26, _ = typeof r.spamfilter == "object" ? r.spamfilter : !!r.spamfilter), r.strings && t(44, l = r.strings), r.test !== void 0 && t(27, y = typeof r.test == "number" ? r.test : !!r.test), r.verifyurl !== void 0 && t(28, ee = r.verifyurl), r.workers !== void 0 && t(29, le = +r.workers), r.workerurl !== void 0 && t(30, ue = r.workerurl); + r.obfuscated !== void 0 && t(24, x = r.obfuscated), r.auto !== void 0 && (t(0, f = r.auto), f === "onload" && (x ? ge() : ne())), r.blockspam !== void 0 && t(16, C = !!r.blockspam), r.floatinganchor !== void 0 && t(20, O = r.floatinganchor), r.delay !== void 0 && t(18, W = r.delay), r.floatingoffset !== void 0 && t(21, J = r.floatingoffset), r.floating !== void 0 && Pe(r.floating), r.expire !== void 0 && (ke(r.expire), t(19, S = r.expire)), r.challenge && (Ue(r.challenge), o = r.challenge), r.challengeurl !== void 0 && t(15, v = r.challengeurl), r.debug !== void 0 && t(17, j = !!r.debug), r.hidefooter !== void 0 && t(2, G = !!r.hidefooter), r.hidelogo !== void 0 && t(3, A = !!r.hidelogo), r.maxnumber !== void 0 && t(22, M = +r.maxnumber), r.mockerror !== void 0 && t(23, H = !!r.mockerror), r.name !== void 0 && t(4, q = r.name), r.refetchonexpire !== void 0 && t(25, z = !!r.refetchonexpire), r.spamfilter !== void 0 && t(26, _ = typeof r.spamfilter == "object" ? r.spamfilter : !!r.spamfilter), r.strings && t(44, l = r.strings), r.test !== void 0 && t(27, b = typeof r.test == "number" ? r.test : !!r.test), r.verifyurl !== void 0 && t(28, ee = r.verifyurl), r.workers !== void 0 && t(29, le = +r.workers), r.workerurl !== void 0 && t(30, ue = r.workerurl); } function Be() { return { auto: f, blockspam: C, - challengeurl: b, - debug: D, - delay: j, + challengeurl: v, + debug: j, + delay: W, expire: S, floating: N, floatinganchor: O, @@ -1351,13 +1351,13 @@ function Zn(n, e, t) { hidefooter: G, hidelogo: A, name: q, - maxnumber: K, + maxnumber: M, mockerror: H, obfuscated: x, refetchonexpire: z, spamfilter: _, strings: s, - test: y, + test: b, verifyurl: ee, workers: le, workerurl: ue @@ -1382,7 +1382,7 @@ function Zn(n, e, t) { t(7, R = r), t(5, he = c); } async function ne() { - return me(m.VERIFYING), await new Promise((r) => setTimeout(r, j || 0)), Rt().then((r) => (Ue(r), k("challenge", r), Ke(r))).then(({ data: r, solution: c }) => { + return me(m.VERIFYING), await new Promise((r) => setTimeout(r, W || 0)), Rt().then((r) => (Ue(r), k("challenge", r), Ke(r))).then(({ data: r, solution: c }) => { if (k("solution", c), "challenge" in r && c && !("clearText" in c)) if ((c == null ? void 0 : c.number) !== void 0) { if (ee) @@ -1412,11 +1412,12 @@ function Zn(n, e, t) { }); } return n.$$set = (r) => { - "auto" in r && t(0, f = r.auto), "blockspam" in r && t(16, C = r.blockspam), "challengeurl" in r && t(15, b = r.challengeurl), "challengejson" in r && t(31, M = r.challengejson), "debug" in r && t(17, D = r.debug), "delay" in r && t(18, j = r.delay), "expire" in r && t(19, S = r.expire), "floating" in r && t(1, N = r.floating), "floatinganchor" in r && t(20, O = r.floatinganchor), "floatingoffset" in r && t(21, J = r.floatingoffset), "hidefooter" in r && t(2, G = r.hidefooter), "hidelogo" in r && t(3, A = r.hidelogo), "name" in r && t(4, q = r.name), "maxnumber" in r && t(22, K = r.maxnumber), "mockerror" in r && t(23, H = r.mockerror), "obfuscated" in r && t(24, x = r.obfuscated), "plugins" in r && t(32, T = r.plugins), "refetchonexpire" in r && t(25, z = r.refetchonexpire), "spamfilter" in r && t(26, _ = r.spamfilter), "strings" in r && t(33, u = r.strings), "test" in r && t(27, y = r.test), "verifyurl" in r && t(28, ee = r.verifyurl), "workers" in r && t(29, le = r.workers), "workerurl" in r && t(30, ue = r.workerurl), "$$scope" in r && t(45, h = r.$$scope); + "auto" in r && t(0, f = r.auto), "blockspam" in r && t(16, C = r.blockspam), "challengeurl" in r && t(15, v = r.challengeurl), "challengejson" in r && t(31, D = r.challengejson), "debug" in r && t(17, j = r.debug), "delay" in r && t(18, W = r.delay), "expire" in r && t(19, S = r.expire), "floating" in r && t(1, N = r.floating), "floatinganchor" in r && t(20, O = r.floatinganchor), "floatingoffset" in r && t(21, J = r.floatingoffset), "hidefooter" in r && t(2, G = r.hidefooter), "hidelogo" in r && t(3, A = r.hidelogo), "name" in r && t(4, q = r.name), "maxnumber" in r && t(22, M = r.maxnumber), "mockerror" in r && t(23, H = r.mockerror), "obfuscated" in r && t(24, x = r.obfuscated), "plugins" in r && t(32, T = r.plugins), "refetchonexpire" in r && t(25, z = r.refetchonexpire), "spamfilter" in r && t(26, _ = r.spamfilter), "strings" in r && t(33, u = r.strings), "test" in r && t(27, b = r.test), "verifyurl" in r && t(28, ee = r.verifyurl), "workers" in r && t(29, le = r.workers), "workerurl" in r && t(30, ue = r.workerurl), "$$scope" in r && t(45, h = r.$$scope); }, n.$$.update = () => { n.$$.dirty[0] & /*challengeurl*/ - 32768 && t(12, i = !!(b != null && b.includes(".altcha.org")) && !!(b != null && b.includes("apiKey=ckey_"))), n.$$.dirty[1] & /*challengejson*/ - 1 && (o = M ? dt(M) : void 0), n.$$.dirty[1] & /*strings*/ + 32768 | n.$$.dirty[1] & /*challengejson*/ + 1 && t(12, i = D && new URL(D, location.origin).host.endsWith(".altcha.org") && !!(v != null && v.includes("apiKey=ckey_"))), n.$$.dirty[1] & /*challengejson*/ + 1 && (o = D ? dt(D) : void 0), n.$$.dirty[1] & /*strings*/ 4 && t(44, l = u ? dt(u) : {}), n.$$.dirty[1] & /*parsedStrings*/ 8192 && t(11, s = { ariaLinkLabel: ut, @@ -1448,23 +1449,23 @@ function Zn(n, e, t) { i, zt, je, - b, + v, C, - D, j, + W, S, O, J, - K, + M, H, x, z, _, - y, + b, ee, le, ue, - M, + D, T, u, ge, @@ -1726,7 +1727,7 @@ customElements.define("altcha-widget", yn( ], !1 )); -globalThis.altchaCreateWorker = (n) => n ? new Worker(new URL(n)) : new Pt(); +globalThis.altchaCreateWorker = (n) => n ? new Worker(new URL(n)) : new Wt(); globalThis.altchaPlugins = globalThis.altchaPlugins || []; export { Vn as Altcha diff --git a/dist/altcha.umd.cjs b/dist/altcha.umd.cjs index 98e64ce..8ecc06d 100644 --- a/dist/altcha.umd.cjs +++ b/dist/altcha.umd.cjs @@ -1,2 +1,2 @@ -(function(D,F){typeof exports=="object"&&typeof module<"u"?F(exports):typeof define=="function"&&define.amd?define(["exports"],F):(D=typeof globalThis<"u"?globalThis:D||self,F(D.altcha={}))})(this,function(D){"use strict";var Vn=Object.defineProperty;var Gn=(D,F,ce)=>F in D?Vn(D,F,{enumerable:!0,configurable:!0,writable:!0,value:ce}):D[F]=ce;var K=(D,F,ce)=>Gn(D,typeof F!="symbol"?F+"":F,ce);const F="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHAoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gcChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChyLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGIoZSx0LHI9IlNIQS0yNTYiLG49MWU2LHM9MCl7Y29uc3Qgbz1uZXcgQWJvcnRDb250cm9sbGVyLGE9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgYz1zO2M8PW47Yys9MSl7aWYoby5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCB3KHQsYyxyKT09PWUpcmV0dXJue251bWJlcjpjLHRvb2s6RGF0ZS5ub3coKS1hfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjpvfX1mdW5jdGlvbiBoKGUpe2NvbnN0IHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyW25dPXQuY2hhckNvZGVBdChuKTtyZXR1cm4gcn1mdW5jdGlvbiBnKGUsdD0xMil7Y29uc3Qgcj1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7bisrKXJbbl09ZSUyNTYsZT1NYXRoLmZsb29yKGUvMjU2KTtyZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBtKGUsdD0iIixyPTFlNixuPTApe2NvbnN0IHM9IkFFUy1HQ00iLG89bmV3IEFib3J0Q29udHJvbGxlcixhPURhdGUubm93KCksbD1hc3luYygpPT57Zm9yKGxldCB1PW47dTw9cjt1Kz0xKXtpZihvLnNpZ25hbC5hYm9ydGVkfHwhY3x8IXkpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IGQ9YXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOnMsaXY6Zyh1KX0sYyx5KTtpZihkKXJldHVybntjbGVhclRleHQ6bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGQpLHRvb2s6RGF0ZS5ub3coKS1hfX1jYXRjaHt9fXJldHVybiBudWxsfTtsZXQgYz1udWxsLHk9bnVsbDt0cnl7eT1oKGUpO2NvbnN0IHU9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGYuZW5jb2RlKHQpKTtjPWF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHUscywhMSxbImRlY3J5cHQiXSl9Y2F0Y2h7cmV0dXJue3Byb21pc2U6UHJvbWlzZS5yZWplY3QoKSxjb250cm9sbGVyOm99fXJldHVybntwcm9taXNlOmwoKSxjb250cm9sbGVyOm99fWxldCBpO29ubWVzc2FnZT1hc3luYyBlPT57Y29uc3R7dHlwZTp0LHBheWxvYWQ6cixzdGFydDpuLG1heDpzfT1lLmRhdGE7bGV0IG89bnVsbDtpZih0PT09ImFib3J0IilpPT1udWxsfHxpLmFib3J0KCksaT12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtpZigib2JmdXNjYXRlZCJpbiByKXtjb25zdHtrZXk6YSxvYmZ1c2NhdGVkOmx9PXJ8fHt9O289YXdhaXQgbShsLGEscyxuKX1lbHNle2NvbnN0e2FsZ29yaXRobTphLGNoYWxsZW5nZTpsLHNhbHQ6Y309cnx8e307bz1iKGwsYyxhLHMsbil9aT1vLmNvbnRyb2xsZXIsby5wcm9taXNlLnRoZW4oYT0+e3NlbGYucG9zdE1lc3NhZ2UoYSYmey4uLmEsd29ya2VyOiEwfSl9KX19fSkoKTsK",ce=n=>Uint8Array.from(atob(n),e=>e.charCodeAt(0)),Ge=typeof self<"u"&&self.Blob&&new Blob([ce(F)],{type:"text/javascript;charset=utf-8"});function It(n){let e;try{if(e=Ge&&(self.URL||self.webkitURL).createObjectURL(Ge),!e)throw"";const t=new Worker(e,{name:n==null?void 0:n.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),t}catch{return new Worker("data:text/javascript;base64,"+F,{name:n==null?void 0:n.name})}finally{e&&(self.URL||self.webkitURL).revokeObjectURL(e)}}function Ee(){}function Lt(n,e){for(const t in e)n[t]=e[t];return n}function He(n){return n()}function Ye(){return Object.create(null)}function ge(n){n.forEach(He)}function Xe(n){return typeof n=="function"}function Nt(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}function zt(n){return Object.keys(n).length===0}function St(n,e,t,i){if(n){const o=Fe(n,e,t,i);return n[0](o)}}function Fe(n,e,t,i){return n[1]&&i?Lt(t.ctx.slice(),n[1](i(e))):t.ctx}function Tt(n,e,t,i){if(n[2]&&i){const o=n[2](i(t));if(e.dirty===void 0)return o;if(typeof o=="object"){const l=[],s=Math.max(e.dirty.length,o.length);for(let d=0;d32){const e=[],t=n.ctx.length/32;for(let i=0;in.removeEventListener(e,t,i)}function a(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Xt(n){return Array.from(n.childNodes)}function je(n,e,t){n.classList.toggle(e,!!t)}function Ft(n,e,{bubbles:t=!1,cancelable:i=!1}={}){return new CustomEvent(n,{detail:e,bubbles:t,cancelable:i})}function jt(n){const e={};return n.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let me;function be(n){me=n}function Se(){if(!me)throw new Error("Function called outside component initialization");return me}function Dt(n){Se().$$.on_mount.push(n)}function Pt(n){Se().$$.on_destroy.push(n)}function Wt(){const n=Se();return(e,t,{cancelable:i=!1}={})=>{const o=n.$$.callbacks[e];if(o){const l=Ft(e,t,{cancelable:i});return o.slice().forEach(s=>{s.call(n,l)}),!l.defaultPrevented}return!0}}const ae=[],Re=[];let fe=[];const De=[],Pe=Promise.resolve();let Te=!1;function We(){Te||(Te=!0,Pe.then(w))}function Mt(){return We(),Pe}function Ae(n){fe.push(n)}const Ze=new Set;let ue=0;function w(){if(ue!==0)return;const n=me;do{try{for(;uen.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),fe=e}const Ce=new Set;let Bt;function Me(n,e){n&&n.i&&(Ce.delete(n),n.i(e))}function Ot(n,e,t,i){if(n&&n.o){if(Ce.has(n))return;Ce.add(n),Bt.c.push(()=>{Ce.delete(n)}),n.o(e)}}function Jt(n,e,t){const{fragment:i,after_update:o}=n.$$;i&&i.m(e,t),Ae(()=>{const l=n.$$.on_mount.map(He).filter(Xe);n.$$.on_destroy?n.$$.on_destroy.push(...l):ge(l),n.$$.on_mount=[]}),o.forEach(Ae)}function $t(n,e){const t=n.$$;t.fragment!==null&&(Kt(t.after_update),ge(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Qt(n,e){n.$$.dirty[0]===-1&&(ae.push(n),We(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const W=P.length?P[0]:O;return f.ctx&&o(f.ctx[b],f.ctx[b]=W)&&(!f.skip_bound&&f.bound[b]&&f.bound[b](W),I&&Qt(n,b)),O}):[],f.update(),I=!0,ge(f.before_update),f.fragment=i?i(f.ctx):!1,e.target){if(e.hydrate){const b=Xt(e.target);f.fragment&&f.fragment.l(b),b.forEach(H)}else f.fragment&&f.fragment.c();e.intro&&Me(n.$$.fragment),Jt(n,e.target,e.anchor),w()}be(h)}let Ue;typeof HTMLElement=="function"&&(Ue=class extends HTMLElement{constructor(e,t,i){super();K(this,"$$ctor");K(this,"$$s");K(this,"$$c");K(this,"$$cn",!1);K(this,"$$d",{});K(this,"$$r",!1);K(this,"$$p_d",{});K(this,"$$l",{});K(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const o=this.$$c.$on(e,t);this.$$l_u.set(t,o)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){const o=this.$$l_u.get(t);o&&(o(),this.$$l_u.delete(t))}if(this.$$l[e]){const o=this.$$l[e].indexOf(t);o>=0&&this.$$l[e].splice(o,1)}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=S("slot"),l!=="default"&&a(s,"name",l)},m:function(f,I){X(f,s,I)},d:function(f){f&&H(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},i=jt(this);for(const l of this.$$s)l in i&&(t[l]=[e(l)]);for(const l of this.attributes){const s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=Ie(s,l.value,this.$$p_d,"toProp"))}for(const l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const o=()=>{this.$$r=!0;for(const l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){const s=Ie(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(o),o();for(const l in this.$$l)for(const s of this.$$l[l]){const d=this.$$c.$on(l,s);this.$$l_u.set(s,d)}this.$$l={}}}attributeChangedCallback(e,t,i){var o;this.$$r||(e=this.$$g_p(e),this.$$d[e]=Ie(e,i,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Ie(n,e,t,i){var l;const o=(l=t[n])==null?void 0:l.type;if(e=o==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[n])return e;if(i==="toAttribute")switch(o){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(o){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function en(n,e,t,i,o,l){let s=class extends Ue{constructor(){super(n,t,o),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(d=>(e[d].attribute||d).toLowerCase())}};return Object.keys(e).forEach(d=>{Object.defineProperty(s.prototype,d,{get(){return this.$$c&&d in this.$$c?this.$$c[d]:this.$$d[d]},set(h){var f;h=Ie(d,h,e),this.$$d[d]=h,(f=this.$$c)==null||f.$set({[d]:h})}})}),i.forEach(d=>{Object.defineProperty(s.prototype,d,{get(){var h;return(h=this.$$c)==null?void 0:h[d]}})}),n.element=s,s}class tn{constructor(){K(this,"$$");K(this,"$$set")}$destroy(){$t(this,1),this.$destroy=Ee}$on(e,t){if(!Xe(t))return Ee;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const o=i.indexOf(t);o!==-1&&i.splice(o,1)}}$set(e){this.$$set&&!zt(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const nn="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(nn);const Ke=new TextEncoder;function rn(n){return[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function on(n,e="SHA-256",t=1e5){const i=Date.now().toString(16);n||(n=Math.round(Math.random()*t));const o=await Be(i,n,e);return{algorithm:e,challenge:o,salt:i,signature:""}}async function Be(n,e,t){return rn(await crypto.subtle.digest(t.toUpperCase(),Ke.encode(n+e)))}function ln(n,e,t="SHA-256",i=1e6,o=0){const l=new AbortController,s=Date.now();return{promise:(async()=>{for(let h=o;h<=i;h+=1){if(l.signal.aborted)return null;if(await Be(e,h,t)===n)return{number:h,took:Date.now()-s}}return null})(),controller:l}}function sn(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function cn(n){const e=atob(n),t=new Uint8Array(e.length);for(let i=0;i{for(let I=i;I<=t;I+=1){if(l.signal.aborted||!h||!f)return null;try{const b=await crypto.subtle.decrypt({name:o,iv:an(I)},h,f);if(b)return{clearText:new TextDecoder().decode(b),took:Date.now()-s}}catch{}}return null};let h=null,f=null;try{f=cn(n);const I=await crypto.subtle.digest("SHA-256",Ke.encode(e));h=await crypto.subtle.importKey("raw",I,o,!1,["decrypt"])}catch{return{promise:Promise.reject(),controller:l}}return{promise:d(),controller:l}}var g=(n=>(n.ERROR="error",n.VERIFIED="verified",n.VERIFYING="verifying",n.UNVERIFIED="unverified",n.EXPIRED="expired",n))(g||{});function un(n){Vt(n,"svelte-ddsc3z",'.altcha.svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, transparent);border:var(--altcha-border-width, 1px) solid var(--altcha-color-border, #a0a0a0);border-radius:var(--altcha-border-radius, 3px);color:var(--altcha-color-text, currentColor);display:flex;flex-direction:column;max-width:var(--altcha-max-width, 260px);position:relative;text-align:left}.altcha.svelte-ddsc3z.svelte-ddsc3z:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, white);display:none;filter:drop-shadow(3px 3px 6px rgba(0, 0, 0, 0.2));left:-100%;position:fixed;top:-100%;width:var(--altcha-max-width, 260px);z-index:999999}.altcha[data-floating=top].svelte-ddsc3z .altcha-anchor-arrow.svelte-ddsc3z{border-bottom-color:transparent;border-top-color:var(--altcha-color-border, #a0a0a0);bottom:-12px;top:auto}.altcha[data-floating=bottom].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-bottom-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating=top].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-top-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z:not([data-state=unverified]){display:block}.altcha-anchor-arrow.svelte-ddsc3z.svelte-ddsc3z{border:6px solid transparent;border-bottom-color:var(--altcha-color-border, #a0a0a0);content:"";height:0;left:12px;position:absolute;top:-12px;width:0}.altcha-main.svelte-ddsc3z.svelte-ddsc3z{align-items:center;display:flex;gap:0.4rem;padding:0.7rem}.altcha-label.svelte-ddsc3z.svelte-ddsc3z{flex-grow:1}.altcha-label.svelte-ddsc3z label.svelte-ddsc3z{cursor:pointer}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z{color:currentColor;opacity:0.3}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-error.svelte-ddsc3z.svelte-ddsc3z{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:0.85rem;gap:0.3rem;padding:0 0.7rem 0.7rem}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:0.75rem;opacity:0.4;padding:0.2rem 0.7rem;text-align:right}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-footer.svelte-ddsc3z>.svelte-ddsc3z:first-child{flex-grow:1}.altcha-footer.svelte-ddsc3z a{color:currentColor}.altcha-checkbox.svelte-ddsc3z.svelte-ddsc3z{display:flex;align-items:center;height:24px;width:24px}.altcha-checkbox.svelte-ddsc3z input.svelte-ddsc3z{width:18px;height:18px;margin:0}.altcha-hidden.svelte-ddsc3z.svelte-ddsc3z{display:none}.altcha-spinner.svelte-ddsc3z.svelte-ddsc3z{animation:svelte-ddsc3z-altcha-spinner 0.75s infinite linear;transform-origin:center}@keyframes svelte-ddsc3z-altcha-spinner{100%{transform:rotate(360deg)}}')}function Oe(n){let e,t,i;return{c(){e=$("svg"),t=$("path"),i=$("path"),a(t,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),a(t,"fill","currentColor"),a(t,"opacity",".25"),a(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),a(i,"fill","currentColor"),a(i,"class","altcha-spinner svelte-ddsc3z"),a(e,"width","24"),a(e,"height","24"),a(e,"viewBox","0 0 24 24"),a(e,"xmlns","http://www.w3.org/2000/svg")},m(o,l){X(o,e,l),C(e,t),C(e,i)},d(o){o&&H(e)}}}function dn(n){let e,t=n[11].label+"",i;return{c(){e=S("label"),a(e,"for",i=n[4]+"_checkbox"),a(e,"class","svelte-ddsc3z")},m(o,l){X(o,e,l),e.innerHTML=t},p(o,l){l[0]&2048&&t!==(t=o[11].label+"")&&(e.innerHTML=t),l[0]&16&&i!==(i=o[4]+"_checkbox")&&a(e,"for",i)},d(o){o&&H(e)}}}function hn(n){let e,t=n[11].verifying+"";return{c(){e=S("span")},m(i,o){X(i,e,o),e.innerHTML=t},p(i,o){o[0]&2048&&t!==(t=i[11].verifying+"")&&(e.innerHTML=t)},d(i){i&&H(e)}}}function gn(n){let e,t=n[11].verified+"",i,o;return{c(){e=S("span"),i=Q(),o=S("input"),a(o,"type","hidden"),a(o,"name",n[4]),o.value=n[6]},m(l,s){X(l,e,s),e.innerHTML=t,X(l,i,s),X(l,o,s)},p(l,s){s[0]&2048&&t!==(t=l[11].verified+"")&&(e.innerHTML=t),s[0]&16&&a(o,"name",l[4]),s[0]&64&&(o.value=l[6])},d(l){l&&(H(e),H(i),H(o))}}}function Je(n){let e,t,i,o,l,s,d;return{c(){e=S("div"),t=S("a"),i=$("svg"),o=$("path"),l=$("path"),s=$("path"),a(o,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),a(o,"fill","currentColor"),a(l,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),a(l,"fill","currentColor"),a(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),a(s,"fill","currentColor"),a(i,"width","22"),a(i,"height","22"),a(i,"viewBox","0 0 20 20"),a(i,"fill","none"),a(i,"xmlns","http://www.w3.org/2000/svg"),a(t,"href",tt),a(t,"target","_blank"),a(t,"class","altcha-logo svelte-ddsc3z"),a(t,"aria-label",d=n[11].ariaLinkLabel)},m(h,f){X(h,e,f),C(e,t),C(t,i),C(i,o),C(i,l),C(i,s)},p(h,f){f[0]&2048&&d!==(d=h[11].ariaLinkLabel)&&a(t,"aria-label",d)},d(h){h&&H(e)}}}function $e(n){let e,t,i,o;function l(h,f){return h[7]===g.EXPIRED?bn:mn}let s=l(n),d=s(n);return{c(){e=S("div"),t=$("svg"),i=$("path"),o=Q(),d.c(),a(i,"stroke-linecap","round"),a(i,"stroke-linejoin","round"),a(i,"d","M6 18L18 6M6 6l12 12"),a(t,"width","14"),a(t,"height","14"),a(t,"xmlns","http://www.w3.org/2000/svg"),a(t,"fill","none"),a(t,"viewBox","0 0 24 24"),a(t,"stroke-width","1.5"),a(t,"stroke","currentColor"),a(e,"class","altcha-error svelte-ddsc3z")},m(h,f){X(h,e,f),C(e,t),C(t,i),C(e,o),d.m(e,null)},p(h,f){s===(s=l(h))&&d?d.p(h,f):(d.d(1),d=s(h),d&&(d.c(),d.m(e,null)))},d(h){h&&H(e),d.d()}}}function mn(n){let e,t=n[11].error+"";return{c(){e=S("div"),a(e,"title",n[5])},m(i,o){X(i,e,o),e.innerHTML=t},p(i,o){o[0]&2048&&t!==(t=i[11].error+"")&&(e.innerHTML=t),o[0]&32&&a(e,"title",i[5])},d(i){i&&H(e)}}}function bn(n){let e,t=n[11].expired+"";return{c(){e=S("div"),a(e,"title",n[5])},m(i,o){X(i,e,o),e.innerHTML=t},p(i,o){o[0]&2048&&t!==(t=i[11].expired+"")&&(e.innerHTML=t),o[0]&32&&a(e,"title",i[5])},d(i){i&&H(e)}}}function Qe(n){let e,t,i=n[11].footer+"";return{c(){e=S("div"),t=S("div"),a(t,"class","svelte-ddsc3z"),a(e,"class","altcha-footer svelte-ddsc3z")},m(o,l){X(o,e,l),C(e,t),t.innerHTML=i},p(o,l){l[0]&2048&&i!==(i=o[11].footer+"")&&(t.innerHTML=i)},d(o){o&&H(e)}}}function qe(n){let e;return{c(){e=S("div"),a(e,"class","altcha-anchor-arrow svelte-ddsc3z")},m(t,i){X(t,e,i),n[48](e)},p:Ee,d(t){t&&H(e),n[48](null)}}}function yn(n){let e,t,i,o,l,s,d,h,f,I,b,O,P,W,T,N,q;const ee=n[46].default,G=St(ee,n,n[45],null);let A=n[7]===g.VERIFYING&&Oe();function te(u,y){return u[7]===g.VERIFIED?gn:u[7]===g.VERIFYING?hn:dn}let B=te(n),Y=B(n),x=(n[3]!==!0||n[12])&&Je(n),Z=(n[5]||n[7]===g.EXPIRED)&&$e(n),z=n[11].footer&&(n[2]!==!0||n[12])&&Qe(n),_=n[1]&&qe(n);return{c(){G&&G.c(),e=Q(),t=S("div"),i=S("div"),A&&A.c(),o=Q(),l=S("div"),s=S("input"),f=Q(),I=S("div"),Y.c(),b=Q(),x&&x.c(),O=Q(),Z&&Z.c(),P=Q(),z&&z.c(),W=Q(),_&&_.c(),a(s,"type","checkbox"),a(s,"id",d=n[4]+"_checkbox"),s.required=h=n[0]!=="onsubmit"&&(!n[1]||n[0]!=="off"),a(s,"class","svelte-ddsc3z"),a(l,"class","altcha-checkbox svelte-ddsc3z"),je(l,"altcha-hidden",n[7]===g.VERIFYING),a(I,"class","altcha-label svelte-ddsc3z"),a(i,"class","altcha-main svelte-ddsc3z"),a(t,"class","altcha svelte-ddsc3z"),a(t,"data-state",n[7]),a(t,"data-floating",n[1])},m(u,y){G&&G.m(u,y),X(u,e,y),X(u,t,y),C(t,i),A&&A.m(i,null),C(i,o),C(i,l),C(l,s),s.checked=n[8],C(i,f),C(i,I),Y.m(I,null),C(i,b),x&&x.m(i,null),C(t,O),Z&&Z.m(t,null),C(t,P),z&&z.m(t,null),C(t,W),_&&_.m(t,null),n[49](t),T=!0,N||(q=[ze(s,"change",n[47]),ze(s,"change",n[13]),ze(s,"invalid",n[14])],N=!0)},p(u,y){G&&G.p&&(!T||y[1]&16384)&&At(G,ee,u,u[45],T?Tt(ee,u[45],y,null):Zt(u[45]),null),u[7]===g.VERIFYING?A||(A=Oe(),A.c(),A.m(i,o)):A&&(A.d(1),A=null),(!T||y[0]&16&&d!==(d=u[4]+"_checkbox"))&&a(s,"id",d),(!T||y[0]&3&&h!==(h=u[0]!=="onsubmit"&&(!u[1]||u[0]!=="off")))&&(s.required=h),y[0]&256&&(s.checked=u[8]),(!T||y[0]&128)&&je(l,"altcha-hidden",u[7]===g.VERIFYING),B===(B=te(u))&&Y?Y.p(u,y):(Y.d(1),Y=B(u),Y&&(Y.c(),Y.m(I,null))),u[3]!==!0||u[12]?x?x.p(u,y):(x=Je(u),x.c(),x.m(i,null)):x&&(x.d(1),x=null),u[5]||u[7]===g.EXPIRED?Z?Z.p(u,y):(Z=$e(u),Z.c(),Z.m(t,P)):Z&&(Z.d(1),Z=null),u[11].footer&&(u[2]!==!0||u[12])?z?z.p(u,y):(z=Qe(u),z.c(),z.m(t,W)):z&&(z.d(1),z=null),u[1]?_?_.p(u,y):(_=qe(u),_.c(),_.m(t,null)):_&&(_.d(1),_=null),(!T||y[0]&128)&&a(t,"data-state",u[7]),(!T||y[0]&2)&&a(t,"data-floating",u[1])},i(u){T||(Me(G,u),T=!0)},o(u){Ot(G,u),T=!1},d(u){u&&(H(e),H(t)),G&&G.d(u),A&&A.d(),Y.d(),x&&x.d(),Z&&Z.d(),z&&z.d(),_&&_.d(),n[49](null),N=!1,ge(q)}}}const et="Visit Altcha.org",tt="https://altcha.org/";function nt(n){return JSON.parse(n)}function vn(n,e,t){var Et,Rt;let i,o,l,s,{$$slots:d={},$$scope:h}=e,{auto:f=void 0}=e,{blockspam:I=void 0}=e,{challengeurl:b=void 0}=e,{challengejson:O=void 0}=e,{debug:P=!1}=e,{delay:W=0}=e,{expire:T=void 0}=e,{floating:N=void 0}=e,{floatinganchor:q=void 0}=e,{floatingoffset:ee=void 0}=e,{hidefooter:G=!1}=e,{hidelogo:A=!1}=e,{name:te="altcha"}=e,{maxnumber:B=1e6}=e,{mockerror:Y=!1}=e,{obfuscated:x=void 0}=e,{plugins:Z=void 0}=e,{refetchonexpire:z=!0}=e,{spamfilter:_=!1}=e,{strings:u=void 0}=e,{test:y=!1}=e,{verifyurl:ne=void 0}=e,{workers:de=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:ye=void 0}=e;const ve=Wt(),it=["SHA-256","SHA-384","SHA-512"],ot=(Rt=(Et=document.documentElement.lang)==null?void 0:Et.split("-"))==null?void 0:Rt[0];let oe=!1,E,le=null,he=null,v=null,pe=null,J=null,se=null,re=[],R=g.UNVERIFIED;Pt(()=>{pn(),v&&(v.removeEventListener("submit",ut),v.removeEventListener("reset",dt),v.removeEventListener("focusin",ft),v=null),J&&(clearTimeout(J),J=null),document.removeEventListener("click",ct),document.removeEventListener("scroll",at),window.removeEventListener("resize",gt)}),Dt(()=>{k("mounted","1.0.6"),k("workers",de),En(),k("plugins",re.length?re.map(r=>r.constructor.pluginName).join(", "):"none"),y&&k("using test mode"),T&&Ne(T),f!==void 0&&k("auto",f),N!==void 0&&mt(N),v=E.closest("form"),v&&(v.addEventListener("submit",ut,{capture:!0}),v.addEventListener("reset",dt),f==="onfocus"&&v.addEventListener("focusin",ft)),f==="onload"&&(x?we():ie()),i&&(G||A)&&k("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."),requestAnimationFrame(()=>{ve("load")})});function lt(r,c){return btoa(JSON.stringify({algorithm:r.algorithm,challenge:r.challenge,number:c.number,salt:r.salt,signature:r.signature,test:y?!0:void 0,took:c.took}))}function pn(){for(const r of re)r.destroy()}function st(){b&&z&&R===g.VERIFIED?ie():_e(g.EXPIRED,s.expired)}async function wn(){var r;if(Y)throw k("mocking error"),new Error("Mocked error.");if(o)return k("using provided json data"),o;if(y)return k("generating test challenge",{test:y}),on(typeof y!="boolean"?+y:void 0);{if(!b&&v){const p=v.getAttribute("action");p!=null&&p.includes("/form/")&&t(15,b=p+"/altcha")}if(!b)throw new Error("Attribute challengeurl not set.");k("fetching challenge from",b);const c=await fetch(b,{headers:_?{"x-altcha-spam-filter":"1"}:{}});if(c.status!==200)throw new Error(`Server responded with ${c.status}.`);const m=c.headers.get("Expires"),L=c.headers.get("X-Altcha-Config"),M=await c.json(),j=new URLSearchParams((r=M.salt.split("?"))==null?void 0:r[1]),V=j.get("expires")||j.get("expire");if(V){const p=new Date(+V*1e3),U=isNaN(p.getTime())?0:p.getTime()-Date.now();U>0&&Ne(U)}if(L)try{const p=JSON.parse(L);p&&typeof p=="object"&&(p.verifyurl&&(p.verifyurl=new URL(p.verifyurl,new URL(b)).toString()),vt(p))}catch(p){k("unable to configure from X-Altcha-Config",p)}if(!T&&(m!=null&&m.length)){const p=Date.parse(m);if(p){const U=p-Date.now();U>0&&Ne(U)}}return M}}function _n(r){var m;const c=v==null?void 0:v.querySelector(typeof r=="string"?`input[name="${r}"]`:'input[type="email"]:not([data-no-spamfilter])');return((m=c==null?void 0:c.value)==null?void 0:m.slice(c.value.indexOf("@")))||void 0}function kn(){return _==="ipAddress"?{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:!1,expectedCountries:void 0,expectedLanguages:void 0,fields:!1,ipAddress:void 0,text:void 0,timeZone:void 0}:typeof _=="object"?_:{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,text:void 0,timeZone:void 0}}function xn(r){return[...(v==null?void 0:v.querySelectorAll(r!=null&&r.length?r.map(m=>`input[name="${m}"]`).join(", "):'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((m,L)=>{const M=L.name,j=L.value;return M&&j&&(m[M]=/\n/.test(j)?j.replace(new RegExp("(?c instanceof Error))&&console[r[0]instanceof Error?"error":"log"]("ALTCHA",`[name=${te}]`,...r)}function Rn(){[g.UNVERIFIED,g.ERROR,g.EXPIRED].includes(R)?_&&(v==null?void 0:v.reportValidity())===!1?t(8,oe=!1):x?we():ie():t(8,oe=!0)}function ct(r){const c=r.target;N&&c&&!E.contains(c)&&(R===g.VERIFIED||f==="off"&&R===g.UNVERIFIED)&&t(9,E.style.display="none",E)}function at(){N&&R!==g.UNVERIFIED&&Le()}function Cn(r){for(const c of re)typeof c.onErrorChange=="function"&&c.onErrorChange(pe)}function ft(r){R===g.UNVERIFIED&&ie()}function ut(r){v&&f==="onsubmit"?R===g.UNVERIFIED?(r.preventDefault(),r.stopPropagation(),ie().then(()=>{v==null||v.requestSubmit()})):R!==g.VERIFIED&&(r.preventDefault(),r.stopPropagation(),R===g.VERIFYING&&ht()):v&&N&&f==="off"&&R===g.UNVERIFIED&&(r.preventDefault(),r.stopPropagation(),t(9,E.style.display="block",E),Le())}function dt(){_e()}function ht(){R===g.VERIFYING&&s.waitAlert&&alert(s.waitAlert)}function In(r){for(const c of re)typeof c.onStateChange=="function"&&c.onStateChange(R);N&&R!==g.UNVERIFIED&&requestAnimationFrame(()=>{Le()}),t(8,oe=R===g.VERIFIED)}function gt(){N&&Le()}function Le(r=20){if(E)if(he||(he=(q?document.querySelector(q):v==null?void 0:v.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])'))||v),he){const c=parseInt(ee,10)||12,m=he.getBoundingClientRect(),L=E.getBoundingClientRect(),M=document.documentElement.clientHeight,j=document.documentElement.clientWidth,V=N==="auto"?m.bottom+L.height+c+r>M:N==="top",p=Math.max(r,Math.min(j-r-L.width,m.left+m.width/2-L.width/2));if(V?t(9,E.style.top=`${m.top-(L.height+c)}px`,E):t(9,E.style.top=`${m.bottom+c}px`,E),t(9,E.style.left=`${p}px`,E),E.setAttribute("data-floating",V?"top":"bottom"),le){const U=le.getBoundingClientRect();t(10,le.style.left=m.left-p+m.width/2-U.width/2+"px",le)}}else k("unable to find floating anchor element")}async function Ln(r){if(!ne)throw new Error("Attribute verifyurl not set.");k("requesting server verification from",ne);const c={payload:r};if(_){const{blockedCountries:M,classifier:j,disableRules:V,email:p,expectedLanguages:U,expectedCountries:Ve,fields:ke,ipAddress:xe,text:Zn,timeZone:Ct}=kn();c.blockedCountries=M,c.classifier=j,c.disableRules=V,c.email=p===!1?void 0:_n(p),c.expectedCountries=Ve,c.expectedLanguages=U||(ot?[ot]:void 0),c.fields=ke===!1?void 0:xn(ke),c.ipAddress=xe===!1?void 0:xe||"auto",c.text=Zn,c.timeZone=Ct===!1?void 0:Ct||sn()}const m=await fetch(ne,{body:JSON.stringify(c),headers:{"content-type":"application/json"},method:"POST"});if(m.status!==200)throw new Error(`Server responded with ${m.status}.`);const L=await m.json();if(L!=null&&L.payload&&t(6,se=L.payload),ve("serververification",L),I&&L.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function Ne(r){k("expire",r),J&&(clearTimeout(J),J=null),r<1?st():J=setTimeout(st,r)}function mt(r){k("floating",r),N!==r&&(t(9,E.style.left="",E),t(9,E.style.top="",E)),t(1,N=r===!0||r===""?"auto":r===!1||r==="false"?void 0:N),N?(f||t(0,f="onsubmit"),document.addEventListener("scroll",at),document.addEventListener("click",ct),window.addEventListener("resize",gt)):f==="onsubmit"&&t(0,f=void 0)}function bt(r){if(!r.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(r.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!it.includes(r.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${it.join(", ")}`);if(!r.challenge||r.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!r.salt||r.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function yt(r){let c=null;if("Worker"in window){try{c=await Nn(r,r.maxnumber)}catch(m){k(m)}if((c==null?void 0:c.number)!==void 0||"obfuscated"in r)return{data:r,solution:c}}if("obfuscated"in r){const m=await fn(r.obfuscated,r.key,r.maxnumber);return{data:r,solution:await m.promise}}return{data:r,solution:await ln(r.challenge,r.salt,r.algorithm,r.maxnumber||B).promise}}async function Nn(r,c=typeof y=="number"?y:B,m=Math.ceil(de)){const L=[];m=Math.min(16,Math.max(1,m));for(let V=0;V{const U=p*M;return new Promise(Ve=>{V.addEventListener("message",ke=>{if(ke.data)for(const xe of L)xe!==V&&xe.postMessage({type:"abort"});Ve(ke.data)}),V.postMessage({payload:r,max:U+M,start:U,type:"work"})})}));for(const V of L)V.terminate();return j.find(V=>!!V)||null}async function we(){if(!x){t(7,R=g.ERROR);return}const r=re.find(c=>c.constructor.pluginName==="obfuscation");if(!r||!("clarify"in r)){t(7,R=g.ERROR),k("Plugin `obfuscation` not found. Import `altcha/plugins/obfuscation` to load it.");return}if("clarify"in r&&typeof r.clarify=="function")return r.clarify()}function vt(r){r.obfuscated!==void 0&&t(24,x=r.obfuscated),r.auto!==void 0&&(t(0,f=r.auto),f==="onload"&&(x?we():ie())),r.blockspam!==void 0&&t(16,I=!!r.blockspam),r.floatinganchor!==void 0&&t(20,q=r.floatinganchor),r.delay!==void 0&&t(18,W=r.delay),r.floatingoffset!==void 0&&t(21,ee=r.floatingoffset),r.floating!==void 0&&mt(r.floating),r.expire!==void 0&&(Ne(r.expire),t(19,T=r.expire)),r.challenge&&(bt(r.challenge),o=r.challenge),r.challengeurl!==void 0&&t(15,b=r.challengeurl),r.debug!==void 0&&t(17,P=!!r.debug),r.hidefooter!==void 0&&t(2,G=!!r.hidefooter),r.hidelogo!==void 0&&t(3,A=!!r.hidelogo),r.maxnumber!==void 0&&t(22,B=+r.maxnumber),r.mockerror!==void 0&&t(23,Y=!!r.mockerror),r.name!==void 0&&t(4,te=r.name),r.refetchonexpire!==void 0&&t(25,z=!!r.refetchonexpire),r.spamfilter!==void 0&&t(26,_=typeof r.spamfilter=="object"?r.spamfilter:!!r.spamfilter),r.strings&&t(44,l=r.strings),r.test!==void 0&&t(27,y=typeof r.test=="number"?r.test:!!r.test),r.verifyurl!==void 0&&t(28,ne=r.verifyurl),r.workers!==void 0&&t(29,de=+r.workers),r.workerurl!==void 0&&t(30,ye=r.workerurl)}function pt(){return{auto:f,blockspam:I,challengeurl:b,debug:P,delay:W,expire:T,floating:N,floatinganchor:q,floatingoffset:ee,hidefooter:G,hidelogo:A,name:te,maxnumber:B,mockerror:Y,obfuscated:x,refetchonexpire:z,spamfilter:_,strings:s,test:y,verifyurl:ne,workers:de,workerurl:ye}}function wt(){return he}function zn(r){return re.find(c=>c.constructor.pluginName===r)}function _t(){return R}function _e(r=g.UNVERIFIED,c=null){J&&(clearTimeout(J),J=null),t(8,oe=!1),t(5,pe=c),t(6,se=null),t(7,R=r)}function kt(r){he=r}function xt(r,c=null){t(7,R=r),t(5,pe=c)}async function ie(){return _e(g.VERIFYING),await new Promise(r=>setTimeout(r,W||0)),wn().then(r=>(bt(r),k("challenge",r),yt(r))).then(({data:r,solution:c})=>{if(k("solution",c),"challenge"in r&&c&&!("clearText"in c))if((c==null?void 0:c.number)!==void 0){if(ne)return Ln(lt(r,c));t(6,se=lt(r,c)),k("payload",se)}else throw k("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{t(7,R=g.VERIFIED),k("verified"),Mt().then(()=>{ve("verified",{payload:se})})}).catch(r=>{k(r),t(7,R=g.ERROR),t(5,pe=r.message)})}function Sn(){oe=this.checked,t(8,oe)}function Tn(r){Re[r?"unshift":"push"](()=>{le=r,t(10,le)})}function An(r){Re[r?"unshift":"push"](()=>{E=r,t(9,E)})}return n.$$set=r=>{"auto"in r&&t(0,f=r.auto),"blockspam"in r&&t(16,I=r.blockspam),"challengeurl"in r&&t(15,b=r.challengeurl),"challengejson"in r&&t(31,O=r.challengejson),"debug"in r&&t(17,P=r.debug),"delay"in r&&t(18,W=r.delay),"expire"in r&&t(19,T=r.expire),"floating"in r&&t(1,N=r.floating),"floatinganchor"in r&&t(20,q=r.floatinganchor),"floatingoffset"in r&&t(21,ee=r.floatingoffset),"hidefooter"in r&&t(2,G=r.hidefooter),"hidelogo"in r&&t(3,A=r.hidelogo),"name"in r&&t(4,te=r.name),"maxnumber"in r&&t(22,B=r.maxnumber),"mockerror"in r&&t(23,Y=r.mockerror),"obfuscated"in r&&t(24,x=r.obfuscated),"plugins"in r&&t(32,Z=r.plugins),"refetchonexpire"in r&&t(25,z=r.refetchonexpire),"spamfilter"in r&&t(26,_=r.spamfilter),"strings"in r&&t(33,u=r.strings),"test"in r&&t(27,y=r.test),"verifyurl"in r&&t(28,ne=r.verifyurl),"workers"in r&&t(29,de=r.workers),"workerurl"in r&&t(30,ye=r.workerurl),"$$scope"in r&&t(45,h=r.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&32768&&t(12,i=!!(b!=null&&b.includes(".altcha.org"))&&!!(b!=null&&b.includes("apiKey=ckey_"))),n.$$.dirty[1]&1&&(o=O?nt(O):void 0),n.$$.dirty[1]&4&&t(44,l=u?nt(u):{}),n.$$.dirty[1]&8192&&t(11,s={ariaLinkLabel:et,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by ALTCHA`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...l}),n.$$.dirty[0]&192&&ve("statechange",{payload:se,state:R}),n.$$.dirty[0]&32&&Cn(),n.$$.dirty[0]&128&&In()},[f,N,G,A,te,pe,se,R,oe,E,le,s,i,Rn,ht,b,I,P,W,T,q,ee,B,Y,x,z,_,y,ne,de,ye,O,Z,u,we,vt,pt,wt,zn,_t,_e,kt,xt,ie,l,h,d,Sn,Tn,An]}class rt extends tn{constructor(e){super(),qt(this,e,vn,yn,Nt,{auto:0,blockspam:16,challengeurl:15,challengejson:31,debug:17,delay:18,expire:19,floating:1,floatinganchor:20,floatingoffset:21,hidefooter:2,hidelogo:3,name:4,maxnumber:22,mockerror:23,obfuscated:24,plugins:32,refetchonexpire:25,spamfilter:26,strings:33,test:27,verifyurl:28,workers:29,workerurl:30,clarify:34,configure:35,getConfiguration:36,getFloatingAnchor:37,getPlugin:38,getState:39,reset:40,setFloatingAnchor:41,setState:42,verify:43},un,[-1,-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),w()}get blockspam(){return this.$$.ctx[16]}set blockspam(e){this.$$set({blockspam:e}),w()}get challengeurl(){return this.$$.ctx[15]}set challengeurl(e){this.$$set({challengeurl:e}),w()}get challengejson(){return this.$$.ctx[31]}set challengejson(e){this.$$set({challengejson:e}),w()}get debug(){return this.$$.ctx[17]}set debug(e){this.$$set({debug:e}),w()}get delay(){return this.$$.ctx[18]}set delay(e){this.$$set({delay:e}),w()}get expire(){return this.$$.ctx[19]}set expire(e){this.$$set({expire:e}),w()}get floating(){return this.$$.ctx[1]}set floating(e){this.$$set({floating:e}),w()}get floatinganchor(){return this.$$.ctx[20]}set floatinganchor(e){this.$$set({floatinganchor:e}),w()}get floatingoffset(){return this.$$.ctx[21]}set floatingoffset(e){this.$$set({floatingoffset:e}),w()}get hidefooter(){return this.$$.ctx[2]}set hidefooter(e){this.$$set({hidefooter:e}),w()}get hidelogo(){return this.$$.ctx[3]}set hidelogo(e){this.$$set({hidelogo:e}),w()}get name(){return this.$$.ctx[4]}set name(e){this.$$set({name:e}),w()}get maxnumber(){return this.$$.ctx[22]}set maxnumber(e){this.$$set({maxnumber:e}),w()}get mockerror(){return this.$$.ctx[23]}set mockerror(e){this.$$set({mockerror:e}),w()}get obfuscated(){return this.$$.ctx[24]}set obfuscated(e){this.$$set({obfuscated:e}),w()}get plugins(){return this.$$.ctx[32]}set plugins(e){this.$$set({plugins:e}),w()}get refetchonexpire(){return this.$$.ctx[25]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),w()}get spamfilter(){return this.$$.ctx[26]}set spamfilter(e){this.$$set({spamfilter:e}),w()}get strings(){return this.$$.ctx[33]}set strings(e){this.$$set({strings:e}),w()}get test(){return this.$$.ctx[27]}set test(e){this.$$set({test:e}),w()}get verifyurl(){return this.$$.ctx[28]}set verifyurl(e){this.$$set({verifyurl:e}),w()}get workers(){return this.$$.ctx[29]}set workers(e){this.$$set({workers:e}),w()}get workerurl(){return this.$$.ctx[30]}set workerurl(e){this.$$set({workerurl:e}),w()}get clarify(){return this.$$.ctx[34]}get configure(){return this.$$.ctx[35]}get getConfiguration(){return this.$$.ctx[36]}get getFloatingAnchor(){return this.$$.ctx[37]}get getPlugin(){return this.$$.ctx[38]}get getState(){return this.$$.ctx[39]}get reset(){return this.$$.ctx[40]}get setFloatingAnchor(){return this.$$.ctx[41]}get setState(){return this.$$.ctx[42]}get verify(){return this.$$.ctx[43]}}customElements.define("altcha-widget",en(rt,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},delay:{},expire:{},floating:{},floatinganchor:{},floatingoffset:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},obfuscated:{},plugins:{},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},["default"],["clarify","configure","getConfiguration","getFloatingAnchor","getPlugin","getState","reset","setFloatingAnchor","setState","verify"],!1)),globalThis.altchaCreateWorker=n=>n?new Worker(new URL(n)):new It,globalThis.altchaPlugins=globalThis.altchaPlugins||[],D.Altcha=rt,Object.defineProperty(D,Symbol.toStringTag,{value:"Module"})}); +(function(D,F){typeof exports=="object"&&typeof module<"u"?F(exports):typeof define=="function"&&define.amd?define(["exports"],F):(D=typeof globalThis<"u"?globalThis:D||self,F(D.altcha={}))})(this,function(D){"use strict";var Vn=Object.defineProperty;var Gn=(D,F,ce)=>F in D?Vn(D,F,{enumerable:!0,configurable:!0,writable:!0,value:ce}):D[F]=ce;var B=(D,F,ce)=>Gn(D,typeof F!="symbol"?F+"":F,ce);const F="KGZ1bmN0aW9uKCl7InVzZSBzdHJpY3QiO2NvbnN0IGY9bmV3IFRleHRFbmNvZGVyO2Z1bmN0aW9uIHAoZSl7cmV0dXJuWy4uLm5ldyBVaW50OEFycmF5KGUpXS5tYXAodD0+dC50b1N0cmluZygxNikucGFkU3RhcnQoMiwiMCIpKS5qb2luKCIiKX1hc3luYyBmdW5jdGlvbiB3KGUsdCxyKXtyZXR1cm4gcChhd2FpdCBjcnlwdG8uc3VidGxlLmRpZ2VzdChyLnRvVXBwZXJDYXNlKCksZi5lbmNvZGUoZSt0KSkpfWZ1bmN0aW9uIGIoZSx0LHI9IlNIQS0yNTYiLG49MWU2LHM9MCl7Y29uc3Qgbz1uZXcgQWJvcnRDb250cm9sbGVyLGE9RGF0ZS5ub3coKTtyZXR1cm57cHJvbWlzZTooYXN5bmMoKT0+e2ZvcihsZXQgYz1zO2M8PW47Yys9MSl7aWYoby5zaWduYWwuYWJvcnRlZClyZXR1cm4gbnVsbDtpZihhd2FpdCB3KHQsYyxyKT09PWUpcmV0dXJue251bWJlcjpjLHRvb2s6RGF0ZS5ub3coKS1hfX1yZXR1cm4gbnVsbH0pKCksY29udHJvbGxlcjpvfX1mdW5jdGlvbiBoKGUpe2NvbnN0IHQ9YXRvYihlKSxyPW5ldyBVaW50OEFycmF5KHQubGVuZ3RoKTtmb3IobGV0IG49MDtuPHQubGVuZ3RoO24rKylyW25dPXQuY2hhckNvZGVBdChuKTtyZXR1cm4gcn1mdW5jdGlvbiBnKGUsdD0xMil7Y29uc3Qgcj1uZXcgVWludDhBcnJheSh0KTtmb3IobGV0IG49MDtuPHQ7bisrKXJbbl09ZSUyNTYsZT1NYXRoLmZsb29yKGUvMjU2KTtyZXR1cm4gcn1hc3luYyBmdW5jdGlvbiBtKGUsdD0iIixyPTFlNixuPTApe2NvbnN0IHM9IkFFUy1HQ00iLG89bmV3IEFib3J0Q29udHJvbGxlcixhPURhdGUubm93KCksbD1hc3luYygpPT57Zm9yKGxldCB1PW47dTw9cjt1Kz0xKXtpZihvLnNpZ25hbC5hYm9ydGVkfHwhY3x8IXkpcmV0dXJuIG51bGw7dHJ5e2NvbnN0IGQ9YXdhaXQgY3J5cHRvLnN1YnRsZS5kZWNyeXB0KHtuYW1lOnMsaXY6Zyh1KX0sYyx5KTtpZihkKXJldHVybntjbGVhclRleHQ6bmV3IFRleHREZWNvZGVyKCkuZGVjb2RlKGQpLHRvb2s6RGF0ZS5ub3coKS1hfX1jYXRjaHt9fXJldHVybiBudWxsfTtsZXQgYz1udWxsLHk9bnVsbDt0cnl7eT1oKGUpO2NvbnN0IHU9YXdhaXQgY3J5cHRvLnN1YnRsZS5kaWdlc3QoIlNIQS0yNTYiLGYuZW5jb2RlKHQpKTtjPWF3YWl0IGNyeXB0by5zdWJ0bGUuaW1wb3J0S2V5KCJyYXciLHUscywhMSxbImRlY3J5cHQiXSl9Y2F0Y2h7cmV0dXJue3Byb21pc2U6UHJvbWlzZS5yZWplY3QoKSxjb250cm9sbGVyOm99fXJldHVybntwcm9taXNlOmwoKSxjb250cm9sbGVyOm99fWxldCBpO29ubWVzc2FnZT1hc3luYyBlPT57Y29uc3R7dHlwZTp0LHBheWxvYWQ6cixzdGFydDpuLG1heDpzfT1lLmRhdGE7bGV0IG89bnVsbDtpZih0PT09ImFib3J0IilpPT1udWxsfHxpLmFib3J0KCksaT12b2lkIDA7ZWxzZSBpZih0PT09IndvcmsiKXtpZigib2JmdXNjYXRlZCJpbiByKXtjb25zdHtrZXk6YSxvYmZ1c2NhdGVkOmx9PXJ8fHt9O289YXdhaXQgbShsLGEscyxuKX1lbHNle2NvbnN0e2FsZ29yaXRobTphLGNoYWxsZW5nZTpsLHNhbHQ6Y309cnx8e307bz1iKGwsYyxhLHMsbil9aT1vLmNvbnRyb2xsZXIsby5wcm9taXNlLnRoZW4oYT0+e3NlbGYucG9zdE1lc3NhZ2UoYSYmey4uLmEsd29ya2VyOiEwfSl9KX19fSkoKTsK",ce=n=>Uint8Array.from(atob(n),e=>e.charCodeAt(0)),Ge=typeof self<"u"&&self.Blob&&new Blob([ce(F)],{type:"text/javascript;charset=utf-8"});function It(n){let e;try{if(e=Ge&&(self.URL||self.webkitURL).createObjectURL(Ge),!e)throw"";const t=new Worker(e,{name:n==null?void 0:n.name});return t.addEventListener("error",()=>{(self.URL||self.webkitURL).revokeObjectURL(e)}),t}catch{return new Worker("data:text/javascript;base64,"+F,{name:n==null?void 0:n.name})}finally{e&&(self.URL||self.webkitURL).revokeObjectURL(e)}}function Ee(){}function Lt(n,e){for(const t in e)n[t]=e[t];return n}function He(n){return n()}function Ye(){return Object.create(null)}function ge(n){n.forEach(He)}function Xe(n){return typeof n=="function"}function Nt(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}function zt(n){return Object.keys(n).length===0}function St(n,e,t,i){if(n){const o=Fe(n,e,t,i);return n[0](o)}}function Fe(n,e,t,i){return n[1]&&i?Lt(t.ctx.slice(),n[1](i(e))):t.ctx}function Tt(n,e,t,i){if(n[2]&&i){const o=n[2](i(t));if(e.dirty===void 0)return o;if(typeof o=="object"){const l=[],s=Math.max(e.dirty.length,o.length);for(let d=0;d32){const e=[],t=n.ctx.length/32;for(let i=0;in.removeEventListener(e,t,i)}function a(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Xt(n){return Array.from(n.childNodes)}function je(n,e,t){n.classList.toggle(e,!!t)}function Ft(n,e,{bubbles:t=!1,cancelable:i=!1}={}){return new CustomEvent(n,{detail:e,bubbles:t,cancelable:i})}function jt(n){const e={};return n.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let me;function be(n){me=n}function Se(){if(!me)throw new Error("Function called outside component initialization");return me}function Dt(n){Se().$$.on_mount.push(n)}function Pt(n){Se().$$.on_destroy.push(n)}function Wt(){const n=Se();return(e,t,{cancelable:i=!1}={})=>{const o=n.$$.callbacks[e];if(o){const l=Ft(e,t,{cancelable:i});return o.slice().forEach(s=>{s.call(n,l)}),!l.defaultPrevented}return!0}}const ae=[],Re=[];let fe=[];const De=[],Pe=Promise.resolve();let Te=!1;function We(){Te||(Te=!0,Pe.then(w))}function Ut(){return We(),Pe}function Ae(n){fe.push(n)}const Ze=new Set;let ue=0;function w(){if(ue!==0)return;const n=me;do{try{for(;uen.indexOf(i)===-1?e.push(i):t.push(i)),t.forEach(i=>i()),fe=e}const Ce=new Set;let Bt;function Ue(n,e){n&&n.i&&(Ce.delete(n),n.i(e))}function Ot(n,e,t,i){if(n&&n.o){if(Ce.has(n))return;Ce.add(n),Bt.c.push(()=>{Ce.delete(n)}),n.o(e)}}function Jt(n,e,t){const{fragment:i,after_update:o}=n.$$;i&&i.m(e,t),Ae(()=>{const l=n.$$.on_mount.map(He).filter(Xe);n.$$.on_destroy?n.$$.on_destroy.push(...l):ge(l),n.$$.on_mount=[]}),o.forEach(Ae)}function $t(n,e){const t=n.$$;t.fragment!==null&&(Kt(t.after_update),ge(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Qt(n,e){n.$$.dirty[0]===-1&&(ae.push(n),We(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const U=W.length?W[0]:P;return f.ctx&&o(f.ctx[v],f.ctx[v]=U)&&(!f.skip_bound&&f.bound[v]&&f.bound[v](U),I&&Qt(n,v)),P}):[],f.update(),I=!0,ge(f.before_update),f.fragment=i?i(f.ctx):!1,e.target){if(e.hydrate){const v=Xt(e.target);f.fragment&&f.fragment.l(v),v.forEach(H)}else f.fragment&&f.fragment.c();e.intro&&Ue(n.$$.fragment),Jt(n,e.target,e.anchor),w()}be(h)}let Me;typeof HTMLElement=="function"&&(Me=class extends HTMLElement{constructor(e,t,i){super();B(this,"$$ctor");B(this,"$$s");B(this,"$$c");B(this,"$$cn",!1);B(this,"$$d",{});B(this,"$$r",!1);B(this,"$$p_d",{});B(this,"$$l",{});B(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,i&&this.attachShadow({mode:"open"})}addEventListener(e,t,i){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const o=this.$$c.$on(e,t);this.$$l_u.set(t,o)}super.addEventListener(e,t,i)}removeEventListener(e,t,i){if(super.removeEventListener(e,t,i),this.$$c){const o=this.$$l_u.get(t);o&&(o(),this.$$l_u.delete(t))}if(this.$$l[e]){const o=this.$$l[e].indexOf(t);o>=0&&this.$$l[e].splice(o,1)}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=S("slot"),l!=="default"&&a(s,"name",l)},m:function(f,I){X(f,s,I)},d:function(f){f&&H(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},i=jt(this);for(const l of this.$$s)l in i&&(t[l]=[e(l)]);for(const l of this.attributes){const s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=Ie(s,l.value,this.$$p_d,"toProp"))}for(const l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const o=()=>{this.$$r=!0;for(const l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){const s=Ie(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(o),o();for(const l in this.$$l)for(const s of this.$$l[l]){const d=this.$$c.$on(l,s);this.$$l_u.set(s,d)}this.$$l={}}}attributeChangedCallback(e,t,i){var o;this.$$r||(e=this.$$g_p(e),this.$$d[e]=Ie(e,i,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Ie(n,e,t,i){var l;const o=(l=t[n])==null?void 0:l.type;if(e=o==="Boolean"&&typeof e!="boolean"?e!=null:e,!i||!t[n])return e;if(i==="toAttribute")switch(o){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(o){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function en(n,e,t,i,o,l){let s=class extends Me{constructor(){super(n,t,o),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(d=>(e[d].attribute||d).toLowerCase())}};return Object.keys(e).forEach(d=>{Object.defineProperty(s.prototype,d,{get(){return this.$$c&&d in this.$$c?this.$$c[d]:this.$$d[d]},set(h){var f;h=Ie(d,h,e),this.$$d[d]=h,(f=this.$$c)==null||f.$set({[d]:h})}})}),i.forEach(d=>{Object.defineProperty(s.prototype,d,{get(){var h;return(h=this.$$c)==null?void 0:h[d]}})}),n.element=s,s}class tn{constructor(){B(this,"$$");B(this,"$$set")}$destroy(){$t(this,1),this.$destroy=Ee}$on(e,t){if(!Xe(t))return Ee;const i=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return i.push(t),()=>{const o=i.indexOf(t);o!==-1&&i.splice(o,1)}}$set(e){this.$$set&&!zt(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const nn="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(nn);const Ke=new TextEncoder;function rn(n){return[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function on(n,e="SHA-256",t=1e5){const i=Date.now().toString(16);n||(n=Math.round(Math.random()*t));const o=await Be(i,n,e);return{algorithm:e,challenge:o,salt:i,signature:""}}async function Be(n,e,t){return rn(await crypto.subtle.digest(t.toUpperCase(),Ke.encode(n+e)))}function ln(n,e,t="SHA-256",i=1e6,o=0){const l=new AbortController,s=Date.now();return{promise:(async()=>{for(let h=o;h<=i;h+=1){if(l.signal.aborted)return null;if(await Be(e,h,t)===n)return{number:h,took:Date.now()-s}}return null})(),controller:l}}function sn(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function cn(n){const e=atob(n),t=new Uint8Array(e.length);for(let i=0;i{for(let I=i;I<=t;I+=1){if(l.signal.aborted||!h||!f)return null;try{const v=await crypto.subtle.decrypt({name:o,iv:an(I)},h,f);if(v)return{clearText:new TextDecoder().decode(v),took:Date.now()-s}}catch{}}return null};let h=null,f=null;try{f=cn(n);const I=await crypto.subtle.digest("SHA-256",Ke.encode(e));h=await crypto.subtle.importKey("raw",I,o,!1,["decrypt"])}catch{return{promise:Promise.reject(),controller:l}}return{promise:d(),controller:l}}var g=(n=>(n.ERROR="error",n.VERIFIED="verified",n.VERIFYING="verifying",n.UNVERIFIED="unverified",n.EXPIRED="expired",n))(g||{});function un(n){Vt(n,"svelte-ddsc3z",'.altcha.svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, transparent);border:var(--altcha-border-width, 1px) solid var(--altcha-color-border, #a0a0a0);border-radius:var(--altcha-border-radius, 3px);color:var(--altcha-color-text, currentColor);display:flex;flex-direction:column;max-width:var(--altcha-max-width, 260px);position:relative;text-align:left}.altcha.svelte-ddsc3z.svelte-ddsc3z:focus-within{border-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z{background:var(--altcha-color-base, white);display:none;filter:drop-shadow(3px 3px 6px rgba(0, 0, 0, 0.2));left:-100%;position:fixed;top:-100%;width:var(--altcha-max-width, 260px);z-index:999999}.altcha[data-floating=top].svelte-ddsc3z .altcha-anchor-arrow.svelte-ddsc3z{border-bottom-color:transparent;border-top-color:var(--altcha-color-border, #a0a0a0);bottom:-12px;top:auto}.altcha[data-floating=bottom].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-bottom-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating=top].svelte-ddsc3z.svelte-ddsc3z:focus-within::after{border-top-color:var(--altcha-color-border-focus, currentColor)}.altcha[data-floating].svelte-ddsc3z.svelte-ddsc3z:not([data-state=unverified]){display:block}.altcha-anchor-arrow.svelte-ddsc3z.svelte-ddsc3z{border:6px solid transparent;border-bottom-color:var(--altcha-color-border, #a0a0a0);content:"";height:0;left:12px;position:absolute;top:-12px;width:0}.altcha-main.svelte-ddsc3z.svelte-ddsc3z{align-items:center;display:flex;gap:0.4rem;padding:0.7rem}.altcha-label.svelte-ddsc3z.svelte-ddsc3z{flex-grow:1}.altcha-label.svelte-ddsc3z label.svelte-ddsc3z{cursor:pointer}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z{color:currentColor;opacity:0.3}.altcha-logo.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-error.svelte-ddsc3z.svelte-ddsc3z{color:var(--altcha-color-error-text, #f23939);display:flex;font-size:0.85rem;gap:0.3rem;padding:0 0.7rem 0.7rem}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z{align-items:center;background-color:var(--altcha-color-footer-bg, transparent);display:flex;font-size:0.75rem;opacity:0.4;padding:0.2rem 0.7rem;text-align:right}.altcha-footer.svelte-ddsc3z.svelte-ddsc3z:hover{opacity:1}.altcha-footer.svelte-ddsc3z>.svelte-ddsc3z:first-child{flex-grow:1}.altcha-footer.svelte-ddsc3z a{color:currentColor}.altcha-checkbox.svelte-ddsc3z.svelte-ddsc3z{display:flex;align-items:center;height:24px;width:24px}.altcha-checkbox.svelte-ddsc3z input.svelte-ddsc3z{width:18px;height:18px;margin:0}.altcha-hidden.svelte-ddsc3z.svelte-ddsc3z{display:none}.altcha-spinner.svelte-ddsc3z.svelte-ddsc3z{animation:svelte-ddsc3z-altcha-spinner 0.75s infinite linear;transform-origin:center}@keyframes svelte-ddsc3z-altcha-spinner{100%{transform:rotate(360deg)}}')}function Oe(n){let e,t,i;return{c(){e=$("svg"),t=$("path"),i=$("path"),a(t,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),a(t,"fill","currentColor"),a(t,"opacity",".25"),a(i,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),a(i,"fill","currentColor"),a(i,"class","altcha-spinner svelte-ddsc3z"),a(e,"width","24"),a(e,"height","24"),a(e,"viewBox","0 0 24 24"),a(e,"xmlns","http://www.w3.org/2000/svg")},m(o,l){X(o,e,l),C(e,t),C(e,i)},d(o){o&&H(e)}}}function dn(n){let e,t=n[11].label+"",i;return{c(){e=S("label"),a(e,"for",i=n[4]+"_checkbox"),a(e,"class","svelte-ddsc3z")},m(o,l){X(o,e,l),e.innerHTML=t},p(o,l){l[0]&2048&&t!==(t=o[11].label+"")&&(e.innerHTML=t),l[0]&16&&i!==(i=o[4]+"_checkbox")&&a(e,"for",i)},d(o){o&&H(e)}}}function hn(n){let e,t=n[11].verifying+"";return{c(){e=S("span")},m(i,o){X(i,e,o),e.innerHTML=t},p(i,o){o[0]&2048&&t!==(t=i[11].verifying+"")&&(e.innerHTML=t)},d(i){i&&H(e)}}}function gn(n){let e,t=n[11].verified+"",i,o;return{c(){e=S("span"),i=Q(),o=S("input"),a(o,"type","hidden"),a(o,"name",n[4]),o.value=n[6]},m(l,s){X(l,e,s),e.innerHTML=t,X(l,i,s),X(l,o,s)},p(l,s){s[0]&2048&&t!==(t=l[11].verified+"")&&(e.innerHTML=t),s[0]&16&&a(o,"name",l[4]),s[0]&64&&(o.value=l[6])},d(l){l&&(H(e),H(i),H(o))}}}function Je(n){let e,t,i,o,l,s,d;return{c(){e=S("div"),t=S("a"),i=$("svg"),o=$("path"),l=$("path"),s=$("path"),a(o,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),a(o,"fill","currentColor"),a(l,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),a(l,"fill","currentColor"),a(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),a(s,"fill","currentColor"),a(i,"width","22"),a(i,"height","22"),a(i,"viewBox","0 0 20 20"),a(i,"fill","none"),a(i,"xmlns","http://www.w3.org/2000/svg"),a(t,"href",tt),a(t,"target","_blank"),a(t,"class","altcha-logo svelte-ddsc3z"),a(t,"aria-label",d=n[11].ariaLinkLabel)},m(h,f){X(h,e,f),C(e,t),C(t,i),C(i,o),C(i,l),C(i,s)},p(h,f){f[0]&2048&&d!==(d=h[11].ariaLinkLabel)&&a(t,"aria-label",d)},d(h){h&&H(e)}}}function $e(n){let e,t,i,o;function l(h,f){return h[7]===g.EXPIRED?bn:mn}let s=l(n),d=s(n);return{c(){e=S("div"),t=$("svg"),i=$("path"),o=Q(),d.c(),a(i,"stroke-linecap","round"),a(i,"stroke-linejoin","round"),a(i,"d","M6 18L18 6M6 6l12 12"),a(t,"width","14"),a(t,"height","14"),a(t,"xmlns","http://www.w3.org/2000/svg"),a(t,"fill","none"),a(t,"viewBox","0 0 24 24"),a(t,"stroke-width","1.5"),a(t,"stroke","currentColor"),a(e,"class","altcha-error svelte-ddsc3z")},m(h,f){X(h,e,f),C(e,t),C(t,i),C(e,o),d.m(e,null)},p(h,f){s===(s=l(h))&&d?d.p(h,f):(d.d(1),d=s(h),d&&(d.c(),d.m(e,null)))},d(h){h&&H(e),d.d()}}}function mn(n){let e,t=n[11].error+"";return{c(){e=S("div"),a(e,"title",n[5])},m(i,o){X(i,e,o),e.innerHTML=t},p(i,o){o[0]&2048&&t!==(t=i[11].error+"")&&(e.innerHTML=t),o[0]&32&&a(e,"title",i[5])},d(i){i&&H(e)}}}function bn(n){let e,t=n[11].expired+"";return{c(){e=S("div"),a(e,"title",n[5])},m(i,o){X(i,e,o),e.innerHTML=t},p(i,o){o[0]&2048&&t!==(t=i[11].expired+"")&&(e.innerHTML=t),o[0]&32&&a(e,"title",i[5])},d(i){i&&H(e)}}}function Qe(n){let e,t,i=n[11].footer+"";return{c(){e=S("div"),t=S("div"),a(t,"class","svelte-ddsc3z"),a(e,"class","altcha-footer svelte-ddsc3z")},m(o,l){X(o,e,l),C(e,t),t.innerHTML=i},p(o,l){l[0]&2048&&i!==(i=o[11].footer+"")&&(t.innerHTML=i)},d(o){o&&H(e)}}}function qe(n){let e;return{c(){e=S("div"),a(e,"class","altcha-anchor-arrow svelte-ddsc3z")},m(t,i){X(t,e,i),n[48](e)},p:Ee,d(t){t&&H(e),n[48](null)}}}function yn(n){let e,t,i,o,l,s,d,h,f,I,v,P,W,U,T,N,q;const ee=n[46].default,G=St(ee,n,n[45],null);let A=n[7]===g.VERIFYING&&Oe();function te(u,b){return u[7]===g.VERIFIED?gn:u[7]===g.VERIFYING?hn:dn}let O=te(n),Y=O(n),x=(n[3]!==!0||n[12])&&Je(n),Z=(n[5]||n[7]===g.EXPIRED)&&$e(n),z=n[11].footer&&(n[2]!==!0||n[12])&&Qe(n),_=n[1]&&qe(n);return{c(){G&&G.c(),e=Q(),t=S("div"),i=S("div"),A&&A.c(),o=Q(),l=S("div"),s=S("input"),f=Q(),I=S("div"),Y.c(),v=Q(),x&&x.c(),P=Q(),Z&&Z.c(),W=Q(),z&&z.c(),U=Q(),_&&_.c(),a(s,"type","checkbox"),a(s,"id",d=n[4]+"_checkbox"),s.required=h=n[0]!=="onsubmit"&&(!n[1]||n[0]!=="off"),a(s,"class","svelte-ddsc3z"),a(l,"class","altcha-checkbox svelte-ddsc3z"),je(l,"altcha-hidden",n[7]===g.VERIFYING),a(I,"class","altcha-label svelte-ddsc3z"),a(i,"class","altcha-main svelte-ddsc3z"),a(t,"class","altcha svelte-ddsc3z"),a(t,"data-state",n[7]),a(t,"data-floating",n[1])},m(u,b){G&&G.m(u,b),X(u,e,b),X(u,t,b),C(t,i),A&&A.m(i,null),C(i,o),C(i,l),C(l,s),s.checked=n[8],C(i,f),C(i,I),Y.m(I,null),C(i,v),x&&x.m(i,null),C(t,P),Z&&Z.m(t,null),C(t,W),z&&z.m(t,null),C(t,U),_&&_.m(t,null),n[49](t),T=!0,N||(q=[ze(s,"change",n[47]),ze(s,"change",n[13]),ze(s,"invalid",n[14])],N=!0)},p(u,b){G&&G.p&&(!T||b[1]&16384)&&At(G,ee,u,u[45],T?Tt(ee,u[45],b,null):Zt(u[45]),null),u[7]===g.VERIFYING?A||(A=Oe(),A.c(),A.m(i,o)):A&&(A.d(1),A=null),(!T||b[0]&16&&d!==(d=u[4]+"_checkbox"))&&a(s,"id",d),(!T||b[0]&3&&h!==(h=u[0]!=="onsubmit"&&(!u[1]||u[0]!=="off")))&&(s.required=h),b[0]&256&&(s.checked=u[8]),(!T||b[0]&128)&&je(l,"altcha-hidden",u[7]===g.VERIFYING),O===(O=te(u))&&Y?Y.p(u,b):(Y.d(1),Y=O(u),Y&&(Y.c(),Y.m(I,null))),u[3]!==!0||u[12]?x?x.p(u,b):(x=Je(u),x.c(),x.m(i,null)):x&&(x.d(1),x=null),u[5]||u[7]===g.EXPIRED?Z?Z.p(u,b):(Z=$e(u),Z.c(),Z.m(t,W)):Z&&(Z.d(1),Z=null),u[11].footer&&(u[2]!==!0||u[12])?z?z.p(u,b):(z=Qe(u),z.c(),z.m(t,U)):z&&(z.d(1),z=null),u[1]?_?_.p(u,b):(_=qe(u),_.c(),_.m(t,null)):_&&(_.d(1),_=null),(!T||b[0]&128)&&a(t,"data-state",u[7]),(!T||b[0]&2)&&a(t,"data-floating",u[1])},i(u){T||(Ue(G,u),T=!0)},o(u){Ot(G,u),T=!1},d(u){u&&(H(e),H(t)),G&&G.d(u),A&&A.d(),Y.d(),x&&x.d(),Z&&Z.d(),z&&z.d(),_&&_.d(),n[49](null),N=!1,ge(q)}}}const et="Visit Altcha.org",tt="https://altcha.org/";function nt(n){return JSON.parse(n)}function vn(n,e,t){var Et,Rt;let i,o,l,s,{$$slots:d={},$$scope:h}=e,{auto:f=void 0}=e,{blockspam:I=void 0}=e,{challengeurl:v=void 0}=e,{challengejson:P=void 0}=e,{debug:W=!1}=e,{delay:U=0}=e,{expire:T=void 0}=e,{floating:N=void 0}=e,{floatinganchor:q=void 0}=e,{floatingoffset:ee=void 0}=e,{hidefooter:G=!1}=e,{hidelogo:A=!1}=e,{name:te="altcha"}=e,{maxnumber:O=1e6}=e,{mockerror:Y=!1}=e,{obfuscated:x=void 0}=e,{plugins:Z=void 0}=e,{refetchonexpire:z=!0}=e,{spamfilter:_=!1}=e,{strings:u=void 0}=e,{test:b=!1}=e,{verifyurl:ne=void 0}=e,{workers:de=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:ye=void 0}=e;const ve=Wt(),it=["SHA-256","SHA-384","SHA-512"],ot=(Rt=(Et=document.documentElement.lang)==null?void 0:Et.split("-"))==null?void 0:Rt[0];let oe=!1,E,le=null,he=null,y=null,pe=null,J=null,se=null,re=[],R=g.UNVERIFIED;Pt(()=>{pn(),y&&(y.removeEventListener("submit",ut),y.removeEventListener("reset",dt),y.removeEventListener("focusin",ft),y=null),J&&(clearTimeout(J),J=null),document.removeEventListener("click",ct),document.removeEventListener("scroll",at),window.removeEventListener("resize",gt)}),Dt(()=>{k("mounted","1.0.6"),k("workers",de),En(),k("plugins",re.length?re.map(r=>r.constructor.pluginName).join(", "):"none"),b&&k("using test mode"),T&&Ne(T),f!==void 0&&k("auto",f),N!==void 0&&mt(N),y=E.closest("form"),y&&(y.addEventListener("submit",ut,{capture:!0}),y.addEventListener("reset",dt),f==="onfocus"&&y.addEventListener("focusin",ft)),f==="onload"&&(x?we():ie()),i&&(G||A)&&k("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."),requestAnimationFrame(()=>{ve("load")})});function lt(r,c){return btoa(JSON.stringify({algorithm:r.algorithm,challenge:r.challenge,number:c.number,salt:r.salt,signature:r.signature,test:b?!0:void 0,took:c.took}))}function pn(){for(const r of re)r.destroy()}function st(){v&&z&&R===g.VERIFIED?ie():_e(g.EXPIRED,s.expired)}async function wn(){var r;if(Y)throw k("mocking error"),new Error("Mocked error.");if(o)return k("using provided json data"),o;if(b)return k("generating test challenge",{test:b}),on(typeof b!="boolean"?+b:void 0);{if(!v&&y){const p=y.getAttribute("action");p!=null&&p.includes("/form/")&&t(15,v=p+"/altcha")}if(!v)throw new Error("Attribute challengeurl not set.");k("fetching challenge from",v);const c=await fetch(v,{headers:_?{"x-altcha-spam-filter":"1"}:{}});if(c.status!==200)throw new Error(`Server responded with ${c.status}.`);const m=c.headers.get("Expires"),L=c.headers.get("X-Altcha-Config"),M=await c.json(),j=new URLSearchParams((r=M.salt.split("?"))==null?void 0:r[1]),V=j.get("expires")||j.get("expire");if(V){const p=new Date(+V*1e3),K=isNaN(p.getTime())?0:p.getTime()-Date.now();K>0&&Ne(K)}if(L)try{const p=JSON.parse(L);p&&typeof p=="object"&&(p.verifyurl&&(p.verifyurl=new URL(p.verifyurl,new URL(v)).toString()),vt(p))}catch(p){k("unable to configure from X-Altcha-Config",p)}if(!T&&(m!=null&&m.length)){const p=Date.parse(m);if(p){const K=p-Date.now();K>0&&Ne(K)}}return M}}function _n(r){var m;const c=y==null?void 0:y.querySelector(typeof r=="string"?`input[name="${r}"]`:'input[type="email"]:not([data-no-spamfilter])');return((m=c==null?void 0:c.value)==null?void 0:m.slice(c.value.indexOf("@")))||void 0}function kn(){return _==="ipAddress"?{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:!1,expectedCountries:void 0,expectedLanguages:void 0,fields:!1,ipAddress:void 0,text:void 0,timeZone:void 0}:typeof _=="object"?_:{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,text:void 0,timeZone:void 0}}function xn(r){return[...(y==null?void 0:y.querySelectorAll(r!=null&&r.length?r.map(m=>`input[name="${m}"]`).join(", "):'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((m,L)=>{const M=L.name,j=L.value;return M&&j&&(m[M]=/\n/.test(j)?j.replace(new RegExp("(?c instanceof Error))&&console[r[0]instanceof Error?"error":"log"]("ALTCHA",`[name=${te}]`,...r)}function Rn(){[g.UNVERIFIED,g.ERROR,g.EXPIRED].includes(R)?_&&(y==null?void 0:y.reportValidity())===!1?t(8,oe=!1):x?we():ie():t(8,oe=!0)}function ct(r){const c=r.target;N&&c&&!E.contains(c)&&(R===g.VERIFIED||f==="off"&&R===g.UNVERIFIED)&&t(9,E.style.display="none",E)}function at(){N&&R!==g.UNVERIFIED&&Le()}function Cn(r){for(const c of re)typeof c.onErrorChange=="function"&&c.onErrorChange(pe)}function ft(r){R===g.UNVERIFIED&&ie()}function ut(r){y&&f==="onsubmit"?R===g.UNVERIFIED?(r.preventDefault(),r.stopPropagation(),ie().then(()=>{y==null||y.requestSubmit()})):R!==g.VERIFIED&&(r.preventDefault(),r.stopPropagation(),R===g.VERIFYING&&ht()):y&&N&&f==="off"&&R===g.UNVERIFIED&&(r.preventDefault(),r.stopPropagation(),t(9,E.style.display="block",E),Le())}function dt(){_e()}function ht(){R===g.VERIFYING&&s.waitAlert&&alert(s.waitAlert)}function In(r){for(const c of re)typeof c.onStateChange=="function"&&c.onStateChange(R);N&&R!==g.UNVERIFIED&&requestAnimationFrame(()=>{Le()}),t(8,oe=R===g.VERIFIED)}function gt(){N&&Le()}function Le(r=20){if(E)if(he||(he=(q?document.querySelector(q):y==null?void 0:y.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])'))||y),he){const c=parseInt(ee,10)||12,m=he.getBoundingClientRect(),L=E.getBoundingClientRect(),M=document.documentElement.clientHeight,j=document.documentElement.clientWidth,V=N==="auto"?m.bottom+L.height+c+r>M:N==="top",p=Math.max(r,Math.min(j-r-L.width,m.left+m.width/2-L.width/2));if(V?t(9,E.style.top=`${m.top-(L.height+c)}px`,E):t(9,E.style.top=`${m.bottom+c}px`,E),t(9,E.style.left=`${p}px`,E),E.setAttribute("data-floating",V?"top":"bottom"),le){const K=le.getBoundingClientRect();t(10,le.style.left=m.left-p+m.width/2-K.width/2+"px",le)}}else k("unable to find floating anchor element")}async function Ln(r){if(!ne)throw new Error("Attribute verifyurl not set.");k("requesting server verification from",ne);const c={payload:r};if(_){const{blockedCountries:M,classifier:j,disableRules:V,email:p,expectedLanguages:K,expectedCountries:Ve,fields:ke,ipAddress:xe,text:Zn,timeZone:Ct}=kn();c.blockedCountries=M,c.classifier=j,c.disableRules=V,c.email=p===!1?void 0:_n(p),c.expectedCountries=Ve,c.expectedLanguages=K||(ot?[ot]:void 0),c.fields=ke===!1?void 0:xn(ke),c.ipAddress=xe===!1?void 0:xe||"auto",c.text=Zn,c.timeZone=Ct===!1?void 0:Ct||sn()}const m=await fetch(ne,{body:JSON.stringify(c),headers:{"content-type":"application/json"},method:"POST"});if(m.status!==200)throw new Error(`Server responded with ${m.status}.`);const L=await m.json();if(L!=null&&L.payload&&t(6,se=L.payload),ve("serververification",L),I&&L.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function Ne(r){k("expire",r),J&&(clearTimeout(J),J=null),r<1?st():J=setTimeout(st,r)}function mt(r){k("floating",r),N!==r&&(t(9,E.style.left="",E),t(9,E.style.top="",E)),t(1,N=r===!0||r===""?"auto":r===!1||r==="false"?void 0:N),N?(f||t(0,f="onsubmit"),document.addEventListener("scroll",at),document.addEventListener("click",ct),window.addEventListener("resize",gt)):f==="onsubmit"&&t(0,f=void 0)}function bt(r){if(!r.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(r.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!it.includes(r.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${it.join(", ")}`);if(!r.challenge||r.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!r.salt||r.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function yt(r){let c=null;if("Worker"in window){try{c=await Nn(r,r.maxnumber)}catch(m){k(m)}if((c==null?void 0:c.number)!==void 0||"obfuscated"in r)return{data:r,solution:c}}if("obfuscated"in r){const m=await fn(r.obfuscated,r.key,r.maxnumber);return{data:r,solution:await m.promise}}return{data:r,solution:await ln(r.challenge,r.salt,r.algorithm,r.maxnumber||O).promise}}async function Nn(r,c=typeof b=="number"?b:O,m=Math.ceil(de)){const L=[];m=Math.min(16,Math.max(1,m));for(let V=0;V{const K=p*M;return new Promise(Ve=>{V.addEventListener("message",ke=>{if(ke.data)for(const xe of L)xe!==V&&xe.postMessage({type:"abort"});Ve(ke.data)}),V.postMessage({payload:r,max:K+M,start:K,type:"work"})})}));for(const V of L)V.terminate();return j.find(V=>!!V)||null}async function we(){if(!x){t(7,R=g.ERROR);return}const r=re.find(c=>c.constructor.pluginName==="obfuscation");if(!r||!("clarify"in r)){t(7,R=g.ERROR),k("Plugin `obfuscation` not found. Import `altcha/plugins/obfuscation` to load it.");return}if("clarify"in r&&typeof r.clarify=="function")return r.clarify()}function vt(r){r.obfuscated!==void 0&&t(24,x=r.obfuscated),r.auto!==void 0&&(t(0,f=r.auto),f==="onload"&&(x?we():ie())),r.blockspam!==void 0&&t(16,I=!!r.blockspam),r.floatinganchor!==void 0&&t(20,q=r.floatinganchor),r.delay!==void 0&&t(18,U=r.delay),r.floatingoffset!==void 0&&t(21,ee=r.floatingoffset),r.floating!==void 0&&mt(r.floating),r.expire!==void 0&&(Ne(r.expire),t(19,T=r.expire)),r.challenge&&(bt(r.challenge),o=r.challenge),r.challengeurl!==void 0&&t(15,v=r.challengeurl),r.debug!==void 0&&t(17,W=!!r.debug),r.hidefooter!==void 0&&t(2,G=!!r.hidefooter),r.hidelogo!==void 0&&t(3,A=!!r.hidelogo),r.maxnumber!==void 0&&t(22,O=+r.maxnumber),r.mockerror!==void 0&&t(23,Y=!!r.mockerror),r.name!==void 0&&t(4,te=r.name),r.refetchonexpire!==void 0&&t(25,z=!!r.refetchonexpire),r.spamfilter!==void 0&&t(26,_=typeof r.spamfilter=="object"?r.spamfilter:!!r.spamfilter),r.strings&&t(44,l=r.strings),r.test!==void 0&&t(27,b=typeof r.test=="number"?r.test:!!r.test),r.verifyurl!==void 0&&t(28,ne=r.verifyurl),r.workers!==void 0&&t(29,de=+r.workers),r.workerurl!==void 0&&t(30,ye=r.workerurl)}function pt(){return{auto:f,blockspam:I,challengeurl:v,debug:W,delay:U,expire:T,floating:N,floatinganchor:q,floatingoffset:ee,hidefooter:G,hidelogo:A,name:te,maxnumber:O,mockerror:Y,obfuscated:x,refetchonexpire:z,spamfilter:_,strings:s,test:b,verifyurl:ne,workers:de,workerurl:ye}}function wt(){return he}function zn(r){return re.find(c=>c.constructor.pluginName===r)}function _t(){return R}function _e(r=g.UNVERIFIED,c=null){J&&(clearTimeout(J),J=null),t(8,oe=!1),t(5,pe=c),t(6,se=null),t(7,R=r)}function kt(r){he=r}function xt(r,c=null){t(7,R=r),t(5,pe=c)}async function ie(){return _e(g.VERIFYING),await new Promise(r=>setTimeout(r,U||0)),wn().then(r=>(bt(r),k("challenge",r),yt(r))).then(({data:r,solution:c})=>{if(k("solution",c),"challenge"in r&&c&&!("clearText"in c))if((c==null?void 0:c.number)!==void 0){if(ne)return Ln(lt(r,c));t(6,se=lt(r,c)),k("payload",se)}else throw k("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{t(7,R=g.VERIFIED),k("verified"),Ut().then(()=>{ve("verified",{payload:se})})}).catch(r=>{k(r),t(7,R=g.ERROR),t(5,pe=r.message)})}function Sn(){oe=this.checked,t(8,oe)}function Tn(r){Re[r?"unshift":"push"](()=>{le=r,t(10,le)})}function An(r){Re[r?"unshift":"push"](()=>{E=r,t(9,E)})}return n.$$set=r=>{"auto"in r&&t(0,f=r.auto),"blockspam"in r&&t(16,I=r.blockspam),"challengeurl"in r&&t(15,v=r.challengeurl),"challengejson"in r&&t(31,P=r.challengejson),"debug"in r&&t(17,W=r.debug),"delay"in r&&t(18,U=r.delay),"expire"in r&&t(19,T=r.expire),"floating"in r&&t(1,N=r.floating),"floatinganchor"in r&&t(20,q=r.floatinganchor),"floatingoffset"in r&&t(21,ee=r.floatingoffset),"hidefooter"in r&&t(2,G=r.hidefooter),"hidelogo"in r&&t(3,A=r.hidelogo),"name"in r&&t(4,te=r.name),"maxnumber"in r&&t(22,O=r.maxnumber),"mockerror"in r&&t(23,Y=r.mockerror),"obfuscated"in r&&t(24,x=r.obfuscated),"plugins"in r&&t(32,Z=r.plugins),"refetchonexpire"in r&&t(25,z=r.refetchonexpire),"spamfilter"in r&&t(26,_=r.spamfilter),"strings"in r&&t(33,u=r.strings),"test"in r&&t(27,b=r.test),"verifyurl"in r&&t(28,ne=r.verifyurl),"workers"in r&&t(29,de=r.workers),"workerurl"in r&&t(30,ye=r.workerurl),"$$scope"in r&&t(45,h=r.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&32768|n.$$.dirty[1]&1&&t(12,i=P&&new URL(P,location.origin).host.endsWith(".altcha.org")&&!!(v!=null&&v.includes("apiKey=ckey_"))),n.$$.dirty[1]&1&&(o=P?nt(P):void 0),n.$$.dirty[1]&4&&t(44,l=u?nt(u):{}),n.$$.dirty[1]&8192&&t(11,s={ariaLinkLabel:et,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by ALTCHA`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...l}),n.$$.dirty[0]&192&&ve("statechange",{payload:se,state:R}),n.$$.dirty[0]&32&&Cn(),n.$$.dirty[0]&128&&In()},[f,N,G,A,te,pe,se,R,oe,E,le,s,i,Rn,ht,v,I,W,U,T,q,ee,O,Y,x,z,_,b,ne,de,ye,P,Z,u,we,vt,pt,wt,zn,_t,_e,kt,xt,ie,l,h,d,Sn,Tn,An]}class rt extends tn{constructor(e){super(),qt(this,e,vn,yn,Nt,{auto:0,blockspam:16,challengeurl:15,challengejson:31,debug:17,delay:18,expire:19,floating:1,floatinganchor:20,floatingoffset:21,hidefooter:2,hidelogo:3,name:4,maxnumber:22,mockerror:23,obfuscated:24,plugins:32,refetchonexpire:25,spamfilter:26,strings:33,test:27,verifyurl:28,workers:29,workerurl:30,clarify:34,configure:35,getConfiguration:36,getFloatingAnchor:37,getPlugin:38,getState:39,reset:40,setFloatingAnchor:41,setState:42,verify:43},un,[-1,-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),w()}get blockspam(){return this.$$.ctx[16]}set blockspam(e){this.$$set({blockspam:e}),w()}get challengeurl(){return this.$$.ctx[15]}set challengeurl(e){this.$$set({challengeurl:e}),w()}get challengejson(){return this.$$.ctx[31]}set challengejson(e){this.$$set({challengejson:e}),w()}get debug(){return this.$$.ctx[17]}set debug(e){this.$$set({debug:e}),w()}get delay(){return this.$$.ctx[18]}set delay(e){this.$$set({delay:e}),w()}get expire(){return this.$$.ctx[19]}set expire(e){this.$$set({expire:e}),w()}get floating(){return this.$$.ctx[1]}set floating(e){this.$$set({floating:e}),w()}get floatinganchor(){return this.$$.ctx[20]}set floatinganchor(e){this.$$set({floatinganchor:e}),w()}get floatingoffset(){return this.$$.ctx[21]}set floatingoffset(e){this.$$set({floatingoffset:e}),w()}get hidefooter(){return this.$$.ctx[2]}set hidefooter(e){this.$$set({hidefooter:e}),w()}get hidelogo(){return this.$$.ctx[3]}set hidelogo(e){this.$$set({hidelogo:e}),w()}get name(){return this.$$.ctx[4]}set name(e){this.$$set({name:e}),w()}get maxnumber(){return this.$$.ctx[22]}set maxnumber(e){this.$$set({maxnumber:e}),w()}get mockerror(){return this.$$.ctx[23]}set mockerror(e){this.$$set({mockerror:e}),w()}get obfuscated(){return this.$$.ctx[24]}set obfuscated(e){this.$$set({obfuscated:e}),w()}get plugins(){return this.$$.ctx[32]}set plugins(e){this.$$set({plugins:e}),w()}get refetchonexpire(){return this.$$.ctx[25]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),w()}get spamfilter(){return this.$$.ctx[26]}set spamfilter(e){this.$$set({spamfilter:e}),w()}get strings(){return this.$$.ctx[33]}set strings(e){this.$$set({strings:e}),w()}get test(){return this.$$.ctx[27]}set test(e){this.$$set({test:e}),w()}get verifyurl(){return this.$$.ctx[28]}set verifyurl(e){this.$$set({verifyurl:e}),w()}get workers(){return this.$$.ctx[29]}set workers(e){this.$$set({workers:e}),w()}get workerurl(){return this.$$.ctx[30]}set workerurl(e){this.$$set({workerurl:e}),w()}get clarify(){return this.$$.ctx[34]}get configure(){return this.$$.ctx[35]}get getConfiguration(){return this.$$.ctx[36]}get getFloatingAnchor(){return this.$$.ctx[37]}get getPlugin(){return this.$$.ctx[38]}get getState(){return this.$$.ctx[39]}get reset(){return this.$$.ctx[40]}get setFloatingAnchor(){return this.$$.ctx[41]}get setState(){return this.$$.ctx[42]}get verify(){return this.$$.ctx[43]}}customElements.define("altcha-widget",en(rt,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},delay:{},expire:{},floating:{},floatinganchor:{},floatingoffset:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},obfuscated:{},plugins:{},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},["default"],["clarify","configure","getConfiguration","getFloatingAnchor","getPlugin","getState","reset","setFloatingAnchor","setState","verify"],!1)),globalThis.altchaCreateWorker=n=>n?new Worker(new URL(n)):new It,globalThis.altchaPlugins=globalThis.altchaPlugins||[],D.Altcha=rt,Object.defineProperty(D,Symbol.toStringTag,{value:"Module"})}); diff --git a/dist_external/altcha.js b/dist_external/altcha.js index 2a20f65..21d1dc2 100644 --- a/dist_external/altcha.js +++ b/dist_external/altcha.js @@ -1,6 +1,6 @@ var jt = Object.defineProperty; var $t = (n, e, t) => e in n ? jt(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t; -var Z = (n, e, t) => $t(n, typeof e != "symbol" ? e + "" : e, t); +var G = (n, e, t) => $t(n, typeof e != "symbol" ? e + "" : e, t); function Ce() { } function Ht(n, e) { @@ -247,13 +247,13 @@ function cn(n, e, t, i, o, l, s = null, h = [-1]) { }; s && s(u.root); let A = !1; - if (u.ctx = t ? t(n, e.props || {}, (b, Y, ...O) => { - const U = O.length ? O[0] : Y; - return u.ctx && o(u.ctx[b], u.ctx[b] = U) && (!u.skip_bound && u.bound[b] && u.bound[b](U), A && fn(n, b)), Y; + if (u.ctx = t ? t(n, e.props || {}, (_, O, ...U) => { + const B = U.length ? U[0] : O; + return u.ctx && o(u.ctx[_], u.ctx[_] = B) && (!u.skip_bound && u.bound[_] && u.bound[_](B), A && fn(n, _)), O; }) : [], u.update(), A = !0, Ee(u.before_update), u.fragment = i ? i(u.ctx) : !1, e.target) { if (e.hydrate) { - const b = Wt(e.target); - u.fragment && u.fragment.l(b), b.forEach(j); + const _ = Wt(e.target); + u.fragment && u.fragment.l(_), _.forEach(j); } else u.fragment && u.fragment.c(); e.intro && yt(n.$$.fragment), ln(n, e.target, e.anchor), E(); @@ -265,23 +265,23 @@ typeof HTMLElement == "function" && (_t = class extends HTMLElement { constructor(e, t, i) { super(); /** The Svelte component constructor */ - Z(this, "$$ctor"); + G(this, "$$ctor"); /** Slots */ - Z(this, "$$s"); + G(this, "$$s"); /** The Svelte component instance */ - Z(this, "$$c"); + G(this, "$$c"); /** Whether or not the custom element is connected */ - Z(this, "$$cn", !1); + G(this, "$$cn", !1); /** Component props data */ - Z(this, "$$d", {}); + G(this, "$$d", {}); /** `true` if currently in the process of reflecting component props back to attributes */ - Z(this, "$$r", !1); + G(this, "$$r", !1); /** @type {Record} Props definition (name, reflected, type etc) */ - Z(this, "$$p_d", {}); + G(this, "$$p_d", {}); /** @type {Record} Event listeners */ - Z(this, "$$l", {}); + G(this, "$$l", {}); /** @type {Map} Event listener unsubscribe functions */ - Z(this, "$$l_u", /* @__PURE__ */ new Map()); + G(this, "$$l_u", /* @__PURE__ */ new Map()); this.$$ctor = e, this.$$s = t, i && this.attachShadow({ mode: "open" }); } addEventListener(e, t, i) { @@ -454,7 +454,7 @@ class an { * * @type {any} */ - Z(this, "$$"); + G(this, "$$"); /** * ### PRIVATE API * @@ -462,7 +462,7 @@ class an { * * @type {any} */ - Z(this, "$$set"); + G(this, "$$set"); } /** @returns {void} */ $destroy() { @@ -558,7 +558,7 @@ async function wn(n, e = "", t = 1e6, i = 0) { if (l.signal.aborted || !d || !u) return null; try { - const b = await crypto.subtle.decrypt( + const _ = await crypto.subtle.decrypt( { name: o, iv: _n(A) @@ -566,9 +566,9 @@ async function wn(n, e = "", t = 1e6, i = 0) { d, u ); - if (b) + if (_) return { - clearText: new TextDecoder().decode(b), + clearText: new TextDecoder().decode(_), took: Date.now() - s }; } catch { @@ -847,7 +847,7 @@ function ct(n) { }; } function Cn(n) { - let e, t, i, o, l, s, h, d, u, A, b, Y, O, U, D, R, X; + let e, t, i, o, l, s, h, d, u, A, _, O, U, B, D, R, X; const J = ( /*#slots*/ n[46].default @@ -862,7 +862,7 @@ function Cn(n) { /*state*/ n[7] === m.VERIFYING && ot() ); - function Q(a, y) { + function Q(a, b) { return ( /*state*/ a[7] === m.VERIFIED ? kn : ( @@ -871,7 +871,7 @@ function Cn(n) { ) ); } - let G = Q(n), V = G(n), v = ( + let Y = Q(n), V = Y(n), v = ( /*hidelogo*/ (n[3] !== !0 || /*isFreeSaaS*/ n[12]) && lt(n) @@ -890,7 +890,7 @@ function Cn(n) { ); return { c() { - N && N.c(), e = z(), t = F("div"), i = F("div"), T && T.c(), o = z(), l = F("div"), s = F("input"), u = z(), A = F("div"), V.c(), b = z(), v && v.c(), Y = z(), P && P.c(), O = z(), S && S.c(), U = z(), p && p.c(), c(s, "type", "checkbox"), c(s, "id", h = /*name*/ + N && N.c(), e = z(), t = F("div"), i = F("div"), T && T.c(), o = z(), l = F("div"), s = F("input"), u = z(), A = F("div"), V.c(), _ = z(), v && v.c(), O = z(), P && P.c(), U = z(), S && S.c(), B = z(), p && p.c(), c(s, "type", "checkbox"), c(s, "id", h = /*name*/ n[4] + "_checkbox"), s.required = d = /*auto*/ n[0] !== "onsubmit" && (!/*floating*/ n[1] || /*auto*/ @@ -911,9 +911,9 @@ function Cn(n) { n[1] ); }, - m(a, y) { - N && N.m(a, y), $(a, e, y), $(a, t, y), L(t, i), T && T.m(i, null), L(i, o), L(i, l), L(l, s), s.checked = /*checked*/ - n[8], L(i, u), L(i, A), V.m(A, null), L(i, b), v && v.m(i, null), L(t, Y), P && P.m(t, null), L(t, O), S && S.m(t, null), L(t, U), p && p.m(t, null), n[49](t), D = !0, R || (X = [ + m(a, b) { + N && N.m(a, b), $(a, e, b), $(a, t, b), L(t, i), T && T.m(i, null), L(i, o), L(i, l), L(l, s), s.checked = /*checked*/ + n[8], L(i, u), L(i, A), V.m(A, null), L(i, _), v && v.m(i, null), L(t, O), P && P.m(t, null), L(t, U), S && S.m(t, null), L(t, B), p && p.m(t, null), n[49](t), D = !0, R || (X = [ Le( s, "change", @@ -934,8 +934,8 @@ function Cn(n) { ) ], R = !0); }, - p(a, y) { - N && N.p && (!D || y[1] & /*$$scope*/ + p(a, b) { + N && N.p && (!D || b[1] & /*$$scope*/ 16384) && Zt( N, J, @@ -946,7 +946,7 @@ function Cn(n) { J, /*$$scope*/ a[45], - y, + b, null ) : Gt( /*$$scope*/ @@ -954,35 +954,35 @@ function Cn(n) { ), null ), /*state*/ - a[7] === m.VERIFYING ? T || (T = ot(), T.c(), T.m(i, o)) : T && (T.d(1), T = null), (!D || y[0] & /*name*/ + a[7] === m.VERIFYING ? T || (T = ot(), T.c(), T.m(i, o)) : T && (T.d(1), T = null), (!D || b[0] & /*name*/ 16 && h !== (h = /*name*/ - a[4] + "_checkbox")) && c(s, "id", h), (!D || y[0] & /*auto, floating*/ + a[4] + "_checkbox")) && c(s, "id", h), (!D || b[0] & /*auto, floating*/ 3 && d !== (d = /*auto*/ a[0] !== "onsubmit" && (!/*floating*/ a[1] || /*auto*/ - a[0] !== "off"))) && (s.required = d), y[0] & /*checked*/ + a[0] !== "off"))) && (s.required = d), b[0] & /*checked*/ 256 && (s.checked = /*checked*/ - a[8]), (!D || y[0] & /*state*/ + a[8]), (!D || b[0] & /*state*/ 128) && rt( l, "altcha-hidden", /*state*/ a[7] === m.VERIFYING - ), G === (G = Q(a)) && V ? V.p(a, y) : (V.d(1), V = G(a), V && (V.c(), V.m(A, null))), /*hidelogo*/ + ), Y === (Y = Q(a)) && V ? V.p(a, b) : (V.d(1), V = Y(a), V && (V.c(), V.m(A, null))), /*hidelogo*/ a[3] !== !0 || /*isFreeSaaS*/ - a[12] ? v ? v.p(a, y) : (v = lt(a), v.c(), v.m(i, null)) : v && (v.d(1), v = null), /*error*/ + a[12] ? v ? v.p(a, b) : (v = lt(a), v.c(), v.m(i, null)) : v && (v.d(1), v = null), /*error*/ a[5] || /*state*/ - a[7] === m.EXPIRED ? P ? P.p(a, y) : (P = st(a), P.c(), P.m(t, O)) : P && (P.d(1), P = null), /*_strings*/ + a[7] === m.EXPIRED ? P ? P.p(a, b) : (P = st(a), P.c(), P.m(t, U)) : P && (P.d(1), P = null), /*_strings*/ a[11].footer && /*hidefooter*/ (a[2] !== !0 || /*isFreeSaaS*/ - a[12]) ? S ? S.p(a, y) : (S = ft(a), S.c(), S.m(t, U)) : S && (S.d(1), S = null), /*floating*/ - a[1] ? p ? p.p(a, y) : (p = ct(a), p.c(), p.m(t, null)) : p && (p.d(1), p = null), (!D || y[0] & /*state*/ + a[12]) ? S ? S.p(a, b) : (S = ft(a), S.c(), S.m(t, B)) : S && (S.d(1), S = null), /*floating*/ + a[1] ? p ? p.p(a, b) : (p = ct(a), p.c(), p.m(t, null)) : p && (p.d(1), p = null), (!D || b[0] & /*state*/ 128) && c( t, "data-state", /*state*/ a[7] - ), (!D || y[0] & /*floating*/ + ), (!D || b[0] & /*floating*/ 2) && c( t, "data-floating", @@ -1007,13 +1007,13 @@ function at(n) { } function An(n, e, t) { var Qe, et; - let i, o, l, s, { $$slots: h = {}, $$scope: d } = e, { auto: u = void 0 } = e, { blockspam: A = void 0 } = e, { challengeurl: b = void 0 } = e, { challengejson: Y = void 0 } = e, { debug: O = !1 } = e, { delay: U = 0 } = e, { expire: D = void 0 } = e, { floating: R = void 0 } = e, { floatinganchor: X = void 0 } = e, { floatingoffset: J = void 0 } = e, { hidefooter: N = !1 } = e, { hidelogo: T = !1 } = e, { name: Q = "altcha" } = e, { maxnumber: G = 1e6 } = e, { mockerror: V = !1 } = e, { obfuscated: v = void 0 } = e, { plugins: P = void 0 } = e, { refetchonexpire: S = !0 } = e, { spamfilter: p = !1 } = e, { strings: a = void 0 } = e, { test: y = !1 } = e, { verifyurl: ee = void 0 } = e, { workers: le = Math.min(16, navigator.hardwareConcurrency || 8) } = e, { workerurl: ae = void 0 } = e; + let i, o, l, s, { $$slots: h = {}, $$scope: d } = e, { auto: u = void 0 } = e, { blockspam: A = void 0 } = e, { challengeurl: _ = void 0 } = e, { challengejson: O = void 0 } = e, { debug: U = !1 } = e, { delay: B = 0 } = e, { expire: D = void 0 } = e, { floating: R = void 0 } = e, { floatinganchor: X = void 0 } = e, { floatingoffset: J = void 0 } = e, { hidefooter: N = !1 } = e, { hidelogo: T = !1 } = e, { name: Q = "altcha" } = e, { maxnumber: Y = 1e6 } = e, { mockerror: V = !1 } = e, { obfuscated: v = void 0 } = e, { plugins: P = void 0 } = e, { refetchonexpire: S = !0 } = e, { spamfilter: p = !1 } = e, { strings: a = void 0 } = e, { test: b = !1 } = e, { verifyurl: ee = void 0 } = e, { workers: le = Math.min(16, navigator.hardwareConcurrency || 8) } = e, { workerurl: ae = void 0 } = e; const he = Qt(), Pe = ["SHA-256", "SHA-384", "SHA-512"], Me = (et = (Qe = document.documentElement.lang) == null ? void 0 : Qe.split("-")) == null ? void 0 : et[0]; - let re = !1, x, ie = null, se = null, _ = null, de = null, W = null, oe = null, te = [], C = m.UNVERIFIED; + let re = !1, x, ie = null, se = null, y = null, de = null, W = null, oe = null, te = [], C = m.UNVERIFIED; Kt(() => { - kt(), _ && (_.removeEventListener("submit", He), _.removeEventListener("reset", Oe), _.removeEventListener("focusin", $e), _ = null), W && (clearTimeout(W), W = null), document.removeEventListener("click", Ve), document.removeEventListener("scroll", je), window.removeEventListener("resize", Be); + kt(), y && (y.removeEventListener("submit", He), y.removeEventListener("reset", Oe), y.removeEventListener("focusin", $e), y = null), W && (clearTimeout(W), W = null), document.removeEventListener("click", Ve), document.removeEventListener("scroll", je), window.removeEventListener("resize", Be); }), zt(() => { - k("mounted", "1.0.6"), k("workers", le), It(), k("plugins", te.length ? te.map((r) => r.constructor.pluginName).join(", ") : "none"), y && k("using test mode"), D && ke(D), u !== void 0 && k("auto", u), R !== void 0 && qe(R), _ = x.closest("form"), _ && (_.addEventListener("submit", He, { capture: !0 }), _.addEventListener("reset", Oe), u === "onfocus" && _.addEventListener("focusin", $e)), u === "onload" && (v ? ge() : ne()), i && (N || T) && k("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."), requestAnimationFrame(() => { + k("mounted", "1.0.6"), k("workers", le), It(), k("plugins", te.length ? te.map((r) => r.constructor.pluginName).join(", ") : "none"), b && k("using test mode"), D && ke(D), u !== void 0 && k("auto", u), R !== void 0 && qe(R), y = x.closest("form"), y && (y.addEventListener("submit", He, { capture: !0 }), y.addEventListener("reset", Oe), u === "onfocus" && y.addEventListener("focusin", $e)), u === "onload" && (v ? ge() : ne()), i && (N || T) && k("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."), requestAnimationFrame(() => { he("load"); }); }); @@ -1024,7 +1024,7 @@ function An(n, e, t) { number: f.number, salt: r.salt, signature: r.signature, - test: y ? !0 : void 0, + test: b ? !0 : void 0, took: f.took })); } @@ -1033,7 +1033,7 @@ function An(n, e, t) { r.destroy(); } function Ne() { - b && S && C === m.VERIFIED ? ne() : me(m.EXPIRED, s.expired); + _ && S && C === m.VERIFIED ? ne() : me(m.EXPIRED, s.expired); } async function vt() { var r; @@ -1041,46 +1041,46 @@ function An(n, e, t) { throw k("mocking error"), new Error("Mocked error."); if (o) return k("using provided json data"), o; - if (y) - return k("generating test challenge", { test: y }), gn(typeof y != "boolean" ? +y : void 0); + if (b) + return k("generating test challenge", { test: b }), gn(typeof b != "boolean" ? +b : void 0); { - if (!b && _) { - const w = _.getAttribute("action"); - w != null && w.includes("/form/") && t(15, b = w + "/altcha"); + if (!_ && y) { + const w = y.getAttribute("action"); + w != null && w.includes("/form/") && t(15, _ = w + "/altcha"); } - if (!b) + if (!_) throw new Error("Attribute challengeurl not set."); - k("fetching challenge from", b); - const f = await fetch(b, { + k("fetching challenge from", _); + const f = await fetch(_, { headers: p ? { "x-altcha-spam-filter": "1" } : {} }); if (f.status !== 200) throw new Error(`Server responded with ${f.status}.`); - const g = f.headers.get("Expires"), I = f.headers.get("X-Altcha-Config"), B = await f.json(), H = new URLSearchParams((r = B.salt.split("?")) == null ? void 0 : r[1]), M = H.get("expires") || H.get("expire"); + const g = f.headers.get("Expires"), I = f.headers.get("X-Altcha-Config"), q = await f.json(), H = new URLSearchParams((r = q.salt.split("?")) == null ? void 0 : r[1]), M = H.get("expires") || H.get("expire"); if (M) { - const w = new Date(+M * 1e3), q = isNaN(w.getTime()) ? 0 : w.getTime() - Date.now(); - q > 0 && ke(q); + const w = new Date(+M * 1e3), Z = isNaN(w.getTime()) ? 0 : w.getTime() - Date.now(); + Z > 0 && ke(Z); } if (I) try { const w = JSON.parse(I); - w && typeof w == "object" && (w.verifyurl && (w.verifyurl = new URL(w.verifyurl, new URL(b)).toString()), Ye(w)); + w && typeof w == "object" && (w.verifyurl && (w.verifyurl = new URL(w.verifyurl, new URL(_)).toString()), Ye(w)); } catch (w) { k("unable to configure from X-Altcha-Config", w); } if (!D && (g != null && g.length)) { const w = Date.parse(g); if (w) { - const q = w - Date.now(); - q > 0 && ke(q); + const Z = w - Date.now(); + Z > 0 && ke(Z); } } - return B; + return q; } } function xt(r) { var g; - const f = _ == null ? void 0 : _.querySelector(typeof r == "string" ? `input[name="${r}"]` : 'input[type="email"]:not([data-no-spamfilter])'); + const f = y == null ? void 0 : y.querySelector(typeof r == "string" ? `input[name="${r}"]` : 'input[type="email"]:not([data-no-spamfilter])'); return ((g = f == null ? void 0 : f.value) == null ? void 0 : g.slice(f.value.indexOf("@"))) || void 0; } function Ct() { @@ -1110,11 +1110,11 @@ function An(n, e, t) { } function At(r) { return [ - ...(_ == null ? void 0 : _.querySelectorAll(r != null && r.length ? r.map((g) => `input[name="${g}"]`).join(", ") : 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || [] + ...(y == null ? void 0 : y.querySelectorAll(r != null && r.length ? r.map((g) => `input[name="${g}"]`).join(", ") : 'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])')) || [] ].reduce( (g, I) => { - const B = I.name, H = I.value; - return B && H && (g[B] = /\n/.test(H) ? H.replace(new RegExp("(? f instanceof Error)) && console[r[0] instanceof Error ? "error" : "log"]("ALTCHA", `[name=${Q}]`, ...r); + (U || r.some((f) => f instanceof Error)) && console[r[0] instanceof Error ? "error" : "log"]("ALTCHA", `[name=${Q}]`, ...r); } function Lt() { - [m.UNVERIFIED, m.ERROR, m.EXPIRED].includes(C) ? p && (_ == null ? void 0 : _.reportValidity()) === !1 ? t(8, re = !1) : v ? ge() : ne() : t(8, re = !0); + [m.UNVERIFIED, m.ERROR, m.EXPIRED].includes(C) ? p && (y == null ? void 0 : y.reportValidity()) === !1 ? t(8, re = !1) : v ? ge() : ne() : t(8, re = !0); } function Ve(r) { const f = r.target; @@ -1159,9 +1159,9 @@ function An(n, e, t) { C === m.UNVERIFIED && ne(); } function He(r) { - _ && u === "onsubmit" ? C === m.UNVERIFIED ? (r.preventDefault(), r.stopPropagation(), ne().then(() => { - _ == null || _.requestSubmit(); - })) : C !== m.VERIFIED && (r.preventDefault(), r.stopPropagation(), C === m.VERIFYING && Ue()) : _ && R && u === "off" && C === m.UNVERIFIED && (r.preventDefault(), r.stopPropagation(), t(9, x.style.display = "block", x), pe()); + y && u === "onsubmit" ? C === m.UNVERIFIED ? (r.preventDefault(), r.stopPropagation(), ne().then(() => { + y == null || y.requestSubmit(); + })) : C !== m.VERIFIED && (r.preventDefault(), r.stopPropagation(), C === m.VERIFYING && Ue()) : y && R && u === "off" && C === m.UNVERIFIED && (r.preventDefault(), r.stopPropagation(), t(9, x.style.display = "block", x), pe()); } function Oe() { me(); @@ -1181,11 +1181,11 @@ function An(n, e, t) { } function pe(r = 20) { if (x) - if (se || (se = (X ? document.querySelector(X) : _ == null ? void 0 : _.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])')) || _), se) { - const f = parseInt(J, 10) || 12, g = se.getBoundingClientRect(), I = x.getBoundingClientRect(), B = document.documentElement.clientHeight, H = document.documentElement.clientWidth, M = R === "auto" ? g.bottom + I.height + f + r > B : R === "top", w = Math.max(r, Math.min(H - r - I.width, g.left + g.width / 2 - I.width / 2)); + if (se || (se = (X ? document.querySelector(X) : y == null ? void 0 : y.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])')) || y), se) { + const f = parseInt(J, 10) || 12, g = se.getBoundingClientRect(), I = x.getBoundingClientRect(), q = document.documentElement.clientHeight, H = document.documentElement.clientWidth, M = R === "auto" ? g.bottom + I.height + f + r > q : R === "top", w = Math.max(r, Math.min(H - r - I.width, g.left + g.width / 2 - I.width / 2)); if (M ? t(9, x.style.top = `${g.top - (I.height + f)}px`, x) : t(9, x.style.top = `${g.bottom + f}px`, x), t(9, x.style.left = `${w}px`, x), x.setAttribute("data-floating", M ? "top" : "bottom"), ie) { - const q = ie.getBoundingClientRect(); - t(10, ie.style.left = g.left - w + g.width / 2 - q.width / 2 + "px", ie); + const Z = ie.getBoundingClientRect(); + t(10, ie.style.left = g.left - w + g.width / 2 - Z.width / 2 + "px", ie); } } else k("unable to find floating anchor element"); @@ -1196,8 +1196,8 @@ function An(n, e, t) { k("requesting server verification from", ee); const f = { payload: r }; if (p) { - const { blockedCountries: B, classifier: H, disableRules: M, email: w, expectedLanguages: q, expectedCountries: Ie, fields: be, ipAddress: ye, text: Vt, timeZone: tt } = Ct(); - f.blockedCountries = B, f.classifier = H, f.disableRules = M, f.email = w === !1 ? void 0 : xt(w), f.expectedCountries = Ie, f.expectedLanguages = q || (Me ? [Me] : void 0), f.fields = be === !1 ? void 0 : At(be), f.ipAddress = ye === !1 ? void 0 : ye || "auto", f.text = Vt, f.timeZone = tt === !1 ? void 0 : tt || bn(); + const { blockedCountries: q, classifier: H, disableRules: M, email: w, expectedLanguages: Z, expectedCountries: Ie, fields: be, ipAddress: ye, text: Vt, timeZone: tt } = Ct(); + f.blockedCountries = q, f.classifier = H, f.disableRules = M, f.email = w === !1 ? void 0 : xt(w), f.expectedCountries = Ie, f.expectedLanguages = Z || (Me ? [Me] : void 0), f.fields = be === !1 ? void 0 : At(be), f.ipAddress = ye === !1 ? void 0 : ye || "auto", f.text = Vt, f.timeZone = tt === !1 ? void 0 : tt || bn(); } const g = await fetch(ee, { body: JSON.stringify(f), @@ -1245,16 +1245,16 @@ function An(n, e, t) { } return { data: r, - solution: await mn(r.challenge, r.salt, r.algorithm, r.maxnumber || G).promise + solution: await mn(r.challenge, r.salt, r.algorithm, r.maxnumber || Y).promise }; } - async function Tt(r, f = typeof y == "number" ? y : G, g = Math.ceil(le)) { + async function Tt(r, f = typeof b == "number" ? b : Y, g = Math.ceil(le)) { const I = []; g = Math.min(16, Math.max(1, g)); for (let M = 0; M < g; M++) I.push(altchaCreateWorker(ae)); - const B = Math.ceil(f / g), H = await Promise.all(I.map((M, w) => { - const q = w * B; + const q = Math.ceil(f / g), H = await Promise.all(I.map((M, w) => { + const Z = w * q; return new Promise((Ie) => { M.addEventListener("message", (be) => { if (be.data) @@ -1263,8 +1263,8 @@ function An(n, e, t) { Ie(be.data); }), M.postMessage({ payload: r, - max: q + B, - start: q, + max: Z + q, + start: Z, type: "work" }); }); @@ -1287,15 +1287,15 @@ function An(n, e, t) { return r.clarify(); } function Ye(r) { - r.obfuscated !== void 0 && t(24, v = r.obfuscated), r.auto !== void 0 && (t(0, u = r.auto), u === "onload" && (v ? ge() : ne())), r.blockspam !== void 0 && t(16, A = !!r.blockspam), r.floatinganchor !== void 0 && t(20, X = r.floatinganchor), r.delay !== void 0 && t(18, U = r.delay), r.floatingoffset !== void 0 && t(21, J = r.floatingoffset), r.floating !== void 0 && qe(r.floating), r.expire !== void 0 && (ke(r.expire), t(19, D = r.expire)), r.challenge && (Ze(r.challenge), o = r.challenge), r.challengeurl !== void 0 && t(15, b = r.challengeurl), r.debug !== void 0 && t(17, O = !!r.debug), r.hidefooter !== void 0 && t(2, N = !!r.hidefooter), r.hidelogo !== void 0 && t(3, T = !!r.hidelogo), r.maxnumber !== void 0 && t(22, G = +r.maxnumber), r.mockerror !== void 0 && t(23, V = !!r.mockerror), r.name !== void 0 && t(4, Q = r.name), r.refetchonexpire !== void 0 && t(25, S = !!r.refetchonexpire), r.spamfilter !== void 0 && t(26, p = typeof r.spamfilter == "object" ? r.spamfilter : !!r.spamfilter), r.strings && t(44, l = r.strings), r.test !== void 0 && t(27, y = typeof r.test == "number" ? r.test : !!r.test), r.verifyurl !== void 0 && t(28, ee = r.verifyurl), r.workers !== void 0 && t(29, le = +r.workers), r.workerurl !== void 0 && t(30, ae = r.workerurl); + r.obfuscated !== void 0 && t(24, v = r.obfuscated), r.auto !== void 0 && (t(0, u = r.auto), u === "onload" && (v ? ge() : ne())), r.blockspam !== void 0 && t(16, A = !!r.blockspam), r.floatinganchor !== void 0 && t(20, X = r.floatinganchor), r.delay !== void 0 && t(18, B = r.delay), r.floatingoffset !== void 0 && t(21, J = r.floatingoffset), r.floating !== void 0 && qe(r.floating), r.expire !== void 0 && (ke(r.expire), t(19, D = r.expire)), r.challenge && (Ze(r.challenge), o = r.challenge), r.challengeurl !== void 0 && t(15, _ = r.challengeurl), r.debug !== void 0 && t(17, U = !!r.debug), r.hidefooter !== void 0 && t(2, N = !!r.hidefooter), r.hidelogo !== void 0 && t(3, T = !!r.hidelogo), r.maxnumber !== void 0 && t(22, Y = +r.maxnumber), r.mockerror !== void 0 && t(23, V = !!r.mockerror), r.name !== void 0 && t(4, Q = r.name), r.refetchonexpire !== void 0 && t(25, S = !!r.refetchonexpire), r.spamfilter !== void 0 && t(26, p = typeof r.spamfilter == "object" ? r.spamfilter : !!r.spamfilter), r.strings && t(44, l = r.strings), r.test !== void 0 && t(27, b = typeof r.test == "number" ? r.test : !!r.test), r.verifyurl !== void 0 && t(28, ee = r.verifyurl), r.workers !== void 0 && t(29, le = +r.workers), r.workerurl !== void 0 && t(30, ae = r.workerurl); } function We() { return { auto: u, blockspam: A, - challengeurl: b, - debug: O, - delay: U, + challengeurl: _, + debug: U, + delay: B, expire: D, floating: R, floatinganchor: X, @@ -1303,13 +1303,13 @@ function An(n, e, t) { hidefooter: N, hidelogo: T, name: Q, - maxnumber: G, + maxnumber: Y, mockerror: V, obfuscated: v, refetchonexpire: S, spamfilter: p, strings: s, - test: y, + test: b, verifyurl: ee, workers: le, workerurl: ae @@ -1334,7 +1334,7 @@ function An(n, e, t) { t(7, C = r), t(5, de = f); } async function ne() { - return me(m.VERIFYING), await new Promise((r) => setTimeout(r, U || 0)), vt().then((r) => (Ze(r), k("challenge", r), Ge(r))).then(({ data: r, solution: f }) => { + return me(m.VERIFYING), await new Promise((r) => setTimeout(r, B || 0)), vt().then((r) => (Ze(r), k("challenge", r), Ge(r))).then(({ data: r, solution: f }) => { if (k("solution", f), "challenge" in r && f && !("clearText" in f)) if ((f == null ? void 0 : f.number) !== void 0) { if (ee) @@ -1364,11 +1364,12 @@ function An(n, e, t) { }); } return n.$$set = (r) => { - "auto" in r && t(0, u = r.auto), "blockspam" in r && t(16, A = r.blockspam), "challengeurl" in r && t(15, b = r.challengeurl), "challengejson" in r && t(31, Y = r.challengejson), "debug" in r && t(17, O = r.debug), "delay" in r && t(18, U = r.delay), "expire" in r && t(19, D = r.expire), "floating" in r && t(1, R = r.floating), "floatinganchor" in r && t(20, X = r.floatinganchor), "floatingoffset" in r && t(21, J = r.floatingoffset), "hidefooter" in r && t(2, N = r.hidefooter), "hidelogo" in r && t(3, T = r.hidelogo), "name" in r && t(4, Q = r.name), "maxnumber" in r && t(22, G = r.maxnumber), "mockerror" in r && t(23, V = r.mockerror), "obfuscated" in r && t(24, v = r.obfuscated), "plugins" in r && t(32, P = r.plugins), "refetchonexpire" in r && t(25, S = r.refetchonexpire), "spamfilter" in r && t(26, p = r.spamfilter), "strings" in r && t(33, a = r.strings), "test" in r && t(27, y = r.test), "verifyurl" in r && t(28, ee = r.verifyurl), "workers" in r && t(29, le = r.workers), "workerurl" in r && t(30, ae = r.workerurl), "$$scope" in r && t(45, d = r.$$scope); + "auto" in r && t(0, u = r.auto), "blockspam" in r && t(16, A = r.blockspam), "challengeurl" in r && t(15, _ = r.challengeurl), "challengejson" in r && t(31, O = r.challengejson), "debug" in r && t(17, U = r.debug), "delay" in r && t(18, B = r.delay), "expire" in r && t(19, D = r.expire), "floating" in r && t(1, R = r.floating), "floatinganchor" in r && t(20, X = r.floatinganchor), "floatingoffset" in r && t(21, J = r.floatingoffset), "hidefooter" in r && t(2, N = r.hidefooter), "hidelogo" in r && t(3, T = r.hidelogo), "name" in r && t(4, Q = r.name), "maxnumber" in r && t(22, Y = r.maxnumber), "mockerror" in r && t(23, V = r.mockerror), "obfuscated" in r && t(24, v = r.obfuscated), "plugins" in r && t(32, P = r.plugins), "refetchonexpire" in r && t(25, S = r.refetchonexpire), "spamfilter" in r && t(26, p = r.spamfilter), "strings" in r && t(33, a = r.strings), "test" in r && t(27, b = r.test), "verifyurl" in r && t(28, ee = r.verifyurl), "workers" in r && t(29, le = r.workers), "workerurl" in r && t(30, ae = r.workerurl), "$$scope" in r && t(45, d = r.$$scope); }, n.$$.update = () => { n.$$.dirty[0] & /*challengeurl*/ - 32768 && t(12, i = !!(b != null && b.includes(".altcha.org")) && !!(b != null && b.includes("apiKey=ckey_"))), n.$$.dirty[1] & /*challengejson*/ - 1 && (o = Y ? at(Y) : void 0), n.$$.dirty[1] & /*strings*/ + 32768 | n.$$.dirty[1] & /*challengejson*/ + 1 && t(12, i = O && new URL(O, location.origin).host.endsWith(".altcha.org") && !!(_ != null && _.includes("apiKey=ckey_"))), n.$$.dirty[1] & /*challengejson*/ + 1 && (o = O ? at(O) : void 0), n.$$.dirty[1] & /*strings*/ 4 && t(44, l = a ? at(a) : {}), n.$$.dirty[1] & /*parsedStrings*/ 8192 && t(11, s = { ariaLinkLabel: ut, @@ -1400,23 +1401,23 @@ function An(n, e, t) { i, Lt, Ue, - b, + _, A, - O, U, + B, D, X, J, - G, + Y, V, v, S, p, - y, + b, ee, le, ae, - Y, + O, P, a, ge, diff --git a/dist_external/altcha.umd.cjs b/dist_external/altcha.umd.cjs index 43692cc..68f9e9e 100644 --- a/dist_external/altcha.umd.cjs +++ b/dist_external/altcha.umd.cjs @@ -1,2 +1,2 @@ -(function(H,$){typeof exports=="object"&&typeof module<"u"?$(exports):typeof define=="function"&&define.amd?define(["exports"],$):(H=typeof globalThis<"u"?globalThis:H||self,$(H.altcha={}))})(this,function(H){"use strict";var Rn=Object.defineProperty;var Ln=(H,$,z)=>$ in H?Rn(H,$,{enumerable:!0,configurable:!0,writable:!0,value:z}):H[$]=z;var Y=(H,$,z)=>Ln(H,typeof $!="symbol"?$+"":$,z);var $=typeof document<"u"?document.currentScript:null;function z(){}function xt(n,e){for(const t in e)n[t]=e[t];return n}function Fe(n){return n()}function Ne(){return Object.create(null)}function ge(n){n.forEach(Fe)}function je(n){return typeof n=="function"}function At(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}function It(n){return Object.keys(n).length===0}function Rt(n,e,t,r){if(n){const o=Ve(n,e,t,r);return n[0](o)}}function Ve(n,e,t,r){return n[1]&&r?xt(t.ctx.slice(),n[1](r(e))):t.ctx}function Lt(n,e,t,r){if(n[2]&&r){const o=n[2](r(t));if(e.dirty===void 0)return o;if(typeof o=="object"){const l=[],s=Math.max(e.dirty.length,o.length);for(let h=0;h32){const e=[],t=n.ctx.length/32;for(let r=0;rn.removeEventListener(e,t,r)}function c(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Pt(n){return Array.from(n.childNodes)}function $e(n,e,t){n.classList.toggle(e,!!t)}function Mt(n,e,{bubbles:t=!1,cancelable:r=!1}={}){return new CustomEvent(n,{detail:e,bubbles:t,cancelable:r})}function Ft(n){const e={};return n.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let me;function be(n){me=n}function Se(){if(!me)throw new Error("Function called outside component initialization");return me}function Nt(n){Se().$$.on_mount.push(n)}function jt(n){Se().$$.on_destroy.push(n)}function Vt(){const n=Se();return(e,t,{cancelable:r=!1}={})=>{const o=n.$$.callbacks[e];if(o){const l=Mt(e,t,{cancelable:r});return o.slice().forEach(s=>{s.call(n,l)}),!l.defaultPrevented}return!0}}const ce=[],Ce=[];let ue=[];const Ue=[],Oe=Promise.resolve();let Te=!1;function He(){Te||(Te=!0,Oe.then(p))}function $t(){return He(),Oe}function De(n){ue.push(n)}const Pe=new Set;let ae=0;function p(){if(ae!==0)return;const n=me;do{try{for(;aen.indexOf(r)===-1?e.push(r):t.push(r)),t.forEach(r=>r()),ue=e}const xe=new Set;let Ht;function Be(n,e){n&&n.i&&(xe.delete(n),n.i(e))}function Bt(n,e,t,r){if(n&&n.o){if(xe.has(n))return;xe.add(n),Ht.c.push(()=>{xe.delete(n)}),n.o(e)}}function qt(n,e,t){const{fragment:r,after_update:o}=n.$$;r&&r.m(e,t),De(()=>{const l=n.$$.on_mount.map(Fe).filter(je);n.$$.on_destroy?n.$$.on_destroy.push(...l):ge(l),n.$$.on_mount=[]}),o.forEach(De)}function Zt(n,e){const t=n.$$;t.fragment!==null&&(Ot(t.after_update),ge(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Gt(n,e){n.$$.dirty[0]===-1&&(ce.push(n),He(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const q=B.length?B[0]:X;return u.ctx&&o(u.ctx[b],u.ctx[b]=q)&&(!u.skip_bound&&u.bound[b]&&u.bound[b](q),A&&Gt(n,b)),X}):[],u.update(),A=!0,ge(u.before_update),u.fragment=r?r(u.ctx):!1,e.target){if(e.hydrate){const b=Pt(e.target);u.fragment&&u.fragment.l(b),b.forEach(j)}else u.fragment&&u.fragment.c();e.intro&&Be(n.$$.fragment),qt(n,e.target,e.anchor),p()}be(d)}let qe;typeof HTMLElement=="function"&&(qe=class extends HTMLElement{constructor(e,t,r){super();Y(this,"$$ctor");Y(this,"$$s");Y(this,"$$c");Y(this,"$$cn",!1);Y(this,"$$d",{});Y(this,"$$r",!1);Y(this,"$$p_d",{});Y(this,"$$l",{});Y(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,r&&this.attachShadow({mode:"open"})}addEventListener(e,t,r){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const o=this.$$c.$on(e,t);this.$$l_u.set(t,o)}super.addEventListener(e,t,r)}removeEventListener(e,t,r){if(super.removeEventListener(e,t,r),this.$$c){const o=this.$$l_u.get(t);o&&(o(),this.$$l_u.delete(t))}if(this.$$l[e]){const o=this.$$l[e].indexOf(t);o>=0&&this.$$l[e].splice(o,1)}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=M("slot"),l!=="default"&&c(s,"name",l)},m:function(u,A){U(u,s,A)},d:function(u){u&&j(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},r=Ft(this);for(const l of this.$$s)l in r&&(t[l]=[e(l)]);for(const l of this.attributes){const s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=Ae(s,l.value,this.$$p_d,"toProp"))}for(const l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const o=()=>{this.$$r=!0;for(const l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){const s=Ae(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(o),o();for(const l in this.$$l)for(const s of this.$$l[l]){const h=this.$$c.$on(l,s);this.$$l_u.set(s,h)}this.$$l={}}}attributeChangedCallback(e,t,r){var o;this.$$r||(e=this.$$g_p(e),this.$$d[e]=Ae(e,r,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Ae(n,e,t,r){var l;const o=(l=t[n])==null?void 0:l.type;if(e=o==="Boolean"&&typeof e!="boolean"?e!=null:e,!r||!t[n])return e;if(r==="toAttribute")switch(o){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(o){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function Wt(n,e,t,r,o,l){let s=class extends qe{constructor(){super(n,t,o),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(h=>(e[h].attribute||h).toLowerCase())}};return Object.keys(e).forEach(h=>{Object.defineProperty(s.prototype,h,{get(){return this.$$c&&h in this.$$c?this.$$c[h]:this.$$d[h]},set(d){var u;d=Ae(h,d,e),this.$$d[h]=d,(u=this.$$c)==null||u.$set({[h]:d})}})}),r.forEach(h=>{Object.defineProperty(s.prototype,h,{get(){var d;return(d=this.$$c)==null?void 0:d[h]}})}),n.element=s,s}class Xt{constructor(){Y(this,"$$");Y(this,"$$set")}$destroy(){Zt(this,1),this.$destroy=z}$on(e,t){if(!je(t))return z;const r=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return r.push(t),()=>{const o=r.indexOf(t);o!==-1&&r.splice(o,1)}}$set(e){this.$$set&&!It(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Jt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Jt);const Ze=new TextEncoder;function zt(n){return[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function Kt(n,e="SHA-256",t=1e5){const r=Date.now().toString(16);n||(n=Math.round(Math.random()*t));const o=await Ge(r,n,e);return{algorithm:e,challenge:o,salt:r,signature:""}}async function Ge(n,e,t){return zt(await crypto.subtle.digest(t.toUpperCase(),Ze.encode(n+e)))}function Qt(n,e,t="SHA-256",r=1e6,o=0){const l=new AbortController,s=Date.now();return{promise:(async()=>{for(let d=o;d<=r;d+=1){if(l.signal.aborted)return null;if(await Ge(e,d,t)===n)return{number:d,took:Date.now()-s}}return null})(),controller:l}}function en(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function tn(n){const e=atob(n),t=new Uint8Array(e.length);for(let r=0;r{for(let A=r;A<=t;A+=1){if(l.signal.aborted||!d||!u)return null;try{const b=await crypto.subtle.decrypt({name:o,iv:nn(A)},d,u);if(b)return{clearText:new TextDecoder().decode(b),took:Date.now()-s}}catch{}}return null};let d=null,u=null;try{u=tn(n);const A=await crypto.subtle.digest("SHA-256",Ze.encode(e));d=await crypto.subtle.importKey("raw",A,o,!1,["decrypt"])}catch{return{promise:Promise.reject(),controller:l}}return{promise:h(),controller:l}}var g=(n=>(n.ERROR="error",n.VERIFIED="verified",n.VERIFYING="verifying",n.UNVERIFIED="unverified",n.EXPIRED="expired",n))(g||{});function Ye(n){let e,t,r;return{c(){e=K("svg"),t=K("path"),r=K("path"),c(t,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),c(t,"fill","currentColor"),c(t,"opacity",".25"),c(r,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),c(r,"fill","currentColor"),c(r,"class","altcha-spinner"),c(e,"width","24"),c(e,"height","24"),c(e,"viewBox","0 0 24 24"),c(e,"xmlns","http://www.w3.org/2000/svg")},m(o,l){U(o,e,l),R(e,t),R(e,r)},d(o){o&&j(e)}}}function on(n){let e,t=n[11].label+"",r;return{c(){e=M("label"),c(e,"for",r=n[4]+"_checkbox")},m(o,l){U(o,e,l),e.innerHTML=t},p(o,l){l[0]&2048&&t!==(t=o[11].label+"")&&(e.innerHTML=t),l[0]&16&&r!==(r=o[4]+"_checkbox")&&c(e,"for",r)},d(o){o&&j(e)}}}function ln(n){let e,t=n[11].verifying+"";return{c(){e=M("span")},m(r,o){U(r,e,o),e.innerHTML=t},p(r,o){o[0]&2048&&t!==(t=r[11].verifying+"")&&(e.innerHTML=t)},d(r){r&&j(e)}}}function sn(n){let e,t=n[11].verified+"",r,o;return{c(){e=M("span"),r=Q(),o=M("input"),c(o,"type","hidden"),c(o,"name",n[4]),o.value=n[6]},m(l,s){U(l,e,s),e.innerHTML=t,U(l,r,s),U(l,o,s)},p(l,s){s[0]&2048&&t!==(t=l[11].verified+"")&&(e.innerHTML=t),s[0]&16&&c(o,"name",l[4]),s[0]&64&&(o.value=l[6])},d(l){l&&(j(e),j(r),j(o))}}}function We(n){let e,t,r,o,l,s,h;return{c(){e=M("div"),t=M("a"),r=K("svg"),o=K("path"),l=K("path"),s=K("path"),c(o,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),c(o,"fill","currentColor"),c(l,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),c(l,"fill","currentColor"),c(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),c(s,"fill","currentColor"),c(r,"width","22"),c(r,"height","22"),c(r,"viewBox","0 0 20 20"),c(r,"fill","none"),c(r,"xmlns","http://www.w3.org/2000/svg"),c(t,"href",Qe),c(t,"target","_blank"),c(t,"class","altcha-logo"),c(t,"aria-label",h=n[11].ariaLinkLabel)},m(d,u){U(d,e,u),R(e,t),R(t,r),R(r,o),R(r,l),R(r,s)},p(d,u){u[0]&2048&&h!==(h=d[11].ariaLinkLabel)&&c(t,"aria-label",h)},d(d){d&&j(e)}}}function Xe(n){let e,t,r,o;function l(d,u){return d[7]===g.EXPIRED?cn:fn}let s=l(n),h=s(n);return{c(){e=M("div"),t=K("svg"),r=K("path"),o=Q(),h.c(),c(r,"stroke-linecap","round"),c(r,"stroke-linejoin","round"),c(r,"d","M6 18L18 6M6 6l12 12"),c(t,"width","14"),c(t,"height","14"),c(t,"xmlns","http://www.w3.org/2000/svg"),c(t,"fill","none"),c(t,"viewBox","0 0 24 24"),c(t,"stroke-width","1.5"),c(t,"stroke","currentColor"),c(e,"class","altcha-error")},m(d,u){U(d,e,u),R(e,t),R(t,r),R(e,o),h.m(e,null)},p(d,u){s===(s=l(d))&&h?h.p(d,u):(h.d(1),h=s(d),h&&(h.c(),h.m(e,null)))},d(d){d&&j(e),h.d()}}}function fn(n){let e,t=n[11].error+"";return{c(){e=M("div"),c(e,"title",n[5])},m(r,o){U(r,e,o),e.innerHTML=t},p(r,o){o[0]&2048&&t!==(t=r[11].error+"")&&(e.innerHTML=t),o[0]&32&&c(e,"title",r[5])},d(r){r&&j(e)}}}function cn(n){let e,t=n[11].expired+"";return{c(){e=M("div"),c(e,"title",n[5])},m(r,o){U(r,e,o),e.innerHTML=t},p(r,o){o[0]&2048&&t!==(t=r[11].expired+"")&&(e.innerHTML=t),o[0]&32&&c(e,"title",r[5])},d(r){r&&j(e)}}}function Je(n){let e,t,r=n[11].footer+"";return{c(){e=M("div"),t=M("div"),c(e,"class","altcha-footer")},m(o,l){U(o,e,l),R(e,t),t.innerHTML=r},p(o,l){l[0]&2048&&r!==(r=o[11].footer+"")&&(t.innerHTML=r)},d(o){o&&j(e)}}}function ze(n){let e;return{c(){e=M("div"),c(e,"class","altcha-anchor-arrow")},m(t,r){U(t,e,r),n[48](e)},p:z,d(t){t&&j(e),n[48](null)}}}function un(n){let e,t,r,o,l,s,h,d,u,A,b,X,B,q,T,L,ee;const te=n[46].default,N=Rt(te,n,n[45],null);let D=n[7]===g.VERIFYING&&Ye();function ne(a,y){return a[7]===g.VERIFIED?sn:a[7]===g.VERIFYING?ln:on}let W=ne(n),V=W(n),k=(n[3]!==!0||n[12])&&We(n),P=(n[5]||n[7]===g.EXPIRED)&&Xe(n),S=n[11].footer&&(n[2]!==!0||n[12])&&Je(n),E=n[1]&&ze(n);return{c(){N&&N.c(),e=Q(),t=M("div"),r=M("div"),D&&D.c(),o=Q(),l=M("div"),s=M("input"),u=Q(),A=M("div"),V.c(),b=Q(),k&&k.c(),X=Q(),P&&P.c(),B=Q(),S&&S.c(),q=Q(),E&&E.c(),c(s,"type","checkbox"),c(s,"id",h=n[4]+"_checkbox"),s.required=d=n[0]!=="onsubmit"&&(!n[1]||n[0]!=="off"),c(l,"class","altcha-checkbox"),$e(l,"altcha-hidden",n[7]===g.VERIFYING),c(A,"class","altcha-label"),c(r,"class","altcha-main"),c(t,"class","altcha"),c(t,"data-state",n[7]),c(t,"data-floating",n[1])},m(a,y){N&&N.m(a,y),U(a,e,y),U(a,t,y),R(t,r),D&&D.m(r,null),R(r,o),R(r,l),R(l,s),s.checked=n[8],R(r,u),R(r,A),V.m(A,null),R(r,b),k&&k.m(r,null),R(t,X),P&&P.m(t,null),R(t,B),S&&S.m(t,null),R(t,q),E&&E.m(t,null),n[49](t),T=!0,L||(ee=[Le(s,"change",n[47]),Le(s,"change",n[13]),Le(s,"invalid",n[14])],L=!0)},p(a,y){N&&N.p&&(!T||y[1]&16384)&&St(N,te,a,a[45],T?Lt(te,a[45],y,null):Tt(a[45]),null),a[7]===g.VERIFYING?D||(D=Ye(),D.c(),D.m(r,o)):D&&(D.d(1),D=null),(!T||y[0]&16&&h!==(h=a[4]+"_checkbox"))&&c(s,"id",h),(!T||y[0]&3&&d!==(d=a[0]!=="onsubmit"&&(!a[1]||a[0]!=="off")))&&(s.required=d),y[0]&256&&(s.checked=a[8]),(!T||y[0]&128)&&$e(l,"altcha-hidden",a[7]===g.VERIFYING),W===(W=ne(a))&&V?V.p(a,y):(V.d(1),V=W(a),V&&(V.c(),V.m(A,null))),a[3]!==!0||a[12]?k?k.p(a,y):(k=We(a),k.c(),k.m(r,null)):k&&(k.d(1),k=null),a[5]||a[7]===g.EXPIRED?P?P.p(a,y):(P=Xe(a),P.c(),P.m(t,B)):P&&(P.d(1),P=null),a[11].footer&&(a[2]!==!0||a[12])?S?S.p(a,y):(S=Je(a),S.c(),S.m(t,q)):S&&(S.d(1),S=null),a[1]?E?E.p(a,y):(E=ze(a),E.c(),E.m(t,null)):E&&(E.d(1),E=null),(!T||y[0]&128)&&c(t,"data-state",a[7]),(!T||y[0]&2)&&c(t,"data-floating",a[1])},i(a){T||(Be(N,a),T=!0)},o(a){Bt(N,a),T=!1},d(a){a&&(j(e),j(t)),N&&N.d(a),D&&D.d(),V.d(),k&&k.d(),P&&P.d(),S&&S.d(),E&&E.d(),n[49](null),L=!1,ge(ee)}}}const Ke="Visit Altcha.org",Qe="https://altcha.org/";function et(n){return JSON.parse(n)}function an(n,e,t){var vt,kt;let r,o,l,s,{$$slots:h={},$$scope:d}=e,{auto:u=void 0}=e,{blockspam:A=void 0}=e,{challengeurl:b=void 0}=e,{challengejson:X=void 0}=e,{debug:B=!1}=e,{delay:q=0}=e,{expire:T=void 0}=e,{floating:L=void 0}=e,{floatinganchor:ee=void 0}=e,{floatingoffset:te=void 0}=e,{hidefooter:N=!1}=e,{hidelogo:D=!1}=e,{name:ne="altcha"}=e,{maxnumber:W=1e6}=e,{mockerror:V=!1}=e,{obfuscated:k=void 0}=e,{plugins:P=void 0}=e,{refetchonexpire:S=!0}=e,{spamfilter:E=!1}=e,{strings:a=void 0}=e,{test:y=!1}=e,{verifyurl:ie=void 0}=e,{workers:he=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:ye=void 0}=e;const _e=Vt(),nt=["SHA-256","SHA-384","SHA-512"],it=(kt=(vt=document.documentElement.lang)==null?void 0:vt.split("-"))==null?void 0:kt[0];let le=!1,C,se=null,de=null,_=null,we=null,J=null,fe=null,re=[],x=g.UNVERIFIED;jt(()=>{hn(),_&&(_.removeEventListener("submit",ct),_.removeEventListener("reset",ut),_.removeEventListener("focusin",ft),_=null),J&&(clearTimeout(J),J=null),document.removeEventListener("click",lt),document.removeEventListener("scroll",st),window.removeEventListener("resize",ht)}),Nt(()=>{v("mounted","1.0.6"),v("workers",he),yn(),v("plugins",re.length?re.map(i=>i.constructor.pluginName).join(", "):"none"),y&&v("using test mode"),T&&Re(T),u!==void 0&&v("auto",u),L!==void 0&&dt(L),_=C.closest("form"),_&&(_.addEventListener("submit",ct,{capture:!0}),_.addEventListener("reset",ut),u==="onfocus"&&_.addEventListener("focusin",ft)),u==="onload"&&(k?pe():oe()),r&&(N||D)&&v("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."),requestAnimationFrame(()=>{_e("load")})});function rt(i,f){return btoa(JSON.stringify({algorithm:i.algorithm,challenge:i.challenge,number:f.number,salt:i.salt,signature:i.signature,test:y?!0:void 0,took:f.took}))}function hn(){for(const i of re)i.destroy()}function ot(){b&&S&&x===g.VERIFIED?oe():Ee(g.EXPIRED,s.expired)}async function dn(){var i;if(V)throw v("mocking error"),new Error("Mocked error.");if(o)return v("using provided json data"),o;if(y)return v("generating test challenge",{test:y}),Kt(typeof y!="boolean"?+y:void 0);{if(!b&&_){const w=_.getAttribute("action");w!=null&&w.includes("/form/")&&t(15,b=w+"/altcha")}if(!b)throw new Error("Attribute challengeurl not set.");v("fetching challenge from",b);const f=await fetch(b,{headers:E?{"x-altcha-spam-filter":"1"}:{}});if(f.status!==200)throw new Error(`Server responded with ${f.status}.`);const m=f.headers.get("Expires"),I=f.headers.get("X-Altcha-Config"),Z=await f.json(),O=new URLSearchParams((i=Z.salt.split("?"))==null?void 0:i[1]),F=O.get("expires")||O.get("expire");if(F){const w=new Date(+F*1e3),G=isNaN(w.getTime())?0:w.getTime()-Date.now();G>0&&Re(G)}if(I)try{const w=JSON.parse(I);w&&typeof w=="object"&&(w.verifyurl&&(w.verifyurl=new URL(w.verifyurl,new URL(b)).toString()),bt(w))}catch(w){v("unable to configure from X-Altcha-Config",w)}if(!T&&(m!=null&&m.length)){const w=Date.parse(m);if(w){const G=w-Date.now();G>0&&Re(G)}}return Z}}function gn(i){var m;const f=_==null?void 0:_.querySelector(typeof i=="string"?`input[name="${i}"]`:'input[type="email"]:not([data-no-spamfilter])');return((m=f==null?void 0:f.value)==null?void 0:m.slice(f.value.indexOf("@")))||void 0}function mn(){return E==="ipAddress"?{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:!1,expectedCountries:void 0,expectedLanguages:void 0,fields:!1,ipAddress:void 0,text:void 0,timeZone:void 0}:typeof E=="object"?E:{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,text:void 0,timeZone:void 0}}function bn(i){return[...(_==null?void 0:_.querySelectorAll(i!=null&&i.length?i.map(m=>`input[name="${m}"]`).join(", "):'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((m,I)=>{const Z=I.name,O=I.value;return Z&&O&&(m[Z]=/\n/.test(O)?O.replace(new RegExp("(?f instanceof Error))&&console[i[0]instanceof Error?"error":"log"]("ALTCHA",`[name=${ne}]`,...i)}function _n(){[g.UNVERIFIED,g.ERROR,g.EXPIRED].includes(x)?E&&(_==null?void 0:_.reportValidity())===!1?t(8,le=!1):k?pe():oe():t(8,le=!0)}function lt(i){const f=i.target;L&&f&&!C.contains(f)&&(x===g.VERIFIED||u==="off"&&x===g.UNVERIFIED)&&t(9,C.style.display="none",C)}function st(){L&&x!==g.UNVERIFIED&&Ie()}function wn(i){for(const f of re)typeof f.onErrorChange=="function"&&f.onErrorChange(we)}function ft(i){x===g.UNVERIFIED&&oe()}function ct(i){_&&u==="onsubmit"?x===g.UNVERIFIED?(i.preventDefault(),i.stopPropagation(),oe().then(()=>{_==null||_.requestSubmit()})):x!==g.VERIFIED&&(i.preventDefault(),i.stopPropagation(),x===g.VERIFYING&&at()):_&&L&&u==="off"&&x===g.UNVERIFIED&&(i.preventDefault(),i.stopPropagation(),t(9,C.style.display="block",C),Ie())}function ut(){Ee()}function at(){x===g.VERIFYING&&s.waitAlert&&alert(s.waitAlert)}function pn(i){for(const f of re)typeof f.onStateChange=="function"&&f.onStateChange(x);L&&x!==g.UNVERIFIED&&requestAnimationFrame(()=>{Ie()}),t(8,le=x===g.VERIFIED)}function ht(){L&&Ie()}function Ie(i=20){if(C)if(de||(de=(ee?document.querySelector(ee):_==null?void 0:_.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])'))||_),de){const f=parseInt(te,10)||12,m=de.getBoundingClientRect(),I=C.getBoundingClientRect(),Z=document.documentElement.clientHeight,O=document.documentElement.clientWidth,F=L==="auto"?m.bottom+I.height+f+i>Z:L==="top",w=Math.max(i,Math.min(O-i-I.width,m.left+m.width/2-I.width/2));if(F?t(9,C.style.top=`${m.top-(I.height+f)}px`,C):t(9,C.style.top=`${m.bottom+f}px`,C),t(9,C.style.left=`${w}px`,C),C.setAttribute("data-floating",F?"top":"bottom"),se){const G=se.getBoundingClientRect();t(10,se.style.left=m.left-w+m.width/2-G.width/2+"px",se)}}else v("unable to find floating anchor element")}async function En(i){if(!ie)throw new Error("Attribute verifyurl not set.");v("requesting server verification from",ie);const f={payload:i};if(E){const{blockedCountries:Z,classifier:O,disableRules:F,email:w,expectedLanguages:G,expectedCountries:Me,fields:ve,ipAddress:ke,text:In,timeZone:Ct}=mn();f.blockedCountries=Z,f.classifier=O,f.disableRules=F,f.email=w===!1?void 0:gn(w),f.expectedCountries=Me,f.expectedLanguages=G||(it?[it]:void 0),f.fields=ve===!1?void 0:bn(ve),f.ipAddress=ke===!1?void 0:ke||"auto",f.text=In,f.timeZone=Ct===!1?void 0:Ct||en()}const m=await fetch(ie,{body:JSON.stringify(f),headers:{"content-type":"application/json"},method:"POST"});if(m.status!==200)throw new Error(`Server responded with ${m.status}.`);const I=await m.json();if(I!=null&&I.payload&&t(6,fe=I.payload),_e("serververification",I),A&&I.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function Re(i){v("expire",i),J&&(clearTimeout(J),J=null),i<1?ot():J=setTimeout(ot,i)}function dt(i){v("floating",i),L!==i&&(t(9,C.style.left="",C),t(9,C.style.top="",C)),t(1,L=i===!0||i===""?"auto":i===!1||i==="false"?void 0:L),L?(u||t(0,u="onsubmit"),document.addEventListener("scroll",st),document.addEventListener("click",lt),window.addEventListener("resize",ht)):u==="onsubmit"&&t(0,u=void 0)}function gt(i){if(!i.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(i.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!nt.includes(i.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${nt.join(", ")}`);if(!i.challenge||i.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!i.salt||i.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function mt(i){let f=null;if("Worker"in window){try{f=await vn(i,i.maxnumber)}catch(m){v(m)}if((f==null?void 0:f.number)!==void 0||"obfuscated"in i)return{data:i,solution:f}}if("obfuscated"in i){const m=await rn(i.obfuscated,i.key,i.maxnumber);return{data:i,solution:await m.promise}}return{data:i,solution:await Qt(i.challenge,i.salt,i.algorithm,i.maxnumber||W).promise}}async function vn(i,f=typeof y=="number"?y:W,m=Math.ceil(he)){const I=[];m=Math.min(16,Math.max(1,m));for(let F=0;F{const G=w*Z;return new Promise(Me=>{F.addEventListener("message",ve=>{if(ve.data)for(const ke of I)ke!==F&&ke.postMessage({type:"abort"});Me(ve.data)}),F.postMessage({payload:i,max:G+Z,start:G,type:"work"})})}));for(const F of I)F.terminate();return O.find(F=>!!F)||null}async function pe(){if(!k){t(7,x=g.ERROR);return}const i=re.find(f=>f.constructor.pluginName==="obfuscation");if(!i||!("clarify"in i)){t(7,x=g.ERROR),v("Plugin `obfuscation` not found. Import `altcha/plugins/obfuscation` to load it.");return}if("clarify"in i&&typeof i.clarify=="function")return i.clarify()}function bt(i){i.obfuscated!==void 0&&t(24,k=i.obfuscated),i.auto!==void 0&&(t(0,u=i.auto),u==="onload"&&(k?pe():oe())),i.blockspam!==void 0&&t(16,A=!!i.blockspam),i.floatinganchor!==void 0&&t(20,ee=i.floatinganchor),i.delay!==void 0&&t(18,q=i.delay),i.floatingoffset!==void 0&&t(21,te=i.floatingoffset),i.floating!==void 0&&dt(i.floating),i.expire!==void 0&&(Re(i.expire),t(19,T=i.expire)),i.challenge&&(gt(i.challenge),o=i.challenge),i.challengeurl!==void 0&&t(15,b=i.challengeurl),i.debug!==void 0&&t(17,B=!!i.debug),i.hidefooter!==void 0&&t(2,N=!!i.hidefooter),i.hidelogo!==void 0&&t(3,D=!!i.hidelogo),i.maxnumber!==void 0&&t(22,W=+i.maxnumber),i.mockerror!==void 0&&t(23,V=!!i.mockerror),i.name!==void 0&&t(4,ne=i.name),i.refetchonexpire!==void 0&&t(25,S=!!i.refetchonexpire),i.spamfilter!==void 0&&t(26,E=typeof i.spamfilter=="object"?i.spamfilter:!!i.spamfilter),i.strings&&t(44,l=i.strings),i.test!==void 0&&t(27,y=typeof i.test=="number"?i.test:!!i.test),i.verifyurl!==void 0&&t(28,ie=i.verifyurl),i.workers!==void 0&&t(29,he=+i.workers),i.workerurl!==void 0&&t(30,ye=i.workerurl)}function yt(){return{auto:u,blockspam:A,challengeurl:b,debug:B,delay:q,expire:T,floating:L,floatinganchor:ee,floatingoffset:te,hidefooter:N,hidelogo:D,name:ne,maxnumber:W,mockerror:V,obfuscated:k,refetchonexpire:S,spamfilter:E,strings:s,test:y,verifyurl:ie,workers:he,workerurl:ye}}function _t(){return de}function kn(i){return re.find(f=>f.constructor.pluginName===i)}function wt(){return x}function Ee(i=g.UNVERIFIED,f=null){J&&(clearTimeout(J),J=null),t(8,le=!1),t(5,we=f),t(6,fe=null),t(7,x=i)}function pt(i){de=i}function Et(i,f=null){t(7,x=i),t(5,we=f)}async function oe(){return Ee(g.VERIFYING),await new Promise(i=>setTimeout(i,q||0)),dn().then(i=>(gt(i),v("challenge",i),mt(i))).then(({data:i,solution:f})=>{if(v("solution",f),"challenge"in i&&f&&!("clearText"in f))if((f==null?void 0:f.number)!==void 0){if(ie)return En(rt(i,f));t(6,fe=rt(i,f)),v("payload",fe)}else throw v("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{t(7,x=g.VERIFIED),v("verified"),$t().then(()=>{_e("verified",{payload:fe})})}).catch(i=>{v(i),t(7,x=g.ERROR),t(5,we=i.message)})}function Cn(){le=this.checked,t(8,le)}function xn(i){Ce[i?"unshift":"push"](()=>{se=i,t(10,se)})}function An(i){Ce[i?"unshift":"push"](()=>{C=i,t(9,C)})}return n.$$set=i=>{"auto"in i&&t(0,u=i.auto),"blockspam"in i&&t(16,A=i.blockspam),"challengeurl"in i&&t(15,b=i.challengeurl),"challengejson"in i&&t(31,X=i.challengejson),"debug"in i&&t(17,B=i.debug),"delay"in i&&t(18,q=i.delay),"expire"in i&&t(19,T=i.expire),"floating"in i&&t(1,L=i.floating),"floatinganchor"in i&&t(20,ee=i.floatinganchor),"floatingoffset"in i&&t(21,te=i.floatingoffset),"hidefooter"in i&&t(2,N=i.hidefooter),"hidelogo"in i&&t(3,D=i.hidelogo),"name"in i&&t(4,ne=i.name),"maxnumber"in i&&t(22,W=i.maxnumber),"mockerror"in i&&t(23,V=i.mockerror),"obfuscated"in i&&t(24,k=i.obfuscated),"plugins"in i&&t(32,P=i.plugins),"refetchonexpire"in i&&t(25,S=i.refetchonexpire),"spamfilter"in i&&t(26,E=i.spamfilter),"strings"in i&&t(33,a=i.strings),"test"in i&&t(27,y=i.test),"verifyurl"in i&&t(28,ie=i.verifyurl),"workers"in i&&t(29,he=i.workers),"workerurl"in i&&t(30,ye=i.workerurl),"$$scope"in i&&t(45,d=i.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&32768&&t(12,r=!!(b!=null&&b.includes(".altcha.org"))&&!!(b!=null&&b.includes("apiKey=ckey_"))),n.$$.dirty[1]&1&&(o=X?et(X):void 0),n.$$.dirty[1]&4&&t(44,l=a?et(a):{}),n.$$.dirty[1]&8192&&t(11,s={ariaLinkLabel:Ke,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by ALTCHA`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...l}),n.$$.dirty[0]&192&&_e("statechange",{payload:fe,state:x}),n.$$.dirty[0]&32&&wn(),n.$$.dirty[0]&128&&pn()},[u,L,N,D,ne,we,fe,x,le,C,se,s,r,_n,at,b,A,B,q,T,ee,te,W,V,k,S,E,y,ie,he,ye,X,P,a,pe,bt,yt,_t,kn,wt,Ee,pt,Et,oe,l,d,h,Cn,xn,An]}class tt extends Xt{constructor(e){super(),Yt(this,e,an,un,At,{auto:0,blockspam:16,challengeurl:15,challengejson:31,debug:17,delay:18,expire:19,floating:1,floatinganchor:20,floatingoffset:21,hidefooter:2,hidelogo:3,name:4,maxnumber:22,mockerror:23,obfuscated:24,plugins:32,refetchonexpire:25,spamfilter:26,strings:33,test:27,verifyurl:28,workers:29,workerurl:30,clarify:34,configure:35,getConfiguration:36,getFloatingAnchor:37,getPlugin:38,getState:39,reset:40,setFloatingAnchor:41,setState:42,verify:43},null,[-1,-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),p()}get blockspam(){return this.$$.ctx[16]}set blockspam(e){this.$$set({blockspam:e}),p()}get challengeurl(){return this.$$.ctx[15]}set challengeurl(e){this.$$set({challengeurl:e}),p()}get challengejson(){return this.$$.ctx[31]}set challengejson(e){this.$$set({challengejson:e}),p()}get debug(){return this.$$.ctx[17]}set debug(e){this.$$set({debug:e}),p()}get delay(){return this.$$.ctx[18]}set delay(e){this.$$set({delay:e}),p()}get expire(){return this.$$.ctx[19]}set expire(e){this.$$set({expire:e}),p()}get floating(){return this.$$.ctx[1]}set floating(e){this.$$set({floating:e}),p()}get floatinganchor(){return this.$$.ctx[20]}set floatinganchor(e){this.$$set({floatinganchor:e}),p()}get floatingoffset(){return this.$$.ctx[21]}set floatingoffset(e){this.$$set({floatingoffset:e}),p()}get hidefooter(){return this.$$.ctx[2]}set hidefooter(e){this.$$set({hidefooter:e}),p()}get hidelogo(){return this.$$.ctx[3]}set hidelogo(e){this.$$set({hidelogo:e}),p()}get name(){return this.$$.ctx[4]}set name(e){this.$$set({name:e}),p()}get maxnumber(){return this.$$.ctx[22]}set maxnumber(e){this.$$set({maxnumber:e}),p()}get mockerror(){return this.$$.ctx[23]}set mockerror(e){this.$$set({mockerror:e}),p()}get obfuscated(){return this.$$.ctx[24]}set obfuscated(e){this.$$set({obfuscated:e}),p()}get plugins(){return this.$$.ctx[32]}set plugins(e){this.$$set({plugins:e}),p()}get refetchonexpire(){return this.$$.ctx[25]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),p()}get spamfilter(){return this.$$.ctx[26]}set spamfilter(e){this.$$set({spamfilter:e}),p()}get strings(){return this.$$.ctx[33]}set strings(e){this.$$set({strings:e}),p()}get test(){return this.$$.ctx[27]}set test(e){this.$$set({test:e}),p()}get verifyurl(){return this.$$.ctx[28]}set verifyurl(e){this.$$set({verifyurl:e}),p()}get workers(){return this.$$.ctx[29]}set workers(e){this.$$set({workers:e}),p()}get workerurl(){return this.$$.ctx[30]}set workerurl(e){this.$$set({workerurl:e}),p()}get clarify(){return this.$$.ctx[34]}get configure(){return this.$$.ctx[35]}get getConfiguration(){return this.$$.ctx[36]}get getFloatingAnchor(){return this.$$.ctx[37]}get getPlugin(){return this.$$.ctx[38]}get getState(){return this.$$.ctx[39]}get reset(){return this.$$.ctx[40]}get setFloatingAnchor(){return this.$$.ctx[41]}get setState(){return this.$$.ctx[42]}get verify(){return this.$$.ctx[43]}}customElements.define("altcha-widget",Wt(tt,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},delay:{},expire:{},floating:{},floatinganchor:{},floatingoffset:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},obfuscated:{},plugins:{},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},["default"],["clarify","configure","getConfiguration","getFloatingAnchor","getPlugin","getState","reset","setFloatingAnchor","setState","verify"],!1)),globalThis.altchaCreateWorker=n=>new Worker(new URL(n||"./worker.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:$&&$.tagName.toUpperCase()==="SCRIPT"&&$.src||new URL("altcha.umd.cjs",document.baseURI).href)),globalThis.altchaPlugins=globalThis.altchaPlugins||[],H.Altcha=tt,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"})}); +(function(H,U){typeof exports=="object"&&typeof module<"u"?U(exports):typeof define=="function"&&define.amd?define(["exports"],U):(H=typeof globalThis<"u"?globalThis:H||self,U(H.altcha={}))})(this,function(H){"use strict";var Rn=Object.defineProperty;var Ln=(H,U,z)=>U in H?Rn(H,U,{enumerable:!0,configurable:!0,writable:!0,value:z}):H[U]=z;var W=(H,U,z)=>Ln(H,typeof U!="symbol"?U+"":U,z);var U=typeof document<"u"?document.currentScript:null;function z(){}function xt(n,e){for(const t in e)n[t]=e[t];return n}function Fe(n){return n()}function Ne(){return Object.create(null)}function ge(n){n.forEach(Fe)}function je(n){return typeof n=="function"}function At(n,e){return n!=n?e==e:n!==e||n&&typeof n=="object"||typeof n=="function"}function It(n){return Object.keys(n).length===0}function Rt(n,e,t,r){if(n){const o=Ve(n,e,t,r);return n[0](o)}}function Ve(n,e,t,r){return n[1]&&r?xt(t.ctx.slice(),n[1](r(e))):t.ctx}function Lt(n,e,t,r){if(n[2]&&r){const o=n[2](r(t));if(e.dirty===void 0)return o;if(typeof o=="object"){const l=[],s=Math.max(e.dirty.length,o.length);for(let h=0;h32){const e=[],t=n.ctx.length/32;for(let r=0;rn.removeEventListener(e,t,r)}function c(n,e,t){t==null?n.removeAttribute(e):n.getAttribute(e)!==t&&n.setAttribute(e,t)}function Pt(n){return Array.from(n.childNodes)}function Ue(n,e,t){n.classList.toggle(e,!!t)}function Mt(n,e,{bubbles:t=!1,cancelable:r=!1}={}){return new CustomEvent(n,{detail:e,bubbles:t,cancelable:r})}function Ft(n){const e={};return n.childNodes.forEach(t=>{e[t.slot||"default"]=!0}),e}let me;function be(n){me=n}function Se(){if(!me)throw new Error("Function called outside component initialization");return me}function Nt(n){Se().$$.on_mount.push(n)}function jt(n){Se().$$.on_destroy.push(n)}function Vt(){const n=Se();return(e,t,{cancelable:r=!1}={})=>{const o=n.$$.callbacks[e];if(o){const l=Mt(e,t,{cancelable:r});return o.slice().forEach(s=>{s.call(n,l)}),!l.defaultPrevented}return!0}}const ce=[],Ce=[];let ue=[];const $e=[],Oe=Promise.resolve();let Te=!1;function He(){Te||(Te=!0,Oe.then(p))}function Ut(){return He(),Oe}function De(n){ue.push(n)}const Pe=new Set;let ae=0;function p(){if(ae!==0)return;const n=me;do{try{for(;aen.indexOf(r)===-1?e.push(r):t.push(r)),t.forEach(r=>r()),ue=e}const xe=new Set;let Ht;function Be(n,e){n&&n.i&&(xe.delete(n),n.i(e))}function Bt(n,e,t,r){if(n&&n.o){if(xe.has(n))return;xe.add(n),Ht.c.push(()=>{xe.delete(n)}),n.o(e)}}function qt(n,e,t){const{fragment:r,after_update:o}=n.$$;r&&r.m(e,t),De(()=>{const l=n.$$.on_mount.map(Fe).filter(je);n.$$.on_destroy?n.$$.on_destroy.push(...l):ge(l),n.$$.on_mount=[]}),o.forEach(De)}function Zt(n,e){const t=n.$$;t.fragment!==null&&(Ot(t.after_update),ge(t.on_destroy),t.fragment&&t.fragment.d(e),t.on_destroy=t.fragment=null,t.ctx=[])}function Gt(n,e){n.$$.dirty[0]===-1&&(ce.push(n),He(),n.$$.dirty.fill(0)),n.$$.dirty[e/31|0]|=1<{const Z=q.length?q[0]:B;return u.ctx&&o(u.ctx[_],u.ctx[_]=Z)&&(!u.skip_bound&&u.bound[_]&&u.bound[_](Z),A&&Gt(n,_)),B}):[],u.update(),A=!0,ge(u.before_update),u.fragment=r?r(u.ctx):!1,e.target){if(e.hydrate){const _=Pt(e.target);u.fragment&&u.fragment.l(_),_.forEach(j)}else u.fragment&&u.fragment.c();e.intro&&Be(n.$$.fragment),qt(n,e.target,e.anchor),p()}be(d)}let qe;typeof HTMLElement=="function"&&(qe=class extends HTMLElement{constructor(e,t,r){super();W(this,"$$ctor");W(this,"$$s");W(this,"$$c");W(this,"$$cn",!1);W(this,"$$d",{});W(this,"$$r",!1);W(this,"$$p_d",{});W(this,"$$l",{});W(this,"$$l_u",new Map);this.$$ctor=e,this.$$s=t,r&&this.attachShadow({mode:"open"})}addEventListener(e,t,r){if(this.$$l[e]=this.$$l[e]||[],this.$$l[e].push(t),this.$$c){const o=this.$$c.$on(e,t);this.$$l_u.set(t,o)}super.addEventListener(e,t,r)}removeEventListener(e,t,r){if(super.removeEventListener(e,t,r),this.$$c){const o=this.$$l_u.get(t);o&&(o(),this.$$l_u.delete(t))}if(this.$$l[e]){const o=this.$$l[e].indexOf(t);o>=0&&this.$$l[e].splice(o,1)}}async connectedCallback(){if(this.$$cn=!0,!this.$$c){let e=function(l){return()=>{let s;return{c:function(){s=M("slot"),l!=="default"&&c(s,"name",l)},m:function(u,A){$(u,s,A)},d:function(u){u&&j(s)}}}};if(await Promise.resolve(),!this.$$cn||this.$$c)return;const t={},r=Ft(this);for(const l of this.$$s)l in r&&(t[l]=[e(l)]);for(const l of this.attributes){const s=this.$$g_p(l.name);s in this.$$d||(this.$$d[s]=Ae(s,l.value,this.$$p_d,"toProp"))}for(const l in this.$$p_d)!(l in this.$$d)&&this[l]!==void 0&&(this.$$d[l]=this[l],delete this[l]);this.$$c=new this.$$ctor({target:this.shadowRoot||this,props:{...this.$$d,$$slots:t,$$scope:{ctx:[]}}});const o=()=>{this.$$r=!0;for(const l in this.$$p_d)if(this.$$d[l]=this.$$c.$$.ctx[this.$$c.$$.props[l]],this.$$p_d[l].reflect){const s=Ae(l,this.$$d[l],this.$$p_d,"toAttribute");s==null?this.removeAttribute(this.$$p_d[l].attribute||l):this.setAttribute(this.$$p_d[l].attribute||l,s)}this.$$r=!1};this.$$c.$$.after_update.push(o),o();for(const l in this.$$l)for(const s of this.$$l[l]){const h=this.$$c.$on(l,s);this.$$l_u.set(s,h)}this.$$l={}}}attributeChangedCallback(e,t,r){var o;this.$$r||(e=this.$$g_p(e),this.$$d[e]=Ae(e,r,this.$$p_d,"toProp"),(o=this.$$c)==null||o.$set({[e]:this.$$d[e]}))}disconnectedCallback(){this.$$cn=!1,Promise.resolve().then(()=>{!this.$$cn&&this.$$c&&(this.$$c.$destroy(),this.$$c=void 0)})}$$g_p(e){return Object.keys(this.$$p_d).find(t=>this.$$p_d[t].attribute===e||!this.$$p_d[t].attribute&&t.toLowerCase()===e)||e}});function Ae(n,e,t,r){var l;const o=(l=t[n])==null?void 0:l.type;if(e=o==="Boolean"&&typeof e!="boolean"?e!=null:e,!r||!t[n])return e;if(r==="toAttribute")switch(o){case"Object":case"Array":return e==null?null:JSON.stringify(e);case"Boolean":return e?"":null;case"Number":return e??null;default:return e}else switch(o){case"Object":case"Array":return e&&JSON.parse(e);case"Boolean":return e;case"Number":return e!=null?+e:e;default:return e}}function Wt(n,e,t,r,o,l){let s=class extends qe{constructor(){super(n,t,o),this.$$p_d=e}static get observedAttributes(){return Object.keys(e).map(h=>(e[h].attribute||h).toLowerCase())}};return Object.keys(e).forEach(h=>{Object.defineProperty(s.prototype,h,{get(){return this.$$c&&h in this.$$c?this.$$c[h]:this.$$d[h]},set(d){var u;d=Ae(h,d,e),this.$$d[h]=d,(u=this.$$c)==null||u.$set({[h]:d})}})}),r.forEach(h=>{Object.defineProperty(s.prototype,h,{get(){var d;return(d=this.$$c)==null?void 0:d[h]}})}),n.element=s,s}class Xt{constructor(){W(this,"$$");W(this,"$$set")}$destroy(){Zt(this,1),this.$destroy=z}$on(e,t){if(!je(t))return z;const r=this.$$.callbacks[e]||(this.$$.callbacks[e]=[]);return r.push(t),()=>{const o=r.indexOf(t);o!==-1&&r.splice(o,1)}}$set(e){this.$$set&&!It(e)&&(this.$$.skip_bound=!0,this.$$set(e),this.$$.skip_bound=!1)}}const Jt="4";typeof window<"u"&&(window.__svelte||(window.__svelte={v:new Set})).v.add(Jt);const Ze=new TextEncoder;function zt(n){return[...new Uint8Array(n)].map(e=>e.toString(16).padStart(2,"0")).join("")}async function Kt(n,e="SHA-256",t=1e5){const r=Date.now().toString(16);n||(n=Math.round(Math.random()*t));const o=await Ge(r,n,e);return{algorithm:e,challenge:o,salt:r,signature:""}}async function Ge(n,e,t){return zt(await crypto.subtle.digest(t.toUpperCase(),Ze.encode(n+e)))}function Qt(n,e,t="SHA-256",r=1e6,o=0){const l=new AbortController,s=Date.now();return{promise:(async()=>{for(let d=o;d<=r;d+=1){if(l.signal.aborted)return null;if(await Ge(e,d,t)===n)return{number:d,took:Date.now()-s}}return null})(),controller:l}}function en(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone}catch{}}function tn(n){const e=atob(n),t=new Uint8Array(e.length);for(let r=0;r{for(let A=r;A<=t;A+=1){if(l.signal.aborted||!d||!u)return null;try{const _=await crypto.subtle.decrypt({name:o,iv:nn(A)},d,u);if(_)return{clearText:new TextDecoder().decode(_),took:Date.now()-s}}catch{}}return null};let d=null,u=null;try{u=tn(n);const A=await crypto.subtle.digest("SHA-256",Ze.encode(e));d=await crypto.subtle.importKey("raw",A,o,!1,["decrypt"])}catch{return{promise:Promise.reject(),controller:l}}return{promise:h(),controller:l}}var g=(n=>(n.ERROR="error",n.VERIFIED="verified",n.VERIFYING="verifying",n.UNVERIFIED="unverified",n.EXPIRED="expired",n))(g||{});function Ye(n){let e,t,r;return{c(){e=K("svg"),t=K("path"),r=K("path"),c(t,"d","M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z"),c(t,"fill","currentColor"),c(t,"opacity",".25"),c(r,"d","M12,4a8,8,0,0,1,7.89,6.7A1.53,1.53,0,0,0,21.38,12h0a1.5,1.5,0,0,0,1.48-1.75,11,11,0,0,0-21.72,0A1.5,1.5,0,0,0,2.62,12h0a1.53,1.53,0,0,0,1.49-1.3A8,8,0,0,1,12,4Z"),c(r,"fill","currentColor"),c(r,"class","altcha-spinner"),c(e,"width","24"),c(e,"height","24"),c(e,"viewBox","0 0 24 24"),c(e,"xmlns","http://www.w3.org/2000/svg")},m(o,l){$(o,e,l),R(e,t),R(e,r)},d(o){o&&j(e)}}}function on(n){let e,t=n[11].label+"",r;return{c(){e=M("label"),c(e,"for",r=n[4]+"_checkbox")},m(o,l){$(o,e,l),e.innerHTML=t},p(o,l){l[0]&2048&&t!==(t=o[11].label+"")&&(e.innerHTML=t),l[0]&16&&r!==(r=o[4]+"_checkbox")&&c(e,"for",r)},d(o){o&&j(e)}}}function ln(n){let e,t=n[11].verifying+"";return{c(){e=M("span")},m(r,o){$(r,e,o),e.innerHTML=t},p(r,o){o[0]&2048&&t!==(t=r[11].verifying+"")&&(e.innerHTML=t)},d(r){r&&j(e)}}}function sn(n){let e,t=n[11].verified+"",r,o;return{c(){e=M("span"),r=Q(),o=M("input"),c(o,"type","hidden"),c(o,"name",n[4]),o.value=n[6]},m(l,s){$(l,e,s),e.innerHTML=t,$(l,r,s),$(l,o,s)},p(l,s){s[0]&2048&&t!==(t=l[11].verified+"")&&(e.innerHTML=t),s[0]&16&&c(o,"name",l[4]),s[0]&64&&(o.value=l[6])},d(l){l&&(j(e),j(r),j(o))}}}function We(n){let e,t,r,o,l,s,h;return{c(){e=M("div"),t=M("a"),r=K("svg"),o=K("path"),l=K("path"),s=K("path"),c(o,"d","M2.33955 16.4279C5.88954 20.6586 12.1971 21.2105 16.4279 17.6604C18.4699 15.947 19.6548 13.5911 19.9352 11.1365L17.9886 10.4279C17.8738 12.5624 16.909 14.6459 15.1423 16.1284C11.7577 18.9684 6.71167 18.5269 3.87164 15.1423C1.03163 11.7577 1.4731 6.71166 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577C16.9767 5.86872 17.5322 7.02798 17.804 8.2324L19.9522 9.01429C19.7622 7.07737 19.0059 5.17558 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956C-0.658625 5.88958 -1.21046 12.1971 2.33955 16.4279Z"),c(o,"fill","currentColor"),c(l,"d","M3.57212 2.33956C1.65755 3.94607 0.496389 6.11731 0.12782 8.40523L2.04639 9.13961C2.26047 7.15832 3.21057 5.25375 4.8577 3.87164C8.24231 1.03162 13.2883 1.4731 16.1284 4.8577L13.8302 6.78606L19.9633 9.13364C19.7929 7.15555 19.0335 5.20847 17.6604 3.57212C14.1104 -0.658624 7.80283 -1.21043 3.57212 2.33956Z"),c(l,"fill","currentColor"),c(s,"d","M7 10H5C5 12.7614 7.23858 15 10 15C12.7614 15 15 12.7614 15 10H13C13 11.6569 11.6569 13 10 13C8.3431 13 7 11.6569 7 10Z"),c(s,"fill","currentColor"),c(r,"width","22"),c(r,"height","22"),c(r,"viewBox","0 0 20 20"),c(r,"fill","none"),c(r,"xmlns","http://www.w3.org/2000/svg"),c(t,"href",Qe),c(t,"target","_blank"),c(t,"class","altcha-logo"),c(t,"aria-label",h=n[11].ariaLinkLabel)},m(d,u){$(d,e,u),R(e,t),R(t,r),R(r,o),R(r,l),R(r,s)},p(d,u){u[0]&2048&&h!==(h=d[11].ariaLinkLabel)&&c(t,"aria-label",h)},d(d){d&&j(e)}}}function Xe(n){let e,t,r,o;function l(d,u){return d[7]===g.EXPIRED?cn:fn}let s=l(n),h=s(n);return{c(){e=M("div"),t=K("svg"),r=K("path"),o=Q(),h.c(),c(r,"stroke-linecap","round"),c(r,"stroke-linejoin","round"),c(r,"d","M6 18L18 6M6 6l12 12"),c(t,"width","14"),c(t,"height","14"),c(t,"xmlns","http://www.w3.org/2000/svg"),c(t,"fill","none"),c(t,"viewBox","0 0 24 24"),c(t,"stroke-width","1.5"),c(t,"stroke","currentColor"),c(e,"class","altcha-error")},m(d,u){$(d,e,u),R(e,t),R(t,r),R(e,o),h.m(e,null)},p(d,u){s===(s=l(d))&&h?h.p(d,u):(h.d(1),h=s(d),h&&(h.c(),h.m(e,null)))},d(d){d&&j(e),h.d()}}}function fn(n){let e,t=n[11].error+"";return{c(){e=M("div"),c(e,"title",n[5])},m(r,o){$(r,e,o),e.innerHTML=t},p(r,o){o[0]&2048&&t!==(t=r[11].error+"")&&(e.innerHTML=t),o[0]&32&&c(e,"title",r[5])},d(r){r&&j(e)}}}function cn(n){let e,t=n[11].expired+"";return{c(){e=M("div"),c(e,"title",n[5])},m(r,o){$(r,e,o),e.innerHTML=t},p(r,o){o[0]&2048&&t!==(t=r[11].expired+"")&&(e.innerHTML=t),o[0]&32&&c(e,"title",r[5])},d(r){r&&j(e)}}}function Je(n){let e,t,r=n[11].footer+"";return{c(){e=M("div"),t=M("div"),c(e,"class","altcha-footer")},m(o,l){$(o,e,l),R(e,t),t.innerHTML=r},p(o,l){l[0]&2048&&r!==(r=o[11].footer+"")&&(t.innerHTML=r)},d(o){o&&j(e)}}}function ze(n){let e;return{c(){e=M("div"),c(e,"class","altcha-anchor-arrow")},m(t,r){$(t,e,r),n[48](e)},p:z,d(t){t&&j(e),n[48](null)}}}function un(n){let e,t,r,o,l,s,h,d,u,A,_,B,q,Z,T,L,ee;const te=n[46].default,N=Rt(te,n,n[45],null);let D=n[7]===g.VERIFYING&&Ye();function ne(a,b){return a[7]===g.VERIFIED?sn:a[7]===g.VERIFYING?ln:on}let X=ne(n),V=X(n),k=(n[3]!==!0||n[12])&&We(n),P=(n[5]||n[7]===g.EXPIRED)&&Xe(n),S=n[11].footer&&(n[2]!==!0||n[12])&&Je(n),E=n[1]&&ze(n);return{c(){N&&N.c(),e=Q(),t=M("div"),r=M("div"),D&&D.c(),o=Q(),l=M("div"),s=M("input"),u=Q(),A=M("div"),V.c(),_=Q(),k&&k.c(),B=Q(),P&&P.c(),q=Q(),S&&S.c(),Z=Q(),E&&E.c(),c(s,"type","checkbox"),c(s,"id",h=n[4]+"_checkbox"),s.required=d=n[0]!=="onsubmit"&&(!n[1]||n[0]!=="off"),c(l,"class","altcha-checkbox"),Ue(l,"altcha-hidden",n[7]===g.VERIFYING),c(A,"class","altcha-label"),c(r,"class","altcha-main"),c(t,"class","altcha"),c(t,"data-state",n[7]),c(t,"data-floating",n[1])},m(a,b){N&&N.m(a,b),$(a,e,b),$(a,t,b),R(t,r),D&&D.m(r,null),R(r,o),R(r,l),R(l,s),s.checked=n[8],R(r,u),R(r,A),V.m(A,null),R(r,_),k&&k.m(r,null),R(t,B),P&&P.m(t,null),R(t,q),S&&S.m(t,null),R(t,Z),E&&E.m(t,null),n[49](t),T=!0,L||(ee=[Le(s,"change",n[47]),Le(s,"change",n[13]),Le(s,"invalid",n[14])],L=!0)},p(a,b){N&&N.p&&(!T||b[1]&16384)&&St(N,te,a,a[45],T?Lt(te,a[45],b,null):Tt(a[45]),null),a[7]===g.VERIFYING?D||(D=Ye(),D.c(),D.m(r,o)):D&&(D.d(1),D=null),(!T||b[0]&16&&h!==(h=a[4]+"_checkbox"))&&c(s,"id",h),(!T||b[0]&3&&d!==(d=a[0]!=="onsubmit"&&(!a[1]||a[0]!=="off")))&&(s.required=d),b[0]&256&&(s.checked=a[8]),(!T||b[0]&128)&&Ue(l,"altcha-hidden",a[7]===g.VERIFYING),X===(X=ne(a))&&V?V.p(a,b):(V.d(1),V=X(a),V&&(V.c(),V.m(A,null))),a[3]!==!0||a[12]?k?k.p(a,b):(k=We(a),k.c(),k.m(r,null)):k&&(k.d(1),k=null),a[5]||a[7]===g.EXPIRED?P?P.p(a,b):(P=Xe(a),P.c(),P.m(t,q)):P&&(P.d(1),P=null),a[11].footer&&(a[2]!==!0||a[12])?S?S.p(a,b):(S=Je(a),S.c(),S.m(t,Z)):S&&(S.d(1),S=null),a[1]?E?E.p(a,b):(E=ze(a),E.c(),E.m(t,null)):E&&(E.d(1),E=null),(!T||b[0]&128)&&c(t,"data-state",a[7]),(!T||b[0]&2)&&c(t,"data-floating",a[1])},i(a){T||(Be(N,a),T=!0)},o(a){Bt(N,a),T=!1},d(a){a&&(j(e),j(t)),N&&N.d(a),D&&D.d(),V.d(),k&&k.d(),P&&P.d(),S&&S.d(),E&&E.d(),n[49](null),L=!1,ge(ee)}}}const Ke="Visit Altcha.org",Qe="https://altcha.org/";function et(n){return JSON.parse(n)}function an(n,e,t){var vt,kt;let r,o,l,s,{$$slots:h={},$$scope:d}=e,{auto:u=void 0}=e,{blockspam:A=void 0}=e,{challengeurl:_=void 0}=e,{challengejson:B=void 0}=e,{debug:q=!1}=e,{delay:Z=0}=e,{expire:T=void 0}=e,{floating:L=void 0}=e,{floatinganchor:ee=void 0}=e,{floatingoffset:te=void 0}=e,{hidefooter:N=!1}=e,{hidelogo:D=!1}=e,{name:ne="altcha"}=e,{maxnumber:X=1e6}=e,{mockerror:V=!1}=e,{obfuscated:k=void 0}=e,{plugins:P=void 0}=e,{refetchonexpire:S=!0}=e,{spamfilter:E=!1}=e,{strings:a=void 0}=e,{test:b=!1}=e,{verifyurl:ie=void 0}=e,{workers:he=Math.min(16,navigator.hardwareConcurrency||8)}=e,{workerurl:ye=void 0}=e;const _e=Vt(),nt=["SHA-256","SHA-384","SHA-512"],it=(kt=(vt=document.documentElement.lang)==null?void 0:vt.split("-"))==null?void 0:kt[0];let le=!1,C,se=null,de=null,y=null,we=null,J=null,fe=null,re=[],x=g.UNVERIFIED;jt(()=>{hn(),y&&(y.removeEventListener("submit",ct),y.removeEventListener("reset",ut),y.removeEventListener("focusin",ft),y=null),J&&(clearTimeout(J),J=null),document.removeEventListener("click",lt),document.removeEventListener("scroll",st),window.removeEventListener("resize",ht)}),Nt(()=>{v("mounted","1.0.6"),v("workers",he),yn(),v("plugins",re.length?re.map(i=>i.constructor.pluginName).join(", "):"none"),b&&v("using test mode"),T&&Re(T),u!==void 0&&v("auto",u),L!==void 0&&dt(L),y=C.closest("form"),y&&(y.addEventListener("submit",ct,{capture:!0}),y.addEventListener("reset",ut),u==="onfocus"&&y.addEventListener("focusin",ft)),u==="onload"&&(k?pe():oe()),r&&(N||D)&&v("Attributes hidefooter and hidelogo ignored because usage with free API Keys requires attribution."),requestAnimationFrame(()=>{_e("load")})});function rt(i,f){return btoa(JSON.stringify({algorithm:i.algorithm,challenge:i.challenge,number:f.number,salt:i.salt,signature:i.signature,test:b?!0:void 0,took:f.took}))}function hn(){for(const i of re)i.destroy()}function ot(){_&&S&&x===g.VERIFIED?oe():Ee(g.EXPIRED,s.expired)}async function dn(){var i;if(V)throw v("mocking error"),new Error("Mocked error.");if(o)return v("using provided json data"),o;if(b)return v("generating test challenge",{test:b}),Kt(typeof b!="boolean"?+b:void 0);{if(!_&&y){const w=y.getAttribute("action");w!=null&&w.includes("/form/")&&t(15,_=w+"/altcha")}if(!_)throw new Error("Attribute challengeurl not set.");v("fetching challenge from",_);const f=await fetch(_,{headers:E?{"x-altcha-spam-filter":"1"}:{}});if(f.status!==200)throw new Error(`Server responded with ${f.status}.`);const m=f.headers.get("Expires"),I=f.headers.get("X-Altcha-Config"),G=await f.json(),O=new URLSearchParams((i=G.salt.split("?"))==null?void 0:i[1]),F=O.get("expires")||O.get("expire");if(F){const w=new Date(+F*1e3),Y=isNaN(w.getTime())?0:w.getTime()-Date.now();Y>0&&Re(Y)}if(I)try{const w=JSON.parse(I);w&&typeof w=="object"&&(w.verifyurl&&(w.verifyurl=new URL(w.verifyurl,new URL(_)).toString()),bt(w))}catch(w){v("unable to configure from X-Altcha-Config",w)}if(!T&&(m!=null&&m.length)){const w=Date.parse(m);if(w){const Y=w-Date.now();Y>0&&Re(Y)}}return G}}function gn(i){var m;const f=y==null?void 0:y.querySelector(typeof i=="string"?`input[name="${i}"]`:'input[type="email"]:not([data-no-spamfilter])');return((m=f==null?void 0:f.value)==null?void 0:m.slice(f.value.indexOf("@")))||void 0}function mn(){return E==="ipAddress"?{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:!1,expectedCountries:void 0,expectedLanguages:void 0,fields:!1,ipAddress:void 0,text:void 0,timeZone:void 0}:typeof E=="object"?E:{blockedCountries:void 0,classifier:void 0,disableRules:void 0,email:void 0,expectedCountries:void 0,expectedLanguages:void 0,fields:void 0,ipAddress:void 0,text:void 0,timeZone:void 0}}function bn(i){return[...(y==null?void 0:y.querySelectorAll(i!=null&&i.length?i.map(m=>`input[name="${m}"]`).join(", "):'input[type="text"]:not([data-no-spamfilter]), textarea:not([data-no-spamfilter])'))||[]].reduce((m,I)=>{const G=I.name,O=I.value;return G&&O&&(m[G]=/\n/.test(O)?O.replace(new RegExp("(?f instanceof Error))&&console[i[0]instanceof Error?"error":"log"]("ALTCHA",`[name=${ne}]`,...i)}function _n(){[g.UNVERIFIED,g.ERROR,g.EXPIRED].includes(x)?E&&(y==null?void 0:y.reportValidity())===!1?t(8,le=!1):k?pe():oe():t(8,le=!0)}function lt(i){const f=i.target;L&&f&&!C.contains(f)&&(x===g.VERIFIED||u==="off"&&x===g.UNVERIFIED)&&t(9,C.style.display="none",C)}function st(){L&&x!==g.UNVERIFIED&&Ie()}function wn(i){for(const f of re)typeof f.onErrorChange=="function"&&f.onErrorChange(we)}function ft(i){x===g.UNVERIFIED&&oe()}function ct(i){y&&u==="onsubmit"?x===g.UNVERIFIED?(i.preventDefault(),i.stopPropagation(),oe().then(()=>{y==null||y.requestSubmit()})):x!==g.VERIFIED&&(i.preventDefault(),i.stopPropagation(),x===g.VERIFYING&&at()):y&&L&&u==="off"&&x===g.UNVERIFIED&&(i.preventDefault(),i.stopPropagation(),t(9,C.style.display="block",C),Ie())}function ut(){Ee()}function at(){x===g.VERIFYING&&s.waitAlert&&alert(s.waitAlert)}function pn(i){for(const f of re)typeof f.onStateChange=="function"&&f.onStateChange(x);L&&x!==g.UNVERIFIED&&requestAnimationFrame(()=>{Ie()}),t(8,le=x===g.VERIFIED)}function ht(){L&&Ie()}function Ie(i=20){if(C)if(de||(de=(ee?document.querySelector(ee):y==null?void 0:y.querySelector('input[type="submit"], button[type="submit"], button:not([type="button"]):not([type="reset"])'))||y),de){const f=parseInt(te,10)||12,m=de.getBoundingClientRect(),I=C.getBoundingClientRect(),G=document.documentElement.clientHeight,O=document.documentElement.clientWidth,F=L==="auto"?m.bottom+I.height+f+i>G:L==="top",w=Math.max(i,Math.min(O-i-I.width,m.left+m.width/2-I.width/2));if(F?t(9,C.style.top=`${m.top-(I.height+f)}px`,C):t(9,C.style.top=`${m.bottom+f}px`,C),t(9,C.style.left=`${w}px`,C),C.setAttribute("data-floating",F?"top":"bottom"),se){const Y=se.getBoundingClientRect();t(10,se.style.left=m.left-w+m.width/2-Y.width/2+"px",se)}}else v("unable to find floating anchor element")}async function En(i){if(!ie)throw new Error("Attribute verifyurl not set.");v("requesting server verification from",ie);const f={payload:i};if(E){const{blockedCountries:G,classifier:O,disableRules:F,email:w,expectedLanguages:Y,expectedCountries:Me,fields:ve,ipAddress:ke,text:In,timeZone:Ct}=mn();f.blockedCountries=G,f.classifier=O,f.disableRules=F,f.email=w===!1?void 0:gn(w),f.expectedCountries=Me,f.expectedLanguages=Y||(it?[it]:void 0),f.fields=ve===!1?void 0:bn(ve),f.ipAddress=ke===!1?void 0:ke||"auto",f.text=In,f.timeZone=Ct===!1?void 0:Ct||en()}const m=await fetch(ie,{body:JSON.stringify(f),headers:{"content-type":"application/json"},method:"POST"});if(m.status!==200)throw new Error(`Server responded with ${m.status}.`);const I=await m.json();if(I!=null&&I.payload&&t(6,fe=I.payload),_e("serververification",I),A&&I.classification==="BAD")throw new Error("SpamFilter returned negative classification.")}function Re(i){v("expire",i),J&&(clearTimeout(J),J=null),i<1?ot():J=setTimeout(ot,i)}function dt(i){v("floating",i),L!==i&&(t(9,C.style.left="",C),t(9,C.style.top="",C)),t(1,L=i===!0||i===""?"auto":i===!1||i==="false"?void 0:L),L?(u||t(0,u="onsubmit"),document.addEventListener("scroll",st),document.addEventListener("click",lt),window.addEventListener("resize",ht)):u==="onsubmit"&&t(0,u=void 0)}function gt(i){if(!i.algorithm)throw new Error("Invalid challenge. Property algorithm is missing.");if(i.signature===void 0)throw new Error("Invalid challenge. Property signature is missing.");if(!nt.includes(i.algorithm.toUpperCase()))throw new Error(`Unknown algorithm value. Allowed values: ${nt.join(", ")}`);if(!i.challenge||i.challenge.length<40)throw new Error("Challenge is too short. Min. 40 chars.");if(!i.salt||i.salt.length<10)throw new Error("Salt is too short. Min. 10 chars.")}async function mt(i){let f=null;if("Worker"in window){try{f=await vn(i,i.maxnumber)}catch(m){v(m)}if((f==null?void 0:f.number)!==void 0||"obfuscated"in i)return{data:i,solution:f}}if("obfuscated"in i){const m=await rn(i.obfuscated,i.key,i.maxnumber);return{data:i,solution:await m.promise}}return{data:i,solution:await Qt(i.challenge,i.salt,i.algorithm,i.maxnumber||X).promise}}async function vn(i,f=typeof b=="number"?b:X,m=Math.ceil(he)){const I=[];m=Math.min(16,Math.max(1,m));for(let F=0;F{const Y=w*G;return new Promise(Me=>{F.addEventListener("message",ve=>{if(ve.data)for(const ke of I)ke!==F&&ke.postMessage({type:"abort"});Me(ve.data)}),F.postMessage({payload:i,max:Y+G,start:Y,type:"work"})})}));for(const F of I)F.terminate();return O.find(F=>!!F)||null}async function pe(){if(!k){t(7,x=g.ERROR);return}const i=re.find(f=>f.constructor.pluginName==="obfuscation");if(!i||!("clarify"in i)){t(7,x=g.ERROR),v("Plugin `obfuscation` not found. Import `altcha/plugins/obfuscation` to load it.");return}if("clarify"in i&&typeof i.clarify=="function")return i.clarify()}function bt(i){i.obfuscated!==void 0&&t(24,k=i.obfuscated),i.auto!==void 0&&(t(0,u=i.auto),u==="onload"&&(k?pe():oe())),i.blockspam!==void 0&&t(16,A=!!i.blockspam),i.floatinganchor!==void 0&&t(20,ee=i.floatinganchor),i.delay!==void 0&&t(18,Z=i.delay),i.floatingoffset!==void 0&&t(21,te=i.floatingoffset),i.floating!==void 0&&dt(i.floating),i.expire!==void 0&&(Re(i.expire),t(19,T=i.expire)),i.challenge&&(gt(i.challenge),o=i.challenge),i.challengeurl!==void 0&&t(15,_=i.challengeurl),i.debug!==void 0&&t(17,q=!!i.debug),i.hidefooter!==void 0&&t(2,N=!!i.hidefooter),i.hidelogo!==void 0&&t(3,D=!!i.hidelogo),i.maxnumber!==void 0&&t(22,X=+i.maxnumber),i.mockerror!==void 0&&t(23,V=!!i.mockerror),i.name!==void 0&&t(4,ne=i.name),i.refetchonexpire!==void 0&&t(25,S=!!i.refetchonexpire),i.spamfilter!==void 0&&t(26,E=typeof i.spamfilter=="object"?i.spamfilter:!!i.spamfilter),i.strings&&t(44,l=i.strings),i.test!==void 0&&t(27,b=typeof i.test=="number"?i.test:!!i.test),i.verifyurl!==void 0&&t(28,ie=i.verifyurl),i.workers!==void 0&&t(29,he=+i.workers),i.workerurl!==void 0&&t(30,ye=i.workerurl)}function yt(){return{auto:u,blockspam:A,challengeurl:_,debug:q,delay:Z,expire:T,floating:L,floatinganchor:ee,floatingoffset:te,hidefooter:N,hidelogo:D,name:ne,maxnumber:X,mockerror:V,obfuscated:k,refetchonexpire:S,spamfilter:E,strings:s,test:b,verifyurl:ie,workers:he,workerurl:ye}}function _t(){return de}function kn(i){return re.find(f=>f.constructor.pluginName===i)}function wt(){return x}function Ee(i=g.UNVERIFIED,f=null){J&&(clearTimeout(J),J=null),t(8,le=!1),t(5,we=f),t(6,fe=null),t(7,x=i)}function pt(i){de=i}function Et(i,f=null){t(7,x=i),t(5,we=f)}async function oe(){return Ee(g.VERIFYING),await new Promise(i=>setTimeout(i,Z||0)),dn().then(i=>(gt(i),v("challenge",i),mt(i))).then(({data:i,solution:f})=>{if(v("solution",f),"challenge"in i&&f&&!("clearText"in f))if((f==null?void 0:f.number)!==void 0){if(ie)return En(rt(i,f));t(6,fe=rt(i,f)),v("payload",fe)}else throw v("Unable to find a solution. Ensure that the 'maxnumber' attribute is greater than the randomly generated number."),new Error("Unexpected result returned.")}).then(()=>{t(7,x=g.VERIFIED),v("verified"),Ut().then(()=>{_e("verified",{payload:fe})})}).catch(i=>{v(i),t(7,x=g.ERROR),t(5,we=i.message)})}function Cn(){le=this.checked,t(8,le)}function xn(i){Ce[i?"unshift":"push"](()=>{se=i,t(10,se)})}function An(i){Ce[i?"unshift":"push"](()=>{C=i,t(9,C)})}return n.$$set=i=>{"auto"in i&&t(0,u=i.auto),"blockspam"in i&&t(16,A=i.blockspam),"challengeurl"in i&&t(15,_=i.challengeurl),"challengejson"in i&&t(31,B=i.challengejson),"debug"in i&&t(17,q=i.debug),"delay"in i&&t(18,Z=i.delay),"expire"in i&&t(19,T=i.expire),"floating"in i&&t(1,L=i.floating),"floatinganchor"in i&&t(20,ee=i.floatinganchor),"floatingoffset"in i&&t(21,te=i.floatingoffset),"hidefooter"in i&&t(2,N=i.hidefooter),"hidelogo"in i&&t(3,D=i.hidelogo),"name"in i&&t(4,ne=i.name),"maxnumber"in i&&t(22,X=i.maxnumber),"mockerror"in i&&t(23,V=i.mockerror),"obfuscated"in i&&t(24,k=i.obfuscated),"plugins"in i&&t(32,P=i.plugins),"refetchonexpire"in i&&t(25,S=i.refetchonexpire),"spamfilter"in i&&t(26,E=i.spamfilter),"strings"in i&&t(33,a=i.strings),"test"in i&&t(27,b=i.test),"verifyurl"in i&&t(28,ie=i.verifyurl),"workers"in i&&t(29,he=i.workers),"workerurl"in i&&t(30,ye=i.workerurl),"$$scope"in i&&t(45,d=i.$$scope)},n.$$.update=()=>{n.$$.dirty[0]&32768|n.$$.dirty[1]&1&&t(12,r=B&&new URL(B,location.origin).host.endsWith(".altcha.org")&&!!(_!=null&&_.includes("apiKey=ckey_"))),n.$$.dirty[1]&1&&(o=B?et(B):void 0),n.$$.dirty[1]&4&&t(44,l=a?et(a):{}),n.$$.dirty[1]&8192&&t(11,s={ariaLinkLabel:Ke,error:"Verification failed. Try again later.",expired:"Verification expired. Try again.",footer:`Protected by ALTCHA`,label:"I'm not a robot",verified:"Verified",verifying:"Verifying...",waitAlert:"Verifying... please wait.",...l}),n.$$.dirty[0]&192&&_e("statechange",{payload:fe,state:x}),n.$$.dirty[0]&32&&wn(),n.$$.dirty[0]&128&&pn()},[u,L,N,D,ne,we,fe,x,le,C,se,s,r,_n,at,_,A,q,Z,T,ee,te,X,V,k,S,E,b,ie,he,ye,B,P,a,pe,bt,yt,_t,kn,wt,Ee,pt,Et,oe,l,d,h,Cn,xn,An]}class tt extends Xt{constructor(e){super(),Yt(this,e,an,un,At,{auto:0,blockspam:16,challengeurl:15,challengejson:31,debug:17,delay:18,expire:19,floating:1,floatinganchor:20,floatingoffset:21,hidefooter:2,hidelogo:3,name:4,maxnumber:22,mockerror:23,obfuscated:24,plugins:32,refetchonexpire:25,spamfilter:26,strings:33,test:27,verifyurl:28,workers:29,workerurl:30,clarify:34,configure:35,getConfiguration:36,getFloatingAnchor:37,getPlugin:38,getState:39,reset:40,setFloatingAnchor:41,setState:42,verify:43},null,[-1,-1,-1])}get auto(){return this.$$.ctx[0]}set auto(e){this.$$set({auto:e}),p()}get blockspam(){return this.$$.ctx[16]}set blockspam(e){this.$$set({blockspam:e}),p()}get challengeurl(){return this.$$.ctx[15]}set challengeurl(e){this.$$set({challengeurl:e}),p()}get challengejson(){return this.$$.ctx[31]}set challengejson(e){this.$$set({challengejson:e}),p()}get debug(){return this.$$.ctx[17]}set debug(e){this.$$set({debug:e}),p()}get delay(){return this.$$.ctx[18]}set delay(e){this.$$set({delay:e}),p()}get expire(){return this.$$.ctx[19]}set expire(e){this.$$set({expire:e}),p()}get floating(){return this.$$.ctx[1]}set floating(e){this.$$set({floating:e}),p()}get floatinganchor(){return this.$$.ctx[20]}set floatinganchor(e){this.$$set({floatinganchor:e}),p()}get floatingoffset(){return this.$$.ctx[21]}set floatingoffset(e){this.$$set({floatingoffset:e}),p()}get hidefooter(){return this.$$.ctx[2]}set hidefooter(e){this.$$set({hidefooter:e}),p()}get hidelogo(){return this.$$.ctx[3]}set hidelogo(e){this.$$set({hidelogo:e}),p()}get name(){return this.$$.ctx[4]}set name(e){this.$$set({name:e}),p()}get maxnumber(){return this.$$.ctx[22]}set maxnumber(e){this.$$set({maxnumber:e}),p()}get mockerror(){return this.$$.ctx[23]}set mockerror(e){this.$$set({mockerror:e}),p()}get obfuscated(){return this.$$.ctx[24]}set obfuscated(e){this.$$set({obfuscated:e}),p()}get plugins(){return this.$$.ctx[32]}set plugins(e){this.$$set({plugins:e}),p()}get refetchonexpire(){return this.$$.ctx[25]}set refetchonexpire(e){this.$$set({refetchonexpire:e}),p()}get spamfilter(){return this.$$.ctx[26]}set spamfilter(e){this.$$set({spamfilter:e}),p()}get strings(){return this.$$.ctx[33]}set strings(e){this.$$set({strings:e}),p()}get test(){return this.$$.ctx[27]}set test(e){this.$$set({test:e}),p()}get verifyurl(){return this.$$.ctx[28]}set verifyurl(e){this.$$set({verifyurl:e}),p()}get workers(){return this.$$.ctx[29]}set workers(e){this.$$set({workers:e}),p()}get workerurl(){return this.$$.ctx[30]}set workerurl(e){this.$$set({workerurl:e}),p()}get clarify(){return this.$$.ctx[34]}get configure(){return this.$$.ctx[35]}get getConfiguration(){return this.$$.ctx[36]}get getFloatingAnchor(){return this.$$.ctx[37]}get getPlugin(){return this.$$.ctx[38]}get getState(){return this.$$.ctx[39]}get reset(){return this.$$.ctx[40]}get setFloatingAnchor(){return this.$$.ctx[41]}get setState(){return this.$$.ctx[42]}get verify(){return this.$$.ctx[43]}}customElements.define("altcha-widget",Wt(tt,{auto:{},blockspam:{},challengeurl:{},challengejson:{},debug:{type:"Boolean"},delay:{},expire:{},floating:{},floatinganchor:{},floatingoffset:{},hidefooter:{type:"Boolean"},hidelogo:{type:"Boolean"},name:{},maxnumber:{},mockerror:{type:"Boolean"},obfuscated:{},plugins:{},refetchonexpire:{type:"Boolean"},spamfilter:{type:"Boolean"},strings:{},test:{type:"Boolean"},verifyurl:{},workers:{},workerurl:{}},["default"],["clarify","configure","getConfiguration","getFloatingAnchor","getPlugin","getState","reset","setFloatingAnchor","setState","verify"],!1)),globalThis.altchaCreateWorker=n=>new Worker(new URL(n||"./worker.js",typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:U&&U.tagName.toUpperCase()==="SCRIPT"&&U.src||new URL("altcha.umd.cjs",document.baseURI).href)),globalThis.altchaPlugins=globalThis.altchaPlugins||[],H.Altcha=tt,Object.defineProperty(H,Symbol.toStringTag,{value:"Module"})}); diff --git a/src/Altcha.svelte b/src/Altcha.svelte index 0601684..2955a83 100644 --- a/src/Altcha.svelte +++ b/src/Altcha.svelte @@ -77,7 +77,8 @@ let state: State = State.UNVERIFIED; $: isFreeSaaS = - !!challengeurl?.includes('.altcha.org') && + challengejson && + new URL(challengejson, location.origin).host.endsWith('.altcha.org') && !!challengeurl?.includes('apiKey=ckey_'); $: parsedChallenge = challengejson ? parseJsonAttribute(challengejson)