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.2 <span style="font-size: 0.8em">for indexing Digital Elements</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="<p>Scanning locally (Proof of Work)... The speed varies based on your device.</p>";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.\" - Satoshi Nakamoto","\"I'm trash and I'm safe from centralization.\"","#bitmap #bitcoin #metaverse",'"Running bitcoin" @halfin'];document.getElementById("info0").innerHTML=`<p>${e[Math.floor(Math.random()*e.length)]}</p>`}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="<p>try 'cat' and '6540', or just hit 'SCAN'</p>";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). 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. Feel free to download your custom indexing results and keep building on Bitmap 🧡<br/><br/>💜🐈</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,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 p=e%1e5;document.getElementById("bitFieldDiv0").innerHTML='<br/><b style="color:orange">Digital Elements found on:</b><br/>';const y=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=p;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: ${y(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="",await checkDigitalElements(0,elementalPatterns,currentRange);let n=digitalElements.latestBlockHeight?`Current block height: <b>${digitalElements.latestBlockHeight}</b><br/>Digital Elements will <i>shift</i> 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};