let characterCount=0,word="";const eth=window.ethereum,initGate=async()=>{document.body.style="overflow: hidden;margin: 0 !important;padding: 0 !important;background-color: black;";const t=document.createElement("div");t.setAttribute("id","atomView");const e=document.createElement("div");e.setAttribute("id","overlay0"),e.style="position: absolute;width: 100% !important;height: 100% !important;display: block;z-index: 9;";const n=document.createElementNS("http://www.w3.org/2000/svg","svg");n.setAttribute("width","100%"),n.setAttribute("height","100%"),n.setAttribute("viewBox","0 0 4096 4096");const o=document.createElementNS("http://www.w3.org/2000/svg","animateTransform");o.setAttribute("attributeType","xml"),o.setAttribute("attributeName","transform"),o.setAttribute("type","translate"),o.setAttribute("values","0,0; 0,-3; 0,0; 0,3; 0,0"),o.setAttribute("keyTimes","0; 0.25; 0.5; 0.75; 1"),o.setAttribute("dur","1.5s"),o.setAttribute("repeatCount","indefinite"),o.setAttribute("calcMode","spline"),o.setAttribute("keySplines",".42 0 .58 1; .42 0 .58 1; .42 0 .58 1; .42 0 .58 1");const s=document.createElementNS("http://www.w3.org/2000/svg","g");s.setAttribute("transform","translate(520 500) scale(25 25)"),s.setAttribute("fill","#FEFFFE");const r=document.createElementNS("http://www.w3.org/2000/svg","path");r.setAttribute("fill-rule","nonzero"),r.setAttribute("d","m84.094 72.849c.288 2.083.856 3.639 1.701 4.67 1.547 1.877 4.196 2.815 7.949 2.815 2.248 0 4.073-.247 5.475-.742 2.66-.949 3.99-2.712 3.99-5.289 0-1.506-.66-2.671-1.979-3.496-1.32-.804-3.392-1.515-6.218-2.134l-4.825-1.082c-4.743-1.073-8.021-2.238-9.836-3.496-3.072-2.103-4.609-5.392-4.609-9.867 0-4.083 1.485-7.475 4.454-10.176 2.97-2.701 7.331-4.052 13.084-4.052 4.805 0 8.903 1.273 12.295 3.82 3.393 2.547 5.171 6.243 5.336 11.089h-9.156c-.165-2.743-1.361-4.691-3.588-5.846-1.484-.763-3.33-1.145-5.536-1.145-2.454 0-4.413.495-5.877 1.485s-2.196 2.371-2.196 4.145c0 1.629.721 2.846 2.165 3.65.928.536 2.907 1.165 5.939 1.887l7.856 1.886c3.444.825 6.042 1.928 7.795 3.31 2.722 2.145 4.083 5.248 4.083 9.31 0 4.166-1.593 7.625-4.779 10.378s-7.686 4.129-13.502 4.129c-5.938 0-10.609-1.356-14.011-4.068-3.403-2.711-5.104-6.438-5.104-11.181z");const i=o.cloneNode(!0),a=document.createElementNS("http://www.w3.org/2000/svg","path");a.setAttribute("fill-rule","nonzero"),a.setAttribute("d","m28 26v76h66v-7h-58v-62h58v-7z"),s.append(r),r.append(i),s.append(a),n.append(s),e.append(n),t.append(e);const c=document.createElement("canvas");if(c.setAttribute("id","atomCanvas"),t.append(c),document.body.appendChild(t),document.getElementById("atomCanvas").width=window.innerWidth,document.getElementById("atomCanvas").height=window.innerHeight,eth){const t=await fetch(`${serverUrl}/content/10d92ec11b31ea21752ac46781d109bcf53bba04ae9b1044747057335c77ef9ci0`),e=document.createElement("script");e.innerHTML=await t.text(),document.body.appendChild(e),(window.fullScreen||window.innerWidth==screen.width||window.innerWidth>=1024)&&setTimeout((()=>{setup()}),2e3)}},setup=async()=>{let t,e="";const n="Forging a Mithril Key to unlock the Quantum Gate...";function o(t){for(var e="",n=0;n<t.length;n++)e+=t.charCodeAt(n).toString(16);return e}const s=async()=>{document.getElementById("overlay0").style.display="none";const s=await eth.request({method:"eth_requestAccounts"}).catch((t=>{4001===t.code?console.log("Please connect to MetaMask."):(document.getElementById("btnEth").style.display="",console.error(t))}));e=s[0],console.log("ethAddress",e),document.getElementById("info0").innerHTML="",document.getElementById("infoEth").innerHTML=`<p style="color: #999999">ETH Address: ${e}<br/><br/><span style="color: white">${n}</span></p>`,document.getElementById("btnEth").style.display="none";const r=new ethers.BrowserProvider(window.ethereum),i=(await r.getNetwork()).chainId,a=Number(i);console.log("chainId",a),1444673419!==a&&(document.getElementById("btnEth").style.display="",await switchToSkale(),location.reload());const c=await r.getSigner();t=c;const l=await(async()=>{try{const t=e,s=o(n);return await eth.request({method:"personal_sign",params:[s,t]})}catch(t){return console.error(t),null}})();console.log("signedData",l);const d=Signature.from(l);console.log("r",d.r),console.log("s",d.s),console.log("v",d.v);const u=ethers.verifyMessage(o(n),l);console.log("Recovered Address:",u);const m=new ethers.Contract("0x9385A660b79D451e61D7A16Aa5cB7E1a65817e4f",["function unlock(string message, uint8 v, bytes32 r, bytes32 s) public returns ()"],t),h=await m.unlock(o(n),d.v,d.r,d.s);h&&h.hash&&(console.log("tx hash",h.hash),document.getElementById("infoEth").innerHTML='<p style="color: #999999">Verifying signed messages...<br/>Minting 0-99 tokens using SKALE RNG via Europa Hub Testnet...<br/>Just a moment...<br/>And, Good Luck!</p>',await h.wait(),document.getElementById("infoEth").innerHTML=`<p style="color: #999999">TX: ${h.hash} via Europa Hub Testnet<br/><br/><b style="color: white">You unlocked the Quantum Gate!</b></p>`,console.log("done"))},r=document.createElement("div");r.setAttribute("id","ordOsDiv0"),r.style="color: white; position: absolute;width: 100% !important;z-index: 999;top: 0px;font-family: system-ui;margin: 0px; padding: 0px",document.getElementById("atomView").appendChild(r);const i=document.createElement("div");i.setAttribute("id","info0"),i.style.marginLeft="10px",i.style.marginBottom="20px",i.style.fontSize=".9em",r.appendChild(i);const a=document.createElement("div");if(a.setAttribute("id","infoEth"),a.style.marginLeft="10px",a.style.fontSize=".9em",r.appendChild(a),setInterval((function(){if(characterCount<word.length){const t=word[characterCount%word.length];document.getElementById("info0").innerHTML+=">"===t?"<br/>":t,characterCount++}}),40),eth?(document.getElementById("info0").innerHTML="",word=">Welcome to the Quantum Gate, a gate in-between BTC and SKALE...>>Connect MetaMask to unlock...>"):(document.getElementById("info0").innerHTML="",word=">No Metamask Wallet detected>>"),eth){const t=document.createElement("button");t.setAttribute("id","btnEth"),t.style.padding="7px",t.style.color="#cccccc",t.style.cursor="pointer",t.style.fontSize=".9em",t.style.border="1px solid white",t.style.backgroundColor="transparent",t.style.marginLeft="10px",t.onclick=async()=>{e||s()},t.innerHTML="Unlock",r.appendChild(t)}},switchToSkale=async()=>{eth.request({method:"wallet_addEthereumChain",params:[{chainId:`0x${1444673419..toString(16)}`,rpcUrls:["https://testnet.skalenodes.com/v1/juicy-low-small-testnet"],chainName:"SKALE Europa Hub Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},blockExplorerUrls:["https://juicy-low-small-testnet.explorer.testnet.skalenodes.com/"]}]})};