@private-captcha/private-captcha-js-core 0.0.27 → 0.0.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/index.js +18 -18
  2. package/index.js.map +3 -3
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -1,31 +1,31 @@
1
- var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",G=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(Q=0;Q<b.length;Q++)G[b.charCodeAt(Q)]=Q;var Q,se=function(o){var e=new Uint8Array(o),t,i=e.length,r="";for(t=0;t<i;t+=3)r+=b[e[t]>>2],r+=b[(e[t]&3)<<4|e[t+1]>>4],r+=b[(e[t+1]&15)<<2|e[t+2]>>6],r+=b[e[t+2]&63];return i%3===2?r=r.substring(0,r.length-1)+"=":i%3===1&&(r=r.substring(0,r.length-2)+"=="),r},ne=function(o){var e=o.length*.75,t=o.length,i,r=0,s,n,a,A;o[o.length-1]==="="&&(e--,o[o.length-2]==="="&&e--);var I=new ArrayBuffer(e),B=new Uint8Array(I);for(i=0;i<t;i+=4)s=G[o.charCodeAt(i)],n=G[o.charCodeAt(i+1)],a=G[o.charCodeAt(i+2)],A=G[o.charCodeAt(i+3)],B[r++]=s<<2|n>>4,B[r++]=(n&15)<<4|a>>2,B[r++]=(a&3)<<6|A&63;return I};function T(o,e){return(o[e]|o[e+1]<<8|o[e+2]<<16|o[e+3]<<24)>>>0}var ae=128,fe=[408,409,429],Ie=5e3,he=3e4;async function le(o,e,t={}){try{let i=await Be(`${o}?sitekey=${e}`,{fetchOptions:{headers:[["x-pc-captcha-version","1"]],mode:"cors"},maxAttempts:t.attempts??5,initialDelay:800,maxDelay:6e3,timeoutMs:t.timeout??Ie,globalTimeoutMs:t.globalTimeout??he});if(i.ok){let r=await i.text(),s=i.headers.get("X-PC-Widget-Notice");return{data:r,notice:s}}else{let r=await i.json();if(r&&r.error)throw new Error(r.error)}}catch(i){throw console.error("[privatecaptcha]",i),i}throw new Error("Internal error")}function we(o,e){return new Promise((t,i)=>{let r=setTimeout(t,o);e&&e.addEventListener("abort",()=>{clearTimeout(r),i(e.reason||new Error("Aborted"))},{once:!0})})}async function Be(o,e={}){let{fetchOptions:t={},maxAttempts:i=5,initialDelay:r=800,maxDelay:s=6e3,timeoutMs:n=Ie,globalTimeoutMs:a=he}=e,A=new AbortController,{signal:I}=A,B=setTimeout(()=>A.abort(new Error("Fetch timed out")),a),l=null;for(let F=0;F<i;F++){if(F>0){let w=Math.min(r*Math.pow(2,F),s);try{await we(w,I)}catch(Y){if(clearTimeout(B),I.aborted){l="Global time out";let oe=new Error("Fetch timed out");throw oe.internalError=l,oe}throw Y}}let U=new AbortController,{signal:J}=U,re=setTimeout(()=>U.abort(new Error("Fetch timed out")),n),j=()=>U.abort(new Error("Fetch timed out"));I.addEventListener("abort",j,{once:!0});try{let w=await fetch(o,{...t,signal:J});if(clearTimeout(re),I.removeEventListener("abort",j),w.ok)return clearTimeout(B),w;if(l=`HTTP ${w.status}`,console.warn("[privatecaptcha]",`HTTP request failed. url=${o} status=${w.status}`),w.status>=400&&w.status<500&&!fe.includes(w.status))break;continue}catch(w){if(clearTimeout(re),I.removeEventListener("abort",j),I.aborted){clearTimeout(B),l="Global time out";let Y=new Error("Fetch timed out");throw Y.internalError=l,Y}if(J.aborted){l="Fetch timed out",console.warn("[privatecaptcha]",`Fetch attempt ${F+1} timed out`);continue}l=w.message||String(w),console.error("[privatecaptcha]",w)}}clearTimeout(B);let Z=new Error("Captcha puzzle load failed after maximum retry attempts");throw Z.internalError=l,Z}function me(o,e){return BigInt(T(o,e))+(BigInt(T(o,e+4))<<32n)}var M=class{constructor(e){this.puzzleBuffer=null,this.ID=null,this.difficulty=null,this.solutionsCount=null,this.expirationTimestamp=null,this.userData=null,this.signature=null,this.parse(e),this.rawData=e}parse(e){let t=e.split(".");if(t.length!==2)throw new Error(`Invalid amount of parts: ${t.length}`);let i=t[0];this.signature=t[1];let r=new Uint8Array(ne(i)),s=0;s+=1,s+=16,this.ID=me(r,s),s+=8,this.difficulty=r[s],s+=1,this.solutionsCount=r[s],s+=1,this.expirationTimestamp=T(r,s),s+=4,s+=4;let n=16;this.userData=r.slice(s,s+n),s+=n;let a=r;if(a.length<ae){let A=new Uint8Array(ae);A.set(a),this.puzzleBuffer=A}else this.puzzleBuffer=a}isZero(){return this.ID===0n&&this.difficulty===0&&this.expirationTimestamp===0}expirationMillis(){return this.expirationTimestamp?new Date(this.expirationTimestamp*1e3)-new Date:0}};function W(o){let e=new Blob([o],{type:"text/javascript"}),t=URL.createObjectURL(e),i=new Worker(t);return URL.revokeObjectURL(t),i}function $(){return W('var R=Object.create;var j=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var y=(B,t)=>()=>{try{return t||B((t={exports:{}}).exports,t),t.exports}catch(e){throw t=0,e}};var N=(B,t,e,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of W(t))!L.call(B,o)&&o!==e&&j(B,o,{get:()=>t[o],enumerable:!(n=O(t,o))||n.enumerable});return B};var X=(B,t,e)=>(e=B!=null?R(K(B)):{},N(t||!B||!B.__esModule?j(e,"default",{value:B,enumerable:!0}):e,B));var I=y((aB,k)=>{var Z="Input must be an string, Buffer or Uint8Array";function J(B){let t;if(B instanceof Uint8Array)t=B;else if(typeof B=="string")t=new TextEncoder().encode(B);else throw new Error(Z);return t}function Q(B){return Array.prototype.map.call(B,function(t){return(t<16?"0":"")+t.toString(16)}).join("")}function m(B){return(4294967296+B).toString(16).substring(1)}function Y(B,t,e){let n=`\n`+B+" = ";for(let o=0;o<t.length;o+=2){if(e===32)n+=m(t[o]).toUpperCase(),n+=" ",n+=m(t[o+1]).toUpperCase();else if(e===64)n+=m(t[o+1]).toUpperCase(),n+=m(t[o]).toUpperCase();else throw new Error("Invalid size "+e);o%6===4?n+=`\n`+new Array(B.length+4).join(" "):o<t.length-2&&(n+=" ")}console.log(n)}function BB(B,t,e){let n=new Date().getTime(),o=new Uint8Array(t);for(let s=0;s<t;s++)o[s]=s%256;let i=new Date().getTime();console.log("Generated random input in "+(i-n)+"ms"),n=i;for(let s=0;s<e;s++){let l=B(o),c=new Date().getTime(),u=c-n;n=c,console.log("Hashed in "+u+"ms: "+l.substring(0,20)+"..."),console.log(Math.round(t/(1<<20)/(u/1e3)*100)/100+" MB PER SECOND")}}k.exports={normalizeInput:J,toHex:Q,debugPrint:Y,testSpeed:BB}});var T=y((cB,v)=>{var $=I();function d(B,t,e){let n=B[t]+B[e],o=B[t+1]+B[e+1];n>=4294967296&&o++,B[t]=n,B[t+1]=o}function _(B,t,e,n){let o=B[t]+e;e<0&&(o+=4294967296);let i=B[t+1]+n;o>=4294967296&&i++,B[t]=o,B[t+1]=i}function E(B,t){return B[t]^B[t+1]<<8^B[t+2]<<16^B[t+3]<<24}function h(B,t,e,n,o,i){let s=w[o],l=w[o+1],c=w[i],u=w[i+1];d(r,B,t),_(r,B,s,l);let A=r[n]^r[B],f=r[n+1]^r[B+1];r[n]=f,r[n+1]=A,d(r,e,n),A=r[t]^r[e],f=r[t+1]^r[e+1],r[t]=A>>>24^f<<8,r[t+1]=f>>>24^A<<8,d(r,B,t),_(r,B,c,u),A=r[n]^r[B],f=r[n+1]^r[B+1],r[n]=A>>>16^f<<16,r[n+1]=f>>>16^A<<16,d(r,e,n),A=r[t]^r[e],f=r[t+1]^r[e+1],r[t]=f>>>31^A<<1,r[t+1]=A>>>31^f<<1}var S=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),eB=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],a=new Uint8Array(eB.map(function(B){return B*2})),r=new Uint32Array(32),w=new Uint32Array(32);function M(B,t){let e=0;for(e=0;e<16;e++)r[e]=B.h[e],r[e+16]=S[e];for(r[24]=r[24]^B.t,r[25]=r[25]^B.t/4294967296,t&&(r[28]=~r[28],r[29]=~r[29]),e=0;e<32;e++)w[e]=E(B.b,4*e);for(e=0;e<12;e++)h(0,8,16,24,a[e*16+0],a[e*16+1]),h(2,10,18,26,a[e*16+2],a[e*16+3]),h(4,12,20,28,a[e*16+4],a[e*16+5]),h(6,14,22,30,a[e*16+6],a[e*16+7]),h(0,10,20,30,a[e*16+8],a[e*16+9]),h(2,12,22,24,a[e*16+10],a[e*16+11]),h(4,14,16,26,a[e*16+12],a[e*16+13]),h(6,8,18,28,a[e*16+14],a[e*16+15]);for(e=0;e<16;e++)B.h[e]=B.h[e]^r[e]^r[e+16]}var p=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function z(B,t,e,n){if(B===0||B>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(t&&t.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");if(e&&e.length!==16)throw new Error("Illegal salt, expected Uint8Array with length is 16");if(n&&n.length!==16)throw new Error("Illegal personal, expected Uint8Array with length is 16");let o={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:B};p.fill(0),p[0]=B,t&&(p[1]=t.length),p[2]=1,p[3]=1,e&&p.set(e,32),n&&p.set(n,48);for(let i=0;i<16;i++)o.h[i]=S[i]^E(p,i*4);return t&&(b(o,t),o.c=128),o}function b(B,t){for(let e=0;e<t.length;e++)B.c===128&&(B.t+=B.c,M(B,!1),B.c=0),B.b[B.c++]=t[e]}function H(B){for(B.t+=B.c;B.c<128;)B.b[B.c++]=0;M(B,!0);let t=new Uint8Array(B.outlen);for(let e=0;e<B.outlen;e++)t[e]=B.h[e>>2]>>8*(e&3);return t}function C(B,t,e,n,o){e=e||64,B=$.normalizeInput(B),n&&(n=$.normalizeInput(n)),o&&(o=$.normalizeInput(o));let i=z(e,t,n,o);return b(i,B),H(i)}function tB(B,t,e,n,o){let i=C(B,t,e,n,o);return $.toHex(i)}v.exports={blake2b:C,blake2bHex:tB,blake2bInit:z,blake2bUpdate:b,blake2bFinal:H}});var U="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AEGFoYCAAGoxAABCKIaEIABBhqGAgABqMQAAQjCGIABBh6GAgABqMQAAQjiGhIQgAEGAoYCAAGoxAACENwMAIABBCGoiAA0ACwsLAEEAKAKgooCAAAvRAwMCfwF+AX8jgICAgABBgAFrIgQkgICAgABBACEFIARBACkDoKGAgAA3AwAgBEEAKQOooYCAADcDCCAEQQApA7ChgIAANwMQIARBACkDuKGAgAA3AxggBEEAKQPAoYCAADcDICAEQQApA8ihgIAANwMoIARBACkD0KGAgAA3AzAgBEEAKQPYoYCAADcDOCAEQQApA+ChgIAANwNAIARBACkD6KGAgAA3A0ggBEEAKQPwoYCAADcDUCAEQQApA/ihgIAANwNYIARBACkDgKKAgAA3A2AgBEEAKQOIooCAADcDaCAEQQApA5CigIAANwNwAkAgA0UNACAEIAIgAkEQeHNBgP6DeHFBCHYgAkEIeHOtQiCGQQApA5iigIAAQoD+//8PgyAAQf8Bca2EIgaENwN4QQEhBQJAIARBABCDgICAACABTQ0AIANBf2ohB0EAIQUDQAJAIAcgBUcNAEEAIQUMAwsgBCACIAVqQQFqIgAgAEEQeHNBgP6DeHFBCHYgAEEIeHOtQiCGIAaENwN4IAVBAWoiACEFIARBABCDgICAACABSw0ACyACIABqIQIgACADSSEFC0EAIAI2AqCigIAACyAEQYABaiSAgICAACAFCw==";var g=X(T(),1);function nB(B,t){return(B[t]|B[t+1]<<8|B[t+2]<<16|B[t+3]<<24)>>>0}function D(B){return Math.pow(2,(255.999-B)/8)>>>0}function P(B,t,e,n,o){let i=B.length;n&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${t} puzzleID=${e} length=${i}`),B[i-8]=e;let s=new Uint8Array(32);for(let l=0;l<256;l++){B[i-1-3]=l;for(let c=0;c<256;c++){B[i-1-2]=c;for(let u=0;u<256;u++){B[i-1-1]=u;for(let A=0;A<256;A++){B[i-1-0]=A,s.fill(0),o(s.length).update(B).digest(s);let f=nB(s,0);if(f<=t)return n&&console.debug(`[privatecaptcha][worker] found solution. prefix=${f} threshold=${t}`),B.subarray(i-8)}}}}return new Uint8Array(0)}var G=65536,oB=4294967296;function rB(B){let t=atob(B),e=new Uint8Array(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e}function iB(B){let t=(0,g.blake2bInit)(B);return{update(e){return(0,g.blake2bUpdate)(t,e),this},digest(e){return e.set((0,g.blake2bFinal)(t)),e}}}async function F(B,t=globalThis.WebAssembly){if(t!=null&&t.instantiate)try{let{instance:e}=await t.instantiate(rB(U)),n=e.exports;return new Uint8Array(n.memory.buffer).set(B,n.puzzle_ptr()),n.prepare_puzzle(),{kind:"scalar",wasm:!0,async solve(o,i){for(let s=0;s<oB;s+=G){if(n.solve_batch(i,o,s,G)){let l=n.get_solution_nonce()>>>0,c=B.slice(120,128);return c[0]=i,c[4]=l>>>24,c[5]=l>>>16,c[6]=l>>>8,c[7]=l,c}await new Promise(l=>setTimeout(l,0))}return new Uint8Array(0)}}}catch(e){console.warn("[privatecaptcha][worker] scalar WASM unavailable",e)}return{kind:"js",wasm:!1,async solve(e,n,o){return P(B,e,n,o,iB).slice()}}}var x=null,q=null;self.onmessage=async B=>{let{command:t,argument:e}=B.data;switch(t){case"init":{let{id:n,buffer:o}=e;q=n,x=await F(o),self.postMessage({command:"init"});break}case"solve":{let{difficulty:n,puzzleIndex:o,debug:i}=e,s=D(n),l=await x.solve(s,o,i);self.postMessage({command:"solve",argument:{id:q,solution:l,wasm:x.wasm}});break}default:break}};\n')}var ke=1,P=class{constructor(e={},t=!1){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._workers=[],this._debug=t,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1,this._callbacks=Object.assign({workersReady:()=>0,workerError:()=>0,workStarted:()=>0,workCompleted:()=>0,progress:()=>0},e)}init(e,t){if(!e)return;if(e.isZero()){this._debug&&console.debug("[privatecaptcha][pool] skipping initializing workers"),setTimeout(()=>this._callbacks.workersReady(t),0);return}let i=4,r=0,s=[],n=this,a=e.ID,A=e.puzzleBuffer;for(let I=0;I<i;I++){let B=new $;B.onerror=l=>this._callbacks.workerError(l),B.onmessage=function(l){if(!l.data)return;switch(l.data.command){case"init":r++,r===i&&n._callbacks.workersReady(t);break;case"solve":let{id:F,solution:U,wasm:J}=l.data.argument;n.onSolutionFound(F,U,J);break;case"error":l.data.error&&n._callbacks.workerError(l.data.error);break;default:break}},s.push(B)}this._workers=s,this._debug&&console.debug(`[privatecaptcha][pool] initializing workers. count=${this._workers.length}`);for(let I=0;I<this._workers.length;I++)this._workers[I].postMessage({command:"init",argument:{id:a,buffer:A}})}solve(e){if(!e)return;this._debug&&console.debug("[privatecaptcha][pool] starting solving"),this._solutions=[],this._solutionsCount=e.solutionsCount,this._puzzleID=e.ID,this._timeStarted=Date.now(),this._timeFinished=null;let t=e.isZero()||e.solutionsCount===0,i=null;for(let r=0;r<e.solutionsCount;r++)t?(i||(i=new Uint8Array(8)),this._solutions.push(i)):this._workers[r%this._workers.length].postMessage({command:"solve",argument:{difficulty:e.difficulty,puzzleIndex:r,debug:this._debug}});this._callbacks.workStarted(),t&&setTimeout(()=>this.onWorkCompleted(),0)}stop(){let e=this._workers.length;for(let t=0;t<e;t++)this._workers[t].terminate();this._workers=[],this._debug&&console.debug("[privatecaptcha][pool] terminated the workers. count="+e)}reset(){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1}onSolutionFound(e,t,i){if(this._debug&&console.debug("[privatecaptcha][pool] solution found. length="+t.length),e!=this._puzzleID){console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${e} expected=${this._puzzleID}`);return}this._solutions.push(t),i&&(this._anyWasm=!0);let r=this._solutions.length;this._callbacks.progress(r*100/this._solutionsCount),r==this._solutionsCount&&this.onWorkCompleted()}onWorkCompleted(){this._timeFinished=Date.now(),this._callbacks.workCompleted()}serializeSolutions(e){this._debug&&console.debug("[privatecaptcha][pool] serializing solutions. count="+this._solutions.length);let t=this._solutions.reduce((a,A)=>a+A.length,0),i=this.writeMetadata(e),r=i.length,s=new Uint8Array(r+t),n=0;s.set(i,n),n+=i.length;for(let a=0;a<this._solutions.length;a++)s.set(this._solutions[a],n),n+=this._solutions[a].length;return se(s)}writeMetadata(e){let i=new Uint8Array(7),r=0;i[r++]=ke&255,i[r++]=e&255;let s=this._anyWasm?1:0;i[r++]=s&255;let n=this.elapsedMillis();return i[r++]=n&255,i[r++]=n>>8&255,i[r++]=n>>16&255,i[r++]=n>>24&255,i}elapsedMillis(){return this._timeStarted&&this._timeFinished?this._timeFinished-this._timeStarted:0}};var N=typeof HTMLElement<"u"?HTMLElement:Object;var O=class extends N{constructor(){super(),this._circumference=0,this._root=this.attachShadow({mode:"open"})}connectedCallback(){let e=this.getAttribute("stroke"),t=100,i=t/2,r=i-e/2;this._circumference=r*2*Math.PI,this._root.innerHTML=`
2
- <svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 ${t} ${t}">
1
+ var S="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",M=typeof Uint8Array>"u"?[]:new Uint8Array(256);for(_=0;_<S.length;_++)M[S.charCodeAt(_)]=_;var _,sA=function(r){var A=new Uint8Array(r),e,t=A.length,i="";for(e=0;e<t;e+=3)i+=S[A[e]>>2],i+=S[(A[e]&3)<<4|A[e+1]>>4],i+=S[(A[e+1]&15)<<2|A[e+2]>>6],i+=S[A[e+2]&63];return t%3===2?i=i.substring(0,i.length-1)+"=":t%3===1&&(i=i.substring(0,i.length-2)+"=="),i},gA=function(r){var A=r.length*.75,e=r.length,t,i=0,o,I,s,g;r[r.length-1]==="="&&(A--,r[r.length-2]==="="&&A--);var n=new ArrayBuffer(A),p=new Uint8Array(n);for(t=0;t<e;t+=4)o=M[r.charCodeAt(t)],I=M[r.charCodeAt(t+1)],s=M[r.charCodeAt(t+2)],g=M[r.charCodeAt(t+3)],p[i++]=o<<2|I>>4,p[i++]=(I&15)<<4|s>>2,p[i++]=(s&3)<<6|g&63;return n};function V(r,A){return(r[A]|r[A+1]<<8|r[A+2]<<16|r[A+3]<<24)>>>0}var W=128,aA=W*2,dA=47,EA=48,kA=1,yA=2,v=0,y=1,DA=[408,409,429],hA=5e3,CA=3e4;async function lA(r,A,e={}){try{let t=r.includes("?")?"&":"?",i=await mA(`${r}${t}sitekey=${encodeURIComponent(A)}`,{fetchOptions:{headers:[["x-pc-captcha-version","2"]],mode:"cors"},maxAttempts:e.attempts??5,initialDelay:800,maxDelay:6e3,timeoutMs:e.timeout??hA,globalTimeoutMs:e.globalTimeout??CA});if(i.ok){let o=await i.text(),I=i.headers.get("X-PC-Widget-Notice");return{data:o,notice:I}}else{let o=await i.json();if(o&&o.error)throw new Error(o.error)}}catch(t){throw console.error("[privatecaptcha]",t),t}throw new Error("Internal error")}function FA(r,A){return new Promise((e,t)=>{let i=setTimeout(e,r);A&&A.addEventListener("abort",()=>{clearTimeout(i),t(A.reason||new Error("Aborted"))},{once:!0})})}async function mA(r,A={}){let{fetchOptions:e={},maxAttempts:t=5,initialDelay:i=800,maxDelay:o=6e3,timeoutMs:I=hA,globalTimeoutMs:s=CA}=A,g=new AbortController,{signal:n}=g,p=setTimeout(()=>g.abort(new Error("Fetch timed out")),s),k=null;for(let b=0;b<t;b++){if(b>0){let u=Math.min(i*Math.pow(2,b),o);try{await FA(u,n)}catch(L){if(clearTimeout(p),n.aborted){k="Global time out";let nA=new Error("Fetch timed out");throw nA.internalError=k,nA}throw L}}let X=new AbortController,{signal:oA}=X,IA=setTimeout(()=>X.abort(new Error("Fetch timed out")),I),Z=()=>X.abort(new Error("Fetch timed out"));n.addEventListener("abort",Z,{once:!0});try{let u=await fetch(r,{...e,signal:oA});if(clearTimeout(IA),n.removeEventListener("abort",Z),u.ok)return clearTimeout(p),u;if(k=`HTTP ${u.status}`,console.warn("[privatecaptcha]",`HTTP request failed. url=${r} status=${u.status}`),u.status>=400&&u.status<500&&!DA.includes(u.status))break;continue}catch(u){if(clearTimeout(IA),n.removeEventListener("abort",Z),n.aborted){clearTimeout(p),k="Global time out";let L=new Error("Fetch timed out");throw L.internalError=k,L}if(oA.aborted){k="Fetch timed out",console.warn("[privatecaptcha]",`Fetch attempt ${b+1} timed out`);continue}k=u.message||String(u),console.error("[privatecaptcha]",u)}}clearTimeout(p);let x=new Error("Captcha puzzle load failed after maximum retry attempts");throw x.internalError=k,x}function SA(r,A){return BigInt(V(r,A))+(BigInt(V(r,A+4))<<32n)}var R=class{constructor(A){this.puzzleBuffer=null,this.puzzleBytes=null,this.version=null,this.challenge=null,this.ID=null,this.difficulty=null,this.solutionsCount=null,this.expirationTimestamp=null,this.userData=null,this.signature=null,this.parse(A),this.rawData=A}parse(A){let e=A.split(".");if(e.length!==2)throw new Error(`Invalid amount of parts: ${e.length}`);let t=e[0];if(this.signature=e[1],t.length>Math.ceil(aA/3)*4)throw new Error(`Invalid puzzle body length: ${t.length}`);let i=new Uint8Array(gA(t));if(i.length<1)throw new Error("Puzzle body is empty");this.version=i[0];let o,I=1;switch(this.version){case kA:o=dA,this.challenge=v;break;case yA:if(o=EA,i.length<I+1)throw new Error(`Invalid puzzle body length: ${i.length}`);if(this.challenge=i[I++],this.challenge!==v&&this.challenge!==y)throw new Error(`Unknown puzzle challenge: ${this.challenge}`);break;default:throw new Error(`Unknown puzzle version: ${this.version}`)}if(i.length<o||i.length>aA)throw new Error(`Invalid puzzle body length: ${i.length}`);this.puzzleBytes=i.slice(),I+=16,this.ID=SA(i,I),I+=8,this.difficulty=i[I],I+=1,this.solutionsCount=i[I],I+=1,this.expirationTimestamp=V(i,I),I+=4;let s=i.length-I,g=I;I+=4,this.userData=i.slice(g),I+=s-4;let n=this.puzzleBytes;if(n.length<W){let p=new Uint8Array(W);p.set(n),this.puzzleBuffer=p}else this.puzzleBuffer=n}isZero(){return this.ID===0n&&this.difficulty===0&&this.expirationTimestamp===0}expirationMillis(){return this.expirationTimestamp?new Date(this.expirationTimestamp*1e3)-new Date:0}};function $(r){let A=new Blob([r],{type:"text/javascript"}),e=URL.createObjectURL(A),t=new Worker(e);return URL.revokeObjectURL(e),t}function AA(){return $('var ue=Object.create;var st=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,de=Object.getPrototypeOf,$t=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var it=(t,e,n)=>e in t?st(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ct=(t,e)=>{for(var n in e||(e={}))$t.call(e,n)&&it(t,n,e[n]);if(kt)for(var n of kt(e))we.call(e,n)&&it(t,n,e[n]);return t};var Ut=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}};var ye=(t,e,n,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let A of pe(e))!$t.call(t,A)&&A!==n&&st(t,A,{get:()=>e[A],enumerable:!(o=he(e,A))||o.enumerable});return t};var xe=(t,e,n)=>(n=t!=null?ue(de(t)):{},ye(e||!t||!t.__esModule?st(n,"default",{value:t,enumerable:!0}):n,t));var g=(t,e,n)=>it(t,typeof e!="symbol"?e+"":e,n);var _t=Ut((An,Ht)=>{var me="Input must be an string, Buffer or Uint8Array";function be(t){let e;if(t instanceof Uint8Array)e=t;else if(typeof t=="string")e=new TextEncoder().encode(t);else throw new Error(me);return e}function Ee(t){return Array.prototype.map.call(t,function(e){return(e<16?"0":"")+e.toString(16)}).join("")}function Q(t){return(4294967296+t).toString(16).substring(1)}function ke(t,e,n){let o=`\n`+t+" = ";for(let A=0;A<e.length;A+=2){if(n===32)o+=Q(e[A]).toUpperCase(),o+=" ",o+=Q(e[A+1]).toUpperCase();else if(n===64)o+=Q(e[A+1]).toUpperCase(),o+=Q(e[A]).toUpperCase();else throw new Error("Invalid size "+n);A%6===4?o+=`\n`+new Array(t.length+4).join(" "):A<e.length-2&&(o+=" ")}console.log(o)}function $e(t,e,n){let o=new Date().getTime(),A=new Uint8Array(e);for(let i=0;i<e;i++)A[i]=i%256;let r=new Date().getTime();console.log("Generated random input in "+(r-o)+"ms"),o=r;for(let i=0;i<n;i++){let s=t(A),B=new Date().getTime(),j=B-o;o=B,console.log("Hashed in "+j+"ms: "+s.substring(0,20)+"..."),console.log(Math.round(e/(1<<20)/(j/1e3)*100)/100+" MB PER SECOND")}}Ht.exports={normalizeInput:be,toHex:Ee,debugPrint:ke,testSpeed:$e}});var Dt=Ut((Bn,Gt)=>{var et=_t();function tt(t,e,n){let o=t[e]+t[n],A=t[e+1]+t[n+1];o>=4294967296&&A++,t[e]=o,t[e+1]=A}function Tt(t,e,n,o){let A=t[e]+n;n<0&&(A+=4294967296);let r=t[e+1]+o;A>=4294967296&&r++,t[e]=A,t[e+1]=r}function Lt(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function O(t,e,n,o,A,r){let i=V[A],s=V[A+1],B=V[r],j=V[r+1];tt(h,t,e),Tt(h,t,i,s);let l=h[o]^h[t],a=h[o+1]^h[t+1];h[o]=a,h[o+1]=l,tt(h,n,o),l=h[e]^h[n],a=h[e+1]^h[n+1],h[e]=l>>>24^a<<8,h[e+1]=a>>>24^l<<8,tt(h,t,e),Tt(h,t,B,j),l=h[o]^h[t],a=h[o+1]^h[t+1],h[o]=l>>>16^a<<16,h[o+1]=a>>>16^l<<16,tt(h,n,o),l=h[e]^h[n],a=h[e+1]^h[n+1],h[e]=a>>>31^l<<1,h[e+1]=l>>>31^a<<1}var St=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ue=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],U=new Uint8Array(Ue.map(function(t){return t*2})),h=new Uint32Array(32),V=new Uint32Array(32);function Mt(t,e){let n=0;for(n=0;n<16;n++)h[n]=t.h[n],h[n+16]=St[n];for(h[24]=h[24]^t.t,h[25]=h[25]^t.t/4294967296,e&&(h[28]=~h[28],h[29]=~h[29]),n=0;n<32;n++)V[n]=Lt(t.b,4*n);for(n=0;n<12;n++)O(0,8,16,24,U[n*16+0],U[n*16+1]),O(2,10,18,26,U[n*16+2],U[n*16+3]),O(4,12,20,28,U[n*16+4],U[n*16+5]),O(6,14,22,30,U[n*16+6],U[n*16+7]),O(0,10,20,30,U[n*16+8],U[n*16+9]),O(2,12,22,24,U[n*16+10],U[n*16+11]),O(4,14,16,26,U[n*16+12],U[n*16+13]),O(6,8,18,28,U[n*16+14],U[n*16+15]);for(n=0;n<16;n++)t.h[n]=t.h[n]^h[n]^h[n+16]}var P=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function zt(t,e,n,o){if(t===0||t>64)throw new Error("Illegal output length, expected 0 < length <= 64");if(e&&e.length>64)throw new Error("Illegal key, expected Uint8Array with 0 < length <= 64");if(n&&n.length!==16)throw new Error("Illegal salt, expected Uint8Array with length is 16");if(o&&o.length!==16)throw new Error("Illegal personal, expected Uint8Array with length is 16");let A={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:t};P.fill(0),P[0]=t,e&&(P[1]=e.length),P[2]=1,P[3]=1,n&&P.set(n,32),o&&P.set(o,48);for(let r=0;r<16;r++)A.h[r]=St[r]^Lt(P,r*4);return e&&(lt(A,e),A.c=128),A}function lt(t,e){for(let n=0;n<e.length;n++)t.c===128&&(t.t+=t.c,Mt(t,!1),t.c=0),t.b[t.c++]=e[n]}function Ot(t){for(t.t+=t.c;t.c<128;)t.b[t.c++]=0;Mt(t,!0);let e=new Uint8Array(t.outlen);for(let n=0;n<t.outlen;n++)e[n]=t.h[n>>2]>>8*(n&3);return e}function Pt(t,e,n,o,A){n=n||64,t=et.normalizeInput(t),o&&(o=et.normalizeInput(o)),A&&(A=et.normalizeInput(A));let r=zt(n,e,o,A);return lt(r,t),Ot(r)}function Ie(t,e,n,o,A){let r=Pt(t,e,n,o,A);return et.toHex(r)}Gt.exports={blake2b:Pt,blake2bHex:Ie,blake2bInit:zt,blake2bUpdate:lt,blake2bFinal:Ot}});var It="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AEGFoYCAAGoxAABCKIaEIABBhqGAgABqMQAAQjCGIABBh6GAgABqMQAAQjiGhIQgAEGAoYCAAGoxAACENwMAIABBCGoiAA0ACwsLAEEAKAKgooCAAAvRAwMCfwF+AX8jgICAgABBgAFrIgQkgICAgABBACEFIARBACkDoKGAgAA3AwAgBEEAKQOooYCAADcDCCAEQQApA7ChgIAANwMQIARBACkDuKGAgAA3AxggBEEAKQPAoYCAADcDICAEQQApA8ihgIAANwMoIARBACkD0KGAgAA3AzAgBEEAKQPYoYCAADcDOCAEQQApA+ChgIAANwNAIARBACkD6KGAgAA3A0ggBEEAKQPwoYCAADcDUCAEQQApA/ihgIAANwNYIARBACkDgKKAgAA3A2AgBEEAKQOIooCAADcDaCAEQQApA5CigIAANwNwAkAgA0UNACAEIAIgAkEQeHNBgP6DeHFBCHYgAkEIeHOtQiCGQQApA5iigIAAQoD+//8PgyAAQf8Bca2EIgaENwN4QQEhBQJAIARBABCDgICAACABTQ0AIANBf2ohB0EAIQUDQAJAIAcgBUcNAEEAIQUMAwsgBCACIAVqQQFqIgAgAEEQeHNBgP6DeHFBCHYgAEEIeHOtQiCGIAaENwN4IAVBAWoiACEFIARBABCDgICAACABSw0ACyACIABqIQIgACADSSEFC0EAIAI2AqCigIAACyAEQYABaiSAgICAACAFCw==";var q=xe(Dt(),1);function ft(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0}function Nt(t){return Math.pow(2,(255.999-t)/8)>>>0}function vt(t,e,n,o,A){let r=t.length;o&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${e} puzzleID=${n} length=${r}`),t[r-8]=n;let i=new Uint8Array(32);for(let s=0;s<256;s++){t[r-1-3]=s;for(let B=0;B<256;B++){t[r-1-2]=B;for(let j=0;j<256;j++){t[r-1-1]=j;for(let l=0;l<256;l++){t[r-1-0]=l,i.fill(0),A(i.length).update(t).digest(i);let a=ft(i,0);if(a<=e)return o&&console.debug(`[privatecaptcha][worker] found solution. prefix=${a} threshold=${e}`),t.subarray(r-8)}}}}return new Uint8Array(0)}var Ct=65536,He=4294967296;function _e(t){let e=atob(t),n=new Uint8Array(e.length);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return n}function Te(t){let e=(0,q.blake2bInit)(t);return{update(n){return(0,q.blake2bUpdate)(e,n),this},digest(n){return n.set((0,q.blake2bFinal)(e)),n}}}async function Rt(t,e=globalThis.WebAssembly){if(e!=null&&e.instantiate)try{let{instance:n}=await e.instantiate(_e(It)),o=n.exports;return new Uint8Array(o.memory.buffer).set(t,o.puzzle_ptr()),o.prepare_puzzle(),{kind:"scalar",wasm:!0,async solve(A,r){for(let i=0;i<He;i+=Ct){if(o.solve_batch(r,A,i,Ct)){let s=o.get_solution_nonce()>>>0,B=t.slice(120,128);return B[0]=r,B[4]=s>>>24,B[5]=s>>>16,B[6]=s>>>8,B[7]=s,B}await new Promise(s=>setTimeout(s,0))}return new Uint8Array(0)}}}catch(n){console.warn("[privatecaptcha][worker] scalar WASM unavailable",n)}return{kind:"js",wasm:!1,async solve(n,o,A){return vt(t,n,o,A,Te).slice()}}}var Xt="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QfAAakEEEICAgIAAGiABQbAJakGACCABQbABakHIABCPgICAACABKAJAIAEoAlQgBGxqIQNBACECA0AgAyACaiABQfAAaiABQbAJaiACakEIEICAgIAAKQMANwMAIAJBCGoiAkGACEcNAAsgAUEBNgJwIAYgAUHwAGpBBBCAgICAABogAUGwCWpBgAggAUGwAWpByAAQj4CAgAAgASgCQCABKAJUIARsakGACGohA0EAIQIDQCADIAJqIAFB8ABqIAFBsAlqIAJqQQgQgICAgAApAwA3AwAgAkEIaiICQYAIRw0ACyAEQYAIaiEEIAVBAWoiBSABKAJYSQ0ACwsCQEEALQDAiIGIAA0AIAFBsAlqQYAIEI2AgIAAQQAtAMCIgYgADQAgAUGwAWpByAAQjYCAgAALAkAgASgCWCIEDQBBZyECDAILAkAgASgCSCIFRQ0AQQEhAkEAIQMDQAJAAkAgAg0AQQAhAgwBCwJAAkAgBEUNAEEAIQIDQCABIAM2ArAJIAFBADYCvAkgAUEAOgC4CSABIAI2ArQJIAEgASkCsAk3AzAgASABKQK4CTcDOCABQcAAaiABQTBqEJCAgIAAIAJBAWoiAiABKAJYIgRJDQALAkAgBA0AQQAhBAwCC0EAIQIDQCABIAM2ArAJIAFBADYCvAkgASACNgK0CSABIAEpArAJNwMgIAFBAToAuAkgASABKQK4CTcDKCABQcAAaiABQSBqEJCAgIAAIAJBAWoiAiABKAJYIgRJDQALAkAgBA0AQQAhBAwCC0EAIQIDQCABIAM2ArAJIAFBADYCvAkgAUECOgC4CSABIAI2ArQJIAEgASkCsAk3AxAgASABKQK4CTcDGCABQcAAaiABQRBqEJCAgIAAIAJBAWoiAiABKAJYIgRJDQALCwJAIAQNAEEAIQQMAQtBACECA0AgASADNgKwCSABQQA2ArwJIAFBAzoAuAkgASACNgK0CSABIAEpArAJNwMAIAEgASkCuAk3AwggAUHAAGogARCQgICAACACQQFqIgIgASgCWCIESQ0ACwsgASgCSCEFIAQhAgsgA0EBaiIDIAVJDQALCyABQbAJaiABKAJAIAEoAlRBCnRqQYB4akGACBCAgICAACEJAkAgASgCWCIIQQJJDQAgASgCVCICQQp0IQogAkELdCABKAJAakGAeGohBkEBIQcDQEEAIQMDQCABQbAJaiADaiICIAIpAwAgBiADaiIEKQMAhTcDACACQQhqIgUgBSkDACAEQQhqKQMAhTcDACACQRBqIgUgBSkDACAEQRBqKQMAhTcDACACQRhqIgIgAikDACAEQRhqKQMAhTcDACADQSBqIgNBgAhHDQALIAYgCmohBiAHQQFqIgcgCEcNAAsLQQAhAgNAIAEgAUGwCWogAmopAwA3A3AgAUGwAWogAmogAUHwAGpBCBCAgICAABogAkEIaiICQYAIRw0ACyAAKAIAIAAoAgQgAUGwAWpBgAgQj4CAgAACQAJAAkBBAC0AwIiBiAANACAJQYAIEI2AgIAAQQAtAMCIgYgARQ0BCyABKAJMQQp0IQIgASgCQCEDDAELIAFBsAFqQYAIEI2AgIAAIAEoAkxBCnQhAiABKAJAIgNFDQBBAC0AwIiBiABBAXENACADIAIQjYCAgAALAkAgACgCQCIARQ0AIAMgAiAAEYGAgIAAgICAgAALQQAhAgwBC0FqIQILIAFBsBFqJICAgIAAIAILJgEBf0F/IQICQCABQYCAgAhHDQAgAEHAiIGAADYCAEEAIQILIAILAgALvwEBAn8jgICAgABB0ABrIgQkgICAgABBACEFQQAgADoAiIiBgAACQCADRQ0AQQAhBQNAQQAgAiACQRB4c0GA/oN4cUEIdiACQQh4czYCjIiBgAAgBEEIakGAgIGAAEHIAPwKAABBAEEBOgDAiIGIACAEQQhqEIeAgIAADQECQEEAKAKQiIGAACABTQ0AIAJBAWohAiADQX9qIgNFDQIMAQsLQQAgAjYCsIiBgABBASEFCyAEQdAAaiSAgICAACAFC9MCAgJ/AX4jgICAgABBEGsiAiSAgICAACAAQQBB8AEQgYCAgABB0ICBgABBwAAQgICAgAAhACACQQhqIAFBCBCAgICAACEDIAAgACkDACADKQMAhTcDACADIAFBCGpBCBCAgICAACEDIAAgACkDCCADKQMAhTcDCCADIAFBEGpBCBCAgICAACEDIAAgACkDECADKQMAhTcDECADIAFBGGpBCBCAgICAACEDIAAgACkDGCADKQMAhTcDGCADIAFBIGpBCBCAgICAACEDIAAgACkDICADKQMAhTcDICADIAFBKGpBCBCAgICAACEDIAAgACkDKCADKQMAhTcDKCADIAFBMGpBCBCAgICAACEDIAAgACkDMCADKQMAhTcDMCADIAFBOGpBCBCAgICAACkDACEEIAAgAS0AADYC5AEgACAEIAApAziFNwM4IAJBEGokgICAgAALkgICA38BfkEAIQMCQCACRQ0AQX8hAyAAKQNQQgBSDQACQCAAKALgASIDIAJqQYEBSQ0AIABB4ABqIgQgA2ogAUGAASADayIFEICAgIAAGiAAIAApA0AiBkKAAXw3A0AgACAAKQNIIAZC/35WrXw3A0ggACAEEJOAgIAAQQAhAyAAQQA2AuABIAEgBWohASACIAVrIgJBgQFJDQADQCAAIAApA0AiBkKAAXw3A0AgACAAKQNIIAZC/35WrXw3A0ggACABEJOAgIAAIAFBgAFqIQEgAkGAf2oiAkGAAUsNAAsgACgC4AEhAwsgACADakHgAGogASACEICAgIAAGiAAIAAoAuABIAJqNgLgAUEAIQMLIAMLUwEBfyOAgICAAEEQayICJICAgIAAIAIgADYCDCACIAE2AghBACgCyICBgAAhACACKAIMQQAgAigCCCAAEYKAgIAAgICAgAAaIAJBEGokgICAgAALtQQDAn8CfgF/I4CAgIAAQdAAayIDJICAgIAAIANCADcDOCADQgA3AzAgA0IANwMoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AwBBfyEEAkAgAUUNACAAKALkASACSw0AIAApA1BCAFINACAAIAApA0AiBSAAKALgASICrXwiBjcDQCAAIAApA0ggBiAFVK18NwNIAkAgAC0A6AFFDQAgAEJ/NwNYCyAAQn83A1BBACEEIABB4ABqIgcgAmpBAEGAASACaxCBgICAABogACAHEJOAgIAAIAMgACkDADcDSCADIANByABqQQgQgICAgAAhAiADIAApAwg3A0ggAkEIaiADQcgAakEIEICAgIAAGiADIAApAxA3A0ggAkEQaiADQcgAakEIEICAgIAAGiADIAApAxg3A0ggAkEYaiADQcgAakEIEICAgIAAGiADIAApAyA3A0ggAkEgaiADQcgAakEIEICAgIAAGiADIAApAyg3A0ggAkEoaiADQcgAakEIEICAgIAAGiADIAApAzA3A0ggAkEwaiADQcgAakEIEICAgIAAGiADIAApAzg3A0ggAkE4aiADQcgAakEIEICAgIAAGiABIAIgACgC5AEQgICAgAAaQQAtAMCIgYgADQAgAkHAABCNgICAAEEAIQRBAC0AwIiBiAANACAHQYABEI2AgIAAQQAhBEEALQDAiIGIAA0AIABBwAAQjYCAgAALIANB0ABqJICAgIAAIAQL1wYBA38jgICAgABBsAVrIgQkgICAgAAgBEEANgKMASAEIAE2AoADIARBjAFqIARBgANqQQQQgICAgAAhBQJAAkAgAUHAAEsNACAEQZABaiABEJKAgIAAQQBIDQEgBEGQAWogBUEEEIyAgIAAQQBIDQEgBEGQAWogAiADEIyAgIAAQQBIDQEgBEGQAWogACABEI6AgIAAGgwBCyAEQQA7AJADIARCADcAiAMgBELAgIQINwCAAyAEQZIDakEAQQ4QgYCAgAAaIARBoANqQQBBEBCBgICAABogBEGwA2pBAEEQEIGAgIAAGiAEQZABaiAEQYADahCLgICAACAEQZABaiAFQQQQjICAgABBAEgNACAEQZABaiACIAMQjICAgABBAEgNACAEQZABaiAEQcAAakHAABCOgICAAEEASA0AIAAgBEHAAGpBIBCAgICAAEEgaiEFAkAgAUFgaiIBQcEASQ0AIARBoAVqIQIgBEHwBGpBIGohACAEQYIFaiEGA0AgBCAEQcAAakHAABCAgICAACEDIARBADsAgAUgBEIANwD4BCAEQsCAhAg3APAEIAZBAEEOEIGAgIAAGiAAQQBBEBCBgICAABogAkEAQRAQgYCAgAAaIARBgANqIARB8ARqEIuAgIAAAkAgBEGAA2ogA0HAABCMgICAAEF/Sg0AQQAtAMCIgYgADQMgBEGAA2pB8AEQjYCAgAAMAwsgBEGAA2ogBEHAAGpBwAAQjoCAgAAhAwJAQQAtAMCIgYgADQAgBEGAA2pB8AEQjYCAgAALIANBAEgNAiAFIARBwABqQSAQgICAgAAhAyAFQSBqIQUgAUFgaiIBQcAASw0ACyADQSBqIQULIAQgBEHAAGpBwAAQgICAgAAhAwJAAkAgBEGAA2ogARCSgICAAEEASA0AIARBgANqIANBwAAQjICAgABBf0oNAQtBAC0AwIiBiAANASAEQYADakHwARCNgICAAAwBCyAEQYADaiAEQcAAaiABEI6AgIAAIQMCQEEALQDAiIGIAA0AIARBgANqQfABEI2AgIAACyADQQBIDQAgBSAEQcAAaiABEICAgIAAGgsCQEEALQDAiIGIAA0AIARBkAFqQfABEI2AgIAACyAEQbAFaiSAgICAAAvXBgQPfwF+AX8DfiOAgICAAEGAGGsiAiSAgICAACABKAIAIQMCQAJAAkACQCAAKAIgIgRBAUcNACABLQAIIQUMAQtBACEGIARBAkcNASADDQFBACEGQQAhByABLQAIIgVBAUsNAgsgAkEAQYAIEIGAgIAAGiACQYAIakEAQYAIEIGAgIAAIgggA603AwAgCCAFrUL/AYM3AxAgCCAErTcDKCAIIAE1AgQ3AwggCCAANQIMNwMYIAggADUCCDcDIEEBIQYLQQAhByADDQBBAiEHAkAgAS0ACCIIRSAGcUEBRg0AQQBBAiAIGyEHDAELIAIgAikDsAhCAXw3A7AIIAIgAkGACGogAkGAEGpBABCRgICAACACIAJBgBBqIAJBgBBqQQAQkYCAgABBASEGCwJAIAcgACgCECIJTw0AQX8gACgCFCIIQX9qIAggASgCBCIKbCAJIAEtAAgiC2xqIgwgB2oiASAIcBsgAWohBCABQQp0IQUgB0F/aiENIANBAEchDiALQQFqIQ8gAyALckUhECAKrSERIAtB/wFxIRIDQCAMIA0iAWoiCCAEIAhBAWogACgCFCIIcEEBRhshBCABQQFqIQ0CQAJAIAZFDQACQCANQf8AcSIKDQAgAiACKQOwCEIBfDcDsAggAiACQYAIaiACQYAQakEAEJGAgIAAIAIgAkGAEGogAkGAEGpBABCRgICAAAsgAkGAEGogCkEDdGohCgwBCyAAKAIAIARBCnRqIQoLIBEgCikDACITQiCIpyAAKAIYcK0gEBshFAJAAkAgAw0AQgAhFQJAIBINACABIQoMAgsgCSALbCEKAkAgFCARUg0AIAcgCmpBf2ohCgwCCyAKIAFBf0ZrIQoMAQsCQAJAIBQgEVINACABIAggCWtqIQoMAQsgCCAJayABQX9GayEKC0IAIRUgEkEDRg0AIAkgD2ytIRULIAAoAgAiCSAEQQp0aiAJIAggFKdsQQp0aiAVIApBf2qtfCATQv////8PgyIUIBR+QiCIIAqtfkIgiH0gCK2Cp0EKdGogCSAFaiAAKAIEQRBHIA5xEJGAgIAAIAVBgAhqIQUgBEEBaiEEIAdBAWohByABQQJqIAAoAhAiCUkNAAsLIAJBgBhqJICAgIAAC+YaFAZ/BH4BfwF+AX8BfgF/AX4BfwF+AX8DfgF/A34BfwF+AX8BfgF/A34jgICAgABBgBBrIgQkgICAgABBgHghBSAEQYAIaiABQYAIEICAgIAAIQYDQCAEQYAIaiAFaiIBQYAIaiIHIAcpAwAgACAFaiIHQYAIaikDAIU3AwAgAUGICGoiCCAIKQMAIAdBiAhqKQMAhTcDACABQZAIaiIIIAgpAwAgB0GQCGopAwCFNwMAIAFBmAhqIgEgASkDACAHQZgIaikDAIU3AwAgBUEgaiIFDQALIAQgBkGACBCAgICAACEJAkAgA0UNAEGAeCEFA0AgBCAFaiIBQYAIaiIHIAcpAwAgAiAFaiIHQYAIaikDAIU3AwAgAUGICGoiCCAIKQMAIAdBiAhqKQMAhTcDACABQZAIaiIIIAgpAwAgB0GQCGopAwCFNwMAIAFBmAhqIgEgASkDACAHQZgIaikDAIU3AwAgBUEgaiIFDQALC0GAeCEBA0AgBEGACGogAWoiBUGACGoiByAFQbgIaiIIKQMAIgogBUGYCGoiACkDACILfCALQgGGQv7///8fgyAKQv////8Pg358IgsgBUH4CGoiAykDAIVCIIkiDCAFQdgIaiIGKQMAIg18IA1CAYZC/v///x+DIAxC/////w+DfnwiDSAKhUIoiSIKIAt8IApC/////w+DIAtCAYZC/v///x+DfnwiCyAMhUIwiSIMIAVBqAhqIg4pAwAiDyAFQYgIaiIQKQMAIhF8IBFCAYZC/v///x+DIA9C/////w+DfnwiESAFQegIaiISKQMAhUIgiSITIAVByAhqIhQpAwAiFXwgFUIBhkL+////H4MgE0L/////D4N+fCIVIA+FQiiJIg8gEXwgD0L/////D4MgEUIBhkL+////H4N+fCIRIBOFQjCJIhMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVIA+FQgGJIg8gBUGgCGoiFikDACIXIAcpAwAiGHwgGEIBhkL+////H4MgF0L/////D4N+fCIYIAVB4AhqIgcpAwCFQiCJIhkgBUHACGoiGikDACIbfCAbQgGGQv7///8fgyAZQv////8Pg358IhsgF4VCKIkiFyAYfCAXQv////8PgyAYQgGGQv7///8fg358Ihh8IA9C/////w+DIBhCAYZC/v///x+DfnwiHIVCIIkiHSAFQbAIaiIeKQMAIh8gBUGQCGoiICkDACIhfCAhQgGGQv7///8fgyAfQv////8Pg358IiEgBUHwCGoiIikDAIVCIIkiIyAFQdAIaiIFKQMAIiR8ICRCAYZC/v///x+DICNC/////w+DfnwiJCAfhUIoiSIfICF8IB9C/////w+DICFCAYZC/v///x+DfnwiISAjhUIwiSIjICR8ICNC/////w+DICRCAYZC/v///x+DfnwiJHwgHUL/////D4MgJEIBhkL+////H4N+fCIlIA+FQiiJIg8gHHwgD0L/////D4MgHEIBhkL+////H4N+fCIcNwMAIAMgHCAdhUIwiSIcNwMAIAUgHCAlfCAcQv////8PgyAlQgGGQv7///8fg358Ihw3AwAgDiAcIA+FQgGJNwMAIAcgDCANfCAMQv////8PgyANQgGGQv7///8fg358IgwgJCAfhUIBiSINIBF8IA1C/////w+DIBFCAYZC/v///x+DfnwiDyAYIBmFQjCJIhGFQiCJIhh8IAxCAYZC/v///x+DIBhC/////w+DfnwiGSANhUIoiSINIA98IA1C/////w+DIA9CAYZC/v///x+DfnwiHCAYhUIwiSIPNwMAIBAgHDcDACAGIA8gGXwgD0L/////D4MgGUIBhkL+////H4N+fCIPNwMAIB4gDyANhUIBiTcDACASIAwgCoVCAYkiCiAhfCAKQv////8PgyAhQgGGQv7///8fg358IgwgE4VCIIkiDSARIBt8IBFC/////w+DIBtCAYZC/v///x+DfnwiD3wgDUL/////D4MgD0IBhkL+////H4N+fCIRIAqFQiiJIgogDHwgCkL/////D4MgDEIBhkL+////H4N+fCITIA2FQjCJIgw3AwAgICATNwMAIBogDCARfCAMQv////8PgyARQgGGQv7///8fg358Igw3AwAgCCAMIAqFQgGJNwMAICIgCyAPIBeFQgGJIgp8IAtCAYZC/v///x+DIApC/////w+DfnwiCyAjhUIgiSIMIBV8IAxC/////w+DIBVCAYZC/v///x+DfnwiDSAKhUIoiSIKIAt8IApC/////w+DIAtCAYZC/v///x+DfnwiDyAMhUIwiSILNwMAIAAgDzcDACAUIAsgDXwgC0L/////D4MgDUIBhkL+////H4N+fCILNwMAIBYgCyAKhUIBiTcDACABQYABaiIBDQALQYB/IQEDQCAEQYAIaiABaiIFQYABaiIHIAVBiARqIggpAwAiCiAFQYgCaiIAKQMAIgt8IAtCAYZC/v///x+DIApC/////w+DfnwiCyAFQYgIaiIDKQMAhUIgiSIMIAVBiAZqIgYpAwAiDXwgDUIBhkL+////H4MgDEL/////D4N+fCINIAqFQiiJIgogC3wgCkL/////D4MgC0IBhkL+////H4N+fCILIAyFQjCJIgwgBUGIA2oiDikDACIPIAVBiAFqIhApAwAiEXwgEUIBhkL+////H4MgD0L/////D4N+fCIRIAVBiAdqIhIpAwCFQiCJIhMgBUGIBWoiFCkDACIVfCAVQgGGQv7///8fgyATQv////8Pg358IhUgD4VCKIkiDyARfCAPQv////8PgyARQgGGQv7///8fg358IhEgE4VCMIkiEyAVfCATQv////8PgyAVQgGGQv7///8fg358IhUgD4VCAYkiDyAFQYADaiIWKQMAIhcgBykDACIYfCAYQgGGQv7///8fgyAXQv////8Pg358IhggBUGAB2oiBykDAIVCIIkiGSAFQYAFaiIaKQMAIht8IBtCAYZC/v///x+DIBlC/////w+DfnwiGyAXhUIoiSIXIBh8IBdC/////w+DIBhCAYZC/v///x+DfnwiGHwgD0L/////D4MgGEIBhkL+////H4N+fCIchUIgiSIdIAVBgARqIh4pAwAiHyAFQYACaiIgKQMAIiF8ICFCAYZC/v///x+DIB9C/////w+DfnwiISAFQYAIaiIiKQMAhUIgiSIjIAVBgAZqIgUpAwAiJHwgJEIBhkL+////H4MgI0L/////D4N+fCIkIB+FQiiJIh8gIXwgH0L/////D4MgIUIBhkL+////H4N+fCIhICOFQjCJIiMgJHwgI0L/////D4MgJEIBhkL+////H4N+fCIkfCAdQv////8PgyAkQgGGQv7///8fg358IiUgD4VCKIkiDyAcfCAPQv////8PgyAcQgGGQv7///8fg358Ihw3AwAgAyAcIB2FQjCJIhw3AwAgBSAcICV8IBxC/////w+DICVCAYZC/v///x+DfnwiHDcDACAOIBwgD4VCAYk3AwAgByAMIA18IAxC/////w+DIA1CAYZC/v///x+DfnwiDCAkIB+FQgGJIg0gEXwgDUL/////D4MgEUIBhkL+////H4N+fCIPIBggGYVCMIkiEYVCIIkiGHwgDEIBhkL+////H4MgGEL/////D4N+fCIZIA2FQiiJIg0gD3wgDUL/////D4MgD0IBhkL+////H4N+fCIcIBiFQjCJIg83AwAgECAcNwMAIAYgDyAZfCAPQv////8PgyAZQgGGQv7///8fg358Ig83AwAgHiAPIA2FQgGJNwMAIBIgDCAKhUIBiSIKICF8IApC/////w+DICFCAYZC/v///x+DfnwiDCAThUIgiSINIBEgG3wgEUL/////D4MgG0IBhkL+////H4N+fCIPfCANQv////8PgyAPQgGGQv7///8fg358IhEgCoVCKIkiCiAMfCAKQv////8PgyAMQgGGQv7///8fg358IhMgDYVCMIkiDDcDACAgIBM3AwAgGiAMIBF8IAxC/////w+DIBFCAYZC/v///x+DfnwiDDcDACAIIAwgCoVCAYk3AwAgIiALIA8gF4VCAYkiCnwgC0IBhkL+////H4MgCkL/////D4N+fCILICOFQiCJIgwgFXwgDEL/////D4MgFUIBhkL+////H4N+fCINIAqFQiiJIgogC3wgCkL/////D4MgC0IBhkL+////H4N+fCIPIAyFQjCJIgs3AwAgACAPNwMAIBQgCyANfCALQv////8PgyANQgGGQv7///8fg358Igs3AwAgFiALIAqFQgGJNwMAIAFBEGoiAQ0ACyACIAlBgAgQgICAgAAaQYB4IQUDQCACIAVqIgFBgAhqIgcgBykDACAEQYAIaiAFaiIHQYAIaikDAIU3AwAgAUGICGoiCCAIKQMAIAdBiAhqKQMAhTcDACABQZAIaiIIIAgpAwAgB0GQCGopAwCFNwMAIAFBmAhqIgEgASkDACAHQZgIaikDAIU3AwAgBUEgaiIFDQALIARBgBBqJICAgIAAC9ABAQJ/I4CAgIAAQcAAayICJICAgIAAAkACQCABDQACQEEALQDAiIGIAA0AIABB8AEQjYCAgAALAkAgAC0A6AFFDQAgAEJ/NwNYCyAAQn83A1BBfyEDDAELQQAhAyACQQA7ABAgAkIANwAIIAJBADYABCACQQE6AAMgAkGAAjsAASACIAE6AAAgAkESakEAQQ4QgYCAgAAaIAJBIGpBAEEQEIGAgIAAGiACQTBqQQBBEBCBgICAABogACACEIuAgIAACyACQcAAaiSAgICAACADC4sMAgJ/E34jgICAgABBkAFrIgIkgICAgAAgAiACQYgBaiABQQgQgICAgAAiAykDADcDACACIAMgAUEIakEIEICAgIAAIgMpAwA3AwggAiADIAFBEGpBCBCAgICAACIDKQMANwMQIAIgAyABQRhqQQgQgICAgAAiAykDADcDGCACIAMgAUEgakEIEICAgIAAIgMpAwA3AyAgAiADIAFBKGpBCBCAgICAACIDKQMANwMoIAIgAyABQTBqQQgQgICAgAAiAykDADcDMCACIAMgAUE4akEIEICAgIAAIgMpAwA3AzggAiADIAFBwABqQQgQgICAgAAiAykDADcDQCACIAMgAUHIAGpBCBCAgICAACIDKQMANwNIIAIgAyABQdAAakEIEICAgIAAIgMpAwA3A1AgAiADIAFB2ABqQQgQgICAgAAiAykDADcDWCACIAMgAUHgAGpBCBCAgICAACIDKQMANwNgIAIgAyABQegAakEIEICAgIAAIgMpAwA3A2ggAiADIAFB8ABqQQgQgICAgAAiAykDADcDcCACIAMgAUH4AGpBCBCAgICAACkDADcDeCAAKQNYQvnC+JuRo7Pw2wCFIQQgACkDUELr+obav7X2wR+FIQUgACkDSEKf2PnZwpHagpt/hSEGIAApA0BC0YWa7/rPlIfRAIUhByAAKQM4IQggACkDMCEJIAApAyghCiAAKQMgIQsgACkDGCEMIAApAxAhDSAAKQMIIQ4gACkDACEPQqvw0/Sv7ry3PCEQQrvOqqbY0Ouzu38hEUKIkvOd/8z5hOoAIRJC8e30+KWn/aelfyETQYB6IQEDQCAQIAUgCSANfCACIAFBoIeBgABqKAIAQQN0aikDAHwiDYVCIIkiBXwiECAJhUIoiSIJIA18IAIgAUGkh4GAAGooAgBBA3RqKQMAfCIUIBMgBCAIIAx8IAIgAUGoh4GAAGooAgBBA3RqKQMAfCIMhUIgiSIEfCINIAiFQiiJIgggDHwgAiABQayHgYAAaigCAEEDdGopAwB8IgwgBIVCMIkiBCANfCITIAiFQgGJIgh8IAIgAUHAh4GAAGooAgBBA3RqKQMAfCINIBEgBiAKIA58IAIgAUGYh4GAAGooAgBBA3RqKQMAfCIOhUIgiSIGfCIRIAqFQiiJIgogDnwgAiABQZyHgYAAaigCAEEDdGopAwB8Ig4gBoVCMIkiFYVCIIkiBiASIAcgCyAPfCACIAFBkIeBgABqKAIAQQN0aikDAHwiD4VCIIkiB3wiEiALhUIoiSILIA98IAIgAUGUh4GAAGooAgBBA3RqKQMAfCIPIAeFQjCJIgcgEnwiFnwiEiAIhUIoiSIIIA18IAIgAUHEh4GAAGooAgBBA3RqKQMAfCINIAaFQjCJIgYgEnwiEiAIhUIBiSEIIA4gFCAFhUIwiSIFIBB8IhAgCYVCAYkiCXwgAiABQbiHgYAAaigCAEEDdGopAwB8Ig4gB4VCIIkiByATfCITIAmFQiiJIgkgDnwgAiABQbyHgYAAaigCAEEDdGopAwB8Ig4gB4VCMIkiByATfCITIAmFQgGJIQkgDyAVIBF8IhEgCoVCAYkiCnwgAiABQbCHgYAAaigCAEEDdGopAwB8Ig8gBIVCIIkiBCAQfCIQIAqFQiiJIgogD3wgAiABQbSHgYAAaigCAEEDdGopAwB8Ig8gBIVCMIkiBCAQfCIQIAqFQgGJIQogDCAWIAuFQgGJIgt8IAIgAUHIh4GAAGooAgBBA3RqKQMAfCIMIAWFQiCJIgUgEXwiESALhUIoiSILIAx8IAIgAUHMh4GAAGooAgBBA3RqKQMAfCIMIAWFQjCJIgUgEXwiESALhUIBiSELIAFBwABqIgENAAsgACAOIAApAwiFIBGFNwMIIAAgCSAAKQMwhSAFhTcDMCAAIA0gACkDEIUgEIU3AxAgACAMIAApAxiFIBOFNwMYIAAgCyAAKQMghSAHhTcDICAAIAggACkDOIUgBIU3AzggACAPIAApAwCFIBKFNwMAIAAgCiAAKQMohSAGhTcDKCACQZABaiSAgICAAAsLmQcBAEGAgAELkAcQRAAAIAAAAJBDAACAAAAAkEMAABAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAABAAAABAAAAAQAAABMAAAABAAAAAgAAAAAAAAADAAAAAAAAAAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FsAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAADgAAAAoAAAAEAAAACAAAAAkAAAAPAAAADQAAAAYAAAABAAAADAAAAAAAAAACAAAACwAAAAcAAAAFAAAAAwAAAAsAAAAIAAAADAAAAAAAAAAFAAAAAgAAAA8AAAANAAAACgAAAA4AAAADAAAABgAAAAcAAAABAAAACQAAAAQAAAAHAAAACQAAAAMAAAABAAAADQAAAAwAAAALAAAADgAAAAIAAAAGAAAABQAAAAoAAAAEAAAAAAAAAA8AAAAIAAAACQAAAAAAAAAFAAAABwAAAAIAAAAEAAAACgAAAA8AAAAOAAAAAQAAAAsAAAAMAAAABgAAAAgAAAADAAAADQAAAAIAAAAMAAAABgAAAAoAAAAAAAAACwAAAAgAAAADAAAABAAAAA0AAAAHAAAABQAAAA8AAAAOAAAAAQAAAAkAAAAMAAAABQAAAAEAAAAPAAAADgAAAA0AAAAEAAAACgAAAAAAAAAHAAAABgAAAAMAAAAJAAAAAgAAAAgAAAALAAAADQAAAAsAAAAHAAAADgAAAAwAAAABAAAAAwAAAAkAAAAFAAAAAAAAAA8AAAAEAAAACAAAAAYAAAACAAAACgAAAAYAAAAPAAAADgAAAAkAAAALAAAAAwAAAAAAAAAIAAAADAAAAAIAAAANAAAABwAAAAEAAAAEAAAACgAAAAUAAAAKAAAAAgAAAAgAAAAEAAAABwAAAAYAAAABAAAABQAAAA8AAAALAAAACQAAAA4AAAADAAAADAAAAA0AAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAAA4AAAAKAAAABAAAAAgAAAAJAAAADwAAAA0AAAAGAAAAAQAAAAwAAAAAAAAAAgAAAAsAAAAHAAAABQAAAAMAAAA=";function qt(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in t&&t.BYTES_PER_ELEMENT===1}var at=t=>t?`"${t}" `:"";function R(t,e=""){if(typeof t!="number")throw new TypeError(at(e)+"expected number, got "+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(at(e)+"expected integer >= 0, got "+t);return t}function M(t,e,n=""){if(qt(t)&&(e===void 0||t.length===e))return t;e!==void 0&&R(e,"length");let o=qt(t),A=e!==void 0?` of length ${e}`:"",r=o?`length=${t.length}`:`type=${typeof t}`,i=at(n)+"expected Uint8Array"+A+", got "+r;throw o?new RangeError(i):new TypeError(i)}function jt(t){return Uint8Array.from(M(t))}var Se=(t,e)=>{if(t===null||typeof t!="object"||Array.isArray(t))throw new TypeError((e==="object"?"":`"${e}" `)+"expected object, got type="+typeof t)},Ft=(t,e)=>{Se(t,e);let n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new TypeError(`"${e}" expected plain object`);if(Object.hasOwn(t,"__proto__"))throw new TypeError(`"${e}.__proto__" is not allowed`)};function ut(t,e=!0){if(t.destroyed)throw new Error("hash was destroyed");if(e&&t.finished)throw new Error("digest() was already called")}function Vt(t,e){M(t,void 0,"output");let n=e.outputLen;if(!(t.length>=n))throw new RangeError(\'"output" expected length >= \'+n)}function W(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function G(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function _(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}var Wt=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Kt(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}var $=Wt?t=>t:t=>Kt(t)>>>0;function Me(t){for(let e=0;e<t.length;e++)t[e]=Kt(t[e]);return t}var S=Wt?t=>t:Me;function ze(t){if(typeof t!="string")throw new TypeError("string expected");let e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{_(e)}}function nt(t,e=""){return typeof t=="string"?ze(t):M(t,void 0,e)}function K(t,e,n="opts"){return Ft(t,"defaults"),e!==void 0&&Ft(e,n),Object.assign(Object.create(null),t,e)}function Yt(t,e={}){if(typeof t!="function")throw new TypeError(\'"hashCons" expected function, got type=\'+typeof t);e=K({},e,"info");let n=(A,r)=>t(r).update(A).digest(),o=t(void 0);return n.outputLen=o.outputLen,n.blockLen=o.blockLen,n.canXOF=o.canXOF,n.create=A=>t(A),Object.assign(n,e),Object.freeze(n)}var Zt=Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9]);var Jt=t=>t/2**32|0,Qt=t=>t>>>0;var ht=(t,e,n)=>t>>>n|e<<32-n,pt=(t,e,n)=>t<<32-n|e>>>n,te=(t,e,n)=>t<<64-n|e>>>n-32,ee=(t,e,n)=>t>>>n-32|e<<64-n,ne=(t,e)=>e,re=(t,e)=>t;function dt(t,e,n,o){let A=(e>>>0)+(o>>>0);return{h:t+n+(A/2**32|0)|0,l:A|0}}var wt=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),yt=(t,e,n,o)=>e+n+o+(t/2**32|0)|0;var k=Uint32Array.from([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),c=new Uint32Array(32);function D(t,e,n,o,A,r){let i=A[r],s=A[r+1],B=c[2*t],j=c[2*t+1],l=c[2*e],a=c[2*e+1],f=c[2*n],d=c[2*n+1],u=c[2*o],p=c[2*o+1],w=wt(B,l,i);j=yt(w,j,a,s),B=w|0;let y=p^j,x=u^B;p=ne(y,x),u=re(y,x),{h:d,l:f}=dt(d,f,p,u),y=a^d,x=l^f,a=ht(y,x,24),l=pt(y,x,24),c[2*t]=B,c[2*t+1]=j,c[2*e]=l,c[2*e+1]=a,c[2*n]=f,c[2*n+1]=d,c[2*o]=u,c[2*o+1]=p}function N(t,e,n,o,A,r){let i=A[r],s=A[r+1],B=c[2*t],j=c[2*t+1],l=c[2*e],a=c[2*e+1],f=c[2*n],d=c[2*n+1],u=c[2*o],p=c[2*o+1],w=wt(B,l,i);j=yt(w,j,a,s),B=w|0;let y=p^j,x=u^B;p=ht(y,x,16),u=pt(y,x,16),{h:d,l:f}=dt(d,f,p,u),y=a^d,x=l^f,a=te(y,x,63),l=ee(y,x,63),c[2*t]=B,c[2*t+1]=j,c[2*e]=l,c[2*e+1]=a,c[2*n]=f,c[2*n+1]=d,c[2*o]=u,c[2*o+1]=p}function Pe(t,e={},n,o,A){if(R(n),t<=0||t>n)throw new Error(\'"dkLen" must be 1..\'+n+", got "+t);let{key:r,salt:i,personalization:s}=e;if(r!==void 0&&(r.length<1||r.length>n))throw new Error(\'"key" expected to be undefined or of length=1..\'+n);i!==void 0&&M(i,o,"salt"),s!==void 0&&M(s,A,"personalization")}var xt=class{constructor(e,n){g(this,"buffer");g(this,"buffer32");g(this,"finished",!1);g(this,"destroyed",!1);g(this,"length",0);g(this,"pos",0);g(this,"blockLen");g(this,"outputLen");g(this,"canXOF",!1);R(e),R(n),this.blockLen=e,this.outputLen=n,this.buffer=new Uint8Array(e),this.buffer32=G(this.buffer)}update(e){ut(this),M(e);let{blockLen:n,buffer:o,buffer32:A}=this,r=e.length,i=e.byteOffset,s=e.buffer;for(let B=0;B<r;){this.pos===n&&(S(A),this.compress(A,0,!1),S(A),this.pos=0);let j=Math.min(n-this.pos,r-B),l=i+B;if(j===n&&!(l%4)&&B+j<r){let a=new Uint32Array(s,l,Math.floor((r-B)/4));S(a);for(let f=0;B+n<r;f+=A.length,B+=n)this.length+=n,this.compress(a,f,!1);S(a);continue}o.set(B===0&&j===r?e:e.subarray(B,B+j),this.pos),this.pos+=j,this.length+=j,B+=j}return this}digestInto(e){if(ut(this),Vt(e,this),e.byteOffset&3)throw new RangeError(\'"output" expected 4-byte aligned byteOffset, got \'+e.byteOffset);let{pos:n,buffer32:o}=this;this.finished=!0,this.buffer.fill(0,n),S(o),this.compress(o,0,!0),S(o);let A=this.get(),r=e===this.buffer?o:G(e),i=Math.floor(this.outputLen/4);for(let l=0;l<i;l++)r[l]=$(A[l]);let s=this.outputLen%4;if(!s)return;let B=i*4,j=A[i];for(let l=0;l<s;l++)e[B+l]=j>>>8*l}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let o=e.slice(0,n);return this.destroy(),o}_cloneInto(e){let{buffer:n,length:o,finished:A,destroyed:r,outputLen:i,pos:s}=this;return e||(e=new this.constructor({dkLen:i})),e.set(...this.get()),e.buffer.set(n),e.destroyed=r,e.finished=A,e.length=o,e.pos=s,e.outputLen=i,e}clone(){return this._cloneInto()}},gt=class extends xt{constructor(n={}){n=K({},n);let o=n.dkLen===void 0?64:n.dkLen;super(128,o);g(this,"v0l",k[0]|0);g(this,"v0h",k[1]|0);g(this,"v1l",k[2]|0);g(this,"v1h",k[3]|0);g(this,"v2l",k[4]|0);g(this,"v2h",k[5]|0);g(this,"v3l",k[6]|0);g(this,"v3h",k[7]|0);g(this,"v4l",k[8]|0);g(this,"v4h",k[9]|0);g(this,"v5l",k[10]|0);g(this,"v5h",k[11]|0);g(this,"v6l",k[12]|0);g(this,"v6h",k[13]|0);g(this,"v7l",k[14]|0);g(this,"v7h",k[15]|0);Pe(o,n,64,16,16);let{key:A,personalization:r,salt:i}=n,s=0;if(A!==void 0&&(M(A,void 0,"key"),s=A.length),this.v0l^=this.outputLen|s<<8|65536|1<<24,i!==void 0){M(i,void 0,"salt");let B=G(jt(i));this.v4l^=$(B[0]),this.v4h^=$(B[1]),this.v5l^=$(B[2]),this.v5h^=$(B[3])}if(r!==void 0){M(r,void 0,"personalization");let B=G(jt(r));this.v6l^=$(B[0]),this.v6h^=$(B[1]),this.v7l^=$(B[2]),this.v7h^=$(B[3])}if(A!==void 0){let B=new Uint8Array(this.blockLen);B.set(A),this.update(B),_(B)}}get(){let{v0l:n,v0h:o,v1l:A,v1h:r,v2l:i,v2h:s,v3l:B,v3h:j,v4l:l,v4h:a,v5l:f,v5h:d,v6l:u,v6h:p,v7l:w,v7h:y}=this;return[n,o,A,r,i,s,B,j,l,a,f,d,u,p,w,y]}set(n,o,A,r,i,s,B,j,l,a,f,d,u,p,w,y){this.v0l=n|0,this.v0h=o|0,this.v1l=A|0,this.v1h=r|0,this.v2l=i|0,this.v2h=s|0,this.v3l=B|0,this.v3h=j|0,this.v4l=l|0,this.v4h=a|0,this.v5l=f|0,this.v5h=d|0,this.v6l=u|0,this.v6h=p|0,this.v7l=w|0,this.v7h=y|0}compress(n,o,A){let{v0l:r,v0h:i,v1l:s,v1h:B,v2l:j,v2h:l,v3l:a,v3h:f,v4l:d,v4h:u,v5l:p,v5h:w,v6l:y,v6h:x,v7l:H,v7h:I}=this;c[0]=r,c[1]=i,c[2]=s,c[3]=B,c[4]=j,c[5]=l,c[6]=a,c[7]=f,c[8]=d,c[9]=u,c[10]=p,c[11]=w,c[12]=y,c[13]=x,c[14]=H,c[15]=I,c.set(k,16);let T=Qt(this.length),L=Jt(this.length);c[24]=k[8]^T,c[25]=k[9]^L,A&&(c[28]=~c[28],c[29]=~c[29]);let m=0,b=Zt;for(let z=0;z<12;z++)D(0,4,8,12,n,o+2*b[m++]),N(0,4,8,12,n,o+2*b[m++]),D(1,5,9,13,n,o+2*b[m++]),N(1,5,9,13,n,o+2*b[m++]),D(2,6,10,14,n,o+2*b[m++]),N(2,6,10,14,n,o+2*b[m++]),D(3,7,11,15,n,o+2*b[m++]),N(3,7,11,15,n,o+2*b[m++]),D(0,5,10,15,n,o+2*b[m++]),N(0,5,10,15,n,o+2*b[m++]),D(1,6,11,12,n,o+2*b[m++]),N(1,6,11,12,n,o+2*b[m++]),D(2,7,8,13,n,o+2*b[m++]),N(2,7,8,13,n,o+2*b[m++]),D(3,4,9,14,n,o+2*b[m++]),N(3,4,9,14,n,o+2*b[m++]);this.v0l^=c[0]^c[16],this.v0h^=c[1]^c[17],this.v1l^=c[2]^c[18],this.v1h^=c[3]^c[19],this.v2l^=c[4]^c[20],this.v2h^=c[5]^c[21],this.v3l^=c[6]^c[22],this.v3h^=c[7]^c[23],this.v4l^=c[8]^c[24],this.v4h^=c[9]^c[25],this.v5l^=c[10]^c[26],this.v5h^=c[11]^c[27],this.v6l^=c[12]^c[28],this.v6h^=c[13]^c[29],this.v7l^=c[14]^c[30],this.v7h^=c[15]^c[31],_(c)}destroy(){this.destroyed=!0,_(this.buffer32),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},F=Yt(t=>new gt(t));var rt={Argon2d:0,Argon2i:1,Argon2id:2},Z=4,oe=(t,e="")=>t===void 0?Uint8Array.of():nt(t,e),E=new Uint32Array(256);function v(t,e,n,o){let A=E[2*t],r=E[2*t+1],i=E[2*e],s=E[2*e+1],B=E[2*n],j=E[2*n+1],l=E[2*o],a=E[2*o+1],f=0,d=0,u=0,p=0,w=0;f=Math.imul(A,i),d=((A>>>0)*(i>>>0)-(f>>>0))/4294967296+.5|0,u=(A>>>0)+(i>>>0)+(f<<1>>>0),r=r+s+(d<<1|f>>>31)+(u/4294967296|0)|0,A=u|0,p=a^r,w=l^A,a=w,l=p,f=Math.imul(B,l),d=((B>>>0)*(l>>>0)-(f>>>0))/4294967296+.5|0,u=(B>>>0)+(l>>>0)+(f<<1>>>0),j=j+a+(d<<1|f>>>31)+(u/4294967296|0)|0,B=u|0,p=s^j,w=i^B,s=p>>>24|w<<8,i=p<<8|w>>>24,f=Math.imul(A,i),d=((A>>>0)*(i>>>0)-(f>>>0))/4294967296+.5|0,u=(A>>>0)+(i>>>0)+(f<<1>>>0),r=r+s+(d<<1|f>>>31)+(u/4294967296|0)|0,A=u|0,p=a^r,w=l^A,a=p>>>16|w<<16,l=p<<16|w>>>16,f=Math.imul(B,l),d=((B>>>0)*(l>>>0)-(f>>>0))/4294967296+.5|0,u=(B>>>0)+(l>>>0)+(f<<1>>>0),j=j+a+(d<<1|f>>>31)+(u/4294967296|0)|0,B=u|0,p=s^j,w=i^B,s=p<<1|w>>>31,i=p>>>31|w<<1,E[2*t]=A,E[2*t+1]=r,E[2*e]=i,E[2*e+1]=s,E[2*n]=B,E[2*n+1]=j,E[2*o]=l,E[2*o+1]=a}function Ae(t,e,n,o,A,r,i,s,B,j,l,a,f,d,u,p){v(t,A,B,f),v(e,r,j,d),v(n,i,l,u),v(o,s,a,p),v(t,r,l,p),v(e,i,a,f),v(n,s,B,d),v(o,A,j,u)}function Y(t,e,n,o,A){if(A)for(let r=0;r<256;r++){let i=t[e+r]^t[n+r];E[r]=i,t[o+r]^=i}else for(let r=0;r<256;r++){let i=t[e+r]^t[n+r];E[r]=i,t[o+r]=i}for(let r=0;r<128;r+=16)Ae(r,r+1,r+2,r+3,r+4,r+5,r+6,r+7,r+8,r+9,r+10,r+11,r+12,r+13,r+14,r+15);for(let r=0;r<16;r+=2)Ae(r,r+1,r+16,r+17,r+32,r+33,r+48,r+49,r+64,r+65,r+80,r+81,r+96,r+97,r+112,r+113);for(let r=0;r<256;r++)t[o+r]^=E[r];_(E)}function mt(t,e){let n=W(t),o=new Uint32Array(1),A=W(o);if(o[0]=$(e),e<=64)return F.create({dkLen:e}).update(A).update(n).digest();let r=new Uint8Array(e),i=F.create({}).update(A).update(n).digest(),s=0;for(r.set(i.subarray(0,32)),s+=32;e-s>64;s+=32){let B=F.create({}).update(i);B.digestInto(i),B.destroy(),r.set(i.subarray(0,32),s)}return r.set(F(i,{dkLen:e-s}),s),_(i,o),r}function Ge(t,e,n,o,A,r,i=!1){let s;t===0?e===0?s=A-1:i?s=e*o+A-1:s=e*o+(A==0?-1:0):i?s=n-o+A-1:s=n-o+(A==0?-1:0);let B=t!==0&&e!==Z-1?(e+1)*o:0,j=Math.imul(r,r),l=((r>>>0)*(r>>>0)-(j>>>0))/4294967296+.5|0,a=Math.imul(s,l),f=((s>>>0)*(l>>>0)-(a>>>0))/4294967296+.5|0,d=s-1-f;return(B+d)%n}var De=Math.pow(2,32),Be=1024**2,Ne=Be*1024;function C(t){return Number.isSafeInteger(t)&&t>=0&&t<De}function ve(t={}){t=K({},t);let e={t:3,m:Be,p:1,version:19,dkLen:32,maxmem:Ne,asyncTick:10};for(let[j,l]of Object.entries(t))l!==void 0&&(e[j]=l);let{dkLen:n,p:o,m:A,t:r,version:i,onProgress:s,asyncTick:B}=e;if(!C(n)||n<4)throw new Error(\'"dkLen" must be 4..\');if(!C(o)||o<1||o>=Math.pow(2,24))throw new Error(\'"p" must be 1..2^24\');if(!C(A))throw new Error(\'"m" must be 0..2^32\');if(!C(r)||r<1)throw new Error(\'"t" (iterations) must be 1..2^32\');if(s!==void 0&&typeof s!="function")throw new Error(\'"onProgress" must be a function\');if(R(B,"asyncTick"),!C(A)||A<8*o)throw new Error(\'"m" (memory) must be at least 8*p bytes\');if(i!==16&&i!==19)throw new Error(\'"version" must be 0x10 or 0x13, got \'+i);return e}function Ce(t,e,n,o){let A=[],r=new Uint32Array(1),i=W(r),s,B,j=!1,l=(a,f)=>(typeof a=="string"&&A.push(f),f);try{let a=l(t,nt(t,"password")),f=l(e,nt(e,"salt"));if(!C(a.length))throw new Error(\'"password" must be less of length 1..4Gb\');if(!C(f.length)||f.length<8)throw new Error(\'"salt" must be of length 8..4Gb\');if(!Object.values(rt).includes(n))throw new Error(\'"type" was invalid\');let{p:d,dkLen:u,m:p,t:w,version:y,key:x,personalization:H,maxmem:I,onProgress:T,asyncTick:L}=ve(o),m=x;x=l(m,oe(m,"key"));let b=H;H=l(b,oe(b,"personalization")),s=F.create();for(let z of[d,u,p,w,y,n])r[0]=$(z),s.update(i);for(let z of[a,f,x,H])r[0]=$(z.length),s.update(i).update(z);return B=new Uint32Array(18),s.digestInto(W(B)),j=!0,{H0:B,p:d,dkLen:u,m:p,t:w,version:y,maxmem:I,onProgress:T,asyncTick:L}}finally{s&&s.destroy(),_(r,...A),!j&&B&&_(B)}}function Re(t,e,n,o){let{H0:A,p:r,dkLen:i,m:s,t:B,version:j,maxmem:l,onProgress:a,asyncTick:f}=Ce(t,e,n,o);try{let d=r,u=4*r*Math.floor(s/(Z*r)),p=Math.floor(u/r),w=Math.floor(p/Z),y=u*1024;if(!C(l))throw new Error(\'"maxmem" expected <2**32, got \'+l);if(y>l)throw new Error(\'"maxmem" limit was hit: memUsed(mP*1024)=\'+y+", maxmem="+l);let x=new Uint32Array(y/4);for(let I=0;I<r;I++){let T=256*p*I;A[17]=$(I),A[16]=$(0),x.set(S(G(mt(A,1024))),T),A[16]=$(1),x.set(S(G(mt(A,1024))),T+256)}let H=()=>{};if(a){let I=B*Z*r*w-2*r,T=Math.max(Math.floor(I/1e4),1),L=0;H=()=>{L++,a&&(!(L%T)||L===I)&&a(L/I)}}return{type:n,mP:u,p:r,t:B,version:j,B:x,laneLen:p,lanes:d,segmentLen:w,dkLen:i,perBlock:H,asyncTick:f}}finally{_(A)}}function Xe(t,e,n,o){let A=new Uint32Array(256);for(let i=0;i<e;i++)for(let s=0;s<256;s++)A[s]^=t[256*(n*i+n-1)+s];let r=mt(S(A),o);return _(t,A),r}function*qe(t,e){let{type:n,mP:o,p:A,t:r,version:i,B:s,laneLen:B,lanes:j,segmentLen:l,perBlock:a}=t;e[262]=o,e[264]=r,e[266]=n;for(let f=0;f<r;f++){let d=f!==0&&i===19;e[256]=f;for(let u=0;u<Z;u++){e[260]=u;let p=n==rt.Argon2i||n==rt.Argon2id&&f===0&&u<2;for(let w=0;w<A;w++){e[258]=w,e[268]=0;let y=0;f===0&&u===0&&(y=2,p&&(e[268]++,Y(e,256,2*256,0,!1),Y(e,0,2*256,0,!1)));let x=w*B+u*l+y;for(let H=y;H<l;H++,x++){a();let I=x%B?x-1:x+B-1,T,L;if(p){let X=H%128;X===0&&(e[268]++,Y(e,256,2*256,0,!1),Y(e,0,2*256,0,!1)),T=e[2*X],L=e[2*X+1]}else{let X=256*I;T=s[X],L=s[X+1]}let m=f===0&&u===0?w:L%j,b=Ge(f,u,B,l,H,T,m==w),z=B*m+b;Y(s,256*I,256*z,x*256,d),yield}}}}_(e)}function Fe(t,e,n,o){let A=Re(e,n,t,o),r=qe(A,new Uint32Array(3*256));for(;!r.next().done;);return Xe(A.B,A.p,A.laneLen,A.dkLen)}var ie=(t,e,n={})=>Fe(rt.Argon2id,t,e,n);var se=16*1024,bt=32,ot=128,At=8,ce=65536,Ve=4294967296,We={instantiateWasm:t=>WebAssembly.instantiate(t),nobleHash:ie};function Bt(t,e,n){if(!(t instanceof Uint8Array)||t.length!==e)throw new Error(`Argon2id ${n} must be exactly ${e} bytes`)}function Ke(t,e){let n=new Uint8Array(ot);return n.set(e),n.set(t,ot-At),n}function le(t,e){if(!(t instanceof Uint8Array)||t.length!==bt)throw new Error("Argon2id implementation must return a 32-byte tag");return e.set(t.subarray(0,4)),e}function Ye(t){let e=new Uint8Array(t.memory.buffer,t.puzzle_ptr(),ot),n=new Uint8Array(t.memory.buffer,t.digest_ptr(),bt);return{implementation:"argon2id-scalar",wasm:!0,hash(o,A,r){if(Bt(o,At,"password"),Bt(r,4,"output"),e.fill(0),e.set(A),e.set(o,ot-At),t.hash_puzzle()!==0)throw new Error("Argon2id WASM hash failed");return le(n,r)},async solve(o,A,r){if(!Number.isSafeInteger(A)||A<0||A>4294967295)throw new Error("Argon2id threshold must be a uint32");if(!Number.isSafeInteger(r)||r<0||r>255)throw new Error("Argon2id solution index must be a byte");e.fill(0),e.set(o),t.prepare_puzzle();for(let i=0;i<Ve;i+=ce){let s=t.solve_batch(r,A,i,ce);if(s===1){let B=t.get_solution_nonce()>>>0;return Uint8Array.of(r,0,0,0,B>>>24,B>>>16,B>>>8,B)}if(s!==0)throw new Error("Argon2id WASM search failed");await new Promise(B=>setTimeout(B,0))}throw new Error("Argon2id nonce space exhausted")}}}function Ze(t){return{implementation:"argon2id-noble",wasm:!1,hash(e,n,o){Bt(e,At,"password"),Bt(o,4,"output");let A=Ke(e,n),r=t.nobleHash(A,A.subarray(0,16),{t:1,m:se,p:1,version:19,dkLen:bt,maxmem:se*1024});return le(r,o)}}}async function Je(t,e){var r,i;let n=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),o=await e.instantiateWasm(n),A=(i=(r=o==null?void 0:o.instance)!=null?r:o)==null?void 0:i.exports;if(!(A!=null&&A.memory)||typeof A.hash_puzzle!="function"||typeof A.solve_batch!="function"||typeof A.prepare_puzzle!="function")throw new Error("Argon2id WASM instantiation returned no solver");return A}async function Et(t={}){let e=ct(ct({},We),t);try{return Ye(await Je(Xt,e))}catch(n){return Ze(e)}}var Qe=4294967295;function tn(t){for(let e=t.length-1;e>=4;e--){if(t[e]!==255)return t[e]++,!0;t[e]=0}return!1}async function fe(t,e,n,o){if(!Number.isSafeInteger(e)||e<0||e>Qe)throw new Error("Argon2id threshold must be a uint32");if(!Number.isSafeInteger(n)||n<0||n>255)throw new Error("Argon2id solution index must be a byte");if(!o||typeof o.solve!="function"&&typeof o.hash!="function")throw new Error("Argon2id provider must expose solve() or hash()");if(typeof o.solve=="function")return o.solve(t,e,n);let A=new Uint8Array(8),r=new Uint8Array(4);for(A[0]=n;;){if(o.hash(A,t,r),ft(r,0)<=e)return A.slice();if(!tn(A))throw new Error("Argon2id nonce space exhausted")}}var en=0,nn=1;async function ae(t,e,n={}){var A,r;if(t===en)return((A=n.blake)!=null?A:Rt)(e);if(t!==nn)throw new Error(`Unknown puzzle challenge: ${t}`);let o=await((r=n.argon)!=null?r:Et)();return{wasm:o.wasm,solve(i,s){var B;return((B=n.search)!=null?B:fe)(e,i,s,o)}}}var J=null,je=null;self.onmessage=async t=>{var o;let{command:e,argument:n}=t.data;try{switch(e){case"init":{let{id:A,buffer:r,challenge:i}=n;J=null,J=await ae(i,r),je=A,self.postMessage({command:"init"});break}case"solve":{if(!J)throw new Error("Puzzle worker is not initialized");let{difficulty:A,puzzleIndex:r,debug:i}=n,s=Nt(A),B=await J.solve(s,r,i);if(!(B instanceof Uint8Array)||B.length!==8)throw new Error("Puzzle nonce space exhausted");self.postMessage({command:"solve",argument:{id:je,solution:B,wasm:J.wasm}});break}default:break}}catch(A){self.postMessage({command:"error",error:(o=A==null?void 0:A.message)!=null?o:String(A)})}};\n')}var vA=1,K=class{constructor(A={},e=!1,t=AA){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._workers=[],this._debug=e,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1,this._workFailed=!1,this._puzzle=null,this._WorkerClass=t,this._callbacks=Object.assign({workersReady:()=>0,workerError:()=>0,workStarted:()=>0,workCompleted:()=>0,progress:()=>0},A)}init(A,e){if(!A)return;if(A.challenge!==v&&A.challenge!==y)throw new Error(`Unknown puzzle challenge: ${A.challenge}`);if(A.isZero()&&A.challenge===v){this._debug&&console.debug("[privatecaptcha][pool] skipping initializing workers"),setTimeout(()=>this._callbacks.workersReady(e),0);return}let t=[];try{this.initWorkers(A,e,t)}catch(i){for(let o of t)o.terminate();throw this._workers=[],i}}initWorkers(A,e,t){let i=A.challenge===y?1:4,o=0,I=A.challenge===y?A.puzzleBytes:A.puzzleBuffer;for(let s=0;s<i;s++){let g=new this._WorkerClass;g.onerror=n=>{this._workers.includes(g)&&this.onWorkerError(n)},g.onmessage=n=>{if(!(!this._workers.includes(g)||!n.data))switch(n.data.command){case"init":o++,o===i&&this._callbacks.workersReady(e);break;case"solve":let{id:p,solution:k,wasm:x}=n.data.argument||{};this.onSolutionFound(p,k,x);break;case"error":n.data.error&&this.onWorkerError(n.data.error);break;default:break}},t.push(g)}this._workers=t,this._debug&&console.debug(`[privatecaptcha][pool] initializing workers. count=${t.length}`);for(let s of t)s.postMessage({command:"init",argument:{id:A.ID,challenge:A.challenge,buffer:I}})}solve(A){if(!A)return;this._debug&&console.debug("[privatecaptcha][pool] starting solving"),this._solutions=[],this._solutionsCount=A.solutionsCount,this._puzzleID=A.ID,this._puzzle=A,this._timeStarted=Date.now(),this._timeFinished=null,this._workFailed=!1;let e=A.isZero()&&A.challenge===v||A.solutionsCount===0,t=null;for(let i=0;i<A.solutionsCount;i++)e?(t||(t=new Uint8Array(8)),this._solutions.push(t)):(A.challenge!==y||i===0)&&this._workers[i%this._workers.length].postMessage({command:"solve",argument:{difficulty:A.difficulty,puzzleIndex:i,debug:this._debug}});this._callbacks.workStarted(),e&&setTimeout(()=>this.onWorkCompleted(),0)}stop(){let A=this._workers.length;for(let e=0;e<A;e++)this._workers[e].terminate();this._workers=[],this._debug&&console.debug("[privatecaptcha][pool] terminated the workers. count="+A)}reset(){this._solutions=[],this._solutionsCount=0,this._puzzleID=null,this._timeStarted=null,this._timeFinished=null,this._anyWasm=!1,this._workFailed=!1,this._puzzle=null}onSolutionFound(A,e,t){if(this._workFailed||this._timeFinished!==null||this._puzzle===null)return;if(A!==this._puzzleID){console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${A} expected=${this._puzzleID}`);return}if(!(e instanceof Uint8Array)||e.length!==8||typeof t!="boolean"||e[0]>=this._solutionsCount||this._solutions.some(o=>o[0]===e[0])||this._puzzle.challenge===y&&e[0]!==this._solutions.length){this.onWorkerError(new Error("Invalid puzzle worker solve response"));return}this._debug&&console.debug("[privatecaptcha][pool] solution found. length="+e.length),this._solutions.push(e),t&&(this._anyWasm=!0);let i=this._solutions.length;if(this._callbacks.progress(i*100/this._solutionsCount),i==this._solutionsCount)this.onWorkCompleted();else if(this._puzzle.challenge===y)try{this._workers[0].postMessage({command:"solve",argument:{difficulty:this._puzzle.difficulty,puzzleIndex:i,debug:this._debug}})}catch(o){this.onWorkerError(o)}}onWorkCompleted(){this._workFailed||this._timeFinished!==null||(this._timeFinished=Date.now(),this._callbacks.workCompleted())}onWorkerError(A){this._workFailed||this._timeFinished!==null||(this._workFailed=!0,this.stop(),this._callbacks.workerError(A))}serializeSolutions(A){this._debug&&console.debug("[privatecaptcha][pool] serializing solutions. count="+this._solutions.length);let e=this._solutions.reduce((s,g)=>s+g.length,0),t=this.writeMetadata(A),i=t.length,o=new Uint8Array(i+e),I=0;o.set(t,I),I+=t.length;for(let s=0;s<this._solutions.length;s++)o.set(this._solutions[s],I),I+=this._solutions[s].length;return sA(o)}writeMetadata(A){let t=new Uint8Array(7),i=0;t[i++]=vA&255,t[i++]=A&255;let o=this._anyWasm?1:0;t[i++]=o&255;let I=this.elapsedMillis();return t[i++]=I&255,t[i++]=I>>8&255,t[i++]=I>>16&255,t[i++]=I>>24&255,t}elapsedMillis(){return this._timeStarted&&this._timeFinished?this._timeFinished-this._timeStarted:0}};var T=typeof HTMLElement<"u"?HTMLElement:Object;var P=class extends T{constructor(){super(),this._circumference=0,this._root=this.attachShadow({mode:"open"})}connectedCallback(){let A=this.getAttribute("stroke"),e=100,t=e/2,i=t-A/2;this._circumference=i*2*Math.PI,this._root.innerHTML=`
2
+ <svg preserveAspectRatio="xMidYMid meet" viewBox="0 0 ${e} ${e}">
3
3
  <circle
4
4
  id="pie"
5
5
  style="stroke-dasharray: 0 ${this._circumference}"
6
- stroke-width="${r}"
6
+ stroke-width="${i}"
7
7
  fill="transparent"
8
- r="${r/2}"
9
- cx="${i}"
10
- cy="${i}"
8
+ r="${i/2}"
9
+ cx="${t}"
10
+ cy="${t}"
11
11
  />
12
12
  <circle
13
13
  id="track"
14
- stroke-width="${e}"
14
+ stroke-width="${A}"
15
15
  fill="transparent"
16
- r="${r}"
17
- cx="${i}"
18
- cy="${i}"
16
+ r="${i}"
17
+ cx="${t}"
18
+ cy="${t}"
19
19
  />
20
20
  <circle
21
21
  id="progress"
22
22
  stroke-dasharray="${this._circumference} ${this._circumference}"
23
23
  style="stroke-dashoffset: ${this._circumference}"
24
- stroke-width="${e}"
24
+ stroke-width="${A}"
25
25
  fill="transparent"
26
- r="${r}"
27
- cx="${i}"
28
- cy="${i}"
26
+ r="${i}"
27
+ cx="${t}"
28
+ cy="${t}"
29
29
  />
30
30
  </svg>
31
31
 
@@ -50,11 +50,11 @@ var b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",G=typeo
50
50
  stroke: var(--gray-color);
51
51
  }
52
52
  </style>
53
- `}setProgress(e){let t=e/100*this._circumference,i=this._circumference-t,r=this._root.getElementById("progress");r&&(r.style.strokeDashoffset=i);let s=this._root.getElementById("pie");s&&(s.style.strokeDasharray=t/2+" "+this._circumference)}static get observedAttributes(){return["progress"]}attributeChangedCallback(e,t,i){if(t!==i&&e==="progress"){let r=i!==null?Number.parseFloat(i):Number.NaN;Number.isNaN(r)||this.setProgress(r)}}};var ce=`@layer base,theme,custom;@layer base{:host,*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0 solid}:host{--extra-spacing: 0px;--label-spacing: .625rem;--border-radius: .125rem;--warn-color: #A70B0B;--accent-color: #009400;min-width:0;font-size:1rem;display:inline-block;max-width:100%;border-radius:var(--border-radius)}:host(.hidden){display:none}:host(.floating){display:block;position:absolute;left:0;top:0;transform:translateY(-100%);z-index:1000}@media(min-width:30em){:host{min-width:min(20em,100%)}}}@layer theme{:host([theme="light"]){--dark-color: #070113;--gray-color: #E0E0E0;--pie-color: #D8E9E9;--background-color: #fff;--checkbox-background-color: #FFF;--checkbox-hover-color: #EBF4F4}:host([theme="dark"]){--dark-color: #EBF4F4;--gray-color: #656C7B;--pie-color: #376262;--background-color: #041616;--checkbox-background-color: #223C3C;--checkbox-hover-color: #1C3232}:host{--border: 1px solid var(--gray-color)}}.pc-captcha-widget{display:flex;align-items:center;flex-direction:row;padding:.75em 1em;border:var(--border);border-radius:var(--border-radius);background-color:var(--background-color);box-sizing:border-box;width:100%;height:100%}.pc-interactive-area{display:flex;flex:0 1 auto;align-items:center;position:relative;min-width:0}.pc-interactive-area label{padding-left:var(--label-spacing);color:var(--dark-color);flex:0 1 auto;min-width:1em;white-space:normal}.pc-interactive-area input[type=checkbox]{font-size:1em;width:2em;height:2em;margin:0 0 0 calc(.125em + var(--extra-spacing));appearance:none;background-color:var(--checkbox-background-color);border:.125em solid var(--dark-color);border-radius:.25em;cursor:pointer;flex-shrink:0}.pc-interactive-area input[type=checkbox]+label{padding:0 0 0 calc(.125em + var(--extra-spacing) + var(--label-spacing))}@keyframes colorChange{0%,to{border-color:var(--dark-color)}50%{border-color:var(--gray-color)}}.pc-interactive-area input[type=checkbox].loading{animation:colorChange 2s infinite;animation-timing-function:ease-in-out;background-color:var(--checkbox-hover-color);cursor:default}.pc-interactive-area input[type=checkbox].ready{background-color:var(--checkbox-background-color);border-color:var(--dark-color);cursor:pointer}.pc-interactive-area input[type=checkbox].error{background-color:var(--checkbox-background-color);border-color:var(--warn-color);cursor:pointer}.pc-interactive-area input[type=checkbox].invalid{background-color:var(--checkbox-hover-color);border-color:var(--gray-color);cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover{background-color:var(--checkbox-hover-color);border-color:var(--accent-color)}.pc-interactive-area input[type=checkbox].invalid:hover+label{cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover+label{cursor:pointer}@keyframes dots-1{0%{opacity:0}25%{opacity:1}}@keyframes dots-2{0%{opacity:0}50%{opacity:1}}@keyframes dots-3{0%{opacity:0}75%{opacity:1}}@-webkit-keyframes dots-1{0%{opacity:0}25%{opacity:1}}@-webkit-keyframes dots-2{0%{opacity:0}50%{opacity:1}}@-webkit-keyframes dots-3{0%{opacity:0}75%{opacity:1}}.pc-interactive-area .dots span{animation:dots-1 2s infinite steps(1);-webkit-animation:dots-1 2s infinite steps(1)}.pc-interactive-area .dots span:first-child+span{animation-name:dots-2;-webkit-animation-name:dots-2}.pc-interactive-area .dots span:first-child+span+span{animation-name:dots-3;-webkit-animation-name:dots-3}#pc-progress{display:flex;justify-content:center;margin:0 0 0 var(--extra-spacing);flex-shrink:0}#pc-progress+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}.pc-spacer{flex-basis:0;flex-shrink:1;flex-grow:1;width:4em;min-width:0}.pc-info{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;margin-right:calc(.125em + var(--extra-spacing));color:var(--dark-color)}.pc-info svg{width:auto;height:3.125em;max-width:100%;max-height:100%}a.pc-link{margin-top:5px;text-decoration:none;color:currentcolor;text-align:center;font-size:.55em;text-transform:uppercase;font-weight:700;line-height:1.1em}a.pc-link:hover{text-decoration:underline}@keyframes checkmark{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0px}}svg.verified{margin:0 0 0 var(--extra-spacing);flex-shrink:0;width:2.25em;height:2.25em}svg.verified+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}svg.verified polyline{animation:checkmark .35s ease-in-out .1s backwards;stroke:#f2f2f2}svg.verified circle{fill:var(--accent-color)}#pc-debug{font-size:.75em;color:var(--gray-color);position:absolute;top:100%;left:calc(2em + 1em + 2*.125em + 2*var(--extra-spacing) + var(--label-spacing));cursor:default}#pc-debug.tooltip{text-decoration:underline;text-decoration-style:dashed;cursor:help}#pc-debug.warn{color:var(--warn-color)}#pc-debug.notice{color:#c70}
54
- `;var h="click_to_verify",d="verifying",p="success",C="unavailable",u="incomplete",c="error",f="testing",g="notice",V={en:{[h]:"Click to verify",[d]:"Verifying",[p]:"Verified",[C]:"Not available",[u]:"incomplete",[c]:"error",[f]:"testing",[g]:"notice"},de:{[h]:"Zum Best\xE4tigen klicken",[d]:"Wird \xFCberpr\xFCft",[p]:"Verifiziert",[C]:"Nicht verf\xFCgbar",[u]:"unvollst\xE4ndig",[c]:"fehler",[f]:"testmodus",[g]:"hinweis"},es:{[h]:"Haz clic para verificar",[d]:"Verificando",[p]:"Verificado",[C]:"No disponible",[u]:"incompleto",[c]:"error",[f]:"prueba",[g]:"aviso"},fr:{[h]:"Cliquez pour v\xE9rifier",[d]:"V\xE9rification en cours",[p]:"V\xE9rifi\xE9",[C]:"Non disponible",[u]:"incomplet",[c]:"erreur",[f]:"test",[g]:"avis"},it:{[h]:"Clicca per verificare",[d]:"Verifica in corso",[p]:"Verificato",[C]:"Non disponibile",[u]:"incompleto",[c]:"errore",[f]:"test",[g]:"avviso"},nl:{[h]:"Klik om te verifi\xEBren",[d]:"Bezig met verifi\xEBren",[p]:"Geverifieerd",[C]:"Niet beschikbaar",[u]:"onvolledig",[c]:"fout",[f]:"testen",[g]:"melding"},sv:{[h]:"Klicka f\xF6r att verifiera",[d]:"Verifierar",[p]:"Verifierad",[C]:"Inte tillg\xE4nglig",[u]:"ofullst\xE4ndig",[c]:"fel",[f]:"test",[g]:"notis"},no:{[h]:"Klikk for \xE5 bekrefte",[d]:"Bekrefter",[p]:"Bekreftet",[C]:"Ikke tilgjengelig",[u]:"ufullstendig",[c]:"feil",[f]:"test",[g]:"varsel"},pl:{[h]:"Kliknij, aby zweryfikowa\u0107",[d]:"Weryfikowanie",[p]:"Zweryfikowano",[C]:"Niedost\u0119pne",[u]:"niekompletne",[c]:"b\u0142\u0105d",[f]:"test",[g]:"uwaga"},uk:{[h]:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438",[d]:"\u0412\u0438\u043A\u043E\u043D\u0443\u0454\u0442\u044C\u0441\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0430",[p]:"\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043D\u043E",[C]:"\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E",[u]:"\u043D\u0435\u043F\u043E\u0432\u043D\u0438\u0439",[c]:"\u043F\u043E\u043C\u0438\u043B\u043A\u0430",[f]:"\u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F",[g]:"\u0443\u0432\u0430\u0433\u0430"},tr:{[h]:"Do\u011Frulamak i\xE7in t\u0131klay\u0131n",[d]:"Do\u011Frulan\u0131yor",[p]:"Do\u011Fruland\u0131",[C]:"Kullan\u0131lam\u0131yor",[u]:"eksik",[c]:"hata",[f]:"test",[g]:"bildirim"},fi:{[h]:"Napsauta vahvistaaksesi",[d]:"Vahvistetaan",[p]:"Vahvistettu",[C]:"Ei saatavilla",[u]:"ep\xE4t\xE4ydellinen",[c]:"virhe",[f]:"testi",[g]:"ilmoitus"},et:{[h]:"Kl\xF5psa kinnitamiseks",[d]:"Kinnitamine",[p]:"Kinnitatud",[C]:"Pole saadaval",[u]:"puudulik",[c]:"viga",[f]:"test",[g]:"teade"}};typeof window<"u"&&window.customElements&&!window.customElements.get("progress-ring")&&window.customElements.define("progress-ring",O);var m="empty",S="error",R="loading",v="ready",k="inprogress",_="verified",K="invalid",H="popup",Ae="hidden",z="widget",E="pc-checkbox",X="pc-progress",pe="pc-debug",ee="warn",Fe="notice",Ee="tooltip",ye=`<svg viewBox="0 0 39.4 41.99" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" class="pc-logo" preserveAspectRatio="xMidYMid meet">
53
+ `}setProgress(A){let e=A/100*this._circumference,t=this._circumference-e,i=this._root.getElementById("progress");i&&(i.style.strokeDashoffset=t);let o=this._root.getElementById("pie");o&&(o.style.strokeDasharray=e/2+" "+this._circumference)}static get observedAttributes(){return["progress"]}attributeChangedCallback(A,e,t){if(e!==t&&A==="progress"){let i=t!==null?Number.parseFloat(t):Number.NaN;Number.isNaN(i)||this.setProgress(i)}}};var cA=`@layer base,theme,custom;@layer base{:host,*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0 solid}:host{--extra-spacing: 0px;--label-spacing: .625rem;--border-radius: .125rem;--warn-color: #A70B0B;--accent-color: #009400;min-width:0;font-size:1rem;display:inline-block;max-width:100%;border-radius:var(--border-radius)}:host(.hidden){display:none}:host(.floating){display:block;position:absolute;left:0;top:0;transform:translateY(-100%);z-index:1000}@media(min-width:30em){:host{min-width:min(20em,100%)}}}@layer theme{:host([theme="light"]){--dark-color: #070113;--gray-color: #E0E0E0;--pie-color: #D8E9E9;--background-color: #fff;--checkbox-background-color: #FFF;--checkbox-hover-color: #EBF4F4}:host([theme="dark"]){--dark-color: #EBF4F4;--gray-color: #656C7B;--pie-color: #376262;--background-color: #041616;--checkbox-background-color: #223C3C;--checkbox-hover-color: #1C3232}:host{--border: 1px solid var(--gray-color)}}.pc-captcha-widget{display:flex;align-items:center;flex-direction:row;padding:.75em 1em;border:var(--border);border-radius:var(--border-radius);background-color:var(--background-color);box-sizing:border-box;width:100%;height:100%}.pc-interactive-area{display:flex;flex:0 1 auto;align-items:center;position:relative;min-width:0}.pc-interactive-area label{padding-left:var(--label-spacing);color:var(--dark-color);flex:0 1 auto;min-width:1em;white-space:normal}.pc-interactive-area input[type=checkbox]{font-size:1em;width:2em;height:2em;margin:0 0 0 calc(.125em + var(--extra-spacing));appearance:none;background-color:var(--checkbox-background-color);border:.125em solid var(--dark-color);border-radius:.25em;cursor:pointer;flex-shrink:0}.pc-interactive-area input[type=checkbox]+label{padding:0 0 0 calc(.125em + var(--extra-spacing) + var(--label-spacing))}@keyframes colorChange{0%,to{border-color:var(--dark-color)}50%{border-color:var(--gray-color)}}.pc-interactive-area input[type=checkbox].loading{animation:colorChange 2s infinite;animation-timing-function:ease-in-out;background-color:var(--checkbox-hover-color);cursor:default}.pc-interactive-area input[type=checkbox].ready{background-color:var(--checkbox-background-color);border-color:var(--dark-color);cursor:pointer}.pc-interactive-area input[type=checkbox].error{background-color:var(--checkbox-background-color);border-color:var(--warn-color);cursor:pointer}.pc-interactive-area input[type=checkbox].invalid{background-color:var(--checkbox-hover-color);border-color:var(--gray-color);cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover{background-color:var(--checkbox-hover-color);border-color:var(--accent-color)}.pc-interactive-area input[type=checkbox].invalid:hover+label{cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover+label{cursor:pointer}@keyframes dots-1{0%{opacity:0}25%{opacity:1}}@keyframes dots-2{0%{opacity:0}50%{opacity:1}}@keyframes dots-3{0%{opacity:0}75%{opacity:1}}@-webkit-keyframes dots-1{0%{opacity:0}25%{opacity:1}}@-webkit-keyframes dots-2{0%{opacity:0}50%{opacity:1}}@-webkit-keyframes dots-3{0%{opacity:0}75%{opacity:1}}.pc-interactive-area .dots span{animation:dots-1 2s infinite steps(1);-webkit-animation:dots-1 2s infinite steps(1)}.pc-interactive-area .dots span:first-child+span{animation-name:dots-2;-webkit-animation-name:dots-2}.pc-interactive-area .dots span:first-child+span+span{animation-name:dots-3;-webkit-animation-name:dots-3}#pc-progress{display:flex;justify-content:center;margin:0 0 0 var(--extra-spacing);flex-shrink:0}#pc-progress+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}.pc-spacer{flex-basis:0;flex-shrink:1;flex-grow:1;width:4em;min-width:0}.pc-info{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;margin-right:calc(.125em + var(--extra-spacing));color:var(--dark-color)}.pc-info svg{width:auto;height:3.125em;max-width:100%;max-height:100%}a.pc-link{margin-top:5px;text-decoration:none;color:currentcolor;text-align:center;font-size:.55em;text-transform:uppercase;font-weight:700;line-height:1.1em}a.pc-link:hover{text-decoration:underline}@keyframes checkmark{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0px}}svg.verified{margin:0 0 0 var(--extra-spacing);flex-shrink:0;width:2.25em;height:2.25em}svg.verified+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}svg.verified polyline{animation:checkmark .35s ease-in-out .1s backwards;stroke:#f2f2f2}svg.verified circle{fill:var(--accent-color)}#pc-debug{font-size:.75em;color:var(--gray-color);position:absolute;top:100%;left:calc(2em + 1em + 2*.125em + 2*var(--extra-spacing) + var(--label-spacing));cursor:default}#pc-debug.tooltip{text-decoration:underline;text-decoration-style:dashed;cursor:help}#pc-debug.warn{color:var(--warn-color)}#pc-debug.notice{color:#c70}
54
+ `;var a="click_to_verify",l="verifying",c="success",B="unavailable",f="incomplete",h="error",Q="testing",C="notice",J={en:{[a]:"Click to verify",[l]:"Verifying",[c]:"Verified",[B]:"Not available",[f]:"incomplete",[h]:"error",[Q]:"testing",[C]:"notice"},de:{[a]:"Zum Best\xE4tigen klicken",[l]:"Wird \xFCberpr\xFCft",[c]:"Verifiziert",[B]:"Nicht verf\xFCgbar",[f]:"unvollst\xE4ndig",[h]:"fehler",[Q]:"testmodus",[C]:"hinweis"},es:{[a]:"Haz clic para verificar",[l]:"Verificando",[c]:"Verificado",[B]:"No disponible",[f]:"incompleto",[h]:"error",[Q]:"prueba",[C]:"aviso"},fr:{[a]:"Cliquez pour v\xE9rifier",[l]:"V\xE9rification en cours",[c]:"V\xE9rifi\xE9",[B]:"Non disponible",[f]:"incomplet",[h]:"erreur",[Q]:"test",[C]:"avis"},it:{[a]:"Clicca per verificare",[l]:"Verifica in corso",[c]:"Verificato",[B]:"Non disponibile",[f]:"incompleto",[h]:"errore",[Q]:"test",[C]:"avviso"},nl:{[a]:"Klik om te verifi\xEBren",[l]:"Bezig met verifi\xEBren",[c]:"Geverifieerd",[B]:"Niet beschikbaar",[f]:"onvolledig",[h]:"fout",[Q]:"testen",[C]:"melding"},sv:{[a]:"Klicka f\xF6r att verifiera",[l]:"Verifierar",[c]:"Verifierad",[B]:"Inte tillg\xE4nglig",[f]:"ofullst\xE4ndig",[h]:"fel",[Q]:"test",[C]:"notis"},no:{[a]:"Klikk for \xE5 bekrefte",[l]:"Bekrefter",[c]:"Bekreftet",[B]:"Ikke tilgjengelig",[f]:"ufullstendig",[h]:"feil",[Q]:"test",[C]:"varsel"},pl:{[a]:"Kliknij, aby zweryfikowa\u0107",[l]:"Weryfikowanie",[c]:"Zweryfikowano",[B]:"Niedost\u0119pne",[f]:"niekompletne",[h]:"b\u0142\u0105d",[Q]:"test",[C]:"uwaga"},uk:{[a]:"\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438",[l]:"\u0412\u0438\u043A\u043E\u043D\u0443\u0454\u0442\u044C\u0441\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0430",[c]:"\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043D\u043E",[B]:"\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E",[f]:"\u043D\u0435\u043F\u043E\u0432\u043D\u0438\u0439",[h]:"\u043F\u043E\u043C\u0438\u043B\u043A\u0430",[Q]:"\u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F",[C]:"\u0443\u0432\u0430\u0433\u0430"},tr:{[a]:"Do\u011Frulamak i\xE7in t\u0131klay\u0131n",[l]:"Do\u011Frulan\u0131yor",[c]:"Do\u011Fruland\u0131",[B]:"Kullan\u0131lam\u0131yor",[f]:"eksik",[h]:"hata",[Q]:"test",[C]:"bildirim"},fi:{[a]:"Napsauta vahvistaaksesi",[l]:"Vahvistetaan",[c]:"Vahvistettu",[B]:"Ei saatavilla",[f]:"ep\xE4t\xE4ydellinen",[h]:"virhe",[Q]:"testi",[C]:"ilmoitus"},et:{[a]:"Kl\xF5psa kinnitamiseks",[l]:"Kinnitamine",[c]:"Kinnitatud",[B]:"Pole saadaval",[f]:"puudulik",[h]:"viga",[Q]:"test",[C]:"teade"}};typeof window<"u"&&window.customElements&&!window.customElements.get("progress-ring")&&window.customElements.define("progress-ring",P);var d="empty",w="error",G="loading",U="ready",E="inprogress",D="verified",z="invalid",N="popup",fA="hidden",j="widget",F="pc-checkbox",O="pc-progress",pA="pc-debug",tA="warn",bA="notice",_A="tooltip",MA=`<svg viewBox="0 0 39.4 41.99" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" class="pc-logo" preserveAspectRatio="xMidYMid meet">
55
55
  <path d="M0 0v30.62l4.29 2.48V4.85h30.83v23.29l-15.41 8.9-6.83-3.94v-4.95l6.83 3.94 11.12-6.42V9.91H8.58v25.66l11.12 6.42 19.7-11.37V0Zm12.87 14.86h13.66v8.32l-6.83 3.94-6.83-3.94z" fill="currentColor"/>
56
- </svg>`,be=`<svg class="verified" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 154 154">
56
+ </svg>`,JA=`<svg class="verified" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 154 154">
57
57
  <g fill="none"><circle cx="77" cy="77" r="76"></circle>
58
58
  <polyline class="st0" stroke-width="12" points="43.5,77.8 63.7,97.9 112.2,49.4" style="stroke-dasharray:100px, 100px; stroke-dashoffset: 200px;"/></g>
59
- </svg>`;function Ce(o){let e=document.createElement("template");return e.innerHTML=o.trim(),e.content.firstChild}function x(o){let e=document.createElement("input");return e.type="checkbox",e.id=E,e.className=o,e.required=!0,e}function y(o,e){let t=document.createElement("label");return t.htmlFor=e,t.textContent=o,t}function ve(){let o=document.createElement("progress-ring");return o.id=X,o.setAttribute("stroke","12"),o.setAttribute("progress","0"),o}function Ue(o){let e=y(o,X),t=document.createElement("span");t.className="dots";for(let i=0;i<3;i++){let r=document.createElement("span");r.textContent=".",t.appendChild(r)}return e.appendChild(t),e}function q(o,e,t){let i=document.createElement("span");return i.id=pe,e&&i.classList.add(ee),t&&(i.classList.add(Ee),i.title=t),i.textContent=o,i}function Qe(){let o=document.createElement("div");o.className="pc-info",o.appendChild(Ce(ye));let e=document.createElement("a");return e.href="https://privatecaptcha.com",e.className="pc-link",e.rel="noopener nofollow",e.target="_blank",e.appendChild(document.createTextNode("Private")),e.appendChild(document.createElement("br")),e.appendChild(document.createTextNode("Captcha")),o.appendChild(e),o}function de(o,e){switch(o){case 0:return"";case 1:return e[u];case 2:return e[f];default:return e[c]}}var L=class extends N{constructor(){super(),this._state="",this._root=this.attachShadow({mode:"open"}),this._debug=!1,this._error=null,this._internalError=null,this._notice=null,this._displayMode=Ae,this._lang="en";let e=new CSSStyleSheet;e.replaceSync(ce),this._root.adoptedStyleSheets=[e],this._overridesSheet=null}update(){this._debug=this.getAttribute("debug"),this._error=null,this._internalError=null,this._displayMode=this.getAttribute("display-mode"),this._lang=this.getAttribute("lang"),this._lang in V||(console.warn(`[privatecaptcha][progress] Localization not found. lang=${this._lang}`),this._lang="en");let e=this.getAttribute("extra-styles");this.updateStyles(e)}connectedCallback(){this.update();let e=this._displayMode==z;this.setState(m,e)}setState(e,t){return e==this._state?(console.debug("[privatecaptcha][progress] already in this state: "+e),H===this._displayMode&&this._syncHostClass(t),!1):(this._debug&&console.debug(`[privatecaptcha][progress] change state. old=${this._state} new=${e}`),this.render(e,t),this._state=e,!0)}render(e,t){let i=document.createElement("div");i.className="pc-interactive-area";let r=!1,s=!1,n=V[this._lang];switch(e){case m:r=!0,i.appendChild(x("")),i.appendChild(y(n[h],E));break;case R:r=!0,i.appendChild(x("loading")),i.appendChild(y(n[h],E));break;case v:r=!0,i.appendChild(x("ready")),i.appendChild(y(n[h],E)),s=t;break;case k:i.appendChild(ve()),i.appendChild(Ue(n[d])),s=t;break;case _:i.appendChild(Ce(be)),i.appendChild(y(n[p],X)),s=t;break;case K:i.appendChild(x("invalid")),i.appendChild(y(n[C],E));break;case S:r=!0,i.appendChild(x("error")),i.appendChild(y(n[c],E));break;default:console.error(`[privatecaptcha][progress] unknown state: ${e}`);break}if(this._debug||this._error||this._notice)if(this._error){let I=de(this._error,n);i.appendChild(q(I,this._error,this._debug&&this._error?this._internalError:null))}else if(this._notice){let I=q(n[g],!1,this._notice);I.classList.add(Fe),i.appendChild(I)}else i.appendChild(q(`[${e}]`,!1,null));this._syncHostClass(s);let a=document.createElement("div");a.className="pc-captcha-widget",a.appendChild(i);let A=document.createElement("div");if(A.className="pc-spacer",a.appendChild(A),a.appendChild(Qe()),this._root.replaceChildren(a),r){let I=this._root.getElementById(E);I?I.addEventListener("change",this.onCheckboxClicked.bind(this)):console.warn("[privatecaptcha][progress] checkbox not found in the Shadow DOM")}}_syncHostClass(e){let t="";switch(this._displayMode){case Ae:t="hidden";break;case H:t=e?"floating":"hidden";break;case z:break}this.classList.remove("hidden","floating"),t&&this.classList.add(t)}onCheckboxClicked(e){if(e.preventDefault(),this._debug&&console.debug("[privatecaptcha][progress] checkbox was clicked"),e.target.checked){let t=new CustomEvent("privatecaptcha:checked",{bubbles:!0,composed:!0});this.dispatchEvent(t)}else console.warn("[privatecaptcha][progress] checkbox was unchecked")}setProgress(e){if(k==this._state){let t=this._root.getElementById(X);t?t.setProgress(e):console.warn("[privatecaptcha][progress] progress element not found")}else this._debug&&console.debug(`[privatecaptcha][progress] skipping updating progress when not in progress. state=${this._state}`)}setError(e,t,i){this._error=e,this._internalError=t,this._notice=i||null}setDebugText(e,t){let i=this._root.getElementById(pe);if(i){let r="";if(this._error){let s=V[this._lang];r=de(this._error,s)}else this._notice?r=V[this._lang][g]:r=`[${e}]`;i.textContent=r,t||this._error?i.classList.add(ee):i.classList.remove(ee)}}static get observedAttributes(){return["state","progress","extra-styles"]}updateStyles(e){let t=this._root.adoptedStyleSheets.filter(i=>i!==this._overridesSheet);if(e){let i=`@layer custom { :host { ${e} } }`;this._overridesSheet||(this._overridesSheet=new CSSStyleSheet),this._overridesSheet.replaceSync(i),this._root.adoptedStyleSheets=[...t,this._overridesSheet]}else this._overridesSheet=null,this._root.adoptedStyleSheets=t}attributeChangedCallback(e,t,i){if(t!==i)switch(e){case"progress":let r=i!==null?Number.parseFloat(i):Number.NaN;Number.isNaN(r)||this.setProgress(r);break;case"extra-styles":this.updateStyles(i);break}}};typeof window<"u"&&window.customElements&&!window.customElements.get("private-captcha")&&window.customElements.define("private-captcha",L);var xe="https://api.privatecaptcha.com/puzzle",He="https://api.eu.privatecaptcha.com/puzzle",De="recaptcha";function Re(o){for(;o&&o.tagName!=="FORM";)o=o.parentElement;return o}var ue=class{constructor(e,t={}){this._element=e,this._puzzle=null,this._expiryTimeout=null,this._state=m,this._lastProgress=null,this._solution=null,this._userStarted=!1,this._apiTriggered=!1,this._options={},this._errorCode=0,this._internalError=null,this.setOptions(t),this._workersPool=new P({workersReady:this.onWorkersReady.bind(this),workerError:this.onWorkerError.bind(this),workStarted:this.onWorkStarted.bind(this),workCompleted:this.onWorkCompleted.bind(this),progress:this.onWorkProgress.bind(this)},this._options.debug);let i=Re(this._element);if(i){if(i.addEventListener("focusin",this.onFocusIn.bind(this),{passive:!0}),this._element.replaceChildren(this._createCaptchaElement()),this._element.addEventListener("privatecaptcha:checked",this.onChecked.bind(this)),this._options.storeVariable&&(this._element[this._options.storeVariable]=this),H===this._options.displayMode){let r=i.querySelector(".private-captcha-anchor");r?r.style.position="relative":console.warn("[privatecaptcha] cannot find anchor for popup")}this.checkConfigured()}else console.warn("[privatecaptcha] cannot find form element")}_createCaptchaElement(){let e=document.createElement("private-captcha");return this._updateCaptchaElement(e),e}_updateCaptchaElement(e){e.setAttribute("lang",this._options.lang),e.setAttribute("theme",this._options.theme),e.setAttribute("extra-styles",this._options.styles),this._options.debug&&e.setAttribute("debug","true"),e.setAttribute("display-mode",this._options.displayMode)}setOptions(e){let i=this._element.dataset.eu||null?He:xe,r="private-captcha-solution";e.hasOwnProperty("compat")&&e.compat===De&&(r="g-recaptcha-response");let s="";if(e.hasOwnProperty("sitekey")&&(s=e.sitekey),this._options=Object.assign({startMode:this._element.dataset.startMode||"auto",debug:this._element.dataset.debug,fieldName:this._element.dataset.solutionField||r,puzzleEndpoint:this._element.dataset.puzzleEndpoint||i,sitekey:s||this._element.dataset.sitekey||"",displayMode:this._element.dataset.displayMode||"widget",lang:this._element.dataset.lang||"auto",theme:this._element.dataset.theme||"light",styles:this._element.dataset.styles||"",storeVariable:this._element.dataset.storeVariable||null},e),this._options.lang==="auto"){let n="";typeof document<"u"&&document.documentElement&&(n=document.documentElement.lang),!n&&typeof navigator<"u"&&(n=navigator.language||navigator.userLanguage||""),typeof n=="string"&&n.length>=2&&(this._options.lang=n.split("-")[0].toLowerCase())}}async init(e){this.trace(`init() was called. state=${this._state}`),this._puzzle=null,this._solution=null,this._errorCode=0,this._internalError=null,this._notice=null;let t=this.checkConfigured();if(!t)return;if(m!==this._state&&S!==this._state){console.warn(`[privatecaptcha] captcha has already been initialized. state=${this._state}`);return}this._workersPool&&(this._workersPool.stop(),this._workersPool.reset());let i=this._options.startMode==="auto"||e;try{this.setState(R),this.setProgressState(R),this.trace(`fetching puzzle. sitekey=${t}`);let r=await le(this._options.puzzleEndpoint,t);this._notice=r.notice,this._puzzle=new M(r.data),this._puzzle&&this._puzzle.isZero()&&(this._errorCode=2);let s=this._puzzle.expirationMillis();this.trace(`parsed puzzle buffer. isZero=${this._puzzle.isZero()} ttl=${s/1e3}`),this._expiryTimeout&&clearTimeout(this._expiryTimeout),s&&(this._expiryTimeout=setTimeout(()=>this.expire(),s)),this._workersPool.init(this._puzzle,i),this.signalInit()}catch(r){console.error("[privatecaptcha]",r),this._expiryTimeout&&clearTimeout(this._expiryTimeout),this._errorCode=3,this._internalError=r.internalError||r.message,this.setState(S);let s=this.shouldFinalizeWork();this.setProgressState(s?_:m),s&&(this.saveSolutions(),this.signalErrored())}}checkConfigured(){let e=this._options.sitekey||this._element.dataset.sitekey;return e||(console.error("[privatecaptcha] sitekey not set on captcha element"),this._errorCode=1,this.setState(K),this.setProgressState(K),null)}start(){if(v!==this._state){console.warn(`[privatecaptcha] solving has already been started. state=${this._state}`);return}this.trace("starting solving captcha");try{this.setState(k),this._workersPool.solve(this._puzzle)}catch(e){console.error("[privatecaptcha]",e)}}dispatchEvent(e,t={}){let i=new CustomEvent(`privatecaptcha:${e}`,{bubbles:!1,detail:{widget:this,element:this._element,...t}});this._element.dispatchEvent(i)}signalEvent(e,t){this.dispatchEvent(e);let i=this._element.dataset[t];if(i)try{window[i](this)}catch(r){console.error("[privatecaptcha] Error in callback",e,r)}}signalInit(){this.signalEvent("init","initCallback")}signalStarted(){this.signalEvent("start","startedCallback")}signalFinished(){this.signalEvent("finish","finishedCallback")}signalErrored(){this.signalEvent("error","erroredCallback")}signalReset(){this.signalEvent("reset","resetCallback")}ensureNoSolutionField(){let e=this._element.querySelector(`input[name="${this._options.fieldName}"]`);if(e)try{this._element.removeChild(e)}catch(t){console.warn("[privatecaptcha]",t)}}reset(e={}){this.trace("reset captcha"),this._expiryTimeout&&clearTimeout(this._expiryTimeout),this._workersPool&&(this._workersPool.stop(),this._workersPool.reset()),this._puzzle=null,this._solution=null,this._errorCode=0,this._internalError=null,this._notice=null,this.setOptions(e),this.setState(m);let t=this._element.querySelector("private-captcha");t&&(this._updateCaptchaElement(t),t.update()),this.setProgressState(m,!0),this.ensureNoSolutionField(),this._userStarted=!1,this._apiTriggered=!1,this.signalReset()}updateStyles(){let e=this._element.dataset.styles||"";if(e!==this._options.styles){this._options.styles=e;let t=this._element.querySelector("private-captcha");t&&t.setAttribute("extra-styles",e)}}expire(){this.trace("expire captcha"),this._workersPool&&this._workersPool.stop(),this.setState(m),this.setProgressState(m),this.ensureNoSolutionField(),this._apiTriggered=!1,this.init(this._userStarted)}element(){return this._element}solution(){return this._solution}onFocusIn(e){if(this.trace("onFocusIn event handler"),m!==this._state){this.trace(`skipping focusin event with non-empty state. state=${this._state}`);return}let t=this._element.querySelector("private-captcha");if(t&&e.target==t){this.trace("skipping focusin event on captcha element");return}this.init(!1)}execute(){if(this._apiTriggered&&S!==this._state)return this.trace("skipping duplicate execute event handler"),new Promise(()=>{});this.trace(`execute event handler. state=${this._state}`),this._apiTriggered=!0;let e=this._options.startMode==="auto"?k:this._state;return this._triggerSolving(e),new Promise(()=>{})}onChecked(e){if(e&&e.stopPropagation(),this._userStarted&&S!==this._state){this.trace("skipping duplicate onChecked handler");return}this.trace(`onChecked event handler. state=${this._state}`),this._userStarted=!0,this._triggerSolving(k)}_triggerSolving(e){let t=!1;switch(this._state){case v:this.start();break;case m:case S:let i=this._userStarted||this._apiTriggered;this.init(i);break;case R:break;case k:setTimeout(()=>this.setProgress(this._lastProgress),500);break;case _:e=_,t=!0;break;default:console.warn(`[privatecaptcha] triggerSolving: unexpected state. state=${this._state}`);return}this.setProgressState(e),t&&(this.saveSolutions(),this.signalFinished())}shouldFinalizeWork(){return this._userStarted||this._apiTriggered&&(this._options.startMode==="auto"||this._options.displayMode==="hidden")}onWorkersReady(e){this.trace(`workers are ready. autostart=${e}`),this.setState(v),!this._userStarted&&!(this._apiTriggered&&e)&&this.setProgressState(v),(e||this._userStarted||this._apiTriggered)&&this.start()}onWorkerError(e){console.error("[privatecaptcha] error in worker:",e),this._errorCode=4}onWorkStarted(){this.signalStarted()}onWorkCompleted(){if(this.trace("[privatecaptcha] work completed"),k!==this._state){console.warn(`[privatecaptcha] solving has not been started. state=${this._state}`);return}this.setState(_);let e=this.shouldFinalizeWork();e&&this.setProgressState(_),e&&(this.saveSolutions(),setTimeout(()=>this.signalFinished(),500))}onWorkProgress(e){if(k!==this._state){console.warn(`[privatecaptcha] skipping progress update. state=${this._state}`);return}this.trace(`progress changed. percent=${e}`),this.setProgress(e)}saveSolutions(){let t=`${this._workersPool.serializeSolutions(this._errorCode)}.${this._puzzle?this._puzzle.rawData:""}`;this.ensureNoSolutionField(),this._element.insertAdjacentHTML("beforeend",`<input name="${this._options.fieldName}" type="hidden" value="${t}">`),this._solution=t,this.trace(`saved solutions. field=${this._options.fieldName} payload=${t}`)}setProgressState(e,t=!1){let i=this._userStarted||z===this._options.displayMode||this._apiTriggered&&H===this._options.displayMode,r=this._element.querySelector("private-captcha");if(r){r.setError(this._errorCode,this._internalError,this._notice);let s=r.setState(e,i);return!s&&t&&r.render(e,i),s}else return console.error("[privatecaptcha] component not found when changing state"),!1}setState(e){if(this.trace(`change state. old=${this._state} new=${e}`),this._state=e,this._options.debug){let t=this._element.querySelector("private-captcha");t&&t.setDebugText(e,S==e)}}setProgress(e){if(this._lastProgress=e,k===this._state||_===this._state){let t=this._element.querySelector("private-captcha");t?t.setProgress(e):console.error("[privatecaptcha] component not found when updating progress")}}trace(e){this._options.debug&&console.debug("[privatecaptcha]",e)}};export{ue as CaptchaWidget,De as RECAPTCHA_COMPAT};
59
+ </svg>`;function uA(r){let A=document.createElement("template");return A.innerHTML=r.trim(),A.content.firstChild}function H(r){let A=document.createElement("input");return A.type="checkbox",A.id=F,A.className=r,A.required=!0,A}function m(r,A){let e=document.createElement("label");return e.htmlFor=A,e.textContent=r,e}function HA(){let r=document.createElement("progress-ring");return r.id=O,r.setAttribute("stroke","12"),r.setAttribute("progress","0"),r}function NA(r){let A=m(r,O),e=document.createElement("span");e.className="dots";for(let t=0;t<3;t++){let i=document.createElement("span");i.textContent=".",e.appendChild(i)}return A.appendChild(e),A}function eA(r,A,e){let t=document.createElement("span");return t.id=pA,A&&t.classList.add(tA),e&&(t.classList.add(_A),t.title=e),t.textContent=r,t}function YA(){let r=document.createElement("div");r.className="pc-info",r.appendChild(uA(MA));let A=document.createElement("a");return A.href="https://privatecaptcha.com",A.className="pc-link",A.rel="noopener nofollow",A.target="_blank",A.appendChild(document.createTextNode("Private")),A.appendChild(document.createElement("br")),A.appendChild(document.createTextNode("Captcha")),r.appendChild(A),r}function QA(r,A){switch(r){case 0:return"";case 1:return A[f];case 2:return A[Q];default:return A[h]}}var q=class extends T{constructor(){super(),this._state="",this._root=this.attachShadow({mode:"open"}),this._debug=!1,this._error=null,this._internalError=null,this._notice=null,this._displayMode=fA,this._lang="en";let A=new CSSStyleSheet;A.replaceSync(cA),this._root.adoptedStyleSheets=[A],this._overridesSheet=null}update(){this._debug=this.getAttribute("debug"),this._error=null,this._internalError=null,this._displayMode=this.getAttribute("display-mode"),this._lang=this.getAttribute("lang"),this._lang in J||(console.warn(`[privatecaptcha][progress] Localization not found. lang=${this._lang}`),this._lang="en");let A=this.getAttribute("extra-styles");this.updateStyles(A)}connectedCallback(){this.update();let A=this._displayMode==j;this.setState(d,A)}setState(A,e){return A==this._state?(console.debug("[privatecaptcha][progress] already in this state: "+A),N===this._displayMode&&this._syncHostClass(e),!1):(this._debug&&console.debug(`[privatecaptcha][progress] change state. old=${this._state} new=${A}`),this.render(A,e),this._state=A,!0)}render(A,e){let t=document.createElement("div");t.className="pc-interactive-area";let i=!1,o=!1,I=J[this._lang];switch(A){case d:i=!0,t.appendChild(H("")),t.appendChild(m(I[a],F));break;case G:i=!0,t.appendChild(H("loading")),t.appendChild(m(I[a],F));break;case U:i=!0,t.appendChild(H("ready")),t.appendChild(m(I[a],F)),o=e;break;case E:t.appendChild(HA()),t.appendChild(NA(I[l])),o=e;break;case D:t.appendChild(uA(JA)),t.appendChild(m(I[c],O)),o=e;break;case z:t.appendChild(H("invalid")),t.appendChild(m(I[B],F));break;case w:i=!0,t.appendChild(H("error")),t.appendChild(m(I[h],F));break;default:console.error(`[privatecaptcha][progress] unknown state: ${A}`);break}if(this._debug||this._error||this._notice)if(this._error){let n=QA(this._error,I);t.appendChild(eA(n,this._error,this._debug&&this._error?this._internalError:null))}else if(this._notice){let n=eA(I[C],!1,this._notice);n.classList.add(bA),t.appendChild(n)}else t.appendChild(eA(`[${A}]`,!1,null));this._syncHostClass(o);let s=document.createElement("div");s.className="pc-captcha-widget",s.appendChild(t);let g=document.createElement("div");if(g.className="pc-spacer",s.appendChild(g),s.appendChild(YA()),this._root.replaceChildren(s),i){let n=this._root.getElementById(F);n?n.addEventListener("change",this.onCheckboxClicked.bind(this)):console.warn("[privatecaptcha][progress] checkbox not found in the Shadow DOM")}}_syncHostClass(A){let e="";switch(this._displayMode){case fA:e="hidden";break;case N:e=A?"floating":"hidden";break;case j:break}this.classList.remove("hidden","floating"),e&&this.classList.add(e)}onCheckboxClicked(A){if(A.preventDefault(),this._debug&&console.debug("[privatecaptcha][progress] checkbox was clicked"),A.target.checked){let e=new CustomEvent("privatecaptcha:checked",{bubbles:!0,composed:!0});this.dispatchEvent(e)}else console.warn("[privatecaptcha][progress] checkbox was unchecked")}setProgress(A){if(E==this._state){let e=this._root.getElementById(O);e?e.setProgress(A):console.warn("[privatecaptcha][progress] progress element not found")}else this._debug&&console.debug(`[privatecaptcha][progress] skipping updating progress when not in progress. state=${this._state}`)}setError(A,e,t){this._error=A,this._internalError=e,this._notice=t||null}setDebugText(A,e){let t=this._root.getElementById(pA);if(t){let i="";if(this._error){let o=J[this._lang];i=QA(this._error,o)}else this._notice?i=J[this._lang][C]:i=`[${A}]`;t.textContent=i,e||this._error?t.classList.add(tA):t.classList.remove(tA)}}static get observedAttributes(){return["state","progress","extra-styles"]}updateStyles(A){let e=this._root.adoptedStyleSheets.filter(t=>t!==this._overridesSheet);if(A){let t=`@layer custom { :host { ${A} } }`;this._overridesSheet||(this._overridesSheet=new CSSStyleSheet),this._overridesSheet.replaceSync(t),this._root.adoptedStyleSheets=[...e,this._overridesSheet]}else this._overridesSheet=null,this._root.adoptedStyleSheets=e}attributeChangedCallback(A,e,t){if(e!==t)switch(A){case"progress":let i=t!==null?Number.parseFloat(t):Number.NaN;Number.isNaN(i)||this.setProgress(i);break;case"extra-styles":this.updateStyles(t);break}}};typeof window<"u"&&window.customElements&&!window.customElements.get("private-captcha")&&window.customElements.define("private-captcha",q);var VA="https://api.privatecaptcha.com/puzzle",RA="https://api.eu.privatecaptcha.com/puzzle",KA="recaptcha";function TA(r){for(;r&&r.tagName!=="FORM";)r=r.parentElement;return r}var wA=class{constructor(A,e={}){this._element=A,this._puzzle=null,this._expiryTimeout=null,this._state=d,this._lastProgress=null,this._solution=null,this._userStarted=!1,this._apiTriggered=!1,this._options={},this._errorCode=0,this._internalError=null,this.setOptions(e),this._workersPool=new K({workersReady:this.onWorkersReady.bind(this),workerError:this.onWorkerError.bind(this),workStarted:this.onWorkStarted.bind(this),workCompleted:this.onWorkCompleted.bind(this),progress:this.onWorkProgress.bind(this)},this._options.debug);let t=TA(this._element);if(t){if(t.addEventListener("focusin",this.onFocusIn.bind(this),{passive:!0}),this._element.replaceChildren(this._createCaptchaElement()),this._element.addEventListener("privatecaptcha:checked",this.onChecked.bind(this)),this._options.storeVariable&&(this._element[this._options.storeVariable]=this),N===this._options.displayMode){let o=t.querySelector(".private-captcha-anchor");o?o.style.position="relative":console.warn("[privatecaptcha] cannot find anchor for popup")}this.checkConfigured()&&this._options.startMode==="load"&&this.init(!1)}else console.warn("[privatecaptcha] cannot find form element")}_createCaptchaElement(){let A=document.createElement("private-captcha");return this._updateCaptchaElement(A),A}_updateCaptchaElement(A){A.setAttribute("lang",this._options.lang),A.setAttribute("theme",this._options.theme),A.setAttribute("extra-styles",this._options.styles),this._options.debug&&A.setAttribute("debug","true"),A.setAttribute("display-mode",this._options.displayMode)}setOptions(A){this._callerOptions={...A};let t=this._element.dataset.eu||null?RA:VA,i="private-captcha-solution";A.hasOwnProperty("compat")&&A.compat===KA&&(i="g-recaptcha-response");let o="";if(A.hasOwnProperty("sitekey")&&(o=A.sitekey),this._options=Object.assign({startMode:this._element.dataset.startMode||"auto",debug:this._element.dataset.debug,fieldName:this._element.dataset.solutionField||i,puzzleEndpoint:this._element.dataset.puzzleEndpoint||t,sitekey:o||this._element.dataset.sitekey||"",displayMode:this._element.dataset.displayMode||"widget",lang:this._element.dataset.lang||"auto",theme:this._element.dataset.theme||"light",styles:this._element.dataset.styles||"",storeVariable:this._element.dataset.storeVariable||null},A),this._options.lang==="auto"){let I="";typeof document<"u"&&document.documentElement&&(I=document.documentElement.lang),!I&&typeof navigator<"u"&&(I=navigator.language||navigator.userLanguage||""),typeof I=="string"&&I.length>=2&&(this._options.lang=I.split("-")[0].toLowerCase())}}async init(A){this.trace(`init() was called. state=${this._state}`),this._puzzle=null,this._solution=null,this._errorCode=0,this._internalError=null,this._notice=null;let e=this.checkConfigured();if(!e)return;if(d!==this._state&&w!==this._state){console.warn(`[privatecaptcha] captcha has already been initialized. state=${this._state}`);return}this._workersPool&&(this._workersPool.stop(),this._workersPool.reset());let t=this._options.startMode==="auto"||this._options.startMode==="load"||A;try{this.setState(G),this.setProgressState(G),this.trace(`fetching puzzle. sitekey=${e}`);let i=await lA(this._options.puzzleEndpoint,e);this._notice=i.notice,this._puzzle=new R(i.data),this._puzzle&&this._puzzle.isZero()&&(this._errorCode=2);let o=this._puzzle.expirationMillis();this.trace(`parsed puzzle buffer. isZero=${this._puzzle.isZero()} ttl=${o/1e3}`),this._expiryTimeout&&clearTimeout(this._expiryTimeout),o&&(this._expiryTimeout=setTimeout(()=>this.expire(),o));try{this._workersPool.init(this._puzzle,t)}catch(I){this._workersPool.onWorkerError(I);return}this.signalInit()}catch(i){console.error("[privatecaptcha]",i),this._expiryTimeout&&clearTimeout(this._expiryTimeout),this._errorCode=3,this._internalError=i.internalError||i.message,this.setState(w);let o=this.shouldFinalizeWork();this.setProgressState(o?D:d),o&&(this.saveSolutions(),this.signalErrored())}}checkConfigured(){let A=this._options.sitekey||this._element.dataset.sitekey;return A||(console.error("[privatecaptcha] sitekey not set on captcha element"),this._errorCode=1,this.setState(z),this.setProgressState(z),null)}start(){if(U!==this._state){console.warn(`[privatecaptcha] solving has already been started. state=${this._state}`);return}this.trace("starting solving captcha");try{this.setState(E),this._workersPool.solve(this._puzzle)}catch(A){this._workersPool.onWorkerError(A)}}dispatchEvent(A,e={}){let t=new CustomEvent(`privatecaptcha:${A}`,{bubbles:!1,detail:{widget:this,element:this._element,...e}});this._element.dispatchEvent(t)}signalEvent(A,e){this.dispatchEvent(A);let t=this._element.dataset[e];if(t)try{window[t](this)}catch(i){console.error("[privatecaptcha] Error in callback",A,i)}}signalInit(){this.signalEvent("init","initCallback")}signalStarted(){this.signalEvent("start","startedCallback")}signalFinished(){this.signalEvent("finish","finishedCallback")}signalErrored(){this.signalEvent("error","erroredCallback")}signalReset(){this.signalEvent("reset","resetCallback")}ensureNoSolutionField(){let A=this._element.querySelector(`input[name="${this._options.fieldName}"]`);if(A)try{this._element.removeChild(A)}catch(e){console.warn("[privatecaptcha]",e)}}reset(A={}){this.trace("reset captcha"),this._expiryTimeout&&clearTimeout(this._expiryTimeout),this._workersPool&&(this._workersPool.stop(),this._workersPool.reset()),this._puzzle=null,this._solution=null,this._errorCode=0,this._internalError=null,this._notice=null,this.setOptions({...this._callerOptions,...A}),this.setState(d);let e=this._element.querySelector("private-captcha");e&&(this._updateCaptchaElement(e),e.update()),this.setProgressState(d,!0),this.ensureNoSolutionField(),this._userStarted=!1,this._apiTriggered=!1,this.signalReset(),this._options.startMode==="load"&&this.init(!1)}updateStyles(){let A=this._element.dataset.styles||"";if(A!==this._options.styles){this._options.styles=A;let e=this._element.querySelector("private-captcha");e&&e.setAttribute("extra-styles",A)}}expire(){this.trace("expire captcha"),this._workersPool&&this._workersPool.stop(),this.setState(d),this.setProgressState(d),this.ensureNoSolutionField(),this._apiTriggered=!1,this.init(this._userStarted)}element(){return this._element}solution(){return this._solution}onFocusIn(A){if(this.trace("onFocusIn event handler"),d!==this._state){this.trace(`skipping focusin event with non-empty state. state=${this._state}`);return}let e=this._element.querySelector("private-captcha");if(e&&A.target==e){this.trace("skipping focusin event on captcha element");return}this.init(!1)}execute(){if(this._apiTriggered&&w!==this._state)return this.trace("skipping duplicate execute event handler"),new Promise(()=>{});this.trace(`execute event handler. state=${this._state}`),this._apiTriggered=!0;let A=this._options.startMode==="auto"?E:w===this._state?G:this._state;return this._triggerSolving(A),new Promise(()=>{})}onChecked(A){if(A&&A.stopPropagation(),this._userStarted&&w!==this._state){this.trace("skipping duplicate onChecked handler");return}this.trace(`onChecked event handler. state=${this._state}`),this._userStarted=!0,this._triggerSolving(E)}_triggerSolving(A){let e=!1;switch(this._state){case U:this.start();break;case d:case w:let t=this._userStarted||this._apiTriggered;this.init(t);break;case G:break;case E:setTimeout(()=>this.setProgress(this._lastProgress),500);break;case D:A=D,e=!0;break;default:console.warn(`[privatecaptcha] triggerSolving: unexpected state. state=${this._state}`);return}w!==this._state&&(this.setProgressState(A),e&&(this.saveSolutions(),this.signalFinished()))}shouldFinalizeWork(){return this._options.startMode==="load"||this._userStarted||this._apiTriggered&&(this._options.startMode==="auto"||this._options.displayMode==="hidden")}onWorkersReady(A){this.trace(`workers are ready. autostart=${A}`),this.setState(U),this._options.startMode==="load"?this.setProgressState(E):!this._userStarted&&!(this._apiTriggered&&A)&&this.setProgressState(U),(A||this._userStarted||this._apiTriggered)&&this.start()}onWorkerError(A){w!==this._state&&(console.error("[privatecaptcha] error in worker:",A),this._errorCode=4,this._internalError=A?.message??String(A),this._expiryTimeout&&(clearTimeout(this._expiryTimeout),this._expiryTimeout=null),this._solution=null,this.ensureNoSolutionField(),this.setState(w),this.setProgressState(w),this.signalErrored())}onWorkStarted(){this.signalStarted()}onWorkCompleted(){if(this.trace("[privatecaptcha] work completed"),E!==this._state){console.warn(`[privatecaptcha] solving has not been started. state=${this._state}`);return}this.setState(D);let A=this.shouldFinalizeWork();A&&this.setProgressState(D),A&&(this.saveSolutions(),setTimeout(()=>this.signalFinished(),500))}onWorkProgress(A){if(E!==this._state){console.warn(`[privatecaptcha] skipping progress update. state=${this._state}`);return}this.trace(`progress changed. percent=${A}`),this.setProgress(A)}saveSolutions(){let e=`${this._workersPool.serializeSolutions(this._errorCode)}.${this._puzzle?this._puzzle.rawData:""}`;this.ensureNoSolutionField(),this._element.insertAdjacentHTML("beforeend",`<input name="${this._options.fieldName}" type="hidden" value="${e}">`),this._solution=e,this.trace(`saved solutions. field=${this._options.fieldName} payload=${e}`)}setProgressState(A,e=!1){let t=this._userStarted||j===this._options.displayMode||this._apiTriggered&&N===this._options.displayMode,i=this._element.querySelector("private-captcha");if(i){i.setError(this._errorCode,this._internalError,this._notice);let o=i.setState(A,t);return!o&&e&&i.render(A,t),o}else return console.error("[privatecaptcha] component not found when changing state"),!1}setState(A){if(this.trace(`change state. old=${this._state} new=${A}`),this._state=A,this._options.debug){let e=this._element.querySelector("private-captcha");e&&e.setDebugText(A,w==A)}}setProgress(A){if(this._lastProgress=A,E===this._state||D===this._state){let e=this._element.querySelector("private-captcha");e?e.setProgress(A):console.error("[privatecaptcha] component not found when updating progress")}}trace(A){this._options.debug&&console.debug("[privatecaptcha]",A)}};export{wA as CaptchaWidget,KA as RECAPTCHA_COMPAT};
60
60
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../node_modules/src/index.ts", "../js/puzzle.utils.js", "../js/puzzle.js", "inline-worker:__inline-worker", "../js/puzzle.worker.js", "../js/workerspool.js", "../js/utils.js", "../js/progress.js", "../js/styles.css", "../js/strings.js", "../js/html.js", "../js/widget.js"],
4
- "sourcesContent": ["const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n", "export function readUInt32LE(binaryData, offset) {\n return (\n binaryData[offset] |\n (binaryData[offset + 1] << 8) |\n (binaryData[offset + 2] << 16) |\n (binaryData[offset + 3] << 24)\n ) >>> 0;\n}\n\nexport function thresholdFromDifficulty(d) {\n return (Math.pow(2, (255.999 - d) / 8.0)) >>> 0;\n}\n\nexport function findSolution(buffer, threshold, puzzleIndex, debug, hasher) {\n const length = buffer.length;\n if (debug) {\n console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${threshold} puzzleID=${puzzleIndex} length=${length}`);\n }\n buffer[length - 8] = puzzleIndex;\n\n let hash = new Uint8Array(32);\n\n for (let i = 0; i < 256; i++) {\n buffer[length - 1 - 3] = i;\n\n for (let j = 0; j < 256; j++) {\n buffer[length - 1 - 2] = j;\n\n for (let k = 0; k < 256; k++) {\n buffer[length - 1 - 1] = k;\n\n for (let l = 0; l < 256; l++) {\n buffer[length - 1 - 0] = l;\n\n hash.fill(0);\n hasher(hash.length).update(buffer).digest(hash);\n const prefix = readUInt32LE(hash, 0);\n\n if (prefix <= threshold) {\n if (debug) {\n console.debug(`[privatecaptcha][worker] found solution. prefix=${prefix} threshold=${threshold}`);\n }\n return buffer.subarray(length - 8);\n }\n }\n }\n }\n }\n\n return new Uint8Array(0);\n}\n", "'use strict';\n\nimport { decode } from 'base64-arraybuffer';\nimport { readUInt32LE } from './puzzle.utils.js';\n\nconst PUZZLE_BUFFER_LENGTH = 128;\n// RequestTimeout, Conflict, TooManyRequests\nconst ACCEPTABLE_CLIENT_ERRORS = [408, 409, 429];\nconst DEFAULT_TIMEOUT_MS = 5000;\nconst DEFAULT_GLOBAL_TIMEOUT_MS = 30000;\n\nexport async function getPuzzle(endpoint, sitekey, options = {}) {\n try {\n const response = await fetchWithBackoff(`${endpoint}?sitekey=${sitekey}`, {\n fetchOptions: { headers: [[\"x-pc-captcha-version\", \"1\"]], mode: \"cors\" },\n maxAttempts: options.attempts ?? 5,\n initialDelay: 800,\n maxDelay: 6000,\n timeoutMs: options.timeout ?? DEFAULT_TIMEOUT_MS,\n globalTimeoutMs: options.globalTimeout ?? DEFAULT_GLOBAL_TIMEOUT_MS\n });\n\n if (response.ok) {\n const data = await response.text();\n const notice = response.headers.get('X-PC-Widget-Notice');\n return { data, notice };\n } else {\n let json = await response.json();\n if (json && json.error) {\n throw new Error(json.error);\n }\n }\n } catch (err) {\n console.error('[privatecaptcha]', err);\n throw err;\n }\n\n throw new Error('Internal error');\n};\n\nfunction wait(delay, signal) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(resolve, delay);\n if (signal) {\n signal.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n reject(signal.reason || new Error('Aborted'));\n }, { once: true });\n }\n });\n}\n\nasync function fetchWithBackoff(url, options = {}) {\n const {\n fetchOptions = {},\n maxAttempts = 5,\n initialDelay = 800,\n maxDelay = 6000,\n timeoutMs = DEFAULT_TIMEOUT_MS,\n globalTimeoutMs = DEFAULT_GLOBAL_TIMEOUT_MS\n } = options;\n\n // Global AbortController is used to abort wait() between retries when global timeout occurs\n const globalController = new AbortController();\n const { signal: globalSignal } = globalController;\n let globalTimeoutId = setTimeout(() => globalController.abort(new Error('Fetch timed out')), globalTimeoutMs);\n let lastError = null;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(initialDelay * Math.pow(2, attempt), maxDelay);\n try {\n await wait(delay, globalSignal);\n } catch (err) {\n clearTimeout(globalTimeoutId);\n if (globalSignal.aborted) {\n lastError = 'Global time out';\n const error = new Error('Fetch timed out');\n error.internalError = lastError;\n throw error;\n }\n throw err;\n }\n }\n\n // Per-call AbortController is used for individual fetch timeout\n const fetchController = new AbortController();\n const { signal: fetchSignal } = fetchController;\n const fetchTimeoutId = setTimeout(() => fetchController.abort(new Error('Fetch timed out')), timeoutMs);\n\n // If global timeout fires, abort the current fetch as well\n const globalAbortHandler = () => fetchController.abort(new Error('Fetch timed out'));\n globalSignal.addEventListener('abort', globalAbortHandler, { once: true });\n\n try {\n const response = await fetch(url, { ...fetchOptions, signal: fetchSignal });\n clearTimeout(fetchTimeoutId);\n globalSignal.removeEventListener('abort', globalAbortHandler);\n if (response.ok) {\n clearTimeout(globalTimeoutId);\n return response;\n } else {\n lastError = `HTTP ${response.status}`;\n console.warn('[privatecaptcha]', `HTTP request failed. url=${url} status=${response.status}`);\n }\n\n if ((response.status >= 400) && (response.status < 500) &&\n !ACCEPTABLE_CLIENT_ERRORS.includes(response.status)) {\n // we don't retry on most client errors\n break;\n } else {\n continue;\n }\n } catch (err) {\n clearTimeout(fetchTimeoutId);\n globalSignal.removeEventListener('abort', globalAbortHandler);\n if (globalSignal.aborted) {\n clearTimeout(globalTimeoutId);\n lastError = 'Global time out';\n const error = new Error('Fetch timed out');\n error.internalError = lastError;\n throw error;\n }\n if (fetchSignal.aborted) {\n // Per-call timeout - continue to next attempt\n lastError = 'Fetch timed out';\n console.warn('[privatecaptcha]', `Fetch attempt ${attempt + 1} timed out`);\n continue;\n }\n lastError = err.message || String(err);\n console.error('[privatecaptcha]', err);\n }\n }\n\n clearTimeout(globalTimeoutId);\n const error = new Error('Captcha puzzle load failed after maximum retry attempts');\n error.internalError = lastError;\n throw error;\n}\n\nfunction readUInt64LE(binaryData, offset) {\n return (\n BigInt(readUInt32LE(binaryData, offset)) +\n (BigInt(readUInt32LE(binaryData, offset + 4)) << 32n)\n );\n}\n\nexport class Puzzle {\n constructor(rawData) {\n this.puzzleBuffer = null;\n\n this.ID = null;\n this.difficulty = null;\n this.solutionsCount = null;\n this.expirationTimestamp = null;\n this.userData = null;\n\n this.signature = null;\n\n this.parse(rawData);\n this.rawData = rawData;\n }\n\n parse(rawData) {\n const parts = rawData.split('.');\n if (parts.length !== 2) {\n throw new Error(`Invalid amount of parts: ${parts.length}`);\n }\n\n const buffer = parts[0];\n this.signature = parts[1];\n\n const data = new Uint8Array(decode(buffer));\n let offset = 0;\n\n offset += 1; // version\n offset += 16; // propertyID\n\n this.ID = readUInt64LE(data, offset);\n offset += 8;\n\n this.difficulty = data[offset];\n offset += 1;\n\n this.solutionsCount = data[offset];\n offset += 1;\n\n this.expirationTimestamp = readUInt32LE(data, offset);\n offset += 4;\n\n offset += 4; // AccountID\n\n const userDataSize = 16;\n this.userData = data.slice(offset, offset + userDataSize);\n offset += userDataSize;\n\n let sourceBuffer = data;\n if (sourceBuffer.length < PUZZLE_BUFFER_LENGTH) {\n const enlargedBuffer = new Uint8Array(PUZZLE_BUFFER_LENGTH);\n enlargedBuffer.set(sourceBuffer);\n this.puzzleBuffer = enlargedBuffer;\n } else {\n this.puzzleBuffer = sourceBuffer;\n }\n }\n\n isZero() {\n return (this.ID === 0n) && (this.difficulty === 0) && (this.expirationTimestamp === 0);\n }\n\n expirationMillis() {\n if (!this.expirationTimestamp) { return 0; }\n\n const expiration = new Date(this.expirationTimestamp * 1000);\n const currentDate = new Date();\n const diff = expiration - currentDate;\n return diff;\n }\n};\n", "\nexport default function inlineWorker(scriptText) {\n let blob = new Blob([scriptText], {type: 'text/javascript'});\n let url = URL.createObjectURL(blob);\n let worker = new Worker(url);\n URL.revokeObjectURL(url);\n return worker;\n}\n", "import inlineWorker from '__inline-worker'\nexport default function Worker() {\n return inlineWorker(\"var R=Object.create;var j=Object.defineProperty;var O=Object.getOwnPropertyDescriptor;var W=Object.getOwnPropertyNames;var K=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var y=(B,t)=>()=>{try{return t||B((t={exports:{}}).exports,t),t.exports}catch(e){throw t=0,e}};var N=(B,t,e,n)=>{if(t&&typeof t==\\\"object\\\"||typeof t==\\\"function\\\")for(let o of W(t))!L.call(B,o)&&o!==e&&j(B,o,{get:()=>t[o],enumerable:!(n=O(t,o))||n.enumerable});return B};var X=(B,t,e)=>(e=B!=null?R(K(B)):{},N(t||!B||!B.__esModule?j(e,\\\"default\\\",{value:B,enumerable:!0}):e,B));var I=y((aB,k)=>{var Z=\\\"Input must be an string, Buffer or Uint8Array\\\";function J(B){let t;if(B instanceof Uint8Array)t=B;else if(typeof B==\\\"string\\\")t=new TextEncoder().encode(B);else throw new Error(Z);return t}function Q(B){return Array.prototype.map.call(B,function(t){return(t<16?\\\"0\\\":\\\"\\\")+t.toString(16)}).join(\\\"\\\")}function m(B){return(4294967296+B).toString(16).substring(1)}function Y(B,t,e){let n=`\\n`+B+\\\" = \\\";for(let o=0;o<t.length;o+=2){if(e===32)n+=m(t[o]).toUpperCase(),n+=\\\" \\\",n+=m(t[o+1]).toUpperCase();else if(e===64)n+=m(t[o+1]).toUpperCase(),n+=m(t[o]).toUpperCase();else throw new Error(\\\"Invalid size \\\"+e);o%6===4?n+=`\\n`+new Array(B.length+4).join(\\\" \\\"):o<t.length-2&&(n+=\\\" \\\")}console.log(n)}function BB(B,t,e){let n=new Date().getTime(),o=new Uint8Array(t);for(let s=0;s<t;s++)o[s]=s%256;let i=new Date().getTime();console.log(\\\"Generated random input in \\\"+(i-n)+\\\"ms\\\"),n=i;for(let s=0;s<e;s++){let l=B(o),c=new Date().getTime(),u=c-n;n=c,console.log(\\\"Hashed in \\\"+u+\\\"ms: \\\"+l.substring(0,20)+\\\"...\\\"),console.log(Math.round(t/(1<<20)/(u/1e3)*100)/100+\\\" MB PER SECOND\\\")}}k.exports={normalizeInput:J,toHex:Q,debugPrint:Y,testSpeed:BB}});var T=y((cB,v)=>{var $=I();function d(B,t,e){let n=B[t]+B[e],o=B[t+1]+B[e+1];n>=4294967296&&o++,B[t]=n,B[t+1]=o}function _(B,t,e,n){let o=B[t]+e;e<0&&(o+=4294967296);let i=B[t+1]+n;o>=4294967296&&i++,B[t]=o,B[t+1]=i}function E(B,t){return B[t]^B[t+1]<<8^B[t+2]<<16^B[t+3]<<24}function h(B,t,e,n,o,i){let s=w[o],l=w[o+1],c=w[i],u=w[i+1];d(r,B,t),_(r,B,s,l);let A=r[n]^r[B],f=r[n+1]^r[B+1];r[n]=f,r[n+1]=A,d(r,e,n),A=r[t]^r[e],f=r[t+1]^r[e+1],r[t]=A>>>24^f<<8,r[t+1]=f>>>24^A<<8,d(r,B,t),_(r,B,c,u),A=r[n]^r[B],f=r[n+1]^r[B+1],r[n]=A>>>16^f<<16,r[n+1]=f>>>16^A<<16,d(r,e,n),A=r[t]^r[e],f=r[t+1]^r[e+1],r[t]=f>>>31^A<<1,r[t+1]=A>>>31^f<<1}var S=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),eB=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],a=new Uint8Array(eB.map(function(B){return B*2})),r=new Uint32Array(32),w=new Uint32Array(32);function M(B,t){let e=0;for(e=0;e<16;e++)r[e]=B.h[e],r[e+16]=S[e];for(r[24]=r[24]^B.t,r[25]=r[25]^B.t/4294967296,t&&(r[28]=~r[28],r[29]=~r[29]),e=0;e<32;e++)w[e]=E(B.b,4*e);for(e=0;e<12;e++)h(0,8,16,24,a[e*16+0],a[e*16+1]),h(2,10,18,26,a[e*16+2],a[e*16+3]),h(4,12,20,28,a[e*16+4],a[e*16+5]),h(6,14,22,30,a[e*16+6],a[e*16+7]),h(0,10,20,30,a[e*16+8],a[e*16+9]),h(2,12,22,24,a[e*16+10],a[e*16+11]),h(4,14,16,26,a[e*16+12],a[e*16+13]),h(6,8,18,28,a[e*16+14],a[e*16+15]);for(e=0;e<16;e++)B.h[e]=B.h[e]^r[e]^r[e+16]}var p=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function z(B,t,e,n){if(B===0||B>64)throw new Error(\\\"Illegal output length, expected 0 < length <= 64\\\");if(t&&t.length>64)throw new Error(\\\"Illegal key, expected Uint8Array with 0 < length <= 64\\\");if(e&&e.length!==16)throw new Error(\\\"Illegal salt, expected Uint8Array with length is 16\\\");if(n&&n.length!==16)throw new Error(\\\"Illegal personal, expected Uint8Array with length is 16\\\");let o={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:B};p.fill(0),p[0]=B,t&&(p[1]=t.length),p[2]=1,p[3]=1,e&&p.set(e,32),n&&p.set(n,48);for(let i=0;i<16;i++)o.h[i]=S[i]^E(p,i*4);return t&&(b(o,t),o.c=128),o}function b(B,t){for(let e=0;e<t.length;e++)B.c===128&&(B.t+=B.c,M(B,!1),B.c=0),B.b[B.c++]=t[e]}function H(B){for(B.t+=B.c;B.c<128;)B.b[B.c++]=0;M(B,!0);let t=new Uint8Array(B.outlen);for(let e=0;e<B.outlen;e++)t[e]=B.h[e>>2]>>8*(e&3);return t}function C(B,t,e,n,o){e=e||64,B=$.normalizeInput(B),n&&(n=$.normalizeInput(n)),o&&(o=$.normalizeInput(o));let i=z(e,t,n,o);return b(i,B),H(i)}function tB(B,t,e,n,o){let i=C(B,t,e,n,o);return $.toHex(i)}v.exports={blake2b:C,blake2bHex:tB,blake2bInit:z,blake2bUpdate:b,blake2bFinal:H}});var U=\\\"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AEGFoYCAAGoxAABCKIaEIABBhqGAgABqMQAAQjCGIABBh6GAgABqMQAAQjiGhIQgAEGAoYCAAGoxAACENwMAIABBCGoiAA0ACwsLAEEAKAKgooCAAAvRAwMCfwF+AX8jgICAgABBgAFrIgQkgICAgABBACEFIARBACkDoKGAgAA3AwAgBEEAKQOooYCAADcDCCAEQQApA7ChgIAANwMQIARBACkDuKGAgAA3AxggBEEAKQPAoYCAADcDICAEQQApA8ihgIAANwMoIARBACkD0KGAgAA3AzAgBEEAKQPYoYCAADcDOCAEQQApA+ChgIAANwNAIARBACkD6KGAgAA3A0ggBEEAKQPwoYCAADcDUCAEQQApA/ihgIAANwNYIARBACkDgKKAgAA3A2AgBEEAKQOIooCAADcDaCAEQQApA5CigIAANwNwAkAgA0UNACAEIAIgAkEQeHNBgP6DeHFBCHYgAkEIeHOtQiCGQQApA5iigIAAQoD+//8PgyAAQf8Bca2EIgaENwN4QQEhBQJAIARBABCDgICAACABTQ0AIANBf2ohB0EAIQUDQAJAIAcgBUcNAEEAIQUMAwsgBCACIAVqQQFqIgAgAEEQeHNBgP6DeHFBCHYgAEEIeHOtQiCGIAaENwN4IAVBAWoiACEFIARBABCDgICAACABSw0ACyACIABqIQIgACADSSEFC0EAIAI2AqCigIAACyAEQYABaiSAgICAACAFCw==\\\";var g=X(T(),1);function nB(B,t){return(B[t]|B[t+1]<<8|B[t+2]<<16|B[t+3]<<24)>>>0}function D(B){return Math.pow(2,(255.999-B)/8)>>>0}function P(B,t,e,n,o){let i=B.length;n&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${t} puzzleID=${e} length=${i}`),B[i-8]=e;let s=new Uint8Array(32);for(let l=0;l<256;l++){B[i-1-3]=l;for(let c=0;c<256;c++){B[i-1-2]=c;for(let u=0;u<256;u++){B[i-1-1]=u;for(let A=0;A<256;A++){B[i-1-0]=A,s.fill(0),o(s.length).update(B).digest(s);let f=nB(s,0);if(f<=t)return n&&console.debug(`[privatecaptcha][worker] found solution. prefix=${f} threshold=${t}`),B.subarray(i-8)}}}}return new Uint8Array(0)}var G=65536,oB=4294967296;function rB(B){let t=atob(B),e=new Uint8Array(t.length);for(let n=0;n<t.length;n++)e[n]=t.charCodeAt(n);return e}function iB(B){let t=(0,g.blake2bInit)(B);return{update(e){return(0,g.blake2bUpdate)(t,e),this},digest(e){return e.set((0,g.blake2bFinal)(t)),e}}}async function F(B,t=globalThis.WebAssembly){if(t!=null&&t.instantiate)try{let{instance:e}=await t.instantiate(rB(U)),n=e.exports;return new Uint8Array(n.memory.buffer).set(B,n.puzzle_ptr()),n.prepare_puzzle(),{kind:\\\"scalar\\\",wasm:!0,async solve(o,i){for(let s=0;s<oB;s+=G){if(n.solve_batch(i,o,s,G)){let l=n.get_solution_nonce()>>>0,c=B.slice(120,128);return c[0]=i,c[4]=l>>>24,c[5]=l>>>16,c[6]=l>>>8,c[7]=l,c}await new Promise(l=>setTimeout(l,0))}return new Uint8Array(0)}}}catch(e){console.warn(\\\"[privatecaptcha][worker] scalar WASM unavailable\\\",e)}return{kind:\\\"js\\\",wasm:!1,async solve(e,n,o){return P(B,e,n,o,iB).slice()}}}var x=null,q=null;self.onmessage=async B=>{let{command:t,argument:e}=B.data;switch(t){case\\\"init\\\":{let{id:n,buffer:o}=e;q=n,x=await F(o),self.postMessage({command:\\\"init\\\"});break}case\\\"solve\\\":{let{difficulty:n,puzzleIndex:o,debug:i}=e,s=D(n),l=await x.solve(s,o,i);self.postMessage({command:\\\"solve\\\",argument:{id:q,solution:l,wasm:x.wasm}});break}default:break}};\\n\");\n}\n", "import { encode } from 'base64-arraybuffer';\nimport PuzzleWorker from './puzzle.worker.js';\n\nconst METADATA_VERSION = 1;\n\nexport class WorkersPool {\n constructor(callbacks = {}, debug = false) {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._workers = [];\n this._debug = debug;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n\n this._callbacks = Object.assign({\n workersReady: () => 0,\n workerError: () => 0,\n workStarted: () => 0,\n workCompleted: () => 0,\n progress: () => 0,\n }, callbacks);\n }\n\n init(puzzle, autoStart) {\n if (!puzzle) { return; }\n if (puzzle.isZero()) {\n if (this._debug) { console.debug('[privatecaptcha][pool] skipping initializing workers'); }\n setTimeout(() => this._callbacks.workersReady(autoStart), 0);\n return;\n }\n\n const workersCount = 4;\n let readyWorkers = 0;\n const workers = [];\n const pool = this;\n const puzzleID = puzzle.ID;\n const puzzleData = puzzle.puzzleBuffer;\n\n for (let i = 0; i < workersCount; i++) {\n const worker = new PuzzleWorker();\n\n worker.onerror = (e) => this._callbacks.workerError(e);\n worker.onmessage = function(event) {\n if (!event.data) { return; }\n const command = event.data.command;\n switch (command) {\n case \"init\":\n readyWorkers++;\n if (readyWorkers === workersCount) {\n pool._callbacks.workersReady(autoStart);\n }\n break;\n case \"solve\":\n const { id, solution, wasm } = event.data.argument;\n pool.onSolutionFound(id, solution, wasm);\n break;\n case \"error\":\n if (event.data.error) {\n pool._callbacks.workerError(event.data.error);\n }\n break;\n default:\n break;\n };\n };\n workers.push(worker);\n }\n\n this._workers = workers;\n\n if (this._debug) { console.debug(`[privatecaptcha][pool] initializing workers. count=${this._workers.length}`); }\n for (let i = 0; i < this._workers.length; i++) {\n this._workers[i].postMessage({\n command: \"init\",\n argument: {\n id: puzzleID,\n buffer: puzzleData,\n },\n });\n };\n }\n\n solve(puzzle) {\n if (!puzzle) { return; }\n\n if (this._debug) { console.debug('[privatecaptcha][pool] starting solving'); }\n this._solutions = [];\n this._solutionsCount = puzzle.solutionsCount;\n this._puzzleID = puzzle.ID;\n this._timeStarted = Date.now();\n this._timeFinished = null;\n\n const skipSolving = puzzle.isZero() || (puzzle.solutionsCount === 0);\n let stubSolution = null;\n\n for (let i = 0; i < puzzle.solutionsCount; i++) {\n if (!skipSolving) {\n this._workers[i % this._workers.length].postMessage({\n command: \"solve\",\n argument: {\n difficulty: puzzle.difficulty,\n puzzleIndex: i,\n debug: this._debug,\n },\n });\n } else {\n if (!stubSolution) { stubSolution = new Uint8Array(8); }\n this._solutions.push(stubSolution);\n }\n }\n\n this._callbacks.workStarted();\n\n if (skipSolving) {\n setTimeout(() => this.onWorkCompleted(), 0);\n }\n }\n\n stop() {\n const count = this._workers.length;\n for (let i = 0; i < count; i++) {\n this._workers[i].terminate();\n }\n this._workers = [];\n if (this._debug) { console.debug('[privatecaptcha][pool] terminated the workers. count=' + count); }\n }\n\n reset() {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n }\n\n onSolutionFound(id, solution, wasm) {\n if (this._debug) { console.debug('[privatecaptcha][pool] solution found. length=' + solution.length); }\n if (id != this._puzzleID) {\n console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${id} expected=${this._puzzleID}`);\n return;\n }\n this._solutions.push(solution);\n\n if (wasm) { this._anyWasm = true; }\n\n const count = this._solutions.length;\n\n this._callbacks.progress(count * 100.0 / this._solutionsCount);\n\n if (count == this._solutionsCount) {\n this.onWorkCompleted();\n }\n }\n\n onWorkCompleted() {\n this._timeFinished = Date.now();\n this._callbacks.workCompleted();\n }\n\n serializeSolutions(errorCode) {\n if (this._debug) { console.debug('[privatecaptcha][pool] serializing solutions. count=' + this._solutions.length); }\n const solutionsLength = this._solutions.reduce((total, arr) => total + arr.length, 0);\n\n const metadataArray = this.writeMetadata(errorCode);\n const metadataSize = metadataArray.length;\n\n const resultArray = new Uint8Array(metadataSize + solutionsLength);\n let offset = 0;\n\n resultArray.set(metadataArray, offset);\n offset += metadataArray.length;\n\n for (let i = 0; i < this._solutions.length; i++) {\n resultArray.set(this._solutions[i], offset);\n offset += this._solutions[i].length;\n }\n\n return encode(resultArray);\n }\n\n writeMetadata(errorCode) {\n const metadataSize = 1 + 1 + 1 + 4;\n const binaryData = new Uint8Array(metadataSize);\n let currentIndex = 0;\n\n binaryData[currentIndex++] = METADATA_VERSION & 0xFF;\n binaryData[currentIndex++] = errorCode & 0xFF;\n\n const wasmFlag = this._anyWasm ? 1 : 0;\n binaryData[currentIndex++] = wasmFlag & 0xFF;\n\n const elapsedMillis = this.elapsedMillis();\n // Little-Endian\n binaryData[currentIndex++] = elapsedMillis & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 8) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 16) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 24) & 0xFF;\n\n return binaryData;\n }\n\n elapsedMillis() {\n if (this._timeStarted && this._timeFinished) {\n return this._timeFinished - this._timeStarted;\n }\n\n return 0;\n }\n}\n", "'use strict';\n\nexport const SafeHTMLElement = typeof HTMLElement !== 'undefined' ? HTMLElement : Object;\n", "'use strict';\n\nimport { SafeHTMLElement } from \"./utils.js\";\n\nexport class ProgressRing extends SafeHTMLElement {\n constructor() {\n super();\n\n this._circumference = 0;\n\n // create shadow dom root\n this._root = this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n // NOTE: stroke is sized with regards to {size} variable below\n // not to the scaled (external) size of SVG (yes, it's a bit confusing)\n const stroke = this.getAttribute('stroke');\n const size = 100;\n const radius = size / 2;\n const normalizedRadius = radius - stroke / 2;\n this._circumference = normalizedRadius * 2 * Math.PI;\n\n this._root.innerHTML = `\n <svg preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 ${size} ${size}\">\n <circle\n id=\"pie\"\n style=\"stroke-dasharray: 0 ${this._circumference}\"\n stroke-width=\"${normalizedRadius}\"\n fill=\"transparent\"\n r=\"${normalizedRadius / 2}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"track\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"progress\"\n stroke-dasharray=\"${this._circumference} ${this._circumference}\"\n style=\"stroke-dashoffset: ${this._circumference}\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n </svg>\n\n <style>\n svg {\n width: 2.25em;\n height: 2.25em;\n }\n #pie {\n stroke: var(--pie-color);\n transition: stroke-dasharray 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #progress {\n stroke: var(--accent-color);\n transition: stroke-dashoffset 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #track {\n stroke: var(--gray-color);\n }\n </style>\n `;\n }\n\n setProgress(percent) {\n const progress = (percent / 100 * this._circumference)\n const offset = this._circumference - progress;\n const circle = this._root.getElementById('progress');\n if (circle) {\n circle.style.strokeDashoffset = offset;\n }\n\n const pie = this._root.getElementById('pie');\n if (pie) {\n pie.style.strokeDasharray = progress / 2 + ' ' + this._circumference;\n }\n }\n\n static get observedAttributes() {\n return ['progress'];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) { return; }\n\n if (name === 'progress') {\n const progressValue = newValue !== null ? Number.parseFloat(newValue) : Number.NaN;\n if (!Number.isNaN(progressValue)) {\n this.setProgress(progressValue);\n }\n }\n }\n}\n", "@layer base,theme,custom;@layer base{:host,*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0 solid}:host{--extra-spacing: 0px;--label-spacing: .625rem;--border-radius: .125rem;--warn-color: #A70B0B;--accent-color: #009400;min-width:0;font-size:1rem;display:inline-block;max-width:100%;border-radius:var(--border-radius)}:host(.hidden){display:none}:host(.floating){display:block;position:absolute;left:0;top:0;transform:translateY(-100%);z-index:1000}@media(min-width:30em){:host{min-width:min(20em,100%)}}}@layer theme{:host([theme=\"light\"]){--dark-color: #070113;--gray-color: #E0E0E0;--pie-color: #D8E9E9;--background-color: #fff;--checkbox-background-color: #FFF;--checkbox-hover-color: #EBF4F4}:host([theme=\"dark\"]){--dark-color: #EBF4F4;--gray-color: #656C7B;--pie-color: #376262;--background-color: #041616;--checkbox-background-color: #223C3C;--checkbox-hover-color: #1C3232}:host{--border: 1px solid var(--gray-color)}}.pc-captcha-widget{display:flex;align-items:center;flex-direction:row;padding:.75em 1em;border:var(--border);border-radius:var(--border-radius);background-color:var(--background-color);box-sizing:border-box;width:100%;height:100%}.pc-interactive-area{display:flex;flex:0 1 auto;align-items:center;position:relative;min-width:0}.pc-interactive-area label{padding-left:var(--label-spacing);color:var(--dark-color);flex:0 1 auto;min-width:1em;white-space:normal}.pc-interactive-area input[type=checkbox]{font-size:1em;width:2em;height:2em;margin:0 0 0 calc(.125em + var(--extra-spacing));appearance:none;background-color:var(--checkbox-background-color);border:.125em solid var(--dark-color);border-radius:.25em;cursor:pointer;flex-shrink:0}.pc-interactive-area input[type=checkbox]+label{padding:0 0 0 calc(.125em + var(--extra-spacing) + var(--label-spacing))}@keyframes colorChange{0%,to{border-color:var(--dark-color)}50%{border-color:var(--gray-color)}}.pc-interactive-area input[type=checkbox].loading{animation:colorChange 2s infinite;animation-timing-function:ease-in-out;background-color:var(--checkbox-hover-color);cursor:default}.pc-interactive-area input[type=checkbox].ready{background-color:var(--checkbox-background-color);border-color:var(--dark-color);cursor:pointer}.pc-interactive-area input[type=checkbox].error{background-color:var(--checkbox-background-color);border-color:var(--warn-color);cursor:pointer}.pc-interactive-area input[type=checkbox].invalid{background-color:var(--checkbox-hover-color);border-color:var(--gray-color);cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover{background-color:var(--checkbox-hover-color);border-color:var(--accent-color)}.pc-interactive-area input[type=checkbox].invalid:hover+label{cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover+label{cursor:pointer}@keyframes dots-1{0%{opacity:0}25%{opacity:1}}@keyframes dots-2{0%{opacity:0}50%{opacity:1}}@keyframes dots-3{0%{opacity:0}75%{opacity:1}}@-webkit-keyframes dots-1{0%{opacity:0}25%{opacity:1}}@-webkit-keyframes dots-2{0%{opacity:0}50%{opacity:1}}@-webkit-keyframes dots-3{0%{opacity:0}75%{opacity:1}}.pc-interactive-area .dots span{animation:dots-1 2s infinite steps(1);-webkit-animation:dots-1 2s infinite steps(1)}.pc-interactive-area .dots span:first-child+span{animation-name:dots-2;-webkit-animation-name:dots-2}.pc-interactive-area .dots span:first-child+span+span{animation-name:dots-3;-webkit-animation-name:dots-3}#pc-progress{display:flex;justify-content:center;margin:0 0 0 var(--extra-spacing);flex-shrink:0}#pc-progress+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}.pc-spacer{flex-basis:0;flex-shrink:1;flex-grow:1;width:4em;min-width:0}.pc-info{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;margin-right:calc(.125em + var(--extra-spacing));color:var(--dark-color)}.pc-info svg{width:auto;height:3.125em;max-width:100%;max-height:100%}a.pc-link{margin-top:5px;text-decoration:none;color:currentcolor;text-align:center;font-size:.55em;text-transform:uppercase;font-weight:700;line-height:1.1em}a.pc-link:hover{text-decoration:underline}@keyframes checkmark{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0px}}svg.verified{margin:0 0 0 var(--extra-spacing);flex-shrink:0;width:2.25em;height:2.25em}svg.verified+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}svg.verified polyline{animation:checkmark .35s ease-in-out .1s backwards;stroke:#f2f2f2}svg.verified circle{fill:var(--accent-color)}#pc-debug{font-size:.75em;color:var(--gray-color);position:absolute;top:100%;left:calc(2em + 1em + 2*.125em + 2*var(--extra-spacing) + var(--label-spacing));cursor:default}#pc-debug.tooltip{text-decoration:underline;text-decoration-style:dashed;cursor:help}#pc-debug.warn{color:var(--warn-color)}#pc-debug.notice{color:#c70}\n", "'use strict';\n\nexport const CLICK_TO_VERIFY = 'click_to_verify';\nexport const VERIFYING = 'verifying';\nexport const SUCCESS = 'success';\nexport const UNAVAILABLE = 'unavailable';\nexport const INCOMPLETE = 'incomplete';\nexport const ERROR = 'error';\nexport const TESTING = 'testing';\nexport const NOTICE = 'notice';\n\nexport const STRINGS = {\n 'en': {\n [CLICK_TO_VERIFY]: 'Click to verify',\n [VERIFYING]: 'Verifying',\n [SUCCESS]: 'Verified',\n [UNAVAILABLE]: 'Not available',\n [INCOMPLETE]: 'incomplete',\n [ERROR]: 'error',\n [TESTING]: 'testing',\n [NOTICE]: 'notice',\n },\n 'de': {\n [CLICK_TO_VERIFY]: 'Zum Best\u00E4tigen klicken',\n [VERIFYING]: 'Wird \u00FCberpr\u00FCft',\n [SUCCESS]: 'Verifiziert',\n [UNAVAILABLE]: 'Nicht verf\u00FCgbar',\n [INCOMPLETE]: 'unvollst\u00E4ndig',\n [ERROR]: 'fehler',\n [TESTING]: 'testmodus',\n [NOTICE]: 'hinweis',\n },\n 'es': {\n [CLICK_TO_VERIFY]: 'Haz clic para verificar',\n [VERIFYING]: 'Verificando',\n [SUCCESS]: 'Verificado',\n [UNAVAILABLE]: 'No disponible',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'error',\n [TESTING]: 'prueba',\n [NOTICE]: 'aviso',\n },\n 'fr': {\n [CLICK_TO_VERIFY]: 'Cliquez pour v\u00E9rifier',\n [VERIFYING]: 'V\u00E9rification en cours',\n [SUCCESS]: 'V\u00E9rifi\u00E9',\n [UNAVAILABLE]: 'Non disponible',\n [INCOMPLETE]: 'incomplet',\n [ERROR]: 'erreur',\n [TESTING]: 'test',\n [NOTICE]: 'avis',\n },\n 'it': {\n [CLICK_TO_VERIFY]: 'Clicca per verificare',\n [VERIFYING]: 'Verifica in corso',\n [SUCCESS]: 'Verificato',\n [UNAVAILABLE]: 'Non disponibile',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'errore',\n [TESTING]: 'test',\n [NOTICE]: 'avviso',\n },\n 'nl': {\n [CLICK_TO_VERIFY]: 'Klik om te verifi\u00EBren',\n [VERIFYING]: 'Bezig met verifi\u00EBren',\n [SUCCESS]: 'Geverifieerd',\n [UNAVAILABLE]: 'Niet beschikbaar',\n [INCOMPLETE]: 'onvolledig',\n [ERROR]: 'fout',\n [TESTING]: 'testen',\n [NOTICE]: 'melding',\n },\n 'sv': {\n [CLICK_TO_VERIFY]: 'Klicka f\u00F6r att verifiera',\n [VERIFYING]: 'Verifierar',\n [SUCCESS]: 'Verifierad',\n [UNAVAILABLE]: 'Inte tillg\u00E4nglig',\n [INCOMPLETE]: 'ofullst\u00E4ndig',\n [ERROR]: 'fel',\n [TESTING]: 'test',\n [NOTICE]: 'notis',\n },\n 'no': {\n [CLICK_TO_VERIFY]: 'Klikk for \u00E5 bekrefte',\n [VERIFYING]: 'Bekrefter',\n [SUCCESS]: 'Bekreftet',\n [UNAVAILABLE]: 'Ikke tilgjengelig',\n [INCOMPLETE]: 'ufullstendig',\n [ERROR]: 'feil',\n [TESTING]: 'test',\n [NOTICE]: 'varsel',\n },\n 'pl': {\n [CLICK_TO_VERIFY]: 'Kliknij, aby zweryfikowa\u0107',\n [VERIFYING]: 'Weryfikowanie',\n [SUCCESS]: 'Zweryfikowano',\n [UNAVAILABLE]: 'Niedost\u0119pne',\n [INCOMPLETE]: 'niekompletne',\n [ERROR]: 'b\u0142\u0105d',\n [TESTING]: 'test',\n [NOTICE]: 'uwaga',\n },\n 'uk': {\n [CLICK_TO_VERIFY]: '\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438',\n [VERIFYING]: '\u0412\u0438\u043A\u043E\u043D\u0443\u0454\u0442\u044C\u0441\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0430',\n [SUCCESS]: '\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043D\u043E',\n [UNAVAILABLE]: '\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E',\n [INCOMPLETE]: '\u043D\u0435\u043F\u043E\u0432\u043D\u0438\u0439',\n [ERROR]: '\u043F\u043E\u043C\u0438\u043B\u043A\u0430',\n [TESTING]: '\u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F',\n [NOTICE]: '\u0443\u0432\u0430\u0433\u0430',\n },\n 'tr': {\n [CLICK_TO_VERIFY]: 'Do\u011Frulamak i\u00E7in t\u0131klay\u0131n',\n [VERIFYING]: 'Do\u011Frulan\u0131yor',\n [SUCCESS]: 'Do\u011Fruland\u0131',\n [UNAVAILABLE]: 'Kullan\u0131lam\u0131yor',\n [INCOMPLETE]: 'eksik',\n [ERROR]: 'hata',\n [TESTING]: 'test',\n [NOTICE]: 'bildirim',\n },\n 'fi': {\n [CLICK_TO_VERIFY]: 'Napsauta vahvistaaksesi',\n [VERIFYING]: 'Vahvistetaan',\n [SUCCESS]: 'Vahvistettu',\n [UNAVAILABLE]: 'Ei saatavilla',\n [INCOMPLETE]: 'ep\u00E4t\u00E4ydellinen',\n [ERROR]: 'virhe',\n [TESTING]: 'testi',\n [NOTICE]: 'ilmoitus',\n },\n 'et': {\n [CLICK_TO_VERIFY]: 'Kl\u00F5psa kinnitamiseks',\n [VERIFYING]: 'Kinnitamine',\n [SUCCESS]: 'Kinnitatud',\n [UNAVAILABLE]: 'Pole saadaval',\n [INCOMPLETE]: 'puudulik',\n [ERROR]: 'viga',\n [TESTING]: 'test',\n [NOTICE]: 'teade',\n }\n};\n", "'use strict';\n\nimport { ProgressRing } from './progress.js';\nimport { SafeHTMLElement } from \"./utils.js\";\nimport styles from \"./styles.css\" with { type: 'css' };\nimport * as i18n from './strings.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('progress-ring')) {\n window.customElements.define('progress-ring', ProgressRing);\n}\n\nexport const STATE_EMPTY = 'empty';\nexport const STATE_ERROR = 'error';\nexport const STATE_LOADING = 'loading';\nexport const STATE_READY = 'ready';\nexport const STATE_IN_PROGRESS = 'inprogress';\nexport const STATE_VERIFIED = 'verified';\nexport const STATE_INVALID = 'invalid';\n\nexport const DISPLAY_POPUP = 'popup';\nconst DISPLAY_HIDDEN = 'hidden';\nexport const DISPLAY_WIDGET = 'widget';\n\nconst CHECKBOX_ID = 'pc-checkbox';\nconst PROGRESS_ID = 'pc-progress';\nconst DEBUG_ID = 'pc-debug';\nconst DEBUG_ERROR_CLASS = 'warn';\nconst DEBUG_NOTICE_CLASS = 'notice';\nconst DEBUG_TOOLTIP_CLASS = 'tooltip';\n\nconst privateCaptchaSVG = `<svg viewBox=\"0 0 39.4 41.99\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pc-logo\" preserveAspectRatio=\"xMidYMid meet\">\n<path d=\"M0 0v30.62l4.29 2.48V4.85h30.83v23.29l-15.41 8.9-6.83-3.94v-4.95l6.83 3.94 11.12-6.42V9.91H8.58v25.66l11.12 6.42 19.7-11.37V0Zm12.87 14.86h13.66v8.32l-6.83 3.94-6.83-3.94z\" fill=\"currentColor\"/>\n</svg>`;\n\nconst verifiedSVG = `<svg class=\"verified\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 154 154\">\n<g fill=\"none\"><circle cx=\"77\" cy=\"77\" r=\"76\"></circle>\n<polyline class=\"st0\" stroke-width=\"12\" points=\"43.5,77.8 63.7,97.9 112.2,49.4\" style=\"stroke-dasharray:100px, 100px; stroke-dashoffset: 200px;\"/></g>\n</svg>`;\n\nfunction htmlToElement(html) {\n const template = document.createElement('template');\n template.innerHTML = html.trim();\n return template.content.firstChild;\n}\n\nfunction checkbox(cls) {\n const el = document.createElement('input');\n el.type = 'checkbox';\n el.id = CHECKBOX_ID;\n el.className = cls;\n el.required = true;\n return el;\n}\n\nfunction label(text, forElement) {\n const el = document.createElement('label');\n el.htmlFor = forElement;\n el.textContent = text;\n return el;\n}\n\nfunction progressRing() {\n const el = document.createElement('progress-ring');\n el.id = PROGRESS_ID;\n el.setAttribute('stroke', '12');\n el.setAttribute('progress', '0');\n return el;\n}\n\nfunction progressLabel(text) {\n const el = label(text, PROGRESS_ID);\n const dots = document.createElement('span');\n dots.className = 'dots';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('span');\n dot.textContent = '.';\n dots.appendChild(dot);\n }\n el.appendChild(dots);\n return el;\n}\n\n/**\n * @param {string} text - The debug text to display\n * @param {boolean} isError - Whether this is an error state\n * @param {string|null} internalError - Optional internal error message for tooltip\n * @returns {HTMLElement} The debug span element\n */\nfunction debugSpan(text, isError, internalError) {\n const el = document.createElement('span');\n el.id = DEBUG_ID;\n if (isError) { el.classList.add(DEBUG_ERROR_CLASS); }\n\n if (internalError) {\n el.classList.add(DEBUG_TOOLTIP_CLASS);\n el.title = internalError;\n }\n\n el.textContent = text;\n return el;\n}\n\nfunction infoSection() {\n const info = document.createElement('div');\n info.className = 'pc-info';\n info.appendChild(htmlToElement(privateCaptchaSVG));\n const link = document.createElement('a');\n link.href = 'https://privatecaptcha.com';\n link.className = 'pc-link';\n link.rel = 'noopener nofollow';\n link.target = '_blank';\n link.appendChild(document.createTextNode('Private'));\n link.appendChild(document.createElement('br'));\n link.appendChild(document.createTextNode('Captcha'));\n info.appendChild(link);\n return info;\n}\n\n/**\n * @param {number} code\n * @param {Object<string, string>} strings\n * @returns {string} error message\n */\nfunction errorDescription(code, strings) {\n switch (code) {\n case errors.ERROR_NO_ERROR:\n return '';\n case errors.ERROR_NOT_CONFIGURED:\n return strings[i18n.INCOMPLETE];\n case errors.ERROR_ZERO_PUZZLE:\n return strings[i18n.TESTING];\n default:\n return strings[i18n.ERROR];\n }\n}\n\nexport class CaptchaElement extends SafeHTMLElement {\n constructor() {\n super();\n\n this._state = '';\n this._root = this.attachShadow({ mode: 'open' });\n\n this._debug = false;\n this._error = null;\n this._internalError = null;\n this._notice = null;\n this._displayMode = DISPLAY_HIDDEN;\n this._lang = 'en';\n\n // Add CSS\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(styles);\n this._root.adoptedStyleSheets = [sheet];\n this._overridesSheet = null;\n }\n\n update() {\n this._debug = this.getAttribute('debug');\n this._error = null;\n this._internalError = null;\n this._displayMode = this.getAttribute('display-mode');\n this._lang = this.getAttribute('lang');\n if (!(this._lang in i18n.STRINGS)) {\n console.warn(`[privatecaptcha][progress] Localization not found. lang=${this._lang}`);\n this._lang = 'en';\n }\n\n // add CSS overrides\n const extraStyles = this.getAttribute('extra-styles');\n this.updateStyles(extraStyles);\n\n }\n\n connectedCallback() {\n this.update();\n\n // init\n const canShow = (this._displayMode == DISPLAY_WIDGET);\n this.setState(STATE_EMPTY, canShow);\n }\n\n /**\n * @param {string} state\n * @param {boolean} canShow\n * @returns {boolean} if changed\n */\n setState(state, canShow) {\n if (state == this._state) {\n console.debug('[privatecaptcha][progress] already in this state: ' + state);\n if (DISPLAY_POPUP === this._displayMode) {\n this._syncHostClass(canShow);\n }\n return false;\n }\n\n if (this._debug) { console.debug(`[privatecaptcha][progress] change state. old=${this._state} new=${state}`); }\n\n this.render(state, canShow);\n this._state = state;\n\n return true;\n }\n\n /**\n * Rebuilds the widget UI inside the shadow DOM based on the given state and\n * visibility settings. This updates the interactive area contents, applies\n * host element CSS classes (including popup-related behavior), and binds\n * the checkbox event handler when needed.\n *\n * @param {string} state - The new widget state (for example, empty, loading, or error).\n * @param {boolean} canShow - Whether the widget is allowed to be shown / expanded to the user.\n * @returns {void}\n */\n render(state, canShow) {\n const activeArea = document.createElement('div');\n activeArea.className = 'pc-interactive-area';\n let bindCheckEvent = false;\n let showPopupIfNeeded = false;\n const strings = i18n.STRINGS[this._lang];\n\n switch (state) {\n case STATE_EMPTY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox(''));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_LOADING:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('loading'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_READY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('ready'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_IN_PROGRESS:\n activeArea.appendChild(progressRing());\n activeArea.appendChild(progressLabel(strings[i18n.VERIFYING]));\n showPopupIfNeeded = canShow;\n break;\n case STATE_VERIFIED:\n activeArea.appendChild(htmlToElement(verifiedSVG));\n activeArea.appendChild(label(strings[i18n.SUCCESS], PROGRESS_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_INVALID:\n activeArea.appendChild(checkbox('invalid'));\n activeArea.appendChild(label(strings[i18n.UNAVAILABLE], CHECKBOX_ID));\n break;\n case STATE_ERROR:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('error'));\n activeArea.appendChild(label(strings[i18n.ERROR], CHECKBOX_ID));\n break;\n default:\n console.error(`[privatecaptcha][progress] unknown state: ${state}`);\n break;\n }\n\n if (this._debug || this._error || this._notice) {\n if (this._error) {\n const text = errorDescription(this._error, strings);\n activeArea.appendChild(debugSpan(text, this._error, (this._debug && this._error) ? this._internalError : null));\n } else if (this._notice) {\n const noticeSpan = debugSpan(strings[i18n.NOTICE], false, this._notice);\n noticeSpan.classList.add(DEBUG_NOTICE_CLASS);\n activeArea.appendChild(noticeSpan);\n } else {\n activeArea.appendChild(debugSpan(`[${state}]`, false, null /*internal error*/));\n }\n }\n\n this._syncHostClass(showPopupIfNeeded);\n\n const widget = document.createElement('div');\n widget.className = 'pc-captcha-widget';\n widget.appendChild(activeArea);\n const spacer = document.createElement('div');\n spacer.className = 'pc-spacer';\n widget.appendChild(spacer);\n widget.appendChild(infoSection());\n\n this._root.replaceChildren(widget);\n\n if (bindCheckEvent) {\n const checkboxEl = this._root.getElementById(CHECKBOX_ID);\n if (checkboxEl) {\n checkboxEl.addEventListener('change', this.onCheckboxClicked.bind(this));\n } else {\n console.warn('[privatecaptcha][progress] checkbox not found in the Shadow DOM');\n }\n }\n }\n\n _syncHostClass(showPopupIfNeeded) {\n let hostClass = '';\n switch (this._displayMode) {\n case DISPLAY_HIDDEN:\n hostClass = 'hidden';\n break;\n case DISPLAY_POPUP:\n hostClass = showPopupIfNeeded ? 'floating' : 'hidden';\n break;\n case DISPLAY_WIDGET:\n break;\n }\n\n this.classList.remove('hidden', 'floating');\n if (hostClass) { this.classList.add(hostClass); }\n }\n\n /**\n * @param {Event} event\n */\n onCheckboxClicked(event) {\n event.preventDefault();\n if (this._debug) {\n console.debug(\"[privatecaptcha][progress] checkbox was clicked\");\n }\n if (event.target.checked) {\n const checkEvent = new CustomEvent(\"privatecaptcha:checked\", {\n bubbles: true,\n composed: true\n });\n\n this.dispatchEvent(checkEvent);\n } else {\n console.warn('[privatecaptcha][progress] checkbox was unchecked');\n }\n }\n\n /**\n * @param {number} percent\n */\n setProgress(percent) {\n if (STATE_IN_PROGRESS == this._state) {\n const progressBar = this._root.getElementById(PROGRESS_ID);\n if (progressBar) {\n progressBar.setProgress(percent);\n } else {\n console.warn('[privatecaptcha][progress] progress element not found');\n }\n } else {\n if (this._debug) {\n console.debug(`[privatecaptcha][progress] skipping updating progress when not in progress. state=${this._state}`);\n }\n }\n }\n\n /**\n * @param {number} value\n * @param {string} internalError\n * @param {string|null} [notice]\n */\n setError(value, internalError, notice) {\n this._error = value;\n this._internalError = internalError;\n this._notice = notice || null;\n }\n\n /**\n * @param {string} text\n * @param {boolean} error\n */\n setDebugText(text, error) {\n const debugElement = this._root.getElementById(DEBUG_ID);\n if (debugElement) {\n let debugText = '';\n if (this._error) {\n const strings = i18n.STRINGS[this._lang];\n debugText = errorDescription(this._error, strings);\n } else if (this._notice) {\n const strings = i18n.STRINGS[this._lang];\n debugText = strings[i18n.NOTICE];\n } else {\n debugText = `[${text}]`;\n }\n debugElement.textContent = debugText;\n if (error || this._error) {\n debugElement.classList.add(DEBUG_ERROR_CLASS);\n } else {\n debugElement.classList.remove(DEBUG_ERROR_CLASS);\n }\n }\n }\n\n static get observedAttributes() {\n return ['state', 'progress', 'extra-styles'];\n }\n\n updateStyles(newStyles) {\n const baseSheets = this._root.adoptedStyleSheets.filter(\n sheet => sheet !== this._overridesSheet\n );\n\n if (newStyles) {\n const cssText = `@layer custom { :host { ${newStyles} } }`;\n if (!this._overridesSheet) {\n this._overridesSheet = new CSSStyleSheet();\n }\n this._overridesSheet.replaceSync(cssText);\n this._root.adoptedStyleSheets = [...baseSheets, this._overridesSheet];\n } else {\n this._overridesSheet = null;\n this._root.adoptedStyleSheets = baseSheets;\n }\n }\n\n /**\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) { return; }\n\n switch (name) {\n case 'progress':\n const progressValue = newValue !== null ? Number.parseFloat(newValue) : Number.NaN;\n if (!Number.isNaN(progressValue)) {\n this.setProgress(progressValue);\n }\n break;\n case 'extra-styles':\n this.updateStyles(newValue);\n break;\n };\n }\n}\n", "'use strict';\n\nimport { getPuzzle, Puzzle } from './puzzle.js'\nimport { WorkersPool } from './workerspool.js'\nimport { CaptchaElement, STATE_EMPTY, STATE_ERROR, STATE_READY, STATE_IN_PROGRESS, STATE_VERIFIED, STATE_LOADING, STATE_INVALID, DISPLAY_POPUP, DISPLAY_WIDGET } from './html.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('private-captcha')) {\n window.customElements.define('private-captcha', CaptchaElement);\n}\n\nconst PUZZLE_ENDPOINT_URL = 'https://api.privatecaptcha.com/puzzle';\nconst PUZZLE_EU_ENDPOINT_URL = 'https://api.eu.privatecaptcha.com/puzzle';\nexport const RECAPTCHA_COMPAT = 'recaptcha';\n\n\n/**\n * @param {HTMLElement} element\n * @returns {HTMLFormElement | null}\n */\nfunction findParentFormElement(element) {\n while (element && element.tagName !== 'FORM') {\n element = element.parentElement;\n }\n return element;\n}\n\nexport class CaptchaWidget {\n /**\n * @param {HTMLElement} element\n * @param {Object} options\n */\n constructor(element, options = {}) {\n this._element = element;\n this._puzzle = null;\n this._expiryTimeout = null;\n this._state = STATE_EMPTY;\n this._lastProgress = null;\n this._solution = null;\n this._userStarted = false; // aka 'user started while we were initializing'\n this._apiTriggered = false; // aka execute() for programmatic triggering\n this._options = {};\n this._errorCode = errors.ERROR_NO_ERROR;\n this._internalError = null;\n\n this.setOptions(options);\n\n this._workersPool = new WorkersPool({\n workersReady: this.onWorkersReady.bind(this),\n workerError: this.onWorkerError.bind(this),\n workStarted: this.onWorkStarted.bind(this),\n workCompleted: this.onWorkCompleted.bind(this),\n progress: this.onWorkProgress.bind(this),\n }, this._options.debug);\n\n const form = findParentFormElement(this._element);\n if (form) {\n // NOTE: this does not work on Safari by (Apple) design if we click a button\n // \"passive\" - cannot use preventDefault()\n form.addEventListener('focusin', this.onFocusIn.bind(this), { passive: true });\n this._element.replaceChildren(this._createCaptchaElement());\n this._element.addEventListener('privatecaptcha:checked', this.onChecked.bind(this));\n\n if (this._options.storeVariable) {\n this._element[this._options.storeVariable] = this;\n }\n\n if (DISPLAY_POPUP === this._options.displayMode) {\n const anchor = form.querySelector(\".private-captcha-anchor\");\n if (anchor) {\n anchor.style.position = \"relative\";\n } else {\n console.warn('[privatecaptcha] cannot find anchor for popup');\n }\n }\n\n this.checkConfigured();\n } else {\n console.warn('[privatecaptcha] cannot find form element');\n }\n }\n\n _createCaptchaElement() {\n const captchaEl = document.createElement('private-captcha');\n this._updateCaptchaElement(captchaEl);\n return captchaEl;\n }\n\n _updateCaptchaElement(captchaEl) {\n captchaEl.setAttribute('lang', this._options.lang);\n captchaEl.setAttribute('theme', this._options.theme);\n captchaEl.setAttribute('extra-styles', this._options.styles);\n\n if (this._options.debug) {\n captchaEl.setAttribute('debug', 'true');\n }\n\n captchaEl.setAttribute('display-mode', this._options.displayMode);\n }\n\n /**\n * @param {Object} options\n */\n setOptions(options) {\n const euOnly = this._element.dataset[\"eu\"] || null;\n const defaultEndpoint = euOnly ? PUZZLE_EU_ENDPOINT_URL : PUZZLE_ENDPOINT_URL;\n\n let defaultField = \"private-captcha-solution\";\n if (options.hasOwnProperty('compat') && options.compat === RECAPTCHA_COMPAT) {\n defaultField = \"g-recaptcha-response\";\n }\n\n let sitekey = \"\";\n if (options.hasOwnProperty('sitekey')) {\n sitekey = options.sitekey;\n }\n\n this._options = Object.assign({\n startMode: this._element.dataset[\"startMode\"] || \"auto\",\n debug: this._element.dataset[\"debug\"],\n fieldName: this._element.dataset[\"solutionField\"] || defaultField,\n puzzleEndpoint: this._element.dataset[\"puzzleEndpoint\"] || defaultEndpoint,\n sitekey: sitekey || this._element.dataset[\"sitekey\"] || \"\",\n displayMode: this._element.dataset[\"displayMode\"] || \"widget\",\n lang: this._element.dataset[\"lang\"] || \"auto\",\n theme: this._element.dataset[\"theme\"] || \"light\",\n styles: this._element.dataset[\"styles\"] || \"\",\n storeVariable: this._element.dataset[\"storeVariable\"] || null,\n }, options);\n\n if ('auto' === this._options.lang) {\n let lang = '';\n if (typeof document !== 'undefined' && document.documentElement) {\n lang = document.documentElement.lang;\n }\n if (!lang && typeof navigator !== 'undefined') {\n lang = navigator.language || navigator.userLanguage || '';\n }\n if (typeof lang === 'string' && lang.length >= 2) {\n this._options.lang = lang.split('-')[0].toLowerCase();\n }\n }\n }\n\n /**\n * Fetches puzzle from the server and sets up workers.\n * @param {boolean} autoStart\n */\n async init(autoStart) {\n this.trace(`init() was called. state=${this._state}`);\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n this._internalError = null;\n this._notice = null;\n\n const sitekey = this.checkConfigured();\n if (!sitekey) { return; }\n\n if ((STATE_EMPTY !== this._state) && (STATE_ERROR !== this._state)) {\n console.warn(`[privatecaptcha] captcha has already been initialized. state=${this._state}`);\n return;\n }\n\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n const startWorkers = ('auto' === this._options.startMode) || autoStart;\n\n try {\n this.setState(STATE_LOADING);\n this.setProgressState(STATE_LOADING);\n this.trace(`fetching puzzle. sitekey=${sitekey}`);\n const puzzleResult = await getPuzzle(this._options.puzzleEndpoint, sitekey);\n this._notice = puzzleResult.notice;\n this._puzzle = new Puzzle(puzzleResult.data);\n if (this._puzzle && this._puzzle.isZero()) { this._errorCode = errors.ERROR_ZERO_PUZZLE; }\n const expirationMillis = this._puzzle.expirationMillis();\n this.trace(`parsed puzzle buffer. isZero=${this._puzzle.isZero()} ttl=${expirationMillis / 1000}`);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (expirationMillis) { this._expiryTimeout = setTimeout(() => this.expire(), expirationMillis); }\n this._workersPool.init(this._puzzle, startWorkers);\n this.signalInit();\n } catch (e) {\n console.error('[privatecaptcha]', e);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n this._errorCode = errors.ERROR_FETCH_PUZZLE;\n this._internalError = e.internalError || e.message;\n this.setState(STATE_ERROR);\n const shouldFinalize = this.shouldFinalizeWork();\n this.setProgressState(shouldFinalize ? STATE_VERIFIED : STATE_EMPTY);\n if (shouldFinalize) {\n this.saveSolutions();\n this.signalErrored();\n }\n }\n }\n\n /**\n * Ensures that we have a sitekey available (defined or passed through options)\n * @returns {string | null}\n */\n checkConfigured() {\n const sitekey = this._options.sitekey || this._element.dataset[\"sitekey\"];\n if (!sitekey) {\n console.error(\"[privatecaptcha] sitekey not set on captcha element\");\n this._errorCode = errors.ERROR_NOT_CONFIGURED;\n this.setState(STATE_INVALID);\n this.setProgressState(STATE_INVALID);\n return null;\n }\n\n return sitekey;\n }\n\n start() {\n if (STATE_READY !== this._state) {\n console.warn(`[privatecaptcha] solving has already been started. state=${this._state}`);\n return;\n }\n\n this.trace('starting solving captcha');\n\n try {\n this.setState(STATE_IN_PROGRESS);\n this._workersPool.solve(this._puzzle);\n } catch (e) {\n console.error('[privatecaptcha]', e);\n }\n }\n\n dispatchEvent(eventName, detail = {}) {\n const event = new CustomEvent(`privatecaptcha:${eventName}`, {\n bubbles: false,\n detail: { widget: this, element: this._element, ...detail }\n });\n this._element.dispatchEvent(event);\n }\n\n signalEvent(event, callbackName) {\n this.dispatchEvent(event);\n\n const callback = this._element.dataset[callbackName];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in callback', event, e);\n }\n }\n }\n\n signalInit() {\n this.signalEvent('init', 'initCallback');\n }\n\n signalStarted() {\n this.signalEvent('start', 'startedCallback');\n }\n\n signalFinished() {\n this.signalEvent('finish', 'finishedCallback');\n }\n\n signalErrored() {\n this.signalEvent('error', \"erroredCallback\");\n }\n\n signalReset() {\n this.signalEvent('reset', 'resetCallback');\n }\n\n ensureNoSolutionField() {\n const solutionField = this._element.querySelector(`input[name=\"${this._options.fieldName}\"]`);\n if (solutionField) {\n try {\n this._element.removeChild(solutionField);\n } catch (e) {\n console.warn('[privatecaptcha]', e);\n }\n }\n }\n\n /**\n * Resets widget to a state when `start()` or `execute()` can be called again\n * @param {Object} options\n */\n reset(options = {}) {\n this.trace('reset captcha');\n\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n this._internalError = null;\n this._notice = null;\n this.setOptions(options);\n this.setState(STATE_EMPTY);\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n this._updateCaptchaElement(pcElement);\n // propagate the styles\n pcElement.update();\n }\n this.setProgressState(STATE_EMPTY, true /*force refresh*/);\n this.ensureNoSolutionField();\n this._userStarted = false;\n this._apiTriggered = false;\n\n this.signalReset();\n }\n\n updateStyles() {\n const newStyles = this._element.dataset[\"styles\"] || \"\";\n if (newStyles !== this._options.styles) {\n this._options.styles = newStyles;\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setAttribute('extra-styles', newStyles);\n }\n }\n }\n\n expire() {\n this.trace('expire captcha');\n\n // we immediately call init so reset() will be called there for workers pool\n if (this._workersPool) { this._workersPool.stop(); }\n\n this.setState(STATE_EMPTY);\n this.setProgressState(STATE_EMPTY);\n this.ensureNoSolutionField();\n this._apiTriggered = false;\n this.init(this._userStarted);\n }\n\n /**\n * @returns {HTMLElement} underlying element where captcha is rendered\n */\n element() {\n return this._element;\n }\n\n /**\n * @returns {string} value of the puzzle solution that needs to be sent for verification\n */\n solution() {\n return this._solution;\n }\n\n /**\n * @param {FocusEvent} event\n */\n onFocusIn(event) {\n this.trace('onFocusIn event handler');\n\n if (STATE_EMPTY !== this._state) {\n this.trace(`skipping focusin event with non-empty state. state=${this._state}`)\n return;\n }\n\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement && (event.target == pcElement)) {\n this.trace('skipping focusin event on captcha element')\n return;\n }\n\n this.init(false /*start*/);\n }\n\n /**\n * A programmatic way of starting solving the puzzle (as opposed to user input way)\n * @returns {Promise<never>} promise intentionally does not resolve so that the form can be submitted via the callbacks\n */\n execute() {\n if (this._apiTriggered && (STATE_ERROR !== this._state)) {\n this.trace(`skipping duplicate execute event handler`);\n return new Promise(() => { });\n }\n\n this.trace(`execute event handler. state=${this._state}`);\n this._apiTriggered = true;\n\n // show spinner when in auto mode\n let progressState = ('auto' === this._options.startMode) ? STATE_IN_PROGRESS : this._state;\n this._triggerSolving(progressState);\n\n return new Promise(() => { });\n }\n\n onChecked(event) {\n if (event) {\n event.stopPropagation();\n }\n\n if (this._userStarted && (STATE_ERROR !== this._state)) {\n this.trace('skipping duplicate onChecked handler')\n return;\n }\n\n this.trace(`onChecked event handler. state=${this._state}`);\n this._userStarted = true;\n\n // always show spinner when user clicked\n this._triggerSolving(STATE_IN_PROGRESS);\n }\n\n _triggerSolving(progressState) {\n let finished = false;\n\n switch (this._state) {\n case STATE_READY:\n // NOTE: in case of short-circuit (zero/test puzzle), start() can call all callbacks before exit\n this.start();\n break;\n case STATE_EMPTY:\n case STATE_ERROR:\n const autoStart = this._userStarted || this._apiTriggered;\n this.init(autoStart);\n break;\n case STATE_LOADING:\n // this will be handled in onWorkersReady()\n break;\n case STATE_IN_PROGRESS:\n setTimeout(() => this.setProgress(this._lastProgress), 500);\n break;\n case STATE_VERIFIED:\n // happens when we finished verification fully in the background, still should animate \"the end\"\n progressState = STATE_VERIFIED;\n finished = true;\n break;\n default:\n console.warn(`[privatecaptcha] triggerSolving: unexpected state. state=${this._state}`);\n return;\n }\n\n this.setProgressState(progressState);\n if (finished) {\n this.saveSolutions();\n this.signalFinished();\n }\n }\n\n shouldFinalizeWork() {\n return this._userStarted || (this._apiTriggered && (\n ('auto' === this._options.startMode) || ('hidden' === this._options.displayMode)\n ));\n }\n\n /**\n * @param {boolean} autoStart\n */\n onWorkersReady(autoStart) {\n this.trace(`workers are ready. autostart=${autoStart}`);\n\n this.setState(STATE_READY);\n // if user started we always show \"in progress\"\n if (!this._userStarted && !(this._apiTriggered && autoStart)) {\n this.setProgressState(STATE_READY);\n }\n\n if (autoStart || this._userStarted || this._apiTriggered) {\n this.start();\n }\n }\n\n /**\n * @param {Error} error\n */\n onWorkerError(error) {\n console.error('[privatecaptcha] error in worker:', error)\n this._errorCode = errors.ERROR_SOLVE_PUZZLE;\n }\n\n onWorkStarted() {\n this.signalStarted();\n }\n\n onWorkCompleted() {\n this.trace('[privatecaptcha] work completed');\n\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] solving has not been started. state=${this._state}`);\n return;\n }\n\n this.setState(STATE_VERIFIED);\n const shouldFinalize = this.shouldFinalizeWork();\n if (shouldFinalize) {\n this.setProgressState(STATE_VERIFIED);\n }\n\n if (shouldFinalize) {\n this.saveSolutions();\n\n // give time for checkbox animation to complete\n setTimeout(() => this.signalFinished(), 500);\n }\n }\n\n /**\n * @param {number} percent\n */\n onWorkProgress(percent) {\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] skipping progress update. state=${this._state}`);\n return;\n }\n\n this.trace(`progress changed. percent=${percent}`);\n this.setProgress(percent);\n }\n\n saveSolutions() {\n const solutions = this._workersPool.serializeSolutions(this._errorCode);\n const payload = `${solutions}.${this._puzzle ? this._puzzle.rawData : ''}`;\n\n this.ensureNoSolutionField();\n this._element.insertAdjacentHTML('beforeend', `<input name=\"${this._options.fieldName}\" type=\"hidden\" value=\"${payload}\">`);\n\n this._solution = payload;\n\n this.trace(`saved solutions. field=${this._options.fieldName} payload=${payload}`);\n }\n\n /**\n * Updates the \"UI\" state of the widget.\n * @param {string} state\n * @param {boolean} forceRefresh\n * @returns {boolean} if changed\n */\n setProgressState(state, forceRefresh = false) {\n // NOTE: hidden display mode is taken care of inside setState() even when (_userStarted == true)\n const canShow = this._userStarted ||\n (DISPLAY_WIDGET === this._options.displayMode) ||\n (this._apiTriggered && (DISPLAY_POPUP === this._options.displayMode));\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setError(this._errorCode, this._internalError, this._notice);\n const changed = pcElement.setState(state, canShow);\n if (!changed && forceRefresh) {\n pcElement.render(state, canShow);\n }\n return changed;\n } else {\n console.error('[privatecaptcha] component not found when changing state');\n return false;\n }\n }\n\n /**\n * Updates the \"internal\" (actual) state.\n * @param {string} state\n */\n setState(state) {\n this.trace(`change state. old=${this._state} new=${state}`);\n this._state = state;\n\n if (this._options.debug) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setDebugText(state, (STATE_ERROR == state));\n }\n }\n }\n\n /**\n * @param {number} progress\n */\n setProgress(progress) {\n this._lastProgress = progress;\n if ((STATE_IN_PROGRESS === this._state) || (STATE_VERIFIED === this._state)) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) { pcElement.setProgress(progress); }\n else { console.error('[privatecaptcha] component not found when updating progress'); }\n }\n }\n\n /**\n * @param {string} str\n */\n trace(str) {\n if (this._options.debug) {\n console.debug('[privatecaptcha]', str)\n }\n }\n}\n"],
5
- "mappings": "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G,SACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,MACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,wBACnB,CAACC,CAAS,EAAG,oBACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,kBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,QACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,2BACnB,CAACC,CAAS,EAAG,0BACb,CAACC,CAAO,EAAG,eACX,CAACC,CAAW,EAAG,mBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,OACT,CAACC,CAAO,EAAG,SACX,CAACC,CAAM,EAAG,SACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,8BACnB,CAACC,CAAS,EAAG,aACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,sBACf,CAACC,CAAU,EAAG,kBACd,CAACC,CAAK,EAAG,MACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,OACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,0BACnB,CAACC,CAAS,EAAG,YACb,CAACC,CAAO,EAAG,YACX,CAACC,CAAW,EAAG,oBACf,CAACC,CAAU,EAAG,eACd,CAACC,CAAK,EAAG,OACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,QACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,iCACnB,CAACC,CAAS,EAAG,gBACb,CAACC,CAAO,EAAG,gBACX,CAACC,CAAW,EAAG,mBACf,CAACC,CAAU,EAAG,eACd,CAACC,CAAK,EAAG,iBACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,OACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,mIACnB,CAACC,CAAS,EAAG,4HACb,CAACC,CAAO,EAAG,2EACX,CAACC,CAAW,EAAG,+DACf,CAACC,CAAU,EAAG,mDACd,CAACC,CAAK,EAAG,6CACT,CAACC,CAAO,EAAG,+DACX,CAACC,CAAM,EAAG,gCACd,EACA,GAAM,CACF,CAACP,CA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",
6
- "names": ["chars", "lookup", "i", "encode", "arraybuffer", "bytes", "len", "base64", "decode", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "readUInt32LE", "binaryData", "offset", "PUZZLE_BUFFER_LENGTH", "ACCEPTABLE_CLIENT_ERRORS", "DEFAULT_TIMEOUT_MS", "DEFAULT_GLOBAL_TIMEOUT_MS", "getPuzzle", "endpoint", "sitekey", "options", "response", "fetchWithBackoff", "data", "notice", "json", "err", "wait", "delay", "signal", "resolve", "reject", "timeoutId", "url", "fetchOptions", "maxAttempts", "initialDelay", "maxDelay", "timeoutMs", "globalTimeoutMs", "globalController", "globalSignal", "globalTimeoutId", "lastError", "attempt", "error", "fetchController", "fetchSignal", "fetchTimeoutId", "globalAbortHandler", "readUInt64LE", "binaryData", "offset", "readUInt32LE", "Puzzle", "rawData", "parts", "buffer", "decode", "userDataSize", "sourceBuffer", "enlargedBuffer", "inlineWorker", "scriptText", "blob", "url", "worker", "Worker", "inlineWorker", "METADATA_VERSION", "WorkersPool", "callbacks", "debug", "puzzle", "autoStart", "workersCount", "readyWorkers", "workers", "pool", "puzzleID", "puzzleData", "i", "worker", "Worker", "e", "event", "id", "solution", "wasm", "skipSolving", "stubSolution", "count", "errorCode", "solutionsLength", "total", "arr", "metadataArray", "metadataSize", "resultArray", "offset", "encode", "binaryData", "currentIndex", "wasmFlag", "elapsedMillis", "SafeHTMLElement", "ProgressRing", "SafeHTMLElement", "stroke", "size", "radius", "normalizedRadius", "percent", "progress", "offset", "circle", "pie", "name", "oldValue", "newValue", "progressValue", "styles_default", "CLICK_TO_VERIFY", "VERIFYING", "SUCCESS", "UNAVAILABLE", "INCOMPLETE", "ERROR", "TESTING", "NOTICE", "STRINGS", "ProgressRing", "STATE_EMPTY", "STATE_ERROR", "STATE_LOADING", "STATE_READY", "STATE_IN_PROGRESS", "STATE_VERIFIED", "STATE_INVALID", "DISPLAY_POPUP", "DISPLAY_HIDDEN", "DISPLAY_WIDGET", "CHECKBOX_ID", "PROGRESS_ID", "DEBUG_ID", "DEBUG_ERROR_CLASS", "DEBUG_NOTICE_CLASS", "DEBUG_TOOLTIP_CLASS", "privateCaptchaSVG", "verifiedSVG", "htmlToElement", "html", "template", "checkbox", "cls", "el", "label", "text", "forElement", "progressRing", "progressLabel", "dots", "dot", "debugSpan", "isError", "internalError", "infoSection", "info", "link", "errorDescription", "code", "strings", "INCOMPLETE", "TESTING", "ERROR", "CaptchaElement", "SafeHTMLElement", "sheet", "styles_default", "STRINGS", "extraStyles", "canShow", "state", "activeArea", "bindCheckEvent", "showPopupIfNeeded", "CLICK_TO_VERIFY", "VERIFYING", "SUCCESS", "UNAVAILABLE", "noticeSpan", "NOTICE", "widget", "spacer", "checkboxEl", "hostClass", "event", "checkEvent", "percent", "progressBar", "value", "notice", "error", "debugElement", "debugText", "newStyles", "baseSheets", "cssText", "name", "oldValue", "newValue", "progressValue", "CaptchaElement", "PUZZLE_ENDPOINT_URL", "PUZZLE_EU_ENDPOINT_URL", "RECAPTCHA_COMPAT", "findParentFormElement", "element", "CaptchaWidget", "options", "STATE_EMPTY", "WorkersPool", "form", "DISPLAY_POPUP", "anchor", "captchaEl", "defaultEndpoint", "defaultField", "sitekey", "lang", "autoStart", "STATE_ERROR", "startWorkers", "STATE_LOADING", "puzzleResult", "getPuzzle", "Puzzle", "expirationMillis", "e", "shouldFinalize", "STATE_VERIFIED", "STATE_INVALID", "STATE_READY", "STATE_IN_PROGRESS", "eventName", "detail", "event", "callbackName", "callback", "solutionField", "pcElement", "newStyles", "progressState", "finished", "error", "percent", "payload", "state", "forceRefresh", "canShow", "DISPLAY_WIDGET", "changed", "progress", "str"]
4
+ "sourcesContent": ["const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n", "export function readUInt32LE(binaryData, offset) {\n return (\n binaryData[offset] |\n (binaryData[offset + 1] << 8) |\n (binaryData[offset + 2] << 16) |\n (binaryData[offset + 3] << 24)\n ) >>> 0;\n}\n\nexport function thresholdFromDifficulty(d) {\n return (Math.pow(2, (255.999 - d) / 8.0)) >>> 0;\n}\n\nexport function findBlake2bSolution(buffer, threshold, puzzleIndex, debug, hasher) {\n const length = buffer.length;\n if (debug) {\n console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${threshold} puzzleID=${puzzleIndex} length=${length}`);\n }\n buffer[length - 8] = puzzleIndex;\n\n let hash = new Uint8Array(32);\n\n for (let i = 0; i < 256; i++) {\n buffer[length - 1 - 3] = i;\n\n for (let j = 0; j < 256; j++) {\n buffer[length - 1 - 2] = j;\n\n for (let k = 0; k < 256; k++) {\n buffer[length - 1 - 1] = k;\n\n for (let l = 0; l < 256; l++) {\n buffer[length - 1 - 0] = l;\n\n hash.fill(0);\n hasher(hash.length).update(buffer).digest(hash);\n const prefix = readUInt32LE(hash, 0);\n\n if (prefix <= threshold) {\n if (debug) {\n console.debug(`[privatecaptcha][worker] found solution. prefix=${prefix} threshold=${threshold}`);\n }\n return buffer.subarray(length - 8);\n }\n }\n }\n }\n }\n\n return new Uint8Array(0);\n}\n", "'use strict';\n\nimport { decode } from 'base64-arraybuffer';\nimport { readUInt32LE } from './puzzle.utils.js';\n\nconst PUZZLE_BUFFER_LENGTH = 128;\nconst MAX_PUZZLE_BODY_LENGTH = PUZZLE_BUFFER_LENGTH * 2;\nconst PUZZLE_V1_MIN_LENGTH = 47;\nconst PUZZLE_V2_MIN_LENGTH = 48;\nconst PUZZLE_VERSION_1 = 1;\nconst PUZZLE_VERSION_2 = 2;\nexport const CHALLENGE_BLAKE2B = 0;\nexport const CHALLENGE_ARGON2ID = 1;\n// RequestTimeout, Conflict, TooManyRequests\nconst ACCEPTABLE_CLIENT_ERRORS = [408, 409, 429];\nconst DEFAULT_TIMEOUT_MS = 5000;\nconst DEFAULT_GLOBAL_TIMEOUT_MS = 30000;\n\nexport async function getPuzzle(endpoint, sitekey, options = {}) {\n try {\n const separator = endpoint.includes('?') ? '&' : '?';\n const response = await fetchWithBackoff(`${endpoint}${separator}sitekey=${encodeURIComponent(sitekey)}`, {\n fetchOptions: { headers: [[\"x-pc-captcha-version\", globalThis.__privateCaptchaExtended === true ? \"2\" : \"1\"]], mode: \"cors\" },\n maxAttempts: options.attempts ?? 5,\n initialDelay: 800,\n maxDelay: 6000,\n timeoutMs: options.timeout ?? DEFAULT_TIMEOUT_MS,\n globalTimeoutMs: options.globalTimeout ?? DEFAULT_GLOBAL_TIMEOUT_MS\n });\n\n if (response.ok) {\n const data = await response.text();\n const notice = response.headers.get('X-PC-Widget-Notice');\n return { data, notice };\n } else {\n let json = await response.json();\n if (json && json.error) {\n throw new Error(json.error);\n }\n }\n } catch (err) {\n console.error('[privatecaptcha]', err);\n throw err;\n }\n\n throw new Error('Internal error');\n};\n\nfunction wait(delay, signal) {\n return new Promise((resolve, reject) => {\n const timeoutId = setTimeout(resolve, delay);\n if (signal) {\n signal.addEventListener('abort', () => {\n clearTimeout(timeoutId);\n reject(signal.reason || new Error('Aborted'));\n }, { once: true });\n }\n });\n}\n\nasync function fetchWithBackoff(url, options = {}) {\n const {\n fetchOptions = {},\n maxAttempts = 5,\n initialDelay = 800,\n maxDelay = 6000,\n timeoutMs = DEFAULT_TIMEOUT_MS,\n globalTimeoutMs = DEFAULT_GLOBAL_TIMEOUT_MS\n } = options;\n\n // Global AbortController is used to abort wait() between retries when global timeout occurs\n const globalController = new AbortController();\n const { signal: globalSignal } = globalController;\n let globalTimeoutId = setTimeout(() => globalController.abort(new Error('Fetch timed out')), globalTimeoutMs);\n let lastError = null;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n if (attempt > 0) {\n const delay = Math.min(initialDelay * Math.pow(2, attempt), maxDelay);\n try {\n await wait(delay, globalSignal);\n } catch (err) {\n clearTimeout(globalTimeoutId);\n if (globalSignal.aborted) {\n lastError = 'Global time out';\n const error = new Error('Fetch timed out');\n error.internalError = lastError;\n throw error;\n }\n throw err;\n }\n }\n\n // Per-call AbortController is used for individual fetch timeout\n const fetchController = new AbortController();\n const { signal: fetchSignal } = fetchController;\n const fetchTimeoutId = setTimeout(() => fetchController.abort(new Error('Fetch timed out')), timeoutMs);\n\n // If global timeout fires, abort the current fetch as well\n const globalAbortHandler = () => fetchController.abort(new Error('Fetch timed out'));\n globalSignal.addEventListener('abort', globalAbortHandler, { once: true });\n\n try {\n const response = await fetch(url, { ...fetchOptions, signal: fetchSignal });\n clearTimeout(fetchTimeoutId);\n globalSignal.removeEventListener('abort', globalAbortHandler);\n if (response.ok) {\n clearTimeout(globalTimeoutId);\n return response;\n } else {\n lastError = `HTTP ${response.status}`;\n console.warn('[privatecaptcha]', `HTTP request failed. url=${url} status=${response.status}`);\n }\n\n if ((response.status >= 400) && (response.status < 500) &&\n !ACCEPTABLE_CLIENT_ERRORS.includes(response.status)) {\n // we don't retry on most client errors\n break;\n } else {\n continue;\n }\n } catch (err) {\n clearTimeout(fetchTimeoutId);\n globalSignal.removeEventListener('abort', globalAbortHandler);\n if (globalSignal.aborted) {\n clearTimeout(globalTimeoutId);\n lastError = 'Global time out';\n const error = new Error('Fetch timed out');\n error.internalError = lastError;\n throw error;\n }\n if (fetchSignal.aborted) {\n // Per-call timeout - continue to next attempt\n lastError = 'Fetch timed out';\n console.warn('[privatecaptcha]', `Fetch attempt ${attempt + 1} timed out`);\n continue;\n }\n lastError = err.message || String(err);\n console.error('[privatecaptcha]', err);\n }\n }\n\n clearTimeout(globalTimeoutId);\n const error = new Error('Captcha puzzle load failed after maximum retry attempts');\n error.internalError = lastError;\n throw error;\n}\n\nfunction readUInt64LE(binaryData, offset) {\n return (\n BigInt(readUInt32LE(binaryData, offset)) +\n (BigInt(readUInt32LE(binaryData, offset + 4)) << 32n)\n );\n}\n\nexport class Puzzle {\n constructor(rawData) {\n this.puzzleBuffer = null;\n this.puzzleBytes = null;\n\n this.version = null;\n this.challenge = null;\n this.ID = null;\n this.difficulty = null;\n this.solutionsCount = null;\n this.expirationTimestamp = null;\n this.userData = null;\n\n this.signature = null;\n\n this.parse(rawData);\n this.rawData = rawData;\n }\n\n parse(rawData) {\n const parts = rawData.split('.');\n if (parts.length !== 2) {\n throw new Error(`Invalid amount of parts: ${parts.length}`);\n }\n\n const buffer = parts[0];\n this.signature = parts[1];\n if (buffer.length > Math.ceil(MAX_PUZZLE_BODY_LENGTH / 3) * 4) {\n throw new Error(`Invalid puzzle body length: ${buffer.length}`);\n }\n\n const data = new Uint8Array(decode(buffer));\n if (data.length < 1) {\n throw new Error('Puzzle body is empty');\n }\n\n this.version = data[0];\n let minimumLength;\n let offset = 1;\n switch (this.version) {\n case PUZZLE_VERSION_1:\n minimumLength = PUZZLE_V1_MIN_LENGTH;\n this.challenge = CHALLENGE_BLAKE2B;\n break;\n case PUZZLE_VERSION_2:\n minimumLength = PUZZLE_V2_MIN_LENGTH;\n if (data.length < offset + 1) {\n throw new Error(`Invalid puzzle body length: ${data.length}`);\n }\n this.challenge = data[offset++];\n if (this.challenge !== CHALLENGE_BLAKE2B && this.challenge !== CHALLENGE_ARGON2ID) {\n throw new Error(`Unknown puzzle challenge: ${this.challenge}`);\n }\n break;\n default:\n throw new Error(`Unknown puzzle version: ${this.version}`);\n }\n if (data.length < minimumLength || data.length > MAX_PUZZLE_BODY_LENGTH) {\n throw new Error(`Invalid puzzle body length: ${data.length}`);\n }\n\n this.puzzleBytes = data.slice();\n offset += 16; // propertyID\n\n this.ID = readUInt64LE(data, offset);\n offset += 8;\n\n this.difficulty = data[offset];\n offset += 1;\n\n this.solutionsCount = data[offset];\n offset += 1;\n\n this.expirationTimestamp = readUInt32LE(data, offset);\n offset += 4;\n\n const userDataSize = data.length - offset;\n const userDataStart = offset;\n offset += 4; // AccountID is the first four bytes of userData\n this.userData = data.slice(userDataStart);\n offset += userDataSize - 4;\n\n let sourceBuffer = this.puzzleBytes;\n if (sourceBuffer.length < PUZZLE_BUFFER_LENGTH) {\n const enlargedBuffer = new Uint8Array(PUZZLE_BUFFER_LENGTH);\n enlargedBuffer.set(sourceBuffer);\n this.puzzleBuffer = enlargedBuffer;\n } else {\n this.puzzleBuffer = sourceBuffer;\n }\n }\n\n isZero() {\n return (this.ID === 0n) && (this.difficulty === 0) && (this.expirationTimestamp === 0);\n }\n\n expirationMillis() {\n if (!this.expirationTimestamp) { return 0; }\n\n const expiration = new Date(this.expirationTimestamp * 1000);\n const currentDate = new Date();\n const diff = expiration - currentDate;\n return diff;\n }\n};\n", "\nexport default function inlineWorker(scriptText) {\n let blob = new Blob([scriptText], {type: 'text/javascript'});\n let url = URL.createObjectURL(blob);\n let worker = new Worker(url);\n URL.revokeObjectURL(url);\n return worker;\n}\n", "import inlineWorker from '__inline-worker'\nexport default function Worker() {\n return inlineWorker(\"var ue=Object.create;var st=Object.defineProperty;var he=Object.getOwnPropertyDescriptor;var pe=Object.getOwnPropertyNames,kt=Object.getOwnPropertySymbols,de=Object.getPrototypeOf,$t=Object.prototype.hasOwnProperty,we=Object.prototype.propertyIsEnumerable;var it=(t,e,n)=>e in t?st(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n,ct=(t,e)=>{for(var n in e||(e={}))$t.call(e,n)&&it(t,n,e[n]);if(kt)for(var n of kt(e))we.call(e,n)&&it(t,n,e[n]);return t};var Ut=(t,e)=>()=>{try{return e||t((e={exports:{}}).exports,e),e.exports}catch(n){throw e=0,n}};var ye=(t,e,n,o)=>{if(e&&typeof e==\\\"object\\\"||typeof e==\\\"function\\\")for(let A of pe(e))!$t.call(t,A)&&A!==n&&st(t,A,{get:()=>e[A],enumerable:!(o=he(e,A))||o.enumerable});return t};var xe=(t,e,n)=>(n=t!=null?ue(de(t)):{},ye(e||!t||!t.__esModule?st(n,\\\"default\\\",{value:t,enumerable:!0}):n,t));var g=(t,e,n)=>it(t,typeof e!=\\\"symbol\\\"?e+\\\"\\\":e,n);var _t=Ut((An,Ht)=>{var me=\\\"Input must be an string, Buffer or Uint8Array\\\";function be(t){let e;if(t instanceof Uint8Array)e=t;else if(typeof t==\\\"string\\\")e=new TextEncoder().encode(t);else throw new Error(me);return e}function Ee(t){return Array.prototype.map.call(t,function(e){return(e<16?\\\"0\\\":\\\"\\\")+e.toString(16)}).join(\\\"\\\")}function Q(t){return(4294967296+t).toString(16).substring(1)}function ke(t,e,n){let o=`\\n`+t+\\\" = \\\";for(let A=0;A<e.length;A+=2){if(n===32)o+=Q(e[A]).toUpperCase(),o+=\\\" \\\",o+=Q(e[A+1]).toUpperCase();else if(n===64)o+=Q(e[A+1]).toUpperCase(),o+=Q(e[A]).toUpperCase();else throw new Error(\\\"Invalid size \\\"+n);A%6===4?o+=`\\n`+new Array(t.length+4).join(\\\" \\\"):A<e.length-2&&(o+=\\\" \\\")}console.log(o)}function $e(t,e,n){let o=new Date().getTime(),A=new Uint8Array(e);for(let i=0;i<e;i++)A[i]=i%256;let r=new Date().getTime();console.log(\\\"Generated random input in \\\"+(r-o)+\\\"ms\\\"),o=r;for(let i=0;i<n;i++){let s=t(A),B=new Date().getTime(),j=B-o;o=B,console.log(\\\"Hashed in \\\"+j+\\\"ms: \\\"+s.substring(0,20)+\\\"...\\\"),console.log(Math.round(e/(1<<20)/(j/1e3)*100)/100+\\\" MB PER SECOND\\\")}}Ht.exports={normalizeInput:be,toHex:Ee,debugPrint:ke,testSpeed:$e}});var Dt=Ut((Bn,Gt)=>{var et=_t();function tt(t,e,n){let o=t[e]+t[n],A=t[e+1]+t[n+1];o>=4294967296&&A++,t[e]=o,t[e+1]=A}function Tt(t,e,n,o){let A=t[e]+n;n<0&&(A+=4294967296);let r=t[e+1]+o;A>=4294967296&&r++,t[e]=A,t[e+1]=r}function Lt(t,e){return t[e]^t[e+1]<<8^t[e+2]<<16^t[e+3]<<24}function O(t,e,n,o,A,r){let i=V[A],s=V[A+1],B=V[r],j=V[r+1];tt(h,t,e),Tt(h,t,i,s);let l=h[o]^h[t],a=h[o+1]^h[t+1];h[o]=a,h[o+1]=l,tt(h,n,o),l=h[e]^h[n],a=h[e+1]^h[n+1],h[e]=l>>>24^a<<8,h[e+1]=a>>>24^l<<8,tt(h,t,e),Tt(h,t,B,j),l=h[o]^h[t],a=h[o+1]^h[t+1],h[o]=l>>>16^a<<16,h[o+1]=a>>>16^l<<16,tt(h,n,o),l=h[e]^h[n],a=h[e+1]^h[n+1],h[e]=a>>>31^l<<1,h[e+1]=l>>>31^a<<1}var St=new Uint32Array([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),Ue=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3],U=new Uint8Array(Ue.map(function(t){return t*2})),h=new Uint32Array(32),V=new Uint32Array(32);function Mt(t,e){let n=0;for(n=0;n<16;n++)h[n]=t.h[n],h[n+16]=St[n];for(h[24]=h[24]^t.t,h[25]=h[25]^t.t/4294967296,e&&(h[28]=~h[28],h[29]=~h[29]),n=0;n<32;n++)V[n]=Lt(t.b,4*n);for(n=0;n<12;n++)O(0,8,16,24,U[n*16+0],U[n*16+1]),O(2,10,18,26,U[n*16+2],U[n*16+3]),O(4,12,20,28,U[n*16+4],U[n*16+5]),O(6,14,22,30,U[n*16+6],U[n*16+7]),O(0,10,20,30,U[n*16+8],U[n*16+9]),O(2,12,22,24,U[n*16+10],U[n*16+11]),O(4,14,16,26,U[n*16+12],U[n*16+13]),O(6,8,18,28,U[n*16+14],U[n*16+15]);for(n=0;n<16;n++)t.h[n]=t.h[n]^h[n]^h[n+16]}var P=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function zt(t,e,n,o){if(t===0||t>64)throw new Error(\\\"Illegal output length, expected 0 < length <= 64\\\");if(e&&e.length>64)throw new Error(\\\"Illegal key, expected Uint8Array with 0 < length <= 64\\\");if(n&&n.length!==16)throw new Error(\\\"Illegal salt, expected Uint8Array with length is 16\\\");if(o&&o.length!==16)throw new Error(\\\"Illegal personal, expected Uint8Array with length is 16\\\");let A={b:new Uint8Array(128),h:new Uint32Array(16),t:0,c:0,outlen:t};P.fill(0),P[0]=t,e&&(P[1]=e.length),P[2]=1,P[3]=1,n&&P.set(n,32),o&&P.set(o,48);for(let r=0;r<16;r++)A.h[r]=St[r]^Lt(P,r*4);return e&&(lt(A,e),A.c=128),A}function lt(t,e){for(let n=0;n<e.length;n++)t.c===128&&(t.t+=t.c,Mt(t,!1),t.c=0),t.b[t.c++]=e[n]}function Ot(t){for(t.t+=t.c;t.c<128;)t.b[t.c++]=0;Mt(t,!0);let e=new Uint8Array(t.outlen);for(let n=0;n<t.outlen;n++)e[n]=t.h[n>>2]>>8*(n&3);return e}function Pt(t,e,n,o,A){n=n||64,t=et.normalizeInput(t),o&&(o=et.normalizeInput(o)),A&&(A=et.normalizeInput(A));let r=zt(n,e,o,A);return lt(r,t),Ot(r)}function Ie(t,e,n,o,A){let r=Pt(t,e,n,o,A);return et.toHex(r)}Gt.exports={blake2b:Pt,blake2bHex:Ie,blake2bInit:zt,blake2bUpdate:lt,blake2bFinal:Ot}});var It=\\\"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AEGFoYCAAGoxAABCKIaEIABBhqGAgABqMQAAQjCGIABBh6GAgABqMQAAQjiGhIQgAEGAoYCAAGoxAACENwMAIABBCGoiAA0ACwsLAEEAKAKgooCAAAvRAwMCfwF+AX8jgICAgABBgAFrIgQkgICAgABBACEFIARBACkDoKGAgAA3AwAgBEEAKQOooYCAADcDCCAEQQApA7ChgIAANwMQIARBACkDuKGAgAA3AxggBEEAKQPAoYCAADcDICAEQQApA8ihgIAANwMoIARBACkD0KGAgAA3AzAgBEEAKQPYoYCAADcDOCAEQQApA+ChgIAANwNAIARBACkD6KGAgAA3A0ggBEEAKQPwoYCAADcDUCAEQQApA/ihgIAANwNYIARBACkDgKKAgAA3A2AgBEEAKQOIooCAADcDaCAEQQApA5CigIAANwNwAkAgA0UNACAEIAIgAkEQeHNBgP6DeHFBCHYgAkEIeHOtQiCGQQApA5iigIAAQoD+//8PgyAAQf8Bca2EIgaENwN4QQEhBQJAIARBABCDgICAACABTQ0AIANBf2ohB0EAIQUDQAJAIAcgBUcNAEEAIQUMAwsgBCACIAVqQQFqIgAgAEEQeHNBgP6DeHFBCHYgAEEIeHOtQiCGIAaENwN4IAVBAWoiACEFIARBABCDgICAACABSw0ACyACIABqIQIgACADSSEFC0EAIAI2AqCigIAACyAEQYABaiSAgICAACAFCw==\\\";var q=xe(Dt(),1);function ft(t,e){return(t[e]|t[e+1]<<8|t[e+2]<<16|t[e+3]<<24)>>>0}function Nt(t){return Math.pow(2,(255.999-t)/8)>>>0}function vt(t,e,n,o,A){let r=t.length;o&&console.debug(`[privatecaptcha][worker] looking for a solution. threshold=${e} puzzleID=${n} length=${r}`),t[r-8]=n;let i=new Uint8Array(32);for(let s=0;s<256;s++){t[r-1-3]=s;for(let B=0;B<256;B++){t[r-1-2]=B;for(let j=0;j<256;j++){t[r-1-1]=j;for(let l=0;l<256;l++){t[r-1-0]=l,i.fill(0),A(i.length).update(t).digest(i);let a=ft(i,0);if(a<=e)return o&&console.debug(`[privatecaptcha][worker] found solution. prefix=${a} threshold=${e}`),t.subarray(r-8)}}}}return new Uint8Array(0)}var Ct=65536,He=4294967296;function _e(t){let e=atob(t),n=new Uint8Array(e.length);for(let o=0;o<e.length;o++)n[o]=e.charCodeAt(o);return n}function Te(t){let e=(0,q.blake2bInit)(t);return{update(n){return(0,q.blake2bUpdate)(e,n),this},digest(n){return n.set((0,q.blake2bFinal)(e)),n}}}async function Rt(t,e=globalThis.WebAssembly){if(e!=null&&e.instantiate)try{let{instance:n}=await e.instantiate(_e(It)),o=n.exports;return new Uint8Array(o.memory.buffer).set(t,o.puzzle_ptr()),o.prepare_puzzle(),{kind:\\\"scalar\\\",wasm:!0,async solve(A,r){for(let i=0;i<He;i+=Ct){if(o.solve_batch(r,A,i,Ct)){let s=o.get_solution_nonce()>>>0,B=t.slice(120,128);return B[0]=r,B[4]=s>>>24,B[5]=s>>>16,B[6]=s>>>8,B[7]=s,B}await new Promise(s=>setTimeout(s,0))}return new Uint8Array(0)}}}catch(n){console.warn(\\\"[privatecaptcha][worker] scalar WASM unavailable\\\",n)}return{kind:\\\"js\\\",wasm:!1,async solve(n,o,A){return vt(t,n,o,A,Te).slice()}}}var Xt=\\\"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QfAAakEEEICAgIAAGiABQbAJakGACCABQbABakHIABCPgICAACABKAJAIAEoAlQgBGxqIQNBACECA0AgAyACaiABQfAAaiABQbAJaiACakEIEICAgIAAKQMANwMAIAJBCGoiAkGACEcNAAsgAUEBNgJwIAYgAUHwAGpBBBCAgICAABogAUGwCWpBgAggAUGwAWpByAAQj4CAgAAgASgCQCABKAJUIARsakGACGohA0EAIQIDQCADIAJqIAFB8ABqIAFBsAlqIAJqQQgQgICAgAApAwA3AwAgAkEIaiICQYAIRw0ACyAEQYAIaiEEIAVBAWoiBSABKAJYSQ0ACwsCQEEALQDAiIGIAA0AIAFBsAlqQYAIEI2AgIAAQQAtAMCIgYgADQAgAUGwAWpByAAQjYCAgAALAkAgASgCWCIEDQBBZyECDAILAkAgASgCSCIFRQ0AQQEhAkEAIQMDQAJAAkAgAg0AQQAhAgwBCwJAAkAgBEUNAEEAIQIDQCABIAM2ArAJIAFBADYCvAkgAUEAOgC4CSABIAI2ArQJIAEgASkCsAk3AzAgASABKQK4CTcDOCABQcAAaiABQTBqEJCAgIAAIAJBAWoiAiABKAJYIgRJDQALAkAgBA0AQQAhBAwCC0EAIQIDQCABIAM2ArAJIAFBADYCvAkgASACNgK0CSABIAEpArAJNwMgIAFBAToAuAkgASABKQK4CTcDKCABQcAAaiABQSBqEJCAgIAAIAJBAWoiAiABKAJYIgRJDQALAkAgBA0AQQAhBAwCC0EAIQIDQCABIAM2ArAJIAFBADYCvAkgAUECOgC4CSABIAI2ArQJIAEgASkCsAk3AxAgASABKQK4CTcDGCABQcAAaiABQRBqEJCAgIAAIAJBAWoiAiABKAJYIgRJDQALCwJAIAQNAEEAIQQMAQtBACECA0AgASADNgKwCSABQQA2ArwJIAFBAzoAuAkgASACNgK0CSABIAEpArAJNwMAIAEgASkCuAk3AwggAUHAAGogARCQgICAACACQQFqIgIgASgCWCIESQ0ACwsgASgCSCEFIAQhAgsgA0EBaiIDIAVJDQALCyABQbAJaiABKAJAIAEoAlRBCnRqQYB4akGACBCAgICAACEJAkAgASgCWCIIQQJJDQAgASgCVCICQQp0IQogAkELdCABKAJAakGAeGohBkEBIQcDQEEAIQMDQCABQbAJaiADaiICIAIpAwAgBiADaiIEKQMAhTcDACACQQhqIgUgBSkDACAEQQhqKQMAhTcDACACQRBqIgUgBSkDACAEQRBqKQMAhTcDACACQRhqIgIgAikDACAEQRhqKQMAhTcDACADQSBqIgNBgAhHDQALIAYgCmohBiAHQQFqIgcgCEcNAAsLQQAhAgNAIAEgAUGwCWogAmopAwA3A3AgAUGwAWogAmogAUHwAGpBCBCAgICAABogAkEIaiICQYAIRw0ACyAAKAIAIAAoAgQgAUGwAWpBgAgQj4CAgAACQAJAAkBBAC0AwIiBiAANACAJQYAIEI2AgIAAQQAtAMCIgYgARQ0BCyABKAJMQQp0IQIgASgCQCEDDAELIAFBsAFqQYAIEI2AgIAAIAEoAkxBCnQhAiABKAJAIgNFDQBBAC0AwIiBiABBAXENACADIAIQjYCAgAALAkAgACgCQCIARQ0AIAMgAiAAEYGAgIAAgICAgAALQQAhAgwBC0FqIQILIAFBsBFqJICAgIAAIAILJgEBf0F/IQICQCABQYCAgAhHDQAgAEHAiIGAADYCAEEAIQILIAILAgALvwEBAn8jgICAgABB0ABrIgQkgICAgABBACEFQQAgADoAiIiBgAACQCADRQ0AQQAhBQNAQQAgAiACQRB4c0GA/oN4cUEIdiACQQh4czYCjIiBgAAgBEEIakGAgIGAAEHIAPwKAABBAEEBOgDAiIGIACAEQQhqEIeAgIAADQECQEEAKAKQiIGAACABTQ0AIAJBAWohAiADQX9qIgNFDQIMAQsLQQAgAjYCsIiBgABBASEFCyAEQdAAaiSAgICAACAFC9MCAgJ/AX4jgICAgABBEGsiAiSAgICAACAAQQBB8AEQgYCAgABB0ICBgABBwAAQgICAgAAhACACQQhqIAFBCBCAgICAACEDIAAgACkDACADKQMAhTcDACADIAFBCGpBCBCAgICAACEDIAAgACkDCCADKQMAhTcDCCADIAFBEGpBCBCAgICAACEDIAAgACkDECADKQMAhTcDECADIAFBGGpBCBCAgICAACEDIAAgACkDGCADKQMAhTcDGCADIAFBIGpBCBCAgICAACEDIAAgACkDICADKQMAhTcDICADIAFBKGpBCBCAgICAACEDIAAgACkDKCADKQMAhTcDKCADIAFBMGpBCBCAgICAACEDIAAgACkDMCADKQMAhTcDMCADIAFBOGpBCBCAgICAACkDACEEIAAgAS0AADYC5AEgACAEIAApAziFNwM4IAJBEGokgICAgAALkgICA38BfkEAIQMCQCACRQ0AQX8hAyAAKQNQQgBSDQACQCAAKALgASIDIAJqQYEBSQ0AIABB4ABqIgQgA2ogAUGAASADayIFEICAgIAAGiAAIAApA0AiBkKAAXw3A0AgACAAKQNIIAZC/35WrXw3A0ggACAEEJOAgIAAQQAhAyAAQQA2AuABIAEgBWohASACIAVrIgJBgQFJDQADQCAAIAApA0AiBkKAAXw3A0AgACAAKQNIIAZC/35WrXw3A0ggACABEJOAgIAAIAFBgAFqIQEgAkGAf2oiAkGAAUsNAAsgACgC4AEhAwsgACADakHgAGogASACEICAgIAAGiAAIAAoAuABIAJqNgLgAUEAIQMLIAMLUwEBfyOAgICAAEEQayICJICAgIAAIAIgADYCDCACIAE2AghBACgCyICBgAAhACACKAIMQQAgAigCCCAAEYKAgIAAgICAgAAaIAJBEGokgICAgAALtQQDAn8CfgF/I4CAgIAAQdAAayIDJICAgIAAIANCADcDOCADQgA3AzAgA0IANwMoIANCADcDICADQgA3AxggA0IANwMQIANCADcDCCADQgA3AwBBfyEEAkAgAUUNACAAKALkASACSw0AIAApA1BCAFINACAAIAApA0AiBSAAKALgASICrXwiBjcDQCAAIAApA0ggBiAFVK18NwNIAkAgAC0A6AFFDQAgAEJ/NwNYCyAAQn83A1BBACEEIABB4ABqIgcgAmpBAEGAASACaxCBgICAABogACAHEJOAgIAAIAMgACkDADcDSCADIANByABqQQgQgICAgAAhAiADIAApAwg3A0ggAkEIaiADQcgAakEIEICAgIAAGiADIAApAxA3A0ggAkEQaiADQcgAakEIEICAgIAAGiADIAApAxg3A0ggAkEYaiADQcgAakEIEICAgIAAGiADIAApAyA3A0ggAkEgaiADQcgAakEIEICAgIAAGiADIAApAyg3A0ggAkEoaiADQcgAakEIEICAgIAAGiADIAApAzA3A0ggAkEwaiADQcgAakEIEICAgIAAGiADIAApAzg3A0ggAkE4aiADQcgAakEIEICAgIAAGiABIAIgACgC5AEQgICAgAAaQQAtAMCIgYgADQAgAkHAABCNgICAAEEAIQRBAC0AwIiBiAANACAHQYABEI2AgIAAQQAhBEEALQDAiIGIAA0AIABBwAAQjYCAgAALIANB0ABqJICAgIAAIAQL1wYBA38jgICAgABBsAVrIgQkgICAgAAgBEEANgKMASAEIAE2AoADIARBjAFqIARBgANqQQQQgICAgAAhBQJAAkAgAUHAAEsNACAEQZABaiABEJKAgIAAQQBIDQEgBEGQAWogBUEEEIyAgIAAQQBIDQEgBEGQAWogAiADEIyAgIAAQQBIDQEgBEGQAWogACABEI6AgIAAGgwBCyAEQQA7AJADIARCADcAiAMgBELAgIQINwCAAyAEQZIDakEAQQ4QgYCAgAAaIARBoANqQQBBEBCBgICAABogBEGwA2pBAEEQEIGAgIAAGiAEQZABaiAEQYADahCLgICAACAEQZABaiAFQQQQjICAgABBAEgNACAEQZABaiACIAMQjICAgABBAEgNACAEQZABaiAEQcAAakHAABCOgICAAEEASA0AIAAgBEHAAGpBIBCAgICAAEEgaiEFAkAgAUFgaiIBQcEASQ0AIARBoAVqIQIgBEHwBGpBIGohACAEQYIFaiEGA0AgBCAEQcAAakHAABCAgICAACEDIARBADsAgAUgBEIANwD4BCAEQsCAhAg3APAEIAZBAEEOEIGAgIAAGiAAQQBBEBCBgICAABogAkEAQRAQgYCAgAAaIARBgANqIARB8ARqEIuAgIAAAkAgBEGAA2ogA0HAABCMgICAAEF/Sg0AQQAtAMCIgYgADQMgBEGAA2pB8AEQjYCAgAAMAwsgBEGAA2ogBEHAAGpBwAAQjoCAgAAhAwJAQQAtAMCIgYgADQAgBEGAA2pB8AEQjYCAgAALIANBAEgNAiAFIARBwABqQSAQgICAgAAhAyAFQSBqIQUgAUFgaiIBQcAASw0ACyADQSBqIQULIAQgBEHAAGpBwAAQgICAgAAhAwJAAkAgBEGAA2ogARCSgICAAEEASA0AIARBgANqIANBwAAQjICAgABBf0oNAQtBAC0AwIiBiAANASAEQYADakHwARCNgICAAAwBCyAEQYADaiAEQcAAaiABEI6AgIAAIQMCQEEALQDAiIGIAA0AIARBgANqQfABEI2AgIAACyADQQBIDQAgBSAEQcAAaiABEICAgIAAGgsCQEEALQDAiIGIAA0AIARBkAFqQfABEI2AgIAACyAEQbAFaiSAgICAAAvXBgQPfwF+AX8DfiOAgICAAEGAGGsiAiSAgICAACABKAIAIQMCQAJAAkACQCAAKAIgIgRBAUcNACABLQAIIQUMAQtBACEGIARBAkcNASADDQFBACEGQQAhByABLQAIIgVBAUsNAgsgAkEAQYAIEIGAgIAAGiACQYAIakEAQYAIEIGAgIAAIgggA603AwAgCCAFrUL/AYM3AxAgCCAErTcDKCAIIAE1AgQ3AwggCCAANQIMNwMYIAggADUCCDcDIEEBIQYLQQAhByADDQBBAiEHAkAgAS0ACCIIRSAGcUEBRg0AQQBBAiAIGyEHDAELIAIgAikDsAhCAXw3A7AIIAIgAkGACGogAkGAEGpBABCRgICAACACIAJBgBBqIAJBgBBqQQAQkYCAgABBASEGCwJAIAcgACgCECIJTw0AQX8gACgCFCIIQX9qIAggASgCBCIKbCAJIAEtAAgiC2xqIgwgB2oiASAIcBsgAWohBCABQQp0IQUgB0F/aiENIANBAEchDiALQQFqIQ8gAyALckUhECAKrSERIAtB/wFxIRIDQCAMIA0iAWoiCCAEIAhBAWogACgCFCIIcEEBRhshBCABQQFqIQ0CQAJAIAZFDQACQCANQf8AcSIKDQAgAiACKQOwCEIBfDcDsAggAiACQYAIaiACQYAQakEAEJGAgIAAIAIgAkGAEGogAkGAEGpBABCRgICAAAsgAkGAEGogCkEDdGohCgwBCyAAKAIAIARBCnRqIQoLIBEgCikDACITQiCIpyAAKAIYcK0gEBshFAJAAkAgAw0AQgAhFQJAIBINACABIQoMAgsgCSALbCEKAkAgFCARUg0AIAcgCmpBf2ohCgwCCyAKIAFBf0ZrIQoMAQsCQAJAIBQgEVINACABIAggCWtqIQoMAQsgCCAJayABQX9GayEKC0IAIRUgEkEDRg0AIAkgD2ytIRULIAAoAgAiCSAEQQp0aiAJIAggFKdsQQp0aiAVIApBf2qtfCATQv////8PgyIUIBR+QiCIIAqtfkIgiH0gCK2Cp0EKdGogCSAFaiAAKAIEQRBHIA5xEJGAgIAAIAVBgAhqIQUgBEEBaiEEIAdBAWohByABQQJqIAAoAhAiCUkNAAsLIAJBgBhqJICAgIAAC+YaFAZ/BH4BfwF+AX8BfgF/AX4BfwF+AX8DfgF/A34BfwF+AX8BfgF/A34jgICAgABBgBBrIgQkgICAgABBgHghBSAEQYAIaiABQYAIEICAgIAAIQYDQCAEQYAIaiAFaiIBQYAIaiIHIAcpAwAgACAFaiIHQYAIaikDAIU3AwAgAUGICGoiCCAIKQMAIAdBiAhqKQMAhTcDACABQZAIaiIIIAgpAwAgB0GQCGopAwCFNwMAIAFBmAhqIgEgASkDACAHQZgIaikDAIU3AwAgBUEgaiIFDQALIAQgBkGACBCAgICAACEJAkAgA0UNAEGAeCEFA0AgBCAFaiIBQYAIaiIHIAcpAwAgAiAFaiIHQYAIaikDAIU3AwAgAUGICGoiCCAIKQMAIAdBiAhqKQMAhTcDACABQZAIaiIIIAgpAwAgB0GQCGopAwCFNwMAIAFBmAhqIgEgASkDACAHQZgIaikDAIU3AwAgBUEgaiIFDQALC0GAeCEBA0AgBEGACGogAWoiBUGACGoiByAFQbgIaiIIKQMAIgogBUGYCGoiACkDACILfCALQgGGQv7///8fgyAKQv////8Pg358IgsgBUH4CGoiAykDAIVCIIkiDCAFQdgIaiIGKQMAIg18IA1CAYZC/v///x+DIAxC/////w+DfnwiDSAKhUIoiSIKIAt8IApC/////w+DIAtCAYZC/v///x+DfnwiCyAMhUIwiSIMIAVBqAhqIg4pAwAiDyAFQYgIaiIQKQMAIhF8IBFCAYZC/v///x+DIA9C/////w+DfnwiESAFQegIaiISKQMAhUIgiSITIAVByAhqIhQpAwAiFXwgFUIBhkL+////H4MgE0L/////D4N+fCIVIA+FQiiJIg8gEXwgD0L/////D4MgEUIBhkL+////H4N+fCIRIBOFQjCJIhMgFXwgE0L/////D4MgFUIBhkL+////H4N+fCIVIA+FQgGJIg8gBUGgCGoiFikDACIXIAcpAwAiGHwgGEIBhkL+////H4MgF0L/////D4N+fCIYIAVB4AhqIgcpAwCFQiCJIhkgBUHACGoiGikDACIbfCAbQgGGQv7///8fgyAZQv////8Pg358IhsgF4VCKIkiFyAYfCAXQv////8PgyAYQgGGQv7///8fg358Ihh8IA9C/////w+DIBhCAYZC/v///x+DfnwiHIVCIIkiHSAFQbAIaiIeKQMAIh8gBUGQCGoiICkDACIhfCAhQgGGQv7///8fgyAfQv////8Pg358IiEgBUHwCGoiIikDAIVCIIkiIyAFQdAIaiIFKQMAIiR8ICRCAYZC/v///x+DICNC/////w+DfnwiJCAfhUIoiSIfICF8IB9C/////w+DICFCAYZC/v///x+DfnwiISAjhUIwiSIjICR8ICNC/////w+DICRCAYZC/v///x+DfnwiJHwgHUL/////D4MgJEIBhkL+////H4N+fCIlIA+FQiiJIg8gHHwgD0L/////D4MgHEIBhkL+////H4N+fCIcNwMAIAMgHCAdhUIwiSIcNwMAIAUgHCAlfCAcQv////8PgyAlQgGGQv7///8fg358Ihw3AwAgDiAcIA+FQgGJNwMAIAcgDCANfCAMQv////8PgyANQgGGQv7///8fg358IgwgJCAfhUIBiSINIBF8IA1C/////w+DIBFCAYZC/v///x+DfnwiDyAYIBmFQjCJIhGFQiCJIhh8IAxCAYZC/v///x+DIBhC/////w+DfnwiGSANhUIoiSINIA98IA1C/////w+DIA9CAYZC/v///x+DfnwiHCAYhUIwiSIPNwMAIBAgHDcDACAGIA8gGXwgD0L/////D4MgGUIBhkL+////H4N+fCIPNwMAIB4gDyANhUIBiTcDACASIAwgCoVCAYkiCiAhfCAKQv////8PgyAhQgGGQv7///8fg358IgwgE4VCIIkiDSARIBt8IBFC/////w+DIBtCAYZC/v///x+DfnwiD3wgDUL/////D4MgD0IBhkL+////H4N+fCIRIAqFQiiJIgogDHwgCkL/////D4MgDEIBhkL+////H4N+fCITIA2FQjCJIgw3AwAgICATNwMAIBogDCARfCAMQv////8PgyARQgGGQv7///8fg358Igw3AwAgCCAMIAqFQgGJNwMAICIgCyAPIBeFQgGJIgp8IAtCAYZC/v///x+DIApC/////w+DfnwiCyAjhUIgiSIMIBV8IAxC/////w+DIBVCAYZC/v///x+DfnwiDSAKhUIoiSIKIAt8IApC/////w+DIAtCAYZC/v///x+DfnwiDyAMhUIwiSILNwMAIAAgDzcDACAUIAsgDXwgC0L/////D4MgDUIBhkL+////H4N+fCILNwMAIBYgCyAKhUIBiTcDACABQYABaiIBDQALQYB/IQEDQCAEQYAIaiABaiIFQYABaiIHIAVBiARqIggpAwAiCiAFQYgCaiIAKQMAIgt8IAtCAYZC/v///x+DIApC/////w+DfnwiCyAFQYgIaiIDKQMAhUIgiSIMIAVBiAZqIgYpAwAiDXwgDUIBhkL+////H4MgDEL/////D4N+fCINIAqFQiiJIgogC3wgCkL/////D4MgC0IBhkL+////H4N+fCILIAyFQjCJIgwgBUGIA2oiDikDACIPIAVBiAFqIhApAwAiEXwgEUIBhkL+////H4MgD0L/////D4N+fCIRIAVBiAdqIhIpAwCFQiCJIhMgBUGIBWoiFCkDACIVfCAVQgGGQv7///8fgyATQv////8Pg358IhUgD4VCKIkiDyARfCAPQv////8PgyARQgGGQv7///8fg358IhEgE4VCMIkiEyAVfCATQv////8PgyAVQgGGQv7///8fg358IhUgD4VCAYkiDyAFQYADaiIWKQMAIhcgBykDACIYfCAYQgGGQv7///8fgyAXQv////8Pg358IhggBUGAB2oiBykDAIVCIIkiGSAFQYAFaiIaKQMAIht8IBtCAYZC/v///x+DIBlC/////w+DfnwiGyAXhUIoiSIXIBh8IBdC/////w+DIBhCAYZC/v///x+DfnwiGHwgD0L/////D4MgGEIBhkL+////H4N+fCIchUIgiSIdIAVBgARqIh4pAwAiHyAFQYACaiIgKQMAIiF8ICFCAYZC/v///x+DIB9C/////w+DfnwiISAFQYAIaiIiKQMAhUIgiSIjIAVBgAZqIgUpAwAiJHwgJEIBhkL+////H4MgI0L/////D4N+fCIkIB+FQiiJIh8gIXwgH0L/////D4MgIUIBhkL+////H4N+fCIhICOFQjCJIiMgJHwgI0L/////D4MgJEIBhkL+////H4N+fCIkfCAdQv////8PgyAkQgGGQv7///8fg358IiUgD4VCKIkiDyAcfCAPQv////8PgyAcQgGGQv7///8fg358Ihw3AwAgAyAcIB2FQjCJIhw3AwAgBSAcICV8IBxC/////w+DICVCAYZC/v///x+DfnwiHDcDACAOIBwgD4VCAYk3AwAgByAMIA18IAxC/////w+DIA1CAYZC/v///x+DfnwiDCAkIB+FQgGJIg0gEXwgDUL/////D4MgEUIBhkL+////H4N+fCIPIBggGYVCMIkiEYVCIIkiGHwgDEIBhkL+////H4MgGEL/////D4N+fCIZIA2FQiiJIg0gD3wgDUL/////D4MgD0IBhkL+////H4N+fCIcIBiFQjCJIg83AwAgECAcNwMAIAYgDyAZfCAPQv////8PgyAZQgGGQv7///8fg358Ig83AwAgHiAPIA2FQgGJNwMAIBIgDCAKhUIBiSIKICF8IApC/////w+DICFCAYZC/v///x+DfnwiDCAThUIgiSINIBEgG3wgEUL/////D4MgG0IBhkL+////H4N+fCIPfCANQv////8PgyAPQgGGQv7///8fg358IhEgCoVCKIkiCiAMfCAKQv////8PgyAMQgGGQv7///8fg358IhMgDYVCMIkiDDcDACAgIBM3AwAgGiAMIBF8IAxC/////w+DIBFCAYZC/v///x+DfnwiDDcDACAIIAwgCoVCAYk3AwAgIiALIA8gF4VCAYkiCnwgC0IBhkL+////H4MgCkL/////D4N+fCILICOFQiCJIgwgFXwgDEL/////D4MgFUIBhkL+////H4N+fCINIAqFQiiJIgogC3wgCkL/////D4MgC0IBhkL+////H4N+fCIPIAyFQjCJIgs3AwAgACAPNwMAIBQgCyANfCALQv////8PgyANQgGGQv7///8fg358Igs3AwAgFiALIAqFQgGJNwMAIAFBEGoiAQ0ACyACIAlBgAgQgICAgAAaQYB4IQUDQCACIAVqIgFBgAhqIgcgBykDACAEQYAIaiAFaiIHQYAIaikDAIU3AwAgAUGICGoiCCAIKQMAIAdBiAhqKQMAhTcDACABQZAIaiIIIAgpAwAgB0GQCGopAwCFNwMAIAFBmAhqIgEgASkDACAHQZgIaikDAIU3AwAgBUEgaiIFDQALIARBgBBqJICAgIAAC9ABAQJ/I4CAgIAAQcAAayICJICAgIAAAkACQCABDQACQEEALQDAiIGIAA0AIABB8AEQjYCAgAALAkAgAC0A6AFFDQAgAEJ/NwNYCyAAQn83A1BBfyEDDAELQQAhAyACQQA7ABAgAkIANwAIIAJBADYABCACQQE6AAMgAkGAAjsAASACIAE6AAAgAkESakEAQQ4QgYCAgAAaIAJBIGpBAEEQEIGAgIAAGiACQTBqQQBBEBCBgICAABogACACEIuAgIAACyACQcAAaiSAgICAACADC4sMAgJ/E34jgICAgABBkAFrIgIkgICAgAAgAiACQYgBaiABQQgQgICAgAAiAykDADcDACACIAMgAUEIakEIEICAgIAAIgMpAwA3AwggAiADIAFBEGpBCBCAgICAACIDKQMANwMQIAIgAyABQRhqQQgQgICAgAAiAykDADcDGCACIAMgAUEgakEIEICAgIAAIgMpAwA3AyAgAiADIAFBKGpBCBCAgICAACIDKQMANwMoIAIgAyABQTBqQQgQgICAgAAiAykDADcDMCACIAMgAUE4akEIEICAgIAAIgMpAwA3AzggAiADIAFBwABqQQgQgICAgAAiAykDADcDQCACIAMgAUHIAGpBCBCAgICAACIDKQMANwNIIAIgAyABQdAAakEIEICAgIAAIgMpAwA3A1AgAiADIAFB2ABqQQgQgICAgAAiAykDADcDWCACIAMgAUHgAGpBCBCAgICAACIDKQMANwNgIAIgAyABQegAakEIEICAgIAAIgMpAwA3A2ggAiADIAFB8ABqQQgQgICAgAAiAykDADcDcCACIAMgAUH4AGpBCBCAgICAACkDADcDeCAAKQNYQvnC+JuRo7Pw2wCFIQQgACkDUELr+obav7X2wR+FIQUgACkDSEKf2PnZwpHagpt/hSEGIAApA0BC0YWa7/rPlIfRAIUhByAAKQM4IQggACkDMCEJIAApAyghCiAAKQMgIQsgACkDGCEMIAApAxAhDSAAKQMIIQ4gACkDACEPQqvw0/Sv7ry3PCEQQrvOqqbY0Ouzu38hEUKIkvOd/8z5hOoAIRJC8e30+KWn/aelfyETQYB6IQEDQCAQIAUgCSANfCACIAFBoIeBgABqKAIAQQN0aikDAHwiDYVCIIkiBXwiECAJhUIoiSIJIA18IAIgAUGkh4GAAGooAgBBA3RqKQMAfCIUIBMgBCAIIAx8IAIgAUGoh4GAAGooAgBBA3RqKQMAfCIMhUIgiSIEfCINIAiFQiiJIgggDHwgAiABQayHgYAAaigCAEEDdGopAwB8IgwgBIVCMIkiBCANfCITIAiFQgGJIgh8IAIgAUHAh4GAAGooAgBBA3RqKQMAfCINIBEgBiAKIA58IAIgAUGYh4GAAGooAgBBA3RqKQMAfCIOhUIgiSIGfCIRIAqFQiiJIgogDnwgAiABQZyHgYAAaigCAEEDdGopAwB8Ig4gBoVCMIkiFYVCIIkiBiASIAcgCyAPfCACIAFBkIeBgABqKAIAQQN0aikDAHwiD4VCIIkiB3wiEiALhUIoiSILIA98IAIgAUGUh4GAAGooAgBBA3RqKQMAfCIPIAeFQjCJIgcgEnwiFnwiEiAIhUIoiSIIIA18IAIgAUHEh4GAAGooAgBBA3RqKQMAfCINIAaFQjCJIgYgEnwiEiAIhUIBiSEIIA4gFCAFhUIwiSIFIBB8IhAgCYVCAYkiCXwgAiABQbiHgYAAaigCAEEDdGopAwB8Ig4gB4VCIIkiByATfCITIAmFQiiJIgkgDnwgAiABQbyHgYAAaigCAEEDdGopAwB8Ig4gB4VCMIkiByATfCITIAmFQgGJIQkgDyAVIBF8IhEgCoVCAYkiCnwgAiABQbCHgYAAaigCAEEDdGopAwB8Ig8gBIVCIIkiBCAQfCIQIAqFQiiJIgogD3wgAiABQbSHgYAAaigCAEEDdGopAwB8Ig8gBIVCMIkiBCAQfCIQIAqFQgGJIQogDCAWIAuFQgGJIgt8IAIgAUHIh4GAAGooAgBBA3RqKQMAfCIMIAWFQiCJIgUgEXwiESALhUIoiSILIAx8IAIgAUHMh4GAAGooAgBBA3RqKQMAfCIMIAWFQjCJIgUgEXwiESALhUIBiSELIAFBwABqIgENAAsgACAOIAApAwiFIBGFNwMIIAAgCSAAKQMwhSAFhTcDMCAAIA0gACkDEIUgEIU3AxAgACAMIAApAxiFIBOFNwMYIAAgCyAAKQMghSAHhTcDICAAIAggACkDOIUgBIU3AzggACAPIAApAwCFIBKFNwMAIAAgCiAAKQMohSAGhTcDKCACQZABaiSAgICAAAsLmQcBAEGAgAELkAcQRAAAIAAAAJBDAACAAAAAkEMAABAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAABAAAABAAAAAQAAABMAAAABAAAAAgAAAAAAAAADAAAAAAAAAAjJvPNn5glqO6fKhIWuZ7sr+JT+cvNuPPE2HV869U+l0YLmrX9SDlEfbD4rjGgFm2u9Qfur2YMfeSF+ExnN4FsAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAADgAAAAoAAAAEAAAACAAAAAkAAAAPAAAADQAAAAYAAAABAAAADAAAAAAAAAACAAAACwAAAAcAAAAFAAAAAwAAAAsAAAAIAAAADAAAAAAAAAAFAAAAAgAAAA8AAAANAAAACgAAAA4AAAADAAAABgAAAAcAAAABAAAACQAAAAQAAAAHAAAACQAAAAMAAAABAAAADQAAAAwAAAALAAAADgAAAAIAAAAGAAAABQAAAAoAAAAEAAAAAAAAAA8AAAAIAAAACQAAAAAAAAAFAAAABwAAAAIAAAAEAAAACgAAAA8AAAAOAAAAAQAAAAsAAAAMAAAABgAAAAgAAAADAAAADQAAAAIAAAAMAAAABgAAAAoAAAAAAAAACwAAAAgAAAADAAAABAAAAA0AAAAHAAAABQAAAA8AAAAOAAAAAQAAAAkAAAAMAAAABQAAAAEAAAAPAAAADgAAAA0AAAAEAAAACgAAAAAAAAAHAAAABgAAAAMAAAAJAAAAAgAAAAgAAAALAAAADQAAAAsAAAAHAAAADgAAAAwAAAABAAAAAwAAAAkAAAAFAAAAAAAAAA8AAAAEAAAACAAAAAYAAAACAAAACgAAAAYAAAAPAAAADgAAAAkAAAALAAAAAwAAAAAAAAAIAAAADAAAAAIAAAANAAAABwAAAAEAAAAEAAAACgAAAAUAAAAKAAAAAgAAAAgAAAAEAAAABwAAAAYAAAABAAAABQAAAA8AAAALAAAACQAAAA4AAAADAAAADAAAAA0AAAAAAAAAAAAAAAEAAAACAAAAAwAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAoAAAALAAAADAAAAA0AAAAOAAAADwAAAA4AAAAKAAAABAAAAAgAAAAJAAAADwAAAA0AAAAGAAAAAQAAAAwAAAAAAAAAAgAAAAsAAAAHAAAABQAAAAMAAAA=\\\";function qt(t){return t instanceof Uint8Array||ArrayBuffer.isView(t)&&t.constructor.name===\\\"Uint8Array\\\"&&\\\"BYTES_PER_ELEMENT\\\"in t&&t.BYTES_PER_ELEMENT===1}var at=t=>t?`\\\"${t}\\\" `:\\\"\\\";function R(t,e=\\\"\\\"){if(typeof t!=\\\"number\\\")throw new TypeError(at(e)+\\\"expected number, got \\\"+typeof t);if(!Number.isSafeInteger(t)||t<0)throw new RangeError(at(e)+\\\"expected integer >= 0, got \\\"+t);return t}function M(t,e,n=\\\"\\\"){if(qt(t)&&(e===void 0||t.length===e))return t;e!==void 0&&R(e,\\\"length\\\");let o=qt(t),A=e!==void 0?` of length ${e}`:\\\"\\\",r=o?`length=${t.length}`:`type=${typeof t}`,i=at(n)+\\\"expected Uint8Array\\\"+A+\\\", got \\\"+r;throw o?new RangeError(i):new TypeError(i)}function jt(t){return Uint8Array.from(M(t))}var Se=(t,e)=>{if(t===null||typeof t!=\\\"object\\\"||Array.isArray(t))throw new TypeError((e===\\\"object\\\"?\\\"\\\":`\\\"${e}\\\" `)+\\\"expected object, got type=\\\"+typeof t)},Ft=(t,e)=>{Se(t,e);let n=Object.getPrototypeOf(t);if(n!==Object.prototype&&n!==null)throw new TypeError(`\\\"${e}\\\" expected plain object`);if(Object.hasOwn(t,\\\"__proto__\\\"))throw new TypeError(`\\\"${e}.__proto__\\\" is not allowed`)};function ut(t,e=!0){if(t.destroyed)throw new Error(\\\"hash was destroyed\\\");if(e&&t.finished)throw new Error(\\\"digest() was already called\\\")}function Vt(t,e){M(t,void 0,\\\"output\\\");let n=e.outputLen;if(!(t.length>=n))throw new RangeError('\\\"output\\\" expected length >= '+n)}function W(t){return new Uint8Array(t.buffer,t.byteOffset,t.byteLength)}function G(t){return new Uint32Array(t.buffer,t.byteOffset,Math.floor(t.byteLength/4))}function _(...t){for(let e=0;e<t.length;e++)t[e].fill(0)}var Wt=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function Kt(t){return t<<24&4278190080|t<<8&16711680|t>>>8&65280|t>>>24&255}var $=Wt?t=>t:t=>Kt(t)>>>0;function Me(t){for(let e=0;e<t.length;e++)t[e]=Kt(t[e]);return t}var S=Wt?t=>t:Me;function ze(t){if(typeof t!=\\\"string\\\")throw new TypeError(\\\"string expected\\\");let e=new TextEncoder().encode(t);try{return new Uint8Array(e)}finally{_(e)}}function nt(t,e=\\\"\\\"){return typeof t==\\\"string\\\"?ze(t):M(t,void 0,e)}function K(t,e,n=\\\"opts\\\"){return Ft(t,\\\"defaults\\\"),e!==void 0&&Ft(e,n),Object.assign(Object.create(null),t,e)}function Yt(t,e={}){if(typeof t!=\\\"function\\\")throw new TypeError('\\\"hashCons\\\" expected function, got type='+typeof t);e=K({},e,\\\"info\\\");let n=(A,r)=>t(r).update(A).digest(),o=t(void 0);return n.outputLen=o.outputLen,n.blockLen=o.blockLen,n.canXOF=o.canXOF,n.create=A=>t(A),Object.assign(n,e),Object.freeze(n)}var Zt=Uint8Array.from([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9,12,5,1,15,14,13,4,10,0,7,6,3,9,2,8,11,13,11,7,14,12,1,3,9,5,0,15,4,8,6,2,10,6,15,14,9,11,3,0,8,12,2,13,7,1,4,10,5,10,2,8,4,7,6,1,5,15,11,9,14,3,12,13,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,14,10,4,8,9,15,13,6,1,12,0,2,11,7,5,3,11,8,12,0,5,2,15,13,10,14,3,6,7,1,9,4,7,9,3,1,13,12,11,14,2,6,5,10,4,0,15,8,9,0,5,7,2,4,10,15,14,1,11,12,6,8,3,13,2,12,6,10,0,11,8,3,4,13,7,5,15,14,1,9]);var Jt=t=>t/2**32|0,Qt=t=>t>>>0;var ht=(t,e,n)=>t>>>n|e<<32-n,pt=(t,e,n)=>t<<32-n|e>>>n,te=(t,e,n)=>t<<64-n|e>>>n-32,ee=(t,e,n)=>t>>>n-32|e<<64-n,ne=(t,e)=>e,re=(t,e)=>t;function dt(t,e,n,o){let A=(e>>>0)+(o>>>0);return{h:t+n+(A/2**32|0)|0,l:A|0}}var wt=(t,e,n)=>(t>>>0)+(e>>>0)+(n>>>0),yt=(t,e,n,o)=>e+n+o+(t/2**32|0)|0;var k=Uint32Array.from([4089235720,1779033703,2227873595,3144134277,4271175723,1013904242,1595750129,2773480762,2917565137,1359893119,725511199,2600822924,4215389547,528734635,327033209,1541459225]),c=new Uint32Array(32);function D(t,e,n,o,A,r){let i=A[r],s=A[r+1],B=c[2*t],j=c[2*t+1],l=c[2*e],a=c[2*e+1],f=c[2*n],d=c[2*n+1],u=c[2*o],p=c[2*o+1],w=wt(B,l,i);j=yt(w,j,a,s),B=w|0;let y=p^j,x=u^B;p=ne(y,x),u=re(y,x),{h:d,l:f}=dt(d,f,p,u),y=a^d,x=l^f,a=ht(y,x,24),l=pt(y,x,24),c[2*t]=B,c[2*t+1]=j,c[2*e]=l,c[2*e+1]=a,c[2*n]=f,c[2*n+1]=d,c[2*o]=u,c[2*o+1]=p}function N(t,e,n,o,A,r){let i=A[r],s=A[r+1],B=c[2*t],j=c[2*t+1],l=c[2*e],a=c[2*e+1],f=c[2*n],d=c[2*n+1],u=c[2*o],p=c[2*o+1],w=wt(B,l,i);j=yt(w,j,a,s),B=w|0;let y=p^j,x=u^B;p=ht(y,x,16),u=pt(y,x,16),{h:d,l:f}=dt(d,f,p,u),y=a^d,x=l^f,a=te(y,x,63),l=ee(y,x,63),c[2*t]=B,c[2*t+1]=j,c[2*e]=l,c[2*e+1]=a,c[2*n]=f,c[2*n+1]=d,c[2*o]=u,c[2*o+1]=p}function Pe(t,e={},n,o,A){if(R(n),t<=0||t>n)throw new Error('\\\"dkLen\\\" must be 1..'+n+\\\", got \\\"+t);let{key:r,salt:i,personalization:s}=e;if(r!==void 0&&(r.length<1||r.length>n))throw new Error('\\\"key\\\" expected to be undefined or of length=1..'+n);i!==void 0&&M(i,o,\\\"salt\\\"),s!==void 0&&M(s,A,\\\"personalization\\\")}var xt=class{constructor(e,n){g(this,\\\"buffer\\\");g(this,\\\"buffer32\\\");g(this,\\\"finished\\\",!1);g(this,\\\"destroyed\\\",!1);g(this,\\\"length\\\",0);g(this,\\\"pos\\\",0);g(this,\\\"blockLen\\\");g(this,\\\"outputLen\\\");g(this,\\\"canXOF\\\",!1);R(e),R(n),this.blockLen=e,this.outputLen=n,this.buffer=new Uint8Array(e),this.buffer32=G(this.buffer)}update(e){ut(this),M(e);let{blockLen:n,buffer:o,buffer32:A}=this,r=e.length,i=e.byteOffset,s=e.buffer;for(let B=0;B<r;){this.pos===n&&(S(A),this.compress(A,0,!1),S(A),this.pos=0);let j=Math.min(n-this.pos,r-B),l=i+B;if(j===n&&!(l%4)&&B+j<r){let a=new Uint32Array(s,l,Math.floor((r-B)/4));S(a);for(let f=0;B+n<r;f+=A.length,B+=n)this.length+=n,this.compress(a,f,!1);S(a);continue}o.set(B===0&&j===r?e:e.subarray(B,B+j),this.pos),this.pos+=j,this.length+=j,B+=j}return this}digestInto(e){if(ut(this),Vt(e,this),e.byteOffset&3)throw new RangeError('\\\"output\\\" expected 4-byte aligned byteOffset, got '+e.byteOffset);let{pos:n,buffer32:o}=this;this.finished=!0,this.buffer.fill(0,n),S(o),this.compress(o,0,!0),S(o);let A=this.get(),r=e===this.buffer?o:G(e),i=Math.floor(this.outputLen/4);for(let l=0;l<i;l++)r[l]=$(A[l]);let s=this.outputLen%4;if(!s)return;let B=i*4,j=A[i];for(let l=0;l<s;l++)e[B+l]=j>>>8*l}digest(){let{buffer:e,outputLen:n}=this;this.digestInto(e);let o=e.slice(0,n);return this.destroy(),o}_cloneInto(e){let{buffer:n,length:o,finished:A,destroyed:r,outputLen:i,pos:s}=this;return e||(e=new this.constructor({dkLen:i})),e.set(...this.get()),e.buffer.set(n),e.destroyed=r,e.finished=A,e.length=o,e.pos=s,e.outputLen=i,e}clone(){return this._cloneInto()}},gt=class extends xt{constructor(n={}){n=K({},n);let o=n.dkLen===void 0?64:n.dkLen;super(128,o);g(this,\\\"v0l\\\",k[0]|0);g(this,\\\"v0h\\\",k[1]|0);g(this,\\\"v1l\\\",k[2]|0);g(this,\\\"v1h\\\",k[3]|0);g(this,\\\"v2l\\\",k[4]|0);g(this,\\\"v2h\\\",k[5]|0);g(this,\\\"v3l\\\",k[6]|0);g(this,\\\"v3h\\\",k[7]|0);g(this,\\\"v4l\\\",k[8]|0);g(this,\\\"v4h\\\",k[9]|0);g(this,\\\"v5l\\\",k[10]|0);g(this,\\\"v5h\\\",k[11]|0);g(this,\\\"v6l\\\",k[12]|0);g(this,\\\"v6h\\\",k[13]|0);g(this,\\\"v7l\\\",k[14]|0);g(this,\\\"v7h\\\",k[15]|0);Pe(o,n,64,16,16);let{key:A,personalization:r,salt:i}=n,s=0;if(A!==void 0&&(M(A,void 0,\\\"key\\\"),s=A.length),this.v0l^=this.outputLen|s<<8|65536|1<<24,i!==void 0){M(i,void 0,\\\"salt\\\");let B=G(jt(i));this.v4l^=$(B[0]),this.v4h^=$(B[1]),this.v5l^=$(B[2]),this.v5h^=$(B[3])}if(r!==void 0){M(r,void 0,\\\"personalization\\\");let B=G(jt(r));this.v6l^=$(B[0]),this.v6h^=$(B[1]),this.v7l^=$(B[2]),this.v7h^=$(B[3])}if(A!==void 0){let B=new Uint8Array(this.blockLen);B.set(A),this.update(B),_(B)}}get(){let{v0l:n,v0h:o,v1l:A,v1h:r,v2l:i,v2h:s,v3l:B,v3h:j,v4l:l,v4h:a,v5l:f,v5h:d,v6l:u,v6h:p,v7l:w,v7h:y}=this;return[n,o,A,r,i,s,B,j,l,a,f,d,u,p,w,y]}set(n,o,A,r,i,s,B,j,l,a,f,d,u,p,w,y){this.v0l=n|0,this.v0h=o|0,this.v1l=A|0,this.v1h=r|0,this.v2l=i|0,this.v2h=s|0,this.v3l=B|0,this.v3h=j|0,this.v4l=l|0,this.v4h=a|0,this.v5l=f|0,this.v5h=d|0,this.v6l=u|0,this.v6h=p|0,this.v7l=w|0,this.v7h=y|0}compress(n,o,A){let{v0l:r,v0h:i,v1l:s,v1h:B,v2l:j,v2h:l,v3l:a,v3h:f,v4l:d,v4h:u,v5l:p,v5h:w,v6l:y,v6h:x,v7l:H,v7h:I}=this;c[0]=r,c[1]=i,c[2]=s,c[3]=B,c[4]=j,c[5]=l,c[6]=a,c[7]=f,c[8]=d,c[9]=u,c[10]=p,c[11]=w,c[12]=y,c[13]=x,c[14]=H,c[15]=I,c.set(k,16);let T=Qt(this.length),L=Jt(this.length);c[24]=k[8]^T,c[25]=k[9]^L,A&&(c[28]=~c[28],c[29]=~c[29]);let m=0,b=Zt;for(let z=0;z<12;z++)D(0,4,8,12,n,o+2*b[m++]),N(0,4,8,12,n,o+2*b[m++]),D(1,5,9,13,n,o+2*b[m++]),N(1,5,9,13,n,o+2*b[m++]),D(2,6,10,14,n,o+2*b[m++]),N(2,6,10,14,n,o+2*b[m++]),D(3,7,11,15,n,o+2*b[m++]),N(3,7,11,15,n,o+2*b[m++]),D(0,5,10,15,n,o+2*b[m++]),N(0,5,10,15,n,o+2*b[m++]),D(1,6,11,12,n,o+2*b[m++]),N(1,6,11,12,n,o+2*b[m++]),D(2,7,8,13,n,o+2*b[m++]),N(2,7,8,13,n,o+2*b[m++]),D(3,4,9,14,n,o+2*b[m++]),N(3,4,9,14,n,o+2*b[m++]);this.v0l^=c[0]^c[16],this.v0h^=c[1]^c[17],this.v1l^=c[2]^c[18],this.v1h^=c[3]^c[19],this.v2l^=c[4]^c[20],this.v2h^=c[5]^c[21],this.v3l^=c[6]^c[22],this.v3h^=c[7]^c[23],this.v4l^=c[8]^c[24],this.v4h^=c[9]^c[25],this.v5l^=c[10]^c[26],this.v5h^=c[11]^c[27],this.v6l^=c[12]^c[28],this.v6h^=c[13]^c[29],this.v7l^=c[14]^c[30],this.v7h^=c[15]^c[31],_(c)}destroy(){this.destroyed=!0,_(this.buffer32),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},F=Yt(t=>new gt(t));var rt={Argon2d:0,Argon2i:1,Argon2id:2},Z=4,oe=(t,e=\\\"\\\")=>t===void 0?Uint8Array.of():nt(t,e),E=new Uint32Array(256);function v(t,e,n,o){let A=E[2*t],r=E[2*t+1],i=E[2*e],s=E[2*e+1],B=E[2*n],j=E[2*n+1],l=E[2*o],a=E[2*o+1],f=0,d=0,u=0,p=0,w=0;f=Math.imul(A,i),d=((A>>>0)*(i>>>0)-(f>>>0))/4294967296+.5|0,u=(A>>>0)+(i>>>0)+(f<<1>>>0),r=r+s+(d<<1|f>>>31)+(u/4294967296|0)|0,A=u|0,p=a^r,w=l^A,a=w,l=p,f=Math.imul(B,l),d=((B>>>0)*(l>>>0)-(f>>>0))/4294967296+.5|0,u=(B>>>0)+(l>>>0)+(f<<1>>>0),j=j+a+(d<<1|f>>>31)+(u/4294967296|0)|0,B=u|0,p=s^j,w=i^B,s=p>>>24|w<<8,i=p<<8|w>>>24,f=Math.imul(A,i),d=((A>>>0)*(i>>>0)-(f>>>0))/4294967296+.5|0,u=(A>>>0)+(i>>>0)+(f<<1>>>0),r=r+s+(d<<1|f>>>31)+(u/4294967296|0)|0,A=u|0,p=a^r,w=l^A,a=p>>>16|w<<16,l=p<<16|w>>>16,f=Math.imul(B,l),d=((B>>>0)*(l>>>0)-(f>>>0))/4294967296+.5|0,u=(B>>>0)+(l>>>0)+(f<<1>>>0),j=j+a+(d<<1|f>>>31)+(u/4294967296|0)|0,B=u|0,p=s^j,w=i^B,s=p<<1|w>>>31,i=p>>>31|w<<1,E[2*t]=A,E[2*t+1]=r,E[2*e]=i,E[2*e+1]=s,E[2*n]=B,E[2*n+1]=j,E[2*o]=l,E[2*o+1]=a}function Ae(t,e,n,o,A,r,i,s,B,j,l,a,f,d,u,p){v(t,A,B,f),v(e,r,j,d),v(n,i,l,u),v(o,s,a,p),v(t,r,l,p),v(e,i,a,f),v(n,s,B,d),v(o,A,j,u)}function Y(t,e,n,o,A){if(A)for(let r=0;r<256;r++){let i=t[e+r]^t[n+r];E[r]=i,t[o+r]^=i}else for(let r=0;r<256;r++){let i=t[e+r]^t[n+r];E[r]=i,t[o+r]=i}for(let r=0;r<128;r+=16)Ae(r,r+1,r+2,r+3,r+4,r+5,r+6,r+7,r+8,r+9,r+10,r+11,r+12,r+13,r+14,r+15);for(let r=0;r<16;r+=2)Ae(r,r+1,r+16,r+17,r+32,r+33,r+48,r+49,r+64,r+65,r+80,r+81,r+96,r+97,r+112,r+113);for(let r=0;r<256;r++)t[o+r]^=E[r];_(E)}function mt(t,e){let n=W(t),o=new Uint32Array(1),A=W(o);if(o[0]=$(e),e<=64)return F.create({dkLen:e}).update(A).update(n).digest();let r=new Uint8Array(e),i=F.create({}).update(A).update(n).digest(),s=0;for(r.set(i.subarray(0,32)),s+=32;e-s>64;s+=32){let B=F.create({}).update(i);B.digestInto(i),B.destroy(),r.set(i.subarray(0,32),s)}return r.set(F(i,{dkLen:e-s}),s),_(i,o),r}function Ge(t,e,n,o,A,r,i=!1){let s;t===0?e===0?s=A-1:i?s=e*o+A-1:s=e*o+(A==0?-1:0):i?s=n-o+A-1:s=n-o+(A==0?-1:0);let B=t!==0&&e!==Z-1?(e+1)*o:0,j=Math.imul(r,r),l=((r>>>0)*(r>>>0)-(j>>>0))/4294967296+.5|0,a=Math.imul(s,l),f=((s>>>0)*(l>>>0)-(a>>>0))/4294967296+.5|0,d=s-1-f;return(B+d)%n}var De=Math.pow(2,32),Be=1024**2,Ne=Be*1024;function C(t){return Number.isSafeInteger(t)&&t>=0&&t<De}function ve(t={}){t=K({},t);let e={t:3,m:Be,p:1,version:19,dkLen:32,maxmem:Ne,asyncTick:10};for(let[j,l]of Object.entries(t))l!==void 0&&(e[j]=l);let{dkLen:n,p:o,m:A,t:r,version:i,onProgress:s,asyncTick:B}=e;if(!C(n)||n<4)throw new Error('\\\"dkLen\\\" must be 4..');if(!C(o)||o<1||o>=Math.pow(2,24))throw new Error('\\\"p\\\" must be 1..2^24');if(!C(A))throw new Error('\\\"m\\\" must be 0..2^32');if(!C(r)||r<1)throw new Error('\\\"t\\\" (iterations) must be 1..2^32');if(s!==void 0&&typeof s!=\\\"function\\\")throw new Error('\\\"onProgress\\\" must be a function');if(R(B,\\\"asyncTick\\\"),!C(A)||A<8*o)throw new Error('\\\"m\\\" (memory) must be at least 8*p bytes');if(i!==16&&i!==19)throw new Error('\\\"version\\\" must be 0x10 or 0x13, got '+i);return e}function Ce(t,e,n,o){let A=[],r=new Uint32Array(1),i=W(r),s,B,j=!1,l=(a,f)=>(typeof a==\\\"string\\\"&&A.push(f),f);try{let a=l(t,nt(t,\\\"password\\\")),f=l(e,nt(e,\\\"salt\\\"));if(!C(a.length))throw new Error('\\\"password\\\" must be less of length 1..4Gb');if(!C(f.length)||f.length<8)throw new Error('\\\"salt\\\" must be of length 8..4Gb');if(!Object.values(rt).includes(n))throw new Error('\\\"type\\\" was invalid');let{p:d,dkLen:u,m:p,t:w,version:y,key:x,personalization:H,maxmem:I,onProgress:T,asyncTick:L}=ve(o),m=x;x=l(m,oe(m,\\\"key\\\"));let b=H;H=l(b,oe(b,\\\"personalization\\\")),s=F.create();for(let z of[d,u,p,w,y,n])r[0]=$(z),s.update(i);for(let z of[a,f,x,H])r[0]=$(z.length),s.update(i).update(z);return B=new Uint32Array(18),s.digestInto(W(B)),j=!0,{H0:B,p:d,dkLen:u,m:p,t:w,version:y,maxmem:I,onProgress:T,asyncTick:L}}finally{s&&s.destroy(),_(r,...A),!j&&B&&_(B)}}function Re(t,e,n,o){let{H0:A,p:r,dkLen:i,m:s,t:B,version:j,maxmem:l,onProgress:a,asyncTick:f}=Ce(t,e,n,o);try{let d=r,u=4*r*Math.floor(s/(Z*r)),p=Math.floor(u/r),w=Math.floor(p/Z),y=u*1024;if(!C(l))throw new Error('\\\"maxmem\\\" expected <2**32, got '+l);if(y>l)throw new Error('\\\"maxmem\\\" limit was hit: memUsed(mP*1024)='+y+\\\", maxmem=\\\"+l);let x=new Uint32Array(y/4);for(let I=0;I<r;I++){let T=256*p*I;A[17]=$(I),A[16]=$(0),x.set(S(G(mt(A,1024))),T),A[16]=$(1),x.set(S(G(mt(A,1024))),T+256)}let H=()=>{};if(a){let I=B*Z*r*w-2*r,T=Math.max(Math.floor(I/1e4),1),L=0;H=()=>{L++,a&&(!(L%T)||L===I)&&a(L/I)}}return{type:n,mP:u,p:r,t:B,version:j,B:x,laneLen:p,lanes:d,segmentLen:w,dkLen:i,perBlock:H,asyncTick:f}}finally{_(A)}}function Xe(t,e,n,o){let A=new Uint32Array(256);for(let i=0;i<e;i++)for(let s=0;s<256;s++)A[s]^=t[256*(n*i+n-1)+s];let r=mt(S(A),o);return _(t,A),r}function*qe(t,e){let{type:n,mP:o,p:A,t:r,version:i,B:s,laneLen:B,lanes:j,segmentLen:l,perBlock:a}=t;e[262]=o,e[264]=r,e[266]=n;for(let f=0;f<r;f++){let d=f!==0&&i===19;e[256]=f;for(let u=0;u<Z;u++){e[260]=u;let p=n==rt.Argon2i||n==rt.Argon2id&&f===0&&u<2;for(let w=0;w<A;w++){e[258]=w,e[268]=0;let y=0;f===0&&u===0&&(y=2,p&&(e[268]++,Y(e,256,2*256,0,!1),Y(e,0,2*256,0,!1)));let x=w*B+u*l+y;for(let H=y;H<l;H++,x++){a();let I=x%B?x-1:x+B-1,T,L;if(p){let X=H%128;X===0&&(e[268]++,Y(e,256,2*256,0,!1),Y(e,0,2*256,0,!1)),T=e[2*X],L=e[2*X+1]}else{let X=256*I;T=s[X],L=s[X+1]}let m=f===0&&u===0?w:L%j,b=Ge(f,u,B,l,H,T,m==w),z=B*m+b;Y(s,256*I,256*z,x*256,d),yield}}}}_(e)}function Fe(t,e,n,o){let A=Re(e,n,t,o),r=qe(A,new Uint32Array(3*256));for(;!r.next().done;);return Xe(A.B,A.p,A.laneLen,A.dkLen)}var ie=(t,e,n={})=>Fe(rt.Argon2id,t,e,n);var se=16*1024,bt=32,ot=128,At=8,ce=65536,Ve=4294967296,We={instantiateWasm:t=>WebAssembly.instantiate(t),nobleHash:ie};function Bt(t,e,n){if(!(t instanceof Uint8Array)||t.length!==e)throw new Error(`Argon2id ${n} must be exactly ${e} bytes`)}function Ke(t,e){let n=new Uint8Array(ot);return n.set(e),n.set(t,ot-At),n}function le(t,e){if(!(t instanceof Uint8Array)||t.length!==bt)throw new Error(\\\"Argon2id implementation must return a 32-byte tag\\\");return e.set(t.subarray(0,4)),e}function Ye(t){let e=new Uint8Array(t.memory.buffer,t.puzzle_ptr(),ot),n=new Uint8Array(t.memory.buffer,t.digest_ptr(),bt);return{implementation:\\\"argon2id-scalar\\\",wasm:!0,hash(o,A,r){if(Bt(o,At,\\\"password\\\"),Bt(r,4,\\\"output\\\"),e.fill(0),e.set(A),e.set(o,ot-At),t.hash_puzzle()!==0)throw new Error(\\\"Argon2id WASM hash failed\\\");return le(n,r)},async solve(o,A,r){if(!Number.isSafeInteger(A)||A<0||A>4294967295)throw new Error(\\\"Argon2id threshold must be a uint32\\\");if(!Number.isSafeInteger(r)||r<0||r>255)throw new Error(\\\"Argon2id solution index must be a byte\\\");e.fill(0),e.set(o),t.prepare_puzzle();for(let i=0;i<Ve;i+=ce){let s=t.solve_batch(r,A,i,ce);if(s===1){let B=t.get_solution_nonce()>>>0;return Uint8Array.of(r,0,0,0,B>>>24,B>>>16,B>>>8,B)}if(s!==0)throw new Error(\\\"Argon2id WASM search failed\\\");await new Promise(B=>setTimeout(B,0))}throw new Error(\\\"Argon2id nonce space exhausted\\\")}}}function Ze(t){return{implementation:\\\"argon2id-noble\\\",wasm:!1,hash(e,n,o){Bt(e,At,\\\"password\\\"),Bt(o,4,\\\"output\\\");let A=Ke(e,n),r=t.nobleHash(A,A.subarray(0,16),{t:1,m:se,p:1,version:19,dkLen:bt,maxmem:se*1024});return le(r,o)}}}async function Je(t,e){var r,i;let n=Uint8Array.from(atob(t),s=>s.charCodeAt(0)),o=await e.instantiateWasm(n),A=(i=(r=o==null?void 0:o.instance)!=null?r:o)==null?void 0:i.exports;if(!(A!=null&&A.memory)||typeof A.hash_puzzle!=\\\"function\\\"||typeof A.solve_batch!=\\\"function\\\"||typeof A.prepare_puzzle!=\\\"function\\\")throw new Error(\\\"Argon2id WASM instantiation returned no solver\\\");return A}async function Et(t={}){let e=ct(ct({},We),t);try{return Ye(await Je(Xt,e))}catch(n){return Ze(e)}}var Qe=4294967295;function tn(t){for(let e=t.length-1;e>=4;e--){if(t[e]!==255)return t[e]++,!0;t[e]=0}return!1}async function fe(t,e,n,o){if(!Number.isSafeInteger(e)||e<0||e>Qe)throw new Error(\\\"Argon2id threshold must be a uint32\\\");if(!Number.isSafeInteger(n)||n<0||n>255)throw new Error(\\\"Argon2id solution index must be a byte\\\");if(!o||typeof o.solve!=\\\"function\\\"&&typeof o.hash!=\\\"function\\\")throw new Error(\\\"Argon2id provider must expose solve() or hash()\\\");if(typeof o.solve==\\\"function\\\")return o.solve(t,e,n);let A=new Uint8Array(8),r=new Uint8Array(4);for(A[0]=n;;){if(o.hash(A,t,r),ft(r,0)<=e)return A.slice();if(!tn(A))throw new Error(\\\"Argon2id nonce space exhausted\\\")}}var en=0,nn=1;async function ae(t,e,n={}){var A,r;if(t===en)return((A=n.blake)!=null?A:Rt)(e);if(t!==nn)throw new Error(`Unknown puzzle challenge: ${t}`);let o=await((r=n.argon)!=null?r:Et)();return{wasm:o.wasm,solve(i,s){var B;return((B=n.search)!=null?B:fe)(e,i,s,o)}}}var J=null,je=null;self.onmessage=async t=>{var o;let{command:e,argument:n}=t.data;try{switch(e){case\\\"init\\\":{let{id:A,buffer:r,challenge:i}=n;J=null,J=await ae(i,r),je=A,self.postMessage({command:\\\"init\\\"});break}case\\\"solve\\\":{if(!J)throw new Error(\\\"Puzzle worker is not initialized\\\");let{difficulty:A,puzzleIndex:r,debug:i}=n,s=Nt(A),B=await J.solve(s,r,i);if(!(B instanceof Uint8Array)||B.length!==8)throw new Error(\\\"Puzzle nonce space exhausted\\\");self.postMessage({command:\\\"solve\\\",argument:{id:je,solution:B,wasm:J.wasm}});break}default:break}}catch(A){self.postMessage({command:\\\"error\\\",error:(o=A==null?void 0:A.message)!=null?o:String(A)})}};\\n\");\n}\n", "import { encode } from 'base64-arraybuffer';\nimport PuzzleWorker from './puzzle.worker.js';\nimport { CHALLENGE_BLAKE2B, CHALLENGE_ARGON2ID } from './puzzle.js';\n\nconst METADATA_VERSION = 1;\n\nexport class WorkersPool {\n constructor(callbacks = {}, debug = false, WorkerClass = PuzzleWorker) {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._workers = [];\n this._debug = debug;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n this._workFailed = false;\n this._puzzle = null;\n this._WorkerClass = WorkerClass;\n\n this._callbacks = Object.assign({\n workersReady: () => 0,\n workerError: () => 0,\n workStarted: () => 0,\n workCompleted: () => 0,\n progress: () => 0,\n }, callbacks);\n }\n\n init(puzzle, autoStart) {\n if (!puzzle) { return; }\n if (puzzle.challenge !== CHALLENGE_BLAKE2B && puzzle.challenge !== CHALLENGE_ARGON2ID) {\n throw new Error(`Unknown puzzle challenge: ${puzzle.challenge}`);\n }\n if (puzzle.isZero() && puzzle.challenge === CHALLENGE_BLAKE2B) {\n if (this._debug) { console.debug('[privatecaptcha][pool] skipping initializing workers'); }\n setTimeout(() => this._callbacks.workersReady(autoStart), 0);\n return;\n }\n\n const workers = [];\n try {\n this.initWorkers(puzzle, autoStart, workers);\n } catch (error) {\n for (const worker of workers) {\n worker.terminate();\n }\n this._workers = [];\n throw error;\n }\n }\n\n initWorkers(puzzle, autoStart, workers) {\n const workersCount = puzzle.challenge === CHALLENGE_ARGON2ID ? 1 : 4;\n let readyWorkers = 0;\n const puzzleData = puzzle.challenge === CHALLENGE_ARGON2ID ? puzzle.puzzleBytes : puzzle.puzzleBuffer;\n\n for (let i = 0; i < workersCount; i++) {\n const worker = new this._WorkerClass();\n worker.onerror = (e) => {\n if (this._workers.includes(worker)) { this.onWorkerError(e); }\n };\n worker.onmessage = (event) => {\n if (!this._workers.includes(worker) || !event.data) { return; }\n switch (event.data.command) {\n case 'init':\n readyWorkers++;\n if (readyWorkers === workersCount) { this._callbacks.workersReady(autoStart); }\n break;\n case 'solve':\n const { id, solution, wasm } = event.data.argument || {};\n this.onSolutionFound(id, solution, wasm);\n break;\n case 'error':\n if (event.data.error) { this.onWorkerError(event.data.error); }\n break;\n default:\n break;\n }\n };\n workers.push(worker);\n }\n\n this._workers = workers;\n if (this._debug) { console.debug(`[privatecaptcha][pool] initializing workers. count=${workers.length}`); }\n for (const worker of workers) {\n worker.postMessage({\n command: 'init',\n argument: { id: puzzle.ID, challenge: puzzle.challenge, buffer: puzzleData },\n });\n }\n }\n\n solve(puzzle) {\n if (!puzzle) { return; }\n\n if (this._debug) { console.debug('[privatecaptcha][pool] starting solving'); }\n this._solutions = [];\n this._solutionsCount = puzzle.solutionsCount;\n this._puzzleID = puzzle.ID;\n this._puzzle = puzzle;\n this._timeStarted = Date.now();\n this._timeFinished = null;\n this._workFailed = false;\n\n const skipSolving = (puzzle.isZero() && puzzle.challenge === CHALLENGE_BLAKE2B) || (puzzle.solutionsCount === 0);\n let stubSolution = null;\n\n for (let i = 0; i < puzzle.solutionsCount; i++) {\n if (!skipSolving) {\n if (puzzle.challenge !== CHALLENGE_ARGON2ID || i === 0) {\n this._workers[i % this._workers.length].postMessage({\n command: \"solve\",\n argument: {\n difficulty: puzzle.difficulty,\n puzzleIndex: i,\n debug: this._debug,\n },\n });\n }\n } else {\n if (!stubSolution) { stubSolution = new Uint8Array(8); }\n this._solutions.push(stubSolution);\n }\n }\n\n this._callbacks.workStarted();\n\n if (skipSolving) {\n setTimeout(() => this.onWorkCompleted(), 0);\n }\n }\n\n stop() {\n const count = this._workers.length;\n for (let i = 0; i < count; i++) {\n this._workers[i].terminate();\n }\n this._workers = [];\n if (this._debug) { console.debug('[privatecaptcha][pool] terminated the workers. count=' + count); }\n }\n\n reset() {\n this._solutions = [];\n this._solutionsCount = 0;\n this._puzzleID = null;\n this._timeStarted = null;\n this._timeFinished = null;\n this._anyWasm = false;\n this._workFailed = false;\n this._puzzle = null;\n }\n\n onSolutionFound(id, solution, wasm) {\n if (this._workFailed || this._timeFinished !== null || this._puzzle === null) { return; }\n if (id !== this._puzzleID) {\n console.warn(`[privatecaptcha][pool] Discarding solution with invalid ID. actual=${id} expected=${this._puzzleID}`);\n return;\n }\n if (!(solution instanceof Uint8Array) || solution.length !== 8 || typeof wasm !== 'boolean' ||\n solution[0] >= this._solutionsCount || this._solutions.some((found) => found[0] === solution[0]) ||\n (this._puzzle.challenge === CHALLENGE_ARGON2ID && solution[0] !== this._solutions.length)) {\n this.onWorkerError(new Error('Invalid puzzle worker solve response'));\n return;\n }\n if (this._debug) { console.debug('[privatecaptcha][pool] solution found. length=' + solution.length); }\n this._solutions.push(solution);\n\n if (wasm) { this._anyWasm = true; }\n\n const count = this._solutions.length;\n\n this._callbacks.progress(count * 100.0 / this._solutionsCount);\n\n if (count == this._solutionsCount) {\n this.onWorkCompleted();\n } else if (this._puzzle.challenge === CHALLENGE_ARGON2ID) {\n try {\n this._workers[0].postMessage({\n command: 'solve',\n argument: { difficulty: this._puzzle.difficulty, puzzleIndex: count, debug: this._debug },\n });\n } catch (error) {\n this.onWorkerError(error);\n }\n }\n }\n\n onWorkCompleted() {\n if (this._workFailed || this._timeFinished !== null) { return; }\n this._timeFinished = Date.now();\n this._callbacks.workCompleted();\n }\n\n onWorkerError(error) {\n if (this._workFailed || this._timeFinished !== null) { return; }\n this._workFailed = true;\n this.stop();\n this._callbacks.workerError(error);\n }\n\n serializeSolutions(errorCode) {\n if (this._debug) { console.debug('[privatecaptcha][pool] serializing solutions. count=' + this._solutions.length); }\n const solutionsLength = this._solutions.reduce((total, arr) => total + arr.length, 0);\n\n const metadataArray = this.writeMetadata(errorCode);\n const metadataSize = metadataArray.length;\n\n const resultArray = new Uint8Array(metadataSize + solutionsLength);\n let offset = 0;\n\n resultArray.set(metadataArray, offset);\n offset += metadataArray.length;\n\n for (let i = 0; i < this._solutions.length; i++) {\n resultArray.set(this._solutions[i], offset);\n offset += this._solutions[i].length;\n }\n\n return encode(resultArray);\n }\n\n writeMetadata(errorCode) {\n const metadataSize = 1 + 1 + 1 + 4;\n const binaryData = new Uint8Array(metadataSize);\n let currentIndex = 0;\n\n binaryData[currentIndex++] = METADATA_VERSION & 0xFF;\n binaryData[currentIndex++] = errorCode & 0xFF;\n\n const wasmFlag = this._anyWasm ? 1 : 0;\n binaryData[currentIndex++] = wasmFlag & 0xFF;\n\n const elapsedMillis = this.elapsedMillis();\n // Little-Endian\n binaryData[currentIndex++] = elapsedMillis & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 8) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 16) & 0xFF;\n binaryData[currentIndex++] = (elapsedMillis >> 24) & 0xFF;\n\n return binaryData;\n }\n\n elapsedMillis() {\n if (this._timeStarted && this._timeFinished) {\n return this._timeFinished - this._timeStarted;\n }\n\n return 0;\n }\n\n}\n", "'use strict';\n\nexport const SafeHTMLElement = typeof HTMLElement !== 'undefined' ? HTMLElement : Object;\n", "'use strict';\n\nimport { SafeHTMLElement } from \"./utils.js\";\n\nexport class ProgressRing extends SafeHTMLElement {\n constructor() {\n super();\n\n this._circumference = 0;\n\n // create shadow dom root\n this._root = this.attachShadow({ mode: 'open' });\n }\n\n connectedCallback() {\n // NOTE: stroke is sized with regards to {size} variable below\n // not to the scaled (external) size of SVG (yes, it's a bit confusing)\n const stroke = this.getAttribute('stroke');\n const size = 100;\n const radius = size / 2;\n const normalizedRadius = radius - stroke / 2;\n this._circumference = normalizedRadius * 2 * Math.PI;\n\n this._root.innerHTML = `\n <svg preserveAspectRatio=\"xMidYMid meet\" viewBox=\"0 0 ${size} ${size}\">\n <circle\n id=\"pie\"\n style=\"stroke-dasharray: 0 ${this._circumference}\"\n stroke-width=\"${normalizedRadius}\"\n fill=\"transparent\"\n r=\"${normalizedRadius / 2}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"track\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n <circle\n id=\"progress\"\n stroke-dasharray=\"${this._circumference} ${this._circumference}\"\n style=\"stroke-dashoffset: ${this._circumference}\"\n stroke-width=\"${stroke}\"\n fill=\"transparent\"\n r=\"${normalizedRadius}\"\n cx=\"${radius}\"\n cy=\"${radius}\"\n />\n </svg>\n\n <style>\n svg {\n width: 2.25em;\n height: 2.25em;\n }\n #pie {\n stroke: var(--pie-color);\n transition: stroke-dasharray 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #progress {\n stroke: var(--accent-color);\n transition: stroke-dashoffset 0.35s;\n transform: rotate(-90deg);\n transform-origin: 50% 50%;\n }\n #track {\n stroke: var(--gray-color);\n }\n </style>\n `;\n }\n\n setProgress(percent) {\n const progress = (percent / 100 * this._circumference)\n const offset = this._circumference - progress;\n const circle = this._root.getElementById('progress');\n if (circle) {\n circle.style.strokeDashoffset = offset;\n }\n\n const pie = this._root.getElementById('pie');\n if (pie) {\n pie.style.strokeDasharray = progress / 2 + ' ' + this._circumference;\n }\n }\n\n static get observedAttributes() {\n return ['progress'];\n }\n\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) { return; }\n\n if (name === 'progress') {\n const progressValue = newValue !== null ? Number.parseFloat(newValue) : Number.NaN;\n if (!Number.isNaN(progressValue)) {\n this.setProgress(progressValue);\n }\n }\n }\n}\n", "@layer base,theme,custom;@layer base{:host,*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border:0 solid}:host{--extra-spacing: 0px;--label-spacing: .625rem;--border-radius: .125rem;--warn-color: #A70B0B;--accent-color: #009400;min-width:0;font-size:1rem;display:inline-block;max-width:100%;border-radius:var(--border-radius)}:host(.hidden){display:none}:host(.floating){display:block;position:absolute;left:0;top:0;transform:translateY(-100%);z-index:1000}@media(min-width:30em){:host{min-width:min(20em,100%)}}}@layer theme{:host([theme=\"light\"]){--dark-color: #070113;--gray-color: #E0E0E0;--pie-color: #D8E9E9;--background-color: #fff;--checkbox-background-color: #FFF;--checkbox-hover-color: #EBF4F4}:host([theme=\"dark\"]){--dark-color: #EBF4F4;--gray-color: #656C7B;--pie-color: #376262;--background-color: #041616;--checkbox-background-color: #223C3C;--checkbox-hover-color: #1C3232}:host{--border: 1px solid var(--gray-color)}}.pc-captcha-widget{display:flex;align-items:center;flex-direction:row;padding:.75em 1em;border:var(--border);border-radius:var(--border-radius);background-color:var(--background-color);box-sizing:border-box;width:100%;height:100%}.pc-interactive-area{display:flex;flex:0 1 auto;align-items:center;position:relative;min-width:0}.pc-interactive-area label{padding-left:var(--label-spacing);color:var(--dark-color);flex:0 1 auto;min-width:1em;white-space:normal}.pc-interactive-area input[type=checkbox]{font-size:1em;width:2em;height:2em;margin:0 0 0 calc(.125em + var(--extra-spacing));appearance:none;background-color:var(--checkbox-background-color);border:.125em solid var(--dark-color);border-radius:.25em;cursor:pointer;flex-shrink:0}.pc-interactive-area input[type=checkbox]+label{padding:0 0 0 calc(.125em + var(--extra-spacing) + var(--label-spacing))}@keyframes colorChange{0%,to{border-color:var(--dark-color)}50%{border-color:var(--gray-color)}}.pc-interactive-area input[type=checkbox].loading{animation:colorChange 2s infinite;animation-timing-function:ease-in-out;background-color:var(--checkbox-hover-color);cursor:default}.pc-interactive-area input[type=checkbox].ready{background-color:var(--checkbox-background-color);border-color:var(--dark-color);cursor:pointer}.pc-interactive-area input[type=checkbox].error{background-color:var(--checkbox-background-color);border-color:var(--warn-color);cursor:pointer}.pc-interactive-area input[type=checkbox].invalid{background-color:var(--checkbox-hover-color);border-color:var(--gray-color);cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover{background-color:var(--checkbox-hover-color);border-color:var(--accent-color)}.pc-interactive-area input[type=checkbox].invalid:hover+label{cursor:not-allowed}.pc-interactive-area input[type=checkbox]:not(.invalid):hover+label{cursor:pointer}@keyframes dots-1{0%{opacity:0}25%{opacity:1}}@keyframes dots-2{0%{opacity:0}50%{opacity:1}}@keyframes dots-3{0%{opacity:0}75%{opacity:1}}@-webkit-keyframes dots-1{0%{opacity:0}25%{opacity:1}}@-webkit-keyframes dots-2{0%{opacity:0}50%{opacity:1}}@-webkit-keyframes dots-3{0%{opacity:0}75%{opacity:1}}.pc-interactive-area .dots span{animation:dots-1 2s infinite steps(1);-webkit-animation:dots-1 2s infinite steps(1)}.pc-interactive-area .dots span:first-child+span{animation-name:dots-2;-webkit-animation-name:dots-2}.pc-interactive-area .dots span:first-child+span+span{animation-name:dots-3;-webkit-animation-name:dots-3}#pc-progress{display:flex;justify-content:center;margin:0 0 0 var(--extra-spacing);flex-shrink:0}#pc-progress+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}.pc-spacer{flex-basis:0;flex-shrink:1;flex-grow:1;width:4em;min-width:0}.pc-info{display:flex;flex:0 0 auto;flex-direction:column;align-items:center;justify-content:center;margin-right:calc(.125em + var(--extra-spacing));color:var(--dark-color)}.pc-info svg{width:auto;height:3.125em;max-width:100%;max-height:100%}a.pc-link{margin-top:5px;text-decoration:none;color:currentcolor;text-align:center;font-size:.55em;text-transform:uppercase;font-weight:700;line-height:1.1em}a.pc-link:hover{text-decoration:underline}@keyframes checkmark{0%{stroke-dashoffset:100px}to{stroke-dashoffset:0px}}svg.verified{margin:0 0 0 var(--extra-spacing);flex-shrink:0;width:2.25em;height:2.25em}svg.verified+label{padding:0 0 0 calc(var(--extra-spacing) + var(--label-spacing))}svg.verified polyline{animation:checkmark .35s ease-in-out .1s backwards;stroke:#f2f2f2}svg.verified circle{fill:var(--accent-color)}#pc-debug{font-size:.75em;color:var(--gray-color);position:absolute;top:100%;left:calc(2em + 1em + 2*.125em + 2*var(--extra-spacing) + var(--label-spacing));cursor:default}#pc-debug.tooltip{text-decoration:underline;text-decoration-style:dashed;cursor:help}#pc-debug.warn{color:var(--warn-color)}#pc-debug.notice{color:#c70}\n", "'use strict';\n\nexport const CLICK_TO_VERIFY = 'click_to_verify';\nexport const VERIFYING = 'verifying';\nexport const SUCCESS = 'success';\nexport const UNAVAILABLE = 'unavailable';\nexport const INCOMPLETE = 'incomplete';\nexport const ERROR = 'error';\nexport const TESTING = 'testing';\nexport const NOTICE = 'notice';\n\nexport const STRINGS = {\n 'en': {\n [CLICK_TO_VERIFY]: 'Click to verify',\n [VERIFYING]: 'Verifying',\n [SUCCESS]: 'Verified',\n [UNAVAILABLE]: 'Not available',\n [INCOMPLETE]: 'incomplete',\n [ERROR]: 'error',\n [TESTING]: 'testing',\n [NOTICE]: 'notice',\n },\n 'de': {\n [CLICK_TO_VERIFY]: 'Zum Best\u00E4tigen klicken',\n [VERIFYING]: 'Wird \u00FCberpr\u00FCft',\n [SUCCESS]: 'Verifiziert',\n [UNAVAILABLE]: 'Nicht verf\u00FCgbar',\n [INCOMPLETE]: 'unvollst\u00E4ndig',\n [ERROR]: 'fehler',\n [TESTING]: 'testmodus',\n [NOTICE]: 'hinweis',\n },\n 'es': {\n [CLICK_TO_VERIFY]: 'Haz clic para verificar',\n [VERIFYING]: 'Verificando',\n [SUCCESS]: 'Verificado',\n [UNAVAILABLE]: 'No disponible',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'error',\n [TESTING]: 'prueba',\n [NOTICE]: 'aviso',\n },\n 'fr': {\n [CLICK_TO_VERIFY]: 'Cliquez pour v\u00E9rifier',\n [VERIFYING]: 'V\u00E9rification en cours',\n [SUCCESS]: 'V\u00E9rifi\u00E9',\n [UNAVAILABLE]: 'Non disponible',\n [INCOMPLETE]: 'incomplet',\n [ERROR]: 'erreur',\n [TESTING]: 'test',\n [NOTICE]: 'avis',\n },\n 'it': {\n [CLICK_TO_VERIFY]: 'Clicca per verificare',\n [VERIFYING]: 'Verifica in corso',\n [SUCCESS]: 'Verificato',\n [UNAVAILABLE]: 'Non disponibile',\n [INCOMPLETE]: 'incompleto',\n [ERROR]: 'errore',\n [TESTING]: 'test',\n [NOTICE]: 'avviso',\n },\n 'nl': {\n [CLICK_TO_VERIFY]: 'Klik om te verifi\u00EBren',\n [VERIFYING]: 'Bezig met verifi\u00EBren',\n [SUCCESS]: 'Geverifieerd',\n [UNAVAILABLE]: 'Niet beschikbaar',\n [INCOMPLETE]: 'onvolledig',\n [ERROR]: 'fout',\n [TESTING]: 'testen',\n [NOTICE]: 'melding',\n },\n 'sv': {\n [CLICK_TO_VERIFY]: 'Klicka f\u00F6r att verifiera',\n [VERIFYING]: 'Verifierar',\n [SUCCESS]: 'Verifierad',\n [UNAVAILABLE]: 'Inte tillg\u00E4nglig',\n [INCOMPLETE]: 'ofullst\u00E4ndig',\n [ERROR]: 'fel',\n [TESTING]: 'test',\n [NOTICE]: 'notis',\n },\n 'no': {\n [CLICK_TO_VERIFY]: 'Klikk for \u00E5 bekrefte',\n [VERIFYING]: 'Bekrefter',\n [SUCCESS]: 'Bekreftet',\n [UNAVAILABLE]: 'Ikke tilgjengelig',\n [INCOMPLETE]: 'ufullstendig',\n [ERROR]: 'feil',\n [TESTING]: 'test',\n [NOTICE]: 'varsel',\n },\n 'pl': {\n [CLICK_TO_VERIFY]: 'Kliknij, aby zweryfikowa\u0107',\n [VERIFYING]: 'Weryfikowanie',\n [SUCCESS]: 'Zweryfikowano',\n [UNAVAILABLE]: 'Niedost\u0119pne',\n [INCOMPLETE]: 'niekompletne',\n [ERROR]: 'b\u0142\u0105d',\n [TESTING]: 'test',\n [NOTICE]: 'uwaga',\n },\n 'uk': {\n [CLICK_TO_VERIFY]: '\u041D\u0430\u0442\u0438\u0441\u043D\u0456\u0442\u044C \u0434\u043B\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0438',\n [VERIFYING]: '\u0412\u0438\u043A\u043E\u043D\u0443\u0454\u0442\u044C\u0441\u044F \u043F\u0435\u0440\u0435\u0432\u0456\u0440\u043A\u0430',\n [SUCCESS]: '\u041F\u0456\u0434\u0442\u0432\u0435\u0440\u0434\u0436\u0435\u043D\u043E',\n [UNAVAILABLE]: '\u041D\u0435\u0434\u043E\u0441\u0442\u0443\u043F\u043D\u043E',\n [INCOMPLETE]: '\u043D\u0435\u043F\u043E\u0432\u043D\u0438\u0439',\n [ERROR]: '\u043F\u043E\u043C\u0438\u043B\u043A\u0430',\n [TESTING]: '\u0442\u0435\u0441\u0442\u0443\u0432\u0430\u043D\u043D\u044F',\n [NOTICE]: '\u0443\u0432\u0430\u0433\u0430',\n },\n 'tr': {\n [CLICK_TO_VERIFY]: 'Do\u011Frulamak i\u00E7in t\u0131klay\u0131n',\n [VERIFYING]: 'Do\u011Frulan\u0131yor',\n [SUCCESS]: 'Do\u011Fruland\u0131',\n [UNAVAILABLE]: 'Kullan\u0131lam\u0131yor',\n [INCOMPLETE]: 'eksik',\n [ERROR]: 'hata',\n [TESTING]: 'test',\n [NOTICE]: 'bildirim',\n },\n 'fi': {\n [CLICK_TO_VERIFY]: 'Napsauta vahvistaaksesi',\n [VERIFYING]: 'Vahvistetaan',\n [SUCCESS]: 'Vahvistettu',\n [UNAVAILABLE]: 'Ei saatavilla',\n [INCOMPLETE]: 'ep\u00E4t\u00E4ydellinen',\n [ERROR]: 'virhe',\n [TESTING]: 'testi',\n [NOTICE]: 'ilmoitus',\n },\n 'et': {\n [CLICK_TO_VERIFY]: 'Kl\u00F5psa kinnitamiseks',\n [VERIFYING]: 'Kinnitamine',\n [SUCCESS]: 'Kinnitatud',\n [UNAVAILABLE]: 'Pole saadaval',\n [INCOMPLETE]: 'puudulik',\n [ERROR]: 'viga',\n [TESTING]: 'test',\n [NOTICE]: 'teade',\n }\n};\n", "'use strict';\n\nimport { ProgressRing } from './progress.js';\nimport { SafeHTMLElement } from \"./utils.js\";\nimport styles from \"./styles.css\" with { type: 'css' };\nimport * as i18n from './strings.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('progress-ring')) {\n window.customElements.define('progress-ring', ProgressRing);\n}\n\nexport const STATE_EMPTY = 'empty';\nexport const STATE_ERROR = 'error';\nexport const STATE_LOADING = 'loading';\nexport const STATE_READY = 'ready';\nexport const STATE_IN_PROGRESS = 'inprogress';\nexport const STATE_VERIFIED = 'verified';\nexport const STATE_INVALID = 'invalid';\n\nexport const DISPLAY_POPUP = 'popup';\nconst DISPLAY_HIDDEN = 'hidden';\nexport const DISPLAY_WIDGET = 'widget';\n\nconst CHECKBOX_ID = 'pc-checkbox';\nconst PROGRESS_ID = 'pc-progress';\nconst DEBUG_ID = 'pc-debug';\nconst DEBUG_ERROR_CLASS = 'warn';\nconst DEBUG_NOTICE_CLASS = 'notice';\nconst DEBUG_TOOLTIP_CLASS = 'tooltip';\n\nconst privateCaptchaSVG = `<svg viewBox=\"0 0 39.4 41.99\" xml:space=\"preserve\" xmlns=\"http://www.w3.org/2000/svg\" class=\"pc-logo\" preserveAspectRatio=\"xMidYMid meet\">\n<path d=\"M0 0v30.62l4.29 2.48V4.85h30.83v23.29l-15.41 8.9-6.83-3.94v-4.95l6.83 3.94 11.12-6.42V9.91H8.58v25.66l11.12 6.42 19.7-11.37V0Zm12.87 14.86h13.66v8.32l-6.83 3.94-6.83-3.94z\" fill=\"currentColor\"/>\n</svg>`;\n\nconst verifiedSVG = `<svg class=\"verified\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 154 154\">\n<g fill=\"none\"><circle cx=\"77\" cy=\"77\" r=\"76\"></circle>\n<polyline class=\"st0\" stroke-width=\"12\" points=\"43.5,77.8 63.7,97.9 112.2,49.4\" style=\"stroke-dasharray:100px, 100px; stroke-dashoffset: 200px;\"/></g>\n</svg>`;\n\nfunction htmlToElement(html) {\n const template = document.createElement('template');\n template.innerHTML = html.trim();\n return template.content.firstChild;\n}\n\nfunction checkbox(cls) {\n const el = document.createElement('input');\n el.type = 'checkbox';\n el.id = CHECKBOX_ID;\n el.className = cls;\n el.required = true;\n return el;\n}\n\nfunction label(text, forElement) {\n const el = document.createElement('label');\n el.htmlFor = forElement;\n el.textContent = text;\n return el;\n}\n\nfunction progressRing() {\n const el = document.createElement('progress-ring');\n el.id = PROGRESS_ID;\n el.setAttribute('stroke', '12');\n el.setAttribute('progress', '0');\n return el;\n}\n\nfunction progressLabel(text) {\n const el = label(text, PROGRESS_ID);\n const dots = document.createElement('span');\n dots.className = 'dots';\n for (let i = 0; i < 3; i++) {\n const dot = document.createElement('span');\n dot.textContent = '.';\n dots.appendChild(dot);\n }\n el.appendChild(dots);\n return el;\n}\n\n/**\n * @param {string} text - The debug text to display\n * @param {boolean} isError - Whether this is an error state\n * @param {string|null} internalError - Optional internal error message for tooltip\n * @returns {HTMLElement} The debug span element\n */\nfunction debugSpan(text, isError, internalError) {\n const el = document.createElement('span');\n el.id = DEBUG_ID;\n if (isError) { el.classList.add(DEBUG_ERROR_CLASS); }\n\n if (internalError) {\n el.classList.add(DEBUG_TOOLTIP_CLASS);\n el.title = internalError;\n }\n\n el.textContent = text;\n return el;\n}\n\nfunction infoSection() {\n const info = document.createElement('div');\n info.className = 'pc-info';\n info.appendChild(htmlToElement(privateCaptchaSVG));\n const link = document.createElement('a');\n link.href = 'https://privatecaptcha.com';\n link.className = 'pc-link';\n link.rel = 'noopener nofollow';\n link.target = '_blank';\n link.appendChild(document.createTextNode('Private'));\n link.appendChild(document.createElement('br'));\n link.appendChild(document.createTextNode('Captcha'));\n info.appendChild(link);\n return info;\n}\n\n/**\n * @param {number} code\n * @param {Object<string, string>} strings\n * @returns {string} error message\n */\nfunction errorDescription(code, strings) {\n switch (code) {\n case errors.ERROR_NO_ERROR:\n return '';\n case errors.ERROR_NOT_CONFIGURED:\n return strings[i18n.INCOMPLETE];\n case errors.ERROR_ZERO_PUZZLE:\n return strings[i18n.TESTING];\n default:\n return strings[i18n.ERROR];\n }\n}\n\nexport class CaptchaElement extends SafeHTMLElement {\n constructor() {\n super();\n\n this._state = '';\n this._root = this.attachShadow({ mode: 'open' });\n\n this._debug = false;\n this._error = null;\n this._internalError = null;\n this._notice = null;\n this._displayMode = DISPLAY_HIDDEN;\n this._lang = 'en';\n\n // Add CSS\n const sheet = new CSSStyleSheet();\n sheet.replaceSync(styles);\n this._root.adoptedStyleSheets = [sheet];\n this._overridesSheet = null;\n }\n\n update() {\n this._debug = this.getAttribute('debug');\n this._error = null;\n this._internalError = null;\n this._displayMode = this.getAttribute('display-mode');\n this._lang = this.getAttribute('lang');\n if (!(this._lang in i18n.STRINGS)) {\n console.warn(`[privatecaptcha][progress] Localization not found. lang=${this._lang}`);\n this._lang = 'en';\n }\n\n // add CSS overrides\n const extraStyles = this.getAttribute('extra-styles');\n this.updateStyles(extraStyles);\n\n }\n\n connectedCallback() {\n this.update();\n\n // init\n const canShow = (this._displayMode == DISPLAY_WIDGET);\n this.setState(STATE_EMPTY, canShow);\n }\n\n /**\n * @param {string} state\n * @param {boolean} canShow\n * @returns {boolean} if changed\n */\n setState(state, canShow) {\n if (state == this._state) {\n console.debug('[privatecaptcha][progress] already in this state: ' + state);\n if (DISPLAY_POPUP === this._displayMode) {\n this._syncHostClass(canShow);\n }\n return false;\n }\n\n if (this._debug) { console.debug(`[privatecaptcha][progress] change state. old=${this._state} new=${state}`); }\n\n this.render(state, canShow);\n this._state = state;\n\n return true;\n }\n\n /**\n * Rebuilds the widget UI inside the shadow DOM based on the given state and\n * visibility settings. This updates the interactive area contents, applies\n * host element CSS classes (including popup-related behavior), and binds\n * the checkbox event handler when needed.\n *\n * @param {string} state - The new widget state (for example, empty, loading, or error).\n * @param {boolean} canShow - Whether the widget is allowed to be shown / expanded to the user.\n * @returns {void}\n */\n render(state, canShow) {\n const activeArea = document.createElement('div');\n activeArea.className = 'pc-interactive-area';\n let bindCheckEvent = false;\n let showPopupIfNeeded = false;\n const strings = i18n.STRINGS[this._lang];\n\n switch (state) {\n case STATE_EMPTY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox(''));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_LOADING:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('loading'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n break;\n case STATE_READY:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('ready'));\n activeArea.appendChild(label(strings[i18n.CLICK_TO_VERIFY], CHECKBOX_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_IN_PROGRESS:\n activeArea.appendChild(progressRing());\n activeArea.appendChild(progressLabel(strings[i18n.VERIFYING]));\n showPopupIfNeeded = canShow;\n break;\n case STATE_VERIFIED:\n activeArea.appendChild(htmlToElement(verifiedSVG));\n activeArea.appendChild(label(strings[i18n.SUCCESS], PROGRESS_ID));\n showPopupIfNeeded = canShow;\n break;\n case STATE_INVALID:\n activeArea.appendChild(checkbox('invalid'));\n activeArea.appendChild(label(strings[i18n.UNAVAILABLE], CHECKBOX_ID));\n break;\n case STATE_ERROR:\n bindCheckEvent = true;\n activeArea.appendChild(checkbox('error'));\n activeArea.appendChild(label(strings[i18n.ERROR], CHECKBOX_ID));\n break;\n default:\n console.error(`[privatecaptcha][progress] unknown state: ${state}`);\n break;\n }\n\n if (this._debug || this._error || this._notice) {\n if (this._error) {\n const text = errorDescription(this._error, strings);\n activeArea.appendChild(debugSpan(text, this._error, (this._debug && this._error) ? this._internalError : null));\n } else if (this._notice) {\n const noticeSpan = debugSpan(strings[i18n.NOTICE], false, this._notice);\n noticeSpan.classList.add(DEBUG_NOTICE_CLASS);\n activeArea.appendChild(noticeSpan);\n } else {\n activeArea.appendChild(debugSpan(`[${state}]`, false, null /*internal error*/));\n }\n }\n\n this._syncHostClass(showPopupIfNeeded);\n\n const widget = document.createElement('div');\n widget.className = 'pc-captcha-widget';\n widget.appendChild(activeArea);\n const spacer = document.createElement('div');\n spacer.className = 'pc-spacer';\n widget.appendChild(spacer);\n widget.appendChild(infoSection());\n\n this._root.replaceChildren(widget);\n\n if (bindCheckEvent) {\n const checkboxEl = this._root.getElementById(CHECKBOX_ID);\n if (checkboxEl) {\n checkboxEl.addEventListener('change', this.onCheckboxClicked.bind(this));\n } else {\n console.warn('[privatecaptcha][progress] checkbox not found in the Shadow DOM');\n }\n }\n }\n\n _syncHostClass(showPopupIfNeeded) {\n let hostClass = '';\n switch (this._displayMode) {\n case DISPLAY_HIDDEN:\n hostClass = 'hidden';\n break;\n case DISPLAY_POPUP:\n hostClass = showPopupIfNeeded ? 'floating' : 'hidden';\n break;\n case DISPLAY_WIDGET:\n break;\n }\n\n this.classList.remove('hidden', 'floating');\n if (hostClass) { this.classList.add(hostClass); }\n }\n\n /**\n * @param {Event} event\n */\n onCheckboxClicked(event) {\n event.preventDefault();\n if (this._debug) {\n console.debug(\"[privatecaptcha][progress] checkbox was clicked\");\n }\n if (event.target.checked) {\n const checkEvent = new CustomEvent(\"privatecaptcha:checked\", {\n bubbles: true,\n composed: true\n });\n\n this.dispatchEvent(checkEvent);\n } else {\n console.warn('[privatecaptcha][progress] checkbox was unchecked');\n }\n }\n\n /**\n * @param {number} percent\n */\n setProgress(percent) {\n if (STATE_IN_PROGRESS == this._state) {\n const progressBar = this._root.getElementById(PROGRESS_ID);\n if (progressBar) {\n progressBar.setProgress(percent);\n } else {\n console.warn('[privatecaptcha][progress] progress element not found');\n }\n } else {\n if (this._debug) {\n console.debug(`[privatecaptcha][progress] skipping updating progress when not in progress. state=${this._state}`);\n }\n }\n }\n\n /**\n * @param {number} value\n * @param {string} internalError\n * @param {string|null} [notice]\n */\n setError(value, internalError, notice) {\n this._error = value;\n this._internalError = internalError;\n this._notice = notice || null;\n }\n\n /**\n * @param {string} text\n * @param {boolean} error\n */\n setDebugText(text, error) {\n const debugElement = this._root.getElementById(DEBUG_ID);\n if (debugElement) {\n let debugText = '';\n if (this._error) {\n const strings = i18n.STRINGS[this._lang];\n debugText = errorDescription(this._error, strings);\n } else if (this._notice) {\n const strings = i18n.STRINGS[this._lang];\n debugText = strings[i18n.NOTICE];\n } else {\n debugText = `[${text}]`;\n }\n debugElement.textContent = debugText;\n if (error || this._error) {\n debugElement.classList.add(DEBUG_ERROR_CLASS);\n } else {\n debugElement.classList.remove(DEBUG_ERROR_CLASS);\n }\n }\n }\n\n static get observedAttributes() {\n return ['state', 'progress', 'extra-styles'];\n }\n\n updateStyles(newStyles) {\n const baseSheets = this._root.adoptedStyleSheets.filter(\n sheet => sheet !== this._overridesSheet\n );\n\n if (newStyles) {\n const cssText = `@layer custom { :host { ${newStyles} } }`;\n if (!this._overridesSheet) {\n this._overridesSheet = new CSSStyleSheet();\n }\n this._overridesSheet.replaceSync(cssText);\n this._root.adoptedStyleSheets = [...baseSheets, this._overridesSheet];\n } else {\n this._overridesSheet = null;\n this._root.adoptedStyleSheets = baseSheets;\n }\n }\n\n /**\n * @param {string} name\n * @param {string} oldValue\n * @param {string} newValue\n */\n attributeChangedCallback(name, oldValue, newValue) {\n if (oldValue === newValue) { return; }\n\n switch (name) {\n case 'progress':\n const progressValue = newValue !== null ? Number.parseFloat(newValue) : Number.NaN;\n if (!Number.isNaN(progressValue)) {\n this.setProgress(progressValue);\n }\n break;\n case 'extra-styles':\n this.updateStyles(newValue);\n break;\n };\n }\n}\n", "'use strict';\n\nimport { getPuzzle, Puzzle } from './puzzle.js'\nimport { WorkersPool } from './workerspool.js'\nimport { CaptchaElement, STATE_EMPTY, STATE_ERROR, STATE_READY, STATE_IN_PROGRESS, STATE_VERIFIED, STATE_LOADING, STATE_INVALID, DISPLAY_POPUP, DISPLAY_WIDGET } from './html.js';\nimport * as errors from './errors.js';\n\nif (typeof window !== \"undefined\" && window.customElements && !window.customElements.get('private-captcha')) {\n window.customElements.define('private-captcha', CaptchaElement);\n}\n\nconst PUZZLE_ENDPOINT_URL = 'https://api.privatecaptcha.com/puzzle';\nconst PUZZLE_EU_ENDPOINT_URL = 'https://api.eu.privatecaptcha.com/puzzle';\nexport const RECAPTCHA_COMPAT = 'recaptcha';\n\n\n/**\n * @param {HTMLElement} element\n * @returns {HTMLFormElement | null}\n */\nfunction findParentFormElement(element) {\n while (element && element.tagName !== 'FORM') {\n element = element.parentElement;\n }\n return element;\n}\n\nexport class CaptchaWidget {\n /**\n * @param {HTMLElement} element\n * @param {Object} options\n */\n constructor(element, options = {}) {\n this._element = element;\n this._puzzle = null;\n this._expiryTimeout = null;\n this._state = STATE_EMPTY;\n this._lastProgress = null;\n this._solution = null;\n this._userStarted = false; // aka 'user started while we were initializing'\n this._apiTriggered = false; // aka execute() for programmatic triggering\n this._options = {};\n this._errorCode = errors.ERROR_NO_ERROR;\n this._internalError = null;\n\n this.setOptions(options);\n\n this._workersPool = new WorkersPool({\n workersReady: this.onWorkersReady.bind(this),\n workerError: this.onWorkerError.bind(this),\n workStarted: this.onWorkStarted.bind(this),\n workCompleted: this.onWorkCompleted.bind(this),\n progress: this.onWorkProgress.bind(this),\n }, this._options.debug);\n\n const form = findParentFormElement(this._element);\n if (form) {\n // NOTE: this does not work on Safari by (Apple) design if we click a button\n // \"passive\" - cannot use preventDefault()\n form.addEventListener('focusin', this.onFocusIn.bind(this), { passive: true });\n this._element.replaceChildren(this._createCaptchaElement());\n this._element.addEventListener('privatecaptcha:checked', this.onChecked.bind(this));\n\n if (this._options.storeVariable) {\n this._element[this._options.storeVariable] = this;\n }\n\n if (DISPLAY_POPUP === this._options.displayMode) {\n const anchor = form.querySelector(\".private-captcha-anchor\");\n if (anchor) {\n anchor.style.position = \"relative\";\n } else {\n console.warn('[privatecaptcha] cannot find anchor for popup');\n }\n }\n\n const sitekey = this.checkConfigured();\n if (sitekey && this._options.startMode === 'load') {\n this.init(false);\n }\n } else {\n console.warn('[privatecaptcha] cannot find form element');\n }\n }\n\n _createCaptchaElement() {\n const captchaEl = document.createElement('private-captcha');\n this._updateCaptchaElement(captchaEl);\n return captchaEl;\n }\n\n _updateCaptchaElement(captchaEl) {\n captchaEl.setAttribute('lang', this._options.lang);\n captchaEl.setAttribute('theme', this._options.theme);\n captchaEl.setAttribute('extra-styles', this._options.styles);\n\n if (this._options.debug) {\n captchaEl.setAttribute('debug', 'true');\n }\n\n captchaEl.setAttribute('display-mode', this._options.displayMode);\n }\n\n /**\n * @param {Object} options\n */\n setOptions(options) {\n this._callerOptions = { ...options };\n const euOnly = this._element.dataset[\"eu\"] || null;\n const defaultEndpoint = euOnly ? PUZZLE_EU_ENDPOINT_URL : PUZZLE_ENDPOINT_URL;\n\n let defaultField = \"private-captcha-solution\";\n if (options.hasOwnProperty('compat') && options.compat === RECAPTCHA_COMPAT) {\n defaultField = \"g-recaptcha-response\";\n }\n\n let sitekey = \"\";\n if (options.hasOwnProperty('sitekey')) {\n sitekey = options.sitekey;\n }\n\n this._options = Object.assign({\n startMode: this._element.dataset[\"startMode\"] || \"auto\",\n debug: this._element.dataset[\"debug\"],\n fieldName: this._element.dataset[\"solutionField\"] || defaultField,\n puzzleEndpoint: this._element.dataset[\"puzzleEndpoint\"] || defaultEndpoint,\n sitekey: sitekey || this._element.dataset[\"sitekey\"] || \"\",\n displayMode: this._element.dataset[\"displayMode\"] || \"widget\",\n lang: this._element.dataset[\"lang\"] || \"auto\",\n theme: this._element.dataset[\"theme\"] || \"light\",\n styles: this._element.dataset[\"styles\"] || \"\",\n storeVariable: this._element.dataset[\"storeVariable\"] || null,\n }, options);\n\n if ('auto' === this._options.lang) {\n let lang = '';\n if (typeof document !== 'undefined' && document.documentElement) {\n lang = document.documentElement.lang;\n }\n if (!lang && typeof navigator !== 'undefined') {\n lang = navigator.language || navigator.userLanguage || '';\n }\n if (typeof lang === 'string' && lang.length >= 2) {\n this._options.lang = lang.split('-')[0].toLowerCase();\n }\n }\n }\n\n /**\n * Fetches puzzle from the server and sets up workers.\n * @param {boolean} autoStart\n */\n async init(autoStart) {\n this.trace(`init() was called. state=${this._state}`);\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n this._internalError = null;\n this._notice = null;\n\n const sitekey = this.checkConfigured();\n if (!sitekey) { return; }\n\n if ((STATE_EMPTY !== this._state) && (STATE_ERROR !== this._state)) {\n console.warn(`[privatecaptcha] captcha has already been initialized. state=${this._state}`);\n return;\n }\n\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n const startWorkers = ('auto' === this._options.startMode) || ('load' === this._options.startMode) || autoStart;\n\n try {\n this.setState(STATE_LOADING);\n this.setProgressState(STATE_LOADING);\n this.trace(`fetching puzzle. sitekey=${sitekey}`);\n const puzzleResult = await getPuzzle(this._options.puzzleEndpoint, sitekey);\n this._notice = puzzleResult.notice;\n this._puzzle = new Puzzle(puzzleResult.data);\n if (this._puzzle && this._puzzle.isZero()) { this._errorCode = errors.ERROR_ZERO_PUZZLE; }\n const expirationMillis = this._puzzle.expirationMillis();\n this.trace(`parsed puzzle buffer. isZero=${this._puzzle.isZero()} ttl=${expirationMillis / 1000}`);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (expirationMillis) { this._expiryTimeout = setTimeout(() => this.expire(), expirationMillis); }\n try {\n this._workersPool.init(this._puzzle, startWorkers);\n } catch (error) {\n this._workersPool.onWorkerError(error);\n return;\n }\n this.signalInit();\n } catch (e) {\n console.error('[privatecaptcha]', e);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n this._errorCode = errors.ERROR_FETCH_PUZZLE;\n this._internalError = e.internalError || e.message;\n this.setState(STATE_ERROR);\n const shouldFinalize = this.shouldFinalizeWork();\n this.setProgressState(shouldFinalize ? STATE_VERIFIED : STATE_EMPTY);\n if (shouldFinalize) {\n this.saveSolutions();\n this.signalErrored();\n }\n }\n }\n\n /**\n * Ensures that we have a sitekey available (defined or passed through options)\n * @returns {string | null}\n */\n checkConfigured() {\n const sitekey = this._options.sitekey || this._element.dataset[\"sitekey\"];\n if (!sitekey) {\n console.error(\"[privatecaptcha] sitekey not set on captcha element\");\n this._errorCode = errors.ERROR_NOT_CONFIGURED;\n this.setState(STATE_INVALID);\n this.setProgressState(STATE_INVALID);\n return null;\n }\n\n return sitekey;\n }\n\n start() {\n if (STATE_READY !== this._state) {\n console.warn(`[privatecaptcha] solving has already been started. state=${this._state}`);\n return;\n }\n\n this.trace('starting solving captcha');\n\n try {\n this.setState(STATE_IN_PROGRESS);\n this._workersPool.solve(this._puzzle);\n } catch (e) {\n this._workersPool.onWorkerError(e);\n }\n }\n\n dispatchEvent(eventName, detail = {}) {\n const event = new CustomEvent(`privatecaptcha:${eventName}`, {\n bubbles: false,\n detail: { widget: this, element: this._element, ...detail }\n });\n this._element.dispatchEvent(event);\n }\n\n signalEvent(event, callbackName) {\n this.dispatchEvent(event);\n\n const callback = this._element.dataset[callbackName];\n if (callback) {\n try {\n window[callback](this);\n } catch (e) {\n console.error('[privatecaptcha] Error in callback', event, e);\n }\n }\n }\n\n signalInit() {\n this.signalEvent('init', 'initCallback');\n }\n\n signalStarted() {\n this.signalEvent('start', 'startedCallback');\n }\n\n signalFinished() {\n this.signalEvent('finish', 'finishedCallback');\n }\n\n signalErrored() {\n this.signalEvent('error', \"erroredCallback\");\n }\n\n signalReset() {\n this.signalEvent('reset', 'resetCallback');\n }\n\n ensureNoSolutionField() {\n const solutionField = this._element.querySelector(`input[name=\"${this._options.fieldName}\"]`);\n if (solutionField) {\n try {\n this._element.removeChild(solutionField);\n } catch (e) {\n console.warn('[privatecaptcha]', e);\n }\n }\n }\n\n /**\n * Resets widget to a state when `start()` or `execute()` can be called again\n * @param {Object} options\n */\n reset(options = {}) {\n this.trace('reset captcha');\n\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); }\n if (this._workersPool) {\n this._workersPool.stop();\n this._workersPool.reset();\n }\n\n this._puzzle = null;\n this._solution = null;\n this._errorCode = errors.ERROR_NO_ERROR;\n this._internalError = null;\n this._notice = null;\n this.setOptions({ ...this._callerOptions, ...options });\n this.setState(STATE_EMPTY);\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n this._updateCaptchaElement(pcElement);\n // propagate the styles\n pcElement.update();\n }\n this.setProgressState(STATE_EMPTY, true /*force refresh*/);\n this.ensureNoSolutionField();\n this._userStarted = false;\n this._apiTriggered = false;\n\n this.signalReset();\n if (this._options.startMode === 'load') {\n this.init(false);\n }\n }\n\n updateStyles() {\n const newStyles = this._element.dataset[\"styles\"] || \"\";\n if (newStyles !== this._options.styles) {\n this._options.styles = newStyles;\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setAttribute('extra-styles', newStyles);\n }\n }\n }\n\n expire() {\n this.trace('expire captcha');\n\n // we immediately call init so reset() will be called there for workers pool\n if (this._workersPool) { this._workersPool.stop(); }\n\n this.setState(STATE_EMPTY);\n this.setProgressState(STATE_EMPTY);\n this.ensureNoSolutionField();\n this._apiTriggered = false;\n this.init(this._userStarted);\n }\n\n /**\n * @returns {HTMLElement} underlying element where captcha is rendered\n */\n element() {\n return this._element;\n }\n\n /**\n * @returns {string} value of the puzzle solution that needs to be sent for verification\n */\n solution() {\n return this._solution;\n }\n\n /**\n * @param {FocusEvent} event\n */\n onFocusIn(event) {\n this.trace('onFocusIn event handler');\n\n if (STATE_EMPTY !== this._state) {\n this.trace(`skipping focusin event with non-empty state. state=${this._state}`)\n return;\n }\n\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement && (event.target == pcElement)) {\n this.trace('skipping focusin event on captcha element')\n return;\n }\n\n this.init(false /*start*/);\n }\n\n /**\n * A programmatic way of starting solving the puzzle (as opposed to user input way)\n * @returns {Promise<never>} promise intentionally does not resolve so that the form can be submitted via the callbacks\n */\n execute() {\n if (this._apiTriggered && (STATE_ERROR !== this._state)) {\n this.trace(`skipping duplicate execute event handler`);\n return new Promise(() => { });\n }\n\n this.trace(`execute event handler. state=${this._state}`);\n this._apiTriggered = true;\n\n // show spinner when in auto mode\n // For the non-auto retry-from-STATE_ERROR case, init() will synchronously set\n // STATE_LOADING; capture the post-init value rather than the stale pre-init STATE_ERROR.\n let progressState = ('auto' === this._options.startMode)\n ? STATE_IN_PROGRESS\n : (STATE_ERROR === this._state ? STATE_LOADING : this._state);\n this._triggerSolving(progressState);\n\n return new Promise(() => { });\n }\n\n onChecked(event) {\n if (event) {\n event.stopPropagation();\n }\n\n if (this._userStarted && (STATE_ERROR !== this._state)) {\n this.trace('skipping duplicate onChecked handler')\n return;\n }\n\n this.trace(`onChecked event handler. state=${this._state}`);\n this._userStarted = true;\n\n // always show spinner when user clicked\n this._triggerSolving(STATE_IN_PROGRESS);\n }\n\n _triggerSolving(progressState) {\n let finished = false;\n\n switch (this._state) {\n case STATE_READY:\n // NOTE: in case of short-circuit (zero/test puzzle), start() can call all callbacks before exit\n this.start();\n break;\n case STATE_EMPTY:\n case STATE_ERROR:\n const autoStart = this._userStarted || this._apiTriggered;\n this.init(autoStart);\n break;\n case STATE_LOADING:\n // this will be handled in onWorkersReady()\n break;\n case STATE_IN_PROGRESS:\n setTimeout(() => this.setProgress(this._lastProgress), 500);\n break;\n case STATE_VERIFIED:\n // happens when we finished verification fully in the background, still should animate \"the end\"\n progressState = STATE_VERIFIED;\n finished = true;\n break;\n default:\n console.warn(`[privatecaptcha] triggerSolving: unexpected state. state=${this._state}`);\n return;\n }\n\n if (STATE_ERROR === this._state) { return; }\n this.setProgressState(progressState);\n if (finished) {\n this.saveSolutions();\n this.signalFinished();\n }\n }\n\n shouldFinalizeWork() {\n return ('load' === this._options.startMode) || this._userStarted || (this._apiTriggered && (\n ('auto' === this._options.startMode) || ('hidden' === this._options.displayMode)\n ));\n }\n\n /**\n * @param {boolean} autoStart\n */\n onWorkersReady(autoStart) {\n this.trace(`workers are ready. autostart=${autoStart}`);\n\n this.setState(STATE_READY);\n // if user started we always show \"in progress\"\n if ('load' === this._options.startMode) {\n this.setProgressState(STATE_IN_PROGRESS);\n } else if (!this._userStarted && !(this._apiTriggered && autoStart)) {\n this.setProgressState(STATE_READY);\n }\n\n if (autoStart || this._userStarted || this._apiTriggered) {\n this.start();\n }\n }\n\n /**\n * @param {Error} error\n */\n onWorkerError(error) {\n if (STATE_ERROR === this._state) { return; }\n console.error('[privatecaptcha] error in worker:', error)\n this._errorCode = errors.ERROR_SOLVE_PUZZLE;\n this._internalError = error?.message ?? String(error);\n if (this._expiryTimeout) { clearTimeout(this._expiryTimeout); this._expiryTimeout = null; }\n this._solution = null;\n this.ensureNoSolutionField();\n this.setState(STATE_ERROR);\n this.setProgressState(STATE_ERROR);\n this.signalErrored();\n }\n\n onWorkStarted() {\n this.signalStarted();\n }\n\n onWorkCompleted() {\n this.trace('[privatecaptcha] work completed');\n\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] solving has not been started. state=${this._state}`);\n return;\n }\n\n this.setState(STATE_VERIFIED);\n const shouldFinalize = this.shouldFinalizeWork();\n if (shouldFinalize) {\n this.setProgressState(STATE_VERIFIED);\n }\n\n if (shouldFinalize) {\n this.saveSolutions();\n\n // give time for checkbox animation to complete\n setTimeout(() => this.signalFinished(), 500);\n }\n }\n\n /**\n * @param {number} percent\n */\n onWorkProgress(percent) {\n if (STATE_IN_PROGRESS !== this._state) {\n console.warn(`[privatecaptcha] skipping progress update. state=${this._state}`);\n return;\n }\n\n this.trace(`progress changed. percent=${percent}`);\n this.setProgress(percent);\n }\n\n saveSolutions() {\n const solutions = this._workersPool.serializeSolutions(this._errorCode);\n const payload = `${solutions}.${this._puzzle ? this._puzzle.rawData : ''}`;\n\n this.ensureNoSolutionField();\n this._element.insertAdjacentHTML('beforeend', `<input name=\"${this._options.fieldName}\" type=\"hidden\" value=\"${payload}\">`);\n\n this._solution = payload;\n\n this.trace(`saved solutions. field=${this._options.fieldName} payload=${payload}`);\n }\n\n /**\n * Updates the \"UI\" state of the widget.\n * @param {string} state\n * @param {boolean} forceRefresh\n * @returns {boolean} if changed\n */\n setProgressState(state, forceRefresh = false) {\n // NOTE: hidden display mode is taken care of inside setState() even when (_userStarted == true)\n const canShow = this._userStarted ||\n (DISPLAY_WIDGET === this._options.displayMode) ||\n (this._apiTriggered && (DISPLAY_POPUP === this._options.displayMode));\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setError(this._errorCode, this._internalError, this._notice);\n const changed = pcElement.setState(state, canShow);\n if (!changed && forceRefresh) {\n pcElement.render(state, canShow);\n }\n return changed;\n } else {\n console.error('[privatecaptcha] component not found when changing state');\n return false;\n }\n }\n\n /**\n * Updates the \"internal\" (actual) state.\n * @param {string} state\n */\n setState(state) {\n this.trace(`change state. old=${this._state} new=${state}`);\n this._state = state;\n\n if (this._options.debug) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) {\n pcElement.setDebugText(state, (STATE_ERROR == state));\n }\n }\n }\n\n /**\n * @param {number} progress\n */\n setProgress(progress) {\n this._lastProgress = progress;\n if ((STATE_IN_PROGRESS === this._state) || (STATE_VERIFIED === this._state)) {\n const pcElement = this._element.querySelector('private-captcha');\n if (pcElement) { pcElement.setProgress(progress); }\n else { console.error('[privatecaptcha] component not found when updating progress'); }\n }\n }\n\n /**\n * @param {string} str\n */\n trace(str) {\n if (this._options.debug) {\n console.debug('[privatecaptcha]', str)\n }\n }\n}\n"],
5
+ "mappings": "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C,EAAkB,kBAClBC,EAAY,YACZC,EAAU,UACVC,EAAc,cACdC,EAAa,aACbC,EAAQ,QACRC,EAAU,UACVC,EAAS,SAETC,EAAU,CACnB,GAAM,CACF,CAACR,CAAe,EAAG,kBACnB,CAACC,CAAS,EAAG,YACb,CAACC,CAAO,EAAG,WACX,CAACC,CAAW,EAAG,gBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,QACT,CAACC,CAAO,EAAG,UACX,CAACC,CAAM,EAAG,QACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,4BACnB,CAACC,CAAS,EAAG,uBACb,CAACC,CAAO,EAAG,cACX,CAACC,CAAW,EAAG,qBACf,CAACC,CAAU,EAAG,mBACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,YACX,CAACC,CAAM,EAAG,SACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,0BACnB,CAACC,CAAS,EAAG,cACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,gBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,QACT,CAACC,CAAO,EAAG,SACX,CAACC,CAAM,EAAG,OACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,2BACnB,CAACC,CAAS,EAAG,2BACb,CAACC,CAAO,EAAG,gBACX,CAACC,CAAW,EAAG,iBACf,CAACC,CAAU,EAAG,YACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,MACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,wBACnB,CAACC,CAAS,EAAG,oBACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,kBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,SACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,QACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,2BACnB,CAACC,CAAS,EAAG,0BACb,CAACC,CAAO,EAAG,eACX,CAACC,CAAW,EAAG,mBACf,CAACC,CAAU,EAAG,aACd,CAACC,CAAK,EAAG,OACT,CAACC,CAAO,EAAG,SACX,CAACC,CAAM,EAAG,SACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,8BACnB,CAACC,CAAS,EAAG,aACb,CAACC,CAAO,EAAG,aACX,CAACC,CAAW,EAAG,sBACf,CAACC,CAAU,EAAG,kBACd,CAACC,CAAK,EAAG,MACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,OACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,0BACnB,CAACC,CAAS,EAAG,YACb,CAACC,CAAO,EAAG,YACX,CAACC,CAAW,EAAG,oBACf,CAACC,CAAU,EAAG,eACd,CAACC,CAAK,EAAG,OACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,QACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,iCACnB,CAACC,CAAS,EAAG,gBACb,CAACC,CAAO,EAAG,gBACX,CAACC,CAAW,EAAG,mBACf,CAACC,CAAU,EAAG,eACd,CAACC,CAAK,EAAG,iBACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,OACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,mIACnB,CAACC,CAAS,EAAG,4HACb,CAACC,CAAO,EAAG,2EACX,CAACC,CAAW,EAAG,+DACf,CAACC,CAAU,EAAG,mDACd,CAACC,CAAK,EAAG,6CACT,CAACC,CAAO,EAAG,+DACX,CAACC,CAAM,EAAG,gCACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,6CACnB,CAACC,CAAS,EAAG,yBACb,CAACC,CAAO,EAAG,uBACX,CAACC,CAAW,EAAG,2BACf,CAACC,CAAU,EAAG,QACd,CAACC,CAAK,EAAG,OACT,CAACC,CAAO,EAAG,OACX,CAACC,CAAM,EAAG,UACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,0BACnB,CAACC,CAAS,EAAG,eACb,CAACC,CAAO,EAAG,cACX,CAACC,CAAW,EAAG,gBACf,CAACC,CAAU,EAAG,uBACd,CAACC,CAAK,EAAG,QACT,CAACC,CAAO,EAAG,QACX,CAACC,CAAM,EAAG,UACd,EACA,GAAM,CACF,CAACP,CAAe,EAAG,0BACnB,CAACC,CAAS,E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",
6
+ "names": ["chars", "lookup", "i", "encode", "arraybuffer", "bytes", "len", "base64", "decode", "bufferLength", "p", "encoded1", "encoded2", "encoded3", "encoded4", "readUInt32LE", "binaryData", "offset", "PUZZLE_BUFFER_LENGTH", "MAX_PUZZLE_BODY_LENGTH", "PUZZLE_V1_MIN_LENGTH", "PUZZLE_V2_MIN_LENGTH", "PUZZLE_VERSION_1", "PUZZLE_VERSION_2", "CHALLENGE_BLAKE2B", "CHALLENGE_ARGON2ID", "ACCEPTABLE_CLIENT_ERRORS", "DEFAULT_TIMEOUT_MS", "DEFAULT_GLOBAL_TIMEOUT_MS", "getPuzzle", "endpoint", "sitekey", "options", "separator", "response", "fetchWithBackoff", "data", "notice", "json", "err", "wait", "delay", "signal", "resolve", "reject", "timeoutId", "url", "fetchOptions", "maxAttempts", "initialDelay", "maxDelay", "timeoutMs", "globalTimeoutMs", "globalController", "globalSignal", "globalTimeoutId", "lastError", "attempt", "error", "fetchController", "fetchSignal", "fetchTimeoutId", "globalAbortHandler", "readUInt64LE", "binaryData", "offset", "readUInt32LE", "Puzzle", "rawData", "parts", "buffer", "decode", "minimumLength", "userDataSize", "userDataStart", "sourceBuffer", "enlargedBuffer", "inlineWorker", "scriptText", "blob", "url", "worker", "Worker", "inlineWorker", "METADATA_VERSION", "WorkersPool", "callbacks", "debug", "WorkerClass", "Worker", "puzzle", "autoStart", "CHALLENGE_BLAKE2B", "CHALLENGE_ARGON2ID", "workers", "error", "worker", "workersCount", "readyWorkers", "puzzleData", "i", "e", "event", "id", "solution", "wasm", "skipSolving", "stubSolution", "count", "found", "errorCode", "solutionsLength", "total", "arr", "metadataArray", "metadataSize", "resultArray", "offset", "encode", "binaryData", "currentIndex", "wasmFlag", "elapsedMillis", "SafeHTMLElement", "ProgressRing", "SafeHTMLElement", "stroke", "size", "radius", "normalizedRadius", "percent", "progress", "offset", "circle", "pie", "name", "oldValue", "newValue", "progressValue", "styles_default", "CLICK_TO_VERIFY", "VERIFYING", "SUCCESS", "UNAVAILABLE", "INCOMPLETE", "ERROR", "TESTING", "NOTICE", "STRINGS", "ProgressRing", "STATE_EMPTY", "STATE_ERROR", "STATE_LOADING", "STATE_READY", "STATE_IN_PROGRESS", "STATE_VERIFIED", "STATE_INVALID", "DISPLAY_POPUP", "DISPLAY_HIDDEN", "DISPLAY_WIDGET", "CHECKBOX_ID", "PROGRESS_ID", "DEBUG_ID", "DEBUG_ERROR_CLASS", "DEBUG_NOTICE_CLASS", "DEBUG_TOOLTIP_CLASS", "privateCaptchaSVG", "verifiedSVG", "htmlToElement", "html", "template", "checkbox", "cls", "el", "label", "text", "forElement", "progressRing", "progressLabel", "dots", "i", "dot", "debugSpan", "isError", "internalError", "infoSection", "info", "link", "errorDescription", "code", "strings", "INCOMPLETE", "TESTING", "ERROR", "CaptchaElement", "SafeHTMLElement", "sheet", "styles_default", "STRINGS", "extraStyles", "canShow", "state", "activeArea", "bindCheckEvent", "showPopupIfNeeded", "CLICK_TO_VERIFY", "VERIFYING", "SUCCESS", "UNAVAILABLE", "noticeSpan", "NOTICE", "widget", "spacer", "checkboxEl", "hostClass", "event", "checkEvent", "percent", "progressBar", "value", "notice", "error", "debugElement", "debugText", "newStyles", "baseSheets", "cssText", "name", "oldValue", "newValue", "progressValue", "CaptchaElement", "PUZZLE_ENDPOINT_URL", "PUZZLE_EU_ENDPOINT_URL", "RECAPTCHA_COMPAT", "findParentFormElement", "element", "CaptchaWidget", "options", "STATE_EMPTY", "WorkersPool", "form", "DISPLAY_POPUP", "anchor", "captchaEl", "defaultEndpoint", "defaultField", "sitekey", "lang", "autoStart", "STATE_ERROR", "startWorkers", "STATE_LOADING", "puzzleResult", "getPuzzle", "Puzzle", "expirationMillis", "error", "e", "shouldFinalize", "STATE_VERIFIED", "STATE_INVALID", "STATE_READY", "STATE_IN_PROGRESS", "eventName", "detail", "event", "callbackName", "callback", "solutionField", "pcElement", "newStyles", "progressState", "finished", "percent", "payload", "state", "forceRefresh", "canShow", "DISPLAY_WIDGET", "changed", "progress", "str"]
7
7
  }
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "type": "git",
5
5
  "url": "git+https://github.com/PrivateCaptcha/PrivateCaptcha.git"
6
6
  },
7
- "version": "0.0.27",
7
+ "version": "0.0.28",
8
8
  "main": "index.js",
9
9
  "type": "module",
10
10
  "private": false,