const init=()=>{window.currentRange=1e3,window.digitalElements={},window.digitalElements.found={};const e="ontouchstart"in window||navigator.msMaxTouchPoints;document.body.style="margin: 20px;overflow: x-hidden; background-color: #333333; color: white;font-family: system-ui;";const t=document.createElement("div");t.setAttribute("id","titleDiv0"),t.innerHTML=`<a href="${serverUrl}/content/fa1277e5a4090fa72b2d2caacc0def9e4cb9651a6d38099e65364b02cea514f8i0" style="font-size: 1.2em; color: orange; text-decoration: none">Digital Elements on Bitmap 🟧</a><br/><span style="font-size: 0.9em">Bitmap Sat Fusion Node 🔥⚛️ v0.1.1 <span style="font-size: 0.8em">(w. free onchain decentralized indexing)</span><br/>Define/Scan/Download Bitmap Digital Elements Data</span><br/><br/>`,document.body.appendChild(t);const n=document.createElement("input");n.setAttribute("id","inputDiv0"),n.placeholder="Enter Element Name",n.style.textAlign="center",n.style.width="180px",n.style.height="35px",n.style.padding="10px",n.style.color="#cccccc",n.style.fontSize="1em",n.style.border="2px solid white",n.style.backgroundColor="transparent",document.body.appendChild(n);const i=document.createElement("input");i.setAttribute("id","inputDiv1"),i.placeholder="Enter Pattern",i.type="number",i.style.marginLeft="10px",i.style.textAlign="center",i.style.width="150px",i.style.height="35px",i.style.padding="10px",i.style.color="#cccccc",i.style.fontSize="1em",i.style.border="2px solid white",i.style.backgroundColor="transparent",i.style.marginRight="10px",document.body.appendChild(i),document.body.addEventListener("keydown",(function(e){13==e.keyCode&&checkElements()}));const o=document.createElement("button");o.setAttribute("id","btnDiv0"),o.style.padding="7px",o.style.color="#cccccc",o.style.cursor="pointer",o.style.fontSize=".9em",o.style.border="1px solid white",o.style.backgroundColor="transparent",o.style.marginRight="10px",o.onclick=()=>checkElements(),o.innerHTML="SCAN",document.body.appendChild(o);const l=document.createElement("button");l.setAttribute("id","btnDiv1"),l.style.padding="7px",l.style.color="#cccccc",l.style.cursor="pointer",l.style.fontSize=".9em",l.style.border="1px solid white",l.style.backgroundColor="transparent",l.style.marginRight="10px",l.style.display="none",l.onclick=()=>{if(1e3===window.currentRange)window.currentRange=5e3,document.getElementById("info0").innerHTML="Scanning locally (Proof of Work)... The speed of scanning varies based on your device.";else{if(!(window.currentRange<=95e3))return void(document.getElementById("info0").innerHTML="Can only scan up to 100k for now (need more quotes)");window.currentRange+=5e3;const e=['"an onchain big bang🔥 from bitmap sats occurred quietly"','"Centralized" on the most valuable, secured, decentralized network','"if anyone tries to resist or throw mud 🤎 on any pioneer vision..."','"Art on BITCOIN? Art OFF BITCOIN?"','"onchain indexing: Bad Idea!"','"there is no (onchain) pioneer vision here"','"Leveraging Bitcoin\'s Data Layer (offchain!?)"','"free (onchain) knockoff*"','"DMT was a private conversation between me and..."',"\"I had the idea for 'atoms'...on 2022-5-1 I renamed the 'bitcoin-atoms' repo to 'ord'.\"",'"When OP_CAT is enabled on BTC, we will have a native BTC metaverse economy #bitmap"','"can u access the [redacted] data from inside a sandboxed inscription?"','"no block data involved" (except everything is onchain)','"I should have known that everyone would immediately start using JSON-based provenance 😭"','"Bitcoin, Ordinals and Runes *is* the MMORPG."',"\"If you don't believe me or don't get it, I don't have time to try to convince you, sorry.\"","I'm trash and I'm safe from centralization.","#bitmap #bitcoin #metaverse"];document.getElementById("info0").innerHTML=e[Math.floor(Math.random()*e.length)]}checkElements()},l.innerHTML="SCAN NEXT 5K Bitmaps",document.body.appendChild(l);const a=document.createElement("span");a.setAttribute("id","info0"),a.style.marginLeft="10px",a.style.fontSize=".9em",document.body.appendChild(a),document.getElementById("info0").innerHTML="try 'cat' and '6540', or just hit 'SCAN'";const d=document.createElement("hr");document.body.appendChild(d);const s=document.createElement("div");if(s.setAttribute("id","elementsDiv0"),s.innerHTML=`<div>Digital Elements are fused 🔥 from the Bitmap universe of Satoshi numbers, where the first 840k Bitmap sats were inscribed as BitmapOCI (onchain index).<br/>Multiple Digital Elements ⚛️ can be found on a single Bitmap. Check a specific Bitmap via <a href="${serverUrl}/content/fa1277e5a4090fa72b2d2caacc0def9e4cb9651a6d38099e65364b02cea514f8i0" style="color: white; text-decoration: underline">Inscription 75526396</a><br/>This is a client-side decentralized (onchain) indexing node 🌐 that runs from an BTC inscription on your web browser client.<br/>Feel free to download your custom indexing results and keep building on Bitmap 🧡<br/>More features & utilities coming soon in future node upgrades 💜🐈</div>`,e){const e=document.createElement("hr");document.body.appendChild(e)}s.style.fontSize=".8em",document.body.appendChild(s);const r=document.createElement("div");r.setAttribute("id","bitmapFieldDiv0"),document.body.appendChild(r),document.getElementById("bitmapFieldDiv0").style.wordWrap="break-word";const c=document.createElement("div");c.setAttribute("id","bitFieldDiv0"),c.style.fontSize="0.8em",document.body.appendChild(c),document.getElementById("bitFieldDiv0").style.wordWrap="break-word";const m=document.createElement("button");m.setAttribute("id","btnDownloadDiv0"),m.style.padding="7px",m.style.color="#cccccc",m.style.cursor="pointer",m.style.fontSize=".9em",m.style.border="1px solid white",m.style.backgroundColor="transparent",m.style.marginTop="10px",m.style.marginRight="10px",m.onclick=()=>downloadJson(),m.style.display="none",m.innerHTML="DOWNLOAD .json",document.body.appendChild(m)},checkDigitalElements=async(e,t,n)=>{if(console.log("Digital Elements on Bitmap with an onchain index made of Bitmap sats powered by decentralized indexing from your web browser 🟧"),console.log("inspired by digital matter theory, onchain provenance, and decentralized indexing"),console.log("built by runeape.sats 🟪🐈"),isNaN(n)||n>1e5)return void console.log("invalid range");const i=await fetch(`${serverUrl}/r/blockheight`).then((e=>e.text())),o=860832,l=2016,a=i>=o?Math.floor((i-o)/l)+1:0,d=Math.floor(e/21e4),s=69+a,r=l-(i-o)%l-1;console.log("latestBlockHeight",i,"shift in",r,"blocks","max_field",s);const c={...t};if(e=Number(e),Number(e)>84e4||isNaN(e)){const e="only valid for blockHeight ≤ 840000";return console.log(e),{}}void 0===e&&(e=0);const{bitmapSat:m,bitfield:u}=await bitdex.getBitmapSatWifData(Number(e));let g=u;for(let e=0;e<s-4*d;e++)g+=u;digitalElements.sat=m,digitalElements.blockHeight=e,digitalElements.latestBlockHeight=i,digitalElements.nextShift=r,digitalElements.elements=c,digitalElements.max_field=s,digitalElements.bitfield=u,digitalElements.availableBitfield=g,digitalElements.epoch=d,digitalElements.difficultyAdjustment=l,digitalElements.activationBlockHeight=o;const b=Math.ceil(g.length/1e5);digitalElements.sum={};const y=e%1e5;document.getElementById("bitFieldDiv0").innerHTML='<br/><b style="color:orange">Digital Elements found on:</b><br/>';const p=e=>{let t="";for(const[n,i]of Object.entries(e))"sat"!==n&&(t+=`<b>${n}</b> x ${i}, `);return t.substring(0,t.length-2)};for(let t=y;t<n;t++){const i=g.substring(t*b,(t+1)*b);if(digitalElements.found[t]){if(t>=1e3||n>5e3)continue}else digitalElements.found[t]={};for(const[n,o]of Object.entries(c))try{const e=(h=o,i.split(`${h}`).length-1);e>0&&(digitalElements.found[t][n]=e,digitalElements.sum[n]||(digitalElements.sum[n]=0),digitalElements.sum[n]+=e)}catch(e){}Object.keys(digitalElements.found[t]).length>0&&(document.getElementById("bitFieldDiv0").innerHTML+=`${t}.bitmap: ${p(digitalElements.found[t])}<br/>`)}var h;document.getElementById("btnDiv1").style.display="",window.currentRange>=1e3&&(document.getElementById("btnDiv0").style.display="none",document.getElementById("inputDiv0").style.display="none",document.getElementById("inputDiv1").style.display="none",document.getElementById("btnDownloadDiv0").style.display=""),document.getElementById("info0").innerHTML=""},finalizeObj=async e=>{for(const t in e)0===Object.keys(e[t]).length||void 0===e[t]?delete e[t]:e[t].sat=await getBitmapSat(Number(t));return e},downloadJson=async()=>{const e={};e.found=await finalizeObj(digitalElements.found),e.sum=digitalElements.sum;const t=JSON.stringify(e,void 0,4),n=document.createElement("a"),i=new Blob([t],{type:"text/plain"}),o=URL.createObjectURL(i);n.setAttribute("href",o),n.setAttribute("download",`bitmapDE${window.currentRange}.json`),n.click()},checkElements=async()=>{document.getElementById("btnDownloadDiv0").style.display="none";const e=document.getElementById("inputDiv0").value.replace(/[^a-z0-9]/gi,""),t=document.getElementById("inputDiv1").value;if(console.log(e,t),t.length<2&&t.length>0)return e.length<1?void(document.getElementById("info0").innerHTML="need a name for the pattern"):void(document.getElementById("info0").innerHTML="invalid pattern");window.elementalPatterns={alpha:"10000",omega:"99999",1024:"1024",1337:"1337",6942:"6942",666:"0666",420:"0420",78:"00078",9:"00009",286:"0286",bitcoin:"210000"},e&&t&&(elementalPatterns[e]=t),document.getElementById("elementsDiv0").innerHTML=`<br/><b style="color:orange">Scanning Digital Elements up to ${currentRange}.bitmap... be patient 🧡</b><br/>`,document.getElementById("bitFieldDiv0").innerHTML="",console.log("currentRange",currentRange),await checkDigitalElements(0,elementalPatterns,currentRange);let n=digitalElements.latestBlockHeight?`Current block height: <b>${digitalElements.latestBlockHeight}</b><br/>Digital Elements shift in <b>${digitalElements.nextShift}</b> blocks on Block <b>${Number(digitalElements.latestBlockHeight)+Number(digitalElements.nextShift+1)}</b><br/><br/><b style="color:orange">Total Digital Elements found in ${currentRange} Bitmaps:</b><br/>`:"";for(const[t,i]of Object.entries(elementalPatterns))try{n+=`<span style="color: white}">Element ${t} <span style="font-size: 0.85em">("${i}")</span>: <b >${digitalElements.sum[t]?digitalElements.sum[t]:0}</b></span><br/>`}catch(e){}document.getElementById("elementsDiv0").innerHTML=n};