File: blk05503.txt
i/Foundry USA Pool #dropgold/
9j7from:10060USDT(TRON):TMcd1AQyQw6YuDq3WLgQa8XYtjaXh2d3A9P
FjDOUT:C36CC804738A60BD6A887DA25248C9967F7B9D7EAD22C6711B6AA157C08A8D34
FjDOUT:EF77ACF37329E52C9B76691BB8A6DA60B911197D5DF40F8A5ECA04D06AAFDD70
RjLO=:ETH.USDT:0xa3FDad245f8B311e0A00213cBEFB40FF9A0bd5BA:1200685700/0/0:-_/t1:0/70
=j;G0w:to:USDT(BSC):0x72cC4264E4Ce956b11bbf1BEC87DFfE8Bad518C7y
?stamp:{"p":"src-20","op":"tranJ
sfer","tick":"utxo","amt":152529J
?stamp:{"p":"src-20","op":"tranJ
sfer","tick":"kevin","amt":25000J
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1599"}h!
OjLL0x2b3d2b392428ef6ddb5f55fc07455140553c2b8800c6c849c9daa52778dfec71=|lifiP)
DjB0xa6a63b2298dec51294ac200ed9712efe4ccce358259bb22fd19a82ecc7f0373d
DjB0x43a833bd2d9255f4ce6449f4d036a4eb4ec3c8c79397b3c87bcf91e1a10b7090
DjB0x85e5476f954c5dcd6365fdbe5eca80381bfe30651bfb4da5fc25f28bf1df76f2
DjB0x925ed8248d8ab828e5f21fac950b645c20cd7e05075bbc371f4cca13f69b26c0
DjB0x1c06aa6c417c6c165e5cc9d9c24af24b306104e12b5e859f340c27918915f8ca
DjB0x04a07163aae361f2b3b4134ac00af03f3c36512dee5310faa27b46590484b534
DjB0xe6ab9ac1aaaf6b6832e8cff0abab6e01489a97f32de5f3cc1d5348c844021ea1
QjLN=:ETH.USDC:0xB22D5bDA079389CEEB2f5E98CB6cb9052Eef8a5D:455549500/0/0:-_/t1:0/70
DjB0xbbfd60e4c95cbec771e389d0a105f31090bd51e117544650807c9fef4a9cba70
DjB0xe7b339c39b68ba2b42601f9e44d8ccdace6991746bb18950176a04cfa65a2677
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
DjB0xe733602c327198b725a310a390d3ab89ef9a5c6e9e5ad1013a936f36b7359235f
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
LN{"p":"tap","op":"token-transfer","tick":"dmt-patterns
text/html;charset=utf-8
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Live Stream</title>
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;background:#000;color:#fff;font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;overflow:hidden}
#wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center}
video{width:100%;height:100%;object-fit:contain;background:#000}
#ov{position:fixed;inset:0;M
display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,.92);z-index:10;text-align:center;padding:20px;transition:opacity .4s}
#ov.h{opacity:0;pointer-events:none}
#lg{font-size:36px;margin-bottom:8px;background:linear-gradient(90deg,#f7931a,#ffce6b);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}
#st{font-size:15px;color:#8b949e;margin-bottom:20px;min-height:22px}
.sp{display:inline-block;width:40px;height:40px;border:3px solid #21262dM
;border-top-color:#f7931a;border-radius:50%;animation:s 1s linear infinite;margin-bottom:16px}
@keyframes s{to{transform:rotate(360deg)}}
#um{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.85);color:#fff;border:1px solid #f7931a;padding:12px 24px;border-radius:30px;font-size:15px;cursor:pointer;z-index:5;backdrop-filter:blur(8px);display:none}
#um.s{display:block}
#in{position:fixed;top:14px;left:14px;background:rgba(0,0,0,.7);padding:6px 12px;border-radius:20px;font-size:11pxM
;color:#8b949e;backdrop-filter:blur(8px);z-index:5;display:none}
#in.s{display:block}
#in .l{color:#f85149;font-weight:700}
#er{color:#f85149;font-size:13px;max-width:400px;line-height:1.5;margin-top:12px}
<div id="wrap"><video id="v" autoplay muted playsinline></video></div>
<div id="in" style="display:none"><span class="l">
LIVE</span> | Ordinal Stream</div>
<button id="um" style="display:none">Klicken um Ton zu aktivieren</button>
<div id="ov" style="display:none">
"lg">Ordinal Stream</div>
<div class="sp"></div>
<div id="st">Verbinde mit Stream...</div>
<script>var Trystero=(()=>{var wi=Object.create;var Ve=Object.defineProperty;var bi=Object.getOwnPropertyDescriptor;var xi=Object.getOwnPropertyNames;var Si=Object.getPrototypeOf,Ei=Object.prototype.hasOwnProperty;var Ci=(t,e,n)=>e in t?Ve(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var A=(t,e)=>()=>(e||t((e={exports:{}}).exports,e),e.exports),Ti=(t,e)=>{for(var n in e)Ve(t,n,{geM
t:e[n],enumerable:!0})},ln=(t,e,n,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of xi(e))!Ei.call(t,i)&&i!==n&&Ve(t,i,{get:()=>e[i],enumerable:!(r=bi(e,i))||r.enumerable});return t};var ct=(t,e,n)=>(n=t!=null?wi(Si(t)):{},ln(e||!t||!t.__esModule?Ve(n,"default",{value:t,enumerable:!0}):n,t)),Ri=t=>ln(Ve({},"__esModule",{value:!0}),t);var hn=(t,e,n)=>Ci(t,typeof e!="symbol"?e+"":e,n);var Cn=A((Oa,En)=>{var Ne=1e3,Ie=Ne*60,ke=Ie*60,me=ke*24,Ni=me*7,Ii=me*365.25;En.exports=function(t,e){e=e||{};var n=tyM
peof t;if(n==="string"&&t.length>0)return ki(t);if(n==="number"&&isFinite(t))return e.long?Pi(t):Oi(t);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(t))};function ki(t){if(t=String(t),!(t.length>100)){var e=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(t);if(e){var n=parseFloat(e[1]),r=(e[2]||"ms").toLowerCase();switch(r){case"years":case"year":case"yrs":case"yr":case"y":return n*Ii;casM
e"weeks":case"week":case"w":return n*Ni;case"days":case"day":case"d":return n*me;case"hours":case"hour":case"hrs":case"hr":case"h":return n*ke;case"minutes":case"minute":case"mins":case"min":case"m":return n*Ie;case"seconds":case"second":case"secs":case"sec":case"s":return n*Ne;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function Oi(t){var e=Math.abs(t);return e>=me?Math.round(t/me)+"d":e>=ke?Math.round(t/ke)+"h":e>=Ie?Math.round(t/Ie)+"m":e>=Ne?Math.round(t/Ne)+"M
s":t+"ms"}function Pi(t){var e=Math.abs(t);return e>=me?lt(t,e,me,"day"):e>=ke?lt(t,e,ke,"hour"):e>=Ie?lt(t,e,Ie,"minute"):e>=Ne?lt(t,e,Ne,"second"):t+" ms"}function lt(t,e,n,r){var i=e>=n*1.5;return Math.round(t/n)+" "+r+(i?"s":"")}});var Rn=A((Pa,Tn)=>{function Fi(t){n.debug=n,n.default=n,n.coerce=f,n.disable=o,n.enable=i,n.enabled=a,n.humanize=Cn(),n.destroy=d,Object.keys(t).forEach(c=>{n[c]=t[c]}),n.names=[],n.skips=[],n.formatters={};function e(c){let h=0;for(let p=0;p<c.length;p++)h=(h<<5)-h+c.charCodeAt(p),hM
|=0;return n.colors[Math.abs(h)%n.colors.length]}n.selectColor=e;function n(c){let h,p=null,m,P;function R(...v){if(!R.enabled)return;let q=R,K=Number(new Date),Re=K-(h||K);q.diff=Re,q.prev=h,q.curr=K,h=K,v[0]=n.coerce(v[0]),typeof v[0]!="string"&&v.unshift("%O");let $=0;v[0]=v[0].replace(/%([a-zA-Z%])/g,(J,_e)=>{if(J==="%%")return"%";$++;let ge=n.formatters[_e];if(typeof ge=="function"){let Ae=v[$];J=ge.call(q,Ae),v.splice($,1),$--}return J}),n.formatArgs.call(q,v),(q.log||n.log).apply(q,v)}return R.namespace=c,R.M
useColors=n.useColors(),R.color=n.selectColor(c),R.extend=r,R.destroy=n.destroy,Object.defineProperty(R,"enabled",{enumerable:!0,configurable:!1,get:()=>p!==null?p:(m!==n.namespaces&&(m=n.namespaces,P=n.enabled(c)),P),set:v=>{p=v}}),typeof n.init=="function"&&n.init(R),R}function r(c,h){let p=n(this.namespace+(typeof h>"u"?":":h)+c);return p.log=this.log,p}function i(c){n.save(c),n.namespaces=c,n.names=[],n.skips=[];let h=(typeof c=="string"?c:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let p of hM
)p[0]==="-"?n.skips.push(p.slice(1)):n.names.push(p)}function s(c,h){let p=0,m=0,P=-1,R=0;for(;p<c.length;)if(m<h.length&&(h[m]===c[p]||h[m]==="*"))h[m]==="*"?(P=m,R=p,m++):(p++,m++);else if(P!==-1)m=P+1,R++,p=R;else return!1;for(;m<h.length&&h[m]==="*";)m++;return m===h.length}function o(){let c=[...n.names,...n.skips.map(h=>"-"+h)].join(",");return n.enable(""),c}function a(c){for(let h of n.skips)if(s(c,h))return!1;for(let h of n.names)if(s(c,h))return!0;return!1}function f(c){return c instanceof Error?c.stack||M
c.message:c}function d(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return n.enable(n.load()),n}Tn.exports=Fi});var An=A((U,ht)=>{U.formatArgs=Mi;U.save=Bi;U.load=Wi;U.useColors=Ui;U.storage=qi();U.destroy=(()=>{let t=!1;return()=>{t||(t=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();U.colors=["#0000M
CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC66M
00","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function Ui(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let t;return typeof document<"u"&&document.docM
umentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(t=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(t[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function Mi(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %M
c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+ht.exports.humanize(this.diff),!this.useColors)return;let e="color: "+this.color;t.splice(1,0,e,"color: inherit");let n=0,r=0;t[0].replace(/%[a-zA-Z%]/g,i=>{i!=="%%"&&(n++,i==="%c"&&(r=n))}),t.splice(r,0,e)}U.log=console.debug||console.log||(()=>{});function Bi(t){try{t?U.storage.setItem("debug",t):U.storage.removeItem("debug")}catch{}}function Wi(){let t;try{t=U.storage.getItem("debug")||U.storage.getItem("DEBUG")}catch{}return!t&&typeof process<"u"&&"env"in process&&(t=M
process.env.DEBUG),t}function qi(){try{return localStorage}catch{}}ht.exports=Rn()(U);var{formatters:ji}=ht.exports;ji.j=function(t){try{return JSON.stringify(t)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}});var Wn=A((Qa,kt)=>{"use strict";var Oe=typeof Reflect=="object"?Reflect:null,Dn=Oe&&typeof Oe.apply=="function"?Oe.apply:function(e,n,r){return Function.prototype.apply.call(e,n,r)},dt;Oe&&typeof Oe.ownKeys=="function"?dt=Oe.ownKeys:Object.getOwnPropertySymbols?dt=function(e){return Object.getOwnPM
ropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:dt=function(e){return Object.getOwnPropertyNames(e)};function Vi(t){console&&console.warn&&console.warn(t)}var In=Number.isNaN||function(e){return e!==e};function x(){x.init.call(this)}kt.exports=x;kt.exports.once=$i;x.EventEmitter=x;x.prototype._events=void 0;x.prototype._eventsCount=0;x.prototype._maxListeners=void 0;var Nn=10;function ft(t){if(typeof t!="function")throw new TypeError('The "listener" argument must be of type Function. Received type '+typeofM
t)}Object.defineProperty(x,"defaultMaxListeners",{enumerable:!0,get:function(){return Nn},set:function(t){if(typeof t!="number"||t<0||In(t))throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received '+t+".");Nn=t}});x.init=function(){(this._events===void 0||this._events===Object.getPrototypeOf(this)._events)&&(this._events=Object.create(null),this._eventsCount=0),this._maxListeners=this._maxListeners||void 0};x.prototype.setMaxListeners=function(e){if(typeoM
f e!="number"||e<0||In(e))throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received '+e+".");return this._maxListeners=e,this};function kn(t){return t._maxListeners===void 0?x.defaultMaxListeners:t._maxListeners}x.prototype.getMaxListeners=function(){return kn(this)};x.prototype.emit=function(e){for(var n=[],r=1;r<arguments.length;r++)n.push(arguments[r]);var i=e==="error",s=this._events;if(s!==void 0)i=i&&s.error===void 0;else if(!i)return!1;if(i){var o;if(n.length>0&&(o=n[M
0]),o instanceof Error)throw o;var a=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw a.context=o,a}var f=s[e];if(f===void 0)return!1;if(typeof f=="function")Dn(f,this,n);else for(var d=f.length,c=Mn(f,d),r=0;r<d;++r)Dn(c[r],this,n);return!0};function On(t,e,n,r){var i,s,o;if(ft(n),s=t._events,s===void 0?(s=t._events=Object.create(null),t._eventsCount=0):(s.newListener!==void 0&&(t.emit("newListener",e,n.listener?n.listener:n),s=t._events),o=s[e]),o===void 0)o=s[e]=n,++t._eventsCount;else if(typeof o==M
"function"?o=s[e]=r?[n,o]:[o,n]:r?o.unshift(n):o.push(n),i=kn(t),i>0&&o.length>i&&!o.warned){o.warned=!0;var a=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+String(e)+" listeners added. Use emitter.setMaxListeners() to increase limit");a.name="MaxListenersExceededWarning",a.emitter=t,a.type=e,a.count=o.length,Vi(a)}return t}x.prototype.addListener=function(e,n){return On(this,e,n,!1)};x.prototype.on=x.prototype.addListener;x.prototype.prependListener=function(e,n){return On(this,e,n,!0)};funM
ction Gi(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,arguments.length===0?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function Pn(t,e,n){var r={fired:!1,wrapFn:void 0,target:t,type:e,listener:n},i=Gi.bind(r);return i.listener=n,r.wrapFn=i,i}x.prototype.once=function(e,n){return ft(n),this.on(e,Pn(this,e,n)),this};x.prototype.prependOnceListener=function(e,n){return ft(n),this.prependListener(e,Pn(this,e,n)),this};x.prototype.removeListener=fM
unction(e,n){var r,i,s,o,a;if(ft(n),i=this._events,i===void 0)return this;if(r=i[e],r===void 0)return this;if(r===n||r.listener===n)--this._eventsCount===0?this._events=Object.create(null):(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||n));else if(typeof r!="function"){for(s=-1,o=r.length-1;o>=0;o--)if(r[o]===n||r[o].listener===n){a=r[o].listener,s=o;break}if(s<0)return this;s===0?r.shift():Yi(r,s),r.length===1&&(i[e]=r[0]),i.removeListener!==void 0&&this.emit("removeListener",e,a||n)}returM
n this};x.prototype.off=x.prototype.removeListener;x.prototype.removeAllListeners=function(e){var n,r,i;if(r=this._events,r===void 0)return this;if(r.removeListener===void 0)return arguments.length===0?(this._events=Object.create(null),this._eventsCount=0):r[e]!==void 0&&(--this._eventsCount===0?this._events=Object.create(null):delete r[e]),this;if(arguments.length===0){var s=Object.keys(r),o;for(i=0;i<s.length;++i)o=s[i],o!=="removeListener"&&this.removeAllListeners(o);return this.removeAllListeners("removeListeneM
r"),this._events=Object.create(null),this._eventsCount=0,this}if(n=r[e],typeof n=="function")this.removeListener(e,n);else if(n!==void 0)for(i=n.length-1;i>=0;i--)this.removeListener(e,n[i]);return this};function Fn(t,e,n){var r=t._events;if(r===void 0)return[];var i=r[e];return i===void 0?[]:typeof i=="function"?n?[i.listener||i]:[i]:n?Ki(i):Mn(i,i.length)}x.prototype.listeners=function(e){return Fn(this,e,!0)};x.prototype.rawListeners=function(e){return Fn(this,e,!1)};x.listenerCount=function(t,e){return typeof tM
.listenerCount=="function"?t.listenerCount(e):Un.call(t,e)};x.prototype.listenerCount=Un;function Un(t){var e=this._events;if(e!==void 0){var n=e[t];if(typeof n=="function")return 1;if(n!==void 0)return n.length}return 0}x.prototype.eventNames=function(){return this._eventsCount>0?dt(this._events):[]};function Mn(t,e){for(var n=new Array(e),r=0;r<e;++r)n[r]=t[r];return n}function Yi(t,e){for(;e+1<t.length;e++)t[e]=t[e+1];t.pop()}function Ki(t){for(var e=new Array(t.length),n=0;n<e.length;++n)e[n]=t[n].listener||t[nM
];return e}function $i(t,e){return new Promise(function(n,r){function i(o){t.removeListener(e,s),r(o)}function s(){typeof t.removeListener=="function"&&t.removeListener("error",i),n([].slice.call(arguments))}Bn(t,e,s,{once:!0}),e!=="error"&&Ji(t,i,{once:!0})})}function Ji(t,e,n){typeof t.on=="function"&&Bn(t,"error",e,n)}function Bn(t,e,n,r){if(typeof t.on=="function")r.once?t.once(e,n):t.on(e,n);else if(typeof t.addEventListener=="function")t.addEventListener(e,function i(s){r.once&&t.removeEventListener(e,i),n(s)M
});else throw new TypeError('The "emitter" argument must be of type EventEmitter. Received type '+typeof t)}});var jn=A((Za,qn)=>{qn.exports=Wn()});var Vn=A((tc,Hn)=>{Hn.exports=class{constructor(e){if(!(e>0)||(e-1&e)!==0)throw new Error("Max size for a FixedFIFO should be a power of two");this.buffer=new Array(e),this.mask=e-1,this.top=0,this.btm=0,this.next=null}clear(){this.top=this.btm=0,this.next=null,this.buffer.fill(void 0)}push(e){return this.buffer[this.top]!==void 0?!1:(this.buffer[this.top]=e,this.top=thM
is.top+1&this.mask,!0)}shift(){let e=this.buffer[this.btm];if(e!==void 0)return this.buffer[this.btm]=void 0,this.btm=this.btm+1&this.mask,e}peek(){return this.buffer[this.btm]}isEmpty(){return this.buffer[this.btm]===void 0}}});var Kn=A((rc,Yn)=>{var Gn=Vn();Yn.exports=class{constructor(e){this.hwm=e||16,this.head=new Gn(this.hwm),this.tail=this.head,this.length=0}clear(){this.head=this.tail,this.head.clear(),this.length=0}push(e){if(this.length++,!this.head.push(e)){let n=this.head;this.head=n.next=new Gn(2*this.M
head.buffer.length),this.head.push(e)}}shift(){this.length!==0&&this.length--;let e=this.tail.shift();if(e===void 0&&this.tail.next){let n=this.tail.next;return this.tail.next=null,this.tail=n,this.tail.shift()}return e}peek(){let e=this.tail.peek();return e===void 0&&this.tail.next?this.tail.next.peek():e}isEmpty(){return this.length===0}}});var Jn=A((ic,$n)=>{function zi(t){return t.length}function Xi(t){let e=t.byteLength,n="";for(let r=0;r<e;r++)n+=String.fromCharCode(t[r]&127);return n}function Qi(t,e){let n=tM
.byteLength;for(let r=0;r<n;r++)t[r]=e.charCodeAt(r);return n}$n.exports={byteLength:zi,toString:Xi,write:Qi}});var Xn=A((sc,zn)=>{var Pe="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",we=new Uint8Array(256);for(let t=0;t<Pe.length;t++)we[Pe.charCodeAt(t)]=t;we[45]=62;we[95]=63;function Zi(t){let e=t.length;return t.charCodeAt(e-1)===61&&e--,e>1&&t.charCodeAt(e-1)===61&&e--,e*3>>>2}function es(t){let e=t.byteLength,n="";for(let r=0;r<e;r+=3)n+=Pe[t[r]>>2]+Pe[(t[r]&3)<<4|t[r+1]>>4]+Pe[(t[r+1]&15)M
<<2|t[r+2]>>6]+Pe[t[r+2]&63];return e%3===2?n=n.substring(0,n.length-1)+"=":e%3===1&&(n=n.substring(0,n.length-2)+"=="),n}function ts(t,e){let n=t.byteLength;for(let r=0,i=0;i<n;r+=4){let s=we[e.charCodeAt(r)],o=we[e.charCodeAt(r+1)],a=we[e.charCodeAt(r+2)],f=we[e.charCodeAt(r+3)];t[i++]=s<<2|o>>4,t[i++]=(o&15)<<4|a>>2,t[i++]=(a&3)<<6|f&63}return n}zn.exports={byteLength:Zi,toString:es,write:ts}});var er=A((oc,Zn)=>{function ns(t){return t.length>>>1}function rs(t){let e=t.byteLength;t=new DataView(t.buffer,t.byteOM
ffset,e);let n="",r=0;for(let i=e-e%4;r<i;r+=4)n+=t.getUint32(r).toString(16).padStart(8,"0");for(;r<e;r++)n+=t.getUint8(r).toString(16).padStart(2,"0");return n}function is(t,e){let n=t.byteLength;for(let r=0;r<n;r++){let i=Qn(e.charCodeAt(r*2)),s=Qn(e.charCodeAt(r*2+1));if(i===void 0||s===void 0)return t.subarray(0,r);t[r]=i<<4|s}return n}Zn.exports={byteLength:ns,toString:rs,write:is};function Qn(t){if(t>=48&&t<=57)return t-48;if(t>=65&&t<=70)return t-65+10;if(t>=97&&t<=102)return t-97+10}});var nr=A((ac,tr)=>{fM
unction ss(t){return t.length}function os(t){let e=t.byteLength,n="";for(let r=0;r<e;r++)n+=String.fromCharCode(t[r]);return n}function as(t,e){let n=t.byteLength;for(let r=0;r<n;r++)t[r]=e.charCodeAt(r);return n}tr.exports={byteLength:ss,toString:os,write:as}});var ir=A((cc,rr)=>{function cs(t){let e=0;for(let n=0,r=t.length;n<r;n++){let i=t.charCodeAt(n);if(i>=55296&&i<=56319&&n+1<r){let s=t.charCodeAt(n+1);if(s>=56320&&s<=57343){e+=4,n++;continue}}i<=127?e+=1:i<=2047?e+=2:e+=3}return e}var Ot;if(typeof TextDecodM
er<"u"){let t=new TextDecoder;Ot=function(n){return t.decode(n)}}else Ot=function(e){let n=e.byteLength,r="",i=0;for(;i<n;){let s=e[i];if(s<=127){r+=String.fromCharCode(s),i++;continue}let o=0,a=0;if(s<=223?(o=1,a=s&31):s<=239?(o=2,a=s&15):s<=244&&(o=3,a=s&7),n-i-o>0){let f=0;for(;f<o;)s=e[i+f+1],a=a<<6|s&63,f+=1}else a=65533,o=n-i;r+=String.fromCodePoint(a),i+=o+1}return r};var Pt;if(typeof TextEncoder<"u"){let t=new TextEncoder;Pt=function(n,r){return t.encodeInto(r,n).written}}else Pt=function(e,n){let r=e.byteLM
ength,i=0,s=0;for(;i<n.length;){let o=n.codePointAt(i);if(o<=127){e[s++]=o,i++;continue}let a=0,f=0;for(o<=2047?(a=6,f=192):o<=65535?(a=12,f=224):o<=2097151&&(a=18,f=240),e[s++]=f|o>>a,a-=6;a>=0;)e[s++]=128|o>>a&63,a-=6;i+=o>=65536?2:1}return r};rr.exports={byteLength:cs,toString:Ot,write:Pt}});var or=A((lc,sr)=>{function ls(t){return t.length*2}function hs(t){let e=t.byteLength,n="";for(let r=0;r<e-1;r+=2)n+=String.fromCharCode(t[r]+t[r+1]*256);return n}function us(t,e){let n=t.byteLength,r=n;for(let i=0;i<e.lengtM
h&&!((r-=2)<0);++i){let s=e.charCodeAt(i),o=s>>8,a=s%256;t[i*2]=a,t[i*2+1]=o}return n}sr.exports={byteLength:ls,toString:hs,write:us}});var Ut=A((Ke,dr)=>{var ds=Jn(),fs=Xn(),ps=er(),_s=nr(),Ft=ir(),gs=or(),ar=new Uint8Array(Uint16Array.of(255).buffer)[0]===255;function Fe(t){switch(t){case"ascii":return ds;case"base64":return fs;case"hex":return ps;case"binary":case"latin1":return _s;case"utf8":case"utf-8":case void 0:case null:return Ft;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return gs;default:throw nM
ew Error(`Unknown encoding '${t}'`)}}function ys(t){return t instanceof Uint8Array}function ms(t){try{return Fe(t),!0}catch{return!1}}function ws(t,e,n){let r=new Uint8Array(t);return e!==void 0&&Ke.fill(r,e,0,r.byteLength,n),r}function bs(t){return new Uint8Array(t)}function xs(t){return new Uint8Array(t)}function Ss(t,e){return Fe(e).byteLength(t)}function cr(t,e){if(t===e)return 0;let n=Math.min(t.byteLength,e.byteLength);t=new DataView(t.buffer,t.byteOffset,t.byteLength),e=new DataView(e.buffer,e.byteOffset,e.bM
yteLength);let r=0;for(let i=n-n%4;r<i;r+=4){let s=t.getUint32(r,ar),o=e.getUint32(r,ar);if(s!==o)break}for(;r<n;r++){let i=t.getUint8(r),s=e.getUint8(r);if(i<s)return-1;if(i>s)return 1}return t.byteLength>e.byteLength?1:t.byteLength<e.byteLength?-1:0}function Es(t,e){e===void 0&&(e=t.reduce((i,s)=>i+s.byteLength,0));let n=new Uint8Array(e),r=0;for(let i of t){if(r+i.byteLength>n.byteLength)return n.set(i.subarray(0,n.byteLength-r),r),n;n.set(i,r),r+=i.byteLength}return n}function Cs(t,e,n=0,r=0,i=t.byteLength){if(M
n<0&&(n=0),n>=e.byteLength)return 0;let s=e.byteLength-n;if(r<0&&(r=0),r>=t.byteLength||i<=r)return 0;i>t.byteLength&&(i=t.byteLength),i-r>s&&(i=r+s);let o=i-r;return t===e?e.copyWithin(n,r,i):((r!==0||i!==t.byteLength)&&(t=t.subarray(r,i)),e.set(t,n)),o}function Ts(t,e){return t===e?!0:t.byteLength!==e.byteLength?!1:cr(t,e)===0}function Rs(t,e,n=0,r=t.byteLength,i="utf8"){if(typeof e=="string"?typeof n=="string"?(i=n,n=0,r=t.byteLength):typeof r=="string"&&(i=r,r=t.byteLength):typeof e=="number"?e=e&255:typeof e==M
"boolean"&&(e=+e),n<0&&(n=0),n>=t.byteLength||r<=n)return t;if(r>t.byteLength&&(r=t.byteLength),typeof e=="number")return t.fill(e,n,r);typeof e=="string"&&(e=Ke.from(e,i));let s=e.byteLength;for(let o=0,a=r-n;o<a;++o)t[o+n]=e[o%s];return t}function lr(t,e,n){return typeof t=="string"?As(t,e):Array.isArray(t)?vs(t):ArrayBuffer.isView(t)?Ls(t):Ds(t,e,n)}function As(t,e){let n=Fe(e),r=new Uint8Array(n.byteLength(t));return n.write(r,t),r}function vs(t){let e=new Uint8Array(t.length);return e.set(t),e}function Ls(t){lM
et e=new Uint8Array(t.byteLength);return e.set(t),e}function Ds(t,e,n){return new Uint8Array(t,e,n)}function Ns(t,e,n,r){return hr(t,e,n,r)!==-1}function hr(t,e,n,r){return ur(t,e,n,r,!0)}function Is(t,e,n,r){return ur(t,e,n,r,!1)}function ur(t,e,n,r,i){if(t.byteLength===0)return-1;if(typeof n=="string"?(r=n,n=0):n===void 0?n=i?0:t.length-1:n<0&&(n+=t.byteLength),n>=t.byteLength){if(i)return-1;n=t.byteLength-1}else if(n<0)if(i)n=0;else return-1;if(typeof e=="string")e=lr(e,r);else if(typeof e=="number")return e=e&2M
55,i?t.indexOf(e,n):t.lastIndexOf(e,n);if(e.byteLength===0)return-1;if(i){let s=-1;for(let o=n;o<t.byteLength;o++)if(t[o]===e[s===-1?0:o-s]){if(s===-1&&(s=o),o-s+1===e.byteLength)return s}else s!==-1&&(o-=o-s),s=-1}else{n+e.byteLength>t.byteLength&&(n=t.byteLength-e.byteLength);for(let s=n;s>=0;s--){let o=!0;for(let a=0;a<e.byteLength;a++)if(t[s+a]!==e[a]){o=!1;break}if(o)return s}}return-1}function be(t,e,n){let r=t[e];t[e]=t[n],t[n]=r}function ks(t){let e=t.byteLength;if(e%2!==0)throw new RangeError("Buffer size M
must be a multiple of 16-bits");for(let n=0;n<e;n+=2)be(t,n,n+1);return t}function Os(t){let e=t.byteLength;if(e%4!==0)throw new RangeError("Buffer size must be a multiple of 32-bits");for(let n=0;n<e;n+=4)be(t,n,n+3),be(t,n+1,n+2);return t}function Ps(t){let e=t.byteLength;if(e%8!==0)throw new RangeError("Buffer size must be a multiple of 64-bits");for(let n=0;n<e;n+=8)be(t,n,n+7),be(t,n+1,n+6),be(t,n+2,n+5),be(t,n+3,n+4);return t}function Fs(t){return t}function Us(t,e="utf8",n=0,r=t.byteLength){return arguments.M
length===1?Ft.toString(t):arguments.length===2?Fe(e).toString(t):(n<0&&(n=0),n>=t.byteLength||r<=n?"":(r>t.byteLength&&(r=t.byteLength),(n!==0||r!==t.byteLength)&&(t=t.subarray(n,r)),Fe(e).toString(t)))}function Ms(t,e,n,r,i){if(arguments.length===2)return Ft.write(t,e);typeof n=="string"?(i=n,n=0,r=t.byteLength):typeof r=="string"&&(i=r,r=t.byteLength-n),r=Math.min(r,Ke.byteLength(e,i));let s=n;if(s<0&&(s=0),s>=t.byteLength)return 0;let o=n+r;return o<=s?0:(o>t.byteLength&&(o=t.byteLength),(s!==0||o!==t.byteLengthM
)&&(t=t.subarray(s,o)),Fe(i).write(t,e))}function Bs(t,e=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).getFloat64(e,!1)}function Ws(t,e=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).getFloat64(e,!0)}function qs(t,e=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).getFloat32(e,!1)}function js(t,e=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).getFloat32(e,!0)}function Hs(t,e=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).getInt32(e,!1)}function Vs(t,e=0){reM
turn new DataView(t.buffer,t.byteOffset,t.byteLength).getInt32(e,!0)}function Gs(t,e=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(e,!1)}function Ys(t,e=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).getUint32(e,!0)}function Ks(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).setFloat64(n,e,!1),n+8}function $s(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).setFloat64(n,e,!0),n+8}function Js(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteM
Length).setFloat32(n,e,!1),n+4}function zs(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).setFloat32(n,e,!0),n+4}function Xs(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).setInt32(n,e,!1),n+4}function Qs(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).setInt32(n,e,!0),n+4}function Zs(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).setUint32(n,e,!1),n+4}function eo(t,e,n=0){return new DataView(t.buffer,t.byteOffset,t.byteLength).setUint32(n,e,!0)M
,n+4}dr.exports=Ke={isBuffer:ys,isEncoding:ms,alloc:ws,allocUnsafe:bs,allocUnsafeSlow:xs,byteLength:Ss,compare:cr,concat:Es,copy:Cs,equals:Ts,fill:Rs,from:lr,includes:Ns,indexOf:hr,lastIndexOf:Is,swap16:ks,swap32:Os,swap64:Ps,toBuffer:Fs,toString:Us,write:Ms,readDoubleBE:Bs,readDoubleLE:Ws,readFloatBE:qs,readFloatLE:js,readInt32BE:Hs,readInt32LE:Vs,readUInt32BE:Gs,readUInt32LE:Ys,writeDoubleBE:Ks,writeDoubleLE:$s,writeFloatBE:Js,writeFloatLE:zs,writeInt32BE:Xs,writeInt32LE:Qs,writeUInt32BE:Zs,writeUInt32LE:eo}});vaM
r pr=A((uc,fr)=>{var to=Ut();fr.exports=class{constructor(e){this.encoding=e}get remaining(){return 0}decode(e){return to.toString(e,this.encoding)}flush(){return""}}});var mr=A((fc,yr)=>{var _r=Ut();yr.exports=class{constructor(){this._reset()}get remaining(){return this.bytesSeen}decode(e){if(e.byteLength===0)return"";if(this.bytesNeeded===0&&gr(e,0)===0)return this.bytesSeen=no(e),_r.toString(e,"utf8");let n="",r=0;if(this.bytesNeeded>0){for(;r<e.byteLength;){let o=e[r];if(o<this.lowerBoundary||o>this.upperBoundM
ary){n+="\uFFFD",this._reset();break}if(this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|o&63,this.bytesSeen++,r++,this.bytesSeen===this.bytesNeeded){n+=String.fromCodePoint(this.codePoint),this._reset();break}}if(this.bytesNeeded>0)return n}let i=gr(e,r),s=e.byteLength-i;s>r&&(n+=_r.toString(e,"utf8",r,s));for(let o=s;o<e.byteLength;o++){let a=e[o];if(this.bytesNeeded===0){a<=127?(this.bytesSeen=0,n+=String.fromCharCode(a)):a>=194&&a<=223?(this.bytesNeeded=2,this.bytesSeen=1,this.codeM
Point=a&31):a>=224&&a<=239?(a===224?this.lowerBoundary=160:a===237&&(this.upperBoundary=159),this.bytesNeeded=3,this.bytesSeen=1,this.codePoint=a&15):a>=240&&a<=244?(a===240?this.lowerBoundary=144:a===244&&(this.upperBoundary=143),this.bytesNeeded=4,this.bytesSeen=1,this.codePoint=a&7):(this.bytesSeen=1,n+="\uFFFD");continue}if(a<this.lowerBoundary||a>this.upperBoundary){n+="\uFFFD",o--,this._reset();continue}this.lowerBoundary=128,this.upperBoundary=191,this.codePoint=this.codePoint<<6|a&63,this.bytesSeen++,this.bM
ytesSeen===this.bytesNeeded&&(n+=String.fromCodePoint(this.codePoint),this._reset())}return n}flush(){let e=this.bytesNeeded>0?"\uFFFD":"";return this._reset(),e}_reset(){this.codePoint=0,this.bytesNeeded=0,this.bytesSeen=0,this.lowerBoundary=128,this.upperBoundary=191}};function gr(t,e){let n=t.byteLength;if(n<=e)return 0;let r=Math.max(e,n-4),i=n-1;for(;i>r&&(t[i]&192)===128;)i--;if(i<e)return 0;let s=t[i],o;if(s<=127)return 0;if(s>=194&&s<=223)o=2;else if(s>=224&&s<=239)o=3;else if(s>=240&&s<=244)o=4;else returnM
0;let a=n-i;return a<o?a:0}function no(t){let e=t.byteLength;if(e===0)return 0;let n=t[e-1];if(n<=127)return 0;if((n&192)!==128)return 1;let r=Math.max(0,e-4),i=e-2;for(;i>=r&&(t[i]&192)===128;)i--;if(i<0)return 1;let s=t[i],o;if(s>=194&&s<=223)o=2;else if(s>=224&&s<=239)o=3;else if(s>=240&&s<=244)o=4;else return 1;if(e-i!==o)return 1;if(o>=3){let a=t[i+1];if(s===224&&a<160||s===237&&a>159||s===240&&a<144||s===244&&a>143)return 1}return 0}});var br=A((_c,wr)=>{var ro=pr(),io=mr();wr.exports=class{constructor(e="utM
f8"){switch(this.encoding=so(e),this.encoding){case"utf8":this.decoder=new io;break;case"utf16le":case"base64":throw new Error("Unsupported encoding: "+this.encoding);default:this.decoder=new ro(this.encoding)}}get remaining(){return this.decoder.remaining}push(e){return typeof e=="string"?e:this.decoder.decode(e)}write(e){return this.push(e)}end(e){let n="";return e&&(n=this.push(e)),n+=this.decoder.flush(),n}};function so(t){switch(t=t.toLowerCase(),t){case"utf8":case"utf-8":return"utf8";case"ucs2":case"ucs-2":caM
se"utf16le":case"utf-16le":return"utf16le";case"latin1":case"binary":return"latin1";case"base64":case"ascii":case"hex":return t;default:throw new Error("Unknown encoding: "+t)}}});var Vr=A((gc,Hr)=>{var{EventEmitter:oo}=jn(),wt=new Error("Stream was destroyed"),Mt=new Error("Premature close"),Rr=Kn(),ao=br(),Bt=typeof queueMicrotask>"u"?t=>global.process.nextTick(t):queueMicrotask,C=(1<<29)-1,G=1,Yt=2,te=4,$e=8,Ar=C^G,co=C^Yt,Ze=16,Ue=32,We=64,ue=128,et=256,Kt=512,de=1024,Wt=2048,$t=4096,Jt=8192,V=16384,he=32768,btM
=65536,xe=131072,vr=et|Kt,lo=Ze|bt,ho=We|Ze,uo=$t|ue,zt=et|xe,fo=C^Ze,po=C^We,_o=C^(We|bt),xr=C^bt,go=C^et,yo=C^(ue|Jt),mo=C^de,Sr=C^vr,Lr=C^he,wo=C^Ue,Dr=C^xe,bo=C^zt,ne=1<<18,Be=2<<18,tt=4<<18,Se=8<<18,nt=16<<18,pe=32<<18,qt=64<<18,Me=128<<18,Xt=256<<18,fe=512<<18,xt=1024<<18,xo=C^(ne|Xt),Nr=C^tt,So=C^(ne|fe),Eo=C^nt,Co=C^Se,Ir=C^Me,To=C^Be,kr=C^xt,Je=Ze|ne,Or=C^Je,Qt=V|pe,Y=te|$e|Yt,B=Y|G,Pr=Y|Qt,Ro=Nr&po,St=Me|he,Ao=St&Or,Fr=B|Ao,vo=B|de|V,Er=B|V|ue,Lo=B|de|ue,Do=B|$t|ue|Jt,No=B|Ze|de|V|bt|xe,Io=Y|de|V,ko=Ue|B|M
he|We,Oo=he|G,Po=B|fe|pe,Fo=Se|nt,Ur=Se|ne,Uo=Se|nt|B|ne,Cr=B|ne|Se|xt,Mo=tt|ne,Bo=ne|Xt,Wo=B|fe|Ur|pe,qo=nt|Y|fe|pe,jo=Be|B|Me|tt,Ho=fe|pe|Y,pt=Symbol.asyncIterator||Symbol("asyncIterator"),_t=class{constructor(e,{highWaterMark:n=16384,map:r=null,mapWritable:i,byteLength:s,byteLengthWritable:o}={}){this.stream=e,this.queue=new Rr,this.highWaterMark=n,this.buffered=0,this.error=null,this.pipeline=null,this.drains=null,this.byteLength=o||s||jr,this.map=i||r,this.afterWrite=Yo.bind(this),this.afterUpdateNextTick=Jo.bM
ind(this)}get ending(){return(this.stream._duplexState&fe)!==0}get ended(){return(this.stream._duplexState&pe)!==0}push(e){return(this.stream._duplexState&Ho)!==0?!1:(this.map!==null&&(e=this.map(e)),this.buffered+=this.byteLength(e),this.queue.push(e),this.buffered<this.highWaterMark?(this.stream._duplexState|=Se,!0):(this.stream._duplexState|=Fo,!1))}shift(){let e=this.queue.shift();return this.buffered-=this.byteLength(e),this.buffered===0&&(this.stream._duplexState&=Co),e}end(e){typeof e=="function"?this.streamM
.once("finish",e):e!=null&&this.push(e),this.stream._duplexState=(this.stream._duplexState|fe)&Nr}autoBatch(e,n){let r=[],i=this.stream;for(r.push(e);(i._duplexState&Cr)===Ur;)r.push(i._writableState.shift());if((i._duplexState&B)!==0)return n(null);i._writev(r,n)}update(){let e=this.stream;e._duplexState|=Be;do{for(;(e._duplexState&Cr)===Se;){let n=this.shift();e._duplexState|=Bo,e._write(n,this.afterWrite)}(e._duplexState&Mo)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);e._duplexState&=To}updateM
NonPrimary(){let e=this.stream;if((e._duplexState&Wo)===fe){e._duplexState=e._duplexState|ne,e._final(Go.bind(this));return}if((e._duplexState&Y)===te){(e._duplexState&St)===0&&(e._duplexState|=Je,e._destroy(Mr.bind(this)));return}(e._duplexState&Fr)===G&&(e._duplexState=(e._duplexState|Je)&Ar,e._open(Br.bind(this)))}continueUpdate(){return(this.stream._duplexState&Me)===0?!1:(this.stream._duplexState&=Ir,!0)}updateCallback(){(this.stream._duplexState&jo)===tt?this.update():this.updateNextTick()}updateNextTick(){(tM
his.stream._duplexState&Me)===0&&(this.stream._duplexState|=Me,(this.stream._duplexState&Be)===0&&Bt(this.afterUpdateNextTick))}},jt=class{constructor(e,{highWaterMark:n=16384,map:r=null,mapReadable:i,byteLength:s,byteLengthReadable:o}={}){this.stream=e,this.queue=new Rr,this.highWaterMark=n===0?1:n,this.buffered=0,this.readAhead=n>0,this.error=null,this.pipeline=null,this.byteLength=o||s||jr,this.map=i||r,this.pipeTo=null,this.afterRead=Ko.bind(this),this.afterUpdateNextTick=$o.bind(this)}get ending(){return(this.M
stream._duplexState&de)!==0}get ended(){return(this.stream._duplexState&V)!==0}pipe(e,n){if(this.pipeTo!==null)throw new Error("Can only pipe to one destination");if(typeof n!="function"&&(n=null),this.stream._duplexState|=Kt,this.pipeTo=e,this.pipeline=new Vt(this.stream,e,n),n&&this.stream.on("error",Tr),Qe(e))e._writableState.pipeline=this.pipeline,n&&e.on("error",Tr),e.on("finish",this.pipeline.finished.bind(this.pipeline));else{let r=this.pipeline.done.bind(this.pipeline,e),i=this.pipeline.done.bind(this.pipelM
ine,e,null);e.on("error",r),e.on("close",i),e.on("finish",this.pipeline.finished.bind(this.pipeline))}e.on("drain",Vo.bind(this)),this.stream.emit("piping",e),e.emit("pipe",this.stream)}push(e){let n=this.stream;return e===null?(this.highWaterMark=0,n._duplexState=(n._duplexState|de)&_o,!1):this.map!==null&&(e=this.map(e),e===null)?(n._duplexState&=xr,this.buffered<this.highWaterMark):(this.buffered+=this.byteLength(e),this.queue.push(e),n._duplexState=(n._duplexState|ue)&xr,this.buffered<this.highWaterMark)}shift(M
){let e=this.queue.shift();return this.buffered-=this.byteLength(e),this.buffered===0&&(this.stream._duplexState&=yo),e}unshift(e){let n=[this.map!==null?this.map(e):e];for(;this.buffered>0;)n.push(this.shift());for(let r=0;r<n.length-1;r++){let i=n[r];this.buffered+=this.byteLength(i),this.queue.push(i)}this.push(n[n.length-1])}read(){let e=this.stream;if((e._duplexState&Er)===ue){let n=this.shift();return this.pipeTo!==null&&this.pipeTo.write(n)===!1&&(e._duplexState&=Sr),(e._duplexState&Wt)!==0&&e.emit("data",n)M
,n}return this.readAhead===!1&&(e._duplexState|=xe,this.updateNextTick()),null}drain(){let e=this.stream;for(;(e._duplexState&Er)===ue&&(e._duplexState&vr)!==0;){let n=this.shift();this.pipeTo!==null&&this.pipeTo.write(n)===!1&&(e._duplexState&=Sr),(e._duplexState&Wt)!==0&&e.emit("data",n)}}update(){let e=this.stream;e._duplexState|=Ue;do{for(this.drain();this.buffered<this.highWaterMark&&(e._duplexState&No)===xe;)e._duplexState|=lo,e._read(this.afterRead),this.drain();(e._duplexState&Do)===uo&&(e._duplexState|=Jt,M
e.emit("readable")),(e._duplexState&ho)===0&&this.updateNonPrimary()}while(this.continueUpdate()===!0);e._duplexState&=wo}updateNonPrimary(){let e=this.stream;if((e._duplexState&Lo)===de&&(e._duplexState=(e._duplexState|V)&mo,e.emit("end"),(e._duplexState&Pr)===Qt&&(e._duplexState|=te),this.pipeTo!==null&&this.pipeTo.end()),(e._duplexState&Y)===te){(e._duplexState&St)===0&&(e._duplexState|=Je,e._destroy(Mr.bind(this)));return}(e._duplexState&Fr)===G&&(e._duplexState=(e._duplexState|Je)&Ar,e._open(Br.bind(this)))}coM
ntinueUpdate(){return(this.stream._duplexState&he)===0?!1:(this.stream._duplexState&=Lr,!0)}updateCallback(){(this.stream._duplexState&ko)===We?this.update():this.updateNextTick()}updateNextTickIfOpen(){(this.stream._duplexState&Oo)===0&&(this.stream._duplexState|=he,(this.stream._duplexState&Ue)===0&&Bt(this.afterUpdateNextTick))}updateNextTick(){(this.stream._duplexState&he)===0&&(this.stream._duplexState|=he,(this.stream._duplexState&Ue)===0&&Bt(this.afterUpdateNextTick))}},Ht=class{constructor(e){this.data=nullM
,this.afterTransform=Xo.bind(e),this.afterFinal=null}},Vt=class{constructor(e,n,r){this.from=e,this.to=n,this.afterPipe=r,this.error=null,this.pipeToFinished=!1}finished(){this.pipeToFinished=!0}done(e,n){if(n&&(this.error=n),e===this.to&&(this.to=null,this.from!==null)){((this.from._duplexState&V)===0||!this.pipeToFinished)&&this.from.destroy(this.error||new Error("Writable stream closed prematurely"));return}if(e===this.from&&(this.from=null,this.to!==null)){(e._duplexState&V)===0&&this.to.destroy(this.error||newM
Error("Readable stream closed before ending"));return}this.afterPipe!==null&&this.afterPipe(this.error),this.to=this.from=this.afterPipe=null}};function Vo(){this.stream._duplexState|=Kt,this.updateCallback()}function Go(t){let e=this.stream;t&&e.destroy(t),(e._duplexState&Y)===0&&(e._duplexState|=pe,e.emit("finish")),(e._duplexState&Pr)===Qt&&(e._duplexState|=te),e._duplexState&=So,(e._duplexState&Be)===0?this.update():this.updateNextTick()}function Mr(t){let e=this.stream;!t&&this.error!==wt&&(t=this.error),t&&eM
.emit("error",t),e._duplexState|=$e,e.emit("close");let n=e._readableState,r=e._writableState;if(n!==null&&n.pipeline!==null&&n.pipeline.done(e,t),r!==null){for(;r.drains!==null&&r.drains.length>0;)r.drains.shift().resolve(!1);r.pipeline!==null&&r.pipeline.done(e,t)}}function Yo(t){let e=this.stream;t&&e.destroy(t),e._duplexState&=xo,this.drains!==null&&zo(this.drains),(e._duplexState&Uo)===nt&&(e._duplexState&=Eo,(e._duplexState&qt)===qt&&e.emit("drain")),this.updateCallback()}function Ko(t){t&&this.stream.destroyM
(t),this.stream._duplexState&=fo,this.readAhead===!1&&(this.stream._duplexState&et)===0&&(this.stream._duplexState&=Dr),this.updateCallback()}function $o(){(this.stream._duplexState&Ue)===0&&(this.stream._duplexState&=Lr,this.update())}function Jo(){(this.stream._duplexState&Be)===0&&(this.stream._duplexState&=Ir,this.update())}function zo(t){for(let e=0;e<t.length;e++)--t[e].writes===0&&(t.shift().resolve(!0),e--)}function Br(t){let e=this.stream;t&&e.destroy(t),(e._duplexState&te)===0&&((e._duplexState&vo)===0&&(M
e._duplexState|=We),(e._duplexState&Po)===0&&(e._duplexState|=tt),e.emit("open")),e._duplexState&=Or,e._writableState!==null&&e._writableState.updateCallback(),e._readableState!==null&&e._readableState.updateCallback()}function Xo(t,e){e!=null&&this.push(e),this._writableState.afterWrite(t)}function Qo(t){this._readableState!==null&&(t==="data"&&(this._duplexState|=Wt|zt,this._readableState.updateNextTick()),t==="readable"&&(this._duplexState|=$t,this._readableState.updateNextTick())),this._writableState!==null&&t=M
=="drain"&&(this._duplexState|=qt,this._writableState.updateNextTick())}var ze=class extends oo{constructor(e){super(),this._duplexState=0,this._readableState=null,this._writableState=null,e&&(e.open&&(this._open=e.open),e.destroy&&(this._destroy=e.destroy),e.predestroy&&(this._predestroy=e.predestroy),e.signal&&e.signal.addEventListener("abort",ha.bind(this))),this.on("newListener",Qo)}_open(e){e(null)}_destroy(e){e(null)}_predestroy(){}get readable(){return this._readableState!==null?!0:void 0}get writable(){retuM
rn this._writableState!==null?!0:void 0}get destroyed(){return(this._duplexState&$e)!==0}get destroying(){return(this._duplexState&Y)!==0}destroy(e){(this._duplexState&Y)===0&&(e||(e=wt),this._duplexState=(this._duplexState|te)&Ro,this._readableState!==null&&(this._readableState.highWaterMark=0,this._readableState.error=e),this._writableState!==null&&(this._writableState.highWaterMark=0,this._writableState.error=e),this._duplexState|=Yt,this._predestroy(),this._duplexState&=co,this._readableState!==null&&this._readM
ableState.updateNextTick(),this._writableState!==null&&this._writableState.updateNextTick())}},gt=class t extends ze{constructor(e){super(e),this._duplexState|=G|pe|xe,this._readableState=new jt(this,e),e&&(this._readableState.readAhead===!1&&(this._duplexState&=Dr),e.read&&(this._read=e.read),e.eagerOpen&&this._readableState.updateNextTick(),e.encoding&&this.setEncoding(e.encoding))}setEncoding(e){let n=new ao(e),r=this._readableState.map||ta;return this._readableState.map=i,this;function i(s){let o=n.push(s);retuM
rn o===""&&(s.byteLength!==0||n.remaining>0)?null:r(o)}}_read(e){e(null)}pipe(e,n){return this._readableState.updateNextTick(),this._readableState.pipe(e,n),e}read(){return this._readableState.updateNextTick(),this._readableState.read()}push(e){return this._readableState.updateNextTickIfOpen(),this._readableState.push(e)}unshift(e){return this._readableState.updateNextTickIfOpen(),this._readableState.unshift(e)}resume(){return this._duplexState|=zt,this._readableState.updateNextTick(),this}pause(){return this._duplM
exState&=this._readableState.readAhead===!1?bo:go,this}static _fromAsyncIterator(e,n){let r,i=new t({...n,read(o){e.next().then(s).then(o.bind(null,null)).catch(o)},predestroy(){r=e.return()},destroy(o){if(!r)return o(null);r.then(o.bind(null,null)).catch(o)}});return i;function s(o){o.done?i.push(null):i.push(o.value)}}static from(e,n){if(aa(e))return e;if(e[pt])return this._fromAsyncIterator(e[pt](),n);Array.isArray(e)||(e=e===void 0?[]:[e]);let r=0;return new t({...n,read(i){this.push(r===e.length?null:e[r++]),iM
(null)}})}static isBackpressured(e){return(e._duplexState&Io)!==0||e._readableState.buffered>=e._readableState.highWaterMark}static isPaused(e){return(e._duplexState&et)===0}[pt](){let e=this,n=null,r=null,i=null;return this.on("error",d=>{n=d}),this.on("readable",s),this.on("close",o),{[pt](){return this},next(){return new Promise(function(d,c){r=d,i=c;let h=e.read();h!==null?a(h):(e._duplexState&$e)!==0&&a(null)})},return(){return f(null)},throw(d){return f(d)}};function s(){r!==null&&a(e.read())}function o(){r!=M
=null&&a(null)}function a(d){i!==null&&(n?i(n):d===null&&(e._duplexState&V)===0?i(wt):r({value:d,done:d===null}),i=r=null)}function f(d){return e.destroy(d),new Promise((c,h)=>{if(e._duplexState&$e)return c({value:void 0,done:!0});e.once("close",function(){d?h(d):c({value:void 0,done:!0})})})}}},yt=class extends ze{constructor(e){super(e),this._duplexState|=G|V,this._writableState=new _t(this,e),e&&(e.writev&&(this._writev=e.writev),e.write&&(this._write=e.write),e.final&&(this._final=e.final),e.eagerOpen&&this._wrM
itableState.updateNextTick())}cork(){this._duplexState|=xt}uncork(){this._duplexState&=kr,this._writableState.updateNextTick()}_writev(e,n){n(null)}_write(e,n){this._writableState.autoBatch(e,n)}_final(e){e(null)}static isBackpressured(e){return(e._duplexState&qo)!==0}static drained(e){if(e.destroyed)return Promise.resolve(!1);let n=e._writableState,i=(ua(e)?Math.min(1,n.queue.length):n.queue.length)+(e._duplexState&Xt?1:0);return i===0?Promise.resolve(!0):(n.drains===null&&(n.drains=[]),new Promise(s=>{n.drains.puM
sh({writes:i,resolve:s})}))}write(e){return this._writableState.updateNextTick(),this._writableState.push(e)}end(e){return this._writableState.updateNextTick(),this._writableState.end(e),this}},Xe=class extends gt{constructor(e){super(e),this._duplexState=G|this._duplexState&xe,this._writableState=new _t(this,e),e&&(e.writev&&(this._writev=e.writev),e.write&&(this._write=e.write),e.final&&(this._final=e.final))}cork(){this._duplexState|=xt}uncork(){this._duplexState&=kr,this._writableState.updateNextTick()}_writev(M
e,n){n(null)}_write(e,n){this._writableState.autoBatch(e,n)}_final(e){e(null)}write(e){return this._writableState.updateNextTick(),this._writableState.push(e)}end(e){return this._writableState.updateNextTick(),this._writableState.end(e),this}},mt=class extends Xe{constructor(e){super(e),this._transformState=new Ht(this),e&&(e.transform&&(this._transform=e.transform),e.flush&&(this._flush=e.flush))}_write(e,n){this._readableState.buffered>=this._readableState.highWaterMark?this._transformState.data=e:this._transformM
(e,this._transformState.afterTransform)}_read(e){if(this._transformState.data!==null){let n=this._transformState.data;this._transformState.data=null,e(null),this._transform(n,this._transformState.afterTransform)}else e(null)}destroy(e){super.destroy(e),this._transformState.data!==null&&(this._transformState.data=null,this._transformState.afterTransform())}_transform(e,n){n(null,e)}_flush(e){e(null)}_final(e){this._transformState.afterFinal=e,this._flush(Zo.bind(this))}},Gt=class extends mt{};function Zo(t,e){let n=M
this._transformState.afterFinal;if(t)return n(t);e!=null&&this.push(e),this.push(null),n(null)}function ea(...t){return new Promise((e,n)=>Wr(...t,r=>{if(r)return n(r);e()}))}function Wr(t,...e){let n=Array.isArray(t)?[...t,...e]:[t,...e],r=n.length&&typeof n[n.length-1]=="function"?n.pop():null;if(n.length<2)throw new Error("Pipeline requires at least 2 streams");let i=n[0],s=null,o=null;for(let d=1;d<n.length;d++)s=n[d],Qe(i)?i.pipe(s,f):(a(i,!0,d>1,f),i.pipe(s)),i=s;if(r){let d=!1,c=Qe(s)||!!(s._writableState&&sM
._writableState.autoDestroy);s.on("error",h=>{o===null&&(o=h)}),s.on("finish",()=>{d=!0,c||r(o)}),c&&s.on("close",()=>r(o||(d?null:Mt)))}return s;function a(d,c,h,p){d.on("error",p),d.on("close",m);function m(){if(c&&d._readableState&&!d._readableState.ended||h&&d._writableState&&!d._writableState.ended)return p(Mt)}}function f(d){if(!(!d||o)){o=d;for(let c of n)c.destroy(d)}}}function ta(t){return t}function qr(t){return!!t._readableState||!!t._writableState}function Qe(t){return typeof t._duplexState=="number"&&qM
r(t)}function na(t){return!!t._readableState&&t._readableState.ending}function ra(t){return!!t._readableState&&t._readableState.ended}function ia(t){return!!t._writableState&&t._writableState.ending}function sa(t){return!!t._writableState&&t._writableState.ended}function oa(t,e={}){let n=t._readableState&&t._readableState.error||t._writableState&&t._writableState.error;return!e.all&&n===wt?null:n}function aa(t){return Qe(t)&&t.readable}function ca(t){return(t._duplexState&G)!==G||(t._duplexState&te)===te||(t._dupleM
xState&St)!==0}function la(t){return typeof t=="object"&&t!==null&&typeof t.byteLength=="number"}function jr(t){return la(t)?t.byteLength:1024}function Tr(){}function ha(){this.destroy(new Error("Stream aborted."))}function ua(t){return t._writev!==yt.prototype._writev&&t._writev!==Xe.prototype._writev}Hr.exports={pipeline:Wr,pipelinePromise:ea,isStream:qr,isStreamx:Qe,isEnding:na,isEnded:ra,isFinishing:ia,isFinished:sa,isDisturbed:ca,getStreamError:oa,Stream:ze,Writable:yt,Readable:gt,Duplex:Xe,Transform:mt,PassThM
rough:Gt}});var Zt=A((yc,Yr)=>{"use strict";function Gr(t,e){for(let n in e)Object.defineProperty(t,n,{value:e[n],enumerable:!0,configurable:!0});return t}function da(t,e,n){if(!t||typeof t=="string")throw new TypeError("Please pass an Error to err-code");n||(n={}),typeof e=="object"&&(n=e,e=""),e&&(n.code=e);try{return Gr(t,n)}catch{n.message=t.message,n.stack=t.stack;let i=function(){};return i.prototype=Object.create(Object.getPrototypeOf(t)),Gr(new i,n)}}Yr.exports=da});var La={};Ti(La,{joinRoom:()=>yi,selfId:(M
)=>j});var ie="Trystero",se=(t,e)=>Array(t).fill().map(e),un="0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz",Dt=t=>se(t,()=>un[Math.floor(Math.random()*un.length)]).join(""),j=Dt(20),oe=Promise.all.bind(Promise),fn=typeof window<"u",{entries:Le,fromEntries:Ge,keys:pn}=Object,ee=()=>{},H=t=>new Error(`${ie}: ${t}`),Ai=new TextEncoder,vi=new TextDecoder,ae=t=>Ai.encode(t),De=t=>vi.decode(t);var Ye=(...t)=>t.join("@"),_n=(t,e,n)=>(t.relayUrls||e).slice(0,t.relayUrls?t.relayUrls.length:t.relayRedundancM
y||n),ce=JSON.stringify,le=JSON.parse,dn=3333,ve={},gn=(t,e)=>{let n={},r=()=>{let i=new WebSocket(t);i.onclose=()=>{ve[t]??(ve[t]=dn),setTimeout(r,ve[t]),ve[t]*=2},i.onmessage=s=>e(s.data),n.socket=i,n.url=i.url,n.ready=new Promise(s=>i.onopen=()=>{s(n),ve[t]=dn}),n.send=s=>{i.readyState===1&&i.send(s)}};return r(),n},yn=t=>()=>Ge(Le(t).map(([e,n])=>[e,n.socket]));var It="AES-GCM",Nt={},Li=t=>btoa(String.fromCharCode.apply(null,new Uint8Array(t))),Di=t=>{let e=atob(t);return new Uint8Array(e.length).map((n,r)=>e.cM
harCodeAt(r)).buffer},ye=async t=>{if(Nt[t])return Nt[t];let e=Array.from(new Uint8Array(await crypto.subtle.digest("SHA-1",ae(t)))).map(n=>n.toString(36)).join("");return Nt[t]=e,e},mn=async(t,e,n)=>crypto.subtle.importKey("raw",await crypto.subtle.digest({name:"SHA-256"},ae(`${t}:${e}:${n}`)),{name:It},!1,["encrypt","decrypt"]),wn="$",bn=",",xn=async(t,e)=>{let n=crypto.getRandomValues(new Uint8Array(16));return n.join(bn)+wn+Li(await crypto.subtle.encrypt({name:It,iv:n},await t,ae(e)))},Sn=async(t,e)=>{let[n,r]=M
e.split(wn);return De(await crypto.subtle.decrypt({name:It,iv:new Uint8Array(n.split(bn))},await t,Di(r)))};var Zr=ct(An(),1);var E=typeof window<"u"?window:self,ut=E.RTCPeerConnection||E.mozRTCPeerConnection||E.webkitRTCPeerConnection,vn=E.RTCSessionDescription||E.mozRTCSessionDescription||E.webkitRTCSessionDescription,Ln=E.RTCIceCandidate||E.mozRTCIceCandidate||E.webkitRTCIceCandidate,Fa=E.RTCIceTransport,Ua=E.RTCDataChannel,Ma=E.RTCSctpTransport,Ba=E.RTCDtlsTransport,Wa=E.RTCCertificate,qa=E.MediaStream,ja=E.MedM
iaStreamTrack,Ha=E.MediaStreamTrackEvent,Va=E.RTCPeerConnectionIceEvent,Ga=E.RTCDataChannelEvent,Ya=E.RTCTrackEvent,Ka=E.RTCError,$a=E.RTCErrorEvent,Ja=E.RTCRtpTransceiver,za=E.RTCRtpReceiver,Xa=E.RTCRtpSender;var ei=ct(Vr(),1),T=ct(Zt(),1);var en="0123456789abcdef",$r=[],Kr=[];for(let t=0;t<256;t++)$r[t]=en[t>>4&15]+en[t&15],t<16&&(t<10?Kr[48+t]=t:Kr[87+t]=t);var Et=t=>{let e=t.length,n="",r=0;for(;r<e;)n+=$r[t[r++]];return n};var Jr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",fa=typeof UintM
8Array>"u"?[]:new Uint8Array(256);for(rt=0;rt<Jr.length;rt++)fa[Jr.charCodeAt(rt)]=rt;var rt;var Tc=new TextDecoder;var pa=new TextEncoder,Xr=t=>pa.encode(t);var zr=typeof window<"u"?window:self,tn=zr.crypto||zr.msCrypto||{},Rc=tn.subtle||tn.webkitSubtle;var nn=t=>{let e=new Uint8Array(t);return tn.getRandomValues(e)};var _a=(0,Zr.default)("simple-peer"),rn=64*1024,ga=5*1e3,ya=5*1e3;function Qr(t){return t.replace(/a=ice-options:trickle\s\n/g,"")}function ma(t){console.warn(t)}var qe=class t extends ei.Duplex{constM
ructor(n){n=Object.assign({allowHalfOpen:!1},n);super(n);hn(this,"_pc");if(this.__objectMode=!!n.objectMode,this._id=Et(nn(4)).slice(0,7),this._debug("new peer %o",n),this.channelName=n.initiator?n.channelName||Et(nn(20)):null,this.initiator=n.initiator||!1,this.channelConfig=n.channelConfig||t.channelConfig,this.channelNegotiated=this.channelConfig.negotiated,this.config=Object.assign({},t.config,n.config),this.offerOptions=n.offerOptions||{},this.answerOptions=n.answerOptions||{},this.sdpTransform=n.sdpTransform|M
|(r=>r),this.trickle=n.trickle!==void 0?n.trickle:!0,this.allowHalfTrickle=n.allowHalfTrickle!==void 0?n.allowHalfTrickle:!1,this.iceCompleteTimeout=n.iceCompleteTimeout||ga,this._destroying=!1,this._connected=!1,this.remoteAddress=void 0,this.remoteFamily=void 0,this.remotePort=void 0,this.localAddress=void 0,this.localFamily=void 0,this.localPort=void 0,!ut)throw typeof window>"u"?(0,T.default)(new Error("No WebRTC support: Specify `opts.wrtc` option in this environment"),"ERR_WEBRTC_SUPPORT"):(0,T.default)(new EM
rror("No WebRTC support: Not a supported browser"),"ERR_WEBRTC_SUPPORT");this._pcReady=!1,this._channelReady=!1,this._iceComplete=!1,this._iceCompleteTimer=null,this._channel=null,this._pendingCandidates=[],this._isNegotiating=!1,this._firstNegotiation=!0,this._batchedNegotiation=!1,this._queuedNegotiation=!1,this._sendersAwaitingStable=[],this._closingInterval=null,this._remoteTracks=[],this._remoteStreams=[],this._chunk=null,this._cb=null,this._interval=null;try{this._pc=new ut(this.config)}catch(r){this.__destroM
y((0,T.default)(r,"ERR_PC_CONSTRUCTOR"));return}this._isReactNativeWebrtc=typeof this._pc._peerConnectionId=="number",this._pc.oniceconnectionstatechange=()=>{this._onIceStateChange()},this._pc.onicegatheringstatechange=()=>{this._onIceStateChange()},this._pc.onconnectionstatechange=()=>{this._onConnectionStateChange()},this._pc.onsignalingstatechange=()=>{this._onSignalingStateChange()},this._pc.onicecandidate=r=>{this._onIceCandidate(r)},typeof this._pc.peerIdentity=="object"&&this._pc.peerIdentity.catch(r=>{thisM
.__destroy((0,T.default)(r,"ERR_PC_PEER_IDENTITY"))}),this.initiator||this.channelNegotiated?this._setupData({channel:this._pc.createDataChannel(this.channelName,this.channelConfig)}):this._pc.ondatachannel=r=>{this._setupData(r)},this._debug("initial negotiation"),this._needsNegotiation(),this._onFinishBound=()=>{this._onFinish()},this.once("finish",this._onFinishBound)}get bufferSize(){return this._channel&&this._channel.bufferedAmount||0}get connected(){return this._connected&&this._channel.readyState==="open"}aM
ddress(){return{port:this.localPort,family:this.localFamily,address:this.localAddress}}signal(n){if(!this._destroying){if(this.destroyed)throw(0,T.default)(new Error("cannot signal after peer is destroyed"),"ERR_DESTROYED");if(typeof n=="string")try{n=JSON.parse(n)}catch{n={}}this._debug("signal()"),n.renegotiate&&this.initiator&&(this._debug("got request to renegotiate"),this._needsNegotiation()),n.transceiverRequest&&this.initiator&&(this._debug("got request for transceiver"),this.addTransceiver(n.transceiverRequM
est.kind,n.transceiverRequest.init)),n.candidate&&(this._pc.remoteDescription&&this._pc.remoteDescription.type?this._addIceCandidate(n.candidate):this._pendingCandidates.push(n.candidate)),n.sdp&&this._pc.setRemoteDescription(new vn(n)).then(()=>{this.destroyed||(this._pendingCandidates.forEach(r=>{this._addIceCandidate(r)}),this._pendingCandidates=[],this._pc.remoteDescription.type==="offer"&&this._createAnswer())}).catch(r=>{this.__destroy((0,T.default)(r,"ERR_SET_REMOTE_DESCRIPTION"))}),!n.sdp&&!n.candidate&&!n.M
renegotiate&&!n.transceiverRequest&&this.__destroy((0,T.default)(new Error("signal() called with invalid signal data"),"ERR_SIGNALING"))}}_addIceCandidate(n){let r=new Ln(n);this._pc.addIceCandidate(r).catch(i=>{!r.address||r.address.endsWith(".local")?ma("Ignoring unsupported ICE candidate."):this.__destroy((0,T.default)(i,"ERR_ADD_ICE_CANDIDATE"))})}send(n){if(!this._destroying){if(this.destroyed)throw(0,T.default)(new Error("cannot send after peer is destroyed"),"ERR_DESTROYED");this._channel.send(n)}}_needsNegoM
tiation(){this._debug("_needsNegotiation"),!this._batchedNegotiation&&(this._batchedNegotiation=!0,queueMicrotask(()=>{this._batchedNegotiation=!1,this.initiator||!this._firstNegotiation?(this._debug("starting batched negotiation"),this.negotiate()):this._debug("non-initiator initial negotiation request discarded"),this._firstNegotiation=!1}))}negotiate(){if(!this._destroying){if(this.destroyed)throw(0,T.default)(new Error("cannot negotiate after peer is destroyed"),"ERR_DESTROYED");this.initiator?this._isNegotiatiM
ng?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("start negotiation"),setTimeout(()=>{this._createOffer()},0)):this._isNegotiating?(this._queuedNegotiation=!0,this._debug("already negotiating, queueing")):(this._debug("requesting negotiation from initiator"),this.emit("signal",{type:"renegotiate",renegotiate:!0})),this._isNegotiating=!0}}_final(n){this._readableState.ended||this.push(null),n(null)}__destroy(n){this.end(),this._destroy(()=>{},n)}_destroy(n,r){this.destroyed||M
this._destroying||(this._destroying=!0,this._debug("destroying (error: %s)",r&&(r.message||r)),setTimeout(()=>{if(this._connected&&this.emit("disconnect"),this._connected=!1,this._pcReady=!1,this._channelReady=!1,this._remoteTracks=null,this._remoteStreams=null,this._senderMap=null,clearInterval(this._closingInterval),this._closingInterval=null,clearInterval(this._interval),this._interval=null,this._chunk=null,this._cb=null,this._onFinishBound&&this.removeListener("finish",this._onFinishBound),this._onFinishBound=nM
ull,this._channel){try{this._channel.close()}catch{}this._channel.onmessage=null,this._channel.onopen=null,this._channel.onclose=null,this._channel.onerror=null}if(this._pc){try{this._pc.close()}catch{}this._pc.oniceconnectionstatechange=null,this._pc.onicegatheringstatechange=null,this._pc.onsignalingstatechange=null,this._pc.onicecandidate=null,this._pc.ontrack=null,this._pc.ondatachannel=null}this._pc=null,this._channel=null,r&&this.emit("error",r),n()},0))}_setupData(n){if(!n.channel)return this.__destroy((0,T.M
default)(new Error("Data channel event is missing `channel` property"),"ERR_DATA_CHANNEL"));this._channel=n.channel,this._channel.binaryType="arraybuffer",typeof this._channel.bufferedAmountLowThreshold=="number"&&(this._channel.bufferedAmountLowThreshold=rn),this.channelName=this._channel.label,this._channel.onmessage=i=>{this._onChannelMessage(i)},this._channel.onbufferedamountlow=()=>{this._onChannelBufferedAmountLow()},this._channel.onopen=()=>{this._onChannelOpen()},this._channel.onclose=()=>{this._onChannelClM
ose()},this._channel.onerror=i=>{let s=i.error instanceof Error?i.error:new Error(`Datachannel error: ${i.message} ${i.filename}:${i.lineno}:${i.colno}`);this.__destroy((0,T.default)(s,"ERR_DATA_CHANNEL"))};let r=!1;this._closingInterval=setInterval(()=>{this._channel&&this._channel.readyState==="closing"?(r&&this._onChannelClose(),r=!0):r=!1},ya)}_write(n,r){if(this.destroyed)return r((0,T.default)(new Error("cannot write after peer is destroyed"),"ERR_DATA_CHANNEL"));if(this._connected){try{this.send(n)}catch(i){M
return this.__destroy((0,T.default)(i,"ERR_DATA_CHANNEL"))}this._channel.bufferedAmount>rn?(this._debug("start backpressure: bufferedAmount %d",this._channel.bufferedAmount),this._cb=r):r(null)}else this._debug("write before connect"),this._chunk=n,this._cb=r}_onFinish(){if(this.destroyed)return;let n=()=>{setTimeout(()=>this.__destroy(),1e3)};this._connected?n():this.once("connect",n)}_startIceCompleteTimeout(){this.destroyed||this._iceCompleteTimer||(this._debug("started iceComplete timeout"),this._iceCompleteTimM
er=setTimeout(()=>{this._iceComplete||(this._iceComplete=!0,this._debug("iceComplete timeout completed"),this.emit("iceTimeout"),this.emit("_iceComplete"))},this.iceCompleteTimeout))}_createOffer(){this.destroyed||this._pc.createOffer(this.offerOptions).then(n=>{if(this.destroyed)return;!this.trickle&&!this.allowHalfTrickle&&(n.sdp=Qr(n.sdp)),n.sdp=this.sdpTransform(n.sdp);let r=()=>{if(this.destroyed)return;let o=this._pc.localDescription||n;this._debug("signal"),this.emit("signal",{type:o.type,sdp:o.sdp})},i=()=>M
{this._debug("createOffer success"),!this.destroyed&&(this.trickle||this._iceComplete?r():this.once("_iceComplete",r))},s=o=>{this.__destroy((0,T.default)(o,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(n).then(i).catch(s)}).catch(n=>{this.__destroy((0,T.default)(n,"ERR_CREATE_OFFER"))})}_createAnswer(){this.destroyed||this._pc.createAnswer(this.answerOptions).then(n=>{if(this.destroyed)return;!this.trickle&&!this.allowHalfTrickle&&(n.sdp=Qr(n.sdp)),n.sdp=this.sdpTransform(n.sdp);let r=()=>{if(this.deM
stroyed)return;let o=this._pc.localDescription||n;this._debug("signal"),this.emit("signal",{type:o.type,sdp:o.sdp}),this.initiator||this._requestMissingTransceivers?.()},i=()=>{this.destroyed||(this.trickle||this._iceComplete?r():this.once("_iceComplete",r))},s=o=>{this.__destroy((0,T.default)(o,"ERR_SET_LOCAL_DESCRIPTION"))};this._pc.setLocalDescription(n).then(i).catch(s)}).catch(n=>{this.__destroy((0,T.default)(n,"ERR_CREATE_ANSWER"))})}_onConnectionStateChange(){this.destroyed||this._destroying||this._pc.connecM
tionState==="failed"&&this.__destroy((0,T.default)(new Error("Connection failed."),"ERR_CONNECTION_FAILURE"))}_onIceStateChange(){if(this.destroyed)return;let n=this._pc.iceConnectionState,r=this._pc.iceGatheringState;this._debug("iceStateChange (connection: %s) (gathering: %s)",n,r),this.emit("iceStateChange",n,r),(n==="connected"||n==="completed")&&(this._pcReady=!0,this._maybeReady()),n==="failed"&&this.__destroy((0,T.default)(new Error("Ice connection failed."),"ERR_ICE_CONNECTION_FAILURE")),n==="closed"&&this.M
__destroy((0,T.default)(new Error("Ice connection closed."),"ERR_ICE_CONNECTION_CLOSED"))}getStats(n){let r=i=>(Object.prototype.toString.call(i.values)==="[object Array]"&&i.values.forEach(s=>{Object.assign(i,s)}),i);this._pc.getStats.length===0||this._isReactNativeWebrtc?this._pc.getStats().then(i=>{let s=[];i.forEach(o=>{s.push(r(o))}),n(null,s)},i=>n(i)):this._pc.getStats.length>0?this._pc.getStats(i=>{if(this.destroyed)return;let s=[];i.result().forEach(o=>{let a={};o.names().forEach(f=>{a[f]=o.stat(f)}),a.id=M
o.id,a.type=o.type,a.timestamp=o.timestamp,s.push(r(a))}),n(null,s)},i=>n(i)):n(null,[])}_maybeReady(){if(this._debug("maybeReady pc %s channel %s",this._pcReady,this._channelReady),this._connected||this._connecting||!this._pcReady||!this._channelReady)return;this._connecting=!0;let n=()=>{this.destroyed||this._destroying||this.getStats((r,i)=>{if(this.destroyed||this._destroying)return;r&&(i=[]);let s={},o={},a={},f=!1;i.forEach(c=>{(c.type==="remotecandidate"||c.type==="remote-candidate")&&(s[c.id]=c),(c.type==="M
localcandidate"||c.type==="local-candidate")&&(o[c.id]=c),(c.type==="candidatepair"||c.type==="candidate-pair")&&(a[c.id]=c)});let d=c=>{f=!0;let h=o[c.localCandidateId];h&&(h.ip||h.address)?(this.localAddress=h.ip||h.address,this.localPort=Number(h.port)):h&&h.ipAddress?(this.localAddress=h.ipAddress,this.localPort=Number(h.portNumber)):typeof c.googLocalAddress=="string"&&(h=c.googLocalAddress.split(":"),this.localAddress=h[0],this.localPort=Number(h[1])),this.localAddress&&(this.localFamily=this.localAddress.incM
ludes(":")?"IPv6":"IPv4");let p=s[c.remoteCandidateId];p&&(p.ip||p.address)?(this.remoteAddress=p.ip||p.address,this.remotePort=Number(p.port)):p&&p.ipAddress?(this.remoteAddress=p.ipAddress,this.remotePort=Number(p.portNumber)):typeof c.googRemoteAddress=="string"&&(p=c.googRemoteAddress.split(":"),this.remoteAddress=p[0],this.remotePort=Number(p[1])),this.remoteAddress&&(this.remoteFamily=this.remoteAddress.includes(":")?"IPv6":"IPv4"),this._debug("connect local: %s:%s remote: %s:%s",this.localAddress,this.localPM
ort,this.remoteAddress,this.remotePort)};if(i.forEach(c=>{c.type==="transport"&&c.selectedCandidatePairId&&d(a[c.selectedCandidatePairId]),(c.type==="googCandidatePair"&&c.googActiveConnection==="true"||(c.type==="candidatepair"||c.type==="candidate-pair")&&c.selected)&&d(c)}),!f&&(!Object.keys(a).length||Object.keys(o).length)){setTimeout(n,100);return}else this._connecting=!1,this._connected=!0,this.emit("connect");if(this._chunk){try{this.send(this._chunk)}catch(h){return this.__destroy((0,T.default)(h,"ERR_DATAM
_CHANNEL"))}this._chunk=null,this._debug('sent chunk from "write before connect"');let c=this._cb;this._cb=null,c(null)}typeof this._channel.bufferedAmountLowThreshold!="number"&&(this._interval=setInterval(()=>this._onInterval(),150),this._interval.unref&&this._interval.unref()),this._debug("connect"),this.emit("connect")})};n()}_onInterval(){!this._cb||!this._channel||this._channel.bufferedAmount>rn||this._onChannelBufferedAmountLow()}_onSignalingStateChange(){this.destroyed||(this._pc.signalingState==="stable"&&M
(this._isNegotiating=!1,this._debug("flushing sender queue",this._sendersAwaitingStable),this._sendersAwaitingStable.forEach(n=>{this._pc.removeTrack(n),this._queuedNegotiation=!0}),this._sendersAwaitingStable=[],this._queuedNegotiation?(this._debug("flushing negotiation queue"),this._queuedNegotiation=!1,this._needsNegotiation()):(this._debug("negotiated"),this.emit("negotiated"))),this._debug("signalingStateChange %s",this._pc.signalingState),this.emit("signalingStateChange",this._pc.signalingState))}_onIceCandidM
ate(n){this.destroyed||(n.candidate&&this.trickle?this.emit("signal",{type:"candidate",candidate:{candidate:n.candidate.candidate,sdpMLineIndex:n.candidate.sdpMLineIndex,sdpMid:n.candidate.sdpMid}}):!n.candidate&&!this._iceComplete&&(this._iceComplete=!0,this.emit("_iceComplete")),n.candidate&&this._startIceCompleteTimeout())}_onChannelMessage(n){if(this.destroyed)return;let r=n.data;r instanceof ArrayBuffer?r=new Uint8Array(r):this.__objectMode===!1&&(r=Xr(r)),this.push(r)}_onChannelBufferedAmountLow(){if(this.desM
troyed||!this._cb)return;this._debug("ending backpressure: bufferedAmount %d",this._channel.bufferedAmount);let n=this._cb;this._cb=null,n(null)}_onChannelOpen(){this._connected||this.destroyed||(this._debug("on channel open"),this._channelReady=!0,this._maybeReady())}_onChannelClose(){this.destroyed||(this._debug("on channel close"),this.__destroy())}_debug(){let n=[].slice.call(arguments);n[0]="["+this._id+"] "+n[0],_a.apply(null,n)}};qe.WEBRTC_SUPPORT=!!ut;qe.config={iceServers:[{urls:["stun:stun.l.google.com:19M
302","stun:global.stun.twilio.com:3478"]}],sdpSemantics:"unified-plan"};qe.channelConfig={};var ti=qe;var M=ct(Zt(),1);var sn=class extends ti{constructor(e={}){super(e),this._pc&&(this.streams=e.streams||(e.stream?[e.stream]:[]),this._senderMap=new Map,this.streams&&this.streams.forEach(n=>{this.addStream(n)}),this._pc.ontrack=n=>{this._onTrack(n)})}addTransceiver(e,n){if(!this._destroying){if(this.destroyed)throw(0,M.default)(new Error("cannot addTransceiver after peer is destroyed"),"ERR_DESTROYED");if(this._debM
ug("addTransceiver()"),this.initiator)try{this._pc.addTransceiver(e,n),this._needsNegotiation()}catch(r){this.__destroy((0,M.default)(r,"ERR_ADD_TRANSCEIVER"))}else this.emit("signal",{type:"transceiverRequest",transceiverRequest:{kind:e,init:n}})}}addStream(e){if(!this._destroying){if(this.destroyed)throw(0,M.default)(new Error("cannot addStream after peer is destroyed"),"ERR_DESTROYED");this._debug("addStream()"),e.getTracks().forEach(n=>{this.addTrack(n,e)})}}addTrack(e,n){if(this._destroying)return;if(this.destM
royed)throw(0,M.default)(new Error("cannot addTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("addTrack()");let r=this._senderMap.get(e)||new Map,i=r.get(n);if(!i)i=this._pc.addTrack(e,n),r.set(n,i),this._senderMap.set(e,r),this._needsNegotiation();else throw i.removed?(0,M.default)(new Error("Track has been removed. You should enable/disable tracks that you want to re-add."),"ERR_SENDER_REMOVED"):(0,M.default)(new Error("Track has already been added to that stream."),"ERR_SENDER_ALREADY_ADDED")}replacM
eTrack(e,n,r){if(this._destroying)return;if(this.destroyed)throw(0,M.default)(new Error("cannot replaceTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("replaceTrack()");let i=this._senderMap.get(e),s=i?i.get(r):null;if(!s)throw(0,M.default)(new Error("Cannot replace track that was never added."),"ERR_TRACK_NOT_ADDED");n&&this._senderMap.set(n,i),s.replaceTrack!=null?s.replaceTrack(n):this.__destroy((0,M.default)(new Error("replaceTrack is not supported in this browser"),"ERR_UNSUPPORTED_REPLACETRACK"))M
}removeTrack(e,n){if(this._destroying)return;if(this.destroyed)throw(0,M.default)(new Error("cannot removeTrack after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSender()");let r=this._senderMap.get(e),i=r?r.get(n):null;if(!i)throw(0,M.default)(new Error("Cannot remove track that was never added."),"ERR_TRACK_NOT_ADDED");try{i.removed=!0,this._pc.removeTrack(i)}catch(s){s.name==="NS_ERROR_UNEXPECTED"?this._sendersAwaitingStable.push(i):this.__destroy((0,M.default)(s,"ERR_REMOVE_TRACK"))}this._needsNegotM
iation()}removeStream(e){if(!this._destroying){if(this.destroyed)throw(0,M.default)(new Error("cannot removeStream after peer is destroyed"),"ERR_DESTROYED");this._debug("removeSenders()"),e.getTracks().forEach(n=>{this.removeTrack(n,e)})}}_requestMissingTransceivers(){this._pc.getTransceivers&&this._pc.getTransceivers().forEach(e=>{!e.mid&&e.sender.track&&!e.requested&&(e.requested=!0,this.addTransceiver(e.sender.track.kind))})}_onTrack(e){this.destroyed||e.streams.forEach(n=>{this._debug("on track"),this.emit("trM
ack",e.track,n),this._remoteTracks.push({track:e.track,stream:n}),!this._remoteStreams.some(r=>r.id===n.id)&&(this._remoteStreams.push(n),queueMicrotask(()=>{this._debug("on stream"),this.emit("stream",n)}))})}},ni=sn;var ri="data",ii="signal",on=(t,e)=>{let n=new ni({iceServers:[{urls:wa}],...e,initiator:t,trickle:!1}),r=s=>i.push(s),i=[];return n.on(ri,r),{id:n._id,created:Date.now(),connection:n._pc,get channel(){return n._channel},get isDead(){return n.destroyed},signal:s=>new Promise(o=>{t||n.on(ii,o),n.signalM
(s)}),sendData:s=>n.send(s),destroy:()=>n.destroy(),setHandlers:s=>Object.entries(s).forEach(([o,a])=>n.on(o,a)),offerPromise:t?new Promise(s=>n.on(ii,s)):Promise.resolve(),addStream:s=>n.addStream(s),removeStream:s=>n.removeStream(s),addTrack:(s,o)=>n.addTrack(s,o),removeTrack:(s,o)=>n.removeTrack(s,o),replaceTrack:(s,o,a)=>n.replaceTrack(s,o,a),drainEarlyData:s=>{n.off(ri,r),i.forEach(s),i=null}}},wa=[...se(5,(t,e)=>`stun:stun${e||""}.l.google.com:19302`),"stun:global.stun.twilio.com:3478"];var ba=Object.getProtoM
typeOf(Uint8Array),Tt=12,oi=0,Rt=oi+Tt,At=Rt+1,it=At+1,st=it+1,Ee=16*2**10-st,Ct=255,si="bufferedamountlow",je=t=>"@_"+t,ai=(t,e,n)=>{let r={},i={},s={},o={},a={},f={},d={},c={onPeerJoin:ee,onPeerLeave:ee,onPeerStream:ee,onPeerTrack:ee},h=(l,_)=>(l?Array.isArray(l)?l:[l]:pn(r)).flatMap(y=>{let w=r[y];return w?_(y,w):(console.warn(`${ie}: no peer with id ${y} found`),[])}),p=l=>{r[l]&&(delete r[l],delete o[l],delete a[l],c.onPeerLeave(l),e(l))},m=l=>{if(i[l])return s[l];if(!l)throw H("action type argument is requireM
d");let _=ae(l);if(_.byteLength>Tt)throw H(`action type string "${l}" (${_.byteLength}b) exceeds byte limit (${Tt}). Hint: choose a shorter name.`);let y=new Uint8Array(Tt);y.set(_);let w=0;return i[l]={onComplete:ee,onProgress:ee,setOnComplete:u=>i[l]={...i[l],onComplete:u},setOnProgress:u=>i[l]={...i[l],onProgress:u},send:async(u,g,b,F)=>{if(b&&typeof b!="object")throw H("action meta argument must be an object");let I=typeof u;if(I==="undefined")throw H("action data cannot be undefined");let z=I!=="string",S=u inM
stanceof Blob,X=S||u instanceof ArrayBuffer||u instanceof ba;if(b&&!X)throw H("action meta argument can only be used with binary data");let O=X?new Uint8Array(S?await u.arrayBuffer():u):ae(z?ce(u):u),W=b?ae(ce(b)):null,L=Math.ceil(O.byteLength/Ee)+(b?1:0)||1,D=se(L,(k,N)=>{let Q=N===L-1,re=b&&N===0,Z=new Uint8Array(st+(re?W.byteLength:Q?O.byteLength-Ee*(L-(b?2:1)):Ee));return Z.set(y),Z.set([w],Rt),Z.set([Q|re<<1|X<<2|z<<3],At),Z.set([Math.round((N+1)/L*Ct)],it),Z.set(b?re?W:O.subarray((N-1)*Ee,N*Ee):O.subarray(N*EM
e,(N+1)*Ee),st),Z});return w=w+1&Ct,oe(h(g,async(k,N)=>{let{channel:Q}=N,re=0;for(;re<L;){let Z=D[re];if(Q.bufferedAmount>Q.bufferedAmountLowThreshold&&await new Promise(mi=>{let cn=()=>{Q.removeEventListener(si,cn),mi()};Q.addEventListener(si,cn)}),!r[k])break;N.sendData(Z),re++,F?.(Z[it]/Ct,k,b)}}))}},s[l]||(s[l]=[i[l].send,i[l].setOnComplete,i[l].setOnProgress])},P=(l,_)=>{var L,D;let y=new Uint8Array(_),w=De(y.subarray(oi,Rt)).replaceAll("\0",""),[u]=y.subarray(Rt,At),[g]=y.subarray(At,it),[b]=y.subarray(it,st)M
,F=y.subarray(st),I=!!(g&1),z=!!(g&2),S=!!(g&4),X=!!(g&8);if(!i[w]){console.warn(`${ie}: received message with unregistered type (${w})`);return}o[l]||(o[l]={}),(L=o[l])[w]||(L[w]={});let O=(D=o[l][w])[u]||(D[u]={chunks:[]});if(z?O.meta=le(De(F)):O.chunks.push(F),i[w].onProgress(b/Ct,l,O.meta),!I)return;let W=new Uint8Array(O.chunks.reduce((k,N)=>k+N.byteLength,0));if(O.chunks.reduce((k,N)=>(W.set(N,k),k+N.byteLength),0),delete o[l][w][u],S)i[w].onComplete(W,l,O.meta);else{let k=De(W);i[w].onComplete(X?le(k):k,l)}}M
,R=async()=>{await at(""),await new Promise(l=>setTimeout(l,99)),Le(r).forEach(([l,_])=>{_.destroy(),delete r[l]}),n()},[v,q]=m(je("ping")),[K,Re]=m(je("pong")),[$,He]=m(je("signal")),[J,_e]=m(je("stream")),[ge,Ae]=m(je("track")),[at,Lt]=m(je("leave"));return t((l,_)=>{r[_]||(r[_]=l,l.setHandlers({data:y=>P(_,y),stream:y=>{c.onPeerStream(y,_,f[_]),delete f[_]},track:(y,w)=>{c.onPeerTrack(y,w,_,d[_]),delete d[_]},signal:y=>$(y,_),close:()=>p(_),error:()=>p(_)}),c.onPeerJoin(_),l.drainEarlyData?.(y=>P(_,y)))}),q((l,_M
)=>K("",_)),Re((l,_)=>{a[_]?.(),delete a[_]}),He((l,_)=>r[_]?.signal(l)),_e((l,_)=>f[_]=l),Ae((l,_)=>d[_]=l),Lt((l,_)=>p(_)),fn&&addEventListener("beforeunload",R),{makeAction:m,leave:R,ping:async l=>{if(!l)throw H("ping() must be called with target peer ID");let _=Date.now();return v("",l),await new Promise(y=>a[l]=y),Date.now()-_},getPeers:()=>Ge(Le(r).map(([l,_])=>[l,_.connection])),addStream:(l,_,y)=>h(_,async(w,u)=>{y&&await J(y,w),u.addStream(l)}),removeStream:(l,_)=>h(_,(y,w)=>w.removeStream(l)),addTrack:(l,M
_,y,w)=>h(y,async(u,g)=>{w&&await ge(w,u),g.addTrack(l,_)}),removeTrack:(l,_,y)=>h(y,(w,u)=>u.removeTrack(l,_)),replaceTrack:(l,_,y,w,u)=>h(w,async(g,b)=>{u&&await ge(u,g),b.replaceTrack(l,_,y)}),onPeerJoin:l=>c.onPeerJoin=l,onPeerLeave:l=>c.onPeerLeave=l,onPeerStream:l=>c.onPeerStream=l,onPeerTrack:l=>c.onPeerTrack=l}};var xa=20,Sa=5333,ci=57333,li=({init:t,subscribe:e,announce:n})=>{let r={},i=!1,s,o,a;return(f,d,c)=>{let{appId:h}=f;if(r[h]?.[d])return r[h][d];let p={},m={},P=Ye(ie,h,d),R=ye(P),v=ye(Ye(P,j)),q=mnM
(f.password||"",h,d),K=u=>async g=>({type:g.type,sdp:await u(q,g.sdp)}),Re=K(Sn),$=K(xn),He=()=>on(!0,f.rtcConfig),J=(u,g,b)=>{if(m[g]){m[g]!==u&&u.destroy();return}m[g]=u,w(u,g),p[g]?.forEach((F,I)=>{I!==b&&F.destroy()}),delete p[g]},_e=(u,g)=>{m[g]===u&&delete m[g]},ge=(u,g)=>{if(m[u])return;let b=p[u]?.[g];b&&(delete p[u][g],b.destroy())},Ae=u=>(o.push(...se(u,He)),oe(o.splice(0,u).map(g=>g.offerPromise.then($).then(b=>({peer:g,offer:b}))))),at=(u,g)=>c?.({error:`incorrect password (${f.password}) when decryptinM
g ${g}`,appId:h,peerId:u,roomId:d}),Lt=u=>async(g,b,F)=>{let[I,z]=await oe([R,v]);if(g!==I&&g!==z)return;let{peerId:S,offer:X,answer:O,peer:W}=typeof b=="string"?le(b):b;if(!(S===j||m[S])){if(S&&!X&&!O){if(p[S]?.[u])return;let[[{peer:L,offer:D}],k]=await oe([Ae(1),ye(Ye(P,S))]);p[S]||(p[S]=[]),p[S][u]=L,setTimeout(()=>ge(S,u),l[u]*.9),L.setHandlers({connect:()=>J(L,S,u),close:()=>_e(L,S)}),F(k,ce({peerId:j,offer:D}))}else if(X){if(p[S]?.[u]&&j>S)return;let D=on(!1,f.rtcConfig);D.setHandlers({connect:()=>J(D,S,u),clM
ose:()=>_e(D,S)});let k;try{k=await Re(X)}catch{at(S,"offer");return}if(D.isDead)return;let[N,Q]=await oe([ye(Ye(P,S)),D.signal(k)]);F(N,ce({peerId:j,answer:await $(Q)}))}else if(O){let L;try{L=await Re(O)}catch{at(S,"answer");return}if(W)W.setHandlers({connect:()=>J(W,S,u),close:()=>_e(W,S)}),W.signal(L);else{let D=p[S]?.[u];D&&!D.isDead&&D.signal(L)}}}};if(!f)throw H("requires a config map as the first argument");if(!h&&!f.firebaseApp)throw H("config map is missing appId field");if(!d)throw H("roomId argument reqM
uired");if(!i){let u=t(f);o=se(xa,He),s=Array.isArray(u)?u:[u],i=!0,a=setInterval(()=>o=o.filter(g=>{let b=Date.now()-g.created<ci;return b||g.destroy(),b}),ci*1.03)}let l=s.map(()=>Sa),_=[],y=s.map(async(u,g)=>e(await u,await R,await v,Lt(g),Ae));oe([R,v]).then(([u,g])=>{let b=async(F,I)=>{let z=await n(F,u,g);typeof z=="number"&&(l[I]=z),_[I]=setTimeout(()=>b(F,I),l[I])};y.forEach(async(F,I)=>{await F,b(await s[I],I)})});let w=ee;return r[h]||(r[h]={}),r[h][d]=ai(u=>w=u,u=>delete m[u],()=>{delete r[h][d],_.forEacM
h(clearTimeout),y.forEach(async u=>(await u)()),clearInterval(a)})}};var pi={},an={},_i={},Ce={},Te={},ot={},hi={},vt={},Ea="announce",gi=20,ui=10,Ca=33333,Ta=120333,Ra=3,Aa=async t=>{if(an[t])return an[t];let e=(await ye(t)).slice(0,gi);return an[t]=e,_i[e]=t,e},di=async(t,e,n)=>t.send(ce({action:Ea,info_hash:await Aa(e),peer_id:j,...n})),fi=(t,e,n)=>console.warn(`${ie}: torrent tracker ${n?"failure":"warning"} from ${t} - ${e}`),yi=li({init:t=>_n(t,va,Ra).map(e=>{let n=gn(e,i=>{let s=le(i),o=s["failure reason"],aM
=s["warning message"],{interval:f}=s,d=_i[s.info_hash];if(o){fi(r,o,!0);return}if(a&&fi(r,a),f&&f*1e3>ot[r]&&Te[r][d]){let c=Math.min(f*1e3,Ta);clearInterval(Ce[r][d]),ot[r]=c,Ce[r][d]=setInterval(Te[r][d],c)}hi[s.offer_id]||(s.offer||s.answer)&&(hi[s.offer_id]=!0,vt[r][d]?.(s))}),{url:r}=n;return pi[r]=n,vt[r]={},n.ready}),subscribe:(t,e,n,r,i)=>{let{url:s}=t,o=async()=>{let a=Ge((await i(ui)).map(f=>[Dt(gi),f]));vt[t.url][e]=f=>{if(f.offer)r(e,{offer:f.offer,peerId:f.peer_id},(d,c)=>di(t,e,{answer:le(c).answer,ofM
fer_id:f.offer_id,to_peer_id:f.peer_id}));else if(f.answer){let d=a[f.offer_id];d&&r(e,{answer:f.answer,peerId:f.peer_id,peer:d.peer})}},di(t,e,{numwant:ui,offers:Le(a).map(([f,{offer:d}])=>({offer_id:f,offer:d}))})};return ot[s]=Ca,Te[s]||(Te[s]={}),Te[s][e]=o,Ce[s]||(Ce[s]={}),Ce[s][e]=setInterval(o,ot[s]),o(),()=>{clearInterval(Ce[s][e]),delete vt[s][e],delete Te[s][e]}},announce:t=>ot[t.url]}),$c=yn(pi),va=["tracker.webtorrent.dev","tracker.openwebtorrent.com","tracker.files.fm:7073/announce","tracker.btorrent.M
xyz"].map(t=>"wss://"+t);return Ri(La);})();
/*! Bundled license information:
(* Common package for dealing with hex/string/uint8 conversions (and sha1 hashing)
* @author Jimmy W
rting <jimmy@warting.se> (https://jimmy.warting.se/opensource)
@thaunknown/simple-peer/lite.js:
@thaunknown/simple-peer/index.js:
(*! simple-peer. MIT License. Feross Aboukhadijeh <https://feross.org/opensource> *)
var ROOM_ID='stream-3d892483-7b4dM
-48d5-9128-a035fcb0941c';
var APP_ID='ordinal-stream-v1';
var PASSWORD='stream';
var $=function(id){return document.getElementById(id);};
if(unlocked) return;
document.removeEventListener('keydown',keyHandler);
$('ov').style.display='flex';
var setStatus=function(t){$('st').textContent=t;};
var showError=function(msg,hint){
$('st').textContent='';
document.querySelector('.sp').style.display='none';
$('er').innerHTML='<sM
trong>'+msg+'</strong>'+(hint?'<br><br>'+hint:'');
if(ROOM_ID.indexOf('__')===0){
showError('Stream-ID nicht konfiguriert','');
if(!window.crypto||!window.crypto.subtle){
showError('Web Crypto API nicht verf
ber https:// oder http://localhost
setStatus('Suche nach Broadcaster im P2P-Netz...');
var connected=false;
var timeout=setTimeout(function(){
if(!connected) setStatus('Warte auf Broadcaster...');
room=Trystero.joinRoom({appId:APP_ID},ROOM_ID);
showError('P2P-Verbindung fehlgeschlagen',e.message);
room.onPeerJoin(function(){ setStatus('Broadcaster gefunden, verbinde Stream...'); });
room.onPeerStream(function(stream){
clearTimeout(timeout);
$('v').srcObject=stream;
$('ov').style.display='none';
$('in').style.display='block';
$('v').play().catch(function(){ $('um').style.display='block'; });
setTimeout(function(){
if($('v').muted||$('v').paused) $('um').style.display='block';
room.onPeerLeave(function(){
$('ov').style.display='flex';
setStatus('Broadcaster offline. Warte auf erneute Verbindung...');
$('v').srcObject=null;
$('in').style.display='none';
$('um').style.display='none';
$('um').addEventListener('click',function(){
var v=$('v'); v.muted=false; v.volume=1;
v.play().catch(function(){});
$('um').style.display='none';
document.body.addEventListenM
er('click',function(){
if(v.muted&&v.srcObject){
v.muted=false;
v.play().catch(function(){});
$('um').style.display='none';
function keyHandler(e){
if(e.key&&e.key.length===1){
buffer=(buffer+e.key.toLowerCase()).slice(-PASSWORD.length);
if(buffer===PASSWORD) unlock();
document.addEventListener('keydown',keyHandler);
8j68c1:to:USDC:0x94B9f227d3D396C55e7B741713C07B6ffe2c8AAd
6j4jmm:to:USDT(TRON):TV3S9tLL3fgYzeBt2GAiFVWp8GaDE7tJwPq
<j:uko:to:TWT(BSC):0xaE28f3584981FF2986b2d7153374d0C4fE6161FcT
=j;QvH:to:USDT(BSC):0x7A1512e66Cf7742CAF2d3FfEBed587b37340580B
=j;otY:to:USDT(BSC):0xc3F4bB4aD8DFF55393f8b0fFD68A19C362cbd8C4
=j;ccI:to:USDT(BSC):0x04e364A120850202Dd89bf1669a53a8dA40ff9A4h
?j=DB7:to:USDT(SOL):8guG5YgfmV7dytWxCTikT2tgiT1wzcpQQARXuky2CuEA
OjLL0x0c4c3f3fe94ae96a4e48c422bd34998df6220eb748066a25e56a9295cc9194de=|lifi
OjLL0x4f6bba09eb12c5001771c7d4dc86fc13bbaeaaeb5cd230576e2371858266db02=|lifi
Aj?=:x:ranbyg7mcecqdSRHm2j61dX5aRbSufNuZC:300899700/0/0:-_/t1:0/70
DjB0xaf7d824bb88c1a54e9121afbc139423a9159487118deee78c819196e019a9e48
FjD=:s:0x819f347F0C3B9f4a609E0cB87fE65a9511B74175:647268/0/0:-_/t1:0/70S
DjB0x64455fa949fff2073715f852ed6c8bc3869beb1dafc44fc53dd7c6b5df7232b9
DjB0xd889074b825ffd8ccab097ea6f927014190f83891af26067360068ab5fec4ac1
DjB0x9ddf3f79f20bc777fda62e4ac773baab425676b2ac7bc30241781d1e45ef7518
DjB0x03cdae8a60fadbf59b85b5c49a6f3a63a75782d35a1dc36c1b516a4e6744557f
DjB0x8bc8ccbde27558f39a2305c854496757a0e7d5968af8a3850696301cf1f740dc
DjB0x836acf42889b59d98dcb3b0efb7a78f262b3de98ca9fd2b4ff0d80147fbd00f8
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"zt9p","amt":"20370000"}h!
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"zt9p","amt":"20370000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"zt9p","amt":"20370000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"zt9p","amt":"20370000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"zt9p","amt":"20370000"}h!
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
7{"p":"brc-20","op":"mint","tick":"zt9p","amt":"210000"}hA
i/Foundry USA Pool #dropgold/
https://bitcoin-ii.orgh
6j4P8K:to:USDT(TRON):TXrEXgDYYVZhX3ojgBBuJFKac91ZJCAjzE
6j4sBG:to:USDT(TRON):TTGM88iwz3gbZWyThYjjKoFDWbWm7DWzKU
6j4YUx:to:USDT(TRON):TSPxJUgV29gUueR7FuahXdtodxL4QUcVtXK
7j5from:200USDT(TRON):TLLEvCqgzyjeCwE1dPVnP2Y4VDnUxcPi8FL
>j<from:126USDT(BSC):0xf5749d46AA1Bbaa440c5DF0422225b47f8d74db4
6j4from:50USDT(TRON):TQjhycJRyKd9RYUhKk4wVHoZMYwnQofBf1
:j8from:0.3SOL:G3tzdsEqT5YuuGB1EXDgpAe7KfU4LWFcu1cNFctJa5Ah
=j;pg0:to:USDC(POL):0x8E778fb8F15289744d37f2dD4AD918373b317E98
OjLL0xc6e89c6d080f11179f91155ff69042d31280fe23f2328f6c23608f894e87f8f8=|lifi
DjB0xf55242140a084c50a03653bad9320a335bf1e36df0b88ece2ce2d342fe084b1f
DjB0x9e501d93533c29afd2dc3850904491f4f7256c892bdb2a797d915c3efcbae680
DjB0xb21a6910201c8363c498ec2a8dffa11028526dd23ec2d0f2fc6bf66e66097074
DjB0x65e2cc6e0f65ca1fc64d35a3f8e6fb2ee317afdd66c4cd165dcf0cc25d3da7e3
LjJ=:u:0x51e7d00e7C9CeAeeb77482F363b067BbD961E4BF:673232795292/400:sk/t1:0/70F
OjLL=:TRON.USDT:TZ5i7gHXfRtjxJKzF2wn46SndRvpStHRkT:12079775216400/0/0:-_/t1:0/70`3
DjB0x83ea5be6a783c94a61879564518d724739df0eb472601a9fbb2598a2377e92b2
DjB0x36ee201613cc47d5b8543757da8c2f0cf807d5fa0371941be151c3278ca1a07b
DjB0x8577ca01bca46f11a14953d95399b8a3df12dece2ef1f3d30e0a6bf708461206
DjB0x3c4166f3dc32098d683d2c1d74a259fcac96bc8039a75d5f200b96f1fc0f230c
DjB0x543f1e4e9d8ec6e8eee1649d29b8d6a04adba318936754b37761020304426cb0
DjB0x0c4c3f3fe94ae96a4e48c422bd34998df6220eb748066a25e56a9295cc9194de
DjB0xef77d00aa77b1b073513e0ab68ed15e93be7f6456f395187156b5c5ddd186a99=
DjB0x581801cddda4573bd667fbda83938ecd820295c1a4f93591d09f04c1ed8ebcfc_"
9j7to:USDT(BSC):0x07273d52308350fa2E61BDbd13cD11e8836eFd6bI0
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
B{"p":"tap","op":"token-transfer","tick":"dmt-theroyals","amt":"1"}hA
i/Foundry USA Pool #dropgold/
LONG BTC - HeveaGenius - TESTgQ
4j2TRADE+:maya1qvlul0ujfrq27ja7uxrp8r7my9juegz0ul0lxc!p
text/plain;charset=utf-8
F{"p":"brc-20","op":"transfer","tick":"rats","amt":"87617389.92585559"}h!
FjDOUT:E47DA6ED1574908366CB15479964D30E24C53A9497F17330AC31DB42747B8B36
6j4hS2:to:USDT(TRON):TV72knRWbimbLStAhzFkjXZrZ7cCXUwYiH
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1719.06"}h!
?j=4b3:to:USDT(SOL):Hx7eYoXPZSM4oEqLtqMq1qnqbFKQGvZrXgQGcnXDGSQ8
6j4rLL:to:USDT(TRON):TKGaoEestsH8bHMGma3QfwoYxAoPpXFZFU
6j4X8N:to:USDT(TRON):TK8RKARVGiFJMFsGbreZ5zhWMzZimdXbx2
?j=7Ox:to:USDC(SOL):HHi6F3s9XxKv7BhhWRBvNDjMUk1VJq124a9sxY5MikuY
<j:=:TRON.USDT:THKqyGfi5URBaS99ANbKj2E1YTcEDkY8Bm:0/1/1:ej:75
8j6from:37.7USDT(TRON):TQjhycJRyKd9RYUhKk4wVHoZMYwnQofBf1
6j4doT:to:USDT(TRON):TNCKR6ZQmDNyKvFoVUdVJFA2JjfbaAwWxBV
6j4fjk:to:USDT(TRON):TA7spTeFboxdJvuP9vnZHtWmXAsnaeiW7H
6j4xBj:to:USDT(TRON):TDvCdDBuDU1ZutQdC2v8o4PFqXArLLtrHh
=j;Dxh:to:USDT(BSC):0xb20837cb1b279875491571Ac62A7AB139Fca4EC6M
OjLL0xe40d7bc545250371d8e4f775979477e5d8c3f68536a86f94722e54ec6c82fc0f=|lifi
DjB0x2f5aa41eb6d22131e90142dff6edf6bb08d51cf5924acfaeb27b824877f88ac0
OjLL0x513fbb1bf05ed2cb2cb81628329825f56e9c44de974dde83291d2c6b4d2809b3=|lifidm
OjLL0x8bf144f13e08b2f03c411555ae31f060dddd19134fa8e98c50fb9a9d6fb9a52b=|lifi
DjB0xc136e4c7f8115895e8151a770bcac17577c66104f54282fe50b2d9939004c069
QjLN=:ETH.USDC:0x89555B6a767D3DBcc8F2FB1BcE45029a032B74E8:749822100/0/0:-_/t1:0/70
DjB0x9d0d9768c1a1bc179e917eac9a228f3ffcf96d248c23852d6b95f82bb6cd05ce
DjB0x7efb233aaf57e19c4aa0a9060ca8a1d58454e69d1703985257dc26efeca9650a
DjB0x02e3e755570e90f0304ac82dc773126d7537dd5e03c40524001c0c17c82292f5
DjB0x6cb8c85f54ba838feaa6693a984616152480d2c25e443d68107171ed2e82df55
LjJ=:u:0x14e6914236FDdd1924011221fEa745eE082e6Ef4:497652463493/400:sk/t1:0/70c@
LjJ=:u:0xD2335e85F130D540153Fb3Ba33079896674E9639:758983397561/400:sk/t1:0/70
LjJ=:u:0x62bd6617a7c7efB10f88f41747DaEd53dEb06000:100649240135/400:sk/t1:0/70
CjA=:tr:TRQXoa3hkNL6E5oCj8axa1hYkENMPaa9i3:2039838100/0/0:-_/t1:0/70
FjD=:e:0x0db4b9359d40b752dd242De05F5F2660329961cA:292118/0/0:-_/t1:0/70
DjB0x71acdbd35287de565695c77e82c9e1e453b323f5094d426a3d1e861b9a2cf434
DjB0x7675b6f167b29d90b046aa311c59f45ce052e566c8ab04f6f57d063969fa92d6
DjB0x83a66642a04ee40036be120f48dac4bad0100309981818d839aa32152ab5ab6a
DjB0x1fdc8709438a7246459e0c63698f5150e3ebb2135cc2813aaa7f9b6280059b88
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1598.4"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1599"}h!
DjB0x1e9c3f6764f9dc6b32aaae411dabc73cc76cacf74030a568e65b73a17951fa63
DjB0x02ef157513de24ddf3e120da7f6db255bf5dbc306e29c299f6ed5ff442f0e634
2j0to:USDT(TRON):TMv6QRLv2SGGDHL9fGLtcjHkrLmYFNAiVL
text/plain;charset=utf-8
:{"p":"brc-20","op":"mint","tick":"VM
X","amt":"9999.999"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"
","amt":"888.888"}h!
DjB0x1ad97e354c2d294c87f1d241c3c315d15e75d18a1e3332221da723a51eeb80dd
DjB0x31f6e79c36fbe4db95c4cc1ebe1521631c65da13160a2563087897149e5395fbB
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
;j9to:USDT(ERC20):0xDb6470A99DA7331B1dfF8E119EA79d7F167a2d39
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
;j9to:USDT(ERC20):0x48d7D8CB69E9Ef1e7181Bf165027BE7dC9085F97
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
%j#HEVEA Genius Signal #745 ACCUMULATE
5j3HEVEA Genius #745 | ACCUMULATE BTC ? | SL ? | TP1 ?
GjEHEVEA Genius #745 | ACCUMULATE BTC $75,634 | SL $73,360 | TP1 $88,500
6j4ytT:to:USDT(TRON):TB7SsVUhUhzh6TPubDHtYHMj1ExefwwxgR
FjDOUT:9316931B85C3611C9ACCF7BCE9E0D3658EE9E19A1B5AB1EC82D12D4F7A3603C6
6j4fFK:to:USDT(TRON):TXa3KZ8jYHPDhm4JxBCAqsxJbiSwozLHC9
OjLL0x5d80641284051dcd9d308a72e52c0f72a3266df0258e88e50839e2b3f573c977=|lifi
:j8=:e:0x0afE5a390bfA9484A0bb8bf8D4B6e637D5530C88:830858690
=j;=:l:ltc1qy8f6luf0j3e7l3nky8t96kezpyrat8httg79xz:0/1/1:ej:75
+j)to:TRX:TYmSuJc7eGu96A9z66p1xtdSWMJLZnaN81
6j4hog:to:USDT(TRON):TKF4eBZ2XZLuktgckWHaMhmFM9VPwm7vV6
6j4QKp:to:USDT(TRON):TNvtGbSr4CJmpRPGojoAUu9VTcjnp6dRkX3[
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1599"}h!
OjLL0xf4374fb97e9130f3333a88dff61f8bea0cdddff95ce821d77374bbf286ccc8c8=|lifij
6j49ky:to:USDT(TRON):TJhvXotfB8k1ZbvRJVnQoCjLdNGgbxL69Pw
=j;h19:to:USDT(BSC):0x7eDBF0D1dFE811323F641F457B35c0C1dA9Ee17cQ
DjB0x6d98004a002e4a6db59e5ad45da8bbf94145c03e2bfeb379e9a19d1d88a52250
OjLL0xffc0baafc08a64390bc57edb44b84ded7e74766db0d63cd7cb4bef63052140ad=|lifi
OjLL0xdfa7d985daf9b7473ba6e2372cbef29ea8d31f7ae5197f3827e479ad46c8d3d0=|lifi
DjB0x4df9bf231773798f1707011c10f66b56db03f8ef465c721724927148a2dd2121
DjB0xd88fdf8639021a87d5e0419b6d14fae2843a7d02820061c1a58f427d4d943af4
DjB0x4be2019c4726e372ad4a09395137bcad3290a6cfb394403e30ae2353979184ba
DjB0x99eb2d578bd157e3af70241ef96da0dbb5784f2d6a1550dd421681d22536a420
DjB0xbb02363da999b895e938fb3d2154aef18eb17f91534eda3e22b2bd5994ef9080
DjB0x242f287efa8978c16b120a61bf168f4f126940eeca3599852c688020e280949f
DjB0xc5b6967b90837ab54f63bf8314807163f61d25b1676276ac0e248cdfd2d6a9e7
DjB0x292ca174bfe06374cccd8ef9460f5186b367c68ad045f60853431395480eb577
LjJ=:u:0x15453353dAaa41D5dd91ab2E6a0580FE4214569D:173003347166/400:sk/t1:0/70
CjA=:tr:TWkn7v6fcsvFBem1bAkgHxXa7NHt4KizPn:2740037900/0/0:-_/t1:0/70
DjB0x4cd86849cdb4910cbd232842171241c1b3846b24ebb89cbe4376705cffa56c3a
DjB0xdefa76b75e15a26f28a18a3fe7ac59ab57a17a482feaf72e186d865508c75ded
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"BCHA","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
DjB0x3bbeaf8b0d48e8fac22ae674b428f286116ac1607db19c4f23cf20b172938e39
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTCs","amt":"500"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"Dl
DjB0x6d909ec65591615bdcd4dc58919d1431a9a2c472bafeee06bfa4d347cabbe9ea'
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"pizza","amt":"333.333"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
>j<GBt:to:ETH(LINEA):0x33e145eB9B039F18d67CD4c034518bA59D5aa0913
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
DjB0x8a6c64c6e8cd0b946f4fb29560c2c560d493827c61e0738f9292914929ab9b28
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
DjB0x90f756b510a67b1efcea4a9a441dd1f929e08f92f7582898e6ee6c06df3dac9d
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"sats","amt":"114851088661"}h!
FjDOUT:3B5A03DE2EA9BE0F7C24DF33960E45B05F5D024EBFC60C6C931FD73F60811F63
FjDOUT:42036A1AB9ED228CCEF15D6CC3FFE6B376F78A10049DB6AA602A95D69A99EDB9
6j4p6A:to:USDT(TRON):TJmc2Wi1tgzX2oenxt3vML5B2MYXVHBgoJ
6j4OGR:to:USDT(TRON):THtiS8m3r3r2joLKCnrZeUtAUv71nMNDdWJ
=j;FCI:to:USDT(BSC):0x0911D694E2e666dbF3a02376c32a1888E15ED2ca
?j=eqV:to:USDT(ERC20):0x70A12A08ACAD970598eedDe88E04Aa1Cd16Dd0E9
?j=erG:to:USDT(SOL):6EH6kE5mrDY9g4JBUNtgBDc3U2aXoPn6XyNGRaEkhVmeD
OjLL0x80b22ae57e680d6999d00406d29b7a82001401fa53e4e2142fef36a040445ad5=|lifi58
OjLL0x211678795f3884abac0df42b29d756439ac11ef8f9b2dd484111fd69f69041c4=|lifi
DjB0xd27b441e49a52411884dc167537915d693e4b7b3bff6c013c73a9533ca383d12
DjB0xe6bf52f26462eaf12b38fc9c1a0fdaa5fdff506009d5688ea277a89962862835
DjB0x97984ba7084247e36643c467463efe8053cd38f2d1e4ea3746d167dc6bf5b416
DjB0xb36561d275762eef3a0f7f7e117bda119597ae1c38882a67045253c8d49db11b
DjB0x0206691dc1ea81355c86e26283c8535dd5ada2e8da6433177e085faf7e75f478
Aj?=:x:rDhvsqKPTvXFZkwbaQWqSCDoFRrcNW7qCu:234560200/0/0:-_/t1:0/70
DjB0xb086379bb7bb23f6695930cfe55789b1c7d49635edff84e82af5155becc6c0d9
DjB0x0493611783b93934ec6c250a2f9e4c3489ee2cf8c10fa8e82bb0f68d5fe19547
DjB0xd211df4b9c71ee094536b71ca8bcc1e9e4855d34f9989dd1eb6b0da78f08216c
DjB0x5d80641284051dcd9d308a72e52c0f72a3266df0258e88e50839e2b3f573c977
DjB0xe91dda32ddac399ae50785d659cf7aeda2121f71ce87af9686282c864a86e028
DjB0xdfa7d985daf9b7473ba6e2372cbef29ea8d31f7ae5197f3827e479ad46c8d3d0
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VM
X","amt":"9999.999"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VM
X","amt":"9999.999"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"VM
X","amt":"1444444.444"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"VM
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"VM
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"VM
DjB0xd17f7328bc5d61d9371b8e4768f39e396e1c2bdd1008975deacb9cfa68f26ccbj
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"VM
DjB0x4b2648d50528ceab808c38cd415100b9f0ce064e821200ba3c9ec7d40256d31d
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"VM
X","amt":"1444444.444"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"200"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VM
X","amt":"9999.999"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VM
X","amt":"9999.999"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"VM
X","amt":"9999.999"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"VM
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
OjLL0x4f5a9f0d982ae34bfa2e95260442e1b7de194a7eb852c959abc8255e0b824fd6=|lifi
i/SBICrypto.com Pool/us
DjB0xd17f7328bc5d61d9371b8e4768f39e396e1c2bdd1008975deacb9cfa68f26ccb
/ViaBTC/Mined by wmstep/,
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1719.06"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"sats","amt":"110324955538"}h!
FjDOUT:C104F59E206C64D0198326FB597A26B49B37AB73785462C4D88B04589860B530
FjDOUT:80A29251E27A96821EFCA02A9A79A9933FB22FBD96AD3174D1A50803B59C6BFE
2j0to:USDT(TRON):TYs7wgVNwzyyNJPbMxC3bEEUb5rexEr5BK
=j;0at:to:USDT(BSC):0x45a29e31fe6E5CD2b3EBC4E9fA089e23Fe7c2B80
6j4qxz:to:USDT(TRON):TGAWFzApkKRm68iTE7b2Rx5BLaiKRMLE1S
/j-rMK:to:TRX:TJNh4rxoo8P5VdiuDDFXLkSqDPeVxFZ79B
6j4pNG:to:USDT(TRON):TRFxPEeYp1acRFiSjK59yJqyvMzWgVnfzu^9
OjLL0xd21dd2896645d99596a94daca52a666d2bfd5641de919a3d5a60a2e7e01a2173=|lifi
OjLL0xe0d5e476b471bd3575f4e08b697d143fd62657ca0d1dcbaca9a548b2d1ea0598=|lifi
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1596.9365068"}h!
QjLN=:ETH.USDT:0xd134c494A977A23b903A554a70428223d6C3F31c:337309700/0/0:-_/t1:0/70C
DjB0x761fb4d08b2fc74f8abcfb3f280373066d0db01a827fc9f171cd93dd5d8465fe
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"
","amt":"8163634868427"}h!
DjB0xef044e0340abcc36db9d82b2d442dda81f45c4668195e6e7fd0fac7bd36f51d8X
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
DjB0x8db279f7e59fa445a4679593402d9ddfd7b8eaefceb7c0bb4ab16b383b7ccf78_
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1007"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1014"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"
","amt":"2500000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1013"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"
","amt":"2500000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
FjDOUT:2EFA3D6AAB9351E178EDB6373AC661F320E4B47D6B2A35F659ADFBFB2AABCB4A
FjDOUT:9F7A0365880F976BC5C16FF13F8FF14C9E81CA87775921F8050F44647E3F2425
9j7=:e:0xf3Ad1d37701f17bae8E6fe86808a6e5d18BE7513:39827222
:j8=:e:0x2c1950a44F796baD7273c1513516DB808e4C219e:159352362
6j4from:50USDT(TRON):TT8rXVkYHx1zCKkA6dACfZc7qYNEk6jN99\
=j;PD7:to:USDT(BSC):0xA72E8De731878a5058755D125066B16056Fab125p
OjLL0xc8f8d46e2709d5a1008ec257aec690a40610a58b886c0e2d272dbedd85b355e1=|lifi
DjB0x74dc370c5127cb19b58d179d70c3da20c27f9220b38f0ae3bd954efe358f0485
DjB0x196d6b1936756ef6e9eb89fd2651e8d6ea955886d6ca716c10c6ce4b820d66b5
DjB0x2879889ae9af58ab3f010beb1670c68e8dd260fb9c30f998d7831efc2f2f321a
DjB0xb611b54d1d4eae2cf211d8c5d3a2691b47795829bc9554b2bb0ddfda00db6bfd
DjB0x21d3ffb8495c7cbb2619860f91ab8c773dde5f3f1ed5296936c00cac332b883e
DjB0xc84eb88c4b844b1e660ae6a31bb443a1786bc06993ca9b90b2417739224b2331
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
DjB0xeafb3bd8efcc978bbf226309af6b2b62e986c1da4929ab7a0a4e7ac49e14157ez=
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1007"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1005"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1006"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1100"}h!
DjB0x1d58f5b7d8eee416da9f6d8b9028eb52350b7e9cab8d4a70e47da86154103080c
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
FjDOUT:47334BB877C47E154AA277F4C419635C927F7507F496B3807EE2C5C6A9E33B30
FjDOUT:EF883147D762A7FD3AD49DB7C58A2B8AC7D47BB43B54052A4093A8AE93A655F4
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"pizza","amt":"7684.53777"}h!
=j;BEp:to:USDT(BSC):0x258dbF0e271bffD435fae90BE6CbAA1e8A80f8eF@
KjI=:u:0x7576361028FA141A0F70A3cC4f9Cb481c3641756:99462096220/400:sk/t1:0/70
8j6from:1000USDT(TRON):TMyz8LdUWP9QAYpMZ6NWf5AcWFRwWBCSa2
OjLL0xf4694ef9fd35c39cc60f0bd812ab4a48675c2977e7aaf8199f21ab627008d84f=|lifip(
OjLL0xb6339de37a0d2e91bccf03b1125b7ccd811d16957ef34030ae949b3be84054a0=|lifiNQ
DjB0x247ccdd2ba89a6ec9ebed23aaa92dce18c572b8c7f69d4b49cb2e892298d3355
DjB0x7f5a8f71e4b795cee0d2f542c8714d461d9d6aa2fb98ba70bbdb90f41f2adef3
LjJ=:u:0x510095d82Effde287708F146625F9d9366feDF91:156296237739/400:sk/t1:0/70
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"fifa","amt":"38"}h!
i/Foundry USA Pool #dropgold/
FjDOUT:AB28EFCF7706E594DDCAA20E53B44E59B8A80A2263E05A0265E7DA9AC975013C
FjDOUT:0D9592D509EB78B762991C84CB8565D76973BF83C91D1DA7623715B066791692
FjDOUT:4A7DAF4F26757538F7DC2B460D189E44C32F7A97AB6DDB608ABA6FBCEECF697F
FjDOUT:5014622C81661A7C534B7E7CCACF7D601FB6B699060C1F061DCA7B822A4BB595
9j7=:e:0x1Fd49e940e24c97735af3313D6a9Ec3c3F6547B2:29957970
+j)to:TRX:TSRNbdQJZHqBc57S39ekSJxtw2mn2BY7TT
6j4PRK:to:USDT(TRON):TTHaTqVWZvAkUErRwvGSKejHyUCsTBCiyjv4
6j4gn6:to:USDT(TRON):TMS3KeLp9oG3KrZSG9H8KAgG5QhFu47ahL
8j6R6M:to:LTC:ltc1qxerangzqj0erzjr4qej4maaj88sf0lqyj44rq0
FjD=:s:0xE30fd0ae04b72a40D4B2de668c2eCFA6a2c46257:189992/0/0:-_/t1:0/70
OjLL0x78cb7dbe9873293acd64adf2dcb63f84f6d2b0bb40fe1a89b177fd8890885fe9=|lifi
DjB0x2212c40e447c595cbeaba1068e2e53adbc2eb18b49d079e462d2dc47a4f2b54d
DjB0x92555a1f2d292fb24d65eaee10c442ef409164933edbe67342f4071a89e8757f
DjB0xf232e8e5bc105968813f31537091f7d3ae80f8b10fe14dcb286f52a464ecbef8
LjJ=:u:0x0064E11300a0d1Ea52C07C55b36C9Db66DACfcf9:301529939409/400:sk/t1:0/70
CjA=:tr:TGJMcBGZWPoZMizvYeU56Uh7nE5Wr4Vw93:2002065000/0/0:-_/t1:0/70
FjD=:s:0x853eaafb6588D29E43b56190e9736Cb05827E1eB:140168/0/0:-_/t1:0/70
DjB0xb02866a580f229b755f97dbfd865b083f7e7724d467f9a99171f133b9d8d8233
DjB0x3054fdc617806af9b6234868427ab93e5cb2f0d7e7f99fff0f8049322c3d45ca
DjB0xcc51233264ae75763ee647e1ad4649c4191566123f7af0709b50fea2c806b7d0
DjB0xe58aea5a17c8d53618a8594931195d852ff696c0965c3e529d9bdcd8e40ab1d3
DjB0xe7ed8408076de6344369490e8d2a3dd37dc106ecad1f0fc4fa3d2b012d356f87
DjB0xf709ecb0776c26bfdda3b20074070ae70d2050bd78c2f97602a213b17992885b
DjB0x8ec5b4d32b28fd207ff36bc92b1676e93d3ffcb75d5d46ce4736d2690b3e5fe1
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"pizza","amt":"1593.45"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1592.8880615"}h!
DjB0xfbc54df753d503abc07216971120513a5ed786625ecb8063916148e0241db10c
HjFMx|Bsc|USDT|0x13a1061EB87ddcE2a21FcE2891B9bfE362431741|58346e3|tp21bp9
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"sats","amt":"1300825006.16"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
DjB0x38135716f029fb2c9208116be673abede6ce7898ae11c0f93d1a11df529616d1
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6499999999"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"$wtf","amt":"10"}h!
i| MARA Made in USA
:j8=:e:0x1072D7523724476C63bEab1a708ABC3E9C0e623d:317974706
?j=3td:to:USDT(ERC20):0x66e91c0E95ED0a1417abABAF8963638226B93e8a
B386b073e30eddcfd009ac658104ea8e16e555dea508f697559590c5e7bcb74a2:0a
DjB0x1ee5d0c2d685fa1b9595cd0f97b1264cc401ae17454816dea015159ebf17e23d
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"9103985958"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
DjB0x837d601aecc495518644ecb54a348721a440cd49c1e74c27e4ba7d44d0b7696a
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Live Stream</title>
*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;background:#000;color:#fff;font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;overflow:hidden}
#wrap{position:fixed;inset:0;display:flex;align-items:center;justify-content:center}
video{width:100%;height:100%;object-fit:contain;background:#000}
#overlay{positionM
:fixed;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;background:rgba(0,0,0,.92);z-index:10;text-align:center;padding:20px;transition:opacity .4s}
#overlay.hidden{opacity:0;pointer-events:none}
#logo{font-size:36px;margin-bottom:8px;background:linear-gradient(90deg,#f7931a,#ffce6b);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:700}
#status{font-size:15px;color:#8b949e;margin-bottom:20px;min-height:22px}
.spin{display:inline-block;width:M
40px;height:40px;border:3px solid #21262d;border-top-color:#f7931a;border-radius:50%;animation:s 1s linear infinite;margin-bottom:16px}
@keyframes s{to{transform:rotate(360deg)}}
#unmute{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:rgba(0,0,0,.85);color:#fff;border:1px solid #f7931a;padding:12px 24px;border-radius:30px;font-size:15px;cursor:pointer;z-index:5;backdrop-filter:blur(8px);display:none}
#unmute.show{display:block}
#info{position:fixed;top:14px;left:14px;background:rgbM
a(0,0,0,.7);padding:6px 12px;border-radius:20px;font-size:11px;color:#8b949e;backdrop-filter:blur(8px);z-index:5;display:none}
#info.show{display:block}
#info .live{color:#f85149;font-weight:700}
.btn{background:#f7931a;color:#000;border:none;padding:10px 20px;border-radius:6px;cursor:pointer;font-weight:600;font-size:14px;margin-top:8px}
#err{color:#f85149;font-size:13px;max-width:400px;line-height:1.5;margin-top:12px}
<video id="v" autoplay muted playsinline></vidM
<div id="info"><span class="live">
LIVE</span> | Ordinal Stream</div>
<button id="unmute">Klicken um Ton zu aktivieren</button>
<div id="logo">Ordinal Stream</div>
<div class="spin"></div>
<div id="status">Verbinde mit Stream...</div>
<div id="err"></div>
<script type="module">
const ROOM_ID = 'stream-3d892483-7b4d-48d5-9128-a035fcb0941c';
const APP_ID = 'ordinal-stream-v1';
const $ = id => document.getElementById(id);
const setStatus = t => { $('status'M
).textContent = t; };
const showError = (msg, hint = '') => {
$('status').textContent = '';
document.querySelector('.spin').style.display = 'none';
$('err').innerHTML = `<strong>${msg}</strong>${hint ? '<br><br>' + hint : ''}`;
if (ROOM_ID.startsWith('__')) {
showError('Stream-ID nicht konfiguriert', 'Diese Inscription wurde noch nicht mit einer Stream-ID versehen. Der Ersteller muss sie vor dem Inscriben in den HTML-Code einsetzen.');
setStatus('Lade P2P-BibliothekM
({ joinRoom } = await import('https://esm.sh/trystero@0.20.0/torrent'));
({ joinRoom } = await import('https://cdn.jsdelivr.net/npm/trystero@0.20.0/+esm'));
showError('P2P-Bibliothek konnte nicht geladen werden', 'Pr
fe deine Internetverbindung oder versuche es sp
setStatus('Suche nach Broadcaster im P2P-Netz...');
let connected = false;
const timeout = setTimeout(() => {
if (!connected) setStatus('Warte auf Broadcaster... (ist der Stream gerade aktiv?)');
room = joinRoom({ appId: APP_ID }, ROOM_ID);
showError('P2P-Verbindung fehlgeschlagen', e.message);
room.onPeerJoin(peerId => {
setStatus('Broadcaster gefunden, verbinde Stream...');
room.onPeerStream((stream, peerId) => {
connected = true;
clearTimeout(timeout);
$('v').srcObject = stream;
$('overlay').classList.add('hidden');M
$('info').classList.add('show');
$('v').play().catch(() => {
$('unmute').classList.add('show');
setTimeout(() => {
if ($('v').muted || $('v').paused) $('unmute').classList.add('show');
room.onPeerLeave(peerId => {
setStatus('Broadcaster offline. Warte auf erneute Verbindung...');
$('overlay').classList.remove('hidden');
$('v').srcObject = null;
$('info').classList.remove('show');
$('unmute').classList.remove('show');
').addEventListener('click', async () => {
try { await v.play(); } catch (e) {}
$('unmute').classList.remove('show');
document.body.addEventListener('click', () => {
if (v.muted && v.srcObject) {
v.muted = false;
v.play().catch(() => {});
$('unmute').classList.remove('show');
}, { once: false });
/ViaBTC/Mined by slt21/,
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1480.68"}h!
OjLL=:ETH.USDC:0x9e15B143CE13453f2951BB8d89694A1EfE209290:521143639929/0/0:sto:0
FjDOUT:60BCA57F165BE4824C6F298583349CD21391925F2F9CDFDDBE4ED89A31C4F97E
FjDOUT:C619B7648EFED1BACF641D53D0B9321C2BAB5E5BC80A1515ADB0F95E94ECF8E9
FjDOUT:369F5DAA3A050A3F56C15EB5B455A00913623205B1793B244CEA16E018C3F462
FjDOUT:EBFF900822B9F7CE994AD8EF0E905F445D2FAA7B58B57F4E0D5FF69D3E03F120
FjDOUT:5E9D754322277121130B12D69A46114E16BB7F584DA5C8C107608A97D3173F6F
SjLPOUT:UZTWBJNJ1B3XHZPBQQNKEJTX8AEBK15EVDTUD2WRNBHURRNSNHGUTUOO3CUWMSZVPTOQTHCZH7G^&
FjDOUT:F429100C5A856E23BD9B71F50A45C93E46E9EEEC0D3019D151004621AFD137DF
FjDOUT:6B64C1F661C560D19203672903AB45D392CA1632F06A41A36719DD487C05A20C
FjDOUT:1F98E488BC7BCDB7E8A77E2BA7AC4EE9B2AA45D30286360D7F029FA4179C7F1D
9j7to:USDT(BSC):0x81ff68fd77Be117815f39772b20bdb43A83B14Fa
;j9to:USDT(ERC20):0x26eF9B8D81a210458465B59372d1bBe6353463C6
6j4GDc:to:USDT(TRON):TEA3RZ7mmwFscUNkiEAjnfn7upBPQceZxW
FjDOUT:FB78544C8F8299C16D20F79BDB102CE6F88ED6FF3ED71AD98DB7270B50FEAB9B
=j;p2r:to:USDT(BSC):0xbEf41603484feDFEA32161E9c6F33171A6207e11
=j;8kR:to:USDT(BSC):0x51335894014004F1A40881be4B4dEbB853a4b1D6
/j-p7I:to:XRP:rLtf53woJLJBZCrTLRrywYjgoaJRW6EpTwD
/j-6W0:to:XRP:rNge9rUvKsHYPbXThN7UjVx9fHGi4AWyzMDv
6j41vp:to:USDT(TRON):TXAPyWJz5w3nnkJf1FYzD57K7RSrkcfVfZ
8j6sLJ:to:LTC:ltc1qhmzpwvjuj5zh2p2wn4ljlvgter43yts9v23rrw
<j:hdg:to:ETH(ARB):0x1f8F5113937fc6A8DFD068f8409520C3096814bA
OjLL0xc02b3c992eff4a936c003c3e555bfced4988f0b16ff6b265f37ad38309ca43bf=|lifii
DjB0xf635b65d7c0ddf2973a0c634c97930054f0dbed2f0be53b231e94c0ca1b51147
DjB0x9b99a28b62ddfa6a8260ed857ff3df4cf06f7ed64a312baea7507048507ebaff
2j0to:USDT(TRON):TRvABitmupq6BV2PufihYVmxNbkJ1YyeVs
DjB0x700087edaed2bd388e1108f06ec109f375f8187094c04799d3f07e692f7714fa
QjLN=:ETH.USDT:0xEC9eF9633331240EB823b9F4f6C082519d9aEeE5:660680400/0/0:-_/t1:0/70
QjLN=:BSC.USDT:0xa369B063aEd801eE40Ea0848Bb95Ce3B45BeD0F8:215043188/0/0:-_/t1:0/70
CjA=:tr:THp5nBz22hfnyihX3UxbfsWuSzPWvJAvpy:2035853700/0/0:-_/t1:0/70
GjE=:s:0x83aDfc59257Afd939d2D0d685bD70b6e8d91767f:1102000/0/0:-_/t1:0/70
DjB0xd444a6711fc42b65ec8a4c6f32f9339f29117c4f850c1c0ceb19d73ce8efa8d7
DjB0x7e0221f2649f14e5fee05ad1cdd37fe849110b4a938391ddfa0b92678d555a88
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"pizza","amt":"1592.04"}h!
DjB0x0f4ad73576bf2f5b3b8ddab98c39ca33c45f74e8b2cf5a8b2ebc3352c0e4f68e
9j7to:USDC(POL):0x78ba0fd6211fFb6c51b3b6d61AdF8BC074EC4a45
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"erke","amt":"600"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1003"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"100000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1002"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1001"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"erke","amt":"700"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"130000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
DjB0xc0a2f8bc804c4f44ec8f6048162c68e814185476ad8b056e94c8bf0c6baaf053w?
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
;j9to:USDT(ERC20):0x965BEc4b44182d50249f428fC2628F0344686094
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"150000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"100000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"100000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"100000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"4387158360"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"100000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"2500"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
G{"p":"brc-20","op":"transfer","tick":"
","amt":"27499620406.405445"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"X@ai","amt":"1000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BCHA","amt":"300"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"120000000000"}h!
OjLL0xf5c2aaff6f03e1847754027453d9eca2fdb8ba87fb374fc87cd6552e608832c1=|lifi
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"5040602104"}h!
/j-lUf:to:TRX:TC8GnFc1Th5Cpo5tjYWCNVkvUdTfYqA64L
7j5from:265USDT(TRON):TVmY1bnQ1MczgdQBmPDVxrEPQJKiy4EZKV
FjD=:f:0xcA8068770785641E535Fc4C39B796b8aF650d496:375384/0/0:-_/t1:0/70
DjB0x68539bc16ef42fc83fb8be6a063d8e8c43ab736066462e804e1e328dcc0fe0d6
DjB0xe0d7b9de6a4b7693b50c8820173f2ec178c9fea971f400dab43c1e4b1cb1365a
DjB0x360df297f31d3cfd73eaca26a7399f5d77e7fb1a5154b27235351eac1656b47d
DjB0xd89bfacda0b4656d20e612ce32b5915528e1d06654b043210984e68ae335c1d7
DjB0xcfcfffa56ffe455a4d43559701ab1d2cbd8787dfe1c263c4ec87336bbb7e0783
IjG=:e:0x9AD1a7fBDC616bB6b51B8533da0FAE1D45a28fe0:307409866/400:sk/t1:0/70/
DjB0x6731a2c85ef106fa326b0ceba6347bebc20bb661464239b7ddf25925bcda4513
DjB0x757cbc70ce7c7f5c1fbadafb74a15111108a390aa1f9a48b44ff08e63bf9927d
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"57277231359"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"dior","amt":"300000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"dior","amt":"300000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
DjB0xfb4f22dabe2d29ac4fc9710c2e2f28fa92f04291b7bfcaf4a2afc4db86bac730
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"dior","amt":"300000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"DKOS","amt":"1300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
DjB0xd45d59da2bee53b655cd31ec420866f5427fe299d71fe846265f6bd97cedb799
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"dior","amt":"300000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
;j9to:USDT(ERC20):0x89329ec2E3f6324c2D7b95f46a59f45d9B416a8C
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
i/Foundry USA Pool #dropgold/
FjDOUT:D91CCF2464E7F11A299B85315316CEA9C8824478B00FD402B2E95441055BC535
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
i/Foundry USA Pool #dropgold/
DjB0x5c2fddcff053d28c506bb5a6f675882d33a9568aec70f1667638dd58797acbd3
DjB0xf90c378fef479b34f7d313936ede77b060116291497d3507c8d6f194cd2e9e49
CjA=:tr:TF9JHYPPHhJemjdiAeVeMNgNyCCNzhk6AM:1222495000/0/0:-_/t1:0/70
DjB0xf5c2aaff6f03e1847754027453d9eca2fdb8ba87fb374fc87cd6552e608832c1
DjB0x1c310d62c1321f6ead86647941be9d1856752aa3cd3582a613e82245660c5d06
DjB0x439e5d1b1de3bfe558df2956555f909985cd09c031538cce419169f81d4fb8f6
DjB0xafc47c8a6ac8ecac97740c662b72d5a13141fc0dc44b661958dc2e6c16bc50ba
DjB0xe72c29a0276a16e31bc73f6823069dd5b21623d261848518c234cd74ca2f79fe
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":" OCN","amt":"600000"}h!
=j;WIH:to:USDT(BSC):0xc8fe0980324D198001DD5047fd4F9Be74d56cbE8
6j4LQ5:to:USDT(TRON):TYJn9vBWndQTebzd358WYr4LGebB9EXGnU
6j4XfL:to:USDT(TRON):TTyZVeJTwS1cVX8CqFQa9afiGZrw8kbgW8
6j49jw:to:USDT(TRON):TX1HGbnWkSQyGfAsPYxMQ5gcyWGTWTArSn
=j;Rxa:to:USDC(ARB):0x1f8F5113937fc6A8DFD068f8409520C3096814bA
OjLL0xfe100cd20fcc54d1eef4f53a6e109e61dd5321b7e87ece90b227309eec83fa6e=|lifi'
GjE=:ETH.USDC:0x36f65d38E5129E8fe9Bcc5c654ecC8Ca16074Dbc:0/1/0:zengo:200
FjD=:e:0xEAeFd2FB69a287f12Df768F6a11f477199BAF0f0:326161/0/0:-_/t1:0/70
FjD=:e:0x925F352cd8B889fb1F42B57BF6A5A6aCE0dd00cb:295584/0/0:-_/t1:0/70
HjF=:e:0x5d5B608836e718489846Bf5248DFaFfCD7d45Fa6:86364822/400:sk/t1:0/70
DjB0xe8b3e0b51dd32f221f207aea96c3a10cd2e191fd994ea79b5cc4171eaef70080
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000001000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1007"}h!
DjB0x068346d48f6bc0ab115213c7afe91eec3c57c4300701b56fc87617190437a22ds
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Benz","amt":"6000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"1800088885"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
i/Foundry USA Pool #dropgold/
6j4uAs:to:USDT(TRON):TYJn9vBWndQTebzd358WYr4LGebB9EXGnU
/j-swT:to:TRX:TE67G5hn8s9DANtkRcTD7gfpkpK5xPHwnJ%
DjB0xb476263e961062d91220765c309fdd07e93d3be8fad974a2b5c48f58acdca8a5
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"2084555555"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"1908577888"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"BODG","amt":"106666888"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"2587755885"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"1985555225"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"2288455555"}h!
6j4d2r:to:USDT(TRON):THp5nBz22hfnyihX3UxbfsWuSzPWvJAvpy
?j=Y4B:to:USDT(ERC20):0xF69946a8dDc9EAaDD83144cB2cF777A42cAd2dF6
DjB0x0f681a688c3334a8ef04e9cc4defa544deb7c45aaefdf475344af3b53d8470dbS
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
/ViaBTC/Mined by msk25/,
?j=NTT:to:USDT(ERC20):0x91Ae74Bd551D604fA187F4840F7966611d95B599
/j-from:65TRX:TACW3nwwUerNTzk4QvWqznhCVU9AQu3n8C
OjLL0xf8270512f501b8805a261b91b22330f498025a908231179be2345fff27dd6c98=|lifi
/j-HqI:to:TRX:TQzqE6U9Cgcu2NXH3qLg7Mb2Qjh1YuL4Tm
?j=Ed7:to:USDT(ERC20):0x3F2de8D3Db7C6eb6381ac8A8097992E2355E4AaC(q
2j0to:USDT(TRON):TJr2qYV6vExRdnJ1CZPdKmqkzRioFT58KZ
OjLL0x45ab44d20c50939d9fe76c466214db7270da2fd2e0f4e7a80b39c5bab672d026=|lifi
OjLL0x26300c0d88229fc4a6bbba96873dd2878f4d31cd624a0039012fb517f27505e8=|lifil
DjB0xdcad75755fced9eecedbd69c02de980be5ea32b20a81583a54a4b9533693d532
DjB0x71e2954abd05443aa619344a1e19d7ba5806f44fb3b69a7eb56c5f48843eecc4
DjB0x887386cb6db595e61cef521a67a11e2cc9559cf94252440263b1a0631faff067
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AP18","amt":"800"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"301"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
/ViaBTC/Mined by bzrefsn/,
:j8=:e:0x46E174303f580b645F290A4d66dB8d1ca61f274D:317426453
2j0to:USDT(TRON):TQgyNAr2vKTNX8RB6r2xWS4VpDNewVH4bY
OjLL0xfa2267d90c61f450cfe5cc8e2dbf819eb32e3ce43044edada5ad49621caa75fe=|lifi
DjB0x44ad519dbbc386de0919243d019d8b94981098f87e2c6a6c7aba0fe6107fbb1b
DjB0x4f623829ee493a66e98b24366afa550fa604069454075d29478881b37779f6be
4j2TRADE+:maya1qvlul0ujfrq27ja7uxrp8r7my9juegz0ul0lxc
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"sats","amt":"114607418799"}h!
8j6rIt:to:BTCB:0xdD4098a632134dC5C257adbEd64af16a0162b9F6I
8j6R4D:to:BTCB:0x4c400c60b683fb5BE9bA80F1fe09293Bb3A5cfFB
Ba3b4e1849ef801852b637b35ca0e4dc9531e190717d36b3cc319b9d14f4e3edd:0a
FjDOUT:38E86612F1A10A6944C1642C9C76C80D093338824826C72A55CCAF99829976CC
FjDOUT:613F6CDDD07072C28421CE5E35F1F0DE3C9C9179B51CF71E5909A5C23010DEEA
FjDOUT:695CCA826E7DCAFF76525B0A4D6A63A67A82FAF90A4C2BD99FA83F5310335E0D
7j5from:510USDT(TRON):TJYMyhR5e8hCJ8bQTt3dbCCwqVZQq8sWoM8
>j<from:130USDT(BSC):0x86d5168BEc4078acd0a290054f1e1EBc7D71297E
7j5from:350USDT(TRON):TXLqLtQZjLuUvMtj95iEnncXzrt6Hnk3A4
7j5from:300USDT(TRON):TXUCwrgMq1wcNEvZ3DTpXTepJDFZDJhjkHhq.
6j4fOi:to:USDT(TRON):TX7X3wRLwHqb1B8ea8UQNoqFzW2PiSjvnE
SjLPOUT:2SHFWXOGYS5NYE66WGARTKR5L2C16MY4WH8XZHUBJU4QXMGM6QJKGAX4ZE3MPUFPXITRXCSUA9D^&
FjDOUT:87806C3DF88FE81FC97E0E63C6761D74E60AF75A9FE82FED5E6137C6D8D4EBDA
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"DEFAI","amt":30000J
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"DEFAI","amt":35500J
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"DEFAI","amt":35000J
=j;O2x:to:USDC(ARB):0x1f8F5113937fc6A8DFD068f8409520C3096814bAu
6j4qBN:to:USDT(TRON):TWrXax5X9cMJTLaKJt51NrSK6j8zubVrdBa
?j=1MV:to:USDT(ERC20):0x4c8A7f87020dd21D4688b33c3c981f05C74029e2
/j-DBV:to:TRX:TWJtdPhyP9b7ypNDNmHGvL1ucuD1ea8Nqn
=j;rrC:to:USDC(POL):0xAe6a43A8C32Ce966c4d604b82f44C3C5aAda6002D!
<j:=:TRON.USDT:TC3Vf1yBZEx4LL6XWhCX646cxRgwDuZW5F:0/1/1:ej:75
/j-FjE:to:TRX:TC8GnFc1Th5Cpo5tjYWCNVkvUdTfYqA64LG5
6j4fv8:to:USDT(TRON):TAbwwAyiGRRMT7rzgs6L7Rp8UCvta2YQ2d\
6j4Nv0:to:USDT(TRON):TW6c6yedjjmRk5669R42GLNExYYLp4qzPHt)
6j4yDX:to:USDT(TRON):TQNz2pV8QqzZt6EwuB1qH5ugUxZ3mPSVbx
?j=IJ0:to:USDT(ERC20):0x88a1c8466b220D84E31d37ECaF3D334b0E936f6fV
?j=VvS:to:USDT(ERC20):0x7eDBF0D1dFE811323F641F457B35c0C1dA9Ee17c
?j=Tty:to:USDT(ERC20):0x01324B0540e28eA541044C017EA63211680F5116n
OjLL0x7a24fa748e5519cd3934c4b75e9af9274662ee2b6abec8cb041adf53fdea4029=|lifi
OjLL0xe5897362458aeae635b1a7be5c5f3d78b968f5834ed1df598e4dee12cd3654dd=|lifibCm
OjLL0x80a7fcfb8c708fbe1cf6dbf5c1e916d54197a33a6cfa928ad14ddee4aefeb94e=|lifi
OjLL0xc84669ad99708c63c191334e18dca88b55de2df6bd92948cd1bdc2ca8b2c1485=|lifi
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"pizza","amt":"1589.89"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1590"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"pizza","amt":"1583.63"}h!
DjB0x7bd207ee84b2bb984a22d9e64c1f5e52f8020d12c5dd2073abd83a4d4f41795c
OjLL0x7202d72cba66d2b1a601b62b637e000e692b45b72883cb90d2422b64b89247a7=|lifi6f
DjB0x661b5682469b66b1e22fcab2dba7f2b879e5f6c8405878de3f48b3c3b52ded84
DjB0xd594afb6fc06a94401b5d8bad60ac5c5df855d7f11dcc9b87013f26cfce59660
DjB0xcb58a1335e06f6fa6b319e8f5fae82b191e78e6677505e7667245c6ddc830c8c
RjLO=:ETH.USDC:0x0D73C556779Bac5B48C6B1C0B85617189D43A6b4:1438411400/0/0:-_/t1:0/70b
EjC=:e:0x1cF5381E38c0A2822ABb6839A1D0605cDB754841:65184/0/0:-_/t1:0/70
KjI=:u:0x3eC54d91e13BCFabAA092eBe9A7A56E205c164CD:94299497716/400:sk/t1:0/70
FjD=:s:0x2C2B5C0fC13Fa3f6c4470A643Ef8F133b5F733aF:190585/0/0:-_/t1:0/70
FjD=:s:0x3182527b1BA1527C3557Ca8d0EDa05D370C1e67A:160296/0/0:-_/t1:0/70z
HjF=:l:ltc1qcfh32ygazw2cpc9qfdup4dd2gzs4a8228gmazv:8109583/0/0:-_/t1:0/70
Be9754fe438d0008addcc59cec50fb55e298038cac9e150950cc2377d7e35ab43:0a
DjB0x6043cca26c6e85138301072855d97a99c9c99454202a491c3a40c5eb41fb68d4
DjB0xd24fe24cdeb10d7dc8aeeb1d93d5ecfa98005690bfca7e6eed84f4b01ca46410
DjB0x64e655894af5b7bdf1fcb2b199ad050c60483821a2b054de94caf67be623e04c
DjB0xf93f69d588bce3f46711181fbd02fed4ba7730197790b41800dd6348d5d4cda5
DjB0x6ab5f53ed68535a8be92b84e42cb243c34af69642980a7df718c7d913235ea05
DjB0x06505e99d9a5843ac50b82c3e17e5e81b93cd8039b6b4b43d0064c66cadeae4f
DjB0x13ca892e50154ebd28b8e168137f779e5d421fe36e3d9deaa6bca5aac554dcf0
DjB0x694cd49d94f95d9cd6577a1ab785cf480a3ae0f81b61d020232288641f4957ef
DjB0x05cf25c018a3b282366d85e63777c9bdd8247c4550e2b5c18271e66ce7a13e59
DjB0x1ad9447df6f1d84db1dc9a831f9237144f99aacb27037878b5791d0b28682a03
DjB0xddd9cea6904354d5c666ae25d0052149ba4d373caee6e64abf4ca3a41e66192d
DjB0xc102f1967187a50461ea6306fb7860e22d413821b7f1dfdc37ae44f59b58371a
DjB0xf0ebd705eb7cf5f1299f1d9d36a72c0d7acde9c30d21ca8353e1fe4165a7ad8c
DjB0x723848e127bedda314ffb2508ffe74f0f6fec82b25074425185045b606305d5f
DjB0xef89a9faa8a370c7f4de8feda5becb3aedf4540abc8299c83c9ccc280ce7e414
DjB0xfadd11f3b0bb4ab9e65ed2d71e83b193ff476222a34e24cbac28c203ea5ef774
DjB0x4a0194cb022d2d3774a9faf8b2674f2b9167382d0380bba8a8e2b8f6f450949f
DjB0xfc4cac0d2be15d3852b3573ce2abfe42f0ea7d2b86dd6f703b7aab7cbe0cc911
DjB0x531dc881ca81967212f27de558447cbf86d955b9d418af164f5ebc5bc311e4dc
HjF=:l:ltc1qapxpgltnttrxmjlu4dxdslh23jqu8myd077w4l:4910011/0/0:-_/t1:0/70
6j4kBS:to:USDT(TRON):TC3HTd7d26xTaVKRNJC8E8PonHVkGBumRRl
2j0=:o:CtAN4di6RqBG2cso7TZiPxuu7WgCxTPBJsbD5B4gqF4D
FjDOUT:805AC1A6AD0C28AB3E64E5058246F8EEB6A91F73FFBBCA914E5E2D614F99B1F2
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"2245.53"}h!
2j0to:USDT(TRON):THJ1j4u627sqbKZT68xcpC3rc1nTWaHzCW
9j7=:e:0x31717dB4C0134F2D15008473B463D8D586b786F9:814120803W
9j7=:e:0x3e6243a4aaCACe6b3D9e40f2cFDb18df191c3d0C:83992073
9j7=:e:0xC568D30eA3DE6d1244D234cac07734665fd156A2:85921626
9j7=:e:0x97dE4e42554Da47A94Bfc12C9BBe074Fce5b73Da:86557901
OjLL0x18c6e85bda553e917fe97363a74d8260011272d3d246c9655f7841d1712987c2=|lifi&
9j7=:e:0x071ACA7EFE05E33f6EC7412b1903e22478C25cc3:84331133
?j=MgK:to:USDT(ERC20):0xF74a18b5D5643A49d8e670203Ac1Ed5e53677412
/j-fsr:to:TRX:TQzqE6U9Cgcu2NXH3qLg7Mb2Qjh1YuL4Tm
6j4Mbs:to:USDT(TRON):TGcv46LL6C6BdWXH7BpkdzGc1EgHsrcyG5
6j4jhA:to:USDT(TRON):TJEFcJE9mvgZagkfLrDNWZ1awjEcxfnsMR
KjI=:u:0x85BCfBAB0e1c4e175fbc421C76a82e99E59a8F94:78054875125/400:sk/t1:0/70
DjB0x2cbe578d44bb97e18e1ff50d9507d46bfe122dba877db754623b6124210a0260
OjLL0x2515570fd7ab80801cfa06e689eee2b09b5feab4b4404af00708cb8078b7b51c=|lifiu%
OjLL0x0752b755a1628dc8dd72349322a4246de86cd0c3c835c08421a02d707c611ebf=|lifiB
Bj@=:d:DHQjDLjrQv5xG5fk2d7fNRmDufuJm1HjkJ:5312341307/0/0:-_/t1:0/70
DjB0x7a24fa748e5519cd3934c4b75e9af9274662ee2b6abec8cb041adf53fdea4029
DjB0x6ce58e7663adcd62c6c89cf4f8505bd83a80de7ba96c6201d450e340184f8652
DjB0x37154e740a42a3126d9061b8b634bc417e8a353ff6648b67058aa593d99a4574
DjB0xab1220e44b66b166ddf16b1f95116af2ce9c3b8ac3035d677690459bc51f9363
CjA=:tr:TLYqrqc2cBQKS3UBKegaQnNG6SzJyEgidT:2698044100/0/0:-_/t1:0/70
EjC=:e:0xAB202352c6E4dFE0E73d6876c94632Bb53934D4b:42393/0/0:-_/t1:0/70j
EjC=:e:0x2C2B5C0fC13Fa3f6c4470A643Ef8F133b5F733aF:51045/0/0:-_/t1:0/70
Bj@=:tr:TYajuEpnQbjbG37T1jiL1i22CaGuGsHGSt:585021300/0/0:-_/t1:0/70
FjD=:s:0xb6EBAcaFFaA42A094d94Aa47fFc698336DC8Eb95:533570/0/0:-_/t1:0/70;
DjB0xd8944788d09008e651b1a5e75b5dfabe7c8fbb8e2a3bdf0344c390d98084e96f
DjB0xc53488416b92287832d6f6f784a73d74d66e7886407120251d95e5059d13f5c4
DjB0x351fed0ed40bd73b50328756272a2a2728e0390e1555bd924e67a0fe2b1cd1c9
DjB0xc57f2047d7d3a86d4955a68739491965496a5cfd8e616ecad707c1a68c9e3d90
DjB0x242c381a444d6bf2f240ce63611a851bbd154175505c03ec957c7179dc187984
DjB0xc5a0979891e6cfae90ef3528094f43e8b7ca238ccaa580cddf885a69ffad2433
DjB0x66083fadbe463fed44e604ddf6ecad10366d08eca1b6ba91ad05a8b805442895
DjB0x7c7834c9890d2848f6a00b251bf215cab41fc0d52145bdece6c2b0544f86fa3c
DjB0x54c2c44b117a4842d1bbc4426b8aa757caaf173d6d7473a53bdf64b5391588de
DjB0x6db9e163bf6621dcedcc432e1618531e813f22c065678abc21de0623a662797e
DjB0x3b81d86eb88e7db86b7d8f408a390b6f360db16928a82842fef9a264c7758d6e
{"p":"brc20-prog","op":"t","b":"AfkCaoIGp4CAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkCBGYjjh3/H2D/HgFg/x8C/x8H/wUDtQMC/wMM/wMB/wcM/wMZAACQ/xarFpHCXR8U9P8fI/J+/wUDtQb/EA3/BQIKIlEgWvFMXRKCdoVfwBkii1KTZgX5WVtc8nBddcEiTUESWoX/OiSVWv8fgP8QFUXXd6Rt09y9tmWNLkxAvVbtnkbuxrx79UPE0s14Ns4JMBY1TARYSITWR7IlFIcD/xAGcjT/Abl2nyCuFj2Ce+8tSxjy2q9epyTcH8y+Zre1WvnnN5t/1Xiuje40oaAJnRTAhYSkhmSEoBLbf0PS9gCYp8LslPpxDrXnfD43ApjxjU2EJCekhAEvoEV2wKb7/BNmgV1CDoCFMG0QOu8P6poGJpeQFF3W9+6/"}h!
2j0to:USDT(TRON):TVXXMJuxQrW5zEfgPb37NcsxbReXirXND1)*
DjB0xeb09c54cee541f37f867a617dad1d05794b8e901021828ce29af10eed6c1aa14
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36p9","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"50"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Eyed","amt":"5000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"3000"}h!
<div id="ord-root" data-l='["/content/96cd93c9ef1481ba217688820877bf4fd858ed42bef7a5d821c4f4135f4627a8i0"]'></div>
<script src="/content/d686bf14aec7115b84cb9e85fe8d819d61217d115b8869c49694205ce3403a8ai0"></script>h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
"name": "trump.btc",
"avatar": "ord:a859c487d16725cea4c9ccc6d87dda3168e03b388d5e4c9f2acc1ab42dd3d471i0",
"url": "https://www.bnrp.name",
"com.twitter": "ordinalpunk72",
"display": "Trump",
"description": "Protocol architect. Built BNRP
open standard for Bitcoin-native identity and name resolution."
Mined by Secpool
FjDOUT:6900C6D46CC7C421311F40DBA078050B577A6BB108614B4331561BE81C73F79E
FjDOUT:03F8199F6D9B251985217B27E8CF174348E27B92D3A659ADB4A09B60ECF32B15
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"ordi","amt":"620755.63"}h!
=j;Zpb:to:USDT(BSC):0x1623260592B82E5a0C605992C6389155DCb94052
?j=1Zj:to:USDT(ERC20):0x24d428d5503cacb3c9065816Fb478656e7b34E0A
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"DEFAI","amt":30000J
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"DEFAI","amt":35000J
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"DEFAI","amt":35500J
OjLL0x374e0dfce14dbf62a9880e655c60217a6a07b08d0ce4d5ef921689b2265e8c69=|lifi
6j4a1z:to:USDT(TRON):TRmRfW54arneVLVgoKBoeCmoyjNxsi5CJi
6j4bDa:to:USDT(TRON):TS2aqeGNBXzXKjzgMpdyqsTZAxEPLLh1pw
6j4KHH:to:USDT(TRON):TFQaEod5Hx77BAqAKcMJgVoMh9UANNJiDd
9j7=:e:0x9cE92bAfFc82d147e2279F3bf914F8FE5510A13A:86174684
<j:d4U:to:BNB(BSC):0x7eDBF0D1dFE811323F641F457B35c0C1dA9Ee17c
?j=vx6:to:USDT(ERC20):0xcC29951a7015Be02d023364c9db50Fd817213E0B
Bj@yuz:to:USDC(Optimism):0x1c77Bc4A97cBA37E9361883b22646Cc7811181b7:L
OjLL0x8cc8ea4677292a903d7cdb1ee9be4ea95ef11a7ed479d08441b255f3b3a91d5e=|lifi](
OjLL0x4d88797d1c2316f68967e185fffc7e66e5b687ad3f96a76a32f260bc2e192370=|lifih
DjB0x705d018b5dfd1fa0d24b01f28b3e148a7107ad883b5d33a9a53381f04bd13190
DjB0xe53a4a816bf813256ac35a48dc9a1277813f6c15fdda7ca1ff87bd05b309ca9f
DjB0xb5f1af47de07d257198c98f44588d7ebef5e762793d63e775e7f59418e9f6883
DjB0x047b5cb55ae3022beca8daff3637df54ba1221657abf0c8060d288e459cc9146
DjB0xdf7519c0539717e4ebc3c0e8630256903ec4feb602bd6b6e87deaa0287782976
{"p":"brc20-prog","op":"c","c":"0xd3a5b717ab78f6075def527f070b9ee0dc662828","b":"AayUxEr/DIHw72iLjcrT892rpprVKamfA6G3/xbTwhvOzO2h/yAyWqD/H4D/Hz5iYzFwbWhhZDJ5bWNydzRrbmxqZGNlOTIzcWZ3Y3A2N2swbDdtZXJla3h6cGFwcGZhMHQ5YWhucXRmODVlMgAA"}h!
GjE=:s:0x0052395b6422f579cA781aDD11737Ffe4fD93213:1104922/0/0:-_/t1:0/70mw
{"p":"brc20-prog","op":"c","c":"0x62879BB3dD949c4CF06f71BF7c281DcF24D163e7","b":"AfZoFej/DIHw72iLjcrT892rpprVKamfA6G3/x8M/xaUOxN3KQy9gP8h4P8eA7P/HgL/HwKg/x4B/xEGvN2+soZlkIX7qH0INMgW3tmmtt0gp1xFah/siUvnnZB0eMyQippsN+MeUyibC4z/EAwz6zczpNlWAQUgwIr/AdqulgoP8p5lWHRSLjF8W1i2rUcS6vAc4tRmmxK8yc4Tg8P/EA884P8BkTGQ38Kqqbp4olnGdVgaKOJ2lFX8De/ksv4v+tWSk0pL+K+T+qfNvxLhcpj/EAW3oYj6UuuxDBav3G/BcJxxlKSVm9ATD+QKu7e9J6YEui5nWbRH3cLybhroS8yr8P8fgP8QDswTA8+Zn7Y/dscL2ALN5yvIJvQ2XyAMKGC9KeAAJZbktDvbrKLjx2Oj30u7QG/6/xAN3iF8P/c5J4Bq0YDhTWgL
D7xBOSRvEBsnzfqDZvn14ZBAd552leu8zrw+eM/4mPbf/H0HCOS/5nbos/wGliu/iIsxwTj7YnYCke6D65h3XmQhzloBGJr8Gp+xxGGvfR/csQ689vlaJIc12ifKM1vf3M07PRBv/Hw"}h!
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"Ququn","amt":"100"}h!
DjB0x36327fe8bfab59c2d5301a8d5b1c9bdedb94e92834276f677a5bad2bc8e325e9
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5015288852"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4985885555"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5503992289"}h!
DjB0x311d5dd30b779f1c289c9d2e6ad4568491ef66bc0864fea4faff55bedf72da05B
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"AMT ","amt":"2599.8"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5551245555"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"AMT ","amt":"1200"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"AMT ","amt":"1500"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTC.D","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Eyed","amt":"5000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"3000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"300000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5014525555"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"AMT ","amt":"1300"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"AMT ","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5345188882"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"erke","amt":"680"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"BTCs","amt":"1420.728766"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5015525555"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Eyed","amt":"5000"}h!
DjB0xd206174f5e1052e59517af23f6390bc80585dd91582c2d8539156b2f522c4faf
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5015255552"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"8"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"AMT ","amt":"1700"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5041558888"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4995788558"}h!
/j-8FI:to:TRX:TKPxW4FJ2Wb1G44Wk5PLuEsxPf8Qx9SoNF3
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM","amt":"280"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5000000002"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36p9","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"79"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"AMT ","amt":"2000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"66"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"21"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"56"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Eyed","amt":"5000"}h!
DjB0x5b8227d088f3d7701b2aa5a741624cf05fcb1069e653bc38d63edcdc48ef8ed2
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6708548555"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5018285552"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
DjB0x31fcd0fa544b4d47acecbeafc8c723c05ec8fcd5231955a1bd03c747d49019ab
3j1SHINPAI-AI:1.5.0:699b8253883a67077e90f00c3bfa8034
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"suco","amt":"1000"}h!
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Exit Protocol</title>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Press+Start+2P&display=swap" rel="stylesheet">
* { margin: 0; padding: 0; box-sizing: border-box; }
body { overflow: hidden; font-family: system-M
ui, sans-serif; background: #0a0a10; }
#game { display: block; width: 100vw; height: 100vh; outline: none; }
position: fixed; left: 0; right: 0; bottom: 0; padding: 14px 20px;
color: rgba(255,255,255,.6); font-size: 11px; letter-spacing: .08em;
pointer-events: none; z-index: 2;
background: linear-gradient(transparent, rgba(0,0,0,.55));
position: fixed; top: 50%; left: 50%; width: 22px; height: 22px;
transform: translate(-50%, -50%); pointer-eM
vents: none; z-index: 3;
#crosshair::before, #crosshair::after {
content: ""; position: absolute; background: rgba(255,255,255,.6);
#crosshair::before { left: 0; top: 50%; width: 100%; height: 1px; transform: translateY(-50%); }
#crosshair::after { left: 50%; top: 0; width: 1px; height: 100%; transform: translateX(-50%); }
#crosshair-dot {
position: absolute; top: 50%; left: 50%; width: 4px; height: 4px;
background: rgba(255,255,255,.9); border-radius: 50%;
orm: translate(-50%, -50%);
box-shadow: 0 0 6px rgba(255,255,255,0.4);
/* Pixel font loaded from Google Fonts */
position: fixed; inset: 0; display: flex; flex-direction: column; align-items: center;
justify-content: flex-start; z-index: 10; cursor: default; text-align: center;
padding: 20px; overflow-y: auto;
radial-gradient(ellipse 80% 60% at 25% 15%, rgba(30,108,255,.13), transparent 60%),
radial-gradient(ellipse 70% 60% at 80% 85%,M
rgba(255,108,30,.13), transparent 60%),
radial-gradient(ellipse at center, #11111e 0%, #06060c 70%);
image-rendering: pixelated;
/* Animated scanline / grid layer */
#start::before {
content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 0;
repeating-linear-gradient(0deg, transparent 0, transparent 3px, rgba(30,108,255,.04) 3px, rgba(30,108,255,.04) 4px),
repeating-linear-gradient(90deg, transparent 0, transparent 3px, rgba(255,M
108,30,.025) 3px, rgba(255,108,30,.025) 4px);
animation: gridDrift 14s linear infinite;
/* Sweeping aperture beam */
content: ''; position: absolute; inset: 0; pointer-events: none; z-index: 0;
radial-gradient(circle at 20% 30%, rgba(30,108,255,.18) 0%, transparent 18%),
radial-gradient(circle at 80% 70%, rgba(255,108,30,.18) 0%, transparent 18%),
radial-gradient(circle at 50% 50%, rgba(255,255,255,.04) 0%, transparent 35%);
nimation: orbDrift 18s ease-in-out infinite alternate;
mix-blend-mode: screen;
@keyframes gridDrift {
0% { background-position: 0 0, 0 0; opacity: .55; }
50% { opacity: .85; }
100% { background-position: 0 64px, 64px 0; opacity: .55; }
@keyframes orbDrift {
0% { background-position: 0% 0%, 0% 0%, 0% 0%; transform: scale(1); }
50% { background-position: 12% -8%, -10% 8%, 4% -4%; transform: scale(1.05); }
100% { background-position: -10% 6%, 8% -10%,M
-3% 5%; transform: scale(1.02); }
/* Animated starfield / floating dust layer */
position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
#start-bg .particle {
position: absolute; border-radius: 50%; opacity: 0;
animation: floatUp linear infinite;
@keyframes floatUp {
0% { transform: translate3d(0, 100vh, 0) scale(0.5); opacity: 0; }
10% { opacity: 0.7; }
50% { transform: translate3d(var(--drift, 0), 50vh, 0M
) scale(0.95); opacity: 0.85; }
90% { opacity: 0.7; }
100% { transform: translate3d(calc(var(--drift, 0) * 1.4), -10vh, 0) scale(1.15); opacity: 0; }
/* Slow rotating aperture rings centered behind everything */
position: fixed; left: 50%; top: 38%; transform: translate(-50%, -50%);
width: min(80vmin, 720px); height: min(80vmin, 720px);
pointer-events: none; z-index: 0; opacity: .35;
#start-rings::before, #start-rings::after {
content: ''; M
position: absolute; inset: 0; border-radius: 50%;
border: 1px solid rgba(100,170,255,.12);
box-shadow: inset 0 0 80px rgba(30,108,255,.05);
#start-rings::before { animation: ringSpin 80s linear infinite; }
#start-rings::after {
inset: 8%; border-color: rgba(255,160,40,.10);
box-shadow: inset 0 0 60px rgba(255,108,30,.05);
animation: ringSpin 60s linear reverse infinite;
@keyframes ringSpin { from { transform: rotate(0); } to { transform: rotate(360deg); } }
margin-top: clamp(20px, 5vh, 50px); position: relative; z-index: 1;
font-family: 'Press Start 2P', ui-monospace, monospace;
font-size: clamp(0.55rem, 1.4vw, 0.7rem); font-weight: 400; letter-spacing: .35em;
text-transform: uppercase; color: rgba(255,160,40,.95); margin-bottom: 12px;
text-shadow: 0 0 12px rgba(255,160,40,.4);
font-family: 'Press Start 2P', ui-monospace, monospace;
font-size: clamp(1.6rem, 5vw, 2.M
8rem); font-weight: 400; letter-spacing: .3em;
color: #fff; margin-bottom: 4px; text-transform: uppercase;
text-shadow: 0 0 20px rgba(30,108,255,.5), 0 0 40px rgba(30,108,255,.2),
3px 3px 0 rgba(255,108,30,.3), -1px -1px 0 rgba(30,108,255,.3);
font-family: 'Press Start 2P', ui-monospace, monospace;
font-size: clamp(0.45rem, 1.2vw, 0.6rem); letter-spacing: .25em; color: rgba(255,255,255,.3);
margin-bottom: 24px; text-transform: uppercase;
#start-portals {
display: flex; gap: 22px; justify-content: center; margin-bottom: 20px;
position: relative; z-index: 1;
.start-portal-icon {
width: 56px; height: 56px; border-radius: 50%; border: 3px solid;
opacity: 0.85; animation: portalPulse 2.4s ease-in-out infinite;
position: relative;
.start-portal-icon::before {
content: ''; position: absolute; inset: 6px; border-radius: 50%;
border: 1px solid rgba(255,255,255,.25);
animation: portalSpiM
n 6s linear infinite;
.start-portal-icon::after {
content: ''; position: absolute; inset: 14px; border-radius: 50%;
background: radial-gradient(circle, rgba(255,255,255,.35) 0%, transparent 70%);
animation: portalCorePulse 1.8s ease-in-out infinite;
.start-portal-icon.blue {
border-color: #1e6cff;
box-shadow: 0 0 22px #1e6cff88, 0 0 50px #1e6cff44, inset 0 0 14px #1e6cff55;
.start-portal-icon.orange {
border-color: #ff6c1e;
box-shadow: 0 0 22pxM
#ff6c1e88, 0 0 50px #ff6c1e44, inset 0 0 14px #ff6c1e55;
animation-delay: 1.2s;
.start-portal-icon.orange::after { animation-delay: 0.9s; }
@keyframes portalPulse {
0%,100% { transform: scale(1); box-shadow: 0 0 18px currentColor, inset 0 0 10px currentColor; }
50% { transform: scale(1.10); }
@keyframes portalSpin { from { transform: rotate(0); } to { transform: rotate(360deg); } }
@keyframes portalCorePulse {
0%,100% { opacity: .35; transform: scale(.85); }
50% { opacity: .85; transform: scale(1.1); }
display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
gap: 10px; max-width: 680px; width: 100%; margin: 0 auto 20px; position: relative; z-index: 1;
.start-level-card {
background: rgba(20,22,35,.9); border: 2px solid rgba(100,170,255,.15);
border-radius: 8px; padding: 12px 14px; text-align: left; cursor: pointer;
transition: all .2s; position: relative; overflow: hidden;
.start-level-card:hover {
border-color: rgba(100,170,255,.6); background: rgba(30,40,70,.9);
transform: translateY(-2px); box-shadow: 0 4px 20px rgba(30,108,255,.2);
.start-level-card.tutorial { border-color: rgba(50,255,120,.3); }
.start-level-card.tutorial:hover { border-color: rgba(50,255,120,.7); box-shadow: 0 4px 20px rgba(50,255,120,.2); }
.start-level-num {
font-family: 'Press Start 2P', ui-monospace, monospace;
font-size: 9px; color: #6af; letter-spacing: .1M
em; margin-bottom: 4px;
.start-level-card.tutorial .start-level-num { color: #30ff70; }
.start-level-title {
font-family: system-ui, sans-serif; font-size: 13px; font-weight: 700;
color: #eee; margin-bottom: 3px; line-height: 1.2;
.start-level-line {
font-family: system-ui, sans-serif; font-size: 10px; color: rgba(255,255,255,.35);
line-height: 1.3; font-style: italic;
.start-level-tag {
position: absolute; top: 8px; right: 8px;
font-family: 'PreM
ss Start 2P', ui-monospace, monospace;
font-size: 7px; padding: 2px 6px; border-radius: 3px;
background: rgba(50,255,120,.15); color: #30ff70; letter-spacing: .05em;
#start-controls {
display: grid; grid-template-columns: 1fr 1fr; gap: 4px 28px;
font-family: 'Press Start 2P', ui-monospace, monospace;
font-size: 8px; color: rgba(255,255,255,.3); line-height: 2.2; text-align: left;
max-width: 480px; margin-top: 8px; position: relative; z-index: 1;
display: inline-block; padding: 1px 5px; border-radius: 2px;
background: rgba(255,255,255,.08); border: 1px solid rgba(255,255,255,.15);
font-family: 'Press Start 2P', ui-monospace, monospace; font-size: 7px;
color: rgba(255,255,255,.55); margin: 0 1px;
position: relative; margin-top: 12px; font-family: 'Press Start 2P', ui-monospace, monospace;
font-size: 7px; color: rgba(255,255,255,.12); letter-spacing: .1em; z-index: 1;
padding-bottom: 16M
position: fixed; inset: 0; display: flex; align-items: center; justify-content: center;
background: #111; color: #888; z-index: 20; font-size: 13px; letter-spacing: .15em;
/* Slowfire-Style: Maus ohne Pointer Lock (clientX/Y-Delta + Rand-Recenter) */
#mouse-bar { position: fixed; bottom: 6px; left: 0; width: 100%; height: 2px; z-index: 12; pointer-events: none; display: none; background: rgba(255,255,255,.08); }
#mouse-dot { position: absolute; top: -2px; widthM
: 6px; height: 6px; background: #6af; border-radius: 50%; transform: translateX(-50%); }
position: fixed; bottom: 18px; left: 50%; transform: translateX(-50%); z-index: 13; pointer-events: none;
font-size: 11px; font-weight: 800; color: #6af; letter-spacing: .2em; text-transform: uppercase; opacity: 0; transition: opacity .12s;
position: fixed; inset: 0; display: none; align-items: center; justify-content: center; flex-direction: column;
background: rgbM
a(0,0,0,.55); z-index: 15; cursor: default;
#recenter-ring { position: relative; width: 120px; height: 120px; }
#recenter-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
#recenter-ring circle { fill: none; stroke-width: 4px; }
#recenter-bg { stroke: rgba(255,255,255,.15); }
#recenter-prog { stroke: #6af; stroke-linecap: round; transition: stroke-dashoffset .05s linear; }
#recenter-arrow { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); fontM
-size: 2rem; color: #fff; pointer-events: none; }
#recenter-txt { margin-top: 14px; font-size: 11px; font-weight: 700; color: rgba(255,255,255,.55); letter-spacing: .15em; }
/* Portal-Debug (F3 / ?portaldebug=1): Rohdaten f
r Abgleich der RT-Ansicht */
#portal-debug-hud {
position: fixed; top: 8px; right: 8px; z-index: 25; display: none;
font: 10px/1.35 ui-monospace, monospace; color: rgba(200,255,200,.92);
text-align: right; text-shadow: 0 1px 2px #000; pointer-events: none;
x-width: min(420px, 96vw);
position: fixed; top: 8px; left: 38px; z-index: 24; display: none;
font: 11px system-ui; color: rgba(255,200,120,.92); max-width: 320px;
background: rgba(15,15,22,.88); border: 1px solid rgba(255,200,120,.35);
border-radius: 6px; padding: 8px 10px; line-height: 1.4;
text-shadow: 0 1px 2px #000; pointer-events: auto; cursor: pointer;
#embed-hint-btn {
position: fixed; top: 8px; left: 8px; z-index: 24;
width: 24px; M
height: 24px; border-radius: 50%;
background: rgba(15,15,22,.85); color: rgba(255,200,120,.85);
border: 1px solid rgba(255,200,120,.45);
font: 700 13px ui-monospace, monospace; line-height: 22px;
text-align: center; cursor: pointer; user-select: none;
transition: all .15s ease;
#embed-hint-btn:hover {
background: rgba(40,30,15,.95); color: rgba(255,220,150,1);
border-color: rgba(255,200,120,.85);
/** Geht ohne Tastaturfokus (iframe / ord.io): Zeiger haltM
position: fixed; right: 10px; bottom: 56px; z-index: 100;
display: none; grid-template-columns: 44px 44px 44px; grid-template-rows: 44px 44px 44px;
gap: 4px; user-select: none; touch-action: none;
#touch-pad button {
width: 44px; height: 44px; border-radius: 8px; border: 1px solid rgba(255,255,255,.25);
background: rgba(40,44,58,.92); color: rgba(255,255,255,.9); font: 700 14px system-ui;
cursor: pointer; padding: 0M
#touch-pad button:active { background: rgba(90,120,200,.95); }
#touch-pad .tp-sp { grid-column: 2; grid-row: 1; }
#touch-pad .tp-sl { grid-column: 1; grid-row: 2; }
#touch-pad .tp-sd { grid-column: 2; grid-row: 2; }
#touch-pad .tp-sr { grid-column: 3; grid-row: 2; }
/* Atmospheric vignette overlay */
position: fixed; inset: 0; pointer-events: none; z-index: 4;
background: radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,0.45) 100%);
/* Scanline overlay for retro-scientific feel */
position: fixed; inset: 0; pointer-events: none; z-index: 5; opacity: 0.03;
background: repeating-linear-gradient(
transparent,
transparent 2px,
rgba(0,0,0,0.4) 2px,
rgba(0,0,0,0.4) 4px
#hud-hp { font-family: ui-monospace, monospace; }
box-shadow: 0 0 8px rgba(0,255,100,0.3), inset 0 0 3px rgba(0,0,0,0.5);
oading">LOADING THREE.JS
<div id="start-rings"></div>
<div id="start-bg"></div>
<div id="start-header">
<div id="start-logo">
PLAY IN FULL SCREEN</div>
<h1>EXIT PROTOCOL</h1>
<div id="start-portals">
<div class="start-portal-icon blue"></div>
<div class="start-portal-icon orange"></div>
<div id="start-levels"></div>
<div id="start-controls">
<div><kbd>W</kbd><kbd>A</kbd><kbd>S</kbd><kbd>D</kbd> Move</dM
<div><kbd>Space</kbd> Jump</div>
<div><kbd>LMB</kbd> Blue Portal</div>
<div><kbd>RMB</kbd> Orange Portal</div>
<div><kbd>E</kbd> Grab Cube</div>
<div><kbd>R</kbd> Reset Portals</div>
<div><kbd>N</kbd>/<kbd>P</kbd> Level
<kbd>L</kbd> List</div>
<div><kbd>1</kbd>-<kbd>9</kbd>,<kbd>0</kbd> Shaders</div>
<div><kbd>+</kbd>/<kbd>-</kbd> Mouse Sens.</div>
<div id="start-foot">Exit Protocol
(function startBgParticlesM
var bg = document.getElementById('start-bg');
if (!bg) return;
var COUNT = 36;
var COLORS = [
['rgba(30,108,255,', '#1e6cff'], // blue
['rgba(255,108,30,', '#ff6c1e'], // orange
['rgba(180,200,255,', '#aac4ff'] // soft white-blue
var frag = document.createDocumentFragment();
for (var i = 0; i < COUNT; i++) {
var c = COLORS[i % COLORS.length];
var size = 2 + Math.random() * 4;
var dur = 14 + Math.random() * 22;
var delay = -Math.random() * dur;
var left = Math.random() * 100;
var drift = (Math.random() - 0.5) * 40;
var p = document.createElement('div');
p.className = 'particle';
p.style.cssText =
'left:' + left + 'vw;' +
'width:' + size + 'px;height:' + size + 'px;' +
'background:' + c[0] + '0.85);' +
'box-shadow:0 0 ' + (size*4) + 'px ' + c[1] + ',0 0 ' + (size*8) + 'px ' + c[0] + '0.4);' +
'animation-duration:' + dur + 's;' +M
'animation-delay:' + delay + 's;' +
'--drift:' + drift + 'vw;';
frag.appendChild(p);
bg.appendChild(frag);
<canvas id="game"></canvas>
<div id="crosshair"><div id="crosshair-dot"></div></div>
<div style="display:flex;align-items:center;gap:12px">
<span id="hud-chamber" style="color:#6af;font-size:15px">Test Chamber 00</span>
<span id="hud-hp" style="font-size:12px;color:#ff4444;font-weight:bold;display:none">
<span id="hud-hp-bar" style="display:inline-block;width:80px;height:6px;background:rgba(255,255,255,.15);border-radius:3px;vertical-align:middle;overflow:hidden">
<span id="hud-hp-fill" style="display:block;width:100%;height:100%;background:#ff4444;border-radius:3px;transition:width .2s"></span>
<span id="hud-hp-text" style="margin-left:4px">100</span>
<div style="margin-top:2px;opacity:.7;font-size:12px"><span id="hud-line">
style="margin-top:4px;opacity:.85"><span id="hud-obj" style="font-size:11px;opacity:.6">LMB/RMB = Portal
+/- = Mouse</span></div>
<div id="hud-skip" style="display:none;margin-top:6px;opacity:.9;color:#ffcc00;font-size:13px;cursor:pointer" onclick="window._skipTutorial && window._skipTutorial()">
ENTER = Skip Tutorial</div>
<div id="quit-btn" style="display:none;position:fixed;top:1M
4px;right:14px;z-index:45;background:rgba(0,0,0,.72);border:1px solid rgba(255,80,80,.55);border-radius:8px;padding:7px 14px;font-family:monospace;font-size:12px;color:#ffaaaa;cursor:pointer;letter-spacing:.08em;backdrop-filter:blur(6px)" onclick="window._openPauseMenu && window._openPauseMenu()">
MENU <span style="opacity:.5;margin-left:6px">[ESC]</span></div>
<!-- Pause / ESC menu: Resume / Restart / Quit -->
<div id="pause-menu" style="display:none;position:fixed;inset:0;z-index:60;background:rgba(5,7,1M
2,.78);backdrop-filter:blur(8px);align-items:center;justify-content:center;font-family:'Press Start 2P',ui-monospace,monospace">
<div style="background:rgba(15,18,28,.96);border:1px solid rgba(255,160,40,.45);border-radius:14px;padding:34px 44px;min-width:300px;text-align:center;box-shadow:0 0 60px rgba(255,160,40,.18),inset 0 0 30px rgba(255,160,40,.06)">
<div style="font-size:14px;letter-spacing:.35em;color:rgba(255,180,80,.95);margin-bottom:6px;text-shadow:0 0 12px rgba(255,160,40,.45)">PAUSED</div>
<div id="pause-sub" style="font:11px ui-monospace,monospace;letter-spacing:.12em;color:rgba(180,180,200,.6);margin-bottom:22px">—</div>
<button type="button" class="pause-btn" data-act="resume">
<button type="button" class="pause-btn" data-act="restart">
RESTART LEVEL</button>
<button type="button" class="pause-btn" data-act="quit">
QUIT TO MENU</button>
<div style="margin-top:18px;font:9px ui-monospace,monospace;letter-spacing:.18em;color:rgba(160,160,1M
80,.45)">ESC = resume</div>
display:block; width:100%; margin:6px 0; padding:11px 14px;
background: rgba(40,44,58,.55); color: rgba(230,230,240,.92);
border: 1px solid rgba(255,160,40,.3); border-radius: 8px;
font: 400 11px 'Press Start 2P', ui-monospace, monospace; letter-spacing:.15em;
cursor: pointer; transition: all .12s ease; text-align: left;
.pause-btn:hover {
background: rgba(255,160,40,.18); border-color: rgba(255,M
color: #fff; text-shadow: 0 0 6px rgba(255,200,90,.6); transform: translateY(-1px);
.pause-btn:active { transform: translateY(0); }
.pause-btn[data-act="quit"] { border-color: rgba(255,80,80,.4); color: rgba(255,180,180,.92); }
.pause-btn[data-act="quit"]:hover { background: rgba(255,80,80,.2); border-color: rgba(255,120,120,.9); }
<div id="hud-help" style="display:none;position:fixed;bottom:80px;left:50%;transform:translateX(-50%);z-index:40;background:rgba(0,0,0,.M
88);border:1px solid rgba(100,170,255,.4);border-radius:12px;padding:16px 28px;max-width:560px;text-align:center;font-family:monospace;color:#dde;pointer-events:none">
<div style="color:#6af;font-size:14px;font-weight:bold;margin-bottom:6px" id="hud-help-title">Help</div>
<div style="font-size:13px;line-height:1.5" id="hud-mission">
<div id="hud-stuck-box" style="display:none;margin-top:12px;padding:10px 14px;background:rgba(255,200,0,.10);border:1px solid rgba(255,200,0,.4);border-radius:8px;tM
<div style="color:#ffcc00;font-size:12px;font-weight:bold;margin-bottom:4px">STUCK? TRY THIS:</div>
<div id="hud-stuck-text" style="font-size:12px;line-height:1.5;color:#ffeeaa">
<div style="margin-top:8px;font-size:11px;opacity:.5">H = Toggle Help
R = Respawn at start</div>
<div id="level-select" style="display:none;position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.82);color:#dde;font-family:monospace;overflow-y:auto">
iv style="max-width:520px;margin:40px auto;padding:24px">
<h2 style="margin:0 0 16px;color:#6af;font-size:18px;letter-spacing:.12em">LEVEL SELECT <span style="font-size:12px;opacity:.6">(Click or Number)</span></h2>
<div id="level-list"></div>
<div style="margin-top:16px;opacity:.55;font-size:12px">ESC or L = close</div>
<div id="mouse-bar"><div id="mouse-dot"></div></div>
<div id="edge-warn"></div>
<div id="recenter">
<div id="recenter-ring">
<svg viewBox="0 0 M
<circle id="recenter-bg" cx="60" cy="60" r="52" stroke="rgba(255,255,255,.15)" fill="none"/>
<circle id="recenter-prog" cx="60" cy="60" r="52" stroke="#6af" fill="none" stroke-dasharray="326.73" stroke-dashoffset="326.73"/>
<div id="recenter-arrow"></div>
<div id="recenter-txt">MOVE MOUSE TO CENTER</div>
<div id="vignette"></div>
<div id="scanlines"></div>
<div id="damage-flash" style="position:fixed;inset:0;pointer-events:none;z-index:6;opaM
city:0;transition:opacity .05s;background:radial-gradient(ellipse at center,transparent 40%,rgba(255,0,0,.4) 100%)"></div>
<div id="embed-hint-btn" title="Show iframe / debug hints">?</div>
<div id="embed-hint"></div>
<div id="calibrate-overlay" style="display:none;position:fixed;inset:0;z-index:70;background:rgba(5,7,12,.92);align-items:center;justify-content:center;font-family:'Press Start 2P',ui-monospace,monospace;color:rgba(255,200,90,.9);text-align:center;flex-direction:column">
<div style="font-siM
ze:14px;letter-spacing:.4em;margin-bottom:14px;text-shadow:0 0 12px rgba(255,160,40,.5)">CALIBRATING MAPS</div>
<div style="font:11px ui-monospace,monospace;letter-spacing:.15em;color:rgba(180,180,200,.7);margin-bottom:18px">identifying inscriptions...</div>
<div style="width:160px;height:3px;background:rgba(255,160,40,.15);border-radius:2px;overflow:hidden">
<div style="width:40%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,180,80,.95),transparent);animation:calibSlide 1.2s lineaM
<style>@keyframes calibSlide { 0%{transform:translateX(-160px)} 100%{transform:translateX(160px)} }</style>
<!-- Tutorial step-by-step instruction panel (shown only during tutorial) -->
<div id="tutorial-panel" style="display:none;position:fixed;left:50%;top:18%;transform:translateX(-50%);z-index:34;background:rgba(8,10,16,0.88);border:2px solid rgba(110,200,255,0.7);border-radius:12px;padding:18px 28px;min-width:320px;max-width:560px;text-align:center;font-family:'PresM
s Start 2P',ui-monospace,monospace;color:#fff;box-shadow:0 0 28px rgba(110,200,255,0.35),inset 0 0 14px rgba(110,200,255,0.1);transition:transform 0.18s ease,border-color 0.25s ease;pointer-events:none">
<div id="tutorial-step-title" style="font-size:13px;letter-spacing:0.25em;color:rgba(140,210,255,0.95);margin-bottom:10px;text-shadow:0 0 10px rgba(110,200,255,0.7)">1 / 11 — MOVEMENT</div>
<div id="tutorial-step-text" style="font:13px/1.55 ui-monospace,monospace;letter-spacing:0.04em;color:rgba(230,2M
40,255,0.95)">Use W A S D to move. Walk forward toward the white arrow.</div>
<!-- Tutorial Step 8: Hazard briefing modal (shown once at the right moment) -->
<div id="tutorial-briefing" style="display:none;position:fixed;inset:0;z-index:60;background:rgba(4,6,12,0.92);align-items:center;justify-content:center;flex-direction:column;font-family:'Press Start 2P',ui-monospace,monospace;color:#fff;padding:30px">
<div style="max-width:740px;width:100%;background:rgba(10,14,22,0.94);border:2px solid rgbM
a(255,180,80,0.7);border-radius:14px;padding:28px 36px;box-shadow:0 0 40px rgba(255,160,40,0.3),inset 0 0 18px rgba(255,160,40,0.08)">
<div style="font-size:16px;letter-spacing:0.32em;color:rgba(255,200,90,0.95);text-align:center;margin-bottom:6px;text-shadow:0 0 14px rgba(255,160,40,0.7)">FIELD BRIEFING</div>
<div style="font:11px ui-monospace,monospace;letter-spacing:0.18em;color:rgba(180,180,200,0.7);text-align:center;margin-bottom:24px">hazards & advanced techniques you will face</div>
v style="display:grid;grid-template-columns:1fr 1fr;gap:16px;font:12px/1.55 ui-monospace,monospace;color:rgba(230,235,245,0.95)">
<div style="background:rgba(255,60,60,0.08);border-left:3px solid rgba(255,90,90,0.85);padding:12px 14px;border-radius:4px">
<div style="font-family:'Press Start 2P',monospace;font-size:11px;color:#ff6464;letter-spacing:0.18em;margin-bottom:8px">
Red beams. <b style="color:#ff8080">Touching kills you instantly.</b> Block them with a cube, or reM
direct them with portals.
<div style="background:rgba(255,180,40,0.08);border-left:3px solid rgba(255,180,80,0.85);padding:12px 14px;border-radius:4px">
<div style="font-family:'Press Start 2P',monospace;font-size:11px;color:#ffb050;letter-spacing:0.18em;margin-bottom:8px">
White sentries with a red laser eye. They <b style="color:#ffb050">shoot you on sight</b>. Sneak from behind, knock them over, or shield with a cube.
<div style="M
background:rgba(170,210,255,0.08);border-left:3px solid rgba(190,220,255,0.85);padding:12px 14px;border-radius:4px">
<div style="font-family:'Press Start 2P',monospace;font-size:11px;color:#b8d8ff;letter-spacing:0.18em;margin-bottom:8px">
Glowing white walls. They <b style="color:#b8d8ff">destroy your portals</b> when you cross. Dropped cubes get vaporised too.
<div style="background:rgba(110,200,255,0.08);border-left:3px solid rgba(110,200,255,0.85);paddM
ing:12px 14px;border-radius:4px">
<div style="font-family:'Press Start 2P',monospace;font-size:11px;color:#6ec8ff;letter-spacing:0.18em;margin-bottom:8px">
SLINGSHOT (FLING)</div>
Falling speed transfers through portals. Drop into a <b>floor portal</b> from height
you'll <b style="color:#6ec8ff">launch out of the wall portal</b> at high speed.
<div style="display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:14px;font:12px/1.55 ui-monospace,monosM
pace;color:rgba(230,235,245,0.92)">
<div style="background:rgba(140,255,160,0.06);border-left:3px solid rgba(140,255,160,0.7);padding:10px 14px;border-radius:4px">
<div style="font-family:'Press Start 2P',monospace;font-size:10px;color:#9bff9b;letter-spacing:0.18em;margin-bottom:6px">
NO-PORTAL ZONES</div>
Some surfaces (white grids, fizzlers, glass) <b>refuse portals</b>. The crosshair will warn you.
<div style="background:rgba(200,160,255,0.06);border-left:3pxM
solid rgba(200,160,255,0.7);padding:10px 14px;border-radius:4px">
<div style="font-family:'Press Start 2P',monospace;font-size:10px;color:#caa8ff;letter-spacing:0.18em;margin-bottom:6px">
[E] grab/drop | [R] reset portals | [G] in-game guide | [ESC] pause
<div id="tutorial-briefing-cta" style="margin-top:26px;text-align:center;font:11px ui-monospace,monospace;letter-spacing:0.28em;color:rgba(255,210,140,0.95);teM
xt-shadow:0 0 10px rgba(255,170,60,0.6);cursor:pointer;user-select:none">
PRESS [SPACE] OR CLICK TO CONTINUE</div>
<div id="portal-debug-hud"></div>
<div id="touch-pad" aria-hidden="true">
<button type="button" class="tp-sp" data-k="KeyW">W</button>
<button type="button" class="tp-sl" data-k="KeyA">A</button>
<button type="button" class="tp-sd" data-k="KeyS">S</button>
<button type="button" class="tp-sr" data-k="KeyD">D</button>
<script type="importmap">
"three": "/content/0d013bb60fc5bf5a6c77da7371b07dc162ebc7d7f3af0ff3bd00ae5f0c546445i0",
"three/addons/loaders/GLTFLoader.js": "/content/af27eb654e3f1ce4036fd5b415fe441202f0c784e3e1e03cb63890b5e820297ci0",
"three/addons/loaders/DRACOLoader.js": "/content/701931ffd87e9a547834542357cbf5d975b740073aec9eeb62ef96254f570520i0"
<script type="module">
single-file Bitcoin Ordinals inscription
* All dependencies (three.js, GLTFLoader, DRACOLoader, Draco decM
* are loaded on-chain via /content/<inscription-id> URLs.
* Inscription set: Three.js + GLTFLoader + DRACOLoader from the racegame
* (ordinals.html). Draco decoder (asm.js) is split across 2 chunks and
* instantiated on the main thread (no Web Worker
safer for ordinal envs).
import * as _THREE from 'three';
import { GLTFLoader as _GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { DRACOLoader as _DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';
var GLTFLoader = _GLTFLoader;
var DRACOLoader = _DRACOLoader;
var _dracoLoaderInstance = null;
var PISTOL_INSC = null;
var AVATAR_WALK_INSC = null;
var AVATAR_IDLE_INSC = null;
// Polyfill .preload() on older inscribed DRACOLoader builds
if (!DRACOLoader.prototype.preload) {
DRACOLoader.prototype.preload = function () { this._initDecoder(); return this; };
// ---- Draco main-thread decoder (no Web Worker) ----
var _TYPED_ARRAYS = {
'Float32Array': Float32Array, 'Int8Array': Int8Array, 'Int16Array': Int1M
'Int32Array': Int32Array, 'Uint8Array': Uint8Array, 'Uint16Array': Uint16Array,
'Uint32Array': Uint32Array
DRACOLoader.prototype._decodeMainThread = function (buffer, taskConfig) {
var draco = this._draco;
var decoder = new draco.Decoder();
var array = new Int8Array(buffer);
var attributeIDs = taskConfig.attributeIDs;
var attributeTypes = taskConfig.attributeTypes;
var dracoGeometry, decodingStatus;
var geometryType = decoder.GetEncodedGeometryType(array);
metryType === draco.TRIANGULAR_MESH) {
dracoGeometry = new draco.Mesh();
decodingStatus = decoder.DecodeArrayToMesh(array, array.byteLength, dracoGeometry);
} else if (geometryType === draco.POINT_CLOUD) {
dracoGeometry = new draco.PointCloud();
decodingStatus = decoder.DecodeArrayToPointCloud(array, array.byteLength, dracoGeometry);
throw new Error('THREE.DRACOLoader: Unexpected geometry type.');
if (!decodingStatus.ok() || dracoGeometry.ptr === 0) {
hrow new Error('THREE.DRACOLoader: Decoding failed: ' + decodingStatus.error_msg());
var geometry = { index: null, attributes: [] };
for (var attributeName in attributeIDs) {
var attributeType = _TYPED_ARRAYS[attributeTypes[attributeName]] || Float32Array;
var attribute, attributeID;
if (taskConfig.useUniqueIDs) {
attributeID = attributeIDs[attributeName];
attribute = decoder.GetAttributeByUniqueId(dracoGeometry, attributeID);
attributeID = decoM
der.GetAttributeId(dracoGeometry, draco[attributeIDs[attributeName]]);
if (attributeID === -1) continue;
attribute = decoder.GetAttribute(dracoGeometry, attributeID);
var numComponents = attribute.num_components();
var numPoints = dracoGeometry.num_points();
var numValues = numPoints * numComponents;
var byteLength = numValues * attributeType.BYTES_PER_ELEMENT;
switch (attributeType) {
case Float32Array: dataType = draco.DT_FLOAT32; bM
case Int8Array: dataType = draco.DT_INT8; break;
case Int16Array: dataType = draco.DT_INT16; break;
case Int32Array: dataType = draco.DT_INT32; break;
case Uint8Array: dataType = draco.DT_UINT8; break;
case Uint16Array: dataType = draco.DT_UINT16; break;
case Uint32Array: dataType = draco.DT_UINT32; break;
var ptr = draco._malloc(byteLength);
decoder.GetAttributeDataArrayForAllPoints(dracoGeometry, attribute, dataType, byteLength, M
var resultArray = new attributeType(draco.HEAPF32.buffer, ptr, numValues).slice();
draco._free(ptr);
var result = { name: attributeName, array: resultArray, itemSize: numComponents };
if (attributeName === 'color') result.vertexColorSpace = taskConfig.vertexColorSpace;
geometry.attributes.push(result);
if (geometryType === draco.TRIANGULAR_MESH) {
var numFaces = dracoGeometry.num_faces();
var numIndices = numFaces * 3;
var byteLen = numIndices * 4;
var idxPtr = draco._malloc(byteLen);
decoder.GetTrianglesUInt32Array(dracoGeometry, byteLen, idxPtr);
var index = new Uint32Array(draco.HEAPF32.buffer, idxPtr, numIndices).slice();
draco._free(idxPtr);
geometry.index = { array: index, itemSize: 1 };
draco.destroy(dracoGeometry);
return geometry;
draco.destroy(decoder);
// Override worker-based decodeGeometry with main-thread version when _draco is preloaded.
var _origDecodeGeometry = DRACOLoader.proM
totype.decodeGeometry;
DRACOLoader.prototype.decodeGeometry = function (buffer, taskConfig) {
if (this._draco) {
var self = this;
return new Promise(function (resolve, reject) {
var g = self._decodeMainThread(buffer, taskConfig);
resolve(self._createGeometry(g));
} catch (e) { reject(e); }
return _origDecodeGeometry.call(this, buffer, taskConfig);
// ---- Draco decoder JS (split across 2 inscriptions, joined and run on main thread) ----
'/content/b969fd350f588831192572a11707a3a5e3f73dea61fe818d79f2d7209989d47bi0',
'/content/febdcbc379c731bfb12d3d07746d4f2079b28a042e86ce11721aa0dd97011f79i0'
var _preloadedDracoModule = null;
async function setupDRACO() {
var texts = await Promise.all(DRACO_DECODER_CHUNKS.map(function (url) {
return fetch(url).then(function (r) { return r.text(); });
var jsContent = texts.join('');
_preloadedDracoModule = await new Promise(function (resolve, reject) {
= new Function(jsContent + '\nreturn DracoDecoderModule;')();
var resolved = false;
onModuleLoaded: function (mod) { if (!resolved) { resolved = true; resolve(mod); } },
onRuntimeInitialized: function () { if (!resolved) { resolved = true; resolve(this); } }
var result = factory(cfg);
if (result && typeof result.then === 'function') {
result.then(function (mod) { if (!resolved) { resolved = true; resolve(mod); } });
setTimeout(functiM
if (!resolved) {
if (result && result._malloc) { resolved = true; resolve(result); }
else reject(new Error('DRACO decoder init timed out'));
} catch (e) { reject(e); }
_dracoLoaderInstance = new DRACOLoader();
_dracoLoaderInstance._draco = _preloadedDracoModule;
_dracoLoaderInstance.decoderPending = Promise.resolve();
await setupDRACO();
console.error('[DRACO] Setup failed:', err);
var _le = document.getEleM
mentById('loading');
if (_le) _le.textContent = 'DRACO ERROR: ' + err.message;
// Continue anyway
non-Draco GLBs will still work.
document.getElementById('loading').style.display = 'none';
var _qs = (function () {
return new URLSearchParams(window.location.search);
return { get: function () { return null; }, has: function () { return false; } };
var RUNS_IN_IFRAME = false;
RUNS_IN_IFRAME = window.self !M
RUNS_IN_IFRAME = true;
* Slowfire-Rand-Stop: im iframe (ord.io, Vorschau) ist der Viewport klein
). Standard: im iframe aus.
* Erzwingen: ?edge=1
Top-Level abschalten: ?noedge=1
var USE_MOUSE_EDGE_RECENTER = _qs.get('noedge') !== '1';
var PORTAL_DEBUG_URL = _qs.get('portaldebug') === '1' || _qs.get('debug') === 'portal';
/** RT-Textur: RenderTarget flipY muss falM
se sein (WebGL-Framebuffer ist bereits korrekt orientiert); ?portalrtflip=1 zum Testen */
var PORTAL_RT_TEXTURE_FLIP_Y = _qs.get('portalrtflip') === '1';
/** RT-Zuordnung: blau zeigt rtB (virtuelle Kamera an orange), orange zeigt rtO
KEIN Tausch. ?portalswap=1 zum Testen. */
var PORTAL_SWAP_RT_MAP = _qs.get('portalswap') === '1';
lteren Exportern liefert manchmal "format" (Textur); neuere Three-Versionen
* kennen das nicht auf MeshStandardMaterial
verhindert Konsolen-Spam beiM
['MeshStandardMaterial', 'MeshPhysicalMaterial'].forEach(function (name) {
var C = THREE[name];
if (!C || !C.prototype || !C.prototype.setValues) return;
var orig = C.prototype.setValues;
C.prototype.setValues = function (values) {
if (values && typeof values === 'object' && values.format !== undefined) {
values = Object.assign({}, values);
delete values.format;
return orig.call(this, values);
// ========== KONFIG ==========
var PLAYER_R = 0.32;
var MOVE_SPEED = 7;
var SPRINT_MUL = 1.45;
// Jump physics: max height = JUMP_V^2 / (2*GRAVITY).
// 8.4^2 / (2*22)
matches Source Engine standard obstacle clearance.
// This is required so the player can clear walls/ledges in the GLB Portal maps
// (Hammer Editor maps are designed for ~1.5 m jump height).
var _coyoteTime = 0;
var _wasOnGround = false;
/** Luft: leichte Quersteuerung M
ohne horizontale Geschwindigkeit zu zerst
ren (Portal-Feel) */
var AIR_CONTROL_ACCEL = 38;
var AIR_SPEED_CAP = 28;
var GROUND_STOP_DECAY = 18;
var MOUSE_SENS = 0.009;
var VOID_RESPAWN_Y = -40;
/** Vertikaler Blickweite: fast
, damit Boden/Decke direkt
treffbar (Portal setzen) */
var PITCH_LIMIT = Math.PI / 2 - 0.0012;
var PORTAL_W = 2.45;
var PORTAL_H = 3.35;
/** Sicht- und Kollisionsradius (Kreis statt Rechteck) */
var PORTAL_CIRCLE_R = Math.min(PORTAL_W, PORTAL_H) * 0.49M
/** Kurz, damit Boden
Decke-Endlosschleife nicht durch Sperre blockiert wird */
var PORTAL_COOLDOWN = 0.12;
var PORTAL_EPS = 0.12;
/** Z-Spiegelung im Portal-Lokalraum: virtuelle Kamera hinter dem Exit-Portal, schaut durch es hindurch. Erzeugt det=-1 (reflektiert)
Face-Culling-Fix in updatePortalViews n
tig, Horizontal-Flip dynamisch per inner.scale.x. */
var PORTAL_LOCAL_MIRROR = new THREE.Matrix4().set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1);
det=+1, korrekte Orientierung (vorw
rts raus). Rendering nutzt weiterhin PORTAL_LOCAL_MIRROR (Reflexion + UV-Flip). */
var PORTAL_TELEPORT_ROT = new THREE.Matrix4().set(-1, 0, 0, 0, 0, 1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 1);
/** Durchtritt: nicht F
e (liegen oft unter Portalmitte an der Wand), sondern K
sonst springt local.y aus dem Rechteck. */
var PORTAL_SAMPLE_Y = PLAYER_H * 0.48;
var WALL_USER = 'wall';
var portalDebugHudVisible = PORTAL_DEBUG_URL;
var portalDebugHuM
dEl = document.getElementById('portal-debug-hud');
var embedHintEl = document.getElementById('embed-hint');
var _dbgTmpFwd = new THREE.Vector3();
var _dbgVirtBFwd = new THREE.Vector3();
var _dbgVirtOFwd = new THREE.Vector3();
var BLUE = 0x1e6cff;
var ORANGE = 0xff6c1e;
var COL_FLOOR = 0x2e2e38;
var COL_WALL = 0x4a4a58;
// ========== PROCEDURAL AUDIO ENGINE ==========
var audioCtx = null;
var _masterGain = null;
var _reverbNode = null;
var _sfxVol = 0.4;
function _ensureAudio() {
audioCtx = new (window.AudioContext || window.webkitAudioContext)();
_masterGain = audioCtx.createGain();
_masterGain.gain.value = _sfxVol;
_masterGain.connect(audioCtx.destination);
// Build reverb
var len = audioCtx.sampleRate * 2.5;
var buf = audioCtx.createBuffer(2, len, audioCtx.sampleRate);
for (var ch = 0; ch < 2; ch++) {
var d = buf.getChannelData(ch);
for (var i = 0; i < len; i++) d[i] = (Math.random() * 2 - 1) * Math.pow(1 - iM
_reverbNode = audioCtx.createConvolver();
_reverbNode.buffer = buf;
if (audioCtx.state === 'suspended') audioCtx.resume();
return audioCtx;
function _playTone(freq, dur, type, vol, attack, decay) {
var c = _ensureAudio();
var o = c.createOscillator();
var g = c.createGain();
o.type = type || 'sine';
o.frequency.value = freq;
g.gain.value = 0;
var v = (vol || 0.1) * _sfxVol;
var t = c.currentTime;
g.gain.setTargetAtTime(v, t, M
g.gain.setTargetAtTime(0, t + (dur || 0.1), decay || 0.05);
g.connect(_masterGain);
o.stop(t + dur + (decay || 0.05) * 5 + 0.1);
return { osc: o, gain: g };
function _playNoise(dur, vol, lpFreq, hpFreq) {
var c = _ensureAudio();
var sz = Math.ceil(c.sampleRate * dur);
var buf = c.createBuffer(1, sz, c.sampleRate);
var d = buf.getChannelData(0);
for (var i = 0; i < sz; i++) d[i] = Math.random() * 2 - 1;
var src = c.creM
src.buffer = buf;
var chain = src;
var hp = c.createBiquadFilter(); hp.type = 'highpass'; hp.frequency.value = hpFreq;
chain.connect(hp); chain = hp;
var lp = c.createBiquadFilter(); lp.type = 'lowpass'; lp.frequency.value = lpFreq;
chain.connect(lp); chain = lp;
var g = c.createGain();
g.gain.value = (vol || 0.05) * _sfxVol;
g.gain.setTargetAtTime(0, c.currentTime + dur * 0.6, dur * 0.3);
g.connect(_masterGain);
function sfxPortalPlace() {
_playTone(880, 0.06, 'sine', 0.12, 0.002, 0.03);
_playTone(1320, 0.08, 'sine', 0.08, 0.01, 0.04);
_playNoise(0.05, 0.06, 3000, 800);
setTimeout(function() { _playTone(1760, 0.04, 'sine', 0.05, 0.005, 0.02); }, 40);
function sfxTeleport() {
var c = _ensureAudio();
var o = c.createOscillator();
var g = c.createGain();
o.type = 'sine';
o.frequency.value = 120;
.setTargetAtTime(800, c.currentTime, 0.08);
o.frequency.setTargetAtTime(60, c.currentTime + 0.15, 0.1);
g.gain.value = 0.15 * _sfxVol;
g.gain.setTargetAtTime(0, c.currentTime + 0.25, 0.1);
o.connect(g); g.connect(_masterGain);
o.start(); o.stop(c.currentTime + 0.6);
_playNoise(0.2, 0.08, 2000, 100);
_playTone(220, 0.15, 'triangle', 0.06, 0.01, 0.08);
function sfxFootstep() {
_playNoise(0.06, 0.025, 800, 60);
_playTone(80 + Math.random() * 40, 0.04, 'sine', 0.02, 0.002, 0.0M
function sfxDamage() {
_playNoise(0.15, 0.12, 4000, 200);
_playTone(200, 0.1, 'sawtooth', 0.08, 0.002, 0.05);
_playTone(100, 0.12, 'sine', 0.1, 0.001, 0.06);
function sfxDeath() {
_playTone(300, 0.3, 'sawtooth', 0.12, 0.002, 0.15);
_playTone(150, 0.4, 'sine', 0.1, 0.01, 0.2);
_playNoise(0.3, 0.1, 3000, 100);
setTimeout(function() { _playTone(80, 0.5, 'sine', 0.08, 0.05, 0.3); }, 200);
function sfxDoorOpen() {
var c = _ensureAudio();
var o = c.createOscillM
var g = c.createGain();
o.type = 'square';
o.frequency.value = 60;
o.frequency.linearRampToValueAtTime(180, c.currentTime + 0.2);
g.gain.value = 0.06 * _sfxVol;
g.gain.setTargetAtTime(0, c.currentTime + 0.2, 0.1);
o.connect(g); g.connect(_masterGain);
o.start(); o.stop(c.currentTime + 0.5);
_playNoise(0.2, 0.04, 600, 40);
function sfxTurretFire() {
_playNoise(0.08, 0.1, 6000, 1000);
_playTone(1200, 0.05, 'square', 0.06, 0.001, 0.02);
_playTone(600, 0.06M
, 'sawtooth', 0.04, 0.001, 0.03);
function sfxFizzler() {
var c = _ensureAudio();
var o = c.createOscillator();
var g = c.createGain();
o.type = 'sawtooth';
o.frequency.value = 4000;
o.frequency.setTargetAtTime(200, c.currentTime, 0.1);
g.gain.value = 0.08 * _sfxVol;
g.gain.setTargetAtTime(0, c.currentTime + 0.15, 0.08);
o.connect(g); g.connect(_masterGain);
o.start(); o.stop(c.currentTime + 0.5);
_playNoise(0.15, 0.06, 8000, 1000);
function sfxButtonPress()M
_playTone(660, 0.04, 'sine', 0.1, 0.001, 0.02);
_playTone(880, 0.06, 'sine', 0.08, 0.01, 0.03);
function sfxLowHP() {
_playTone(60, 0.15, 'sine', 0.08, 0.02, 0.08);
setTimeout(function() { _playTone(60, 0.15, 'sine', 0.06, 0.02, 0.08); }, 250);
// ========== GENERATIVE AMBIENT SOUND (Aperture Science Atmosphere) ==========
var ApertureAmbient = (function() {
var running = false, ctx = null, master = null;
var allNodes = [], timers = [];
var NOTE = { C1: 32.7, E1: 41.2,M
G1: 49, C2: 65.41, Eb2: 77.78, G2: 98, C3: 130.81, Eb3: 155.56, G3: 196, C4: 261.63 };
[NOTE.C1, NOTE.G1, NOTE.C2, NOTE.Eb2, NOTE.G2],
[NOTE.C1 * 0.75, NOTE.C2 * 0.75, NOTE.Eb2 * 0.75, NOTE.G2 * 0.75],
[NOTE.C1 * 1.12, NOTE.G1 * 1.12, NOTE.C2 * 1.12, NOTE.Eb2 * 1.12],
[NOTE.C1 * 0.89, NOTE.E1 * 0.89, NOTE.C2 * 0.89, NOTE.G2 * 0.89]
var chordIdx = 0;
function mkReverb() {
var len = ctx.sampleRate * 4;
var buf = ctx.createBuffer(2, len, ctx.samplM
for (var ch = 0; ch < 2; ch++) {
var d = buf.getChannelData(ch);
for (var i = 0; i < len; i++) d[i] = (Math.random() * 2 - 1) * Math.pow(1 - i / len, 2.8) * (1 + Math.sin(i / 1200) * 0.2);
var cv = ctx.createConvolver(); cv.buffer = buf;
function mkDrone(freq, vol) {
var g = ctx.createGain(); g.gain.value = vol;
var o1 = ctx.createOscillator(); o1.type = 'sine'; o1.frequency.value = freq;
var o2 = ctx.createOscillator(); o2.tyM
pe = 'sine'; o2.frequency.value = freq * 1.003;
var sg1 = ctx.createGain(); sg1.gain.value = 0.5;
var sg2 = ctx.createGain(); sg2.gain.value = 0.5;
o1.connect(sg1); sg1.connect(g);
o2.connect(sg2); sg2.connect(g);
var lfo = ctx.createOscillator(); lfo.type = 'sine';
lfo.frequency.value = 0.03 + Math.random() * 0.05;
var lg = ctx.createGain(); lg.gain.value = freq * 0.003;
lfo.connect(lg); lg.connect(o1.frequency); lg.connect(o2.frequency);
o1.start(); o2.start()M
allNodes.push(o1, o2, lfo);
function mkPad(freqs, rev) {
var bus = ctx.createGain(); bus.gain.value = 0;
var dry = ctx.createGain(); dry.gain.value = 0.4;
var wet = ctx.createGain(); wet.gain.value = 0.6;
bus.connect(dry); dry.connect(master);
bus.connect(rev); rev.connect(wet); wet.connect(master);
for (var i = 0; i < freqs.length; i++) {
var d = mkDrone(freqs[i], 0.02 + 0.003 * Math.sin(i));
d.connect(bus);
bus.gain.setTargetAtTime(1, ctx.currentTime, 3);
function mkNoise(rev) {
var sz = ctx.sampleRate * 3;
var buf = ctx.createBuffer(2, sz, ctx.sampleRate);
for (var ch = 0; ch < 2; ch++) {
var d = buf.getChannelData(ch);
for (var i = 0; i < sz; i++) d[i] = Math.random() * 2 - 1;
var src = ctx.createBufferSource(); src.buffer = buf; src.loop = true;
var lp = ctx.createBiquadFilter(); lp.type = 'lowpass'; lp.frequency.value = 150; M
var hp = ctx.createBiquadFilter(); hp.type = 'highpass'; hp.frequency.value = 30;
var g = ctx.createGain(); g.gain.value = 0.015;
src.connect(hp); hp.connect(lp); lp.connect(g);
g.connect(master);
var gW = ctx.createGain(); gW.gain.value = 0.5;
g.connect(rev); rev.connect(gW); gW.connect(master);
src.start(); allNodes.push(src);
var breathe = ctx.createOscillator(); breathe.type = 'sine'; breathe.frequency.value = 0.06;
var bG = ctx.createGain(M
); bG.gain.value = 40;
breathe.connect(bG); bG.connect(lp.frequency); breathe.start(); allNodes.push(breathe);
function mkMetallic() {
var g = ctx.createGain(); g.gain.value = 0;
g.connect(master);
timers.push(setInterval(function() {
if (!running) return;
var t = ctx.currentTime;
var freq = 2000 + Math.random() * 4000;
var o = ctx.createOscillator(); o.type = 'sine';
o.frequency.value = freq;
var sg = ctx.createGain(); sg.gain.valueM
= 0.008 + Math.random() * 0.005;
sg.gain.setTargetAtTime(0, t + 0.05, 0.1);
o.connect(sg); sg.connect(master);
o.start(t); o.stop(t + 0.5);
}, 4000 + Math.random() * 8000));
function mkPulse() {
timers.push(setInterval(function() {
if (!running) return;
var t = ctx.currentTime;
var o = ctx.createOscillator(); o.type = 'sine';
o.frequency.value = NOTE.C1 * 0.5;
var g = ctx.createGain(); g.gain.value = 0;
g.gain.setTargetAM
tTime(0.035, t, 0.2);
g.gain.setTargetAtTime(0, t + 1, 0.5);
o.connect(g); g.connect(master);
o.start(t); o.stop(t + 3);
}, 10000 + Math.random() * 6000));
var curPad = null, rev = null;
start: function() {
if (running) return;
ctx = _ensureAudio();
master = ctx.createGain();
master.gain.value = 0;
master.connect(ctx.destination);
running = true;
rev = mkReverb();
curPad = mkPad(CHORDS[chordIM
mkNoise(rev);
mkMetallic();
master.gain.setTargetAtTime(0.18, ctx.currentTime, 2);
timers.push(setInterval(function() {
if (!running) return;
if (curPad) curPad.gain.setTargetAtTime(0, ctx.currentTime, 2);
chordIdx = (chordIdx + 1) % CHORDS.length;
curPad = mkPad(CHORDS[chordIdx], rev);
}, 20000 + Math.random() * 10000));
stop: function() {
if (!running) return;
running = falsM
for (var i = 0; i < timers.length; i++) clearInterval(timers[i]);
timers = [];
if (master) master.gain.setTargetAtTime(0, ctx.currentTime, 1);
setTimeout(function() {
for (var j = 0; j < allNodes.length; j++) {
try { allNodes[j].stop(); } catch(e) {}
try { allNodes[j].disconnect(); } catch(e) {}
allNodes = [];
curPad = null;
var _lastStepTime = 0;
// ========== SZENE / M
var canvas = document.getElementById('game');
// iframe / debug hint: hidden by default, click the "?" button (top-left) or
// press H to toggle. Click the hint itself to dismiss.
if (embedHintEl) {
embedHintEl.innerHTML =
'<b style="color:#ffcc88">iframe / debug hints:</b><br>' +
'\u2022 Touch-WASD bottom right (or click game area for keyboard).<br>' +
'\u2022 Portal view swapped? \u2192 add <code>?portalswap=1</code> to URL.<br>' +
'\u2022 <code>F3</code> =M
debug overlay (FPS, pos).<br>' +
'\u2022 <code>?pad=0</code> = disable touch pad.<br>' +
'<span style="opacity:.6;font-size:10px">(click to dismiss \u2022 H to toggle)</span>';
var _embedHintBtn = document.getElementById('embed-hint-btn');
function _toggleEmbedHint() {
var shown = embedHintEl.style.display === 'block';
embedHintEl.style.display = shown ? 'none' : 'block';
if (_embedHintBtn) _embedHintBtn.addEventListener('click', _toggleEmbedHint);
embedHintEl.addEventM
Listener('click', function() { embedHintEl.style.display = 'none'; });
window.addEventListener('keydown', function(e) {
if (e.code === 'KeyH' && !e.repeat && !e.ctrlKey && !e.metaKey && !e.altKey) {
var t = e.target && e.target.tagName;
if (t === 'INPUT' || t === 'TEXTAREA') return;
_toggleEmbedHint();
var scene = new THREE.Scene();
scene.background = new THREE.Color(0x080810);
scene.fog = new THREE.FogExp2(0x0a0a12, 0.012);
var camera = new THREE.PerspM
ectiveCamera(72, window.innerWidth / window.innerHeight, 0.07, 200);
camera.rotation.order = 'YXZ';
var renderer = new THREE.WebGLRenderer({ canvas: canvas, antialias: true, preserveDrawingBuffer: true });
renderer.setSize(window.innerWidth, window.innerHeight);
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
renderer.shadowMap.enabled = true;
renderer.shadowMap.type = THREE.PCFSoftShadowMap;
renderer.toneMapping = THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure = 1.1;
derer.outputEncoding = THREE.sRGBEncoding;
if (THREE.SRGBColorSpace) renderer.outputColorSpace = THREE.SRGBColorSpace;
// ========== MULTI-SHADER SYSTEM ==========
var _shaderMode = 0; // 0=off, 1=comic, 2=neon, 3=psx, 4=noir, 5=thermal, 6=glitch, 7=tron, 8=pixel, 9=watercolor, 10=xray
var SHADER_NAMES = ['Normal','Comic','Bitmap','PSX','Noir','Thermal','Glitch','Tron','Pixel','Aquarell','X-Ray'];
var _shaderOverlay = null, _shaderOvCtx = null;
var _shaderDown = null, _shaderDownCtx = null;
var _mempoolDrops = null, _mempoolBlocks = null;
var _mempoolState = null;
// mempool.space-like fee buckets -> color
function _mempoolFeeColor(satvb) {
if (satvb < 2) return '#1a4a7a';
if (satvb < 6) return '#2d6fa8';
if (satvb < 15) return '#3aa3d6';
if (satvb < 40) return '#7fd13b';
if (satvb < 100) return '#f0c419';
if (satvb < 250) return '#e8762d';
return '#d63031';
function _randHex(n) {
for (var i = 0; i < n; i++) s += '0123456M
789abcdef'[Math.floor(Math.random()*16)];
function _makeMempoolTx() {
// Realistic distribution: most low fee, some high
var r = Math.random();
if (r < 0.55) sat = 1 + Math.floor(Math.random()*8);
else if (r < 0.85) sat = 8 + Math.floor(Math.random()*30);
else if (r < 0.97) sat = 40 + Math.floor(Math.random()*100);
else sat = 150 + Math.floor(Math.random()*400);
var size = 140 + Math.floor(Math.random() * 1200);
return { hash: _randHex(8), sat: sat, sM
ize: size, color: _mempoolFeeColor(sat) };
function _makeMempoolBlock() {
// A new "current" block being filled (mosaic of tx rectangles)
var b = { txs: [], filled: 0, target: 800 + Math.floor(Math.random()*400) };
var n = 60 + Math.floor(Math.random()*30);
for (var i = 0; i < n; i++) b.txs.push(_makeMempoolTx());
// ---- Bitmap.land-style procedural texture for Shader 2 (Mempool) -----
// Generates an orange-on-black mosaic of randomly-sized squares,
// mimicking the M
visual of bitmap.land / mempool.space block visualizations.
// Built once and cached as a THREE.CanvasTexture.
var _bitmapTexCache = null;
function _getBitmapTexture() {
if (_bitmapTexCache) return _bitmapTexCache;
var c = document.createElement('canvas');
c.width = c.height = SIZE;
var ctx = c.getContext('2d');
// Pure black background
ctx.fillStyle = '#000';
ctx.fillRect(0, 0, SIZE, SIZE);
// Mempool/Bitcoin palette
'#f7931a', '#fM
f9416', '#ffa733', '#ffb84d', // bitcoin orange shades
'#e8762d', '#d96e1e', '#ff6c1e', // deeper orange
'#ff3b3b' // rare red accent
// Subdivide canvas into random squares (treemap-like greedy fill).
function fillRegion(x, y, w, h, depth) {
if (w < 6 || h < 6 || depth > 6) {
if (Math.random() < 0.97) {
ctx.fillStyle = palette[Math.floor(Math.random() * palette.length)];
ctx.fillRect(x + 1, y + 1, w - 2,M
// tiny inner pixel detail
if (w > 12 && Math.random() < 0.18) {
ctx.fillStyle = '#000';
ctx.fillRect(x + w/2 - 1, y + h/2 - 1, 2, 2);
// Random split (horizontal / vertical / quad)
var r = Math.random();
if (r < 0.4) {
var sw = Math.floor(w * (0.35 + Math.random() * 0.3));
fillRegion(x, y, sw, h, depth + 1);
fillRegion(x + sw, y, w - sw, h, depth + 1);
} else if (r < 0.M
var sh = Math.floor(h * (0.35 + Math.random() * 0.3));
fillRegion(x, y, w, sh, depth + 1);
fillRegion(x, y + sh, w, h - sh, depth + 1);
var hw = Math.floor(w / 2), hh = Math.floor(h / 2);
fillRegion(x, y, hw, hh, depth + 1);
fillRegion(x + hw, y, w - hw, hh, depth + 1);
fillRegion(x, y + hh, hw, h - hh, depth + 1);
fillRegion(x + hw, y + hh, w - hw, h - hh, depth + 1);
fillRegion(0, 0, SIZE, SIZE, 0);
new THREE.CanvasTexture(c);
tex.wrapS = tex.wrapT = THREE.RepeatWrapping;
tex.repeat.set(2.5, 2.5);
tex.magFilter = THREE.NearestFilter;
tex.minFilter = THREE.NearestMipmapNearestFilter;
tex.needsUpdate = true;
_bitmapTexCache = tex;
function _ensureOverlay() {
if (!_shaderOverlay) {
_shaderOverlay = document.createElement('canvas');
_shaderOverlay.id = 'shader-overlay';
_shaderOverlay.style.cssText = 'position:fixed;inset:0;pointer-events:none;zM
-index:3;width:100vw;height:100vh';
document.body.appendChild(_shaderOverlay);
if (!_shaderDown) _shaderDown = document.createElement('canvas');
return _shaderOverlay;
function _resetShaderState() {
canvas.style.filter = '';
canvas.style.imageRendering = '';
renderer.setPixelRatio(Math.min(window.devicePixelRatio, 2));
renderer.setSize(window.innerWidth, window.innerHeight);
if (_shaderOverlay) { _shaderOverlay.style.display = 'none'; _shaderOverlay.style.mixBlendMode M
= ''; _shaderOverlay.style.opacity = '1'; }
var scanEl = document.getElementById('scanlines');
scanEl.style.opacity = '0.03';
scanEl.style.background = 'repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,0.4) 2px,rgba(0,0,0,0.4) 4px)';
var vigEl = document.getElementById('vignette');
if (vigEl) vigEl.style.background = 'radial-gradient(ellipse at center, transparent 55%, rgba(0,0,0,0.45) 100%)';
scene.traverse(function(n) {
if (!n.isMesh |M
| !n.material) return;
if (n.material._origRoughness !== undefined) { n.material.roughness = n.material._origRoughness; delete n.material._origRoughness; }
if (n.material._origWireframe !== undefined) { n.material.wireframe = n.material._origWireframe; delete n.material._origWireframe; }
if (n.material._origOpacity !== undefined) { n.material.opacity = n.material._origOpacity; n.material.transparent = n.material._origTransparent; delete n.material._origOpacity; delete n.material._origTransparent; M
if (n.material._origFlatShading !== undefined) { n.material.flatShading = n.material._origFlatShading; delete n.material._origFlatShading; }
// Bitmap shader (mode 2) restore
if (n.material._origMap !== undefined) {
n.material.map = n.material._origMap;
if (n.material._origColor !== null && n.material.color) n.material.color.setHex(n.material._origColor);
if (n.material._origEmissive !== null && n.material.emissive) n.material.emissive.setHex(n.material._origEmissive);
if (n.material._origEmissiveIntensity !== null && n.material.emissiveIntensity !== undefined) n.material.emissiveIntensity = n.material._origEmissiveIntensity;
delete n.material._origMap;
delete n.material._origColor;
delete n.material._origEmissive;
delete n.material._origEmissiveIntensity;
n.material.needsUpdate = true;
n.material.needsUpdate = true;
scene.background = new THREE.Color(0x080810);
scene.fog = new THREE.FogExp2(0x0a0a12, 0.0M
function setShaderMode(mode) {
if (mode === _shaderMode) mode = 0;
_resetShaderState();
_mempoolDrops = null; _mempoolBlocks = null;
_shaderMode = mode;
if (mode === 0) { _showShaderHud(); return; }
_ensureOverlay();
if (mode === 1) { // Comic
canvas.style.filter = 'contrast(1.4) saturate(1.3)';
renderer.setPixelRatio(1); renderer.setSize(window.innerWidth, window.innerHeight);
_shaderOverlay.style.display = 'block'; _shaderOverlay.style.mixBlendMode = 'muM
ltiply'; _shaderOverlay.style.opacity = '0.7';
var scanEl = document.getElementById('scanlines');
if (scanEl) { scanEl.style.opacity = '0.06'; scanEl.style.background = 'repeating-linear-gradient(45deg,transparent,transparent 4px,rgba(0,0,0,0.3) 4px,rgba(0,0,0,0.3) 5px)'; }
scene.traverse(function(n) {
if (n.isMesh && n.material && n.material.isMeshStandardMaterial) {
n.material._origRoughness = n.material.roughness; n.material._origFlatShading = n.material.flatShading;
n.material.roughness = 1.0; n.material.flatShading = true; n.material.needsUpdate = true;
else if (mode === 2) { // Mempool / Bitmap.land aesthetic
// No HUD/data overlay
the WORLD itself becomes a bitmap-mosaic.
// Orange-on-black tile texture (bitmap.land style) on every wall,
// plus a mempool-orange tint and faint vignette.
canvas.style.filter = 'contrast(1.15) saturate(1.25) brightness(1.02)';
_shaderOverlay.style.display = 'none';
l2 = document.getElementById('vignette');
if (vigEl2) vigEl2.style.background = 'radial-gradient(ellipse at center, transparent 50%, rgba(20,8,2,0.6) 100%)';
var scanEl2 = document.getElementById('scanlines');
if (scanEl2) {
scanEl2.style.opacity = '0.10';
scanEl2.style.background = 'repeating-linear-gradient(0deg,transparent,transparent 3px,rgba(247,147,26,0.08) 3px,rgba(247,147,26,0.08) 4px)';
var bitmapTex = _getBitmapTexture();
scene.traverse(function(n) {
if (!n.isMesh || !n.material) return;
var mats = Array.isArray(n.material) ? n.material : [n.material];
mats.forEach(function(m) {
if (m._origMap === undefined) {
m._origMap = m.map || null;
m._origColor = m.color ? m.color.getHex() : null;
m._origEmissive = m.emissive ? m.emissive.getHex() : null;
m._origEmissiveIntensity = m.emissiveIntensity !== undefined ? m.emissiveIntensity : null;
// Skip portal/effect/UI mM
only re-skin world-like surfaces.
if (m.transparent && m.opacity < 0.95) return;
if (m.isMeshBasicMaterial && !m.map) return; // glow/beam materials
m.map = bitmapTex;
if (m.color) m.color.setHex(0xffffff);
if (m.emissive) { m.emissive.setHex(0xff7a1a); m.emissiveIntensity = 0.18; }
m.needsUpdate = true;
else if (mode === 3) { // PSX
renderer.setPixelRatio(0.35); renderer.setSize(window.innerWidth, window.M
canvas.style.imageRendering = 'pixelated';
canvas.style.filter = 'contrast(1.1) saturate(0.8)';
var scanEl = document.getElementById('scanlines');
if (scanEl) { scanEl.style.opacity = '0.08'; scanEl.style.background = 'repeating-linear-gradient(0deg,transparent,transparent 1px,rgba(0,0,0,0.5) 1px,rgba(0,0,0,0.5) 2px)'; }
else if (mode === 4) { // Noir
canvas.style.filter = 'grayscale(1) contrast(1.6) brightness(0.85)';
var vigEl = document.getElementById('M
if (vigEl) vigEl.style.background = 'radial-gradient(ellipse at center, transparent 30%, rgba(0,0,0,0.7) 100%)';
_shaderOverlay.style.display = 'block'; _shaderOverlay.style.mixBlendMode = 'overlay'; _shaderOverlay.style.opacity = '0.15';
else if (mode === 5) { // Thermal
_shaderOverlay.style.display = 'block'; _shaderOverlay.style.mixBlendMode = 'normal'; _shaderOverlay.style.opacity = '1';
else if (mode === 6) { // Glitch
_shaderOverlay.style.display = 'blocM
k'; _shaderOverlay.style.mixBlendMode = 'normal'; _shaderOverlay.style.opacity = '1';
var scanEl = document.getElementById('scanlines');
if (scanEl) { scanEl.style.opacity = '0.12'; scanEl.style.background = 'repeating-linear-gradient(0deg,transparent,transparent 1px,rgba(0,0,0,0.6) 1px,rgba(0,0,0,0.6) 2px)'; }
else if (mode === 7) { // Tron
canvas.style.filter = 'contrast(1.5) brightness(1.2)';
scene.background = new THREE.Color(0x000005);
scene.traverse(function(n) {
if (n.isMesh && n.material) {
var mats = Array.isArray(n.material) ? n.material : [n.material];
mats.forEach(function(m) {
m._origWireframe = m.wireframe; m.wireframe = true; m.needsUpdate = true;
else if (mode === 8) { // Pixel Art
renderer.setPixelRatio(0.12); renderer.setSize(window.innerWidth, window.innerHeight);
canvas.style.imageRendering = 'pixelated';
canvas.style.filter = 'contrast(1.2) saturate(1.5)';
else if (mode === 9) { // Watercolor
canvas.style.filter = 'blur(1.5px) saturate(1.4) contrast(0.85) brightness(1.1)';
_shaderOverlay.style.display = 'block'; _shaderOverlay.style.mixBlendMode = 'soft-light'; _shaderOverlay.style.opacity = '0.3';
else if (mode === 10) { // X-Ray
canvas.style.filter = 'invert(0.85) hue-rotate(180deg) contrast(1.2)';
scene.traverse(function(n) {
if (n.isMesh && n.material) {
var mats = Array.isArray(n.material) ? n.material : [n.mM
mats.forEach(function(m) {
if (m._origOpacity === undefined) { m._origOpacity = m.opacity; m._origTransparent = m.transparent; }
m.transparent = true; m.opacity = 0.3; m.needsUpdate = true;
_showShaderHud();
var _shaderHudTimer = 0;
function _showShaderHud() {
var el = document.getElementById('hud-line');
if (!el) return;
el.textContent = 'Shader: ' + SHADER_NAMES[_shaderMode] + ' (1-9,0 to switch)';
arTimeout(_shaderHudTimer);
_shaderHudTimer = setTimeout(function() {
if (chamberDef && chamberDef.line) el.textContent = chamberDef.line;
// Per-frame shader post-processing
function updateShaderOverlay() {
if (_shaderMode === 0) return;
var ov = _shaderOverlay;
if (!ov) return;
var dw = window.innerWidth, dh = window.innerHeight;
var scale = 0.25;
var sw = Math.floor(dw * scale), sh = Math.floor(dh * scale);
if (sw < 4 || sh < 4) reM
if (_shaderMode === 2) {
// Mode 2 (Mempool/Bitmap): the world materials are already re-skinned
// with the bitmap.land-style orange-on-black mosaic in setShaderMode().
// No HUD overlay needed
the world IS the visual.
// (legacy mempool HUD code kept below for reference, never reached)
if (false && _shaderMode === 2) {
if (ov.width !== dw) ov.width = dw;
if (ov.height !== dh) ov.height = dh;
if (!_shaderOvCtx) _shaderOvCtx = ov.getConteM
var mctx = _shaderOvCtx;
mctx.clearRect(0, 0, dw, dh);
var st = _mempoolState;
if (!st) return;
// ---- Update simulation ----
// Add a few new pending tx every frame
for (var ai = 0; ai < 3; ai++) st.feed.unshift(_makeMempoolTx());
if (st.feed.length > 18) st.feed.length = 18;
// Fill current block with a few txs from mempool
var currentBlock = st.currentBlock;
var fillRate = 4;
for (var fi = 0; fi < fillRate && currentBlock.filledM
< currentBlock.target; fi++) {
currentBlock.filled += 1;
// Mine a new block occasionally
var nowMs = performance.now();
if (nowMs >= st.nextBlockTime) {
st.confirmed.unshift({
height: 870000 + Math.floor(Math.random()*5000),
txs: 1500 + Math.floor(Math.random()*2500),
satvb: Math.max(1, Math.floor(Math.random()*180)),
if (st.confirmed.length > 8) st.confirmed.length = 8;
st.currentBlock = _makeMempM
st.nextBlockTime = nowMs + 8000 + Math.random()*7000;
st.flash = 1.0;
st.flash *= 0.94;
for (var ci = 0; ci < st.confirmed.length; ci++) st.confirmed[ci].age += 0.016;
// ---- Background dark vignette (mempool.space dark theme) ----
var bgGrad = mctx.createLinearGradient(0, 0, 0, dh);
bgGrad.addColorStop(0, 'rgba(8,14,30,0.35)');
bgGrad.addColorStop(1, 'rgba(8,14,30,0.10)');
mctx.fillStyle = bgGrad;
mctx.fillRect(0, 0, dw, dh);
// ---- TOP STRIP: "Confirmed Blocks" ----
var stripY = 8;
var stripH = 56;
mctx.fillStyle = 'rgba(8,14,30,0.78)';
mctx.fillRect(0, stripY, dw, stripH);
mctx.strokeStyle = 'rgba(105,150,210,0.4)';
mctx.lineWidth = 1;
mctx.strokeRect(0, stripY, dw, stripH);
mctx.font = 'bold 10px monospace';
mctx.fillStyle = '#9ec5ee';
mctx.fillText('CONFIRMED BLOCKS', 12, stripY + 12);
var bw = 56, bh = 36, bgap = 6;
var bx0 = 12, by0 = stripY + 16;
for (var ci2 = 0; ci2 < Math.min(st.confirmed.length, Math.floor((dw - 24) / (bw + bgap))); ci2++) {
var cb = st.confirmed[ci2];
var bx = bx0 + ci2 * (bw + bgap);
// Block rect
mctx.fillStyle = _mempoolFeeColor(cb.satvb);
mctx.fillRect(bx, by0, bw, bh);
// Highlight newest with glow
if (ci2 === 0 && cb.age < 1.5) {
mctx.strokeStyle = 'rgba(255,220,80,' + (1 - cb.age/1.5) + ')';
mctx.lineWidth = 2;
mctx.strokeRect(bx-1, by0-1, bw+M
mctx.fillStyle = 'rgba(0,0,0,0.55)';
mctx.fillRect(bx, by0, bw, 12);
mctx.fillStyle = '#fff';
mctx.font = 'bold 9px monospace';
mctx.fillText('#' + cb.height, bx + 3, by0 + 9);
mctx.font = '8px monospace';
mctx.fillStyle = 'rgba(255,255,255,0.92)';
mctx.fillText(cb.satvb + ' sat/vB', bx + 3, by0 + 22);
mctx.fillStyle = 'rgba(255,255,255,0.7)';
mctx.fillText(cb.txs + ' tx', bx + 3, by0 + 32);
FT PANEL: Pending tx feed ----
var panelW = 230, panelH = 320;
var panelX = 8, panelY = stripY + stripH + 10;
mctx.fillStyle = 'rgba(8,14,30,0.78)';
mctx.fillRect(panelX, panelY, panelW, panelH);
mctx.strokeStyle = 'rgba(105,150,210,0.4)';
mctx.strokeRect(panelX, panelY, panelW, panelH);
mctx.fillStyle = '#9ec5ee';
mctx.font = 'bold 10px monospace';
mctx.fillText('PENDING TRANSACTIONS', panelX + 8, panelY + 14);
mctx.fillStyle = 'rgba(255,255,255,0.45)';
mctx.font = '8px monospace';
mctx.fillText('hash sat/vB vsize', panelX + 8, panelY + 26);
var rowH = 16;
var maxRows = Math.floor((panelH - 36) / rowH);
for (var ri = 0; ri < Math.min(st.feed.length, maxRows); ri++) {
var tx = st.feed[ri];
var ry = panelY + 36 + ri * rowH;
mctx.fillStyle = tx.color;
mctx.fillRect(panelX + 8, ry, 4, rowH - 2);
mctx.fillStyle = 'rgba(255,255,255,0.85)';
mctx.font = '10px monospace';
llText(tx.hash, panelX + 18, ry + 10);
mctx.fillStyle = tx.color;
mctx.fillText(tx.sat + '', panelX + 110, ry + 10);
mctx.fillStyle = 'rgba(255,255,255,0.6)';
mctx.fillText(tx.size + ' B', panelX + 160, ry + 10);
// ---- RIGHT PANEL: Current block being mined (mosaic) ----
var rpW = 230, rpH = 230;
var rpX = dw - rpW - 8, rpY = stripY + stripH + 10;
mctx.fillStyle = 'rgba(8,14,30,0.78)';
mctx.fillRect(rpX, rpY, rpW, rpH);
mctx.strokeStyle M
= 'rgba(105,150,210,0.4)';
mctx.strokeRect(rpX, rpY, rpW, rpH);
mctx.fillStyle = '#ffd84a';
mctx.font = 'bold 10px monospace';
mctx.fillText('NEXT BLOCK (mining...)', rpX + 8, rpY + 14);
// Progress bar
var pct = currentBlock.filled / currentBlock.target;
mctx.fillStyle = 'rgba(255,255,255,0.10)';
mctx.fillRect(rpX + 8, rpY + 20, rpW - 16, 6);
mctx.fillStyle = '#ffd84a';
mctx.fillRect(rpX + 8, rpY + 20, (rpW - 16) * Math.min(1, pct), 6);
le = 'rgba(255,255,255,0.7)';
mctx.font = '8px monospace';
mctx.fillText(currentBlock.filled + ' / ' + currentBlock.target + ' tx packed', rpX + 8, rpY + 36);
// Mosaic of tx rectangles (each tx sized by vsize, colored by fee rate)
var mxStart = rpX + 8, myStart = rpY + 44, mxW = rpW - 16, mxH = rpH - 52;
var totalArea = 0;
for (var ti2 = 0; ti2 < currentBlock.txs.length; ti2++) totalArea += currentBlock.txs[ti2].size;
var areaScale = (mxW * mxH) / totalArea;
mxStart, cy = myStart, rowMaxH = 0;
for (var ti3 = 0; ti3 < currentBlock.txs.length; ti3++) {
var t = currentBlock.txs[ti3];
var aW = Math.max(6, Math.sqrt(t.size * areaScale * 1.6));
var aH = Math.max(6, (t.size * areaScale) / aW);
if (cx + aW > mxStart + mxW) {
cy += rowMaxH + 1;
cx = mxStart; rowMaxH = 0;
if (cy + aH > myStart + mxH) break;
mctx.fillStyle = t.color;
mctx.fillRect(cx, cy, aW - 1, aH - 1);
if (aH > rowMaxH) rowMaxH = aH;
// ---- BOTTOM TICKER: live stats ----
var totSat = 0, count = 0;
for (var fi2 = 0; fi2 < st.feed.length; fi2++) { totSat += st.feed[fi2].sat; count++; }
var avgSat = count > 0 ? Math.round(totSat / count) : 0;
mctx.fillStyle = 'rgba(8,14,30,0.85)';
mctx.fillRect(0, dh - tH, dw, tH);
mctx.strokeStyle = 'rgba(105,150,210,0.4)';
mctx.strokeRect(0, dh - tH, dw, tH);
mctx.font = 'bold 11px monospaM
mctx.fillStyle = '#9ec5ee';
mctx.fillText('mempool.exit-protocol', 12, dh - 10);
mctx.fillStyle = '#fff';
mctx.font = '11px monospace';
mctx.fillText('Avg fee: ', 200, dh - 10);
mctx.fillStyle = _mempoolFeeColor(avgSat);
mctx.fillText(avgSat + ' sat/vB', 260, dh - 10);
mctx.fillStyle = '#fff';
mctx.fillText('| Mempool: ' + (st.feed.length * 137) + ' tx', 350, dh - 10);
mctx.fillText('| Block in: ' + Math.max(0, ((st.nextBlockTime - nowMs) / 1000).toFiM
xed(1)) + 's', 520, dh - 10);
mctx.fillStyle = '#ffd84a';
mctx.fillText('| HALVING T-' + (210000 - (Math.floor(nowMs/100) % 200000)), 680, dh - 10);
// ---- "NEW BLOCK!" flash ----
if (st.flash > 0.05) {
mctx.fillStyle = 'rgba(255,216,74,' + (st.flash * 0.18) + ')';
mctx.fillRect(0, 0, dw, dh);
mctx.fillStyle = 'rgba(255,216,74,' + Math.min(1, st.flash * 1.4) + ')';
mctx.font = 'bold 36px monospace';
var msg = 'NEW BLOCK MINED';
var mw = mctx.M
measureText(msg).width;
mctx.fillText(msg, (dw - mw) / 2, dh / 2 - 60);
if (_shaderMode === 1) {
// Sobel edge detection (every 2nd frame)
if (_shaderFrame % 2 !== 0) return;
if (_shaderDown.width !== sw) _shaderDown.width = sw;
if (_shaderDown.height !== sh) _shaderDown.height = sh;
if (!_shaderDownCtx) _shaderDownCtx = _shaderDown.getContext('2d', { willReadFrequently: true });
_shaderDownCtx.drawImage(canvas, 0, 0, sw, sh);
mgData = _shaderDownCtx.getImageData(0, 0, sw, sh);
var src = imgData.data;
var out = _shaderDownCtx.createImageData(sw, sh);
var dst = out.data;
for (var y = 1; y < sh - 1; y++) {
for (var x = 1; x < sw - 1; x++) {
var idx = (y * sw + x) * 4;
var tl = src[((y-1)*sw+(x-1))*4]*.299+src[((y-1)*sw+(x-1))*4+1]*.587+src[((y-1)*sw+(x-1))*4+2]*.114;
var tc = src[((y-1)*sw+x)*4]*.299+src[((y-1)*sw+x)*4+1]*.587+src[((y-1)*sw+x)*4+2]*.114;
var tr = src[(M
(y-1)*sw+(x+1))*4]*.299+src[((y-1)*sw+(x+1))*4+1]*.587+src[((y-1)*sw+(x+1))*4+2]*.114;
var ml = src[(y*sw+(x-1))*4]*.299+src[(y*sw+(x-1))*4+1]*.587+src[(y*sw+(x-1))*4+2]*.114;
var mr = src[(y*sw+(x+1))*4]*.299+src[(y*sw+(x+1))*4+1]*.587+src[(y*sw+(x+1))*4+2]*.114;
var bl = src[((y+1)*sw+(x-1))*4]*.299+src[((y+1)*sw+(x-1))*4+1]*.587+src[((y+1)*sw+(x-1))*4+2]*.114;
var bc = src[((y+1)*sw+x)*4]*.299+src[((y+1)*sw+x)*4+1]*.587+src[((y+1)*sw+x)*4+2]*.114;
var brr= src[((M
y+1)*sw+(x+1))*4]*.299+src[((y+1)*sw+(x+1))*4+1]*.587+src[((y+1)*sw+(x+1))*4+2]*.114;
var gx = -tl-2*ml-bl+tr+2*mr+brr;
var gy = -tl-2*tc-tr+bl+2*bc+brr;
var edge = Math.sqrt(gx*gx+gy*gy);
var v = edge > 25 ? 0 : 255;
dst[idx]=v; dst[idx+1]=v; dst[idx+2]=v; dst[idx+3]=255;
_shaderDownCtx.putImageData(out, 0, 0);
if (ov.width !== dw) ov.width = dw;
if (ov.height !== dh) ov.height = dh;
if (!_shaderOvCtx) _shaderOvCtx = ov.getM
_shaderOvCtx.imageSmoothingEnabled = false;
_shaderOvCtx.drawImage(_shaderDown, 0, 0, dw, dh);
else if (_shaderMode === 4) {
// Noir: film grain (every 3rd frame)
if (_shaderFrame % 3 !== 0) return;
if (ov.width !== dw) ov.width = dw;
if (ov.height !== dh) ov.height = dh;
if (!_shaderOvCtx) _shaderOvCtx = ov.getContext('2d');
var grainData = _shaderOvCtx.createImageData(dw, dh);
var gd = grainData.data;
for (var gi = 0; gi < gd.lenM
var gv = (Math.random() * 255) | 0;
gd[gi] = gv; gd[gi+1] = gv; gd[gi+2] = gv; gd[gi+3] = 30;
_shaderOvCtx.putImageData(grainData, 0, 0);
else if (_shaderMode === 5) {
// Thermal: remap to heat gradient
if (_shaderFrame % 2 !== 0) return;
if (_shaderDown.width !== sw) _shaderDown.width = sw;
if (_shaderDown.height !== sh) _shaderDown.height = sh;
if (!_shaderDownCtx) _shaderDownCtx = _shaderDown.getContext('2d', { willReadFrequentM
_shaderDownCtx.drawImage(canvas, 0, 0, sw, sh);
var td = _shaderDownCtx.getImageData(0, 0, sw, sh);
var tp = td.data;
for (var ti = 0; ti < tp.length; ti += 4) {
var lum = tp[ti]*.299 + tp[ti+1]*.587 + tp[ti+2]*.114;
var t = lum / 255;
// Blue -> Cyan -> Green -> Yellow -> Red -> White
var rr, gg, bb;
if (t < 0.15) { rr=0; gg=0; bb=40+t/0.15*120; }
else if (t < 0.35) { var u=(t-0.15)/0.2; rr=0; gg=u*200; bb=160-u*80; }
if (t < 0.55) { var u=(t-0.35)/0.2; rr=u*200; gg=200+u*55; bb=80-u*80; }
else if (t < 0.75) { var u=(t-0.55)/0.2; rr=200+u*55; gg=255-u*155; bb=0; }
else { var u=(t-0.75)/0.25; rr=255; gg=100+u*155; bb=u*255; }
tp[ti]=rr; tp[ti+1]=gg; tp[ti+2]=bb;
_shaderDownCtx.putImageData(td, 0, 0);
if (ov.width !== dw) ov.width = dw;
if (ov.height !== dh) ov.height = dh;
if (!_shaderOvCtx) _shaderOvCtx = ov.getContext('2d');
_shaderOvCtx.imageSmoothingEnabled = falsM
_shaderOvCtx.drawImage(_shaderDown, 0, 0, dw, dh);
else if (_shaderMode === 6) {
if (ov.width !== dw) ov.width = dw;
if (ov.height !== dh) ov.height = dh;
if (!_shaderOvCtx) _shaderOvCtx = ov.getContext('2d');
var ctx2 = _shaderOvCtx;
ctx2.clearRect(0,0,dw,dh);
// RGB channel split
ctx2.globalCompositeOperation = 'source-over';
var shift = Math.sin(_shaderFrame * 0.1) * 4 + (Math.random() > 0.92 ? (Math.random()-0.5)*20 : 0);
ctx2.drawImage(canvas, 0, 0, dw, dh);
ctx2.globalCompositeOperation = 'multiply';
ctx2.fillStyle = 'rgb(255,0,0)'; ctx2.fillRect(0,0,dw,dh);
ctx2.globalCompositeOperation = 'source-over';
ctx2.globalAlpha = 0.6;
ctx2.drawImage(canvas, shift, 0, dw, dh);
ctx2.globalCompositeOperation = 'lighter';
ctx2.globalAlpha = 0.4;
ctx2.drawImage(canvas, -shift, shift*0.5, dw, dh);
ctx2.globalAlpha = 1.0;
ctx2.globalCompositeOperation = 'source-over';
if (Math.random() > 0.85) {
var gy = Math.random() * dh;
var gh = 2 + Math.random() * 20;
var gsx = (Math.random()-0.5) * 40;
ctx2.drawImage(canvas, 0, gy, dw, gh, gsx, gy, dw, gh);
else if (_shaderMode === 9) {
// Watercolor: noise texture overlay
if (_shaderFrame % 4 !== 0) return;
var ww = Math.floor(dw * 0.3), wh = Math.floor(dh * 0.3);
if (_shaderDown.width !== ww) _shaderDown.width = ww;
if (_shaderDown.heighM
t !== wh) _shaderDown.height = wh;
if (!_shaderDownCtx) _shaderDownCtx = _shaderDown.getContext('2d', { willReadFrequently: true });
var wd = _shaderDownCtx.createImageData(ww, wh);
var wp = wd.data;
for (var wi = 0; wi < wp.length; wi += 4) {
var wv = 128 + (Math.random()-0.5) * 60;
wp[wi]=wv; wp[wi+1]=wv; wp[wi+2]=wv; wp[wi+3]=40;
_shaderDownCtx.putImageData(wd, 0, 0);
if (ov.width !== dw) ov.width = dw;
if (ov.height !== dh) ov.height = dh;
if (!_shaderOvCtx) _shaderOvCtx = ov.getContext('2d');
_shaderOvCtx.imageSmoothingEnabled = true;
_shaderOvCtx.drawImage(_shaderDown, 0, 0, dw, dh);
function toggleComicShader() { setShaderMode(_shaderMode === 1 ? 0 : 1); }
var hemi = new THREE.HemisphereLight(0x7788aa, 0x1a1a28, 0.65);
var ambient = new THREE.AmbientLight(0x303045, 0.3);
scene.add(ambient);
var sun = new THREE.DirectionalLight(0xeeeeff, 1.1);
sun.position.set(10,M
sun.castShadow = true;
sun.shadow.mapSize.set(2048, 2048);
sun.shadow.camera.near = 2;
sun.shadow.camera.far = 60;
sun.shadow.camera.left = -28;
sun.shadow.camera.right = 28;
sun.shadow.camera.top = 28;
sun.shadow.camera.bottom = -28;
// ========== LEVEL (Boden + W
nde als AABB-Quellen) ==========
/** @type {{ min: THREE.Vector3, max: THREE.Vector3 }[]} */
var colliders = [];
/** Meshes die pro Kammer entfernt werden (W
nde, optionale Boden-Teile) */
/** Bodenebene (gro
e Platte), bleibt in der Szene */
var floorMesh = null;
var floorCollider = new THREE.Box3(
new THREE.Vector3(-40, -0.1, -40),
new THREE.Vector3(40, 0, 40)
var ceilingCollider = null;
function registerBox(mesh) {
var box = new THREE.Box3().setFromObject(mesh);
colliders.push(box);
function makeWall(w, h, d, x, y, z) {
var geo = new THREE.BoxGeometry(w, h, d);
var mat = new THREE.MeshStandardMaterial({
roughness: 0.65,
metalness: 0.12,
envMapIntensity: 0.4
var m = new THREE.Mesh(geo, mat);
m.position.set(x, y, z);
m.castShadow = true;
m.receiveShadow = true;
m.userData.type = WALL_USER;
m.userData.portalOk = true;
levelMeshes.push(m);
var edgeLine = new THREE.LineSegments(
new THREE.EdgesGeometry(geo, 25),
new THREE.LineBasicMaterial({ color: 0x606078, transparent: true, opacity: 0.15 })
m.add(edgeLine);
var floorGeo = new THREE.PlaneGeometry(80, 80);
var floorMat = new THREE.MeshStandardMaterial({ color: COL_FLOOR, roughness: 0.75, metalness: 0.15 });
floorMesh = new THREE.Mesh(floorGeo, floorMat);
floorMesh.rotation.x = -Math.PI / 2;
floorMesh.receiveShadow = true;
floorMesh.userData.type = WALL_USER;
floorMesh.userData.portalOk = true;
scene.add(floorMesh);
var gridH = new THREE.GridHelper(80, 40, 0x3a3a50, 0x2a2a3a);
gridH.position.y = 0.005;
gridH.material.transparent = trueM
gridH.material.opacity = 0.22;
var gridFine = new THREE.GridHelper(80, 160, 0x303048, 0x303048);
gridFine.position.y = 0.004;
gridFine.material.transparent = true;
gridFine.material.opacity = 0.08;
scene.add(gridFine);
/** Decke: Portale auf horizontaler Fl
che; DoubleSide, damit Raycasts von unten treffen */
var DEFAULT_CEILING_Y = 5.08;
berschreibbar via chamberDef.ceilingY; sonst DEFAULT_CEILING_Y */
var currentCeilingY = DEFAULT_CEILING_Y;
ngGeo = new THREE.PlaneGeometry(88, 88);
var ceilingMat = new THREE.MeshStandardMaterial({
color: 0x38384a,
side: THREE.DoubleSide
var ceilingMesh = new THREE.Mesh(ceilingGeo, ceilingMat);
ceilingMesh.rotation.x = Math.PI / 2;
ceilingMesh.position.set(0, DEFAULT_CEILING_Y, 0);
ceilingMesh.receiveShadow = true;
ceilingMesh.userData.type = WALL_USER;
ceilingMesh.userData.portalOk = true;
scene.add(ceilingMesh);
ceilingCollider = new THREE.Box3(
new THREE.Vector3(-40, DEFAULT_CEILING_Y, -40),
new THREE.Vector3(40, DEFAULT_CEILING_Y + 0.1, 40)
var portalSurfaces = [];
// ========== PUZZLE: Plattform, Knopf, T
var CUBE_HALF = 0.28;
var INTERACT_RANGE = 2.1;
var currentChamber = 0;
/** @type {null | { num: string, title: string, line: string, mission: string, ceilingY?: number, spawn: THREE.Vector3, walls: {w:number,h:number,d:number,x:number,y:nM
umber,z:number,np?:boolean}[], exit: { min: THREE.Vector3, max: THREE.Vector3, needsDoor?: boolean }, cube: null | THREE.Vector3, buttonDoor: null | { btn: number[], door: number[] }, momentum: null | { x:number,y:number,z:number,w:number,h:number,d:number }, isTutorial?: boolean }} */
var chamberDef = null;
var doorMesh = new THREE.Mesh(
new THREE.BoxGeometry(2.4, 3.2, 0.35),
new THREE.MeshStandardMaterial({ color: 0x6a5a3a, roughness: 0.6, metalness: 0.25 })
doorMesh.castShadow = true;
esh.receiveShadow = true;
doorMesh.userData.type = WALL_USER;
doorMesh.userData.portalOk = false;
doorMesh.userData.isDoor = true;
var doorEdge = new THREE.LineSegments(
new THREE.EdgesGeometry(doorMesh.geometry, 30),
new THREE.LineBasicMaterial({ color: 0x887755, transparent: true, opacity: 0.3 })
doorMesh.add(doorEdge);
scene.add(doorMesh);
var doorColliderIdx = -1;
var doorOpen = false;
var buttonBase = new THREE.Mesh(
new THREE.CylinderGeometry(0.45, 0.52, 0.12, 24),
THREE.MeshStandardMaterial({ color: 0x505568, roughness: 0.5, metalness: 0.3 })
buttonBase.receiveShadow = true;
scene.add(buttonBase);
var buttonTop = new THREE.Mesh(
new THREE.CylinderGeometry(0.38, 0.4, 0.08, 24),
new THREE.MeshStandardMaterial({ color: 0xcc3030, roughness: 0.35, metalness: 0.15, emissive: 0x440000, emissiveIntensity: 0.4 })
scene.add(buttonTop);
var btnLight = new THREE.PointLight(0xff3333, 0.4, 3, 2);
btnLight.position.y = 0.3;
buttonTop.add(btnLight);
cubeMesh = new THREE.Mesh(
new THREE.BoxGeometry(CUBE_HALF * 2, CUBE_HALF * 2, CUBE_HALF * 2),
new THREE.MeshStandardMaterial({ color: 0xddddf0, roughness: 0.3, metalness: 0.2 })
cubeMesh.castShadow = true;
cubeMesh.receiveShadow = true;
var cubeEdge = new THREE.LineSegments(
new THREE.EdgesGeometry(cubeMesh.geometry, 30),
new THREE.LineBasicMaterial({ color: 0x8888aa, transparent: true, opacity: 0.4 })
cubeMesh.add(cubeEdge);
scene.add(cubeMesh);
var momentumPlat = new THREE.M
new THREE.BoxGeometry(5, 0.35, 5),
new THREE.MeshStandardMaterial({ color: 0x3a3a4a, roughness: 0.55, metalness: 0.2 })
momentumPlat.castShadow = true;
momentumPlat.receiveShadow = true;
var platEdge = new THREE.LineSegments(
new THREE.EdgesGeometry(momentumPlat.geometry, 30),
new THREE.LineBasicMaterial({ color: 0x555570, transparent: true, opacity: 0.25 })
momentumPlat.add(platEdge);
momentumPlat.userData.type = WALL_USER;
momentumPlat.userData.portalOk = true;
var exitMarker = new THREE.Mesh(
new THREE.PlaneGeometry(2.8, 2.8),
new THREE.MeshBasicMaterial({
color: 0x30ff70,
transparent: true,
opacity: 0.22,
side: THREE.DoubleSide,
depthWrite: false,
blending: THREE.AdditiveBlending
exitMarker.rotation.x = -Math.PI / 2;
exitMarker.position.y = 0.02;
exitMarker.renderOrder = -1;
scene.add(exitMarker);
var exitLight = new THREE.PointLight(0x30ff70, 1.2, 8, 2);
exitLight.position.y = 0.5M
exitMarker.add(exitLight);
// Light beam column
var exitBeam = new THREE.Mesh(
new THREE.CylinderGeometry(0.3, 0.8, 6, 8, 1, true),
new THREE.MeshBasicMaterial({
color: 0x30ff70,
transparent: true,
opacity: 0.06,
side: THREE.DoubleSide,
depthWrite: false,
blending: THREE.AdditiveBlending
exitBeam.position.y = 3;
exitMarker.add(exitBeam);
var exitBeam2 = new THREE.Mesh(
new THREE.CylinderGeometry(0.1, 0.4, 6, 6, 1, true),
new THREE.MeshBasM
color: 0x80ffaa,
transparent: true,
side: THREE.DoubleSide,
depthWrite: false,
blending: THREE.AdditiveBlending
exitBeam2.position.y = 3;
exitMarker.add(exitBeam2);
function rebuildPortalSurfaces() {
portalSurfaces.length = 0;
scene.traverse(function (o) {
if (o.userData && o.userData.portalOk) portalSurfaces.push(o);
vel: new THREE.Vector3(),
pos: cubeMesh.positiM
// -------------------------------------------------------------------------
// MAP IDENTITY DATABASE
// The user inscribed the 7 GLBs in an arbitrary order, so URL -> map content
// can't be assumed. Each map has a unique world bounding box stored in
// its `worldspawn` entity (`world_mins` / `world_maxs`), which we use as
// a fingerprint to identify what was actually loaded and apply the
// correct title / hints in the HUD regardless of inscription order.
// ------------------M
-------------------------------------------------------
{ id: 'G_cake', mins: [-1088,-960,-640], maxs: [448,704,448],
title: 'Cake Chamber',
line: 'The cake is a lie.',
mission: 'Open chamber. Use portals to explore and find the exit.' },
{ id: 'Turret_pass', mins: [-805,-197,-190], maxs: [896,941,803],
title: 'Turret Pass',
line: 'Warning: Turrets guard the path.',
mission: 'Use the pre-placed portals! Dodge the turrets and reach the exM
it. Tip: Cubes can knock over turrets.' },
{ id: 'nep_portalmap_2', mins: [-128,-512,-960], maxs: [1152,2176,640],
title: 'Portal Map',
line: 'Enrichment Center puzzle chamber.',
mission: 'Place portals on the marked panels and traverse the gaps.' },
{ id: 'pl_nocake', mins: [-512,-1536,-2048], maxs: [2880,2304,256],
title: 'No Cake',
line: 'There is no cake. Only tests.',
mission: 'Long horizontal level. Use fling to cross gaps. Find the exit.' },
e_cube_part1', mins: [-2552,-2040,-888], maxs: [3584,3592,2240],
title: 'The Cube I',
line: 'The Companion Cube needs you.',
mission: 'Multi-floor puzzle! Use fling: portal on floor + portal on high wall = momentum upward. Many doors via buttons. Avoid laser barriers.' },
{ id: 'the_cube_part2', mins: [-2560,-2040,-888], maxs: [3584,5856,9368],
title: 'The Cube II',
line: 'The tests are getting harder.',
mission: 'Advanced fling! Fall from a great height into a floor portM
al and shoot through the wall portal. Pre-placed portals show the way.' },
{ id: 'claustrophobia', mins: [-1482,-1568,-536], maxs: [2176,1604,2114],
title: 'Claustrophobia',
line: 'Final test chamber. You are being watched.',
mission: 'All mechanics combined! Buttons, doors, fizzlers, fling. Some doors only open after multiple buttons.' }
// Intended L1..L6 map order (simple -> complex).
// `the_cube_part1` is intentionally excluded
its 234 env_lasers + 109
// doors render as M
a chaotic mess and the map is not playable.
var INTENDED_MAP_ORDER = ['G_cake','Turret_pass','nep_portalmap_2','pl_nocake','the_cube_part2','claustrophobia'];
function _identifyMinsMaxs(mins, maxs) {
var best = null, bestDist = Infinity;
for (var i = 0; i < MAP_DB.length; i++) {
var m = MAP_DB[i];
for (var k = 0; k < 3; k++) d += Math.abs(mins[k] - m.mins[k]) + Math.abs(maxs[k] - m.maxs[k]);
if (d < bestDist) { bestDist = d; best = m; }
return bestDist < 50 M
function _identifyGLBFromBuffer(buf) {
var dv = new DataView(buf);
if (dv.getUint32(0, true) !== 0x46546C67) return null;
var totalLen = dv.getUint32(8, true);
var off = 12, jsonStr = null;
while (off < buf.byteLength && off < totalLen) {
var len = dv.getUint32(off, true);
var type = dv.getUint32(off + 4, true);
if (type === 0x4E4F534A) {
jsonStr = new TextDecoder().decode(new Uint8Array(buf, off + 8, len));
off += 8 + len;
if (!jsonStr) return null;
var g = JSON.parse(jsonStr);
var wsp = (g.nodes||[]).find(function(n) {
var e = (n.extras && n.extras.extras) || n.extras || {};
return e.classname === 'worldspawn';
if (!wsp) return null;
var e = (wsp.extras && wsp.extras.extras) || wsp.extras || {};
if (!e.world_mins || !e.world_maxs) return null;
var mins = String(e.world_mins).split(/\s+/).map(Number);
String(e.world_maxs).split(/\s+/).map(Number);
return _identifyMinsMaxs(mins, maxs);
} catch (err) { return null; }
// Probe all 7 inscription URLs, identify each map, then reorder CHAMBERS so
// L1..L6 match INTENDED_MAP_ORDER. Cached in localStorage after first run.
var _mapOrderResolved = false;
var _mapOrderResolving = null;
function _applyMapOrder(idByUrl) {
var urlById = {};
Object.keys(idByUrl).forEach(function(u) { if (idByUrl[u]) urlById[idByUrl[u]] = u; });
s = CHAMBERS.filter(function(c) { return !!c.glbUrl; });
for (var i = 0; i < INTENDED_MAP_ORDER.length && i < glbSlots.length; i++) {
var wantId = INTENDED_MAP_ORDER[i];
if (urlById[wantId]) glbSlots[i].glbUrl = urlById[wantId];
function _resolveMapOrder() {
if (_mapOrderResolved) return Promise.resolve();
if (_mapOrderResolving) return _mapOrderResolving;
var urls = CHAMBERS.filter(function(c){ return !!c.glbUrl; }).map(function(c){ return c.glbUrl; });
ached = JSON.parse(localStorage.getItem('exitprotocol.maporder.v2') || 'null');
if (cached && cached.urls && cached.urls.length === urls.length &&
cached.urls.every(function(u, i) { return u === urls[i]; })) {
_applyMapOrder(cached.idByUrl);
_mapOrderResolved = true;
console.log('[MAPORDER] cached');
return Promise.resolve();
} catch (e) { /* ignore */ }
console.log('[MAPORDER] probing', urls.length, 'inscriptions...');
var t0 = (typeof performanceM
!== 'undefined' ? performance.now() : Date.now());
_mapOrderResolving = Promise.all(urls.map(function(url) {
return fetch(url).then(function(r) { return r.arrayBuffer(); })
.then(function(buf) {
var id = _identifyGLBFromBuffer(buf);
console.log('[MAPORDER]', url.split('/').pop().slice(0,12)+'...', '=>', id);
return { url: url, id: id };
.catch(function(err) {
console.warn('[MAPORDER] fetch failed', url, err);
return { url: url, M
})).then(function(results) {
var idByUrl = {};
results.forEach(function(r) { idByUrl[r.url] = r.id; });
_applyMapOrder(idByUrl);
_mapOrderResolved = true;
var ms = ((typeof performance !== 'undefined' ? performance.now() : Date.now()) - t0) | 0;
console.log('[MAPORDER] done in', ms, 'ms');
try { localStorage.setItem('exitprotocol.maporder.v2', JSON.stringify({ urls: urls, idByUrl: idByUrl })); } catch (e) {}
return _mapOrderResolving;M
// Kick off in background as soon as everything is defined
setTimeout(function() { try { _resolveMapOrder(); } catch (e) {} }, 100);
function _detectMapIdentity(glbScene) {
if (!glbScene) return null;
var mins = null, maxs = null;
glbScene.traverse(function(n) {
var e = (n.userData && n.userData.extras) || n.userData || {};
if (e.classname === 'worldspawn' && e.world_mins && e.world_maxs) {
mins = e.world_mins.split(/\s+/).map(Number);
maxs = e.world_maxs.split(/\M
if (!mins || !maxs) return null;
var best = null, bestDist = Infinity;
for (var i = 0; i < MAP_DB.length; i++) {
var m = MAP_DB[i];
for (var k = 0; k < 3; k++) {
d += Math.abs(mins[k] - m.mins[k]) + Math.abs(maxs[k] - m.maxs[k]);
if (d < bestDist) { bestDist = d; best = m; }
return bestDist < 50 ? best : null;
{ num: 'T00', title: 'Tutorial',
line: 'Follow the on-screen steps M
to learn the portal gun.',
isTutorial: true
{ num: 'L1', title: 'Level 1',
line: 'The cake is a lie.',
mission: 'Open chamber. Use portals to explore and find the exit.',
glbUrl: '/content/d03da821b678726e7bae998601916c13ab64767d273a2e1a7e910fc5e0525858i0' },
{ num: 'L2', title: 'Level 2',
line: 'Warning: Turrets guard the path.',
mission: 'Use pre-placed portals! Dodge the turrets and reach the exit. Tip: Cubes can knock over turrets.',
bUrl: '/content/8e114282f3452e4a46f8b9e2145de2668e5ac394d415cd506c8405cb5c4680dci0' },
{ num: 'L3', title: 'Level 3',
line: 'Enrichment Center puzzle chamber.',
mission: 'Place portals on the marked panels and traverse the gaps.',
glbUrl: '/content/21ea318d74904597bf4ea69829f993a29ee52bb67040b4d55b98a23e06bf34dei0' },
{ num: 'L4', title: 'Level 4',
line: 'There is no cake. Only tests.',
mission: 'Long horizontal level. Use fling to cross gaps. Find the exit.',
ontent/985ef655b8e6f99be5f7bbf6de35f4a83faa27829d6057472c197a2994b31256i0' },
{ num: 'L5', title: 'Level 5',
line: 'The tests are getting harder.',
mission: 'Advanced fling! Fall from a great height into a floor portal and fly through the wall portal. Press N = next level.',
glbUrl: '/content/20220584187d327cba42452c41a715b0d8e5223f30416dbae4be6f7ba9f54a72i0' },
{ num: 'L6', title: 'Level 6',
line: 'Final test chamber. You are being watched.',
mission: 'All mechanics combined! M
Buttons, doors, fizzlers, fling. Some doors only open after multiple buttons.',
glbUrl: '/content/5b034d7facc5f8dcaf0d3b1464347dab90ac4d8c86ce618bf79afee19ed3fff3i0' }
function _vec3FromArr(a) {
return new THREE.Vector3(+a[0], +a[1], +a[2]);
function hydrateChamberFromJSON(c) {
if (!c || typeof c !== 'object') throw new Error('Invalid chamber');
num: String(c.num != null ? c.num : ''),
title: String(c.title != null ? c.title : ''),
line: c.line != null ?M
String(c.line) : '',
mission: c.mission != null ? String(c.mission) : '',
isTutorial: !!c.isTutorial,
typeof c.ceilingY === 'number' && isFinite(c.ceilingY) ? c.ceilingY : undefined,
spawn: _vec3FromArr(c.spawn),
walls: (c.walls || []).map(function (w) {
np: !!w.np
min: _vec3FromArr(c.eM
max: _vec3FromArr(c.exit.max),
needsDoor: !!c.exit.needsDoor
cube: c.cube && Array.isArray(c.cube) && c.cube.length >= 3 ? _vec3FromArr(c.cube) : null,
buttonDoor: c.buttonDoor
btn: [+c.buttonDoor.btn[0], +c.buttonDoor.btn[1]],
door: [+c.buttonDoor.door[0], +c.buttonDoor.door[1], +c.buttonDoor.door[2]]
momentum: c.momentum
x: +c.momentum.x,
y: +c.momentum.y,
z: +c.momentum.z,
w: +c.momentum.w,
h: +c.momentum.h,
d: +c.momentum.d
function applyChambersFromStorageOrUrl() {
return new Promise(function (resolve) {
if (_qs.get('editorTest') === '1') {
var raw = localStorage.getItem('portalEditorTestChamber');
if (raw) {
var data = JSON.parse(raw);
var list = Array.isArray(data) ? data : data.chambers;
if (Array.isAM
rray(list) && list.length > 0) {
CHAMBERS = [];
for (var i = 0; i < list.length; i++) CHAMBERS.push(hydrateChamberFromJSON(list[i]));
localStorage.removeItem('portalEditorTestChamber');
} catch (e) { console.warn('[portal] editorTest failed', e); }
var url = _qs.get('chambersUrl');
.then(function (r) {
if (!r.ok) throw new Error('HTTP ' M
return r.text();
.then(function (raw) {
var data = JSON.parse(raw);
var list = Array.isArray(data) ? data : data.chambers;
if (!Array.isArray(list) || list.length === 0) return;
var next = [];
for (var i = 0; i < list.length; i++) next.push(hydrateChamberFromJSON(list[i]));
CHAMBERS = next;
} catch (e) {
console.warn('[portal] chambersUrl JSOM
.catch(function (e) {
console.warn('[portal] chambersUrl fetch failed', e);
.then(function () {
resolve();
var raw = localStorage.getItem('portalGameChambersJson');
var data = JSON.parse(raw);
var list = Array.isArray(data) ? data : data.chambers;
if (Array.isArray(list) && list.length > 0) {
for (varM
i = 0; i < list.length; i++) CHAMBERS.push(hydrateChamberFromJSON(list[i]));
console.warn('[portal] portalGameChambersJson failed', e);
function sfxExit() {
_playTone(523, 0.1, 'sine', 0.1, 0.005, 0.05);
setTimeout(function() { _playTone(659, 0.1, 'sine', 0.1, 0.005, 0.05); }, 80);
setTimeout(function() { _playTone(784, 0.15, 'sine', 0.12, 0.005, 0.08); }, 160);
setTimeout(function() { _playTone(1047, 0.2, 'siM
ne', 0.08, 0.01, 0.12); }, 260);
function inExitZone(p, ex) {
p.x >= ex.min.x &&
p.x <= ex.max.x &&
p.y >= ex.min.y &&
p.y <= ex.max.y &&
p.z >= ex.min.z &&
p.z <= ex.max.z
function clearLevelWalls() {
for (var i = 0; i < levelMeshes.length; i++) {
scene.remove(levelMeshes[i]);
var g = levelMeshes[i].geometry;
if (g && g.dispose) g.dispose();
var mat = levelMeshes[i].material;
if (mat && mat.dispose) mat.dispose(M
levelMeshes.length = 0;
// Tutorial-only visual aids: glowing portal target frames + 3D labels.
// Everything is added to levelMeshes so it's auto-cleaned on next chamber.
function _makeTutorialLabel(text, color) {
var c = document.createElement('canvas');
c.width = 512; c.height = 128;
var ctx = c.getContext('2d');
ctx.fillStyle = 'rgba(8,10,16,0.85)';
ctx.fillRect(0, 0, c.width, c.height);
ctx.strokeStyle = color;
ctx.lineWidth = 4;
ctx.strokeRect(4, 4, c.wiM
dth - 8, c.height - 8);
ctx.font = 'bold 56px ui-monospace, monospace';
ctx.fillStyle = color;
ctx.textAlign = 'center';
ctx.textBaseline = 'middle';
ctx.shadowColor = color;
ctx.shadowBlur = 18;
ctx.fillText(text, c.width / 2, c.height / 2);
var tex = new THREE.CanvasTexture(c);
tex.minFilter = THREE.LinearFilter;
var mat = new THREE.MeshBasicMaterial({ map: tex, transparent: true, depthWrite: false });
var geo = new THREE.PlaneGeometry(2.0, 0.5);
return new THREE.MeM
function _makeTutorialFrame(color) {
var grp = new THREE.Group();
var size = 1.6, thick = 0.06;
var mat = new THREE.MeshBasicMaterial({ color: color, transparent: true, opacity: 0.95 });
function bar(w, h, x, y) {
var m = new THREE.Mesh(new THREE.PlaneGeometry(w, h), mat);
m.position.set(x, y, 0);
bar(size, thick, 0, size / 2); // top
bar(size, thick, 0, -size / 2); // bottom
bar(thick, size, -size / 2, 0); // left
ick, size, size / 2, 0); // right
// Inner glow halo
var halo = new THREE.Mesh(
new THREE.PlaneGeometry(size * 1.4, size * 1.4),
new THREE.MeshBasicMaterial({
color: color, transparent: true, opacity: 0.18,
depthWrite: false, blending: THREE.AdditiveBlending
halo.position.z = -0.001;
// ----- Step-by-step tutorial state machine -------------------------------
// 6 stages, each with a check function and per-stage viM
// are tagged with `_step` and only shown when their step is the current one.
var _tutorialState = {
advanceCooldown: 0, // small debounce after step change
jumpedOnce: false,
teleportedOnce: false,
briefingShown: false,
briefingDismissed: false,
_cubeMovedForTurret: false
// Floor arrow that slides toward the next checkpoint (rebuilt per step)
function _makeTutorialFloorArrow(color, length) {
var c = document.createElementM
c.width = 256; c.height = 256;
var ctx = c.getContext('2d');
ctx.clearRect(0,0,256,256);
ctx.translate(128, 128);
ctx.fillStyle = color;
ctx.shadowColor = color;
ctx.shadowBlur = 30;
ctx.beginPath();
ctx.moveTo(0, -100);
ctx.lineTo(70, 30);
ctx.lineTo(25, 30);
ctx.lineTo(25, 100);
ctx.lineTo(-25, 100);
ctx.lineTo(-25, 30);
ctx.lineTo(-70, 30);
ctx.closePath();
var tex = new THREE.CanvasTexture(c);
tex.minFilter = THRM
var mat = new THREE.MeshBasicMaterial({ map: tex, transparent: true, depthWrite: false, opacity: 0.85 });
var mesh = new THREE.Mesh(new THREE.PlaneGeometry(length || 1.5, length || 1.5), mat);
mesh.rotation.x = -Math.PI / 2;
mesh.position.y = 0.02;
function _buildTutorialMarkers() {
_tutorialState.active = true;
_tutorialState.step = 0;
_tutorialState.advanceCooldown = 0;
_tutorialState.jumpedOnce = false;
_tutorialState.teleportedOnce = fM
_tutorialState.briefingShown = false;
_tutorialState.briefingDismissed = false;
_tutorialState._cubeMovedForTurret = false;
walk forward arrow at z=+12 (in front of spawn z=+14)
var step1Arrow = _makeTutorialFloorArrow('#ffffff', 1.6);
step1Arrow.position.set(0, 0.02, 12);
step1Arrow.userData._step = 1;
scene.add(step1Arrow); levelMeshes.push(step1Arrow);
var step1Label = _makeTutorialLabel('WALK FORWARD', 0xddddff);
step1Label.position.set(0, 1.5, 12);
step1Label.userData._step = 1;
scene.add(step1Label); levelMeshes.push(step1Label);
jump cue above the obstacle at z=+10
var step2Label = _makeTutorialLabel('JUMP (SPACE)', 0xffe080);
step2Label.position.set(0, 1.9, 10);
step2Label.userData._step = 2;
scene.add(step2Label); levelMeshes.push(step2Label);
var step2Arrow = _makeTutorialFloorArrow('#ffe080', 1.4);
step2Arrow.position.set(0, 0.705, 10);
step2Arrow.userData._step = 2;
scene.add(step2Arrow); levelMM
eshes.push(step2Arrow);
BLUE frame on the south wall (z=+16), eye level
var blueFrame = _makeTutorialFrame(0x3a9cff);
blueFrame.position.set(0, 1.6, 15.83);
blueFrame.userData._step = 3;
scene.add(blueFrame); levelMeshes.push(blueFrame);
var blueLabel = _makeTutorialLabel('LEFT CLICK HERE', 0x6ec8ff);
blueLabel.position.set(0, 2.85, 15.7);
blueLabel.userData._step = 3;
scene.add(blueLabel); levelMeshes.push(blueLabel);
ORANGE frame on the half-waM
ll (z=-4), HIGH (above fence line)
var orangeFrame = _makeTutorialFrame(0xff8a1a);
orangeFrame.position.set(0, 3.0, -3.83);
orangeFrame.userData._step = 4;
scene.add(orangeFrame); levelMeshes.push(orangeFrame);
var orangeLabel = _makeTutorialLabel('AIM HIGH
RIGHT CLICK', 0xffaa55);
orangeLabel.position.set(0, 4.05, -3.83);
orangeLabel.userData._step = 4;
scene.add(orangeLabel); levelMeshes.push(orangeLabel);
"WALK INTO PORTAL" hint between fence and player
var step5Label = _makeTutorialLabel('STEP INTO PORTAL', 0xb0e0ff);
step5Label.position.set(0, 2.0, 8);
step5Label.userData._step = 5;
scene.add(step5Label); levelMeshes.push(step5Label);
pick up cube hint (cube is at (0, 0.5, -8))
var step6Label = _makeTutorialLabel('PRESS [E] TO GRAB CUBE', 0xffd060);
step6Label.position.set(0, 1.9, -8);
step6Label.userData._step = 6;
scene.add(step6Label); levelMeshes.push(step6Label);
var step6Arrow = _makeTutorialFloorArrow('#fM
step6Arrow.position.set(0, 0.04, -8);
step6Arrow.userData._step = 6;
scene.add(step6Arrow); levelMeshes.push(step6Arrow);
place cube on button (button at -2.5, 0, -10)
var step7Label = _makeTutorialLabel('DROP CUBE ON BUTTON', 0xffd060);
step7Label.position.set(-2.5, 1.5, -10);
step7Label.userData._step = 7;
scene.add(step7Label); levelMeshes.push(step7Label);
var step7Arrow = _makeTutorialFloorArrow('#ffd060', 1.0);
step7Arrow.position.set(-2.5, M
step7Arrow.userData._step = 7;
scene.add(step7Arrow); levelMeshes.push(step7Arrow);
// ====== STEP 8
SLINGSHOT (hands-on) ============================
// Stairs go up at z=-13..-17 to a platform at y=4. Walk off the platform
fall into pre-placed BLUE floor portal at (0, 0, -18)
// pre-placed ORANGE wall portal on the NORTH face of the barrier wall at
// z=-21, sending the player flying south past the no-portal barrier.
var step8Label = _makeTuM
torialLabel('CLIMB & DROP IN', 0x6ec8ff);
step8Label.position.set(0, 3.7, -16);
step8Label.userData._step = 8;
scene.add(step8Label); levelMeshes.push(step8Label);
var step8FlyHint = _makeTutorialLabel('FLY OVER!', 0xff8a1a);
step8FlyHint.position.set(0, 3.5, -23.5); // south of the now-full-height barrier
step8FlyHint.userData._step = 8;
scene.add(step8FlyHint); levelMeshes.push(step8FlyHint);
// Pre-placed BLUE floor portal at (0, 0.04, -19.5)
// platform's nM
orth edge, in the player's natural fall arc.
// NOTE: NEVER push portal/laser/turret meshes into `levelMeshes`
// they would be registered as box colliders and block the player.
// They are added directly to the scene and cleared via clearGLBState().
var sgBluePos = new THREE.Vector3(0, 0.04, -19.5);
var sgBlueEuler = new THREE.Euler(-Math.PI / 2, 0, 0, 'YXZ');
var sgBlueNormal = new THREE.Vector3(0, 1, 0);
var sgBlueGroup = makePrePortalVisual(sgBluePos, sgBlueEuler, 0x3a9cff);
scene.add(sgBlueGroup);
// Pre-placed ORANGE wall portal on the NORTH face of the barrier (z=-24).
var sgOrangePos = new THREE.Vector3(0, 1.5, -24.15);
var sgOrangeEuler = new THREE.Euler(0, Math.PI, 0, 'YXZ'); // disc faces -Z
var sgOrangeNormal = new THREE.Vector3(0, 0, -1);
var sgOrangeGroup = makePrePortalVisual(sgOrangePos, sgOrangeEuler, 0xff8a1a);
sgOrangeGroup.position.addScaledVector(sgOrangeNormal, 0.04);
scene.add(sgOrangeGroup);
glbPrePortals.push({
a: { pos: sgBlM
uePos, euler: sgBlueEuler, group: sgBlueGroup, normal: sgBlueNormal },
b: { pos: sgOrangePos, euler: sgOrangeEuler, group: sgOrangeGroup, normal: sgOrangeNormal },
// Wider catch radius
players will have varying forward speed when falling
// off the platform, so 2.6m makes the slingshot reliably grab them.
// ====== STEP 9
LASER (jump over) ===============================
var step9Label = _makeTutorialLabel('JUMP OVER LASER!', 0xff4040);
position.set(0, 2.4, -30);
step9Label.userData._step = 9;
scene.add(step9Label); levelMeshes.push(step9Label);
// Laser at low height (y=0.7) across full corridor width
clearable by jumping
var laserStart = new THREE.Vector3(-3.8, 0.7, -30);
var laserEnd = new THREE.Vector3( 3.8, 0.7, -30);
var laserMesh = makeLaserVisual(laserStart, laserEnd);
glbLasers.push({ start: laserStart, end: laserEnd, mesh: laserMesh });
// Visual emitters at both ends. Add to scene directly (NOT levM
// their AABBs don't block the player's path.
var laserEmA = new THREE.Mesh(
new THREE.SphereGeometry(0.18, 12, 8),
new THREE.MeshBasicMaterial({ color: 0xff3030 })
laserEmA.position.copy(laserStart);
scene.add(laserEmA);
var laserEmB = new THREE.Mesh(
new THREE.SphereGeometry(0.18, 12, 8),
new THREE.MeshBasicMaterial({ color: 0xff3030 })
laserEmB.position.copy(laserEnd);
scene.add(laserEmB);
// Tag the emitters onto the laser entry M
so clearGLBState removes them too.
glbLasers[glbLasers.length - 1]._extraMeshes = [laserEmA, laserEmB];
// ====== STEP 10
TURRET (knock over with cube) ==================
var step10Label = _makeTutorialLabel('KNOCK TURRET OVER WITH CUBE', 0xffaa55);
step10Label.position.set(0, 2.4, -36);
step10Label.userData._step = 10;
scene.add(step10Label); levelMeshes.push(step10Label);
// Turret at the far end so player has time to react
var turPos = new THREE.Vector3(0, 0, -37);
rMesh = makeTurretVisual(turPos);
// Inactive until the player reaches step 10 (so the turret doesn't shoot
// them while they're learning the slingshot/laser sections).
glbTurrets.push({
pos: turPos, mesh: turMesh, active: false,
fireTimer: 2.5, lastShot: 0, dead: false
// ====== STEP 11
EXIT ===========================================
var exitLabel = _makeTutorialLabel('EXIT', 0x60ff90);
exitLabel.position.set(0, 0.9, -41.0);
exitLabel.rotation.x = -Math.PI / 4M
exitLabel.userData._step = 11;
scene.add(exitLabel); levelMeshes.push(exitLabel);
// ---- Lighting (always on for tutorial) ----
var lightGroup = new THREE.Group();
[12, 6, -2, -8, -14, -19, -25, -30, -37, -41].forEach(function(zz) {
var pl = new THREE.PointLight(0xffeecc, 1.3, 14, 1.4);
pl.position.set(0, 3.7, zz);
lightGroup.add(pl);
var blueAccent = new THREE.PointLight(0x3a9cff, 1.2, 7, 2);
blueAccent.position.set(0, 1.6, 14.5);
lightGroup.add(blueAccM
var orangeAccent = new THREE.PointLight(0xff8a1a, 1.2, 7, 2);
orangeAccent.position.set(0, 3.0, -3);
lightGroup.add(orangeAccent);
var puzzleLight = new THREE.PointLight(0xffd060, 0.8, 6, 2);
puzzleLight.position.set(-1, 2, -9);
lightGroup.add(puzzleLight);
var sgLight = new THREE.PointLight(0x3a9cff, 1.4, 8, 2);
sgLight.position.set(0, 0.6, -19.5);
lightGroup.add(sgLight);
var sgLight2 = new THREE.PointLight(0xff8a1a, 1.4, 8, 2);
sgLight2.position.set(0, 1.5, -24);M
lightGroup.add(sgLight2);
var laserLight = new THREE.PointLight(0xff3030, 0.9, 6, 2);
laserLight.position.set(0, 1.2, -30);
lightGroup.add(laserLight);
var turLight = new THREE.PointLight(0xffaa00, 0.9, 7, 2);
turLight.position.set(0, 1.2, -37);
lightGroup.add(turLight);
var exitLight = new THREE.PointLight(0x60ff90, 1.0, 7, 2);
exitLight.position.set(0, 0.6, -41.0);
lightGroup.add(exitLight);
var tutAmb = new THREE.AmbientLight(0xffffff, 0.5);
lightGroup.add(tutAmb)M
scene.add(lightGroup);
levelMeshes.push(lightGroup);
_refreshTutorialMarkerVisibility();
_showTutorialPanel();
// Show only markers tagged with the current step (or unmarked).
function _refreshTutorialMarkerVisibility() {
var s = _tutorialState.step;
for (var i = 0; i < levelMeshes.length; i++) {
var m = levelMeshes[i];
if (m && m.userData && typeof m.userData._step === 'number') {
m.visible = (m.userData._step === s + 1);
s definition. `check` returns true when the step is done.
var TUTORIAL_STEPS = [
title: '1 / 11
text: 'Use W A S D to move. Walk forward toward the white arrow.',
check: function(p) { return p.z < 13; }
title: '2 / 11
text: 'A short wall blocks your path. Press SPACE to jump over it.',
check: function(p) { return p.z < 8; }
title: '3 / 11
PLACE BLUE PORTAL',
text: 'A taller fence blocks the way. M
Turn around and LEFT-CLICK the BLUE panel behind you.',
check: function() { return portals.blue.mesh.group.visible === true; }
title: '4 / 11
PLACE ORANGE PORTAL',
text: 'Now look forward and AIM HIGH at the ORANGE panel above the fence. RIGHT-CLICK.',
check: function() { return portals.orange.mesh.group.visible === true; }
title: '5 / 11
text: 'Walk into either portal
you exit through the other.',
check: function(pM
) { return p.z < -2; }
title: '6 / 11
text: 'A weighted cube lies ahead. Walk up to it and press [E] to pick it up.',
check: function() { return cubeState && cubeState.held === true; }
title: '7 / 11
text: 'Drop the cube on the round button. Stepping on it yourself does nothing
only the cube\'s weight opens the door.',
check: function() { return doorOpen === true; }
title: '8 / 11
SLINGSHOT (DROP IN!)',
text: 'Climb the stairs, walk OFF the platform into the BLUE floor portal, and you fly through the ORANGE portal past the wall! Falling into a floor portal carries your speed.',
// Done as soon as the player teleports out past the barrier wall (z=-24).
check: function(p) { return p.z < -25; }
title: '9 / 11
text: 'A red LASER kills you on contact. JUMP (SPACE) right before it to clear the beam.',
check: function(p) { M
title: '10 / 11
KNOCK OVER THE TURRET',
text: 'A TURRET ahead shoots on sight. Pick up the cube (E) again, carry it to the turret, and DROP it (E) right beside the turret to topple it.',
// Done when the turret is dead (cube knocked it over)
check: function() {
return glbTurrets.length > 0 && glbTurrets[glbTurrets.length - 1].dead === true;
title: '11 / 11
text: 'Step on the green pad aheM
ad to finish the tutorial.',
check: function() { return false; }
function _showTutorialPanel() {
var p = document.getElementById('tutorial-panel');
if (!_tutorialState.active || _tutorialState.step >= TUTORIAL_STEPS.length) {
p.style.display = 'none';
var step = TUTORIAL_STEPS[_tutorialState.step];
var titleEl = document.getElementById('tutorial-step-title');
var textEl = document.getElementById('tutorial-step-text');
leEl) titleEl.textContent = step.title;
if (textEl) textEl.textContent = step.text;
p.style.display = 'block';
function _hideTutorialPanel() {
_tutorialState.active = false;
var p = document.getElementById('tutorial-panel');
if (p) p.style.display = 'none';
function _updateTutorialState() {
// Hard-hide whenever we're not actually playing (start screen, level select)
if (!gameStarted || !gameStarted()) {
var _p = document.getElementById('tutorial-panel');
_p && _p.style.display !== 'none') _p.style.display = 'none';
if (!_tutorialState.active) return;
if (!chamberDef || !chamberDef.isTutorial) { _hideTutorialPanel(); return; }
if (_tutorialState.step >= TUTORIAL_STEPS.length) return;
if (_tutorialState.advanceCooldown > 0) {
_tutorialState.advanceCooldown -= 0.016;
// Step 8 (slingshot): unlock the cube once the player walks past the door
// so they can carry it to the turret in step 10.
tutorialState.step >= 7 && cubeState && cubeState._lockedToButton &&
chamberDef && chamberDef.buttonDoor && player.pos.z < -12) {
cubeState._lockedToButton = false;
// Activate the tutorial turret only once the player has made it past the
// laser (step 9 done = step index 9 reached). Avoids unfair early shots.
if (chamberDef && chamberDef.isTutorial && glbTurrets.length > 0) {
glbTurrets[glbTurrets.length - 1].active = (_tutorialState.step >= 9);
// When the player eM
nters the turret section (step 10 = index 9), teleport
// the cube forward to a fresh spot near the turret so they don't have to
// walk all the way back to the button area to fetch it.
if (chamberDef && chamberDef.isTutorial && _tutorialState.step === 9 &&
!_tutorialState._cubeMovedForTurret && cubeMesh.visible &&
!cubeState.held) {
cubeMesh.position.set(2.5, 0.5, -34);
cubeState.vel.set(0, 0, 0);
cubeState._lockedToButton = false;
_tutorialState._cubeMovedForTurM
var step = TUTORIAL_STEPS[_tutorialState.step];
var done = false;
try { done = step.check(player.pos); } catch (e) { /* */ }
_tutorialState.step += 1;
_tutorialState.advanceCooldown = 0.4;
try { sfxExit(); } catch (e) {}
var p = document.getElementById('tutorial-panel');
p.style.transform = 'translateX(-50%) scale(1.06)';
p.style.borderColor = 'rgba(96,255,144,0.95)';
setTimeout(function() {
p.style.transform = 'translateX(-50%) scale(1)';
p.style.borderColor = '';
_refreshTutorialMarkerVisibility();
_showTutorialPanel();
// Expose so jump / portal / teleport hooks can flag progress
window._tutHooks = {
onJump: function() { _tutorialState.jumpedOnce = true; },
onTeleport: function() { _tutorialState.teleportedOnce = true; }
// ---- Tutorial briefing modal (Step 8) ----
function _showTutorialBriefM
if (_tutorialState.briefingShown) return;
_tutorialState.briefingShown = true;
var b = document.getElementById('tutorial-briefing');
b.style.display = 'flex';
// Free the cursor + pause input so the player can read calmly
try { inputUnlock(); } catch (e) {}
function _dismissTutorialBriefing() {
var b = document.getElementById('tutorial-briefing');
if (!b || b.style.display === 'none') return;
b.style.display = 'none';
_tutorialState.briefingDM
// Re-grab pointer so the player can keep playing
var canv = document.querySelector('canvas');
if (canv && canv.requestPointerLock) canv.requestPointerLock();
// Wire up dismiss handlers (click + space). Defer to ensure DOM exists.
setTimeout(function() {
var b = document.getElementById('tutorial-briefing');
b.addEventListener('click', _dismissTutorialBriefing);
window.addEventListener('keydown', function(e) {
var bb = document.getElementById('tutorial-briefing');
if (!bb || bb.style.display === 'none') return;
if (e.code === 'Space' || e.code === 'Enter' || e.code === 'Escape') {
e.preventDefault();
e.stopPropagation();
_dismissTutorialBriefing();
function rebuildCollidersFromScene() {
colliders.length = 0;
colliders.push(floorCollider);
if (ceilingCollider) colliders.push(ceilingCollider);
for (var i = 0; i < levelMeshes.length; M
registerBox(levelMeshes[i]);
if (momentumPlat.visible) registerBox(momentumPlat);
if (doorMesh.visible && !doorOpen) registerBox(doorMesh);
doorColliderIdx = -1;
if (doorMesh.visible && !doorOpen) {
doorColliderIdx = colliders.length - 1;
function placeExitMarker(def) {
if (!def || !def.exit) return;
var mn = def.exit.min;
var mx = def.exit.max;
var cx = (mn.x + mx.x) * 0.5;
var cz = (mn.z + mx.z) * 0.5;
exitMarker.position.set(cx, 0.02, M
exitMarker.scale.set(Math.max(0.8, (mx.x - mn.x) * 0.45), Math.max(0.8, (mx.z - mn.z) * 0.45), 1);
exitMarker.visible = true;
var levelSelectOpen = false;
function toggleLevelSelect() {
var el = document.getElementById('level-select');
if (!el) return;
levelSelectOpen = !levelSelectOpen;
if (levelSelectOpen) {
inputUnlock();
var list = document.getElementById('level-list');
list.innerHTML = '';
for (var i = 0; i < CHAMBERS.length; i++) {
var c = CHAMBERS[idx];
var row = document.createElement('div');
row.style.cssText = 'padding:8px 12px;margin:4px 0;border-radius:6px;cursor:pointer;border:1px solid ' +
(idx === currentChamber ? '#6af' : '#333') + ';background:' +
(idx === currentChamber ? 'rgba(100,170,255,.12)' : 'rgba(255,255,255,.03)');
row.innerHTML = '<span style="color:#6af;min-width:28px;display:inline-block">' + idx + '</span> ' +
'<strong>' + (c.title ||M
c.num) + '</strong>' +
'<span style="opacity:.5;margin-left:8px;font-size:12px">' + (c.num) + '</span>';
row.addEventListener('click', function () {
levelSelectOpen = false;
el.style.display = 'none';
buildChamber(idx);
inputLock();
list.appendChild(row);
el.style.display = 'block';
el.style.display = 'none';
function buildChamber(idx) {
ar n = CHAMBERS.length;
currentChamber = ((idx % n) + n) % n;
chamberDef = CHAMBERS[currentChamber];
// Reset tutorial UI when switching chambers (it will be re-armed by
// _buildTutorialMarkers() if the new chamber is the tutorial).
try { _hideTutorialPanel(); } catch (e) {}
// Step-by-step tutorial level: 8 wide x 60 deep x 6 tall corridor.
// z = +14 : SPAWN
// z = +10 : Jump obstacle (Step 2)
// z = +4 : No-portal fence (Steps 3-5: portal over)
// z = -4 : HalM
f-wall with ORANGE target HIGH (passage open below)
// z = -8 : Cube spawn (Step 6)
// z = -10 : Button + door (Step 7)
// z = -13.5 .. -19 : Stairs + platform up to y=4
// z = -21 : NO-PORTAL barrier wall (must use slingshot to fly over)
// z = -18 : pre-placed BLUE floor portal (under platform drop)
// z = -21 : pre-placed ORANGE wall portal on north face of barrier
// z = -30 : LASER (Step 9, must jump)
// z = -37 : TURRET (Step 10, knock over with cube)
z = -41 : EXIT pad (Step 11)
if (chamberDef.isTutorial && !chamberDef.glbUrl && !chamberDef.spawn) {
chamberDef.spawn = new THREE.Vector3(0, 1, 14);
// Raise ceiling so the slingshot platform (y=4) gives player headroom
chamberDef.ceilingY = 6.5;
chamberDef.walls = [
// Perimeter
corridor length 60 (z = +16 .. -44)
{ w:8, h:6, d:0.3, x:0, y:3, z:16, np:false }, // South wall
{ w:8, h:6, d:0.3, x:0, y:3, z:-44, np:false }, // NorM
{ w:0.3, h:6, d:60, x:-4, y:3, z:-14, np:false }, // West
{ w:0.3, h:6, d:60, x:4, y:3, z:-14, np:false }, // East
{ w:8, h:0.7, d:0.5, x:0, y:0.35, z:10, np:true },
// Steps 3-5
{ w:8, h:2.5, d:0.3, x:0, y:1.25, z:4, np:true },
// Half-wall with ORANGE target HIGH; passage open below (y=0..y=2)
{ w:8, h:2, d:0.3, x:0, y:3, z:-4, np:false },
// Step 8 SLM
gentle stair ramp going UP from y=0 to y=3
// (6 small steps of 0.5m each, 0.7m deep
easy to walk up by jumping)
{ w:4, h:0.5, d:0.7, x:0, y:0.25, z:-13.0, np:false },
{ w:4, h:1.0, d:0.7, x:0, y:0.50, z:-13.7, np:false },
{ w:4, h:1.5, d:0.7, x:0, y:0.75, z:-14.4, np:false },
{ w:4, h:2.0, d:0.7, x:0, y:1.00, z:-15.1, np:false },
{ w:4, h:2.5, d:0.7, x:0, y:1.25, z:-15.8, np:false },
{ w:4, h:3.0, d:0.7, x:0, y:1.50, z:-16.5,M
// Top platform at y=3, depth 1.5 (z=-16.5 to z=-18)
// player walks off and starts falling well BEFORE the barrier wall.
{ w:4, h:0.3, d:1.5, x:0, y:3.15, z:-17.25, np:false },
// BARRIER wall at z=-24
full ceiling height so the player can't land
// on top by placing their own portal. Only the pre-placed orange portal
// (on the north face) gets you past.
{ w:8, h:6.5, d:0.3, x:0, y:3.25, z:-24, np:true }
chamberDef.exit = {
min: new THREE.Vector3(-0.6, 0, -41.6),
max: new THREE.Vector3( 0.6, 0.1, -40.4),
needsDoor: false
// Cube + button + door for steps 6-7
chamberDef.cube = new THREE.Vector3(0, 0.5, -8);
chamberDef.buttonDoor = {
btn: [-2.5, -10],
door: [0, 2, -11.5]
chamberDef.momentum = null;
chamberDef._tutorialMarkers = true;
if (chamberDef.glbUrl) {
clearGLBState();
chamberDef.spM
awn = chamberDef.spawn || new THREE.Vector3(0, 1, 0);
chamberDef.walls = chamberDef.walls || [];
chamberDef.exit = chamberDef.exit || null;
chamberDef.cube = null;
chamberDef.buttonDoor = null;
chamberDef.momentum = null;
chamberDef.title = chamberDef.title || chamberDef.num;
chamberDef.line = chamberDef.line || '';
chamberDef.mission = chamberDef.mission || '';
loadGLBChamber(chamberDef.glbUrl, chamberDef);
// Box-based chamber (originaM
clearGLBState();
floorMesh.visible = true;
ceilingMesh.visible = true;
gridH.visible = true;
gridFine.visible = true;
typeof chamberDef.ceilingY === 'number' && isFinite(chamberDef.ceilingY)
? chamberDef.ceilingY
: DEFAULT_CEILING_Y;
currentCeilingY = _cy;
ceilingMesh.position.y = _cy;
ceilingCollider.min.set(-40, _cy, -40);
ceilingCollider.max.set(40, _cy + 0.1, 40);
clearLevelWalls();
portals.blue.mesh.group.visible = falseM
portals.orange.mesh.group.visible = false;
portals.blue._prevLZ = undefined;
portals.orange._prevLZ = undefined;
for (var w = 0; w < chamberDef.walls.length; w++) {
var s = chamberDef.walls[w];
var wm = makeWall(s.w, s.h, s.d, s.x, s.y, s.z);
wm.userData.portalOk = false;
wm.material.color.setHex(0x252530);
wm.material.roughness = 0.35;
wm.material.metalness = 0.55;
if (chamberDef._tutorialMarkers) {
if (chamberDef.momentum) {
var mp = chamberDef.momentum;
momentumPlat.scale.set(1, 1, 1);
momentumPlat.geometry.dispose();
momentumPlat.geometry = new THREE.BoxGeometry(mp.w, mp.h, mp.d);
momentumPlat.position.set(mp.x, mp.y, mp.z);
momentumPlat.visible = true;
momentumPlat.visible = false;
if (chamberDef.buttonDoor) {
var bd = chamberDef.buttonDoor;
doorMesh.visible = true;
doorMesh.position.set(bd.door[0]M
, bd.door[1], bd.door[2]);
doorOpen = false;
doorMesh.position.y = bd.door[1];
buttonBase.position.set(bd.btn[0], 0.06, bd.btn[1]);
buttonTop.position.set(bd.btn[0], 0.14, bd.btn[1]);
buttonBase.visible = true;
buttonTop.visible = true;
doorMesh.visible = false;
doorOpen = false;
buttonBase.visible = false;
buttonTop.visible = false;
if (chamberDef.cube) {
cubeMesh.visible = true;
cubeMesh.position.copy(chamberDef.cube);M
scene.add(cubeMesh);
cubeMesh.visible = false;
cubeState.held = false;
cubeState.vel.set(0, 0, 0);
cubeState._lockedToButton = false;
cubeState._dropCooldownUntil = 0;
rebuildCollidersFromScene();
rebuildPortalSurfaces();
player.pos.copy(chamberDef.spawn);
player.vel.set(0, 0, 0);
player.pitch = 0;
player.teleportCooldown = 0;
player.onGround = true;
player.spawnProtectUntil = (typeof performance !== 'undefined' ? M
performance.now() : Date.now()) + 5500;
player._prevInExitZone = false;
player.hp = PLAYER_MAX_HP;
player.hpRegenDelay = 0;
updateHPDisplay();
placeExitMarker(chamberDef);
var hc = document.getElementById('hud-chamber');
var hl = document.getElementById('hud-line');
var hm = document.getElementById('hud-mission');
var hs = document.getElementById('hud-skip');
if (hc) hc.textContent = chamberDef.title + ' (' + chamberDef.num + ')';
if (hl) hl.textContent = chamberDef.linM
if (hm) hm.textContent = chamberDef.mission;
if (hs) hs.style.display = chamberDef.isTutorial ? 'block' : 'none';
window._skipTutorial = function () {
if (chamberDef && chamberDef.isTutorial) {
buildChamber(currentChamber + 1);
// ========== GLB MAP ENGINE ==========
var glbScene = null; // loaded GLTF scene root
var glbMeshCollider = null; // the worldspawn mesh for raycast collision
var glbNpZones = []; // Box3[] from func_noportal_M
var glbDeathZones = []; // {box:Box3, damage:number}[] from trigger_hurt
var glbFizzlers = []; // {box:Box3, mesh:THREE.Mesh}[] from trigger_portal_cleanser
var glbLasers = []; // {start:Vec3, end:Vec3, mesh:THREE.Line}[]
var glbTurrets = []; // {pos:Vec3, mesh:THREE.Group, active:bool, fireTimer:number}[]
var glbPrePortals = []; // {a:{pos,rot,group}, b:{pos,rot,group}}[]
var glbActive = false; // true while a GLB map is loaded
var _collRay = new THREE.RM
_collRay.firstHitOnly = true;
// Token used to invalidate in-flight async GLB loads when the player
// switches levels before the previous .glb finishes loading.
// Without this, ~234 env_lasers from `the_cube_part1.glb` (Level 5) can
// bleed into other levels when their load callback fires too late.
var _glbLoadToken = 0;
function clearGLBState() {
_glbLoadToken++;
scene.remove(glbScene);
glbScene.traverse(function(o) {
if (o.geometry) o.geomeM
if (o.material) {
if (Array.isArray(o.material)) o.material.forEach(function(m){m.dispose();});
else o.material.dispose();
glbScene = null;
glbMeshCollider = null;
glbNpZones.length = 0;
glbDeathZones.length = 0;
for (var fi = 0; fi < glbFizzlers.length; fi++) {
if (glbFizzlers[fi].mesh) scene.remove(glbFizzlers[fi].mesh);
glbFizzlers.length = 0;
for (var li = 0; li < glbLasers.length; li++) {
asers[li].mesh) scene.remove(glbLasers[li].mesh);
// Tutorial-injected lasers may carry extra emitter meshes
if (glbLasers[li]._extraMeshes) {
for (var emi = 0; emi < glbLasers[li]._extraMeshes.length; emi++) {
scene.remove(glbLasers[li]._extraMeshes[emi]);
glbLasers.length = 0;
for (var ti = 0; ti < glbTurrets.length; ti++) {
if (glbTurrets[ti].mesh) scene.remove(glbTurrets[ti].mesh);
glbTurrets.length = 0;
for (var pi = 0; pi < glbPM
rePortals.length; pi++) {
var pp = glbPrePortals[pi];
if (pp.a && pp.a.group) {
if (pp.a.group._beam) scene.remove(pp.a.group._beam);
if (pp.a.group._arrow) scene.remove(pp.a.group._arrow);
scene.remove(pp.a.group);
if (pp.b && pp.b.group) {
if (pp.b.group._beam) scene.remove(pp.b.group._beam);
if (pp.b.group._arrow) scene.remove(pp.b.group._arrow);
scene.remove(pp.b.group);
if (pp._rimWalls) {
for (var rwi = 0; rwi < ppM
._rimWalls.length; rwi++) scene.remove(pp._rimWalls[rwi]);
pp._rimWalls.length = 0;
glbPrePortals.length = 0;
if (_prePortalAnimList) _prePortalAnimList.length = 0;
if (_buttonVisualList) {
for (var bvc = 0; bvc < _buttonVisualList.length; bvc++) {
if (_buttonVisualList[bvc]) scene.remove(_buttonVisualList[bvc]);
_buttonVisualList.length = 0;
// Hide guide arrow on level change
_guideArrowActive = false;
_guideTargetPos = null;
_guideArrow) _guideArrow.visible = false;
glbActive = false;
function parseSourceAngles(angStr) {
if (!angStr) return new THREE.Euler(0, 0, 0);
var parts = angStr.split(/\s+/).map(Number);
var pitch = (parts[0] || 0) * Math.PI / 180;
var yaw = (parts[1] || 0) * Math.PI / 180;
var roll = (parts[2] || 0) * Math.PI / 180;
return new THREE.Euler(pitch, yaw, roll, 'YXZ');
function makeFizzlerVisual(pos, size) {
var grp = new THREE.Group();
new THREE.PlaneGeometry(size.x || 2, size.y || 3);
var mat = new THREE.MeshBasicMaterial({
color: 0x8844ff, transparent: true, opacity: 0.25,
side: THREE.DoubleSide, depthWrite: false, blending: THREE.AdditiveBlending
grp.add(new THREE.Mesh(geo, mat));
var glow = new THREE.Mesh(
new THREE.PlaneGeometry((size.x || 2) * 1.15, (size.y || 3) * 1.1),
new THREE.MeshBasicMaterial({
color: 0x6622cc, transparent: true, opacity: 0.08,
side: THREE.M
DoubleSide, depthWrite: false, blending: THREE.AdditiveBlending
glow.position.z = -0.02;
var fzLight = new THREE.PointLight(0x8844ff, 0.6, 5, 2);
fzLight.position.z = 0.3;
grp.add(fzLight);
grp.position.copy(pos);
function makeLaserVisual(start, end) {
var dir = new THREE.Vector3().subVectors(end, start);
var len = dir.length();
if (len < 0.01) len = 0.01;
var mid = new THREE.Vector3().addVM
ectors(start, end).multiplyScalar(0.5);
var geo = new THREE.CylinderGeometry(0.03, 0.03, len, 6, 1, true);
var mat = new THREE.MeshBasicMaterial({ color: 0xff0000, transparent: true, opacity: 0.7 });
var beam = new THREE.Mesh(geo, mat);
beam.position.copy(mid);
dir.normalize();
var axis = new THREE.Vector3(0, 1, 0);
var q = new THREE.Quaternion().setFromUnitVectors(axis, dir);
beam.quaternion.copy(q);
var glowGeo = new THREE.CylinderGeometry(0.12, 0.12, len, 6, 1, truM
var glowMat = new THREE.MeshBasicMaterial({
color: 0xff0000, transparent: true, opacity: 0.15,
blending: THREE.AdditiveBlending, depthWrite: false
var glow = new THREE.Mesh(glowGeo, glowMat);
// Add point lights along the beam
var lightCount = Math.max(1, Math.floor(len / 3));
for (var lli = 0; lli < lightCount; lli++) {
var lp = new THREE.PointLight(0xff2200, 0.4, 3, 2);
lp.position.y = (-len / 2) + (lli + 0.5) * (len / lightCount);
scene.add(beam);
function makeTurretVisual(pos) {
var grp = new THREE.Group();
// Body with panels
var body = new THREE.Mesh(
new THREE.CylinderGeometry(0.15, 0.22, 0.85, 8),
new THREE.MeshStandardMaterial({ color: 0xeeeef4, roughness: 0.2, metalness: 0.6 })
body.position.y = 0.42;
body.castShadow = true;
var panelGeo = new THREE.BoxGeometry(0.04, 0.5, 0.18);
var panelMat = new THREE.M
MeshStandardMaterial({ color: 0xccccdd, roughness: 0.3, metalness: 0.4 });
var panelL = new THREE.Mesh(panelGeo, panelMat);
panelL.position.set(-0.18, 0.4, 0);
grp.add(panelL);
var panelR = new THREE.Mesh(panelGeo, panelMat);
panelR.position.set(0.18, 0.4, 0);
grp.add(panelR);
var eye = new THREE.Mesh(
new THREE.SphereGeometry(0.07, 8, 6),
new THREE.MeshBasicMaterial({ color: 0xff0000 })
eye.position.set(0, 0.65, 0.16);
var eyeGlow = new THREE.Mesh(
new THREE.SphereGeometry(0.14, 8, 6),
new THREE.MeshBasicMaterial({ color: 0xff0000, transparent: true, opacity: 0.15, blending: THREE.AdditiveBlending, depthWrite: false })
eyeGlow.position.copy(eye.position);
grp.add(eyeGlow);
var light = new THREE.PointLight(0xff0000, 0.5, 4, 2);
light.position.copy(eye.position);
// Laser sight line
var sightGeo = new THREE.CylinderGeometry(0.005, 0.005, 15, 4, 1, true);
var sightMat = new THREE.MeshBasicMaterial({ color: 0xff0000, transparent: true, opacity: 0.2, blending: THREE.AdditiveBlending, depthWrite: false });
var sight = new THREE.Mesh(sightGeo, sightMat);
sight.position.set(0, 0.65, 7.6);
sight.rotation.x = Math.PI / 2;
grp.position.copy(pos);
function makeButtonVisual(pos) {
// Big, hard-to-miss button: red octagonal pad on a metal pedestal,
// pulsing light beam, and a glowing pointM
var grp = new THREE.Group();
// Pedestal (dark metal cylinder)
var pedestal = new THREE.Mesh(
new THREE.CylinderGeometry(0.45, 0.55, 0.25, 8),
new THREE.MeshStandardMaterial({ color: 0x333333, roughness: 0.6, metalness: 0.7 })
pedestal.position.y = 0.125;
grp.add(pedestal);
// Red button pad on top
var padGeo = new THREE.CylinderGeometry(0.36, 0.36, 0.08, 8);
var padMat = new THREE.MeshStandardMaterial({
color: 0xff2222,
emissive: 0xff0000,
emissiveIntensity: 0.8,
roughness: 0.3,
metalness: 0.2
var pad = new THREE.Mesh(padGeo, padMat);
pad.position.y = 0.29;
// Inner glowing dot
var dot = new THREE.Mesh(
new THREE.CircleGeometry(0.18, 16),
new THREE.MeshBasicMaterial({ color: 0xffaaaa, transparent: true, opacity: 0.9, side: THREE.DoubleSide })
dot.rotation.x = -Math.PI / 2;
dot.position.y = 0.331;
// Halo on the floor around button (visible froM
var halo = new THREE.Mesh(
new THREE.CircleGeometry(1.0, 32),
new THREE.MeshBasicMaterial({ color: 0xff3333, transparent: true, opacity: 0.18, side: THREE.DoubleSide, depthWrite: false, blending: THREE.AdditiveBlending })
halo.rotation.x = -Math.PI / 2;
halo.position.y = 0.005;
// Vertical beam (visible from across the room)
var beam = new THREE.Mesh(
new THREE.CylinderGeometry(0.45, 0.15, 5, 12, 1, true),
new THREE.MeshBasicMaterial({ coM
lor: 0xff3333, transparent: true, opacity: 0.18, side: THREE.DoubleSide, depthWrite: false, blending: THREE.AdditiveBlending })
beam.position.y = 2.5;
var light = new THREE.PointLight(0xff5555, 1.4, 8);
light.position.y = 0.5;
grp.position.copy(pos);
grp.position.y -= 0.05; // sit slightly into the floor for stability
grp._halo = halo;
grp._beam = beam;
grp._light = light;
grp._activated = false;
if (!_buttonVisualList) _buttonVisualList = [];
_buttonVisualList.push(grp);
var _buttonVisualList = [];
var _buttonVisualT = 0;
function makePrePortalVisual(pos, euler, color) {
var grp = new THREE.Group();
// Filled inner disc
glowing portal "surface"
var disc = new THREE.Mesh(
new THREE.CircleGeometry(PORTAL_CIRCLE_R * 0.95, 32),
new THREE.MeshBasicMaterial({ color: color, transparent: true, opacity: 0.M
55, side: THREE.DoubleSide, depthWrite: false })
// Outer glow disc (larger, softer)
var halo = new THREE.Mesh(
new THREE.CircleGeometry(PORTAL_CIRCLE_R * 1.4, 32),
new THREE.MeshBasicMaterial({ color: color, transparent: true, opacity: 0.18, side: THREE.DoubleSide, depthWrite: false, blending: THREE.AdditiveBlending })
halo.position.z = -0.001;
var ring = new THREE.Mesh(
new THREE.TorusGeometry(PORTAL_CIRCLE_R,M
new THREE.MeshBasicMaterial({ color: color })
// Inner thinner ring (animated rotation)
var innerRing = new THREE.Mesh(
new THREE.TorusGeometry(PORTAL_CIRCLE_R * 0.7, 0.035, 8, 32),
new THREE.MeshBasicMaterial({ color: 0xffffff, transparent: true, opacity: 0.85 })
grp.add(innerRing);
// Strong point light
var glow = new THREE.PointLight(color, 1.6, 8);
grp.position.copy(pos);
if (euler) grp.rotation.M
// Determine portal orientation in WORLD space
var worldNormal = new THREE.Vector3(0, 0, 1).applyEuler(euler || new THREE.Euler());
var isFloor = worldNormal.y > 0.7;
var isCeiling = worldNormal.y < -0.7;
// Vertical beam (visible from far away)
added directly to scene in world space
var beamHeight = isFloor ? 6 : 4;
var beam = new THREE.Mesh(
new THREE.CylinderGeometry(PORTAL_CIRCLE_R * 0.85, PORTAL_CIRCLE_R * 0.4, beamHeight, 16, 1, true),
new THREE.MeshBM
asicMaterial({ color: color, transparent: true, opacity: 0.22, side: THREE.DoubleSide, depthWrite: false, blending: THREE.AdditiveBlending })
beam.position.copy(pos).addScaledVector(worldNormal, beamHeight * 0.5);
// Align cylinder Y-axis with portal normal
beam.quaternion.setFromUnitVectors(new THREE.Vector3(0, 1, 0), worldNormal);
scene.add(beam);
grp._beam = beam;
// For FLOOR portals: add a downward-pointing arrow above to signal "FALL IN HERE"
rp = new THREE.Group();
// Cone tip pointing down
var cone = new THREE.Mesh(
new THREE.ConeGeometry(0.35, 0.7, 6),
new THREE.MeshBasicMaterial({ color: color })
cone.rotation.x = Math.PI; // tip down
cone.position.y = 0;
arrowGrp.add(cone);
var shaft = new THREE.Mesh(
new THREE.CylinderGeometry(0.1, 0.1, 0.8, 6),
new THREE.MeshBasicMaterial({ color: color })
shaft.position.y = 0.7;
arrowGrp.add(shaft);
arrowGrp.position.copy(pos).addScaledVector(worldNormal, 2.2);
scene.add(arrowGrp);
grp._arrow = arrowGrp;
grp._arrowBaseY = arrowGrp.position.y;
grp._innerRing = innerRing;
grp._halo = halo;
grp._color = color;
grp._isFloor = isFloor;
grp._isCeiling = isCeiling;
if (!_prePortalAnimList) _prePortalAnimList = [];
_prePortalAnimList.push(grp);
var _prePortalAnimList = [];
var _prePortalAnimT = 0;
BChamber(url, chamDef) {
clearGLBState();
clearLevelWalls();
glbActive = true;
floorMesh.visible = false;
ceilingMesh.visible = false;
gridH.visible = false;
gridFine.visible = false;
portals.blue.mesh.group.visible = false;
portals.orange.mesh.group.visible = false;
portals.blue._prevLZ = undefined;
portals.orange._prevLZ = undefined;
momentumPlat.visible = false;
doorMesh.visible = false;
buttonBase.visible = false;
buttonTop.visible = false;
esh.visible = false;
exitMarker.visible = false;
var loader = new GLTFLoader();
if (_dracoLoaderInstance) loader.setDRACOLoader(_dracoLoaderInstance);
var loadToken = _glbLoadToken;
var _loadStart = (typeof performance !== 'undefined' ? performance.now() : Date.now());
console.log('[GLB] loading', url, 'token=', loadToken);
loader.load(url, function(gltf) {
// If the player switched levels while this GLB was loading,
// bail out and dispose the now-stale scene to prevent staM
// (e.g. 234 env_lasers from the_cube_part1) leaking into other levels.
if (loadToken !== _glbLoadToken) {
console.warn('[GLB] STALE load discarded:', url, 'tok was', loadToken, 'now', _glbLoadToken);
gltf.scene.traverse(function(o) {
if (o.geometry) o.geometry.dispose();
if (o.material) {
if (Array.isArray(o.material)) o.material.forEach(function(m){m.dispose();});
else o.material.dispose();
} catch (e) { /* */ }
var _elapsed = ((typeof performance !== 'undefined' ? performance.now() : Date.now()) - _loadStart) | 0;
console.log('[GLB] loaded', url, 'in', _elapsed, 'ms');
glbScene = gltf.scene;
scene.add(glbScene);
// Atmospheric lighting for GLB maps
var glbAmb = new THREE.AmbientLight(0x8899bb, 0.45);
glbScene.add(glbAmb);
var glbFill = new THREE.DirectionalLight(0xeeeeff, 0.6);
glbFill.position.set(5, 2M
glbFill.castShadow = true;
glbScene.add(glbFill);
var glbFill2 = new THREE.DirectionalLight(0x6677aa, 0.25);
glbFill2.position.set(-10, 10, -10);
glbScene.add(glbFill2);
// Warm accent light (simulates emergency lighting)
var glbWarm = new THREE.PointLight(0xff8844, 0.4, 30);
glbWarm.position.set(0, 5, 0);
glbScene.add(glbWarm);
// Cool rim light for depth
var glbRim = new THREE.DirectionalLight(0x4466cc, 0.15);
glbRim.position.set(0, -5M
glbScene.add(glbRim);
var entities = [];
var spawnPos = null;
var cubePositions = [];
var buttonNodes = [];
var doorNodes = [];
var laserTargets = {};
glbScene.traverse(function(node) {
var extras = node.userData || {};
if (extras.extras) extras = extras.extras;
var cn = extras.classname || '';
if (node.isMesh) {
node.castShadow = true;
node.receiveShadow = true;
// Hide light-helper / sky / tool M
placeholder meshes that the
// Source -> GLB exporter writes as visible primitives with garish
// pink/magenta colors (e.g. claustrophobia.glb's "LIGHTS/..." cones).
// Match by material name prefix so it works for all maps.
var matName = '';
if (node.material) {
matName = (Array.isArray(node.material) ? node.material[0] : node.material).name || '';
var isHelperMat = /^(LIGHTS\/|TOOLS\/|EFFECTS\/|SKYBOX\/|sky_|HUD\/)/i.test(matName)M
/tools_?(?:nodraw|skybox|trigger|invisible|clip|areaportal|hint|skip)/i.test(matName);
if (isHelperMat) {
node.visible = false;
node.userData._isHelper = true;
if (node.material) {
var mats = Array.isArray(node.material) ? node.material : [node.material];
for (var mi = 0; mi < mats.length; mi++) {
mats[mi].side = THREE.DoubleSide;
if (mats[mi].roughness !== undefined) {
mats[mi].roughness = Math.max(0.3, Math.min(0.85, mats[mi].roughness));
mats[mi].metalness = Math.max(0.05, Math.min(0.4, mats[mi].metalness || 0));
mats[mi].envMapIntensity = 0.4;
var isTriggerVol = cn === 'trigger_portal_cleanser' || cn === 'trigger_hurt' || cn === 'trigger_multiple' || cn === 'func_portal_detector' || cn === 'func_portal_bumper' || cn === 'trigger_once' || cn === 'game_end';
var isDoor = cn === 'M
func_door' || cn === 'func_tracktrain';
if (isHelperMat) {
// Light/tool helpers: invisible, no collision, no portal placement
node.userData.portalOk = false;
node.userData.type = null;
} else if (isTriggerVol) {
node.visible = false;
} else if (isDoor) {
node.userData.type = WALL_USER;
node.userData.portalOk = false;
node.userData.isDoor = true;
node.userData.doorOpen = false;
lse if (cn === 'func_noportal_volume') {
node.visible = false;
node.userData.type = WALL_USER;
node.userData.portalOk = false;
node.userData.type = WALL_USER;
node.userData.portalOk = true;
if (cn === 'info_player_start' && node.position) {
spawnPos = node.position.clone();
if (cn === 'func_noportal_volume' && node.isMesh) {
var npBox = new THREE.Box3().setFromObject(noM
// Shrink NP zone slightly so portals on walls just touching it remain valid
npBox.expandByScalar(-0.18);
glbNpZones.push(npBox);
node.userData.portalOk = false;
if (cn === 'trigger_hurt') {
var hurtBox;
if (node.isMesh) {
hurtBox = new THREE.Box3().setFromObject(node);
var hp = node.position.clone();
hurtBox = new THREE.Box3(
hp.clone().addScalar(-1.5),
hp.clone().addScalar(1.5)
var dmg = parseFloat(extras.damage) || 100;
glbDeathZones.push({ box: hurtBox, damage: dmg });
if (cn === 'trigger_portal_cleanser') {
var fzBox;
if (node.isMesh) {
fzBox = new THREE.Box3().setFromObject(node);
var fp = node.position.clone();
fzBox = new THREE.Box3(fp.clone().addScalar(-1), fp.clone().addScalar(1));
var fzCenteM
r = new THREE.Vector3();
fzBox.getCenter(fzCenter);
var fzSize = new THREE.Vector3();
fzBox.getSize(fzSize);
var fzMesh = makeFizzlerVisual(fzCenter, fzSize);
glbFizzlers.push({ box: fzBox, mesh: fzMesh });
if (cn === 'npc_turret_floor' || cn === 'npc_portal_turret_floor') {
var tPos = node.position.clone();
var tMesh = makeTurretVisual(tPos);
glbTurrets.push({ pos: tPos, mesh: tMesh, active: true, fireTimer: 2 + Math.M
random() * 2, lastShot: 0, dead: false });
if (cn === 'env_laser') {
var lStart = node.position.clone();
var targetName = extras.LaserTarget || '';
entities.push({ type: 'laser', start: lStart, targetName: targetName, node: node });
if (cn === 'prop_portal') {
entities.push({ type: 'portal', node: node, extras: extras });
if ((cn === 'prop_physics' || cn === 'prop_physics_override') &&
(extras.targetname === 'bM
ox' || (extras.model && (extras.model.indexOf('metal_box') >= 0 || extras.model.indexOf('Box1') >= 0)))) {
cubePositions.push(node.position.clone());
if (cn === 'func_button' || (cn === 'trigger_multiple' && (node.name || '').indexOf('button') >= 0)) {
buttonNodes.push({ pos: node.position.clone(), extras: extras });
if (cn === 'func_door') {
doorNodes.push({ pos: node.position.clone(), extras: extras, targetname: extras.targetname || '' });
if (cn === 'game_end') {
entities.push({ type: 'exit', pos: node.position.clone() });
if (cn === 'trigger_once') {
var ost = extras.OnStartTouch || extras.OnTrigger || '';
if (ost.indexOf('EndGame') >= 0 || ost.indexOf('disconnect') >= 0) {
entities.push({ type: 'exit', pos: node.position.clone() });
if (node.name && node.position) {
laserTargets[node.name] = node.position.clone();
if (extras.targM
etname) laserTargets[extras.targetname] = node.position.clone();
// Resolve laser targets
var _laserCount = 0;
for (var ei = 0; ei < entities.length; ei++) {
if (entities[ei].type === 'laser') {
var lt = entities[ei];
var endPos = laserTargets[lt.targetName];
if (endPos) {
var lMesh = makeLaserVisual(lt.start, endPos);
glbLasers.push({ start: lt.start, end: endPos, mesh: lMesh });
_laserCount++;
console.log('[GLB] entities created
turrets:', glbTurrets.length, 'lasers:', _laserCount, 'fizzlers:', glbFizzlers.length, 'cubes:', cubePositions.length, 'buttons:', buttonNodes.length, 'doors:', doorNodes.length);
// Auto-detect map identity by world bounds (worldspawn fingerprint).
// The user inscribed the 7 GLBs in an arbitrary order, so we override
// the chamber metadata with whatever map this URL actually contains.
var detected = _detectM
MapIdentity(glbScene);
if (detected && chamberDef) {
var oldT = chamberDef.title;
chamberDef.title = chamberDef.num + '
' + detected.title;
chamberDef.line = detected.line;
chamberDef.mission = detected.mission;
chamberDef._mapId = detected.id;
console.log('[GLB] detected map identity:', detected.id, '(slot was', oldT + ')');
var hc = document.getElementById('hud-chamber');
var hl = document.getElementById('hud-line');M
var hm = document.getElementById('hud-mission');
if (hc) hc.textContent = chamberDef.title + ' (' + chamberDef.num + ')';
if (hl) hl.textContent = chamberDef.line;
if (hm) hm.textContent = chamberDef.mission;
} else if (!detected) {
console.warn('[GLB] could not identify map by world bounds');
} catch (e) { console.warn('[GLB] map identity detection failed', e); }
// Resolve pre-placed portals by LinkageGroupID.
// Determine porM
// 1) PRIMARY: use Source Engine angles ("pitch yaw roll") if available
// (pitch=
90 -> floor/ceiling portal)
// 2) FALLBACK: raycast probe in 6 directions to find the mounting surface.
var portalMap = {};
var probeDirs = [
new THREE.Vector3(0, -1, 0),
new THREE.Vector3(0, 1, 0),
new THREE.Vector3(1, 0, 0),
new THREE.Vector3(-1, 0, 0),
new THREE.Vector3(0, 0, 1),
new THREE.Vector3(0, 0, -1)
var probeRay M
= new THREE.Raycaster();
for (var ei2 = 0; ei2 < entities.length; ei2++) {
if (entities[ei2].type === 'portal') {
var pe = entities[ei2];
var linkId = pe.extras.LinkageGroupID || pe.extras.targetname || ('auto_' + ei2);
var isTwo = pe.extras.PortalTwo === '1';
pe.node.updateMatrixWorld(true);
var pPos = new THREE.Vector3();
pe.node.getWorldPosition(pPos);
// PRIMARY: parse Source angles
var pNormal = null;
var ag = pe.extras.angles.split(/\s+/).map(Number);
var pitch = ag[0] || 0; // up/down
var yawDeg = ag[1] || 0; // around vertical
if (pitch > 60) {
// looking down in Source = portal mounted on ceiling, opens downward
pNormal = new THREE.Vector3(0, -1, 0);
} else if (pitch < -60) {
// looking up in Source = portal mounted on floor, opens upward
pNormal = new THREE.Vector3(0, 1, M
} else {
// wall portal: yaw determines horizontal facing
// Source: yaw=0 -> +X, yaw=90 -> +Y(north), but +Y in source is converted to ?
// GLB exporter typically rotates so source +X stays +X, source +Z (up) becomes +Y
var yawRad = yawDeg * Math.PI / 180;
pNormal = new THREE.Vector3(Math.cos(yawRad), 0, -Math.sin(yawRad));
// FALLBACK: probe surrounding geometry
if (!pNormal) {
var bestDist = Infinity;
var bestDir = null;
for (var di = 0; di < probeDirs.length; di++) {
probeRay.set(pPos, probeDirs[di]);
probeRay.far = 1.5;
var probeHits = probeRay.intersectObject(glbScene, true);
for (var phi = 0; phi < probeHits.length; phi++) {
var ph = probeHits[phi];
if (!ph.object || !ph.object.visible) continue;
if (ph.object.userData && ph.object.userData.type !== M
WALL_USER) continue;
if (ph.distance < bestDist) {
bestDist = ph.distance;
bestDir = probeDirs[di];
break;
if (bestDir) {
pNormal = bestDir.clone().negate();
} else {
var pQuat = new THREE.Quaternion();
pe.node.getWorldQuaternion(pQuat);
pNormal = new THREE.Vector3(0, 0, 1).applyQuaternion(pQuat);
// Build Euler so the visual disc faces along the normal
// (default disc faces +Z in local space)
var pEuler;
if (pNormal.y > 0.7) {
pEuler = new THREE.Euler(-Math.PI / 2, 0, 0, 'YXZ');
} else if (pNormal.y < -0.7) {
pEuler = new THREE.Euler(Math.PI / 2, 0, 0, 'YXZ');
// Wall portal: yaw so +Z points along pNormal
var yaw = Math.atan2(pNormal.x, pNormal.z);
pEuler = new THREE.Euler(0, M
if (!portalMap[linkId]) portalMap[linkId] = {};
var color = isTwo ? 0xff8800 : 0x4488ff;
var pGroup = makePrePortalVisual(pPos, pEuler, color);
// Nudge the portal slightly off the surface so the disc isn't z-fighting
pGroup.position.addScaledVector(pNormal, 0.04);
if (isTwo) {
portalMap[linkId].b = { pos: pPos, euler: pEuler, group: pGroup, normal: pNormal };
portalMap[linkId].a = { pM
os: pPos, euler: pEuler, group: pGroup, normal: pNormal };
for (var lk in portalMap) {
if (portalMap[lk].a && portalMap[lk].b) {
glbPrePortals.push(portalMap[lk]);
// FALLBACK: auto-pair orphaned portals (e.g. L6 the_cube_part2 has portals
// in two different LinkageGroupIDs that are obviously meant to be a pair).
// Collect all unpaired portals and link them by closest pair.
var orphans = [];
for (var olk in portM
var grp = portalMap[olk];
if (grp.a && !grp.b) orphans.push({ side: grp.a, isTwo: false, lk: olk });
else if (grp.b && !grp.a) orphans.push({ side: grp.b, isTwo: true, lk: olk });
if (orphans.length >= 2) {
// Pair sequentially: orphan[0]+orphan[1], orphan[2]+orphan[3], ...
for (var oi = 0; oi + 1 < orphans.length; oi += 2) {
var pair = { a: orphans[oi].side, b: orphans[oi + 1].side };
// Make colors distinct for the auto-pair (overrM
ide original orange/blue)
// -> keep their existing visuals as-is
glbPrePortals.push(pair);
// Build "well rim" barriers around floor portals so players must drop in from above.
for (var fpi = 0; fpi < glbPrePortals.length; fpi++) {
var fpp = glbPrePortals[fpi];
var sides = ['a', 'b'];
for (var sk = 0; sk < sides.length; sk++) {
var pSide = fpp[sides[sk]];
if (!pSide) continue;
var sNormal = pSide.normal ? pSideM
.normal.clone() : new THREE.Vector3(0, 0, 1).applyEuler(pSide.euler);
if (sNormal.y < 0.7) continue; // floor portal only
var rimRadius = PORTAL_CIRCLE_R * 1.15;
var rimHeight = 1.6;
// 4 invisible collision walls around the portal (square enclosure)
var wallSegments = [
{ x: rimRadius, z: 0, w: 0.15, d: rimRadius * 2 + 0.3 },
{ x: -rimRadius, z: 0, w: 0.15, d: rimRadius * 2 + 0.3 },
{ x: 0, z: rimRadius, w: rimRadius * 2 + 0.3, dM
{ x: 0, z: -rimRadius, w: rimRadius * 2 + 0.3, d: 0.15 }
for (var wi = 0; wi < wallSegments.length; wi++) {
var ws = wallSegments[wi];
var wallGeo = new THREE.BoxGeometry(ws.w, rimHeight, ws.d);
var wallMat = new THREE.MeshBasicMaterial({ visible: false });
var wallMesh = new THREE.Mesh(wallGeo, wallMat);
wallMesh.position.set(pSide.pos.x + ws.x, pSide.pos.y + rimHeight * 0.5, pSide.pos.z + ws.z);
llMesh.userData.type = WALL_USER;
wallMesh.userData.portalOk = false;
wallMesh.userData.isPortalRim = true;
// Must be a child of glbScene (= glbMeshCollider) to be tested by raycaster
glbScene.add(wallMesh);
wallMesh.updateMatrixWorld(true);
if (!fpp._rimWalls) fpp._rimWalls = [];
fpp._rimWalls.push(wallMesh);
// Visible decorative rim (low ring) so player sees the "well"
var visRim = new THREE.Mesh(M
new THREE.TorusGeometry(rimRadius, 0.08, 8, 32),
new THREE.MeshBasicMaterial({ color: 0xffaa33, transparent: true, opacity: 0.85 })
visRim.rotation.x = Math.PI / 2;
visRim.position.set(pSide.pos.x, pSide.pos.y + 0.05, pSide.pos.z);
scene.add(visRim);
if (!fpp._rimWalls) fpp._rimWalls = [];
fpp._rimWalls.push(visRim);
fallback chain for maps without info_player_start (e.g. L6)
// 1) Try the cube position (player usually starts near a cube puzzle)
if (cubePositions.length > 0) {
spawnPos = cubePositions[0].clone();
spawnPos.y += 2; // raise above cube so we don't spawn inside it
// 2) Try a pre-placed portal position
else if (glbPrePortals.length > 0 && glbPrePortals[0].a) {
spawnPos = glbPrePortals[0].a.pos.clone();
spawnPos.y += 1.5;
// 3) Use the center of the GLB bounding box, rM
var sb = new THREE.Box3().setFromObject(glbScene);
var sc = new THREE.Vector3();
sb.getCenter(sc);
spawnPos = new THREE.Vector3(sc.x, sb.max.y - 2, sc.z);
player.pos.copy(spawnPos);
chamDef.spawn = spawnPos.clone();
player.vel.set(0, 0, 0);
player.yaw = 0;
player.pitch = 0;
player.teleportCooldown = 0;
player.onGround = true;
player.spawnProtectUntil = (typeof performance !== 'undefined' ? M
performance.now() : Date.now()) + 5500;
player._prevInExitZone = false;
player.hp = PLAYER_MAX_HP;
player.hpRegenDelay = 0;
// Cube (use first physics box)
if (cubePositions.length > 0) {
cubeMesh.visible = true;
cubeMesh.position.copy(cubePositions[0]);
scene.add(cubeMesh);
cubeState.held = false;
cubeState.vel.set(0, 0, 0);
chamDef._glbCubeSpawn = cubePositions[0].clone();
// Button/Door: link by targetname (OnPressed ->M
var glbButtonDoorPairs = [];
for (var bi = 0; bi < buttonNodes.length; bi++) {
var btn = buttonNodes[bi];
var btnOutputs = btn.extras.OnPressed || btn.extras.OnStartTouch || btn.extras.OnTrigger || '';
var linkedDoor = null;
for (var di2 = 0; di2 < doorNodes.length; di2++) {
var dn = doorNodes[di2];
if (dn.targetname && btnOutputs.indexOf(dn.targetname) >= 0) {
linkedDoor = dn; break;
kedDoor && doorNodes.length > 0) {
linkedDoor = doorNodes[Math.min(bi, doorNodes.length - 1)];
// Always create a visual marker for the button (even if no door link)
var btnVisual = makeButtonVisual(btn.pos);
if (linkedDoor) {
glbButtonDoorPairs.push({
btnPos: btn.pos.clone(),
doorNode: linkedDoor,
doorMeshNodes: [],
activated: false,
visual: btnVisual
// Find actuaM
l door meshes by targetname
glbScene.traverse(function(dNode) {
if (!dNode.isMesh || !dNode.userData.isDoor) return;
var dExtras = dNode.userData.extras || (dNode.userData.extras ? dNode.userData.extras : dNode.userData);
var dTargetname = dExtras.targetname || dExtras.classname || '';
for (var pi2 = 0; pi2 < glbButtonDoorPairs.length; pi2++) {
var pair = glbButtonDoorPairs[pi2];
if (pair.doorNode.targetname && pair.doorNode.targetname === dTargetname) {
pair.doorMeshNodes.push(dNode);
chamDef._glbButtonDoorPairs = glbButtonDoorPairs;
// Hide the generic door/button meshes (we use GLB doors)
doorMesh.visible = false;
buttonBase.visible = false;
buttonTop.visible = false;
var exitEntity = null;
for (var exi = 0; exi < entities.length; exi++) {
if (entities[exi].type === 'exit') { exitEntity = entities[exi]; break; }
if (exitEntity) {
min: exitEntity.pos.clone().addScalar(-2),
max: exitEntity.pos.clone().addScalar(2),
needsDoor: false
placeExitMarker(chamDef);
} else if (doorNodes.length > 0) {
var lastDoor = doorNodes[doorNodes.length - 1];
chamDef.exit = {
min: lastDoor.pos.clone().addScalar(-2),
max: lastDoor.pos.clone().addScalar(2),
needsDoor: false
placeExitMarker(chamDef);
CK: pick the point furthest from spawn within the GLB bounds.
// This guarantees every map has a beatable exit.
var fallbackBounds = new THREE.Box3().setFromObject(glbScene);
var corners = [
new THREE.Vector3(fallbackBounds.min.x, fallbackBounds.min.y + 1, fallbackBounds.min.z),
new THREE.Vector3(fallbackBounds.max.x, fallbackBounds.min.y + 1, fallbackBounds.min.z),
new THREE.Vector3(fallbackBounds.min.x, fallbackBounds.min.y + 1, fallbackBounds.max.z),
new THREE.Vector3(fallbackBounds.max.x, fallbackBounds.min.y + 1, fallbackBounds.max.z)
var bestCorner = corners[0];
var bestDist = 0;
for (var ci = 0; ci < corners.length; ci++) {
var d = corners[ci].distanceTo(spawnPos || new THREE.Vector3());
if (d > bestDist) { bestDist = d; bestCorner = corners[ci]; }
chamDef.exit = {
min: bestCorner.clone().addScalar(-2.5),
max: bestCorner.clone().addScalar(2.5),
needsDoorM
placeExitMarker(chamDef);
// Set up collision mesh (collect all geometry meshes)
var collisionMeshes = [];
glbScene.traverse(function(cm) {
if (cm.isMesh && cm.userData && cm.userData.type === WALL_USER) {
cm.updateMatrixWorld(true);
collisionMeshes.push(cm);
glbMeshCollider = collisionMeshes.length > 0 ? glbScene : null;
colliders.length = 0;
rebuildPortalSurfaces();
// Dynamic shadow cameM
ra + fog from GLB bounding box
var glbBounds = new THREE.Box3().setFromObject(glbScene);
var glbSize = new THREE.Vector3();
glbBounds.getSize(glbSize);
var glbCenter = new THREE.Vector3();
glbBounds.getCenter(glbCenter);
chamDef._glbMinY = glbBounds.min.y;
var maxDim = Math.max(glbSize.x, glbSize.y, glbSize.z, 30);
sun.position.set(glbCenter.x + maxDim * 0.3, glbCenter.y + maxDim, glbCenter.z + maxDim * 0.3);
sun.target.position.copy(glbCenter);
sun.shadow.camera.left = -maxDim;
sun.shadow.camera.right = maxDim;
sun.shadow.camera.top = maxDim;
sun.shadow.camera.bottom = -maxDim;
sun.shadow.camera.far = maxDim * 3;
sun.shadow.camera.updateProjectionMatrix();
scene.fog = new THREE.FogExp2(0x0a0a12, 0.8 / maxDim);
camera.far = maxDim * 3;
camera.updateProjectionMatrix();
var hc = document.getElementById('hud-chamber');
var hl = document.getElementById('hud-line');
var hm = document.getElementById('hud-mission');
var hs = document.getElementById('hud-skip');
var hht = document.getElementById('hud-help-title');
var helpEl = document.getElementById('hud-help');
if (hc) hc.textContent = chamDef.title + ' (' + chamDef.num + ')';
if (hl) hl.textContent = chamDef.line || '';
if (hm) hm.textContent = chamDef.mission || 'Find the exit. Use portals, avoid hazards.';
if (hht) hht.textContent = chamDef.title;
l.style.display = 'block';
setTimeout(function() { helpEl.style.display = 'none'; }, 8000);
if (hs) hs.style.display = 'none';
}, undefined, function(err) {
console.error('GLB load error:', err);
glbActive = false;
// ========== GLB RAYCAST COLLISION ==========
var _rayOrigin = new THREE.Vector3();
var _rayDir = new THREE.Vector3();
var _rayResults = [];
var RAY_SKIN = 0.05;
function glbRayCheck(origin, direction, maxDist) {
if (!glbMeshCollider) M
_collRay.set(origin, direction);
_collRay.far = maxDist + RAY_SKIN;
_collRay.near = 0;
_rayResults.length = 0;
_collRay.intersectObject(glbMeshCollider, true, _rayResults);
for (var ri = 0; ri < _rayResults.length; ri++) {
var rh = _rayResults[ri];
if (rh.distance > maxDist + RAY_SKIN) return null;
// Skip open doors and invisible trigger volumes
if (rh.object && !rh.object.visible) continue;
if (rh.object && rh.object.userData && rh.object.userDataM
.isDoor && rh.object.userData.doorOpen) continue;
function glbResolveMove(pos, dx, dy, dz) {
var nx = dx, ny = dy, nz = dz;
function checkAxis(originFn, dir, moveDist) {
var absDist = Math.abs(moveDist);
if (absDist < 0.0001) return moveDist;
var sign = moveDist > 0 ? 1 : -1;
_rayDir.set(dir === 'x' ? sign : 0, dir === 'y' ? sign : 0, dir === 'z' ? sign : 0);
var checkDist = absDist + PLAYER_R;
var heights = dir === 'y' ? [0M
] : [0.25, 0.7, 1.2, 1.55];
var hitCount = 0;
var closestDist = checkDist;
for (var hi = 0; hi < heights.length; hi++) {
originFn(_rayOrigin, heights[hi]);
var hit = glbRayCheck(_rayOrigin, _rayDir, checkDist);
if (hit && hit.distance < checkDist) {
if (isInPortalHole(hit.point.x, hit.point.y, hit.point.z)) continue;
// Skip door meshes that are open
if (hit.object && hit.object.userData && hit.object.userData.isDoor && hit.object.userData.doorM
hitCount++;
if (hit.distance < closestDist) closestDist = hit.distance;
// Only block if majority of rays hit (allows passing through doorways)
if (hitCount >= 2) {
var allowed = Math.max(0, closestDist - PLAYER_R - RAY_SKIN);
return sign * Math.min(absDist, allowed);
return moveDist;
nx = checkAxis(function(o, h) { o.set(pos.x, pos.y + h, pos.z); }, 'x', dx);
nz = checkAxis(function(o, M
h) { o.set(pos.x + nx, pos.y + h, pos.z); }, 'z', dz);
// Step-up: if blocked horizontally but step height <= 0.5, auto-climb
var STEP_HEIGHT = 0.5;
if (player.onGround && (Math.abs(nx) < Math.abs(dx) * 0.3 || Math.abs(nz) < Math.abs(dz) * 0.3)) {
_rayOrigin.set(pos.x + dx, pos.y + STEP_HEIGHT + 0.05, pos.z + dz);
_rayDir.set(0, -1, 0);
var stepHit = glbRayCheck(_rayOrigin, _rayDir, STEP_HEIGHT + 0.1);
if (stepHit && stepHit.distance > 0.03 && stepHit.distance < STEP_HEIGHT + 0.M
var stepTopY = (pos.y + STEP_HEIGHT + 0.05) - stepHit.distance;
var stepDelta = stepTopY - pos.y;
if (stepDelta > 0.02 && stepDelta <= STEP_HEIGHT) {
var headCheck = glbRayCheck(
new THREE.Vector3(pos.x + dx, stepTopY + PLAYER_H * 0.5, pos.z + dz),
new THREE.Vector3(0, 1, 0),
PLAYER_H * 0.5 + 0.1
if (!headCheck || headCheck.distance > PLAYER_H * 0.5) {
nx = dx; nz = dz;
ny = stepDelta + 0.01;
// Y (gravity/jump/fling) -- multi-ray to prevent falling through floors
if (Math.abs(dy) > 0.0001) {
var dirY = dy > 0 ? 1 : -1;
_rayDir.set(0, dirY, 0);
var yCheckDist = Math.abs(dy) + 0.2;
var yClosest = yCheckDist;
var yHit = false;
// Cast from multiple horizontal positions (center + 4 offsets)
var yOffsets = [
[PLAYER_R * 0.5, 0], [-PLAYER_R * 0.5, 0],
[0, PLAYER_R * 0.5], [0, -PLAYER_R * 0.5]
for (var yi = 0; yi < yOffsets.length; yi++) {
var baseY = dirY > 0 ? pos.y + PLAYER_H : pos.y;
_rayOrigin.set(pos.x + nx + yOffsets[yi][0], baseY, pos.z + nz + yOffsets[yi][1]);
var hitYr = glbRayCheck(_rayOrigin, _rayDir, yCheckDist);
if (hitYr && hitYr.distance < yCheckDist) {
if (isInPortalHole(hitYr.point.x, hitYr.point.y, hitYr.point.z)) continue;
yHit = true;
if (hitYr.distance < yClosest) yClosest = hitYr.distance;
var allowedY = Math.max(0, yClosest - 0.04);
ny = dirY * Math.min(Math.abs(dy), allowedY);
if (dy < 0) {
player.onGround = true;
player.vel.y = 0;
if (dy > 0) {
player.vel.y = 0;
// Ground snap: when player was recently grounded and falling gently
if (!player.onGround && ny <= 0 && _wasOnGround && player.vel.y > -2) {
var snapDist = 0.35;
var snapClosest = snapDist;
var snapOffsets = [[0,0],[PLAYER_R*0.4,0],[-PLAYER_R*0.4,0],[0,PLAYER_R*0.4],[0,-PLAYER_R*0.4]];
_rayDir.set(0, -1, 0);
for (var sni = 0; sni < snapOffsets.length; sni++) {
_rayOrigin.set(pos.x + nx + snapOffsets[sni][0], pos.y + 0.1, pos.z + nz + snapOffsets[sni][1]);
var groundHit = glbRayCheck(_rayOrigin, _rayDir, snapDist);
if (groundHit && groundHit.distance < snapDist) {
if (!isInPortalHole(groundHit.point.x, groundHit.point.y, groundHit.pointM
snapFound = true;
if (groundHit.distance < snapClosest) snapClosest = groundHit.distance;
if (snapFound) {
player.onGround = true;
player.vel.y = 0;
ny = -(snapClosest - 0.1);
return { x: nx, y: ny, z: nz };
// ========== GLB MECHANICS UPDATE ==========
function updateGLBMechanics(dt) {
// Run for GLB maps OR if the tutorial has populated the mechanic arrays
if (!glbActive && glbLasers.lengM
th === 0 && glbTurrets.length === 0 &&
glbFizzlers.length === 0 && glbDeathZones.length === 0 &&
glbPrePortals.length === 0) return;
var _now = typeof performance !== 'undefined' ? performance.now() : Date.now();
var playerBox = getPlayerBox();
var pCenter = new THREE.Vector3(
player.pos.x, player.pos.y + PLAYER_H * 0.5, player.pos.z
// Auto-open doors when player is near
glbScene.traverse(function(node) {
if (!node.isMesh || !node.userM
Data.isDoor) return;
var doorBox = new THREE.Box3().setFromObject(node);
var doorCenter = new THREE.Vector3();
doorBox.getCenter(doorCenter);
var dist = pCenter.distanceTo(doorCenter);
var doorSize = new THREE.Vector3();
doorBox.getSize(doorSize);
var openRange = Math.max(doorSize.x, doorSize.z) + 2.5;
if (dist < openRange && !node.userData.doorOpen) {
node.userData.doorOpen = true;
node.visible = false;
node.userData._savM
edType = node.userData.type;
node.userData.type = null;
} else if (dist > openRange + 3 && node.userData.doorOpen) {
node.userData.doorOpen = false;
node.visible = true;
node.userData.type = node.userData._savedType || WALL_USER;
// Death zones (instant kill or damage)
for (var di = 0; di < glbDeathZones.length; di++) {
if (glbDeathZones[di].box.containsPoint(pCenter) || glbDeathZones[di].box.containsPoint(player.pos)) {
if (_now >= player.spawnProtectUntil) {
var dmgVal = glbDeathZones[di].damage || 100;
if (dmgVal >= 100) {
playerRespawn();
playerTakeDamage(dmgVal * dt);
for (var fzi = 0; fzi < glbFizzlers.length; fzi++) {
if (glbFizzlers[fzi].box.containsPoint(pCenter)) {
if (portals.blue.mesh.group.visible || portals.orange.mesh.group.visible) sfxFizzler();
portals.blue.mesh.group.visibM
portals.orange.mesh.group.visible = false;
portals.blue._prevLZ = undefined;
portals.orange._prevLZ = undefined;
portals.blue._preSample = null;
portals.orange._preSample = null;
if (glbFizzlers[fzi].mesh) {
glbFizzlers[fzi].mesh.traverse(function(child) {
if (child.isMesh && child.material) child.material.opacity = 0.2 + Math.sin(_now * 0.005) * 0.1;
// Lasers (damage over time)
for (var lai = 0; M
lai < glbLasers.length; lai++) {
var las = glbLasers[lai];
var closestDistL = distPointToSegment(pCenter, las.start, las.end);
if (closestDistL < PLAYER_R + 0.1) {
if (_now >= player.spawnProtectUntil) {
playerTakeDamage(50 * dt);
if (las.mesh && las.mesh.material) {
las.mesh.material.opacity = 0.5 + Math.sin(_now * 0.008 + lai) * 0.2;
for (var turi = 0; turi < glbTurrets.length; turi++) {
var tur = glbTurretM
if (tur.dead) continue;
if (tur.active === false) continue;
// Check if cube knocked over turret
if (cubeMesh.visible && !cubeState.held) {
var distToCube = tur.pos.distanceTo(cubeMesh.position);
if (distToCube < 0.8) {
tur.dead = true;
tur.mesh.rotation.z = Math.PI / 2;
// Look at player
var toPlayer = new THREE.Vector3().subVectors(pCenter, tur.pos);
var dist = toPlayer.length();
var yawToPlayer = Math.atan2(toPlayer.x, toPlayer.z);
tur.mesh.rotation.y = yawToPlayer;
// Check line of sight
var rayDir2 = toPlayer.clone().normalize();
_collRay.set(tur.pos.clone().add(new THREE.Vector3(0, 0.6, 0)), rayDir2);
_collRay.far = dist;
_rayResults.length = 0;
var canSee = true;
if (glbMeshCollider) {
_collRay.intersectObject(glbMeshCollider, true, _rayResults);
if (_rayResults.length > 0 && _raM
yResults[0].distance < dist - 0.5) canSee = false;
} else if (levelMeshes && levelMeshes.length > 0) {
// Box-based level: raycast against opaque, portal-OK level walls
for (var lmi = 0; lmi < levelMeshes.length; lmi++) {
var lm = levelMeshes[lmi];
if (!lm || !lm.isMesh || !lm.visible) continue;
// Skip thin marker meshes (planes/labels)
only block on box walls
if (!(lm.geometry && lm.geometry.type === 'BoxGeometry')) continue;
_rayResults.length = 0;
_collRay.intersectObject(lm, false, _rayResults);
if (_rayResults.length > 0 && _rayResults[0].distance < dist - 0.5) {
canSee = false; break;
if (canSee) {
tur.fireTimer -= dt;
if (tur.fireTimer <= 0) {
tur.fireTimer = 0.6 + Math.random() * 0.4;
sfxTurretFire();
if (_now >= player.spawnProtectUntil) {
playerTakeDamage(15);
tur.fireTimer = Math.min(tur.fireTimer + dt, 2);
// Pre-placed portals: proper portal-physics teleport
// Only the velocity component INTO the source portal becomes the OUT velocity.
// Walking on a floor portal => no inward velocity => no teleport.
for (var ppi = 0; ppi < glbPrePortals.length; ppi++) {
var pp = glbPrePortals[ppi];
if (!pp.a || !pp.b) continue;
var dA = pCenter.distanceTo(pp.a.pos);
nter.distanceTo(pp.b.pos);
var ppFrom = null, ppTo = null;
// Per-portal detection radius (default 1.2m). The tutorial bumps this
// up so the slingshot reliably catches players falling off the platform.
var detR = pp._detectR || 1.2;
if (dA < detR && player.teleportCooldown <= 0) { ppFrom = pp.a; ppTo = pp.b; }
else if (dB < detR && player.teleportCooldown <= 0) { ppFrom = pp.b; ppTo = pp.a; }
if (ppFrom && ppTo) {
var ppFromNormal = ppFrom.normal ? ppFrom.normal.cM
lone() : new THREE.Vector3(0, 0, 1).applyQuaternion(ppFrom.group.quaternion);
var ppToNormal = ppTo.normal ? ppTo.normal.clone() : new THREE.Vector3(0, 0, 1).applyQuaternion(ppTo.group.quaternion);
// Velocity component INTO the source portal (positive = approaching/entering)
// For a floor portal (normal up), inwardSpeed = -player.vel.y
// For a wall portal facing +X, inwardSpeed = -player.vel.x
var inwardSpeed = -player.vel.dot(ppFromNormal);
// Floor/horizontal pM
ortal: require minimum fall speed to trigger
var isFloorPortal = ppFromNormal.y > 0.7;
var minTriggerSpeed = isFloorPortal ? 2.5 : 0.5;
// Floor portal blocked entirely while player is grounded
if (isFloorPortal && player.onGround) {
if (!pp._hintShown) {
_showPortalDenied('Jump in from above!');
pp._hintShown = true;
setTimeout(function(){ pp._hintShown = false; }, 1500);
if (inwardSpeeM
d < minTriggerSpeed) {
if (isFloorPortal && !pp._hintShown) {
_showPortalDenied('Need to FALL into floor portal');
pp._hintShown = true;
setTimeout(function(){ pp._hintShown = false; }, 1500);
// Compute exit position: offset along destination normal scaled by speed
var exitOff = Math.max(1.0, inwardSpeed * 0.15);
player.pos.copy(ppTo.pos).addScaledVector(ppToNormal, exitOff);
// Transform velocM
ity: tangential component preserved (rotated through portal pair),
// normal component becomes outward along destination normal.
var vTangent = player.vel.clone().addScaledVector(ppFromNormal, inwardSpeed);
// Rotate tangential vector from source frame to destination frame
// Build rotation that takes ppFromNormal to ppToNormal (and inverts to handle facing)
var srcFwd = ppFromNormal.clone().negate(); // direction "through" portal
var dstFwd = ppToNormal.clone(); M
// out of destination
var rotQ = new THREE.Quaternion().setFromUnitVectors(srcFwd, dstFwd);
vTangent.applyQuaternion(rotQ);
player.vel.copy(vTangent).addScaledVector(ppToNormal, inwardSpeed);
player.teleportCooldown = 0.45;
player.spawnProtectUntil = _now + 1800;
sfxTeleport();
// GLB button/door pairs
if (chamberDef && chamberDef._glbButtonDoorPairs) {
for (var bdpi = 0; bdpi < chamberDef._glbButtonDoorPairs.lengthM
var bdPair = chamberDef._glbButtonDoorPairs[bdpi];
if (bdPair.activated) continue;
var bPos = bdPair.btnPos;
var pBtnDist = Math.hypot(player.pos.x - bPos.x, player.pos.z - bPos.z);
var pBtnDistY = Math.abs(player.pos.y - bPos.y);
var btnTriggered = pBtnDist < 0.8 && pBtnDistY < 2.0;
if (!btnTriggered && !cubeState.held && cubeMesh.visible) {
var cBtnDist = Math.hypot(cubeMesh.position.x - bPos.x, cubeMesh.position.z - bPos.z);
var cBtnDistY = Math.abs(cubeMesh.position.y - bPos.y);
if (cBtnDist < 0.7 && cBtnDistY < 1.5) btnTriggered = true;
if (btnTriggered) {
bdPair.activated = true;
sfxButtonPress();
sfxDoorOpen();
// Switch button visual to "activated" state (green)
if (bdPair.visual) {
var bv = bdPair.visual;
bv._activated = true;
if (bv._pad && bv._pad.material) {
bv._pad.material.color.setHex(0x33ff66);
bv._pad.material.emissive.setHex(0x00ff44);
if (bv._dot && bv._dot.material) bv._dot.material.color.setHex(0xaaffaa);
if (bv._halo && bv._halo.material) bv._halo.material.color.setHex(0x33ff66);
if (bv._beam && bv._beam.material) bv._beam.material.color.setHex(0x33ff66);
if (bv._light) bv._light.color.setHex(0x55ff77);
for (var dmni = 0; dmni < bdPair.doorMeshNodes.length; dmni++) {
var doorN = bdPair.doorMesM
doorN.visible = false;
doorN.userData.doorOpen = true;
doorN.userData.type = null;
function distPointToSegment(p, a, b) {
var ab = new THREE.Vector3().subVectors(b, a);
var ap = new THREE.Vector3().subVectors(p, a);
var abDot = ab.dot(ab);
if (abDot < 1e-10) return p.distanceTo(a);
var t = Math.max(0, Math.min(1, ap.dot(ab) / abDot));
var closest = a.clone().addScaledVector(ab, t);
// ========== SPIELER (Kapsel-AABB) ==========
var PLAYER_MAX_HP = 100;
pos: new THREE.Vector3(0, 0, 6),
vel: new THREE.Vector3(),
onGround: false,
teleportCooldown: 0,
/** Kein Void-Respawn kurz nach Laden/Teleport (verhindert Glitch-Spawning). */
spawnProtectUntil: 0,
/** Vorherige Frame: in Abschlusszone (Kantenerkennung, kein buildChamber pro Frame). */
_prevInExitZone: false,
hp: PLAYER_MAX_HP,
var _lastDmgSoundTime = 0;
function playerTakeDamage(amount) {
player.hp -= amount;
player.hpRegenDelay = 3.0;
updateHPDisplay();
showDamageFlash();
var now3 = typeof performance !== 'undefined' ? performance.now() : Date.now();
if (now3 - _lastDmgSoundTime > 300) {
_lastDmgSoundTime = now3;
if (player.hp <= 20 && player.hp > 0) sfxLowHP();
if (player.hp <= 0) {
player.hp = PLAYER_MAX_HP;
player.pos.copy(chM
amberDef.spawn || new THREE.Vector3(0, 1, 0));
player.vel.set(0, 0, 0);
player.spawnProtectUntil = now3 + 3000;
updateHPDisplay();
function playerRespawn() {
player.hp = PLAYER_MAX_HP;
var _now2 = typeof performance !== 'undefined' ? performance.now() : Date.now();
player.pos.copy(chamberDef.spawn || new THREE.Vector3(0, 1, 0));
player.vel.set(0, 0, 0);
player.spawnProtectUntil = _now2 + 3000;
updateHPDisplay();
function updateHPDisplay()M
var hpEl = document.getElementById('hud-hp');
var hpFill = document.getElementById('hud-hp-fill');
var hpText = document.getElementById('hud-hp-text');
if (!hpEl) return;
hpEl.style.display = 'inline';
var pct = Math.max(0, Math.min(100, (player.hp / PLAYER_MAX_HP) * 100));
if (hpFill) hpFill.style.width = pct + '%';
if (hpText) hpText.textContent = Math.ceil(player.hp);
var color = pct > 60 ? '#44ff66' : pct > 30 ? '#ffaa22' : '#ff4444';
if (hpFill) hpFill.style.backgrounM
if (hpText) hpText.style.color = color;
var _dmgFlashEl = null;
var _sensHudTimer = 0;
function _showSensHud() {
var pct = Math.round(MOUSE_SENS / 0.009 * 100);
var el = document.getElementById('hud-line');
el.textContent = 'Mouse Sensitivity: ' + pct + '% (- / + to adjust)';
clearTimeout(_sensHudTimer);
_sensHudTimer = setTimeout(function() {
if (chamberDef && chamberDef.line) el.textContent = chamberDef.line;
ar _portalDeniedTimer = 0;
function _showPortalDenied(reason) {
_playTone(200, 0.08, 'square', 0.05, 0.002, 0.04);
_playTone(150, 0.1, 'square', 0.04, 0.01, 0.05);
var el = document.getElementById('hud-denied');
el = document.createElement('div');
el.id = 'hud-denied';
el.style.cssText = 'position:fixed;top:55%;left:50%;transform:translate(-50%,-50%);z-index:40;font:bold 13px monospace;color:#ff4444;text-shadow:0 0 8px rgba(255,0,0,0.5);pointer-events:none;opacity:0;trM
ansition:opacity 0.15s';
document.body.appendChild(el);
el.textContent = '
' + (reason || 'Cannot place portal');
el.style.opacity = '1';
clearTimeout(_portalDeniedTimer);
_portalDeniedTimer = setTimeout(function() { el.style.opacity = '0'; }, 1200);
// Crosshair flash
var ch = document.getElementById('crosshair');
ch.style.filter = 'brightness(0.3) sepia(1) hue-rotate(-30deg) saturate(5)';
setTimeout(function() { ch.style.filter = ''; }, 200);
function showDamageFlash() {
if (!_dmgFlashEl) _dmgFlashEl = document.getElementById('damage-flash');
if (!_dmgFlashEl) return;
_dmgFlashEl.style.opacity = '1';
setTimeout(function() { _dmgFlashEl.style.opacity = '0'; }, 120);
// ========== DUST PARTICLES (Atmospheric Floating Dust) ==========
var dustParticles = null;
function createDustParticles() {
var count = 300;
var geo = new THREE.BufferGeometry();
var positions = new Float32Array(count * 3);
var velocities =M
new Float32Array(count * 3);
for (var i = 0; i < count; i++) {
positions[i * 3] = (Math.random() - 0.5) * 40;
positions[i * 3 + 1] = Math.random() * 15;
positions[i * 3 + 2] = (Math.random() - 0.5) * 40;
velocities[i * 3] = (Math.random() - 0.5) * 0.02;
velocities[i * 3 + 1] = (Math.random() - 0.5) * 0.005;
velocities[i * 3 + 2] = (Math.random() - 0.5) * 0.02;
geo.setAttribute('position', new THREE.BufferAttribute(positions, 3));
geo.userData._velocities = veloM
geo.userData._count = count;
var mat = new THREE.PointsMaterial({
color: 0xaabbcc,
transparent: true,
opacity: 0.35,
depthWrite: false,
blending: THREE.AdditiveBlending,
sizeAttenuation: true
dustParticles = new THREE.Points(geo, mat);
dustParticles.renderOrder = 5;
scene.add(dustParticles);
function updateDustParticles(dt) {
if (!dustParticles) return;
var geo = dustParticles.geometry;
var pos = geo.attribuM
var vel = geo.userData._velocities;
var count = geo.userData._count;
for (var i = 0; i < count; i++) {
pos[i * 3] += vel[i * 3];
pos[i * 3 + 1] += vel[i * 3 + 1];
pos[i * 3 + 2] += vel[i * 3 + 2];
var dx = pos[i * 3] - player.pos.x;
var dz = pos[i * 3 + 2] - player.pos.z;
if (dx * dx + dz * dz > 400) {
pos[i * 3] = player.pos.x + (Math.random() - 0.5) * 30;
pos[i * 3 + 1] = player.pos.y + Math.random() * 10;
pos[i * 3 + 2] =M
player.pos.z + (Math.random() - 0.5) * 30;
geo.attributes.position.needsUpdate = true;
dustParticles.position.set(0, 0, 0);
createDustParticles();
var _fwdTmp = new THREE.Vector3();
function tryCubeInteract() {
if (!cubeMesh.visible) return;
var nowMs = (typeof performance !== 'undefined' ? performance.now() : Date.now());
// Tutorial: once the cube has been locked onto the button, it stays there
if (cubeState._lockedToButton) return;
if (cubeState.held) {
// Drop cube. Default: small step in front of the player so it doesn't
// clip into us. SNAP-TO-BUTTON: if a button-door pair exists and the
// player is standing on/near it, drop the cube directly ON the button.
cubeState.held = false;
cubeState._dropCooldownUntil = nowMs + 350; // prevent instant re-grab
try { sfxButtonPress(); } catch (e) {} // audible "thud" on release
var snappedToButton = false;
// Box-level button (chamberDef.buttonDoor)
if (chamberDef && chaM
mberDef.buttonDoor) {
var bx = chamberDef.buttonDoor.btn[0];
var bz = chamberDef.buttonDoor.btn[1];
var dPB = Math.hypot(player.pos.x - bx, player.pos.z - bz);
if (dPB < 1.4) {
cubeMesh.position.set(bx, CUBE_HALF + 0.18, bz);
cubeState.vel.set(0, 0, 0);
snappedToButton = true;
// GLB-level buttons (parsed prop_button / button-tagged trigger_multiple)
if (!snappedToButton && chamberDef && chamberDef._glbButtonDoorPairs) {
var pairs = chamberDef._glbButtonDoorPairs;
for (var bi = 0; bi < pairs.length; bi++) {
var pair = pairs[bi];
if (!pair || !pair.btnPos) continue;
var dPB2 = Math.hypot(player.pos.x - pair.btnPos.x, player.pos.z - pair.btnPos.z);
var dPB2Y = Math.abs(player.pos.y - pair.btnPos.y);
if (dPB2 < 1.4 && dPB2Y < 2.0) {
cubeMesh.position.set(pair.btnPos.x, pair.btnPos.y + CUBE_HALF + 0.18, pair.btnPos.z);
cubeState.vel.set(0, 0, 0);
snappedToButton = true;
if (!snappedToButton) {
_fwdTmp.set(0, 0, -1).applyQuaternion(new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), player.yaw));
cubeMesh.position.copy(player.pos).addScaledVector(_fwdTmp, 1.1);
cubeMesh.position.y = Math.max(CUBE_HALF, player.pos.y + 0.2);
cubeState.vel.set(0, -0.1, 0);
block while drop cooldown is active
ate._dropCooldownUntil && nowMs < cubeState._dropCooldownUntil) return;
var chest = player.pos.clone();
chest.y += EYE_Y * 0.4;
if (chest.distanceTo(cubeMesh.position) <= INTERACT_RANGE) cubeState.held = true;
function getPlayerBox() {
var min = new THREE.Vector3(
player.pos.x - PLAYER_R,
player.pos.z - PLAYER_R
var max = new THREE.Vector3(
player.pos.x + PLAYER_R,
player.pos.y + PLAYER_H,
player.pos.z + PLAYER_R
ew THREE.Box3(min, max);
function aabbOverlapStrict(a, b) {
return a.max.x > b.min.x && a.min.x < b.max.x &&
a.max.y > b.min.y && a.min.y < b.max.y &&
a.max.z > b.min.z && a.min.z < b.max.z;
var _ppInvB = new THREE.Matrix4();
var _ppInvO = new THREE.Matrix4();
var _ppValid = false;
var _ppLocal = new THREE.Vector3();
function updatePortalPassCache() {
_ppValid = false;
if (!portals || !portals.blue || !portals.orange) return;
if (!portals.blue.mesh.group.M
visible || !portals.orange.mesh.group.visible) return;
portals.blue.mesh.group.updateMatrixWorld(true);
portals.orange.mesh.group.updateMatrixWorld(true);
_ppInvB.copy(portals.blue.mesh.group.matrixWorld).invert();
_ppInvO.copy(portals.orange.mesh.group.matrixWorld).invert();
_ppValid = true;
function isInPortalHole(wx, wy, wz) {
if (!_ppValid) return false;
var invs = [_ppInvB, _ppInvO];
for (var k = 0; k < 2; k++) {
_ppLocal.set(wx, wy, wz).applyMatrix4(invs[k]);
var r2 = _ppLocal.x * _ppLocal.x + _ppLocal.y * _ppLocal.y;
if (r2 < PORTAL_CIRCLE_R * PORTAL_CIRCLE_R && Math.abs(_ppLocal.z) < PLAYER_R * 2) {
return true;
function resolveAxis(box, axis, vel) {
var test = box.clone();
test.min[axis] += vel;
test.max[axis] += vel;
for (var i = 0; i < colliders.length; i++) {
if (axis !== 'y' && (colliders[i] === floorCollider || colliders[i] === ceilingCollider)) continue;
if (aabbOverlapStrict(testM
var cx = (test.min.x + test.max.x) * 0.5;
var cz = (test.min.z + test.max.z) * 0.5;
if (isInPortalHole(cx, test.min.y, cz) ||
isInPortalHole(cx, test.max.y, cz)) continue;
function tryMove(dx, dy, dz) {
if (glbActive && glbMeshCollider) {
// Sub-stepping: split large moves into smaller steps to prevent tunneling
var totalDist = Math.sqrt(dx * dx + dy * dy + dz * dz);
var MAX_STEP = 0.4M
; // max distance per sub-step
var steps = Math.max(1, Math.ceil(totalDist / MAX_STEP));
var sdx = dx / steps, sdy = dy / steps, sdz = dz / steps;
for (var si = 0; si < steps; si++) {
var result = glbResolveMove(player.pos, sdx, sdy, sdz);
player.pos.x += result.x;
player.pos.y += result.y;
player.pos.z += result.z;
// If vertical movement was blocked, stop further sub-steps for Y
if (sdy < 0 && player.onGround) {
ining steps only handle XZ
if (sdy > 0 && Math.abs(result.y) < Math.abs(sdy) * 0.1) {
var box = getPlayerBox();
var nx = resolveAxis(box, 'x', dx);
player.pos.x += nx;
box = getPlayerBox();
var nz = resolveAxis(box, 'z', dz);
player.pos.z += nz;
box = getPlayerBox();
var ny = resolveAxis(box, 'y', dy);
player.pos.y += ny;
if (ny !== dy && dy < 0) player.onGround = true;
// ========== PORTALE ===M
* Teleport-Abbildung: to
-Y-Rotation (det=+1) statt Z-Mirror (det=-1), damit vorw
function makePortalLinkMatrix(fromGroup, toGroup) {
var invFrom = new THREE.Matrix4().copy(fromGroup.matrixWorld).invert();
return new THREE.Matrix4().copy(toGroup.matrixWorld).multiply(PORTAL_TELEPORT_ROT).multiply(invFrom);
* Portal: lokales +Z zeigt aus der Wand ins Zimmer (sichtbare Fl
* Spieler steht in M
+Z vor der Ebene z=0; Durchtritt bei z <= 0.
function PortalSystem() {
this.blue = null;
this.orange = null;
this.raycaster = new THREE.Raycaster();
this.tempV = new THREE.Vector3();
this.tempQ = new THREE.Quaternion();
PortalSystem.prototype._makePortalMesh = function (colorHex) {
var g = new THREE.Group();
var R = PORTAL_CIRCLE_R;
var inner = new THREE.Mesh(
new THREE.CircleGeometry(R, 56),
new THREE.MeshBasicMaterial({
color: 0x1e1e28,
side: THREE.DoubleSide,
depthWrite: false,
depthTest: true,
toneMapped: false
inner.renderOrder = 1;
inner.position.z = 0.002;
var tube = 0.055;
var ring = new THREE.Mesh(
new THREE.TorusGeometry(R + tube, tube, 16, 64),
new THREE.MeshBasicMaterial({
color: colorHex,
transparent: true,
opacity: 0.85,
depthWrite: false
ring.position.z = 0.006;
var glowRing = new THREE.Mesh(
new THREE.TorusGeometry(R + tube * 0.5, tube * 3.2, 12, 64),
new THREE.MeshBasicMaterial({
color: colorHex,
transparent: true,
opacity: 0.18,
depthWrite: false,
blending: THREE.AdditiveBlending,
side: THREE.DoubleSide
glowRing.position.z = 0.004;
var glowDisc = new THREE.Mesh(
new THREE.CircleGeometry(R * 1.15, 48),
new THREE.MeshBasicMaterial({
color: colorHex,
transparent: true,
opacity: 0.06,
depthWrite: false,
blending: THREE.AdditiveBlending,
side: THREE.DoubleSide
glowDisc.position.z = -0.002;
var sparkCount = 28;
var sparkGeo = new THREE.BufferGeometry();
var sparkPos = new Float32Array(sparkCount * 3);
var sparkAngles = new Float32Array(sparkCount);
var sparkRadii = new Float32Array(sparkCount);
var sparkSpeeds = new Float32Array(sparkCount);
for (var si = 0; si < sparkCount; si++) {
var a = (si / sparkCount) * Math.PI * M
sparkAngles[si] = a;
sparkRadii[si] = R * (0.85 + Math.random() * 0.35);
sparkSpeeds[si] = 0.6 + Math.random() * 1.2;
sparkPos[si * 3] = Math.cos(a) * sparkRadii[si];
sparkPos[si * 3 + 1] = Math.sin(a) * sparkRadii[si];
sparkPos[si * 3 + 2] = 0.01;
sparkGeo.setAttribute('position', new THREE.BufferAttribute(sparkPos, 3));
var sparks = new THREE.Points(
new THREE.PointsMaterial({
color: colorHex,
opacity: 0.65,
depthWrite: false,
blending: THREE.AdditiveBlending,
sizeAttenuation: true
sparks.position.z = 0.008;
sparks.userData._sparkAngles = sparkAngles;
sparks.userData._sparkRadii = sparkRadii;
sparks.userData._sparkSpeeds = sparkSpeeds;
sparks.userData._sparkCount = sparkCount;
var light = new THREE.PointLight(colorHex, 2.5, 10, 2);
light.position.z = 0.5;
// Outer atmosphere glow
var outerGlow = new THREE.MeshM
new THREE.CircleGeometry(R * 1.6, 32),
new THREE.MeshBasicMaterial({
color: colorHex,
transparent: true,
opacity: 0.03,
depthWrite: false,
blending: THREE.AdditiveBlending,
side: THREE.DoubleSide
outerGlow.position.z = -0.01;
g.add(inner, ring, glowRing, glowDisc, outerGlow, sparks, light);
g.visible = false;
return { group: g, inner: inner, sparks: sparks, glowRing: glowRing, light: light, outerGlow: ouM
PortalSystem.prototype.init = function () {
this.blue = { mesh: this._makePortalMesh(BLUE), other: null };
this.orange = { mesh: this._makePortalMesh(ORANGE), other: null };
this.blue.other = this.orange;
this.orange.other = this.blue;
this._portalCam = new THREE.PerspectiveCamera(72, 1, 0.07, 200);
berschreibt updateMatrix() die Matrix aus Position/Quaternion
bricht gespiegelte Portal-Transforms */
this._portalCam.matrixAutoUpdate = false;
this._rtO = null;
this._rtSize = 0;
* Virtuelle Portal-Kamera: volle 4
bernehmen (inkl. Spiegelung / neg. Determinante).
* decompose+Quaternion ist hier falsch
in den Kreisen zeigen.
PortalSystem.prototype._applyWorldMatrixToCamera = function (m, cam) {
cam.matrix.copy(m);
cam.updateMatrixWorld(true);
* Oblique Near-Plane Clipping (Lengyel 2004): ersetzt die Near-Plane der
* Projektionsmatrix durch eine beliebige M
Ebene im Kameraraum. Damit wird die
* Wand zwischen virtueller Kamera und Portal-
ffnung weggeschnitten und der
* Blick in den Raum wird frei.
* @param {THREE.PerspectiveCamera} cam
* @param {THREE.Plane} camSpacePlane Clip-Ebene im Kameraraum
PortalSystem.prototype._setObliqueNearPlane = function (cam, camSpacePlane) {
var p = cam.projectionMatrix.elements;
var cpx = camSpacePlane.normal.x;
var cpy = camSpacePlane.normal.y;
var cpz = camSpacePlane.normal.z;
var cpw = camSpM
var qx = (Math.sign(cpx) + p[8]) / p[0];
var qy = (Math.sign(cpy) + p[9]) / p[5];
var qw = (1.0 + p[10]) / p[14];
var dot = cpx * qx + cpy * qy + cpz * qz + cpw * qw;
if (Math.abs(dot) < 1e-6) return;
var s = 2.0 / dot;
p[10] = cpz * s + 1.0;
p[14] = cpw * s;
PortalSystem.prototype._ensureRenderTargets = function () {
var sz = Math.min(
Math.max(512, Math.floor(Math.max(windoM
w.innerWidth, window.innerHeight) * 0.72))
if (this._rtB && this._rtO && this._rtSize === sz) return;
if (this._rtB) this._rtB.dispose();
if (this._rtO) this._rtO.dispose();
minFilter: THREE.LinearFilter,
magFilter: THREE.LinearFilter,
depthBuffer: true,
stencilBuffer: false
this._rtB = new THREE.WebGLRenderTarget(sz, sz, params);
this._rtO = new THREE.WebGLRenderTarget(sz, sz, params);
if (this._rtB.texture) this._rtB.texture.flipY = M
PORTAL_RT_TEXTURE_FLIP_Y;
if (this._rtO.texture) this._rtO.texture.flipY = PORTAL_RT_TEXTURE_FLIP_Y;
if (this._rtB.texture && THREE.SRGBColorSpace) this._rtB.texture.colorSpace = THREE.SRGBColorSpace;
if (this._rtO.texture && THREE.SRGBColorSpace) this._rtO.texture.colorSpace = THREE.SRGBColorSpace;
this._rtSize = sz;
* Rendert die Szene aus der
Kamera in RTs; Kreisfl
che zeigt das andere Portal.
* hideWeapon: Pistole nicht in der Vorschau (sonst riesig im Loch).
PortalSystem.prototype.updatePortalViews = function (renderer, scene, mainCam, hideWeapon) {
if (!this._portalCam) return;
mainCam.updateMatrixWorld(true);
var innerB = this.blue.mesh.inner;
var innerO = this.orange.mesh.inner;
var bVis = this.blue.mesh.group.visible;
var oVis = this.orange.mesh.group.visible;
if (!bVis || !oVis) {
innerB.material.map = null;
innerO.material.map = null;
innerB.material.color.setHex(0x1e1e28);
innerO.material.color.setHex(M
this._ensureRenderTargets();
var grpB = this.blue.mesh.group;
var grpO = this.orange.mesh.group;
grpB.updateMatrixWorld(true);
grpO.updateMatrixWorld(true);
var invB = new THREE.Matrix4().copy(grpB.matrixWorld).invert();
var invO = new THREE.Matrix4().copy(grpO.matrixWorld).invert();
this._portalCam.fov = mainCam.fov;
this._portalCam.aspect = mainCam.aspect;
this._portalCam.near = mainCam.near;
this._portalCam.far = mainCam.far;
portalCam.updateProjectionMatrix();
var _baseProj = this._portalCam.projectionMatrix.clone();
var mTexB = new THREE.Matrix4().copy(mainCam.matrixWorld);
mTexB.premultiply(invB);
mTexB.premultiply(PORTAL_LOCAL_MIRROR);
mTexB.premultiply(grpO.matrixWorld);
var eb = mTexB.elements;
_dbgVirtBFwd.set(-eb[8], -eb[9], -eb[10]);
if (_dbgVirtBFwd.lengthSq() > 1e-12) _dbgVirtBFwd.normalize();
var mTexO = new THREE.Matrix4().copy(mainCam.matrixWorld);
mTexO.premultiply(invO);
O.premultiply(PORTAL_LOCAL_MIRROR);
mTexO.premultiply(grpB.matrixWorld);
var eo = mTexO.elements;
_dbgVirtOFwd.set(-eo[8], -eo[9], -eo[10]);
if (_dbgVirtOFwd.lengthSq() > 1e-12) _dbgVirtOFwd.normalize();
var wb = innerB.visible;
var wo = innerO.visible;
innerB.visible = false;
innerO.visible = false;
var hw = hideWeapon && hideWeapon.visible;
if (hideWeapon) hideWeapon.visible = false;
renderer.setClearColor(0x12121a, 1);
* FACE-CULLING FIX: PORTAL_LOCAL_MM
IRROR erzeugt eine reflektierte Kamera
* (det = -1). Three.js kompensiert Winding nur f
r Objekt-Transforms, nicht
r die Kamera. Fix: frontFace invertieren w
hrend Portal-RT-Rendering.
var _flipRestore = null;
if (renderer.state && typeof renderer.state.setFlipSided === 'function') {
var _origSetFlip = renderer.state.setFlipSided;
var _stateCtx = renderer.state;
renderer.state.setFlipSided = function (f) { _origSetFlip.call(_stateCtx, !f); };
_flipRestore = fM
renderer.state.setFlipSided = _origSetFlip;
_origSetFlip.call(_stateCtx, false);
var _gl = renderer.getContext();
var _realFF = _gl.frontFace;
_gl.frontFace = function (m) { _realFF.call(_gl, m === _gl.CW ? _gl.CCW : _gl.CW); };
_flipRestore = function () {
_gl.frontFace = _realFF;
_realFF.call(_gl, _gl.CCW);
* Helper: Clip-Ebene an der Oberfl
che des Exit-Portals berechnen und als
Near-Plane setzen. Damit wird die Wand zwischen der virtuellen
* Kamera und dem Portal-Loch weggeschnitten
Blick in den Raum frei.
var _clipPlane = new THREE.Plane();
var _clipNorm = new THREE.Vector3();
var _clipPos = new THREE.Vector3();
var _applyClip = function (portalCam, exitGroupMatrix) {
var em = exitGroupMatrix.elements;
_clipNorm.set(em[8], em[9], em[10]).normalize();
_clipPos.set(em[12], em[13], em[14]);
_clipPlane.setFromNormalAndCoplanarPoint(_cM
portalCam.matrixWorldInverse.copy(portalCam.matrixWorld).invert();
_clipPlane.applyMatrix4(portalCam.matrixWorldInverse);
if (_clipPlane.constant >= 0) return;
this._setObliqueNearPlane(portalCam, _clipPlane);
this._applyWorldMatrixToCamera(mTexB, this._portalCam);
this._portalCam.projectionMatrix.copy(_baseProj);
_applyClip(this._portalCam, grpO.matrixWorld);
var _oVis = grpO.visible;
grpO.visible = false;
renderer.setRenderTargM
renderer.setViewport(0, 0, this._rtB.width, this._rtB.height);
renderer.clear(true, true, true);
renderer.render(scene, this._portalCam);
grpO.visible = _oVis;
this._applyWorldMatrixToCamera(mTexO, this._portalCam);
this._portalCam.projectionMatrix.copy(_baseProj);
_applyClip(this._portalCam, grpB.matrixWorld);
var _bVis = grpB.visible;
grpB.visible = false;
renderer.setRenderTarget(this._rtO);
renderer.setViewport(0, 0, this._rtO.width, this._rtO.height);M
renderer.clear(true, true, true);
renderer.render(scene, this._portalCam);
grpB.visible = _bVis;
this._portalCam.projectionMatrix.copy(_baseProj);
innerB.visible = wb;
innerO.visible = wo;
if (hideWeapon) hideWeapon.visible = hw;
renderer.setRenderTarget(null);
renderer.setViewport(0, 0, window.innerWidth, window.innerHeight);
if (scene.background && scene.background.isColor) renderer.setClearColor(scene.background, 1);
else renderer.setClearColor(M
* HORIZONTAL-FLIP FIX: Der Z-Mirror flippt rechts/links bei Portalen deren
* Normalen sich gegen
berstehen (dot < 0), aber NICHT bei gleichgerichteten
* Portalen (dot > 0). inner.scale.x kompensiert das dynamisch pro Frame.
* Vergleich: virtuelle Kamera col0
Eintrittsportal col0.
var bFlipDot = eb[0] * grpB.matrixWorld.elements[0] +
eb[1] * grpB.matrixWorld.elements[1] +
eb[2] * grpB.matrixWorld.elements[2];
ipDot = eo[0] * grpO.matrixWorld.elements[0] +
eo[1] * grpO.matrixWorld.elements[1] +
eo[2] * grpO.matrixWorld.elements[2];
innerB.scale.x = bFlipDot < 0 ? -1 : 1;
innerO.scale.x = oFlipDot < 0 ? -1 : 1;
if (PORTAL_SWAP_RT_MAP) {
innerB.material.map = this._rtO.texture;
innerO.material.map = this._rtB.texture;
innerB.material.map = this._rtB.texture;
innerO.material.map = this._rtO.texture;
innerB.material.color.setHexM
innerO.material.color.setHex(0xffffff);
innerB.material.needsUpdate = true;
innerO.material.needsUpdate = true;
/** Setzt Basis: +Z = Fl
chennormale (nach au
en aus Wand/Boden/Decke ins Zimmer). */
PortalSystem.prototype.placePortal = function (portal, hit, cam) {
var n = hit.face.normal.clone().transformDirection(hit.object.matrixWorld).normalize();
var towardCam = new THREE.Vector3().subVectors(cam.position, hit.point);
if (towardCam.lengthSq() > M
towardCam.normalize();
if (n.dot(towardCam) < 0) n.negate();
var pos = hit.point.clone().addScaledVector(n, PORTAL_EPS);
portal.mesh.group.position.copy(pos);
var up = Math.abs(n.y) < 0.95 ? new THREE.Vector3(0, 1, 0) : new THREE.Vector3(0, 0, 1);
var rx = new THREE.Vector3().crossVectors(up, n);
if (rx.lengthSq() < 1e-8) {
up.set(1, 0, 0);
rx.crossVectors(up, n);
var ry = new THREE.Vector3().crossVectors(n, rx).normM
var m = new THREE.Matrix4().makeBasis(rx, ry, n);
portal.mesh.group.quaternion.setFromRotationMatrix(m);
portal.mesh.group.visible = true;
PortalSystem.prototype.isValidPortalSurface = function (hit, cam) {
var n = hit.face.normal.clone().transformDirection(hit.object.matrixWorld).normalize();
var view = new THREE.Vector3();
cam.getWorldDirection(view);
if (Math.abs(view.dot(n)) < 0.1) return false;
if (hit.distance > 55) return false;
// Block portals on doors
if (hit.object && hit.object.userData && hit.object.userData.isDoor) return false;
// GLB np-zones check: test slightly INTO the surface (away from hit normal)
// so walls flush with an NP-volume edge are still considered placeable.
if (glbActive && glbNpZones.length > 0) {
var npTest = hit.point.clone().addScaledVector(n, -0.05);
for (var npi = 0; npi < glbNpZones.length; npi++) {
if (glbNpZones[npi].containsPoint(npTest)) return false;
// GLB: check surface aroM
und hit point (reject portals on edges/holes)
if (glbActive && glbMeshCollider) {
var up2 = new THREE.Vector3(0, 1, 0);
var right2 = new THREE.Vector3().crossVectors(n, up2);
if (right2.length() < 0.01) right2.set(1, 0, 0);
right2.normalize();
var localUp2 = new THREE.Vector3().crossVectors(right2, n).normalize();
var testR2 = PORTAL_CIRCLE_R * 0.6;
var offsets2 = [
right2.clone().multiplyScalar(testR2),
right2.clone().multiplyScalar(-testR2),
calUp2.clone().multiplyScalar(testR2),
localUp2.clone().multiplyScalar(-testR2)
var _surfRay2 = new THREE.Raycaster();
var surfHits = 0;
for (var oi2 = 0; oi2 < offsets2.length; oi2++) {
var testOrig2 = hit.point.clone().add(offsets2[oi2]).addScaledVector(n, 0.4);
var testDir2 = n.clone().negate();
_surfRay2.set(testOrig2, testDir2);
_surfRay2.far = 1.0;
var testH2 = _surfRay2.intersectObject(glbMeshCollider, true);
for (var th = 0; M
th < testH2.length; th++) {
if (testH2[th].object && !testH2[th].object.visible) continue;
surfHits++; break;
if (surfHits < 3) return false;
PortalSystem.prototype.tryPlaceFromScreen = function (portal, cam) {
this.raycaster.setFromCamera({ x: 0, y: 0 }, cam);
var hits = this.raycaster.intersectObjects(portalSurfaces, false);
if (!hits.length) {
_showPortalDenied('Too far / No surface');
if (!this.isValidPortalSurface(hit, cam)) {
_showPortalDenied('No-Portal Zone');
this.placePortal(portal, hit, cam);
sfxPortalPlace();
* Durchtritt von +Z zur Ebene z=0 (Vorderseite).
chlicher Durchtritt; trackR = nur Z-Historie (verhindert Reset beim seitlichen Ann
tzlich: Segment Vorher/Nachher (_preSample) gegen Tunneling in einem Frame.
var _teleportSampleHeights = [0.05, PORTALM
_SAMPLE_Y, PLAYER_H - 0.05];
var _tpSampleV = new THREE.Vector3();
var _tpLocalV = new THREE.Vector3();
PortalSystem.prototype.attemptTeleport = function (portal) {
if (player.teleportCooldown > 0) return;
if (!portal.mesh.group.visible || !portal.other.mesh.group.visible) return;
var from = portal.mesh.group;
var to = portal.other.mesh.group;
from.updateMatrixWorld(true);
to.updateMatrixWorld(true);
var inv = new THREE.Matrix4().copy(from.matrixWorld).invert();
PORTAL_CIRCLE_R + PLAYER_R * 0.9;
var trackR = PORTAL_CIRCLE_R * 2.5 + PLAYER_R * 1.3;
var anyInTrackR = false;
var anyInPassR = false;
var bestPosZ = 1e9;
var bestNegZ = -1e9;
var hasPosZ = false;
var hasNegSample = false;
for (var si = 0; si < _teleportSampleHeights.length; si++) {
_tpSampleV.set(player.pos.x, player.pos.y + _teleportSampleHeights[si], player.pos.z);
_tpLocalV.copy(_tpSampleV).applyMatrix4(inv);
var pr = _tpLocalV.x * _tpLocalV.x + _tpLocalV.y M
if (pr <= trackR * trackR) anyInTrackR = true;
if (pr <= passR * passR) {
anyInPassR = true;
if (_tpLocalV.z >= 0 && _tpLocalV.z < bestPosZ) {
bestPosZ = _tpLocalV.z;
hasPosZ = true;
if (_tpLocalV.z < 0) hasNegSample = true;
if (_tpLocalV.z > bestNegZ) bestNegZ = _tpLocalV.z;
if (!anyInTrackR) {
portal._prevLZ = undefined;
if (!anyInPassR) {
_tpSampleV.set(player.pos.x, plaM
yer.pos.y + PORTAL_SAMPLE_Y, player.pos.z);
_tpLocalV.copy(_tpSampleV).applyMatrix4(inv);
portal._prevLZ = _tpLocalV.z;
var localZ = hasPosZ ? bestPosZ : bestNegZ;
if (hasPosZ && hasNegSample) {
localZ = PORTAL_EPS * 0.2;
var prevZ = portal._prevLZ;
portal._prevLZ = localZ;
var prevMid = portal._preSample;
prevZ !== undefined && prevZ > PORTAL_EPS * 0.15 && localZ <= PORTAL_EPS;
if (!crossed && prevMid) {
revMid.x * prevMid.x + prevMid.y * prevMid.y;
if (prP <= passR * passR && prevMid.z > 0 && localZ <= PORTAL_EPS) crossed = true;
if (!crossed) return;
var preFeet = new THREE.Vector3(player.pos.x, player.pos.y, player.pos.z);
var preVel = player.vel.clone();
var prePitch = player.pitch;
var preYaw = player.yaw;
var fromZ = new THREE.Vector3(from.matrixWorld.elements[8], from.matrixWorld.elements[9], from.matrixWorld.elements[10]).normalize();
var fromX = new THREE.Vector3(fM
rom.matrixWorld.elements[0], from.matrixWorld.elements[1], from.matrixWorld.elements[2]).normalize();
var fromY = new THREE.Vector3(from.matrixWorld.elements[4], from.matrixWorld.elements[5], from.matrixWorld.elements[6]).normalize();
var toZ = new THREE.Vector3(to.matrixWorld.elements[8], to.matrixWorld.elements[9], to.matrixWorld.elements[10]).normalize();
var toX = new THREE.Vector3(to.matrixWorld.elements[0], to.matrixWorld.elements[1], to.matrixWorld.elements[2]).normalize();
var toY = new THREM
E.Vector3(to.matrixWorld.elements[4], to.matrixWorld.elements[5], to.matrixWorld.elements[6]).normalize();
var fromPos = new THREE.Vector3(from.matrixWorld.elements[12], from.matrixWorld.elements[13], from.matrixWorld.elements[14]);
var toPos = new THREE.Vector3(to.matrixWorld.elements[12], to.matrixWorld.elements[13], to.matrixWorld.elements[14]);
var relPos = preFeet.clone().sub(fromPos);
var lx = relPos.dot(fromX);
var ly = relPos.dot(fromY);
var lz = relPos.dot(fromZ);
newPos.addScaledVector(toX, -lx);
newPos.addScaledVector(toY, ly);
newPos.addScaledVector(toZ, -lz);
// Velocity-scaled exit offset: faster = further from portal surface
var exitSpeed = Math.abs(preVel.dot(fromZ));
var exitOffset = Math.max(PORTAL_EPS * 3, exitSpeed * PORTAL_COOLDOWN * 1.2);
exitOffset = Math.min(exitOffset, 3.0);
newPos.addScaledVector(toZ, exitOffset);
player.pos.copy(newPos);
var vLx = preVel.dot(fromX);
var vLy = preVel.dot(fromY);
var vLz = preVel.dot(fromZ);
player.vel.set(0, 0, 0);
player.vel.addScaledVector(toX, -vLx);
player.vel.addScaledVector(toY, vLy);
player.vel.addScaledVector(toZ, -vLz);
var q = new THREE.Quaternion().setFromEuler(new THREE.Euler(prePitch, preYaw, 0, 'YXZ'));
var preFwd = new THREE.Vector3(0, 0, -1).applyQuaternion(q);
var fLx = preFwd.dot(fromX);
var fLy = preFwd.dot(fromY);
var fLz = preFwd.dot(fromZ);
var newFwd = new THREE.Vector3();
newFwd.addScaledVector(toX, -fM
newFwd.addScaledVector(toY, fLy);
newFwd.addScaledVector(toZ, -fLz);
newFwd.normalize();
player.pitch = Math.asin(Math.max(-1, Math.min(1, newFwd.y)));
player.yaw = Math.atan2(-newFwd.x, -newFwd.z);
// Scale cooldown with speed: fast falls need more cooldown to avoid re-trigger
var dynamicCooldown = Math.max(PORTAL_COOLDOWN, exitOffset / Math.max(1, exitSpeed) * 1.5);
dynamicCooldown = Math.min(dynamicCooldown, 0.35);
player.teleportCooldown = dynamicCooldown;
(typeof performance !== 'undefined' ? performance.now() : Date.now()) + 2200;
// Reset tracking so the exit portal doesn't immediately re-trigger
portal._prevLZ = undefined;
portal.other._prevLZ = undefined;
portal._preSample = null;
portal.other._preSample = null;
var portals = new PortalSystem();
if (portalDebugHudEl && PORTAL_DEBUG_URL) portalDebugHudEl.style.display = 'block';
applyChambersFromStorageOrUrl().then(funM
buildChamber(0);
function updatePortalPreSamples() {
var list = [portals.blue, portals.orange];
for (var i = 0; i < list.length; i++) {
var p = list[i];
if (!p.mesh.group.visible) {
p._preSample = null;
p.mesh.group.updateMatrixWorld(true);
var inv = new THREE.Matrix4().copy(p.mesh.group.matrixWorld).invert();
var passR = PORTAL_CIRCLE_R + PLAYER_R * 0.75;
var bestPosZ = 1e9;
var bestPosLocal = null;
var bestNegLocal = null;
for (var si = 0; si < _teleportSampleHeights.length; si++) {
_tpSampleV.set(player.pos.x, player.pos.y + _teleportSampleHeights[si], player.pos.z);
_tpLocalV.copy(_tpSampleV).applyMatrix4(inv);
var pr = _tpLocalV.x * _tpLocalV.x + _tpLocalV.y * _tpLocalV.y;
if (pr <= passR * passR) {
if (_tpLocalV.z >= 0 && _tpLocalV.z < bestPosZ) {
bestPosZ = _tpLocalV.z;
bestPosLocal = _tpLocalV.clone();
if (_tpLocalV.z > bestNegZ) {
bestNegZ = _tpLocalV.z;
bestNegLocal = _tpLocalV.clone();
var chosen = bestPosLocal || bestNegLocal;
if (!p._preSample) p._preSample = new THREE.Vector3();
p._preSample.copy(chosen);
_tpSampleV.set(player.pos.x, player.pos.y + PORTAL_SAMPLE_Y, player.pos.z);
if (!p._preSample) p._preSample = new THREE.Vector3();
p._preSample.copy(_tpSamM
pleV).applyMatrix4(inv);
// ========== PORTAL GUN (ein GLB, Ordinal) ==========
var WEAPON_POS = { x: 0.4, y: -0.35, z: -0.58 };
var weaponGrp = new THREE.Group();
weaponGrp.position.set(WEAPON_POS.x, WEAPON_POS.y, WEAPON_POS.z);
weaponGrp.renderOrder = 10;
camera.add(weaponGrp);
/** Ohne das traversiert der Renderer nur `scene`
Kinder der Kamera (Portal-Gun) w
rden nie gezeichnet. */
scene.add(camera);
var wpnMat = new THREE.MeshStandardMaterial({
color: 0x8090a0,
envMapIntensity: 0.6,
var wpnLight = new THREE.PointLight(0x88aaff, 0.3, 1.5, 2);
wpnLight.position.set(0, 0, -0.3);
weaponGrp.add(wpnLight);
function stylePortalGun(root) {
root.traverse(function (o) {
if (o.isMesh) {
o.material = wpnMat;
o.castShadow = false;
o.renderOrder = 10;
var loader = new GLTFLoader();
if (_dracoLoaderInstance) loader.setDRACOLoader(_dracoLoaderInstance);
if (PISTOL_INSC) loader.load(
function (gltf) {
stylePortalGun(gltf.scene);
var gm = gltf.scene;
var D = Math.PI / 180;
gm.scale.setScalar(0.82);
gm.rotation.set(0, -86 * D, -34 * D);
gm.position.set(0, 0, 0);
weaponGrp.add(gm);
console.warn('[Portal] Portal-Gun GLB konnte nicht geladen werden (Netzwerk/CORS).');
var muzzleFlash = new THREE.Mesh(
new THREE.SphereGeometry(0.04, 8, 6),
new THREE.MeshBasicMaterial({ color: 0xffffff, transparent: true, opacity: 0.9, blending: THREE.AdditiveBlending })
muzzleFlash.position.set(0, 0.04, -0.5);
muzzleFlash.visible = false;
weaponGrp.add(muzzleFlash);
var muzzleLight = new THREE.PointLight(0xffffff, 2, 3, 2);
muzzleLight.position.copy(muzzleFlash.position);
muzzleLight.visible = false;
weaponGrp.add(muzzleLight);
// ========== PLAYER AVATAR (sichtbar nur in Portal-RT-Rendern) ==========
var avatarGrp = null;
var avatarMixer = null;
var avatarActions = {};
var _avatarCurrentAction = null;
var _avatarReady = false;
var _avatarGroundOffset = 0;
function stripRootMotion(clip) {
if (!clip) return clip;
for (var i = 0; i < clip.tracks.length; i++) {
var t = clip.tracks[i];
var tn = t.name.toLowerCase();
if (tn.indexOf('hips') !== -1 && tn.indexOf('position') !== -1) {
var vals = t.values;
var baseX = vals[0], baseZ = vals[2];
for (var j = 0; j < vals.length; j +=M
vals[j] = baseX;
vals[j + 2] = baseZ;
(function loadPlayerAvatar() {
var avatarLoader = new GLTFLoader();
if (_dracoLoaderInstance) avatarLoader.setDRACOLoader(_dracoLoaderInstance);
var walkClip = null, idleClip = null, bodyScene = null;
function checkDone() {
if (++loaded < 2) return;
if (!bodyScene) { console.warn('[Avatar] Model konnte nicht geladen werden.'); return; }
avatarGrp = bodyScene;
avatarGrp.scale.setScalar(1.0);
var avatarMat = new THREE.MeshStandardMaterial({
color: 0x2a5599, roughness: 0.65, metalness: 0.1, skinning: true
avatarGrp.traverse(function (c) {
if (c.isMesh || c.isSkinnedMesh) {
c.material = avatarMat;
c.castShadow = true;
c.receiveShadow = true;
avatarMixer = new THREE.AnimationMixer(avatarGrp);
if (walkClip) {
avatarActions.walk = avatarMiM
xer.clipAction(stripRootMotion(walkClip));
if (idleClip) {
avatarActions.idle = avatarMixer.clipAction(stripRootMotion(idleClip));
var startAction = avatarActions.idle || avatarActions.walk;
if (startAction) { startAction.play(); _avatarCurrentAction = startAction; }
avatarGrp.position.set(0, 0, 0);
avatarMixer.update(0);
avatarGrp.updateMatrixWorld(true);
var lowestY = Infinity;
var _wp = new THREE.Vector3();
avatarGrp.traverse(functioM
if (c.isBone) {
c.getWorldPosition(_wp);
if (_wp.y < lowestY) lowestY = _wp.y;
_avatarGroundOffset = (lowestY < Infinity) ? -lowestY : 0;
avatarGrp.visible = false;
scene.add(avatarGrp);
_avatarReady = true;
if (AVATAR_WALK_INSC) avatarLoader.load(AVATAR_WALK_INSC, function (gltf) {
bodyScene = gltf.scene;
if (gltf.animations && gltf.animations.length) walkClip = gltf.animations[0];
fined, function () { console.error('[Avatar] walk.glb Ladefehler'); checkDone(); });
if (AVATAR_IDLE_INSC) avatarLoader.load(AVATAR_IDLE_INSC, function (gltf) {
if (gltf.animations && gltf.animations.length) idleClip = gltf.animations[0];
}, undefined, function () { console.error('[Avatar] idle.glb Ladefehler'); checkDone(); });
function avatarSwitchAction(next) {
if (!next || next === _avatarCurrentAction) return;
if (_avatarCurrentAction) _avatarCurrentAction.fM
next.reset().fadeIn(0.25).play();
_avatarCurrentAction = next;
function updateAvatar(dt) {
if (!_avatarReady || !avatarGrp) return;
avatarGrp.position.set(player.pos.x, player.pos.y + _avatarGroundOffset, player.pos.z);
avatarGrp.rotation.set(0, player.yaw + Math.PI, 0);
var hSpeed = Math.sqrt(player.vel.x * player.vel.x + player.vel.z * player.vel.z);
var isMoving = hSpeed > 0.5;
var target = isMoving
? (avatarActions.walk || avatarActions.idle)
avatarActions.idle || avatarActions.walk);
avatarSwitchAction(target);
if (avatarMixer) avatarMixer.update(dt);
// ========== EINGABE (Slowfire: keine Pointer-Lock-API, nur clientX/Y-Deltas + Rand-Recenter) ==========
edgePaused: false
var mouseBar = document.getElementById('mouse-bar');
var mouseDot = document.getElementById('mouse-dot');
var edgeWarn = document.getEM
lementById('edge-warn');
var recenterEl = document.getElementById('recenter');
var recenterProg = document.getElementById('recenter-prog');
var recenterArrow = document.getElementById('recenter-arrow');
var crosshairEl = document.getElementById('crosshair');
/** On-Screen WASD: standard an (auch ohne Tastatur-Fokus); nur ?pad=0 aus */
var SHOW_TOUCH_PAD = _qs.get('pad') !== '0';
(function initTouchPad() {
var tp = document.getElementById('touch-pad');
if (!SHOW_TOUCH_PAD || !tp) return;
ar list = tp.querySelectorAll('button[data-k]');
for (i = 0; i < list.length; i++) {
(function (btn) {
var k = btn.getAttribute('data-k');
if (!k) return;
function setDown(ev) {
ev.preventDefault();
} catch (x) { /* */ }
keys[k] = true;
function setUp(ev) {
ev.preventDefault();
} catch (x) { /* */ }
keys[k] = false;
btn.addEventListener('poiM
nterdown', setDown, { passive: false });
btn.addEventListener('pointerup', setUp);
btn.addEventListener('pointerleave', setUp);
btn.addEventListener('pointercancel', setUp);
btn.addEventListener('contextmenu', function (e) {
e.preventDefault();
function inputLock() {
input.locked = true;
input._lastX = -1;
input._lastY = -1;
input.edgePaused = false;
document.body.style.cM
if (mouseBar) mouseBar.style.display = 'block';
if (edgeWarn) edgeWarn.style.opacity = '0';
if (recenterEl) recenterEl.style.display = 'none';
if (crosshairEl) crosshairEl.style.display = 'block';
function inputUnlock() {
input.locked = false;
input.edgePaused = false;
input._lastX = -1;
input._lastY = -1;
document.body.style.cursor = '';
if (mouseBar) mouseBar.style.display = 'none';
if (edgeWarn) edgeWarn.style.opacity = '0';
if (recenterEl) rM
ecenterEl.style.display = 'none';
function consumeMouse() {
var r = { dx: input.dx, dy: input.dy };
document.addEventListener(
if (!input.locked) return;
/** Rand-Freeze: Zeiger folgt weiter
sonst bleibt _lastX am Rand und der Kreis f
if (input.edgePaused) {
input._lastX = e.clientX;
input._lastY = e.clientY;
input._lm = performance.now();
if (input._lastX < 0) {
input._lastX = e.clientX;
input._lastY = e.clientY;
input.dx += e.clientX - input._lastX;
input.dy += e.clientY - input._lastY;
input._lastX = e.clientX;
input._lastY = e.clientY;
input._lm = performance.now();
document.addEventListener('visibilitychange', function () {
if (!document.hidden) return;
if (input.locked) {
input._lastX = -1;
function focusGame() {
canvas.focus({ preventScroll: true });
canvas.focus();
/** Canvas + Fenster fokussieren
kein verstecktes <input> (hat Maus+Tastatur kaputt gemacht). */
function ensureGameInputFocus() {
window.focus();
} catch (e1) { /* sandbox */ }
/** Tastatur: e.code + e.key + Fallback keyCode (alte Umgebungen / iframe) */
function applyKeyFromEvent(e, down) {
var c = e.code;M
if (c) keys[c] = down;
if (!c && e.keyCode) {
var kc = e.keyCode;
if (kc === 87) keys['KeyW'] = down;
if (kc === 65) keys['KeyA'] = down;
if (kc === 83) keys['KeyS'] = down;
if (kc === 68) keys['KeyD'] = down;
if (kc === 32) keys['Space'] = down;
if (kc === 38) keys['ArrowUp'] = down;
if (kc === 40) keys['ArrowDown'] = down;
if (kc === 37) keys['ArrowLeft'] = down;
if (kc === 39) keys['ArrowRight'] = down;
var kk = k.toLowerCase();
if (kk === 'w') keys['KeyW'] = down;
if (kk === 'a') keys['KeyA'] = down;
if (kk === 's') keys['KeyS'] = down;
if (kk === 'd') keys['KeyD'] = down;
function gameStarted() {
return startEl.style.display === 'none';
// ----- Stuck Hint System --------------------------------------------------
// Builds a contextual hint based on current chamber state, plus a 3D arrow
// pointing at the next interactive target.
var _guideArrowActive = false;
var _guideTargetPos = null;
function _ensureGuideArrow() {
if (_guideArrow) return _guideArrow;
var grp = new THREE.Group();
var head = new THREE.Mesh(
new THREE.ConeGeometry(0.30, 0.85, 6),
new THREE.MeshBasicMaterial({ color: 0xffcc00, transparent: true, opacity: 0.95, depthTest: false })
head.renderOrder = 9999;
head.rotation.x = Math.PI; // point downward by default; we re-orient each frame
head.position.y = -0.4;
var ring = new THREE.Mesh(
new THREE.TorusGeometry(0.55, 0.06, 8, 24),
new THREE.MeshBasicMaterial({ color: 0xffcc00, transparent: true, opacity: 0.5, depthTest: false })
ring.renderOrder = 9998;
ring.rotation.x = Math.PI / 2;
ring.position.y = -0.45;
grp.visible = false;
grp._head = head;
grp._ring = ring;
_guideArrow = grp;
function _findNextObjective() {
if (!chamberDef) return M
// 1) Active button (not yet pressed)
if (chamberDef._glbButtonDoorPairs) {
for (var i = 0; i < chamberDef._glbButtonDoorPairs.length; i++) {
var p = chamberDef._glbButtonDoorPairs[i];
if (!p.activated && p.btnPos) {
return { type: 'button', pos: p.btnPos.clone(), label: 'Press the red button' };
// 2) Cube (if needed and not held) -> nearest cube
if (cubeMesh && cubeMesh.visible && !cubeState.held) {
// Only suggest cube if there iM
s an unactivated button (cube usually goes on a button)
var hasUnpressed = false;
if (chamberDef._glbButtonDoorPairs) {
for (var ii = 0; ii < chamberDef._glbButtonDoorPairs.length; ii++) {
if (!chamberDef._glbButtonDoorPairs[ii].activated) { hasUnpressed = true; break; }
if (hasUnpressed) {
return { type: 'cube', pos: cubeMesh.position.clone(), label: 'Pick up the cube (E), then drop it on the button' };
// 3) Pre-placed portal pair (ifM
level has them) -> nearest one
if (glbPrePortals && glbPrePortals.length > 0) {
var nearestP = null, bestD = Infinity;
for (var pi = 0; pi < glbPrePortals.length; pi++) {
var pair = glbPrePortals[pi];
var sides = [pair.a, pair.b];
for (var si = 0; si < sides.length; si++) {
if (!sides[si]) continue;
var dd = sides[si].pos.distanceTo(player.pos);
if (dd < bestD) { bestD = dd; nearestP = sides[si]; }
if (nearestP) {
var isFloor = nearestP.normal && nearestP.normal.y > 0.7;
type: 'portal',
pos: nearestP.pos.clone(),
label: isFloor ? 'Drop into the orange/blue floor portal (jump in!)' : 'Walk into the marked portal'
if (chamberDef.exit) {
var ex = chamberDef.exit;
var ec = new THREE.Vector3(
(ex.min.x + ex.max.x) / 2,
(ex.min.y + ex.max.y) / 2,
(ex.min.z + ex.max.z) / 2
return { type: 'exM
it', pos: ec, label: 'Reach the green exit zone' };
function _showStuckHint() {
var box = document.getElementById('hud-stuck-box');
var txt = document.getElementById('hud-stuck-text');
var helpEl = document.getElementById('hud-help');
var obj = _findNextObjective();
lines.push('NEXT: ' + obj.label);
_guideTargetPos = obj.pos.clone();
_ensureGuideArrow();
_guideArrowActive = true;
_guideArrow.visible = truM
lines.push('Look around carefully
try shooting portals on white/light-grey surfaces.');
_guideArrowActive = false;
if (_guideArrow) _guideArrow.visible = false;
White surfaces accept portals. Dark / striped surfaces do not.');
To FLING: drop from high into a floor portal
your speed carries through.');
Cubes can rest on buttons to keep doors open.');
Step on / pick up tM
he cube with E. Throw with E again.');
if (txt) txt.innerHTML = lines.join('<br>');
if (box) box.style.display = 'block';
if (helpEl) helpEl.style.display = 'block';
// Auto-hide arrow after 12 s so it doesn't clutter the screen
clearTimeout(window._guideHideTimer);
window._guideHideTimer = setTimeout(function() {
_guideArrowActive = false;
if (_guideArrow) _guideArrow.visible = false;
function onKeyDown(e) {
applyKeyFromEvent(e, true);
=== 'F3' && gameStarted()) {
portalDebugHudVisible = !portalDebugHudVisible;
if (portalDebugHudEl) portalDebugHudEl.style.display = portalDebugHudVisible ? 'block' : 'none';
e.preventDefault();
if (e.code === 'KeyL' && !e.repeat && levelSelectOpen) { toggleLevelSelect(); e.preventDefault(); return; }
if (e.code === 'Space' && gameStarted()) e.preventDefault();
if (!gameStarted()) return;
if (levelSelectOpen) return;
if (e.code === 'Digit1' && !e.repeat) { seM
if (e.code === 'Digit2' && !e.repeat) { setShaderMode(2); }
if (e.code === 'Digit3' && !e.repeat) { setShaderMode(3); }
if (e.code === 'Digit4' && !e.repeat) { setShaderMode(4); }
if (e.code === 'Digit5' && !e.repeat) { setShaderMode(5); }
if (e.code === 'Digit6' && !e.repeat) { setShaderMode(6); }
if (e.code === 'Digit7' && !e.repeat) { setShaderMode(7); }
if (e.code === 'Digit8' && !e.repeat) { setShaderMode(8); }
if (e.code === 'Digit9' && !e.repeat) { setShaderMM
if (e.code === 'Digit0' && !e.repeat) { setShaderMode(10); }
if (e.code === 'Equal' && !e.repeat) {
MOUSE_SENS = Math.min(0.05, MOUSE_SENS * 1.5);
_showSensHud();
if (e.code === 'Minus' && !e.repeat) {
MOUSE_SENS = Math.max(0.001, MOUSE_SENS / 1.5);
_showSensHud();
if (e.code === 'KeyR') {
portals.blue.mesh.group.visible = false;
portals.orange.mesh.group.visible = false;
if (e.code === 'Enter' && !e.repeat && chamberDef && chamberDM
window._skipTutorial();
if (e.code === 'KeyN' && !e.repeat) {
buildChamber(currentChamber + 1);
if (e.code === 'KeyP' && !e.repeat) {
buildChamber(currentChamber - 1);
if (e.code === 'KeyL' && !e.repeat) {
toggleLevelSelect();
if (e.code === 'KeyH' && !e.repeat) {
var helpEl = document.getElementById('hud-help');
if (helpEl) helpEl.style.display = helpEl.style.display === 'none' ? 'block' : 'none';
// Hide stuck box wM
hen toggling plain help
var sb = document.getElementById('hud-stuck-box');
if (sb && helpEl && helpEl.style.display === 'none') sb.style.display = 'none';
if (e.code === 'KeyG' && !e.repeat) {
_showStuckHint();
if (e.code === 'KeyE' && !e.repeat) {
tryCubeInteract();
// Manual respawn
teleport back to the chamber spawn point. Saves the
// player when they get stuck somewhere (e.g. on top of a wall after a
// weird portal placement) without forcing a M
if (e.code === 'KeyR' && !e.repeat && gameStarted() && chamberDef && chamberDef.spawn) {
player.pos.copy(chamberDef.spawn);
player.vel.set(0, 0, 0);
player._prevInExitZone = false;
var _nowR = typeof performance !== 'undefined' ? performance.now() : Date.now();
player.spawnProtectUntil = _nowR + 3000;
try { sfxTeleport && sfxTeleport(); } catch (_e) {}
if (e.code === 'Escape' && gameStarted()) {
e.preventDefault();
if (levelSelectOpenM
) { toggleLevelSelect(); return; }
togglePauseMenu();
function onKeyUp(e) {
applyKeyFromEvent(e, false);
if (e.code) keys[e.code] = false;
* Tastatur: document (Fokus im iframe) + window (Top-Level)
gleiche Logik, Doppel-Events per Zeitstempel unterdr
var _keyEvDedup = { t: 0, k: '' };
function keyDedup(e, fn) {
var sig = (e.type || '') + '|' + (e.code || e.key || '') + '|' + (e.timeStamp | 0);
if (sig === _keyEvDedup.k && Math.abs(e.timeStamp - _M
keyEvDedup.t) < 2) return;
_keyEvDedup.t = e.timeStamp;
_keyEvDedup.k = sig;
function onKeyDownD(e) {
keyDedup(e, onKeyDown);
function onKeyUpD(e) {
keyDedup(e, onKeyUp);
document.addEventListener('keydown', onKeyDownD, true);
document.addEventListener('keyup', onKeyUpD, true);
window.addEventListener('keydown', onKeyDownD, true);
window.addEventListener('keyup', onKeyUpD, true);
* Sandboxed iframe (ord.io): Tastatur-Events gehen oft nur an das fokussierteM
canvas.addEventListener('keydown', onKeyDownD, true);
canvas.addEventListener('keyup', onKeyUpD, true);
/** blur leert nicht mehr keys
sonst nach Klick/Start oft leere Tastatur bis zur n
chsten Taste (z. B. Space) */
window.addEventListener('blur', function () {
if (input.locked) {
input._lastX = -1;
input._lastY = -1;
var startEl = document.getElementById('start');
canvas.tabIndex = 1;
document.body.tabIndexM
} catch (eB) { /* */ }
// Build level cards on start screen
(function buildStartLevelCards() {
var container = document.getElementById('start-levels');
if (!container) return;
container.innerHTML = '';
for (var ci = 0; ci < CHAMBERS.length; ci++) {
(function(idx) {
var ch = CHAMBERS[idx];
var card = document.createElement('div');
card.className = 'start-level-card' + (ch.isTutorial ? ' tutorial' : '');
var inner = '<div class="start-level-num">' + M
inner += '<div class="start-level-title">' + (ch.title || ch.num) + '</div>';
if (ch.line) inner += '<div class="start-level-line">' + ch.line + '</div>';
if (ch.isTutorial) inner += '<div class="start-level-tag">TUTORIAL</div>';
card.innerHTML = inner;
card.addEventListener('click', function(e) {
e.stopPropagation();
_launchGame(idx);
container.appendChild(card);
function _launchGame(leM
// Need correct map ordering before loading any GLB chamber.
// Tutorial (no glbUrl) can launch immediately.
var ch = (typeof levelIdx === 'number') ? CHAMBERS[levelIdx] : null;
var needsResolve = ch && ch.glbUrl && !_mapOrderResolved;
if (needsResolve) {
var calOv = document.getElementById('calibrate-overlay');
if (calOv) calOv.style.display = 'flex';
_resolveMapOrder().then(function() {
if (calOv) calOv.style.display = 'none';
_launchGame(levelIdx);
startEl.style.display = 'none';
if (!USE_MOUSE_EDGE_RECENTER) input.edgePaused = false;
ensureGameInputFocus();
ApertureAmbient.start();
if (typeof levelIdx === 'number') buildChamber(levelIdx);
document.body.focus();
} catch (eB) { /* */ }
for (i = 0; i < 20; i++) {
setTimeout(ensureGameInputFocus, i * 40);
requestAnimationFrame(function () {
ensureGameInputFocus();
requestAnimationFramM
ensureGameInputFocus();
requestAnimationFrame(ensureGameInputFocus);
if (SHOW_TOUCH_PAD) {
var _tp = document.getElementById('touch-pad');
if (_tp) _tp.style.display = 'grid';
var _qb = document.getElementById('quit-btn');
if (_qb) _qb.style.display = 'block';
* Quit current chamber and return to the start menu.
* - Cancels any in-flight GLB load (token bump in clearGLBState)
* - Removes all GLB entities (turrets, laM
sers, portals, buttons, ...)
* - Releases pointer lock and shows the start screen
function quitToMenu() {
clearGLBState();
} catch (e) { /* */ }
portals.blue.mesh.group.visible = false;
portals.orange.mesh.group.visible = false;
portals.blue._prevLZ = undefined;
portals.orange._prevLZ = undefined;
} catch (e) { /* */ }
try { _hideTutorialPanel(); } catch (e) { /* */ }
var _b = document.getElementById('tutorial-briefing');
if (_b) _b.style.display = 'none';
} catch (e) { /* */ }
try { ApertureAmbient.stop && ApertureAmbient.stop(); } catch (e) { /* */ }
if (levelSelectOpen) {
var lse = document.getElementById('level-select');
if (lse) lse.style.display = 'none';
levelSelectOpen = false;
if (startEl) startEl.style.display = 'flex';
var _tp = document.getElementById('touch-pad');
if (_tp) _tp.style.display = 'none';
var qb = document.getElementById('quit-btn');
if (qb) qb.style.display = 'none';
// Expose to inline onclick handler on the quit button.
window._quitToMenu = quitToMenu;
// ----- Pause Menu (ESC) ----------------------------------------------------
// ESC opens an overlay with three options: Resume / Restart Level / Quit.
// Pressing ESC again resumes the game.
var _pauseMenuEl = document.getElementById('pause-menu');
var _pauseSubEl = document.getElementById('pause-sub');
var _pauseOpen = false;
function openPauseMenu() {
seOpen || !gameStarted()) return;
_pauseOpen = true;
if (_pauseSubEl && chamberDef) {
_pauseSubEl.textContent = (chamberDef.title || ('Level ' + (currentChamber + 1))).toUpperCase();
if (_pauseMenuEl) _pauseMenuEl.style.display = 'flex';
if (document.exitPointerLock) { try { document.exitPointerLock(); } catch (e) {} }
function closePauseMenu() {
if (!_pauseOpen) return;
_pauseOpen = false;
if (_pauseMenuEl) _pauseMenuEl.style.display = 'none';
function togglePauseMenu() {
if (_pauseOpen) { closePauseMenu(); /* resume = wait for canvas click to relock */ }
else openPauseMenu();
if (_pauseMenuEl) {
_pauseMenuEl.addEventListener('click', function(ev) {
var t = ev.target;
if (!t || t.tagName !== 'BUTTON') return;
var act = t.getAttribute('data-act');
if (act === 'resume') {
closePauseMenu();
} else if (act === 'restart') {
closePauseMenu();
try { buildChamber(currentChamber); } catch (e)M
{ console.warn('restart failed', e); }
} else if (act === 'quit') {
closePauseMenu();
quitToMenu();
window._openPauseMenu = openPauseMenu;
canvas.addEventListener(
if (!gameStarted()) return;
ensureGameInputFocus();
if (!input.locked) inputLock();
else focusGame();
/** iframe/ord.io: Tastatur kommt oft nur nach explizitem Fokus auf Canvas
jeder Klick ins Dokument hilft */
nt.addEventListener(
if (gameStarted()) ensureGameInputFocus();
document.addEventListener(
if (!gameStarted() || !input.locked || input.edgePaused) return;
if (e.button === 0) {
portals.tryPlaceFromScreen(portals.blue, camera);
recoilT = 0.06;
muzzleFlash.visible = true; muzzleLight.visible = true;
if (e.button === 2) {
portals.tryPlaceFromScreen(portals.oranM
recoilT = 0.06;
muzzleFlash.visible = true; muzzleLight.visible = true;
document.addEventListener(
if (gameStarted() && input.locked) e.preventDefault();
/** WASD + Physik
auch bei Rand-Freeze / Recenter (fr
her: return vor Tastatur
keine Bewegung). */
function simulatePlayerMovement(dt) {
if (!gameStarted()) return;
updatePortalPassCache();
camera.rotation.set(playeM
r.pitch, player.yaw, 0, 'YXZ');
var wish = new THREE.Vector3();
if (keys['KeyW'] || keys['ArrowUp']) wish.z -= 1;
if (keys['KeyS'] || keys['ArrowDown']) wish.z += 1;
if (keys['KeyA'] || keys['ArrowLeft']) wish.x -= 1;
if (keys['KeyD'] || keys['ArrowRight']) wish.x += 1;
if (wish.lengthSq() > 0) {
wish.normalize();
wish.applyQuaternion(new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), player.yaw));
wish.normalize();
VE_SPEED * (keys['ShiftLeft'] || keys['ShiftRight'] ? SPRINT_MUL : 1);
if (player.onGround) {
if (wish.lengthSq() > 0) {
player.vel.x = wish.x * spd;
player.vel.z = wish.z * spd;
var gDec = Math.pow(0.12, dt * GROUND_STOP_DECAY);
player.vel.x *= gDec;
player.vel.z *= gDec;
} else if (wish.lengthSq() > 0) {
player.vel.x += wish.x * AIR_CONTROL_ACCEL * dt;
player.vel.z += wish.z * AIR_CONTROL_ACCEL * dt;
var hor = new THREM
E.Vector2(player.vel.x, player.vel.z);
if (hor.length() > AIR_SPEED_CAP) hor.normalize().multiplyScalar(AIR_SPEED_CAP);
player.vel.x = hor.x;
player.vel.z = hor.y;
_wasOnGround = player.onGround;
player.vel.y -= GRAVITY * dt;
if (player.vel.y < -30) player.vel.y = -30;
player.onGround = false;
tryMove(player.vel.x * dt, player.vel.y * dt, player.vel.z * dt);
// Emergency floor recovery for GLB maps: deep raycast to catch fall-through
if (glbActive && glbMeshCM
ollider && !player.onGround && player.vel.y < -1) {
_rayDir.set(0, -1, 0);
_rayOrigin.set(player.pos.x, player.pos.y + 0.5, player.pos.z);
var emergHit = glbRayCheck(_rayOrigin, _rayDir, 2.0);
if (emergHit && emergHit.distance < 0.5 && !isInPortalHole(emergHit.point.x, emergHit.point.y, emergHit.point.z)) {
player.pos.y = emergHit.point.y;
player.vel.y = 0;
player.onGround = true;
if (!glbActive) {
if (player.pos.y < 0 && player.pos.y > -2) {
if (!isInPortalHole(player.pos.x, player.pos.y, player.pos.z) &&
!isInPortalHole(player.pos.x, player.pos.y + PLAYER_H, player.pos.z)) {
player.pos.y = 0;
player.vel.y = 0;
player.onGround = true;
if (ceilingCollider && player.pos.y + PLAYER_H > currentCeilingY) {
if (!isInPortalHole(player.pos.x, player.pos.y, player.pos.z) &&
!isInPortalHole(player.pos.x, player.pos.y + PLAYER_H, player.pos.z)) {
player.pos.y =M
currentCeilingY - PLAYER_H;
if (player.vel.y > 0) player.vel.y = 0;
if (player.onGround) {
if (player.vel.y < 0) player.vel.y = 0;
_coyoteTime = 0.12;
_coyoteTime -= dt;
// Fall impact sound
if (player.onGround && !_wasOnGround && player.vel.y <= -0.5) {
var impactSpeed = Math.abs(player.vel.y);
if (impactSpeed > 3) {
_playNoise(0.08, Math.min(0.06, impactSpeed * 0.005), 600, 40);
_playTone(60, 0.06, 'sM
ine', Math.min(0.04, impactSpeed * 0.003), 0.002, 0.03);
// Jump with coyote time
if (keys['Space'] && (player.onGround || _coyoteTime > 0)) {
player.vel.y = JUMP_V;
player.onGround = false;
_coyoteTime = 0;
_playTone(100, 0.06, 'sine', 0.03, 0.002, 0.03);
// Footstep sounds
if (player.onGround && wish.lengthSq() > 0) {
var now = typeof performance !== 'undefined' ? performance.now() : Date.now();
var stepInterval = (keys['ShiftLeft'] || keysM
['ShiftRight']) ? 280 : 400;
if (now - _lastStepTime > stepInterval) {
sfxFootstep();
_lastStepTime = now;
var _now = typeof performance !== 'undefined' ? performance.now() : Date.now();
// Void respawn: use map-relative threshold if available, else fixed fallback
var voidThresh = VOID_RESPAWN_Y;
if (chamberDef && chamberDef._glbMinY !== undefined) {
voidThresh = chamberDef._glbMinY - 15;
if (_now >= player.spawnProtectUntil && player.pos.y < voidM
Thresh && chamberDef) {
player.pos.copy(chamberDef.spawn);
player.vel.set(0, 0, 0);
player._prevInExitZone = false;
player.spawnProtectUntil = _now + 4500;
var btnOn = false;
if (chamberDef && chamberDef.buttonDoor) {
var btnXZ = new THREE.Vector2(chamberDef.buttonDoor.btn[0], chamberDef.buttonDoor.btn[1]);
// Tutorial: cube-only activation so the player must learn the mechanic.
// Other levels: either player OR cube can press it (matches PM
if (!chamberDef.isTutorial) {
var pXZ = new THREE.Vector2(player.pos.x, player.pos.z);
btnOn = pXZ.distanceTo(btnXZ) < 0.52;
if (!btnOn && !cubeState.held && cubeMesh.visible) {
var cXZ = new THREE.Vector2(cubeMesh.position.x, cubeMesh.position.z);
if (cXZ.distanceTo(btnXZ) < 0.48 && cubeMesh.position.y < 0.65) btnOn = true;
if (chamberDef && chamberDef.isTutorial) {
// Tutorial: as soon as the dropped cube touches the buttoM
// in place and latch the door open. This way the player can't accidentally
// pick the cube back up and shut the door, and the lesson "cube weighs
// down button = door opens" stays clear and irreversible.
if (btnOn && !doorOpen && doorMesh.visible) {
doorOpen = true;
doorMesh.position.y = -6;
if (doorColliderIdx >= 0) colliders[doorColliderIdx].setFromObject(doorMesh);
if (buttonTop.visible) buttonTop.position.y = 0.1;
try { sfxDoorOM
pen(); } catch (e) {}
// Snap & lock the cube to the exact button position so it visibly stays
if (cubeMesh.visible && chamberDef.buttonDoor) {
var lbx = chamberDef.buttonDoor.btn[0];
var lbz = chamberDef.buttonDoor.btn[1];
cubeMesh.position.set(lbx, CUBE_HALF + 0.18, lbz);
cubeState.vel.set(0, 0, 0);
cubeState.held = false;
cubeState._lockedToButton = true;
// Default (GLB / other): one-shot latching doM
if (btnOn && !doorOpen && doorMesh.visible) {
doorOpen = true;
doorMesh.position.y = -6;
if (doorColliderIdx >= 0) colliders[doorColliderIdx].setFromObject(doorMesh);
if (buttonTop.visible) buttonTop.position.y = 0.1;
// GLB mechanics (turrets, lasers, fizzlers, death zones, pre-portals)
updateGLBMechanics(dt);
// HP regeneration (after 3 seconds of no damage)
if (player.hpRegenDelay > 0) {
player.hpRegenDelay -= dt;
} else if (playeM
r.hp < PLAYER_MAX_HP) {
player.hp = Math.min(PLAYER_MAX_HP, player.hp + 20 * dt);
updateHPDisplay();
if (chamberDef && chamberDef.exit) {
var canExit = !chamberDef.exit.needsDoor || doorOpen;
var insideExit = !!(canExit && inExitZone(player.pos, chamberDef.exit));
if (insideExit && !player._prevInExitZone) {
buildChamber(currentChamber + 1);
player._prevInExitZone = true;
player._prevInExitZone = insideExit;
if (cubeState.held) {
_fwdTmp.set(0, 0, -1).applyQuaternion(new THREE.Quaternion().setFromAxisAngle(new THREE.Vector3(0, 1, 0), player.yaw));
cubeMesh.position.copy(player.pos).addScaledVector(_fwdTmp, 0.62);
cubeMesh.position.y = player.pos.y + 1.12;
} else if (cubeState._lockedToButton) {
// Frozen on the button
no gravity, no movement
cubeState.vel.set(0, 0, 0);
} else if (cubeMesh.visible) {
cubeState.vel.y -= GRAVITY * dt;
cubeMesh.position.addScaM
ledVector(cubeState.vel, dt);
// GLB ground collision for cube
if (glbActive && glbMeshCollider) {
var cubeGroundRay = new THREE.Raycaster();
cubeGroundRay.set(
new THREE.Vector3(cubeMesh.position.x, cubeMesh.position.y + 0.1, cubeMesh.position.z),
new THREE.Vector3(0, -1, 0)
cubeGroundRay.far = CUBE_HALF + 0.3;
var cubeHits = cubeGroundRay.intersectObject(glbMeshCollider, true);
var cubeOnFloor = false;
for (var chi = 0; chiM
< cubeHits.length; chi++) {
if (cubeHits[chi].object && !cubeHits[chi].object.visible) continue;
if (cubeHits[chi].distance < CUBE_HALF + 0.15) {
cubeMesh.position.y = cubeHits[chi].point.y + CUBE_HALF;
cubeState.vel.y = 0;
cubeOnFloor = true;
if (cubeMesh.position.y < CUBE_HALF) {
cubeMesh.position.y = CUBE_HALF;
cubeState.vel.y = 0;
cubeState.vel.x *=M
Math.pow(0.9, dt * 60);
cubeState.vel.z *= Math.pow(0.9, dt * 60);
// Reset cube if fallen into void
if (cubeMesh.position.y < -10) {
var cubeResetPos = chamberDef && chamberDef.cube ? chamberDef.cube :
(chamberDef && chamberDef._glbCubeSpawn ? chamberDef._glbCubeSpawn : chamberDef.spawn);
cubeMesh.position.copy(cubeResetPos);
cubeMesh.position.y += CUBE_HALF + 0.5;
cubeState.vel.set(0, 0, 0);
// ========== HAUPTSCHLEIFE ==========
var clock = new THREE.Clock();
function updatePortalDebugHud() {
if (!portalDebugHudVisible || !portalDebugHudEl) return;
if (!portals.blue.mesh.group.visible || !portals.orange.mesh.group.visible) {
portalDebugHudEl.textContent = 'Portal-Debug: ein Portal fehlt';
camera.getWorldDirection(_dbgTmpFwd);
var gb = portals.blue.mesh.group.matrixWorld.elements;
var go = portals.orange.mesh.group.matrixWorld.elements;
var nb = new THREE.Vector3(gb[8], gb[9], gb[10]).norM
var no = new THREE.Vector3(go[8], go[9], go[10]).normalize();
portalDebugHudEl.innerHTML =
'<div><b>Portal-Debug</b> (F3 aus)
PORTAL_RT_TEXTURE_FLIP_Y +
' (auf dem Kopf? <code>?portalrtflip=1</code>)</div>' +
'<div>Rand-Stopp: ' +
(USE_MOUSE_EDGE_RECENTER ? 'an' : 'aus (?noedge=1)') +
'<div>mainFwd: ' +
_dbgTmpFwd.x.toFixed(2) +
_dbgTmpFwd.y.toFixed(2) +
_dbgTmpFwd.z.toFixed(2) +
'<div>virtB (RT f
_dbgVirtBFwd.x.toFixed(2) +
_dbgVirtBFwd.y.toFixed(2) +
_dbgVirtBFwd.z.toFixed(2) +
'<div>virtO (RT f
rs orange Loch): ' +
_dbgVirtOFwd.x.toFixed(2) +
_dbgVirtOFwd.y.toFixed(2) +
_dbgVirtOFwd.z.toFixed(2) +
'<div>n_blau (+Z Fl
nb.x.toFixed(2) +
nb.y.toFixed(2) +
nb.z.toFixed(2) +
'<div>n_orange (+Z Fl
no.x.toFixed(2) +
no.y.toFixed(2) +
no.z.toFixed(2) +
function animate() {
requestAnimationFrame(animate);
var dt = Math.min(clock.getDelta(), 0.05);
if (player.teleportCooldown > 0) player.teleportCooldown -= dt;
try { _updateTutorialState(); } catch (e) { /* */ }
if (!USE_MOUSE_EDGE_RECENTER && input.edgePaused) {
input.edgePaused = false;
if (recenterEl) recenteM
rEl.style.display = 'none';
if (edgeWarn) edgeWarn.style.opacity = '0';
if (crosshairEl) crosshairEl.style.display = 'block';
var lim = PITCH_LIMIT;
var vw = window.innerWidth;
if (USE_MOUSE_EDGE_RECENTER && gameStarted() && input.locked && input.edgePaused) {
consumeMouse();
var vh = window.innerHeight;
var mx2 = input._lastX;
var my2 = input._lastY;
if (mx2 >= 0 && my2 >= 0) {
var cx = vw * 0.5;
var cy = vh * 0.5;
var distPx = MM
ath.hypot(mx2 - cx, my2 - cy);
/** Innerer Freigabe-Kreis (Mitte): dort l
uft die Steuerung sofort weiter */
var releaseR = Math.min(vw, vh) * 0.14;
r Ring-Fortschritt (n
her zur Mitte = voller Ring) */
var ringRef = Math.min(vw, vh) * 0.42;
var fill = Math.max(0, Math.min(1, 1 - distPx / ringRef));
var circ = 326.73;
if (recenterProg) recenterProg.style.strokeDashoffset = (circ * (1 - fill)).toFixed(1);
if (recenterArrow) receM
nterArrow.textContent = mx2 < cx ? '\u25B6' : '\u25C0';
if (distPx <= releaseR || fill >= 0.9) {
input.edgePaused = false;
input._lastX = mx2;
input._lastY = my2;
input.dx = 0;
input.dy = 0;
if (recenterEl) recenterEl.style.display = 'none';
if (edgeWarn) edgeWarn.style.opacity = '0';
if (crosshairEl) crosshairEl.style.display = 'block';
document.body.style.cursor = 'none';
simulatePlayerMovemenM
renderer.render(scene, camera);
updatePortalPreSamples();
* Maus-Blick immer anwenden (auch im iframe ohne Rand-Stopp).
* Nur den Rand-
koppeln wir an USE_MOUSE_EDGE_RECENTER
lschlich die ganze Maus ausgeschaltet.
if (gameStarted() && input.locked && !input.edgePaused) {
var m = consumeMouse();
var clamp = 60;
if (m.dx > clamp) m.dx = clamp;
else if (m.dx < -clamp) m.dx = -clamp;
clamp) m.dy = clamp;
else if (m.dy < -clamp) m.dy = -clamp;
player.yaw -= m.dx * MOUSE_SENS;
player.pitch -= m.dy * MOUSE_SENS;
player.pitch = Math.max(-lim, Math.min(lim, player.pitch));
if (input._lastX >= 0) {
var mx = input._lastX;
var pct = (mx / vw) * 100;
if (mouseDot) mouseDot.style.left = pct + '%';
if (USE_MOUSE_EDGE_RECENTER) {
var edge = 0.06 * vw;
if (mx < edge || mx > vw - edge) {
input.edgePaused = true;
if (recenterEl) recenterEl.style.display = 'flex';
if (recenterProg) recenterProg.style.strokeDashoffset = '326.73';
if (recenterArrow) recenterArrow.textContent = mx < vw / 2 ? '\u25B6' : '\u25C0';
if (edgeWarn) {
edgeWarn.textContent = mx < vw / 2 ? 'RECHTS DREHEN \u25B6' : '\u25C0 LINKS DREHEN';
edgeWarn.style.opacity = '1';
if (crosshairEl) crosshairEl.style.display = 'none';
document.body.style.cursM
simulatePlayerMovement(dt);
renderer.render(scene, camera);
updatePortalPreSamples();
if (edgeWarn) edgeWarn.style.opacity = '0';
simulatePlayerMovement(dt);
portals.attemptTeleport(portals.blue);
portals.attemptTeleport(portals.orange);
camera.position.copy(player.pos);
camera.position.y += EYE_Y;
if (player.onGround && (keys['KeyW'] || keys['KeyA'] || keys['KeySM
'] || keys['KeyD'])) {
var bobSpeed = (keys['ShiftLeft'] || keys['ShiftRight']) ? 12 : 8;
var bobT = performance.now() * 0.001 * bobSpeed;
camera.position.y += Math.sin(bobT) * 0.025;
camera.position.x += Math.cos(bobT * 0.5) * 0.012;
if (recoilT > 0) {
recoilT -= dt;
weaponGrp.position.z = WEAPON_POS.z + (recoilT > 0 ? 0.05 : 0);
weaponGrp.rotation.x = recoilT > 0 ? -0.1 : 0;
if (recoilT <= 0) { muzzleFlash.visible = false; muzzleLight.visible = false; }
if (exitMarker.visible) {
var exitT = performance.now() * 0.001;
exitMarker.material.opacity = 0.15 + Math.sin(exitT * 3) * 0.1;
if (exitLight) exitLight.intensity = 1.0 + Math.sin(exitT * 4) * 0.6;
if (exitBeam) {
exitBeam.material.opacity = 0.04 + Math.sin(exitT * 2) * 0.03;
exitBeam.rotation.y += dt * 0.3;
if (exitBeam2) {
exitBeam2.material.opacity = 0.06 + Math.sin(exitT * 3 + 1) * 0.04;
exitBeam2.rotation.y -= dt * 0.5;
// Animate guide arrow (floats above next objective)
if (_guideArrowActive && _guideArrow && _guideTargetPos) {
var bob = Math.sin(performance.now() * 0.004) * 0.18;
_guideArrow.position.set(
_guideTargetPos.x,
_guideTargetPos.y + 2.4 + bob,
_guideTargetPos.z
// Rotate ring for visual interest
if (_guideArrow._ring) _guideArrow._ring.rotation.z += dt * 1.5;
// Pulse opacity so it grabs attention
var pulseG = 0.65 + Math.sin(performancM
e.now() * 0.006) * 0.3;
if (_guideArrow._head && _guideArrow._head.material) _guideArrow._head.material.opacity = pulseG;
if (_guideArrow._ring && _guideArrow._ring.material) _guideArrow._ring.material.opacity = pulseG * 0.6;
} else if (_guideArrow && _guideArrow.visible && !_guideArrowActive) {
_guideArrow.visible = false;
// Animate buttons (pulsing red while inactive, steady green when activated)
if (_buttonVisualList && _buttonVisualList.length > 0) {
_buttonVisualT +=M
var bvT = _buttonVisualT;
for (var bvi = 0; bvi < _buttonVisualList.length; bvi++) {
var bv2 = _buttonVisualList[bvi];
if (!bv2) continue;
if (bv2._activated) {
if (bv2._beam) bv2._beam.material.opacity = 0.10;
if (bv2._halo) bv2._halo.material.opacity = 0.10;
var pulse = 0.5 + Math.sin(bvT * 3 + bvi) * 0.5;
if (bv2._beam) bv2._beam.material.opacity = 0.12 + pulse * 0.18;
if (bv2._halo) bv2._halo.material.opaM
city = 0.12 + pulse * 0.16;
if (bv2._light) bv2._light.intensity = 1.0 + pulse * 1.4;
if (bv2._dot) bv2._dot.material.opacity = 0.6 + pulse * 0.4;
// Animate pre-placed portals (visible markers)
if (_prePortalAnimList && _prePortalAnimList.length > 0) {
_prePortalAnimT += dt;
var ppT = _prePortalAnimT;
for (var ppai = 0; ppai < _prePortalAnimList.length; ppai++) {
var ppg = _prePortalAnimList[ppai];
if (!ppg) continue;
if (ppg._innerRing) ppg._innerRing.rotation.z = ppT * 1.4;
// Halo pulses
if (ppg._halo) ppg._halo.material.opacity = 0.14 + Math.sin(ppT * 2.4) * 0.08;
// Beam pulses
if (ppg._beam) ppg._beam.material.opacity = 0.18 + Math.sin(ppT * 2 + ppai) * 0.10;
// Floor arrow bobs and pulses
if (ppg._arrow && ppg._arrowBaseY !== undefined) {
ppg._arrow.position.y = ppg._arrowBaseY + Math.sin(ppT * 3.2) * 0.35;
ppg._arrow.rotation.y M
var _animT = performance.now() * 0.001;
var _portalList = [portals.blue, portals.orange];
for (var _pi = 0; _pi < _portalList.length; _pi++) {
var _p = _portalList[_pi];
if (!_p.mesh.group.visible) continue;
if (_p.mesh.sparks) {
var sp = _p.mesh.sparks;
var ang = sp.userData._sparkAngles;
var rad = sp.userData._sparkRadii;
var spd = sp.userData._sparkSpeeds;
var cnt = sp.userData._sparkCount;
= sp.geometry.attributes.position.array;
for (var _si = 0; _si < cnt; _si++) {
ang[_si] += spd[_si] * dt;
pos[_si * 3] = Math.cos(ang[_si]) * rad[_si];
pos[_si * 3 + 1] = Math.sin(ang[_si]) * rad[_si];
pos[_si * 3 + 2] = Math.sin(ang[_si] * 3 + _animT) * 0.04 + 0.01;
sp.geometry.attributes.position.needsUpdate = true;
if (_p.mesh.glowRing) {
_p.mesh.glowRing.material.opacity = 0.12 + Math.sin(_animT * 2.5 + _pi * 3) * 0.06;
if (_p.mesh.light) {
_p.mesh.light.intensity = 2.0 + Math.sin(_animT * 3 + _pi * 2) * 1.0;
if (_p.mesh.outerGlow) {
_p.mesh.outerGlow.material.opacity = 0.02 + Math.sin(_animT * 1.5 + _pi * 4) * 0.015;
_p.mesh.outerGlow.scale.setScalar(1 + Math.sin(_animT * 2 + _pi) * 0.05);
updateAvatar(dt);
updateDustParticles(dt);
if (_avatarReady && avatarGrp) avatarGrp.visible = true;
portals.updatePortalViews(renderer, scene, camera, weaponGrp);
if (_avatarReady && avatarGrp) avatarGrp.visible = false;
renderer.render(scene, camera);
updateShaderOverlay();
updatePortalPreSamples();
updatePortalDebugHud();
window.addEventListener('resize', function () {
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setPixelRatio(_shaderMode === 3 ? 0.35 : _shaderMode === 8 ? 0.12 : _shaderMode === 1 ? 1 : Math.min(window.devicePixelRatio, 2));
renderer.setSize(window.innerWidth, Ldwindow.innerHeight);
portals._rtSize = 0;
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
7j5Ahf:to:ETH:0xa7c411785027c8b1a589dd8666b0c710F5912a5a
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"sats","amt":"114482678799"}h!
;j9to:USDT(ERC20):0x2a5B7c9Fcd76c266A3aB805B30abfdd7e6469d3d
text/plain;charset=utf-8
"op": "token-transfer",
"tick": "dmt-nat",
"amt": "2637040779",
"dta": "{\"op\":\"swap\",\"desA\":0.000000000001508605,\"slipA\":0.05}"
6j42CY:to:USDT(TRON):TFhFLgWLFQykzGNw3NGBtJfY4AZK3n41a7
<j:vAr:to:MYX(BSC):0x29571b2B7d1EF11A425832b78204F1BFa0234329.
=j;Vkc:to:USDT(BSC):0x0052395b6422f579cA781aDD11737Ffe4fD93213
=j;QSk:to:USDT(BSC):0x8d918f9DDe054e0abA83F863F4b4f9475E9C2A5f
=j;bfE:to:USDT(BSC):0x89a676391Ea51E76BC757dC5B07b21EcB0bb269a
?j=Swg:to:USDT(ERC20):0x80ff474B2a034eA55352ED2d1f409f96846E71D3s<
OjLL0xd7c8e5ddb347161ad03cd6a059c7f1f850a3c31047ded712d48c4bd50659d1a3=|lifi
FjDfrom:25.293663USDT(ERC20):0x5cC56CC197D8B89d4Af23B13EbD6dca3d5651F08
OjLL0x5e2d38a5cb0184e87449b1c640bdf176260472bd39efdfbcb00ccf63ac70cfd6=|lifi2
FjD=:s:0xD343Eba2015390Be0b40614b7c2A1284Ac67D1d1:986970/0/0:-_/t1:0/70
=j;1Ib:to:USDT(BSC):0xa1dc1Fd65712dd9a58BbE6d9cd078dEB951e5591
DjB0x717d330e71b18f22ac3f75da5c631ba57fa725e87446c7d6c0eb08614345d7a1
DjB0x35f40260d53e3e123ecfdaf02a2e42a2d6e4d8c1895dc35601c4350fe576c52a
DjB0x074b12b6962e78e78bd6a788f06202cd5eadab4748279a345dcc019fbf9d23b3
DjB0x4a0accc484df0fe002a7e18e626bbf08f70778f1d658398bae5168724a722951
text/plain;charset=utf-8
C{"p":"brc-20","op":"transfer","tick":"pizza","amt":"20240.7867731"}h!
2j0to:USDT(TRON):TMv6QRLv2SGGDHL9fGLtcjHkrLmYFNAiVL
{"p":"brc20-prog","op":"t","b":"AfkCaYIGqICAlGKHm7PdlJxM8G9xv3woHc8k0WPngLkCBGYjjh3/H2D/HgFg/x8C/x8H/wUDswMC/wMM/wMB/wcF/wMZAACQ/xaUOxN3KQy9gP8fHukS/wUDswb/EAb/BQIKIlEgBL07YbFjxgovXP5gEg3qItWBs9E/NBpgMZQUbgBa9kL/Oh9zx/8fgP8QEc5oxUmBz5z6oc2CAerdVEAZ3RpN1QKyG1+Ubuwq7wlaWDWoewvAWs0cm9vJUQ/t/xABfJH2eZyLsUrsU69BQ5JDVpfg5WWBBZ0u+bewDhMN1Ff3bXP6pVS6mm7kjTOWNQqFhKSGZISge7kPeE5CZ8p4EAT770rusnLXL0fXgt7XC7KzzHsFyjSfIZ4JvdV2ZFylTLoE9sHambS6e5mXcdCF1HTTdjz8sA=="}h!
{"p":"brc20-prog","op":"c","c":"0x81f0ef688b8dcad3f3ddaba69ad529a99f03a1b7","b":"AakFnLv/DDXoRoW574QJSm6qTPnPpT70BBHQ/xbTwhvOzO2h/wM"}h!
{"p":"brc20-prog","op":"c","c":"0x81f0ef688b8dcad3f3ddaba69ad529a99f03a1b7","b":"AakFnLv/DDXoRoW574QJSm6qTPnPpT70BBHQ/xbTwhvOzO2h/wM"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19500000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"cz4u","amt":"550"}h!
DjB0xb74f0871ac88fd5cd89b3fca4e95ce454e5bbee9bd1636594afbc96b0d46aced?!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"6100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"pizza","amt":"2876.75027"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"erke","amt":"1000"}h!
6j417b:to:USDT(TRON):TKPxW4FJ2Wb1G44Wk5PLuEsxPf8Qx9SoNF3
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"850000"}h!
5j3to:SOL:2N3CUwKEapjKSDaKqcXHau3LS6Ca7P9Bs55X1RAW2SZM
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"cz4u","amt":"550"}h!
i/Foundry USA Pool #dropgold/
FjD=:e:0x000735A0d33D678Ba0a3D4cb58447Ef092b1AF1F:142867/0/0:-_/t1:0/70
/j-u61:to:TRX:TTrccbV9v6qnRFpY55JVX9v8U3EV2pgYUr]
7j5v5k:to:YFI:0xC21D17c09f511768912E2601dfc5E6547bF089F5<
?j=O7d:to:USDT(ERC20):0x4869d9f1760DB2FBB6b669908cAF0154DF2ECd72
OjLL0xef3194ebc368d505d28e3d2a94aedb5bd0bb4b08a507282d86fd31e435339e27=|lifi
DjB0x5be970fe58721e312735548f5b6b50ad55e99475da8ee6b79e8bfb8642ea1d03
DjB0x9dc92002b8a1276ba6d9f99b99724c018fbd486cf272393a6fbdea3bf54a4555
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36p9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"cz4u","amt":"480"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"cz4u","amt":"480"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36p9","amt":"1000"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
5{"p":"brc-20","op":"mint","tick":"strc","amt":"1000"}h!
9j7to:USDT(BSC):0x9240b7fd8e72e5c7E63221b732f64eF1066963BC
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"sats","amt":"114607418799"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","amt":"265357597","tick":"sats"}h!
2j0to:USDT(TRON):TEp16BmyPC1pztdu2Q9uFdU1GQz19mnjvg
:j8from:4025POWR:0x1f9Cc977c8404d35B89BD55109D2417125F17E57
GjEfrom:512.526774USDC(SOL):ERDTHc44aSUCFH44WChExkSN2uPCDmLarN26rsLPnyR5
FjDOUT:5DDC1747958D70B4C72F542FA2C8DB83A34DD9E874CC8712C8DF4A16BF7AF0C7
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"ordi","amt":"55.5"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"2024.35"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"sats","amt":"1987502698030"}h!
CjA=:ETH.USDT:0xfF618912198d571C1C7A16630Aa43fE8e27c5d21:0/1/0:v0:50
?j=mlY:to:USDT(ERC20):0xa9AfE44CeDD6d2C5a847f0568F72f3EE281186BD&
?j=lpk:to:USDT(ERC20):0xc17006f55C2b48B98d7ee11b0fb000224b453B23
6j4WMw:to:USDT(TRON):TVPR7PiUbA3u8M74LmDBj5FpEj4T7UZRBu
6j4ZAo:to:USDT(TRON):TDq8gX61Eo6k78mM333BvZFhxZrCNZkKQqZ
6j4i5X:to:USDT(TRON):TCRWHKoeLYPvjKcfgSy199wvJDMUrG3Y1C.'
Bj@ioF:to:USDC(Optimism):0x1c77Bc4A97cBA37E9361883b22646Cc7811181b7
FjD=:e:0x7A109B83DA0337b66f3A181ABc797fea09F377AB:141293/0/0:-_/t1:0/70
text/plain;charset=utf-8
"op": "token-transfer",
"tick": "dmt-nat",
"amt": "16090000000",
"dta": "{\"op\":\"bridgein\",\"ethAddr\":\"0x7a8689aEa84A88A0c79b2185D13E0280e39c94f4\"}"
=j;=:l:ltc1qn7rfxmvts65p6hy5vk7w4xw62a6u32k8t9nqv3:0/1/1:ej:756
6j40qJ:to:USDT(TRON):TK5CK9TEowwde7deEx74Cm6HHKEVBMr8hn<
6j4ePI:to:USDT(TRON):TG4E4XnLNKGqWhW4fxGRhzHfPSAKMoZ5ZG
6j4LL8:to:USDT(TRON):TUVmDTc6z4MqogpToP1mrPtHchDcHbfCCo
<j:3Q5:to:BNB(BSC):0xdDA82b26A6CC2C578bc6Db5067a1Addb8402e2763
?j=wID:to:USDT(ERC20):0xa4ff50d5045561ad6df87b4D55aB8Bc4f32765a7
OjLL0xb15610c92988b1d32fbc4197ab0166c4d5b605bf965167d7fcb4ef8c82830408=|lifi
OjLL0x4c39c24b40c3f3fc457ac08d09065daa108edf0d911f46260031a5609d4872c5=|lifi
OjLL0x0540b55fad11233f11a785a989385c6c7281133a8214e3c98030588c6b1cb12a=|lifiYk
Aj?=:z:t1KhVDK6u9ux3yLZ6pYx4hCgvfiPjVyqjFx:902149871/1/0:_/ts:5/50
OjLL0xecaa0f344711a6d7da8cfb5bb7833a4a35bff25c72d3f6f865f8ef8833026dc6=|lifiJ
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BIUR","amt":"575"}h!
DjB0x5eb46ae2323fda4ca087470737c80c0d63dc64f513dd987a83aa575b56d83c3c
QjLN=:ETH.USDT:0x3E36E4b3562742599569328f3d56A776852346d0:274194500/0/0:-_/t1:0/70
IjG=:l:ltc1qzskmnpvlywj6j7hlgejaruychqrgywfrg6ptzw:12503124/0/0:-_/t1:0/70
HjF=:e:0x6d581aF5Df0cF17CA9E255315bE18B0c2c56Dba3:32963523/400:sk/t1:0/70^
HjF=:l:ltc1qzskmnpvlywj6j7hlgejaruychqrgywfrg6ptzw:4508412/0/0:-_/t1:0/70
DjB0x1b618ecfa8e579c4a47ef5575690d7b992b382a52b4744fde029be2d4ccfbd97
DjB0x3b5651d3a2c05f8acecb1bb7c4d775d941aad56f592c9be493d3b92fa0b18ba9
DjB0x1f3eba02fb9d040cbc8c9d982a89e559caec4b249ff706237dd8f922a76e6960
DjB0xc2b0c7954cd58e67c579233fcb4bb8fc56a8048092be06ed73e63207472526ed
DjB0x88b1b7ce3b0e4ba7a2518440a504f7e3de5c2658b3bc02d9b491ce1347818dcd
DjB0xea542580a6ee80621bd2be1e40aea03149a4f06d9bb5bcaa4466f8ecbbe5df52
DjB0x05b73a0589b2c1e3173bf4aad0bdc5455f14b157117c2959095c3f73ac6d155d
DjB0x635b90524a0f0ce18dab4b5f17777ef10139b91a81ca19883c1c40f417eff392
DjB0x0ae1efa5f7c9e41ef2a245cd247d34b3f1363c38bc600dd7cbe40ae396e9cf7c
DjB0x0db2572a8c1f3c86eeef08244d62689133fbf797619a9c84e170f93e5883f520
DjB0xfa1db077b46c7483b713ec2a9dcc81cdf68424ae5e05c0df36a073f82c1821ef
8j6BZA:to:WETH:0x9Fd4776a2fe242878E9eD22B8FfE1dcA375F0A653
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BTCs","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATCM","amt":"150"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ctdl","amt":"166"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"15"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATCM","amt":"50"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
7j5from:510USDT(TRON):TJYMyhR5e8hCJ8bQTt3dbCCwqVZQq8sWoMHE
?j=SGr:to:USDT(ERC20):0x62d754ea4E9Ea36C0bF25A29b65CC33cd42383ba=
?j=XET:to:USDT(ERC20):0xC91487288Fe351D47Bf08Bc060302ed6E2e39811
/j-X2Y:to:TRX:TKzbfQffXJejezg5Yi7RhdAZhtvppgLWTJ4
/j-xcf:to:TRX:TG3CgHLP6otBrpTyrXTBhNo2LQVWA5cpi8.
=j;u6U:to:USDC(ARB):0xeBdDa9017275D6Bd83Aeb19BFeaEE1ABa663E553
=j;nvM:to:USDT(BSC):0xE85d1935b0d983A63FfF3a95C0195Ab08C45f411w
?j=Vde:to:USDT(ERC20):0xB8D758478a3Ae6938031a94a68398d83464C7C21\
?j=voB:to:USDT(ERC20):0xa8378e5ccF4DF6f8adE5683D406c849Dae7e31b26
DjB0x8f71ecd6cf77c71b7da01471d0bcba44d5c40fc6bd7410c3cdd85286f8259f35
DjB0x09dce019563754be4993255d4bb2f03faa30564f329c871941cb718b57274b10
OjLL0x21a0efddddb7f80cc729e00bb9ab8a8bbad1bf44249731d5791e946bb1eeeac9=|lifi
OjLL0xd906c3a440f44ca08dd8bdd4760957ab4acab5deb2f218e482350c0466f69abd=|lifi
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"11026.583811"}h!
{"p":"brc20-prog","op":"c","c":"0xdbb5b6a1d422fca2813cf486e5f986adb09d8337","b":"AVYI+Ff/DGKHm7PdlJxM8G9xv3woHc8k0WPn/x9A/x4D/w3btbah1CL8ooE89Ibl+YatsJ2DN/8fAf8fwP8eBO3/HgHg/x4CgP8eAf8RE7YpobbRNERbmZbR9IU1qdHFGgFcJ04tYwYs9GsMmswA6yqUleFwJfqcJOHQFzQQ/xF/tXYxENNLrd76Dnt6TQ79hgL803mJVivG1baKKRW8j2oGl3f5LhWW73zkeskc0f8QBbn6VbQGQE4AF72GqltdzilhOD4A2O8ySeZkXo/HH1ISoCiS1SDUZbXUVfFsY3Wq/xAR/wFNo1n/AXR0H9Zvsf8ByurdzKKqXMMLN2t7+kCuyLr/AciPwQ35pm3Mifi6bWFomfss/x+A/xALEMAwWCB113uvxyk7YrA8HMoWgOO1zQiOgW+bmRbuXWJfSWMIm0MpuXXt+TML
W5dX/EAEHIVZPoKcZVTL1i4mCyT21qSdL0dqOiHKVD+5wofhilZ01fS5/HSG+LYMtdkxaoP8fQRg0z7GNhkg4CsyV7AtOQZWYhHwgOSp+RB4teGNdui6sSIUWOGBnJNXKPSsNG5m5LGvVoqrybNlWLhI+DeEmsrAb/x8"}h!
DjB0xe556ea4a0b9e6676053f472368494dfc256d4d7508f5cab87fd2b67e11d594d4
text/plain;charset=utf-8
WHEN INNOCENCE AND AWARENESS BECOME ONE
Fragment: The Book of Return
My intention for this journey was simple: to be open, to be shown what I
s when the fly arrived.
It was small, a native fly, sitting completely still. That was what struck me
any movement I made, it didn
t care. It was fastened to that spot, unmoving, unbothered by the world around it. That was my first thought
s in danger. It moves freely, innocent, unknowingM
And then, a second thought arose. Is innocence just unawareness?
I sat with it. Is something only innocent because it doesn
t know any better? That assumption felt flimsy, like a veil over something deeper. And so I questioned it. What if innocence isn
t tied to awareness at all? What if innocence is an eternal state, untouched by whether one is aware or unaware?
That realisation began to shift something in me, but the fly wasn
t finished teaching.
It flew away, disappearing for a moment, as if the lessM
on was complete. But then, it came back.
And this time, it didn
it landed directly on my thumb. And then, it stung me.
Not only did it sting me
I stared at it, stunned. The very thing I had assumed to be innocent, unaware, moving blindly through the world
it had been aware the whole time. It had a singular mission. It wasn
t wandering aimlessly. It wasn
t lost in ignorance. It wasn
t concerned about the danger I posed to it. It knew exactly what it was doing.
s when I saw the deeper truth.
t just sovereign because it was free
it was sovereign because it knew its purpose. Even at the expense of its own life, it wasn
t concerned. It wasn
t thinking about survival. It simply did what it was incarnated to do.
The fly had never needed validation. It didn
t need anyone to confirm its existence, its path, its choices. It wasn
t looking back for permission. It wasn
t waiting for external recognition of its innocence. It simply moved, actM
ed, and fulfilled its purpose.
And suddenly, I saw myself in that mirror.
The assumption I had been holding wasn
t just about the fly. It was about me. The belief that I needed others to see my innocence in order to know my innocence. The belief that my sovereignty required confirmation. The belief that I had to be perceived a certain way in order for it to be real.
None of that was true.
The fly showed me something profound. Sovereignty isn
t something you prove. It isn
t something you wait for others toM
s something you embody, without hesitation, without looking back.
t need anyone to see me to know that I exist.
t need external validation to know that I am sovereign.
t need to question my own path
I just have to walk it.
And then I saw the final layer of the teaching. Purpose is what makes sovereignty effortless. The fly
s purpose was to drink blood. It did not hesitate. It did not question. It simply fulfilled its functionM
. The leech drinks blood. The tree roots pull in water. Each being in nature is sovereign because it is fully aligned with its purpose.
And I saw that it is the same for me.
I know why I am here. My purpose is to awaken from the dream of thought and ignite the fire of consciousness in others.
That is why I incarnated. That is what I am here to do. No hesitation. No questioning.
The universe had aligned everything, perfectly as always. The lessons of self-sovereignty, the deeper inquiry into truth, and now this
the final confirmation that I never needed confirmation.
The fly had been aware all along. And so had I.
It was never about becoming sovereign.
It was about realising that I already was.
2026 Tim Chamberlainh!
DjB0x86198daeed6ec4443f1fc97d1c5c39f6e07989af900086ce1b81d91fbcbd4de6
LjJ=:u:0x71ad7A0D89d1ac684fa9ef8EC4BB9E3Cd9CA2DC8:787291685381/400:sk/t1:0/70
DjB0xb15610c92988b1d32fbc4197ab0166c4d5b605bf965167d7fcb4ef8c82830408
DjB0x1700a641435de6ab7aa23dacd05536fe7511aad2a2f4c1da8a75c4412f46d228
text/html;charset=utf-8U)
dnamex!The Crystal Skull Collective #470Y
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300.02"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"ordi","amt":"50.64"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"10"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"TRUM","amt":"620"}h!
DjB0xd28599045ee528cc535adfd44fdc3b42a5bec577ec1d55f780a3e40276560a87
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"7000000888"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"meme","amt":"2"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATCM","amt":"500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATCM","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"45"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19999000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"19"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"18"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"6666"}h!
2j0to:USDT(TRON):TDzarERx3ywiXgCv4Cf3Rr382uRFPhiGHP
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"8590"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3985211111"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3000012111"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"abbf","amt":"776500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2974211111"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.z","amt":"499"}h!
text/plain;charset=utf-8
Lg{"p":"brc-20","op":"deploy","tick":"jkjkj","lim":"1000","max":"21000000","self_mint":"true","dec":"18"}h!
?{"p":"tap","op":"token-transfer","tick":"dmt-mcrown","amt":"1"}hA
text/html;charset=utf-8
<script id=M s=1950988408226507 e=1950988408243707 c=17200 src=/content/5df67cf8eda124d3d57d1b55d9a24d9fe14cae5826c0afd53e6f348b79d51d90i0></script>h!
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
cription rdf:about=''
xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
<xmp:CreatorTool>ezgif.com</xmp:CreatorTool>
^mdat<?xpacket begin='
' id='W5M0MpCehiHzreSzNTczkc9d'?>
<x:xmpmeta xmlns:x='adobe:ns:meta/'>
<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
<rdf:Description rdf:about=''
xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
<xmp:CreatorTool>ezgif.com</xmp:CreatorTool>
Bitcoin Cyborgs 10K #1301jattributes
jtrait_typejBackgroundevaluedBlue
jtrait_typeeShirtevaluex
Black Vest and Jean Jacket
jtrait_typedHeadevaluefBloody
jtrait_typefExtrasevaluekSharp Teeth
jtrait_typedHatsevaluejPuppet Cap
jtrait_typedEyesevaluedNone
jtrait_typeeHandsevaluedLegs
Bitcoin Cyborgs 10K #1302jattributes
jtrait_typejBackgroundevalueiTurquoise
jtrait_typeeShirtevaluemBlack Striped
jtrait_typedHeadevaluepOrange War Paint
jtrait_typefExtrasevaluedNone
jtrait_typedHatsevaluetCrown of Barbed Wire
jtrait_typedEyesevaluei3D Shades
jtrait_typeeHandsevaluelGreen Candle
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"zt9p","amt":"19320000"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
Powered by Luxor Tech
9j7to:USDT(BSC):0x7bA5c4eD21604Af678d96bAA608Fa91d787883FB
6j4MvO:to:USDT(TRON):TRmRfW54arneVLVgoKBoeCmoyjNxsi5CJi
?j=uze:to:USDT(ERC20):0x41054f187e4877b494863F85f0b47c133Cbe6953
DjB0x56fde68a487daaa7e2db2a1b77210d638432df3e1533520b4c76d63a0f6b95f1
@j>Mx|Tron|USDT|TRFhTHXZZehMVNXXYz2Yvv2bVkpWxuBQuP|8966e4|tp21bp9
{"p":"brc20-prog","op":"c","c":"0xdbb5b6a1d422fca2813cf486e5f986adb09d8337","b":"AVYI+Ff/DGKHm7PdlJxM8G9xv3woHc8k0WPn/x9A/x4D/w3btbah1CL8ooE89Ibl+YatsJ2DN/8fAf8fwP8eBSv/HgHg/x4CgP8eAf8RDlnTgIpgxgJnLqaQBML05/mxpmCpyJotP1lureDmwSMbppTBaifEmpSQ9nSvpTL6/xALnS/DDMGM/E+sW4NpExVOwu/Rq+PxTFMIyDn6TDtuoEm3jeFyeytrZPFGX2koTFr/EAVwDYEHrw/r2eksSaH4TIemeT1PldKrTDUYZvJgqPWkizmplmST3D5uue8unoHkOf8QEl5mcIHuRIjmW9nk3ONGgBy0cxj2oqcjeOVP0oQvOG6fuXVY5rvYDXQxgF1vkZL/IID/EAUcOadY+fWfkFIqPWIKQ+D7iQ60IUnH+n+rFiWdCgBjKPAXBJxp5UeRPmupprg9Q/8L
QBSf4KE2jyHkSBxhfWEUXnbTIYEcFxJ5bka94ntJP1DuV1g2u2+74o3i7uElixkoZ/x9B6PIM2MvUu7UyzWjtmw931YvHZidXv75TTDolAGO7GC1KDXVcJa1UwhNLppdelKLQQxzKSP2LeLGYU1JsUDRDdhv/Hw"}h!
DjB0x0af3fddcb7ed4560d809d109b119e851c0eacc659190075511a26421592905a0
DjB0xe31dadf6eb344203cf42c960f289c7bf8bf2ea92dceec8aa34fa88697f765677
DjB0xd906c3a440f44ca08dd8bdd4760957ab4acab5deb2f218e482350c0466f69abd
SOUTH PARK Origins Vol.2 #11
SOUTH PARK Origins Vol.2 #10
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":" UBI","amt":"100000000"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":" UBI","amt":"100000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":" UBI","amt":"100000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"158"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"8500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":" OCN","amt":"2000"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":" UBI","amt":"100000000"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
i/Foundry USA Pool #dropgold/
2j0to:USDT(TRON):TTBvgx783HLzPNaL1mot31AudSnkCNwSr2
FjDOUT:B698734FFEDB92FB2E89519347024AE6DEE7953434C666B8B19690927BD6D3CF
OjLL0x9140158ff047e6e04129c848daedd91d097aac8f94d7f8925d835e9f258dcfd6=|lifi~P
DjB0xcecd791a4d9b2121294d625669e9ee448ab2556cd45bb9357b11d460ce6a2ed3
DjB0x74260bb55b89c2697592930633668132f22bb458a6712bf25de4d95ee6f2fd27
FjD=:s:0xE3Df6dBd9EEbB2E772C237040C14a0B39AB0DdC5:220417/0/0:-_/t1:0/70
DjB0x353c5c80b753772fdefb55ba053ea6ba1c870d33f2394182599dd49dd66bc3d9
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"9500"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"18000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"9500"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"9500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"9500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FILA","amt":"9500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
text/plain;charset=utf-8
2{"p":"brc-20","op":"mint","tick":"2030","amt":"1"}h!
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"150"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"310"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"310"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":" OCN","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"301"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"sats","amt":"114482678799"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","amt":"687.87638","tick":".com"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"86217599438"}h!
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
FjDOUT:42644C2327A9F70DBAC713E2DC3C5357D2149C365055BC5E1B3F4C1C1000E488
FjDOUT:45B1EAEE07E7486A03D46EDF1739239CB509AA2DAC8CBAC970CB0134ADF54F67
6j4wx8:to:USDT(TRON):TXfwnsw4Jy4o2jWt65nB48Vgid8XasZsyv
?j=0ec:to:USDT(ERC20):0x350618d3A42B13Ca75B2aE509affe6df0370d2A1
6j4QF9:to:USDT(TRON):TQrEh7pKek2k4pLBqiFcK8ykVaTkRQszYb
6j4G8a:to:USDT(TRON):TR5JRL4sufFm64Gn7LwfeXUdV2RwdfeLwbl
?j=QXZ:to:USDT(ERC20):0xa501E468A6E8c910EE558154BaF4B675c57DD5Dez
6j4Ub0:to:USDT(TRON):TTKMgrxnzcS3cQVmHyw5Y9znNtNbSFVZcz
6j4KLi:to:USDT(TRON):TR8oAt1GGi9Ld5r6DfHfmu5iVVgcF66kg1
6j4pC5:to:USDT(TRON):TE8rVVBwms2UVp6FRVpZW53cz7savPyAE1
?j=cVo:to:USDT(ERC20):0xE8fe28c1c9c2CC073B193A06BE5EbC0ca3AB9100
DjB0x471e8253d796ef926dde4cbe7c86bf617909beccf435d035644d3c732a3585d6
OjLL0x9150cd5c1b80dd4f3b97b853fdf5cbffb616ad8a25385ce7c83aea9d9269846c=|lifi
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"7993"}h!
DjB0xa6ab07a2e7866a06af4fae7e93303ab5f51b81ab0857213f30245fe6a1b5aa4b
DjB0x356d64da5552ee2dad65665d88f80254a7256065ebbdf2c8d152a4b832222671
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"COOM","amt":"20000"}h!
DjB0x8fd657a67519087c008b8ecb403899475ed9706c53685bcbf9cd8b2efc22f1ea
DjB0x7f2b673533fca2218df6d231f937dc50f6fd2f6f2c482c030fe3c07418aac79c
DjB0xd7ee2514a0d3dd39c3998833f48ea50e4cb9948152d768b9661016cab7ebc479
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"30"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"10000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
text/plain;charset=utf-8
<j:=:e:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"2245.53"}h!
?j=gdb:to:USDT(ERC20):0x25c8d5fCFCe1e08871AdD9a3bE9f25B686839cBA
6j4bN6:to:USDT(TRON):TK5CK9TEowwde7deEx74Cm6HHKEVBMr8hn
6j4FmW:to:USDT(TRON):TSq5wgHbiBjReF1Quwqn3gEQuTMVCdxA8z}
DjB0x9150cd5c1b80dd4f3b97b853fdf5cbffb616ad8a25385ce7c83aea9d9269846c
OjLL0x4003bd212db55ff405a383c5f1278645f9b5dd1c9473e4a6d3befdc24898706d=|lifi
DjB0x716f4e24589142bedeb42af4475ce141527a6513ad19a68bdf0124e43270286d
DjB0xc22597b4cbfe51b30954a65c8de476797c06e28e9c7fd85287a83f9ed655d101
EjC=:e:0x83075D6a174a172E5D81fD3AA001d25ab294A58a:70356/0/0:-_/t1:0/70
DjB0x42506b25a281931a3c006ba236b87c1534d100812475fd2f38500c8909d1e733
DjB0xe6c8999470efed47ee17a338eee40c8165c673c7ebcd8b55bc4de4c2077cb083
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1577.3"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1562.71147"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1564.7076188"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1040.9075255"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"UTXO","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"25"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"150"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2865210011"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3107541110"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4125111011"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3821441141"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4105111881"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"30"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATCM","amt":"500"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"15"}h!
SODA #1 - Drawn Sep 25, 2025
dnamegSODA #1edrawnlSep 25, 2025dseede1x1=1hsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
text/plain;charset=utf-8
L}{"p":"tap","op":"token-send","items":[{"tick":"tap","amt":"10953.9","address":"bc1qx5s4rgk6vp456vhr7uz4vl7ppjkqa92gqe4p5y"}]}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ordi","amt":"465.64953227"}h!
text/plain;charset=utf-8
D{"p":"brc-20","op":"transfer","tick":"rats","amt":"310882.72707305"}h!
text/plain;charset=utf-8
I{"p":"brc-20","op":"transfer","tick":"sats","amt":"42823750282.18682955"}h!
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
?j=KtO:to:USDT(ERC20):0x533742e5A48A3d8B354253A5f8A84aF1D1de53b9
6j4Zlv:to:USDT(TRON):TSeehaVLT5BKkSDc2nckg5bmQaKts4w8RU
8j63XW:to:USDC:0xC0e2C210801380D48Ff080DA997fe809499D6e19R(
?j=kSp:to:USDT(ERC20):0x30ac22383128EC558c729e8Fe349A9EC1AAFa584*
DjB0xd05f896df429549dfdaef8c8389f2b3d3c7bb3f8ef87bf04a182a87bb41162fd
DjB0x0cbdd664e5cd5cbeee475e0335a6efc5f0aae229098a4fb238bb3f3f23221313
DjB0x43cf4c777991dddac40347226b356422e33060d7eab06adb742cc5b9c45809d3
QjLN=:ETH.USDT:0x6a3Ad970bF6B526ab609262101f56d21bbe3fB31:179692500/0/0:-_/t1:0/70
DjB0xa0d9534dc31a3f2ad6647e93193822328a7793d76a345d66fd33154fccb86929
2j0to:USDT(TRON):TD3bkt1miay6Gkh2ujrapm3LjPndPY6J1z
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3514121485"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"9"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5564044325"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"1"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"1521488858"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"BIUR","amt":"298"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"Ququn","amt":"9900"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
L}{"p":"tap","op":"token-send","items":[{"tick":"tap","amt":"10353.9","address":"bc1qx5s4rgk6vp456vhr7uz4vl7ppjkqa92gqe4p5y"}]}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
C{"p":"brc-20","op":"transfer","tick":"sats","amt":"154471481.3525"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","amt":"34930","tick":".com"}h!
6j46pG:to:USDT(TRON):TZ3N3VsajCQANyWNbGhserFDgdKoHsSaaZ
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
=j;9v7:to:USDT(BSC):0xb5b3288C3e077be46cD8951062B8a1fE8ed3e0cb&
=j;9b0:to:USDT(BSC):0xda5b608B5BC1bc8b007B0c8e04CF81A70f75CaE4(R
=j;F2H:to:USDT(BSC):0xadcF2B817bd8010f3b1F5DD5A70DDa7AA9f02c29
6j4qX2:to:USDT(TRON):TGjxZWty9AU2yidTMd2NhE5wFegXG4RM4k
6j4jVr:to:USDT(TRON):TRbQ4DsfVQRrbrWT3NoHRqFqvx6rd2Xu5ie
8j6r4F:to:LTC:ltc1qxerangzqj0erzjr4qej4maaj88sf0lqyj44rq0
@j>from:500.9USDT(BSC):0xA094317274E11E700D8707db6D16E31FC3290C70`I
EjC=:e:0xED22F080636fa335DA4FccBE0ebeEC5CB28be93D:40405/0/0:-_/t1:0/70
OjLL0x4bb19c24dc65da77b646befc1cb5b28955ef604228122e697aaa2d57021260b0=|lifi
OjLL0x23aa9646446a9110e38a68d3b39f8950bef6d5d4c928b704a2e3d0e4b0a6bb3d=|lifi
text/plain;charset=utf-8
Li{"p":"brc-20","op":"predeploy","hash":"b7b3aaee49487a1cf6b82c93016ba254e029157909753468acda5329b1242987"}h!
text/plain;charset=utf-8
Li{"p":"brc-20","op":"predeploy","hash":"0f786713671ec2b2c837ddd107859825fb0988dcbaab66327ac6b7eb323d2f20"}h!
OjLL0xf753f39167a40de91c1bdb43630ef3133ce97e37cf7cefd1c5e786aad32018eb=|lifi
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1777.63"}h!
DjB0x98fdd0780e746bc2551a997e2debfca68ed50c64ef810d6390a2de377470b621
QjLN=:ETH.USDT:0x30ac22383128EC558c729e8Fe349A9EC1AAFa584:334979600/0/0:-_/t1:0/70
PjLM=:ETH.USDT:0x73CF28f8A990b3E8aD75c2d88C8389D02f82868E:98531200/0/0:-_/t1:0/70
QjLN=:ETH.USDT:0xC91487288Fe351D47Bf08Bc060302ed6E2e39811:837542100/0/0:-_/t1:0/70?
QjLN=:BSC.USDT:0xda5b608B5BC1bc8b007B0c8e04CF81A70f75CaE4:693624374/0/0:-_/t1:0/70nY
EjC=:e:0xb51314870207822123285F6de081569F2EDb8458:98044/0/0:-_/t1:0/70
FjD=:e:0x5d34E2d34ec13B52610F8386faB5815090Ae476f:218512/0/0:-_/t1:0/70
DjB0x75aeb1b8688be471146214679df72919afd3c5547ef2d284aba95adf3cf9e0e9
DjB0xe6f762045ca259bff04541432ece90e55b6dfcd1434dc23c474a66a78da8876e
DjB0xd3f7154f4afe9c7cd5a920ee35692fd817644164d7536c9cd1c5b0c00597a299
DjB0xa624841298611ecc451468363c1942a71343a88fc084d5a4ccc16605b956ee84
DjB0xe7490a79011b84c07c60d4035fdb0175d348fab05ed551d614aa7900d4f4684b
DjB0xf1e9a50909835b38e653d4cc035313ce1ab44bbfdf67154b124464f95402816a
DjB0x72a5592b98f33c38351ea79e0f1e53fe2380f8d62fe21b5c1ea19ced8c085d52
DjB0xcf43b51be6a8075c87611841985e54ebfde88129d05a652315350bfe1b9414ee
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"17
m","amt":"999.999"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"
text/plain;charset=utf-8
;{"p":"brc-20","op":"mint","tick":"LlNUX","amt":"400444000"}h!
text/plain;charset=utf-8
3{"p":"brc-20","op":"mint","tick":"
text/plain;charset=utf-8
:{"p":"brc-20","op":"mint","tick":"
udi","amt":"18000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"
","amt":"7999999"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"
RDl","amt":"999.999"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"mint","tick":"turon","amt":"11111111111111"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"TRU
","amt":"999.999"}h!
DjB0x86f06d0b32703f8302799e478a852c1c895475843ab399983c63b86c586efb53
DjB0x2da58ea1472dc1e051dfdfb34566fc348359097444ecc29fd8793b61f7c79613
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"Ququn","amt":"10000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"fifa","amt":"20187"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"1"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"13091869000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2125331111"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"50000000000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
DjB0xd49423a0ee2a21e46e68120faff2f0506ad1111bb5f39c29ec9662b65575fc52
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"30000000000"}h!
DjB0xad4a7e885d694e4751d5c3c7287186dd8ae9172b35a44eb32da186857dd9430c
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"d app","amt":"250"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"25000000000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"388"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2999999888"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"core","amt":"50000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"50000"}h!
SODA #2 - Drawn Sep 25, 2025
dnamegSODA #2edrawnlSep 25, 2025dseedfbinaryhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"Ququn","amt":"20"}h!
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
6j4e67:to:USDT(TRON):TJCFfoEejBDcHBMexceMtqkavQqB6qb6Pa
6j4o0X:to:USDT(TRON):TKAwFLTFDniFJG2NfsnFvrK7h7vHW14L5M
OjLL0x65b6154fa411f47c580f46a0150d494aeaa13763606eff46b0fb9aa3e72ea6ee=|lifi2
DjB0x81ab763a07c985a24a4e0568996ccec6d6e00cd9e0b57e3943ab3d0ebd89fa08
D{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"486604799"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"ordi","amt":"262.0634036"}h!
DjB0xf4934f034a31dbcef8709493190fb9b573f5f7423f60a2d8cddbef9b50c50c1b
DjB0x2805d2f6437448e9cb9e9000a8180b817093ce3ccfcaa579187cb03fbcaf3fe9
DjB0x030a40cde39dd079c3b7029656c9d25389ccc524e3315c5e2e2bb58d1ea5ee92
DjB0xb8f2cb1ce3dabc81e60254aa9bf9d64b2e889f33e9f6b7841dff4a89e90b8ba7
DjB0x3ebf7cb879778fd1a363f4daaaa4651bb7fce5fdde161f44ecbbac3211b3d24e
LjJ=:u:0x3eC54d91e13BCFabAA092eBe9A7A56E205c164CD:991612432626/400:sk/t1:0/70
IjG=:e:0x6F4d839f50368c13BACb2d0DCa7627Ef2e412B3F:195554698/400:sk/t1:0/70
DjB0xbd11f236609624a8a6d3d0852fe4783df9c1fbfb9431d3f1b079c66fd0548408
DjB0x856d666391e943a99c81c4c4fc8c910c1e1792895211a395c4b26cd0e00cddad
DjB0x1aafcca01891cfd00a3f05650480917220a4a5486c5a3c067055f4b154de45f5
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"Ally ","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"21"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3805141118"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3108512109"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"Ququn","amt":"10000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Ququn","amt":"100"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"230000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
SODA #3 - Drawn Sep 25, 2025
dnamegSODA #3edrawnlSep 25, 2025dseeddholyhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
6j4tL1:to:USDT(TRON):TB93T7JD5rYtzM1FpBeXAStbKfAU62TvAj
:j8=:e:0xAA3d0D12054A92A3Dc837364dBbf4B5baFD0d0FC:708785170
7j5from:120USDT(TRON):TGQromUqCmQXhp4qqGJAPeY5gKzzEiyfbF
DjB0x779c94e968844b36a3903c4e52b53e4dbd835065becdc303fa0fec41cea30a9a
DjB0x15487f2cdf19eb80958f06767d5321330d8f738942831fbf349eb1718bfb6723
DjB0x5e8f4ef9bc711297a14f6be5a33b00f26f1967eeb0878438d7bdbf5be92a998e
B6fb80c8c6e1b606a44ea8b12e1375a19dcb6924565062ccbd4687758c6754b08:0a
DjB0x51896acc89bef039e4ea74bbe463694a3a0ce56f757e04cfefe2874137f5d0de
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1003"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1001"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
DjB0x73ade78849a74c2ecc9198b99761842b5f5c10c3d54ce756833e21087ac3ba09q
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"Ququn","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Ququn","amt":"100"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1001"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"100000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"33"}h!
SODA #4 - Drawn Sep 25, 2025
dnamegSODA #4edrawnlSep 25, 2025dseededeathhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
/ViaBTC/Mined by kleon/,
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"86217599438"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"sats","amt":"350000000"}h!
FjDOUT:68A1173302B20D00B6759C2C9D7B9B00247D7949D0AC089E6AB94E02E02B023B
FjDOUT:57492B91AE29DC164777918954C33920C8E2E127315221332E62C2773318EE65
IjGREFUND:BB40F699209F71C0E0420B4AD54EF25A2FE3AE3FE528B63DB96E4998ACC2E5FD
FjDOUT:F54CD4AA08888D5EAED25C0A18F8277F1F47F73ED888886E714ED7DECEC002C2
/j-oVO:to:TRX:TDXx8AJfHpuNfrpoDkUaX17H3kB1fejYi5
DjB0x9f0debbfef8f18c0a6ec5e43c985134afdd161aa5b079863b9ddd4e336adf10d
text/plain;charset=utf-8
Lx{"p":"brc-20","op":"deploy","tick":"DeepAI","max":"21000000","lim":"1000","salt":"48ffbc","self_mint":"true","dec":"18"}h!
text/plain;charset=utf-8
Lx{"p":"brc-20","op":"deploy","tick":"MindAI","max":"21000000","lim":"1000","salt":"e1f881","self_mint":"true","dec":"18"}h!
OjLL0xa28b04315efb3526abd8c6ac517cecdbd5998cc507046138c60422e64249dfb2=|lifi
<j:dBp:to:BNB(BSC):0x15c238acCc207B44a13E85cc7e4b5437ecce5648
<j:SwR:to:BNB(BSC):0x99Baaac6FEe9a528862Af88Aa301CAcA18BbC64a
?j=from:16.895907USDC:0x80A9BAd9Fe12D6eb27b9cA7ea4b586F55Ca7eA9b
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"802"}h!
DjB0x9d5eb4e59945a516af85bc1b2c33dab054f70652a1cc64b54092e22725289b8a
PjLM=:BSC.TWT:0x2B04b1bAe03536292b38e67A7A3745450c5393d5:243612481/0/0:-_/t1:0/70
HjF=:l:ltc1q2h9plwumyz437c6jae20kt3atxaj0c2f6c72ke:8619169/0/0:-_/t1:0/70
HjF=:e:0xE722BF0dA8ea27e5415d46863fCb3FE2e23d9A4F:62786222/400:sk/t1:0/70]
DjB0xa8f92b5664d9138822f30de40793c30739eecf3e2045d88a19b76c2d0f8336ab
DjB0xf925d74c7ea4b374e418f90c5ca8bffe64163a7ece3a691dd45238f46f7032a0
DjB0x9a948198baede666348267a400be3effe2d7f8c976fd0464a817ff57e7d5fe9a
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1550"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"pizza","amt":"1556.64"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1562.1605267"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"mint","tick":"Stegg","amt":"999.999"}h!
DjB0x76e1b44df3b838b1349ed38d5fa902e9096e90fe802455ac36e8ab2c6acade43<L
DjB0xe0a70ce65bf15f9a2ccb818c4245937cd9b3f5fbaa152067a521998a48665f17Q
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"1"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"Ququn","amt":"8"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"mint","tick":"Ququn","amt":"10000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Ququn","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"21"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"ordi","amt":"3350.8"}h!
IjGREFUND:0B633A5D3A4A1441AF1C8F9E5CED423062D6519DC42A97E2EA606862762E9E21
/j-JY5:to:TRX:TK3h95jE7wNT9f6qgeetmWE8PYXuihTDDhp
OjLL0xdb0b5d3257269b79865a374cc9ca0092777062dad46f11a8e3472dd21bd6bf2e=|lifi4
DjB0x56bba0efd4c85281b3c69fa2c403ceadf4e133d044a583a5eb0aabd743ecad82
DjB0xf9178e40c3161167087a5ab71714edea513368a8118160a4a77690a301814ccf
DjB0xd32280da23176da69322fe132a7dd4f37e74b9044f893da5645ed4ac8dc27771
DjB0x334f6cd0d4d0c1682f40785f0f59e3488b0d8c993b49b73aae78babefaeb640d
DjB0xa51e10cdae070c2a668828276676a2e8802655e58cfe409e1f6237f234faea0c
DjB0x5c0b495a46538179086ba28239f6d0a2d51336e625aa011e4eff5b089385e50f
DjB0x9c0321ab6e4d2ab72882b2858cb0a9d62a06fe3f461e2576e38364ae017149f2
DjB0xbddd4730e0d784b2fb0b9ad3cbcd17c7f1e4d41a33c12adc33d4b50ec89d08bc
DjB0x35a9a4b98dec14bf06c0d4094f8d646b4ff30fb481e35f80d38a3d833716927c
2j0to:USDT(TRON):TD3bkt1miay6Gkh2ujrapm3LjPndPY6J1z
2j0to:USDT(TRON):TQJ9aGHbG7GgyhNQhD6Pbc8eMWozhDVahh
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
DjB0x2f6c20d3e836bafae8873934dde08c1ded6e788fffc99ffdf72a0e063d7137ccS
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":" OCN","amt":"880000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
SODA #5 - Drawn Sep 25, 2025
dnamegSODA #5edrawnlSep 25, 2025dseedfleeloohsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
text/plain;charset=utf-8
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1777.63"}h!
FjDOUT:2FD8199CCD5039DBCDFF217E0953742730A4F2C9DFCAC71E0E7856ABEE047F66
8j6E33:to:LTC:ltc1qasw6t9n2eme872l7tzs7tykww48llqrywhwgr0?
6j4Jng:to:USDT(TRON):TGLg1fi3uJczqm87XeK9BJY4spCRt53oAEBc
>j<from:100USDT(BSC):0xB6886e4363e88f58Acb0bcc11508eE11490b7c9B\
OjLL0x6a0f58faff837b317deba0375acf44f13450f95095cc31af274196b31baed61c=|lifiQ
text/plain;charset=utf-8
Li{"p":"brc-20","op":"predeploy","hash":"7ad549cc613501e106bc9392f135932128b55910b323e6a5fcbb759251c2d950"}h!
DjB0xce30dac4e023e0649c2491dad4f4244c4b27e97fb20a43cd110b3da6de24d21a
DjB0x74a84c074ed80b9b472f032a0c46595a4f7998f4c74047594b271584babe2e97
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1500"}h!
DjB0x03e2ec0c88a345a1ec74581601daffd1244a62078e2854e53212b54a7bd6823c
DjB0x5a7d81fff1ab14d20331fca327820bc760eb065db02ebe70ceb7584e8c1d83b3
2j0to:USDT(TRON):TXevKbRAfYqaGb7eJa6pSxU5UGkBYVRn3b
2j0to:USDT(TRON):TD3bkt1miay6Gkh2ujrapm3LjPndPY6J1z
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"7759999998"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"8829999998"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"9112536598"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"8966523651"}h!
@{"p":"brc-20","op":"transfer","tick":"ordi","amt":"17.34526061"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"199"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"DNYS","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"BTC.Z","amt":"499"}h!
SODA #6 - Drawn Sep 25, 2025
dnamegSODA #6edrawnlSep 25, 2025dseedrperfect number 1/4hsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
i| MARA Made in USA
8j6to:BNB(BSC):0x2117cEaB9a2e8d6AD58D9edE4839fA7a22b992d7
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","amt":"3350.8","tick":"ordi"}h!
text/plain;charset=utf-8
LO{"p":"brc-20","op":"transfer","tick":"rats","amt":"949969846.9591500000000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"94306613723"}h!
FjDOUT:A68EA17AB94A50E793D6BA01ABACE798826CD9451744561D7CACE5C66521A3B3
=j;WCp:to:USDT(BSC):0xfB1d478A2febDd800dD2789ff9FaCaB53eDF02d5
LjJM>|Mapo|0xf9d53f5877c8222bd632a2530ff7c36c84ae57a55fc6f9895cfc3086ff3ed7c6
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"erke","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"erke","amt":"1800"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"erke","amt":"1447"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"erke","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"erke","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"320000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"3000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"30000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"60"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"CPRDA","amt":"19999999996"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"erke","amt":"1800"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
SODA #7 - Drawn Sep 25, 2025
dnamegSODA #7edrawnlSep 25, 2025dseedeluckyhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
9j7=:e:0x4FF7B619D517aC0899d762B27931E031242ACB7A:15999955
IjGREFUND:7E3C95CE7F0B5D448E972ECD268B28087A10B1F432EA7EF0139B8ED55048D8A1
6j46Ew:to:USDT(TRON):TVDwh6axmAvVr5rRjjiZEwhFPcQfA499dU7
?j=ThL:to:USDT(ERC20):0xf24193e642C8c3c17c34f469299026472a3B1BEcE
6j4LBJ:to:USDT(TRON):TGX6R77xkwSt1RDf4Zefx7ahVzfeBvtt4k
DjB0xdf94d9c61b48c2c859fb2a28b9b9bd58f3145d394ce4f6e957023cba4fc57a3a
DjB0x72f53027dc4ec881daca33b89ab3bbed5396f29e944445ffe393e3c2716d1d22
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":" UBI ","amt":"998000000000"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"7841236521"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"BDOG","amt":"800000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"160"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"5"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1007"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"3000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"15"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"60"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"0.01"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
SODA #8 - Drawn Sep 25, 2025
dnamegSODA #8edrawnlSep 25, 2025dseedeluckyhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
6j46i4:to:USDT(TRON):TTLcNYTi5sTRQayVtb6B9tSYEoZy1Rdf1A
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
FjDOUT:C341655FB62F02875B27DDE714E7C6D5EE5B772AEB931D28C3ABD37E7D99AB17
FjDOUT:02CA25E9231D3F9015B5029A45132AC8D690D543CF2E23322FF3E20A4FC1D382
2j0to:USDT(TRON):TCXt7Uvb4FrzD5ywuz7MuSPkuzLct5jK1b
text/plain;charset=utf-8
Lx{"p":"brc-20","op":"deploy","tick":"Dragon","max":"21000000","lim":"1000","salt":"3a5d83","self_mint":"true","dec":"18"}h!
=j;=:l:ltc1qcef9ucmg0gzz3002epw93ndl5ntf5s368y8lmr:0/1/1:ej:75
/j-TVB:to:XRP:rNgBiVwun1MvBbCLA6LRstDEM8sKNMwgyFd
6j4nkv:to:USDT(TRON):TRKo1rr4uvxveh1qhmudSNeDuomWWFdQxBA
OjLL0xd4f263d119e6dff860fa5d5f8dc9ed58a4e30aede4326c2ebcf5d9afc429caf5=|lifi
OjLL0x5c924e808ddfd8047040ad302f71f3ae8e408ad7e2fab5d9ea471d342b6d64c5=|lifih
OjLL0xa6f4548ae9e1a329a6b5c3166b4625490676f717baaf993218b644c73c41cbdb=|lifi
OjLL0xf7f2040357064da449f6f06e98d124d8031f9b7d61cd7c11fcf061f64d400670=|lifi
OjLL0x468ff8c899a6a84513f1da457391b0ce5f4ee80ea57df4490dc20a7fa5c8358b=|lifi4
2j0to:USDT(TRON):TG16qvEnX1t8DdtTXivdPoYErvxW3bvsvC
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"8000"}h!
DjB0x17d486c7a7316049857da9729192279396bf7c794e9271e5258f881ee6518ebb
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"59769796359"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"11026.583811"}h!
DjB0x23bfaec5106652f59836f090e0577c6051f446587451e3e6522f1f7a84da1ec6
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"7652365412"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"8632452142"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1500"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"6848672401"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"4"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
DjB0xc19e75aaeb4ed1567e30a53f967f102698069a6894a7cf4dea99cc36d6c640ae
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1200"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"50"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"397"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"6848672401"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"100"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"6848672401"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1004"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1500"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"6848672401"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"6848672401"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1500"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"6848672401"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"fifa","amt":"2000"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"6848672401"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AP18","amt":"800"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"200"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1500"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"trum","amt":"1500"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"4964907415"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"400000"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"4964907415"}h!
E{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"4964907415"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"22000000000"}h!
SODA #9 - Drawn Sep 25, 2025
dnamegSODA #9edrawnlSep 25, 2025dseedfdorianhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
=j;4G6:to:USDT(BSC):0xC648580dbC03488604c676eC3F754b9A5f8F9ABd
SODA #10 - Drawn Sep 25, 2025
dnamehSODA #10edrawnlSep 25, 2025dseede10minhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
text/plain;charset=utf-8
G{"p":"brc-20","op":"transfer","tick":"ordi","amt":"0.0334300000000000"}h!
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"ordi","amt":"2598.8"}h!
6j4PMf:to:USDT(TRON):TTLcNYTi5sTRQayVtb6B9tSYEoZy1Rdf1A
8j6gAg:to:LTC:ltc1qz2nasavya7ql0rjqhkgpklkkqrtcrtx8w2lems
8j6lEA:to:LTC:ltc1q7esjph0dzwsudcrzvsypp36tcwg0eadw75y8dq
FjDOUT:56C4CE2E5C9084D2B093751E5BE7A52F15DF8719D58F32E5DF86A5ED57BDE4A4
QjLN=:ETH.USDT:0x4F93ABDABf08682B78d0f5223D72beA2806CBcC5:110690400/0/0:-_/t1:0/70
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"3071"}h!
=j;from:532POL(POL):0x67AE97c3A07F8991C968B27ef56911eb0Dc78Fc4
8j6HyY:to:LTC:ltc1qkg3q72zn4rqjypxvhnmlksgcn0v3pra66dnj7m,
6j4eeP:to:USDT(TRON):TPJnTErE6tqPfYHMG2Nqe3ZNR1JWFoKiiZ
OjLL0xda3e96384721e38af12fabc582836e7062719721e5b3d1a2d23e4e46c8b42677=|lifi{9$Z
OjLL0xfe5fd3024b5a7712066f172f20d49e98d786fadc2c15fffd6a009b0acfefe862=|lifi
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"7992"}h!
CjA=:tr:TRKo1rr4uvxveh1qhmudSNeDuomWWFdQxB:1166776600/0/0:-_/t1:0/70
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1549"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"pizza","amt":"1549.99"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1548.0754802"}h!
DjB0x8b4f1f7c9d2a44a192d17e314dd231f99ad27d35ec15696c737ea1b81464d243
DjB0xada6032138f426ddbfde64ea6607b147c97f81fa03c0f5a0216d08b5a32c89a3
DjB0x22aab4e61b90c38de21af39f61a4fd003aea1d2051db1cc0110120ed2b912a62
DjB0x90422579483a125af35ef55107fc946c5eea09fdc546281a376baf5b268f783c
DjB0x8a6d52ac9a00d6a290c7d05f9ecc1e77b2f523b434149d08d0b285ea45cd3061
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"6253214582"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"7214368422"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"7421536852"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"7658423652"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"mint","tick":"CPRDA","amt":"9999999998"}h!
DjB0x26b9046c6413ab69e4db4a6723e38e326aeb997ac6ae702ed300f6f3f23b0355
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1002"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"24400000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"15"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"400000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"beat","amt":"174"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"24400000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"beat","amt":"220"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"5938546519"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"erke","amt":"610"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"beat","amt":"190"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"beat","amt":"180"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"beat","amt":"190"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"110"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"AP18","amt":"2000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"beat","amt":"181"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"beat","amt":"230"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
9j7to:USDT(BSC):0xf3AbC6B24E1C714f18Cf9FE9569B021aD4808FaA
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"36P9","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
SODA #11 - Drawn Sep 25, 2025
dnamehSODA #11edrawnlSep 25, 2025dseedklegs elevenhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
text/plain;charset=utf-8
6{"p":"brc-20","op":"mint","tick":"pulx","amt":"10000"}h!
DjB0xed19447ffafa83f98285027e7a75327cb3c39f698f084e19e36422fb127a7466
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"fifa","amt":"110"}h!
=j;rRf:to:USDT(BSC):0xDFaB8C7050E7cE72f51670228f300700e700E58f
SODA #12 - Drawn Sep 25, 2025
dnamehSODA #12edrawnlSep 25, 2025dseedgbase 12hsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
i/Foundry USA Pool #dropgold/
>j<from:100USDT(BSC):0x5d8305b2fb4370Ab1994DFF94559AcD6e6f4f692
IjGREFUND:4DB4DDD4B18A2A442874AA97B1986E7800988128CB2FB78311BDF411E78C24B2
6j43KO:to:USDT(TRON):TWFSwpaBEK6czfSqs84mVYDu2njo6a75hK:
PjLM=:BSC.TWT:0x6D9FA9B2DB3c1789f6388967A53A1cEDc56E0D1c:318966969/0/0:-_/t1:0/70
DjB0x72b8ba0e4abfca3c7c7ca1ec4d0b704f0d77dbcbd6f3743275c0a2d46442964d
DjB0xcf213e704b8ee3dbf99922aa57772ff1e19e443266a346e7dd0f8d1125f8c7e6
DjB0x05cf677ac49ff0cadd4805599a749acb15ec9bef7713404798e70b994276c19a
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3600232888"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"36P9","amt":"10"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2933392100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
SODA #13 - Drawn Sep 25, 2025
dnamehSODA #13edrawnlSep 25, 2025dseedffridayhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1536.97"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"94306613723"}h!
text/plain;charset=utf-8
I{"p":"brc-20","op":"transfer","tick":"ordi","amt":"146.3925295100000000"}h!
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
FjDOUT:D5C69E82068E373DA03047A211C8AF214D212CF41FDB4167D776FA49064CCA3A
9j7to:USDT(BSC):0x9023b1B020531ce8812E18B995A65967a4CAC3e5
;j9to:USDT(ERC20):0x3F2618cB21d83D14b97f5EEe0281B6EFD6866b3D
6j4aie:to:USDT(TRON):TXAPyWJz5w3nnkJf1FYzD57K7RSrkcfVfZ*
DjB0xfc92b92814a8a5f6ca8081491be0ab1841c025556e6d7cd48739c645b53fd19a
?j=O8y:to:USDT(ERC20):0x27427dF3B78B90c62195A841a6AFae119EE15c4F
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ordi","amt":"156.52675598"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"59769796359"}h!
OjLL0xa095ca22284b2a0210ad5b8d2f60e74d357572139e207d1d3b121be03e36cd3d=|lifi
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"4000000000"}h!
DjB0xb96c6e42853aa25e04ae46726bba60176520189e2afc1d4b95f311ec656bb58b
HjF=:l:ltc1qq3nm42xxva5s3587cjfq4gsps2rzq4298yj76r:8224858/0/0:-_/t1:0/70_E
DjB0xfd176411b4ae0aeac378aad88f628d41c7b11a4d9435a034990d217cf283c002
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"301"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4385211118"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"301"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"2000088888"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"zeusv","amt":"307"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"4215805632"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"310"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"zeusv","amt":"307"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3988888865"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"zeusv","amt":"307"}h!
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
J{"p":"brc-20","op":"transfer","tick":"ordi","amt":"41.000000000000000000"}h!
Be304c7ef951cc6848a69ef9c613f9f0bb886b37ed6d9d162f61009bccbcb08de:0a
5j3=:tr:THdZ2aSCGX8CpbxyNyfhpK3mX44LkbEXnc:0/1/0:v0:50
<j:=:TRON.USDT:THdZ2aSCGX8CpbxyNyfhpK3mX44LkbEXnc:0/1/0:v0:50
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
FjDOUT:F50891525E4385207E1B51317890E42060EB191809D856EB8477D1FC81508B47
FjDOUT:7F9B59DC1555409D02A7C0E622BBD7C003F75656CBD29E17929943CBB1CF4257
FjDOUT:5C3FE27A2E12470C03A51FB61B7562115D98372D60413147E6E1B8C210235652
FjDOUT:5CE048C49F335B762117F9758A1887213AE99A927D5A7A2412F213AC15D88447
6j4PKF:to:USDT(TRON):TVmgS9LSDZaPDHHekS9ZP1srCh4EFqZbQz
=j;UUA:to:USDT(BSC):0xad4baD83f3C7DE5511542F1DF714D9EAaafc4545
<j:=:e:0x8E6038fc2C6Cf015f6B520E57033438d0b6F22D0:0/1/1:ej:75
6j4Ayp:to:USDT(TRON):TXC7ZBMdyzW9pTAR55SKE8pGX4SZfReSLX
<j:6xI:to:TWT(BSC):0xc0015De74C36b322DAa284aeDfe783E0C2AA78a3
PjLMdA0:to:SUI:0xbb010df41e936c2cf23dcca804c4588c3eb18c9e3161c43f50928035bf114566)"
OjLL0x88c8d3dacfea518b2904330990f3c4cc46ce2152b775166aa3096107d256b287=|lifi
F{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"11305773825"}h!
F{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"11305773825"}h!
F{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"11305773825"}h!
F{"p":"tap","op":"token-transfer","tick":"DMT-NAT","amt":"11305773825"}h!
DjB0x27d3bbc0de519880025f7efe7624db7c17999b9bb49072d5f2dc88c464a773f1
text/plain;charset=utf-8
F{"p":"brc-20","op":"transfer","tick":"sats","amt":"2963246453.172703"}h!
FjD=:s:0x7244360f1A49E266899D8AFb50664db3E2DDf9CD:882035/0/0:-_/t1:0/70
FjD=:e:0xc4669A70aDd8a6CCc02009724592AfC25444c3aE:394384/0/0:-_/t1:0/70
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"HOXRN","amt":"100"}h!
DjB0x2cd8ee284fee1510698d0ab7a767cb41006d31f0af3b51f8e5a8811b9e99edfb
DjB0x77c1332d4166e66875ad3db8e60433da77cbae6276f0877426c071f2fffef325
DjB0x959444ba84777cbac0c1589d7f38bbeffc203e9b97a44a62f57199cd243a61e1
DjB0x2ee8666e365b27427fd88e0779c2406078a9c639abe0c1b08ad0636f588c559d
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
DjB0xbb6d249971c8db9ea2f630df8e414ab523e10d09d7455a5d7d6ffc8b1544e877
/j-y9B:to:TRX:TCi9ou5YNnFjH5ACNEUk1pStdPLsKvRftx
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
IjGREFUND:EAF2918A3312A1EB785754060FE8F3132E528D566E2ABF0A97C83CBAB449A499
LjJM>|Mapo|0x09367deedd06d9bea89a1c8f0a5f21212d66c0607200cbcc33d11363156b3e98
/j-7bK:to:XRP:r9nvJBA1HEnZDZQJsLbV9pCpxbotm4cNMc
6j4Arg:to:USDT(TRON):TS9pw3CfZ97PkpXR6LthYZuq5D6iB5cVDk
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1542"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1546.52621"}h!
text/plain;charset=utf-8
B{"p":"brc-20","op":"transfer","tick":"pizza","amt":"1533.7298344"}h!
?j=HyJ:to:USDT(ERC20):0x963C08Dad049DD516D9389e8D5536De449CB9596
OjLL0xa2f9fed15c85f35bf7ca4697f070f5c4e91587798b1ed1083822221d450d51dd=|lifi
OjLL0xd27cad64f031e5605ff2b91e89dfb959f9c7ad89f6185382a24706604fbe4f8c=|lifi
OjLL0x23464c395ceb687ff7223cb995303c787d4ed877125d210f04e44aee0798a932=|lifi
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1067.56"}h!
QjLN=:BSC.USDT:0x8715164c3CdECd1564946f3be4c31eBC1fe72114:694457551/0/0:-_/t1:0/70
QjLN=:BSC.USDT:0xa22Ade2E585749753382c4EF206B04d1Ce7Deb57:186875322/0/0:-_/t1:0/70
EjC=:e:0xb598bEFb3caD6B8d250cc476E016fA281aA60258:67442/0/0:-_/t1:0/70x
GjE=:s:0x4b662a51c8fdCf9eE412aCc7A541c058885F9874:1306442/0/0:-_/t1:0/70
FjD=:e:0x0d49A1362aF81726A7c8be1ee09d0aeFc1fc23a5:231253/0/0:-_/t1:0/70y
DjB0xac00daef68140772d327892a235753a4ed52f7d3f538293ca8d44950ea3c81e0
DjB0x601933e4a0ebf390d64109c87e8774083471281413fe29f3bcd1e47ae6c9a0b5
DjB0xfb7ceb5eda6f54d6b68575e455f25d922fd34cdc98805687ddea31518aba236a
DjB0xd1d4696d22dbb8db149bfb096a8fb8d15c5f4eee903f4afd39092e2ec60bb795
DjB0xae2ee04ba442875818b4299b50bc67e8afdb7ca7f3dd70daa312502715ecccf9
DjB0x93b84abe7b320a060274ef4b6399ff3fb8fdaf959f4562a8d10ad73d5b293a52
/ViaBTC/Mined by shtrafsam/,
IjG=:s:0xd33E070A54B01e0BE5006A283a3c8BFF926A154D:2309296/1/0:-_/bgw:15/30F
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"3000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"130"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"3000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"99995"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"50529"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AP18","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"70"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AP18","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ctdl","amt":"15"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"199"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
2j0to:USDT(TRON):TFxH1wMYBVfNenRf33e7VEhu1bStKRjtYAB'
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"5000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1003"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Fila","amt":"6972"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"15"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"5500000000"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"888888888888"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Mt5e","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"5000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Fila","amt":"6972"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm","amt":"100"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"20000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"23000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"HUHU","amt":"16000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"Melar","amt":"72964792"}h!
text/plain;charset=utf-8
={"p":"brc-20","op":"transfer","tick":"AICLO","amt":"1152970"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"
","amt":"475222222228"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1006"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"19800000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":" OCN","amt":"1000000"}h!
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"
","amt":"300000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"2400"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"zeusv","amt":"307"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AP18","amt":"100"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3681522118"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AP18","amt":"100"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"10"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"zeusv","amt":"307"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"10000000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"AP18","amt":"100"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"BCLD","amt":"3000521521"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"Zeusv","amt":"300"}h!
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"DIOR","amt":"3000000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"3600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"3000"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"BIUR","amt":"133000"}h!
FjDOUT:0FDB10BE10E0B33D186A5CD3D80CD8AC75BD6DF8C95E86E3DF6CF3EC9F01BE90
PjLM=:BSC.TWT:0x0d49A1362aF81726A7c8be1ee09d0aeFc1fc23a5:638551976/0/0:-_/t1:0/70
2j0to:USDT(TRON):TXh9jwW7HKXqx4vH8Gj15ZtV7Ad3nD4UZW
G{"p":"tap","op":"token-transfer","tick":"dmt-bit","amt":"443968787201"}hA
SODA #14 - Drawn Sep 25, 2025
dnamehSODA #14edrawnlSep 25, 2025dseedhpassoverhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
FjDOUT:CB79A3B947D93AC96CF1CBF4A53B431DEE50D82D4842699ADA260B9FC13F8BF1
OjLL0xe3528d72b6ba28efab9bb0105767f15c2ac82fea7575d423536ac387b6ddb63c=|lifiM&[L
DjB0x1391560e37f0b5ef1f2c3f9f147dea89ca326614af0fbfcd2ccd55bea030c71f
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"40"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ustm ","amt":"30"}h!
SODA #15 - Drawn Sep 25, 2025
dnamehSODA #15edrawnlSep 25, 2025dseedpbabylon - ishtarhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
i| MARA Made in USA
DjB0xd1f9ee487b5a8360ce102292558b8440e0a86a7aac523d6f0b39aac2cd70846a
DjB0x72e5a6c81a02a08ba8a7eb2021d18718dce0a7ca1244389712fb88848a63415a
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
<{"p":"brc-20","op":"transfer","tick":"ordi","amt":"1067.56"}h!
text/plain;charset=utf-8
A{"p":"brc-20","op":"transfer","tick":"ordi","amt":"146.42595951"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","amt":"39.73271019","tick":"ordi"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"73985352835"}h!
6j48N3:to:USDT(TRON):TAWjnT8LXUiLFGCuvB4GRnnGHw4au3ZWVp
?j=h2s:to:USDT(ERC20):0x14b3B3C5a499eC1E3dFFa2F95fcA25F1F3F3d0c3
OjLL0xc5954474c89eb2d6de4816d4eaed498777a8498aca10503f321d57ed5c05b9a3=|lifi
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
FjDOUT:D5240507E57FA2927FBEAA441FC757E2CE69F4C9A60DE5AB4D54A1C647599E3C
CjA=:ETH.USDT:0x65583c279183d5B30e2Bf914f98d0fEd1a64A222:0/1/0:v0:50
IjGREFUND:CEE7B9466DDE12BDB512C303D5E89AFA8A3B3BB427699D04EEB523934AF1F297
FjDOUT:4768E5B50616E1848F69D8912722EE68068A7A9CEEC160A6F340296FC20E48D9
9j7to:USDT(POL):0xC95d2995b211D01e5C84265b8A0fe588cefc98d2
EjC=:e:0xb598bEFb3caD6B8d250cc476E016fA281aA60258:35804/0/0:-_/t1:0/70
FjDOUT:C5E0D76837DE4615A4FF23596994C5A14C0837DB53C4D0FA780D50E67059851A
6j4ZlF:to:USDT(TRON):THaozWMoeBLe6rnKKobGsibohYG9ojADurN
text/plain;charset=utf-8
{"p":"brc20-prog","op":"c","c":"0x3e6E167F074d3C9a35F06F6Ccce6D1d76438Ba5F","d":"0xd1058e59"} M
M
M
>j<from:460USDT(BSC):0x20Df95Ae97540e26611d8DD713587C0B20B5adBb
6j4Lyo:to:USDT(TRON):TXTTPH6BoRQ2BtKGAfUqqGZhZ55QYkNEreB
8j6hbW:to:USDC:0x63Aa66ae1a566e92F1Aa5f474ae086C6708CACB6
>j<from:472USDT(BSC):0xd3f96425c05f6c5eD80D3b4c4c9E1976627BB33dT
=j;Ld0:to:USDC(BSC):0x726c3217cF560f13A19f0190B4ffc962cA13E745ym
=j;bYm:to:TON:UQCLe6MkkW1u_I5Wcezsj6YLTYQGvIayZwVN7y2nFaBlnFtG
?j=L3K:to:USDT(ERC20):0xb1179AC819bAB752559fda5b008768b26111F12dA
?j=1R3:to:USDT(ERC20):0xdF7774Bc29786843c442e5114BcCF8c50b02a398
OjLL0x769a7a4989ab828fa8a79cbfb8865277723905b17dc22a5567feb97d9323e08d=|lifiq
OjLL0x6488fc5e034515b4e1d898c00bd0352ec4ae3a94a85a920ba0900664fa24cac1=|lifi
@j>=:e:0xDBFc6fFf4d70d95aE062114b2299D3bfA94AAeF4:0/1/0:zengo:200;
QjLN=:ETH.USDT:0x37e53d1Ab4dB12A67B0A4962c5BEF0F73c5a14e6:478526800/0/0:-_/t1:0/70
FjD=:e:0xCD7bEF78E1410145DC2C9c365ffd4f4b93c7623f:199159/0/0:-_/t1:0/70
QjLN=:BSC.USDT:0xC80DaF8812388394E7c5336BA2f61E7D57Ef2b4f:335454512/0/0:-_/t1:0/70
CjA=:tr:TA7EyqCnkicGprC9yrwFnSmwkwqR4MY39u:1542993000/0/0:-_/t1:0/70D
DjB0x95b224a5d989f2f2e4cb3f0411694866162741ed25328d73e8bc43dbd963063b
text/plain;charset=utf-8
>{"p":"brc-20","op":"transfer","tick":"pizza","amt":"95.88035"}h!
DjB0xf8d34aecd17fea98c7a00974a8c11ea80d3b03908d100d2d0390a0304007c0d7
DjB0x643ee905efa226bd0e27ff0e1327062b5a1ce68b3f1fee76ce9f31b882d4a4cd
DjB0x931df87bb6135da67d6d28e1ecc9125572e37bb07ee4081dee3d12de969e902c
DjB0x579613e82b9d9368df8fbf622cfb9a719daed892ac5a7df0da486b4a8c82fd55
DjB0x26bd7d75e2059eaee3fa1eb43e47d496b55f32fba3e49f1f3ab933f6c136cfa0
DjB0xfddef5674d651ed1ac383f7807f78fde9bd4301b9d28c0fd478247f5fab88fdf
DjB0x8a39ed14f6c914edf1fa26647b9804d5c9502b92586d7fd235394d2dca0a6c54
DjB0x5107c8c6c4057f34517b404d32b1d5d097c2a87f2b6433a071c94512c47501b3
DjB0xe41b74b34671ceb34c31f5268fe0c48b1ae9a7b6cbe109638279fc3d1434e1c5
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"18"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"fifa","amt":"56"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"20"}h!
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":" OCN","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"99"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"25"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
9j7to:USDC(BSC):0xf615Eba8c1661467b9B7FB1e19804c64Dd1929BE
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"20"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"15"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"15000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"HORS1","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"DNAQ","amt":"0.2"}h!
DjB0x83ded4d4f37f2e498e0b0d66aa4a42e1764e877e66abad597704d4f86cdf7258s
text/plain;charset=utf-8
7{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"20"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"FF1E","amt":"200"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"15"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"6280000000"}h!
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"
","amt":"13275862069"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"30"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"18"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"1000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"ATMC","amt":"14.5"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"ff1e","amt":"100"}h!
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"16"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
3j1to:ETH:0xAA7a4f971e0479882BB631651dcDf6D1298150B6
DjB0x925343a7ae7f7979b05e5d6c29b74c1158b891a9c66d7bc1d39687e8090b8d04
text/plain;charset=utf-8
8{"p":"brc-20","op":"transfer","tick":"USTM ","amt":"20"}h!
SODA #16 - Drawn Sep 25, 2025
dnamehSODA #16edrawnlSep 25, 2025dseedkhexadecimalhsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
i/Foundry USA Pool #dropgold/
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"$-:)","amt":"7980"}h!
i/Foundry USA Pool #dropgold/
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"DEFAI","amt":10010J
FjDOUT:AD01E23BB8515507309164091AD1C05A1F5135D61A7FF61091EB6C6C42649247
FjDOUT:A55A7BE823E7442E227229BEEAA04AB1837017290A421E532F9ABD57EDD1B2C3
FjDOUT:CAE85D1F1420D3B3C71DD519786BC9A752ED29C483D99976C197256431DD7D63
FjDOUT:2FB8407B5C58B0CD4625A5FFB42D0962FCBE135801CDFE6382647EEE48545D83
FjDOUT:FCD22BB2BFFBB1870F1C975BF3D113FA678C0411B973F01324DB597D6E871DBF
FjDOUT:78C5DF7805AF558FFB2A6659A7505C94EAD590DB3CE07278453EAA19C60CCEE9
FjDOUT:3CB58B08451BFD7089A80C4B17C25C14CA721B8F9FB0F13293A4AAF46453C353
FjDOUT:11E8777E3F2991D134E684BF87C735DF1DCE83EEE1B48FFF314B4772521F38C1
FjDOUT:22CDCE0635F47D72FB773D7806A2750B405067381A9DC913965B9BBDF29AB6B5
text/plain;charset=utf-8
{"p":"tap","op":"token-auth","sig":{"v":"1","r":"106547269551101812120111029451848358483121076040732612246296411720127899468254","s":"57593252915500591365666449088183198826967642717911377195432930069763584627975"},"hash":"b18933b0c441259ace4ce52c56664b0c8d685f3cfd0332b9f2f12039f060bdaf","salt":"10175997432573920611121254563605","auth":[]}h!
@stamp:{"p":"src-20","op":"tranJ
sfer","tick":"ORDIX","amt":10002J
text/plain;charset=utf-8
;{"p":"brc-20","op":"transfer","tick":"ordi","amt":"822.55"}h!
FjDOUT:03562DFD1831E7F93748D4478FB3AC7B603CBB7AAADF3807603A8BE792132023
FjDOUT:FF21E90CED8915FD5F185DF3AD5B07EAABBB4996432C761C1B3A574DEAD93F0B
Aj?PCc:to:PIPPIN(SOL):5NgC8XTcJEM8jvm5jNFQEPcBT1yM1DqM6zG37migLrWeC
?j=BSv:to:USDT(ERC20):0xeacAe1281686F42666F630E64Fac1b32d791969EB
6j4yrQ:to:USDT(TRON):TDrmUrPigz3KmRKcrgbRvRK11RX9m7bHEf\
6j42bj:to:USDT(TRON):TVLgGpMyFxde1CA3NFeYsAsMzPVni1KD5XG
<j:zBv:to:BNB(BSC):0xA9080C685e36DE3C6954377ce2f0173c1b4e8871H
<j:svw:to:TWT(BSC):0xc0015De74C36b322DAa284aeDfe783E0C2AA78a3)H
=j;oIA:to:USDT(BSC):0x8715164c3CdECd1564946f3be4c31eBC1fe72114RX
?j=WEU:to:USDT(ERC20):0xb1179AC819bAB752559fda5b008768b26111F12d
OjLL0xc075e49feb32a1ce9513aecf8c0f6a5e4a2e9ce31cd2967ed5ddaab6946c3b57=|lifi
OjLL0x687c7dab688adf05fd563c9360664cb0ec238ce8b71bf349ab73c57519fe7ae7=|lifi9
OjLL0x02c6131198f3a090e2a2f586757ebfa309063051302070e40a9edf5dd8c07759=|lifi
OjLL0x6db927685915369634bfab965f4f2db38ad4fee31fa6584c736f29a54366d150=|lifiQ
OjLL0x40c497704981aca5e39adc514642e6b4a3443957211b46ce2cbc825b14f137cb=|lifi
OjLL0x628ab9aaaabf9a333fa2aa212ec47b20c2b6228bbbc0d9f0be548f9244674955=|lifi
OjLL0x2d5e4f80075fee1697536484f8ad8d6c2ca076993fd515f9639f930a42371458=|lifi
text/plain;charset=utf-8
@{"p":"brc-20","op":"transfer","tick":"sats","amt":"73985352835"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"36P9","amt":"45945"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"ORDI","amt":"30000"}h!
DjB0xdf383339a98054ca741000b6a95a2b5808d487f1304d790b55cfff0f2a87b484
DjB0xedf65472c86f37fc910bba09ee8b44772699dd57205c1c138853443a59d1625a
DjB0xc578a96d7c81046a183e9da79b204ab97125e7f58120bf2b5303e80f9f7aed64
DjB0xf2fbd028ff67e35d4763504a1341696f2f5f04700a4ba0ac41fe200dab819426
DjB0x4ec00958de37b22309899bce961708038f28e95bf0b93043a6ad71f8a23eadc6
7{"p":"brc-20","op":"transfer","tick":"ordi","amt":"10"}h!
{"p":"brc20-prog","op":"c","c":"0x938117c2a6d1d9c22491467c33850fdaa497d5a6","b":"AQlep7P/DGKHm7PdlJxM8G9xv3woHc8k0WPn/wL/Av8C/wL/Av8C/wL/Av8C/wL/Av8C/wL/Av8C/wI"}h!
{"p":"brc20-prog","op":"c","c":"0x62879BB3dD949c4CF06f71BF7c281DcF24D163e7","b":"AfZoFej/DJOBF8Km0dnCJJFGfDOFD9qkl9Wm/x8W/xiKxyMEiej/IeD/H1z/HgL/HwKg/x4B/xL36d+VQhgCr0Qg5ahUvHQ6RgYczNAMNAIYcDyQbRDHDA/IOu95qgaWW1EFojggqf8QBCZSvmyUsE9qqF8aWQsUWjIAR92FoFpRJ7uE7rP1y/xpHzoLim6v5W7Z5YRhDrRt/xANPzxAzMqT6zrnesnCn/2XVkaeHyNdnenS/Y951zyMDxiDzpNj/LlAG3ahhpPrDKr/EAglCxIUIxqBT9LUmQkCNaFZxQGkcy1vsZNGqMJejUkyZlHSQpWzi2nFlFLCr9p2Hf8fgP8QEHsvKFek9nPAu5xM9Xq8H4qmVItSUzVIfy9ysaD/AYQXHSk352BsGOty8isak3bPpv8QFrzQ8LXTrYF9vg+u5ilB9JTVOatL
BikHXc8KmUxbk8CSanTdZzpVMPeSaIphduL7O/x9BszDA44QzjIs7byk2/J/FAl6bduceUS3wTlZdhN9xjfZkJege/wHQyjhMqNRs5PEbS4Y8BA/VCiV8oqBOu/TSAZ4b/x8"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"pizza","amt":"100"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"9000000000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"7000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"aoas","amt":"2000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"36P9","amt":"3000"}h!
text/plain;charset=utf-8
?{"p":"brc-20","op":"transfer","tick":"
","amt":"9000000000"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
text/plain;charset=utf-8
:{"p":"brc-20","op":"transfer","tick":"USTM","amt":"73540"}h!
text/plain;charset=utf-8
9{"p":"brc-20","op":"transfer","tick":"CWL ","amt":"600"}h!
SODA #17 - Drawn Sep 25, 2025
dnamehSODA #17edrawnlSep 25, 2025dseedndrive at nighthsoftwarex2Aseprite v1.3.13 - MacBook Air M4 - Standard Mouse
blk00000.txt blk00001.txt blk00002.txt blk00003.txt blk00004.txt blk00005.txt blk00006.txt blk00007.txt blk00008.txt blk00009.txt blk00010.txt blk00011.txt blk00012.txt blk00013.txt blk00014.txt blk00015.txt blk00016.txt blk00017.txt blk00018.txt blk00019.txt blk00020.txt blk00021.txt blk00022.txt blk00023.txt blk00024.txt blk00025.txt blk00026.txt blk00027.txt blk00028.txt blk00029.txt blk00030.txt blk00031.txt blk00032.txt blk00033.txt blk00034.txt blk00035.txt blk00036.txt blk00037.txt blk00038.txt blk00039.txt blk00040.txt blk00041.txt blk00042.txt blk00043.txt blk00044.txt blk00045.txt blk00046.txt blk00047.txt blk00048.txt blk00049.txt blk00050.txt blk00051.txt blk00052.txt blk00053.txt blk00054.txt blk00055.txt blk00056.txt blk00057.txt blk00058.txt blk00059.txt blk00060.txt blk00061.txt blk00062.txt blk00063.txt blk00064.txt blk00065.txt blk00066.txt blk00067.txt blk00068.txt blk00069.txt blk00070.txt blk00071.txt blk00072.txt blk00073.txt blk00074.txt blk00075.txt blk00076.txt blk00077.txt blk00078.txt blk00079.txt blk00080.txt blk00081.txt blk00082.txt blk00083.txt blk00084.txt blk00085.txt blk00086.txt blk00087.txt blk00088.txt blk00089.txt blk00090.txt blk00091.txt blk00092.txt blk00093.txt blk00094.txt blk00095.txt blk00096.txt blk00097.txt blk00098.txt blk00099.txt blk00100.txt blk00101.txt blk00102.txt blk00103.txt blk00104.txt blk00105.txt blk00106.txt blk00107.txt blk00108.txt blk00109.txt blk00110.txt blk00111.txt blk00112.txt blk00113.txt blk00114.txt blk00115.txt blk00116.txt blk00117.txt blk00118.txt blk00119.txt blk00120.txt blk00121.txt blk00122.txt blk00123.txt blk00124.txt blk00125.txt blk00126.txt blk00127.txt blk00128.txt blk00129.txt blk00130.txt blk00131.txt blk00132.txt blk00133.txt blk00134.txt blk00135.txt blk00136.txt blk00137.txt blk00138.txt blk00139.txt blk00140.txt blk00141.txt blk00142.txt blk00143.txt blk00144.txt blk00145.txt blk00146.txt blk00147.txt blk00148.txt blk00149.txt blk00150.txt blk00151.txt blk00152.txt blk00153.txt blk00154.txt blk00155.txt blk00156.txt blk00157.txt blk00158.txt blk00159.txt blk00160.txt blk00161.txt blk00162.txt blk00163.txt blk00164.txt blk00165.txt blk00166.txt blk00167.txt blk00168.txt blk00169.txt blk00170.txt blk00171.txt blk00172.txt blk00173.txt blk00174.txt blk00175.txt blk00176.txt blk00177.txt blk00178.txt blk00179.txt blk00180.txt blk00181.txt blk00182.txt blk00183.txt blk00184.txt blk00185.txt blk00186.txt blk00187.txt blk00188.txt blk00189.txt blk00190.txt blk00191.txt blk00192.txt blk00193.txt blk00194.txt blk00195.txt blk00196.txt blk00197.txt blk00198.txt blk00199.txt blk00200.txt blk00201.txt blk00202.txt blk00203.txt blk00204.txt blk00205.txt blk00206.txt blk00207.txt blk00208.txt blk00209.txt blk00210.txt blk00211.txt blk00212.txt blk00213.txt blk00214.txt blk00215.txt blk00216.txt blk00217.txt blk00218.txt blk00219.txt blk00220.txt blk00221.txt blk00222.txt blk00223.txt blk00224.txt blk00225.txt blk00226.txt blk00227.txt blk00228.txt blk00229.txt blk00230.txt blk00231.txt blk00232.txt blk00233.txt blk00234.txt blk00235.txt blk00236.txt blk00237.txt blk00238.txt blk00239.txt blk00240.txt blk00241.txt blk00242.txt blk00243.txt blk00244.txt blk00245.txt blk00246.txt blk00247.txt blk00248.txt blk00249.txt blk00250.txt blk00251.txt blk00252.txt blk00253.txt blk00254.txt blk00255.txt blk00256.txt blk00257.txt blk00258.txt blk00259.txt blk00260.txt blk00261.txt blk00262.txt blk00263.txt blk00264.txt blk00265.txt blk00266.txt blk00267.txt blk00268.txt blk00269.txt blk00270.txt blk00271.txt blk00272.txt blk00273.txt blk00274.txt blk00275.txt blk00276.txt blk00277.txt blk00278.txt blk00279.txt blk00280.txt blk00281.txt blk00282.txt blk00283.txt blk00284.txt blk00285.txt blk00286.txt blk00287.txt blk00288.txt blk00289.txt blk00290.txt blk00291.txt blk00292.txt blk00293.txt blk00294.txt blk00295.txt blk00296.txt blk00297.txt blk00298.txt blk00299.txt blk00300.txt blk00301.txt blk00302.txt blk00303.txt blk00304.txt blk00305.txt blk00306.txt blk00307.txt blk00308.txt blk00309.txt blk00310.txt blk00311.txt blk00312.txt blk00313.txt blk00314.txt blk00315.txt blk00316.txt blk00317.txt blk00318.txt blk00319.txt blk00320.txt blk00321.txt blk00322.txt blk00323.txt blk00324.txt blk00325.txt blk00326.txt blk00327.txt blk00328.txt blk00329.txt blk00330.txt blk00331.txt blk00332.txt blk00333.txt blk00334.txt blk00335.txt blk00336.txt blk00337.txt blk00338.txt blk00339.txt blk00340.txt blk00341.txt blk00342.txt blk00343.txt blk00344.txt blk00345.txt blk00346.txt blk00347.txt blk00348.txt blk00349.txt blk00350.txt blk00351.txt blk00352.txt blk00353.txt blk00354.txt blk00355.txt blk00356.txt blk00357.txt blk00358.txt blk00359.txt blk00360.txt blk00361.txt blk00362.txt blk00363.txt blk00364.txt blk00365.txt blk00366.txt blk00367.txt blk00368.txt blk00369.txt blk00370.txt blk00371.txt blk00372.txt blk00373.txt blk00374.txt blk00375.txt blk00376.txt blk00377.txt blk00378.txt blk00379.txt blk00380.txt blk00381.txt blk00382.txt blk00383.txt blk00384.txt blk00385.txt blk00386.txt blk00387.txt blk00388.txt blk00389.txt blk00390.txt blk00391.txt blk00392.txt blk00393.txt blk00394.txt blk00395.txt blk00396.txt blk00397.txt blk00398.txt blk00399.txt blk00400.txt blk00401.txt blk00402.txt blk00403.txt blk00404.txt blk00405.txt blk00406.txt blk00407.txt blk00408.txt blk00409.txt blk00410.txt blk00411.txt blk00412.txt blk00413.txt blk00414.txt blk00415.txt blk00416.txt blk00417.txt blk00418.txt blk00419.txt blk00420.txt blk00421.txt blk00422.txt blk00423.txt blk00424.txt blk00425.txt blk00426.txt blk00427.txt blk00428.txt blk00429.txt blk00430.txt blk00431.txt blk00432.txt blk00433.txt blk00434.txt blk00435.txt blk00436.txt blk00437.txt blk00438.txt blk00439.txt blk00440.txt blk00441.txt blk00442.txt blk00443.txt blk00444.txt blk00445.txt blk00446.txt blk00447.txt blk00448.txt blk00449.txt blk00450.txt blk00451.txt blk00452.txt blk00453.txt blk00454.txt blk00455.txt blk00456.txt blk00457.txt blk00458.txt blk00459.txt blk00460.txt blk00461.txt blk00462.txt blk00463.txt blk00464.txt blk00465.txt blk00466.txt blk00467.txt blk00468.txt blk00469.txt blk00470.txt blk00471.txt blk00472.txt blk00473.txt blk00474.txt blk00475.txt blk00476.txt blk00477.txt blk00478.txt blk00479.txt blk00480.txt blk00481.txt blk00482.txt blk00483.txt blk00484.txt blk00485.txt blk00486.txt blk00487.txt blk00488.txt blk00489.txt blk00490.txt blk00491.txt blk00492.txt blk00493.txt blk00494.txt blk00495.txt blk00496.txt blk00497.txt blk00498.txt blk00499.txt blk00500.txt blk00501.txt blk00502.txt blk00503.txt blk00504.txt blk00505.txt blk00506.txt blk00507.txt blk00508.txt blk00509.txt blk00510.txt blk00511.txt blk00512.txt blk00513.txt blk00514.txt blk00515.txt blk00516.txt blk00517.txt blk00518.txt blk00519.txt blk00520.txt blk00521.txt blk00522.txt blk00523.txt blk00524.txt blk00525.txt blk00526.txt blk00527.txt blk00528.txt blk00529.txt blk00530.txt blk00531.txt blk00532.txt blk00533.txt blk00534.txt blk00535.txt blk00536.txt blk00537.txt blk00538.txt blk00539.txt blk00540.txt blk00541.txt blk00542.txt blk00543.txt blk00544.txt blk00545.txt blk00546.txt blk00547.txt blk00548.txt blk00549.txt blk00550.txt blk00551.txt blk00552.txt blk00553.txt blk00554.txt blk00555.txt blk00556.txt blk00557.txt blk00558.txt blk00559.txt blk00560.txt blk00561.txt blk00562.txt blk00563.txt blk00564.txt blk00565.txt blk00566.txt blk00567.txt blk00568.txt blk00569.txt blk00570.txt blk00571.txt blk00572.txt blk00573.txt blk00574.txt blk00575.txt blk00576.txt blk00577.txt blk00578.txt blk00579.txt blk00580.txt blk00581.txt blk00582.txt blk00583.txt blk00584.txt blk00585.txt blk00586.txt blk00587.txt blk00588.txt blk00589.txt blk00590.txt blk00591.txt blk00592.txt blk00593.txt blk00594.txt blk00595.txt blk00596.txt blk00597.txt blk00598.txt blk00599.txt blk00600.txt blk00601.txt blk00602.txt blk00603.txt blk00604.txt blk00605.txt blk00606.txt blk00607.txt blk00608.txt blk00609.txt blk00610.txt blk00611.txt blk00612.txt blk00613.txt blk00614.txt blk00615.txt blk00616.txt blk00617.txt blk00618.txt blk00619.txt blk00620.txt blk00621.txt blk00622.txt blk00623.txt blk00624.txt blk00625.txt blk00626.txt blk00627.txt blk00628.txt blk00629.txt blk00630.txt blk00631.txt blk00632.txt blk00633.txt blk00634.txt blk00635.txt blk00636.txt blk00637.txt blk00638.txt blk00639.txt blk00640.txt blk00641.txt blk00642.txt blk00643.txt blk00644.txt blk00645.txt blk00646.txt blk00647.txt blk00648.txt blk00649.txt blk00650.txt blk00651.txt blk00652.txt blk00653.txt blk00654.txt blk00655.txt blk00656.txt blk00657.txt blk00658.txt blk00659.txt blk00660.txt blk00661.txt blk00662.txt blk00663.txt blk00664.txt blk00665.txt blk00666.txt blk00667.txt blk00668.txt blk00669.txt blk00670.txt blk00671.txt blk00672.txt blk00673.txt blk00674.txt blk00675.txt blk00676.txt blk00677.txt blk00678.txt blk00679.txt blk00680.txt blk00681.txt blk00682.txt blk00683.txt blk00684.txt blk00685.txt blk00686.txt blk00687.txt blk00688.txt blk00689.txt blk00690.txt blk00691.txt blk00692.txt blk00693.txt blk00694.txt blk00695.txt blk00696.txt blk00697.txt blk00698.txt blk00699.txt blk00700.txt blk00701.txt blk00702.txt blk00703.txt blk00704.txt blk00705.txt blk00706.txt blk00707.txt blk00708.txt blk00709.txt blk00710.txt blk00711.txt blk00712.txt blk00713.txt blk00714.txt blk00715.txt blk00716.txt blk00717.txt blk00718.txt blk00719.txt blk00720.txt blk00721.txt blk00722.txt blk00723.txt blk00724.txt blk00725.txt blk00726.txt blk00727.txt blk00728.txt blk00729.txt blk00730.txt blk00731.txt blk00732.txt blk00733.txt blk00734.txt blk00735.txt blk00736.txt blk00737.txt blk00738.txt blk00739.txt blk00740.txt blk00741.txt blk00742.txt blk00743.txt blk00744.txt blk00745.txt blk00746.txt blk00747.txt blk00748.txt blk00749.txt blk00750.txt blk00751.txt blk00752.txt blk00753.txt blk00754.txt blk00755.txt blk00756.txt blk00757.txt blk00758.txt blk00759.txt blk00760.txt blk00761.txt blk00762.txt blk00763.txt blk00764.txt blk00765.txt blk00766.txt blk00767.txt blk00768.txt blk00769.txt blk00770.txt blk00771.txt blk00772.txt blk00773.txt blk00774.txt blk00775.txt blk00776.txt blk00777.txt blk00778.txt blk00779.txt blk00780.txt blk00781.txt blk00782.txt blk00783.txt blk00784.txt blk00785.txt blk00786.txt blk00787.txt blk00788.txt blk00789.txt blk00790.txt blk00791.txt blk00792.txt blk00793.txt blk00794.txt blk00795.txt blk00796.txt blk00797.txt blk00798.txt blk00799.txt blk00800.txt blk00801.txt blk00802.txt blk00803.txt blk00804.txt blk00805.txt blk00806.txt blk00807.txt blk00808.txt blk00809.txt blk00810.txt blk00811.txt blk00812.txt blk00813.txt blk00814.txt blk00815.txt blk00816.txt blk00817.txt blk00818.txt blk00819.txt blk00820.txt blk00821.txt blk00822.txt blk00823.txt blk00824.txt blk00825.txt blk00826.txt blk00827.txt blk00828.txt blk00829.txt blk00830.txt blk00831.txt blk00832.txt blk00833.txt blk00834.txt blk00835.txt blk00836.txt blk00837.txt blk00838.txt blk00839.txt blk00840.txt blk00841.txt blk00842.txt blk00843.txt blk00844.txt blk00845.txt blk00846.txt blk00847.txt blk00848.txt blk00849.txt blk00850.txt blk00851.txt blk00852.txt blk00853.txt blk00854.txt blk00855.txt blk00856.txt blk00857.txt blk00858.txt blk00859.txt blk00860.txt blk00861.txt blk00862.txt blk00863.txt blk00864.txt blk00865.txt blk00866.txt blk00867.txt blk00868.txt blk00869.txt blk00870.txt blk00871.txt blk00872.txt blk00873.txt blk00874.txt blk00875.txt blk00876.txt blk00877.txt blk00878.txt blk00879.txt blk00880.txt blk00881.txt blk00882.txt blk00883.txt blk00884.txt blk00885.txt blk00886.txt blk00887.txt blk00888.txt blk00889.txt blk00890.txt blk00891.txt blk00892.txt blk00893.txt blk00894.txt blk00895.txt blk00896.txt blk00897.txt blk00898.txt blk00899.txt blk00900.txt blk00901.txt blk00902.txt blk00903.txt blk00904.txt blk00905.txt blk00906.txt blk00907.txt blk00908.txt blk00909.txt blk00910.txt blk00911.txt blk00912.txt blk00913.txt blk00914.txt blk00915.txt blk00916.txt blk00917.txt blk00918.txt blk00919.txt blk00920.txt blk00921.txt blk00922.txt blk00923.txt blk00924.txt blk00925.txt blk00926.txt blk00927.txt blk00928.txt blk00929.txt blk00930.txt blk00931.txt blk00932.txt blk00933.txt blk00934.txt blk00935.txt blk00936.txt blk00937.txt blk00938.txt blk00939.txt blk00940.txt blk00941.txt blk00942.txt blk00943.txt blk00944.txt blk00945.txt blk00946.txt blk00947.txt blk00948.txt blk00949.txt blk00950.txt blk00951.txt blk00952.txt blk00953.txt blk00954.txt blk00955.txt blk00956.txt blk00957.txt blk00958.txt blk00959.txt blk00960.txt blk00961.txt blk00962.txt blk00963.txt blk00964.txt blk00965.txt blk00966.txt blk00967.txt blk00968.txt blk00969.txt blk00970.txt blk00971.txt blk00972.txt blk00973.txt blk00974.txt blk00975.txt blk00976.txt blk00977.txt blk00978.txt blk00979.txt blk00980.txt blk00981.txt blk00982.txt blk00983.txt blk00984.txt blk00985.txt blk00986.txt blk00987.txt blk00988.txt blk00989.txt blk00990.txt blk00991.txt blk00992.txt blk00993.txt blk00994.txt blk00995.txt blk00996.txt blk00997.txt blk00998.txt blk00999.txt blk01000.txt blk01001.txt blk01002.txt blk01003.txt blk01004.txt blk01005.txt blk01006.txt blk01007.txt blk01008.txt blk01009.txt blk01010.txt blk01011.txt blk01012.txt blk01013.txt blk01014.txt blk01015.txt blk01016.txt blk01017.txt blk01018.txt blk01019.txt blk01020.txt blk01021.txt blk01022.txt blk01023.txt blk01024.txt blk01025.txt blk01026.txt blk01027.txt blk01028.txt blk01029.txt blk01030.txt blk01031.txt blk01032.txt blk01033.txt blk01034.txt blk01035.txt blk01036.txt blk01037.txt blk01038.txt blk01039.txt blk01040.txt blk01041.txt blk01042.txt blk01043.txt blk01044.txt blk01045.txt blk01046.txt blk01047.txt blk01048.txt blk01049.txt blk01050.txt blk01051.txt blk01052.txt blk01053.txt blk01054.txt blk01055.txt blk01056.txt blk01057.txt blk01058.txt blk01059.txt blk01060.txt blk01061.txt blk01062.txt blk01063.txt blk01064.txt blk01065.txt blk01066.txt blk01067.txt blk01068.txt blk01069.txt blk01070.txt blk01071.txt blk01072.txt blk01073.txt blk01074.txt blk01075.txt blk01076.txt blk01077.txt blk01078.txt blk01079.txt blk01080.txt blk01081.txt blk01082.txt blk01083.txt blk01084.txt blk01085.txt blk01086.txt blk01087.txt blk01088.txt blk01089.txt blk01090.txt blk01091.txt blk01092.txt blk01093.txt blk01094.txt blk01095.txt blk01096.txt blk01097.txt blk01098.txt blk01099.txt blk01100.txt blk01101.txt blk01102.txt blk01103.txt blk01104.txt blk01105.txt blk01106.txt blk01107.txt blk01108.txt blk01109.txt blk01110.txt blk01111.txt blk01112.txt blk01113.txt blk01114.txt blk01115.txt blk01116.txt blk01117.txt blk01118.txt blk01119.txt blk01120.txt blk01121.txt blk01122.txt blk01123.txt blk01124.txt blk01125.txt blk01126.txt blk01127.txt blk01128.txt blk01129.txt blk01130.txt blk01131.txt blk01132.txt blk01133.txt blk01134.txt blk01135.txt blk01136.txt blk01137.txt blk01138.txt blk01139.txt blk01140.txt blk01141.txt blk01142.txt blk01143.txt blk01144.txt blk01145.txt blk01146.txt blk01147.txt blk01148.txt blk01149.txt blk01150.txt blk01151.txt blk01152.txt blk01153.txt blk01154.txt blk01155.txt blk01156.txt blk01157.txt blk01158.txt blk01159.txt blk01160.txt blk01161.txt blk01162.txt blk01163.txt blk01164.txt blk01165.txt blk01166.txt blk01167.txt blk01168.txt blk01169.txt blk01170.txt blk01171.txt blk01172.txt blk01173.txt blk01174.txt blk01175.txt blk01176.txt blk01177.txt blk01178.txt blk01179.txt blk01180.txt blk01181.txt blk01182.txt blk01183.txt blk01184.txt blk01185.txt blk01186.txt blk01187.txt blk01188.txt blk01189.txt blk01190.txt blk01191.txt blk01192.txt blk01193.txt blk01194.txt blk01195.txt blk01196.txt blk01197.txt blk01198.txt blk01199.txt blk01200.txt blk01201.txt blk01202.txt blk01203.txt blk01204.txt blk01205.txt blk01206.txt blk01207.txt blk01208.txt blk01209.txt blk01210.txt blk01211.txt blk01212.txt blk01213.txt blk01214.txt blk01215.txt blk01216.txt blk01217.txt blk01218.txt blk01219.txt blk01220.txt blk01221.txt blk01222.txt blk01223.txt blk01224.txt blk01225.txt blk01226.txt blk01227.txt blk01228.txt blk01229.txt blk01230.txt blk01231.txt blk01232.txt blk01233.txt blk01234.txt blk01235.txt blk01236.txt blk01237.txt blk01238.txt blk01239.txt blk01240.txt blk01241.txt blk01242.txt blk01243.txt blk01244.txt blk01245.txt blk01246.txt blk01247.txt blk01248.txt blk01249.txt blk01250.txt blk01251.txt blk01252.txt blk01253.txt blk01254.txt blk01255.txt blk01256.txt blk01257.txt blk01258.txt blk01259.txt blk01260.txt blk01261.txt blk01262.txt blk01263.txt blk01264.txt blk01265.txt blk01266.txt blk01267.txt blk01268.txt blk01269.txt blk01270.txt blk01271.txt blk01272.txt blk01273.txt blk01274.txt blk01275.txt blk01276.txt blk01277.txt blk01278.txt blk01279.txt blk01280.txt blk01281.txt blk01282.txt blk01283.txt blk01284.txt blk01285.txt blk01286.txt blk01287.txt blk01288.txt blk01289.txt blk01290.txt blk01291.txt blk01292.txt blk01293.txt blk01294.txt blk01295.txt blk01296.txt blk01297.txt blk01298.txt blk01299.txt blk01300.txt blk01301.txt blk01302.txt blk01303.txt blk01304.txt blk01305.txt blk01306.txt blk01307.txt blk01308.txt blk01309.txt blk01310.txt blk01311.txt blk01312.txt blk01313.txt blk01314.txt blk01315.txt blk01316.txt blk01317.txt blk01318.txt blk01319.txt blk01320.txt blk01321.txt blk01322.txt blk01323.txt blk01324.txt blk01325.txt blk01326.txt blk01327.txt blk01328.txt blk01329.txt blk01330.txt blk01331.txt blk01332.txt blk01333.txt blk01334.txt blk01335.txt blk01336.txt blk01337.txt blk01338.txt blk01339.txt blk01340.txt blk01341.txt blk01342.txt blk01343.txt blk01344.txt blk01345.txt blk01346.txt blk01347.txt blk01348.txt blk01349.txt blk01350.txt blk01351.txt blk01352.txt blk01353.txt blk01354.txt blk01355.txt blk01356.txt blk01357.txt blk01358.txt blk01359.txt blk01360.txt blk01361.txt blk01362.txt blk01363.txt blk01364.txt blk01365.txt blk01366.txt blk01367.txt blk01368.txt blk01369.txt blk01370.txt blk01371.txt blk01372.txt blk01373.txt blk01374.txt blk01375.txt blk01376.txt blk01377.txt blk01378.txt blk01379.txt blk01380.txt blk01381.txt blk01382.txt blk01383.txt blk01384.txt blk01385.txt blk01386.txt blk01387.txt blk01388.txt blk01389.txt blk01390.txt blk01391.txt blk01392.txt blk01393.txt blk01394.txt blk01395.txt blk01396.txt blk01397.txt blk01398.txt blk01399.txt blk01400.txt blk01401.txt blk01402.txt blk01403.txt blk01404.txt blk01405.txt blk01406.txt blk01407.txt blk01408.txt blk01409.txt blk01410.txt blk01411.txt blk01412.txt blk01413.txt blk01414.txt blk01415.txt blk01416.txt blk01417.txt blk01418.txt blk01419.txt blk01420.txt blk01421.txt blk01422.txt blk01423.txt blk01424.txt blk01425.txt blk01426.txt blk01427.txt blk01428.txt blk01429.txt blk01430.txt blk01431.txt blk01432.txt blk01433.txt blk01434.txt blk01435.txt blk01436.txt blk01437.txt blk01438.txt blk01439.txt blk01440.txt blk01441.txt blk01442.txt blk01443.txt blk01444.txt blk01445.txt blk01446.txt blk01447.txt blk01448.txt blk01449.txt blk01450.txt blk01451.txt blk01452.txt blk01453.txt blk01454.txt blk01455.txt blk01456.txt blk01457.txt blk01458.txt blk01459.txt blk01460.txt blk01461.txt blk01462.txt blk01463.txt blk01464.txt blk01465.txt blk01466.txt blk01467.txt blk01468.txt blk01469.txt blk01470.txt blk01471.txt blk01472.txt blk01473.txt blk01474.txt blk01475.txt blk01476.txt blk01477.txt blk01478.txt blk01479.txt blk01480.txt blk01481.txt blk01482.txt blk01483.txt blk01484.txt blk01485.txt blk01486.txt blk01487.txt blk01488.txt blk01489.txt blk01490.txt blk01491.txt blk01492.txt blk01493.txt blk01494.txt blk01495.txt blk01496.txt blk01497.txt blk01498.txt blk01499.txt blk01500.txt blk01501.txt blk01502.txt blk01503.txt blk01504.txt blk01505.txt blk01506.txt blk01507.txt blk01508.txt blk01509.txt blk01510.txt blk01511.txt blk01512.txt blk01513.txt blk01514.txt blk01515.txt blk01516.txt blk01517.txt blk01518.txt blk01519.txt blk01520.txt blk01521.txt blk01522.txt blk01523.txt blk01524.txt blk01525.txt blk01526.txt blk01527.txt blk01528.txt blk01529.txt blk01530.txt blk01531.txt blk01532.txt blk01533.txt blk01534.txt blk01535.txt blk01536.txt blk01537.txt blk01538.txt blk01539.txt blk01540.txt blk01541.txt blk01542.txt blk01543.txt blk01544.txt blk01545.txt blk01546.txt blk01547.txt blk01548.txt blk01549.txt blk01550.txt blk01551.txt blk01552.txt blk01553.txt blk01554.txt blk01555.txt blk01556.txt blk01557.txt blk01558.txt blk01559.txt blk01560.txt blk01561.txt blk01562.txt blk01563.txt blk01564.txt blk01565.txt blk01566.txt blk01567.txt blk01568.txt blk01569.txt blk01570.txt blk01571.txt blk01572.txt blk01573.txt blk01574.txt blk01575.txt blk01576.txt blk01577.txt blk01578.txt blk01579.txt blk01580.txt blk01581.txt blk01582.txt blk01583.txt blk01584.txt blk01585.txt blk01586.txt blk01587.txt blk01588.txt blk01589.txt blk01590.txt blk01591.txt blk01592.txt blk01593.txt blk01594.txt blk01595.txt blk01596.txt blk01597.txt blk01598.txt blk01599.txt blk01600.txt blk01601.txt blk01602.txt blk01603.txt blk01604.txt blk01605.txt blk01606.txt blk01607.txt blk01608.txt blk01609.txt blk01610.txt blk01611.txt blk01612.txt blk01613.txt blk01614.txt blk01615.txt blk01616.txt blk01617.txt blk01618.txt blk01619.txt blk01620.txt blk01621.txt blk01622.txt blk01623.txt blk01624.txt blk01625.txt blk01626.txt blk01627.txt blk01628.txt blk01629.txt blk01630.txt blk01631.txt blk01632.txt blk01633.txt blk01634.txt blk01635.txt blk01636.txt blk01637.txt blk01638.txt blk01639.txt blk01640.txt blk01641.txt blk01642.txt blk01643.txt blk01644.txt blk01645.txt blk01646.txt blk01647.txt blk01648.txt blk01649.txt blk01650.txt blk01651.txt blk01652.txt blk01653.txt blk01654.txt blk01655.txt blk01656.txt blk01657.txt blk01658.txt blk01659.txt blk01660.txt blk01661.txt blk01662.txt blk01663.txt blk01664.txt blk01665.txt blk01666.txt blk01667.txt blk01668.txt blk01669.txt blk01670.txt blk01671.txt blk01672.txt blk01673.txt blk01674.txt blk01675.txt blk01676.txt blk01677.txt blk01678.txt blk01679.txt blk01680.txt blk01681.txt blk01682.txt blk01683.txt blk01684.txt blk01685.txt blk01686.txt blk01687.txt blk01688.txt blk01689.txt blk01690.txt blk01691.txt blk01692.txt blk01693.txt blk01694.txt blk01695.txt blk01696.txt blk01697.txt blk01698.txt blk01699.txt blk01700.txt blk01701.txt blk01702.txt blk01703.txt blk01704.txt blk01705.txt blk01706.txt blk01707.txt blk01708.txt blk01709.txt blk01710.txt blk01711.txt blk01712.txt blk01713.txt blk01714.txt blk01715.txt blk01716.txt blk01717.txt blk01718.txt blk01719.txt blk01720.txt blk01721.txt blk01722.txt blk01723.txt blk01724.txt blk01725.txt blk01726.txt blk01727.txt blk01728.txt blk01729.txt blk01730.txt blk01731.txt blk01732.txt blk01733.txt blk01734.txt blk01735.txt blk01736.txt blk01737.txt blk01738.txt blk01739.txt blk01740.txt blk01741.txt blk01742.txt blk01743.txt blk01744.txt blk01745.txt blk01746.txt blk01747.txt blk01748.txt blk01749.txt blk01750.txt blk01751.txt blk01752.txt blk01753.txt blk01754.txt blk01755.txt blk01756.txt blk01757.txt blk01758.txt blk01759.txt blk01760.txt blk01761.txt blk01762.txt blk01763.txt blk01764.txt blk01765.txt blk01766.txt blk01767.txt blk01768.txt blk01769.txt blk01770.txt blk01771.txt blk01772.txt blk01773.txt blk01774.txt blk01775.txt blk01776.txt blk01777.txt blk01778.txt blk01779.txt blk01780.txt blk01781.txt blk01782.txt blk01783.txt blk01784.txt blk01785.txt blk01786.txt blk01787.txt blk01788.txt blk01789.txt blk01790.txt blk01791.txt blk01792.txt blk01793.txt blk01794.txt blk01795.txt blk01796.txt blk01797.txt blk01798.txt blk01799.txt blk01800.txt blk01801.txt blk01802.txt blk01803.txt blk01804.txt blk01805.txt blk01806.txt blk01807.txt blk01808.txt blk01809.txt blk01810.txt blk01811.txt blk01812.txt blk01813.txt blk01814.txt blk01815.txt blk01816.txt blk01817.txt blk01818.txt blk01819.txt blk01820.txt blk01821.txt blk01822.txt blk01823.txt blk01824.txt blk01825.txt blk01826.txt blk01827.txt blk01828.txt blk01829.txt blk01830.txt blk01831.txt blk01832.txt blk01833.txt blk01834.txt blk01835.txt blk01836.txt blk01837.txt blk01838.txt blk01839.txt blk01840.txt blk01841.txt blk01842.txt blk01843.txt blk01844.txt blk01845.txt blk01846.txt blk01847.txt blk01848.txt blk01849.txt blk01850.txt blk01851.txt blk01852.txt blk01853.txt blk01854.txt blk01855.txt blk01856.txt blk01857.txt blk01858.txt blk01859.txt blk01860.txt blk01861.txt blk01862.txt blk01863.txt blk01864.txt blk01865.txt blk01866.txt blk01867.txt blk01868.txt blk01869.txt blk01870.txt blk01871.txt blk01872.txt blk01873.txt blk01874.txt blk01875.txt blk01876.txt blk01877.txt blk01878.txt blk01879.txt blk01880.txt blk01881.txt blk01882.txt blk01883.txt blk01884.txt blk01885.txt blk01886.txt blk01887.txt blk01888.txt blk01889.txt blk01890.txt blk01891.txt blk01892.txt blk01893.txt blk01894.txt blk01895.txt blk01896.txt blk01897.txt blk01898.txt blk01899.txt blk01900.txt blk01901.txt blk01902.txt blk01903.txt blk01904.txt blk01905.txt blk01906.txt blk01907.txt blk01908.txt blk01909.txt blk01910.txt blk01911.txt blk01912.txt blk01913.txt blk01914.txt blk01915.txt blk01916.txt blk01917.txt blk01918.txt blk01919.txt blk01920.txt blk01921.txt blk01922.txt blk01923.txt blk01924.txt blk01925.txt blk01926.txt blk01927.txt blk01928.txt blk01929.txt blk01930.txt blk01931.txt blk01932.txt blk01933.txt blk01934.txt blk01935.txt blk01936.txt blk01937.txt blk01938.txt blk01939.txt blk01940.txt blk01941.txt blk01942.txt blk01943.txt blk01944.txt blk01945.txt blk01946.txt blk01947.txt blk01948.txt blk01949.txt blk01950.txt blk01951.txt blk01952.txt blk01953.txt blk01954.txt blk01955.txt blk01956.txt blk01957.txt blk01958.txt blk01959.txt blk01960.txt blk01961.txt blk01962.txt blk01963.txt blk01964.txt blk01965.txt blk01966.txt blk01967.txt blk01968.txt blk01969.txt blk01970.txt blk01971.txt blk01972.txt blk01973.txt blk01974.txt blk01975.txt blk01976.txt blk01977.txt blk01978.txt blk01979.txt blk01980.txt blk01981.txt blk01982.txt blk01983.txt blk01984.txt blk01985.txt blk01986.txt blk01987.txt blk01988.txt blk01989.txt blk01990.txt blk01991.txt blk01992.txt blk01993.txt blk01994.txt blk01995.txt blk01996.txt blk01997.txt blk01998.txt blk01999.txt blk02000.txt blk02001.txt blk02002.txt blk02003.txt blk02004.txt blk02005.txt blk02006.txt blk02007.txt blk02008.txt blk02009.txt blk02010.txt blk02011.txt blk02012.txt blk02013.txt blk02014.txt blk02015.txt blk02016.txt blk02017.txt blk02018.txt blk02019.txt blk02020.txt blk02021.txt blk02022.txt blk02023.txt blk02024.txt blk02025.txt blk02026.txt blk02027.txt blk02028.txt blk02029.txt blk02030.txt blk02031.txt blk02032.txt blk02033.txt blk02034.txt blk02035.txt blk02036.txt blk02037.txt blk02038.txt blk02039.txt blk02040.txt blk02041.txt blk02042.txt blk02043.txt blk02044.txt blk02045.txt blk02046.txt blk02047.txt blk02048.txt blk02049.txt blk02050.txt blk02051.txt blk02052.txt blk02053.txt blk02054.txt blk02055.txt blk02056.txt blk02057.txt blk02058.txt blk02059.txt blk02060.txt blk02061.txt blk02062.txt blk02063.txt blk02064.txt blk02065.txt blk02066.txt blk02067.txt blk02068.txt blk02069.txt blk02070.txt blk02071.txt blk02072.txt blk02073.txt blk02074.txt blk02075.txt blk02076.txt blk02077.txt blk02078.txt blk02079.txt blk02080.txt blk02081.txt blk02082.txt blk02083.txt blk02084.txt blk02085.txt blk02086.txt blk02087.txt blk02088.txt blk02089.txt blk02090.txt blk02091.txt blk02092.txt blk02093.txt blk02094.txt blk02095.txt blk02096.txt blk02097.txt blk02098.txt blk02099.txt blk02100.txt blk02101.txt blk02102.txt blk02103.txt blk02104.txt blk02105.txt blk02106.txt blk02107.txt blk02108.txt blk02109.txt blk02110.txt blk02111.txt blk02112.txt blk02113.txt blk02114.txt blk02115.txt blk02116.txt blk02117.txt blk02118.txt blk02119.txt blk02120.txt blk02121.txt blk02122.txt blk02123.txt blk02124.txt blk02125.txt blk02126.txt blk02127.txt blk02128.txt blk02129.txt blk02130.txt blk02131.txt blk02132.txt blk02133.txt blk02134.txt blk02135.txt blk02136.txt blk02137.txt blk02138.txt blk02139.txt blk02140.txt blk02141.txt blk02142.txt blk02143.txt blk02144.txt blk02145.txt blk02146.txt blk02147.txt blk02148.txt blk02149.txt blk02150.txt blk02151.txt blk02152.txt blk02153.txt blk02154.txt blk02155.txt blk02156.txt blk02157.txt blk02158.txt blk02159.txt blk02160.txt blk02161.txt blk02162.txt blk02163.txt blk02164.txt blk02165.txt blk02166.txt blk02167.txt blk02168.txt blk02169.txt blk02170.txt blk02171.txt blk02172.txt blk02173.txt blk02174.txt blk02175.txt blk02176.txt blk02177.txt blk02178.txt blk02179.txt blk02180.txt blk02181.txt blk02182.txt blk02183.txt blk02184.txt blk02185.txt blk02186.txt blk02187.txt blk02188.txt blk02189.txt blk02190.txt blk02191.txt blk02192.txt blk02193.txt blk02194.txt blk02195.txt blk02196.txt blk02197.txt blk02198.txt blk02199.txt blk02200.txt blk02201.txt blk02202.txt blk02203.txt blk02204.txt blk02205.txt blk02206.txt blk02207.txt blk02208.txt blk02209.txt blk02210.txt blk02211.txt blk02212.txt blk02213.txt blk02214.txt blk02215.txt blk02216.txt blk02217.txt blk02218.txt blk02219.txt blk02220.txt blk02221.txt blk02222.txt blk02223.txt blk02224.txt blk02225.txt blk02226.txt blk02227.txt blk02228.txt blk02229.txt blk02230.txt blk02231.txt blk02232.txt blk02233.txt blk02234.txt blk02235.txt blk02236.txt blk02237.txt blk02238.txt blk02239.txt blk02240.txt blk02241.txt blk02242.txt blk02243.txt blk02244.txt blk02245.txt blk02246.txt blk02247.txt blk02248.txt blk02249.txt blk02250.txt blk02251.txt blk02252.txt blk02253.txt blk02254.txt blk02255.txt blk02256.txt blk02257.txt blk02258.txt blk02259.txt blk02260.txt blk02261.txt blk02262.txt blk02263.txt blk02264.txt blk02265.txt blk02266.txt blk02267.txt blk02268.txt blk02269.txt blk02270.txt blk02271.txt blk02272.txt blk02273.txt blk02274.txt blk02275.txt blk02276.txt blk02277.txt blk02278.txt blk02279.txt blk02280.txt blk02281.txt blk02282.txt blk02283.txt blk02284.txt blk02285.txt blk02286.txt blk02287.txt blk02288.txt blk02289.txt blk02290.txt blk02291.txt blk02292.txt blk02293.txt blk02294.txt blk02295.txt blk02296.txt blk02297.txt blk02298.txt blk02299.txt blk02300.txt blk02301.txt blk02302.txt blk02303.txt blk02304.txt blk02305.txt blk02306.txt blk02307.txt blk02308.txt blk02309.txt blk02310.txt blk02311.txt blk02312.txt blk02313.txt blk02314.txt blk02315.txt blk02316.txt blk02317.txt blk02318.txt blk02319.txt blk02320.txt blk02321.txt blk02322.txt blk02323.txt blk02324.txt blk02325.txt blk02326.txt blk02327.txt blk02328.txt blk02329.txt blk02330.txt blk02331.txt blk02332.txt blk02333.txt blk02334.txt blk02335.txt blk02336.txt blk02337.txt blk02338.txt blk02339.txt blk02340.txt blk02341.txt blk02342.txt blk02343.txt blk02344.txt blk02345.txt blk02346.txt blk02347.txt blk02348.txt blk02349.txt blk02350.txt blk02351.txt blk02352.txt blk02353.txt blk02354.txt blk02355.txt blk02356.txt blk02357.txt blk02358.txt blk02359.txt blk02360.txt blk02361.txt blk02362.txt blk02363.txt blk02364.txt blk02365.txt blk02366.txt blk02367.txt blk02368.txt blk02369.txt blk02370.txt blk02371.txt blk02372.txt blk02373.txt blk02374.txt blk02375.txt blk02376.txt blk02377.txt blk02378.txt blk02379.txt blk02380.txt blk02381.txt blk02382.txt blk02383.txt blk02384.txt blk02385.txt blk02386.txt blk02387.txt blk02388.txt blk02389.txt blk02390.txt blk02391.txt blk02392.txt blk02393.txt blk02394.txt blk02395.txt blk02396.txt blk02397.txt blk02398.txt blk02399.txt blk02400.txt blk02401.txt blk02402.txt blk02403.txt blk02404.txt blk02405.txt blk02406.txt blk02407.txt blk02408.txt blk02409.txt blk02410.txt blk02411.txt blk02412.txt blk02413.txt blk02414.txt blk02415.txt blk02416.txt blk02417.txt blk02418.txt blk02419.txt blk02420.txt blk02421.txt blk02422.txt blk02423.txt blk02424.txt blk02425.txt blk02426.txt blk02427.txt blk02428.txt blk02429.txt blk02430.txt blk02431.txt blk02432.txt blk02433.txt blk02434.txt blk02435.txt blk02436.txt blk02437.txt blk02438.txt blk02439.txt blk02440.txt blk02441.txt blk02442.txt blk02443.txt blk02444.txt blk02445.txt blk02446.txt blk02447.txt blk02448.txt blk02449.txt blk02450.txt blk02451.txt blk02452.txt blk02453.txt blk02454.txt blk02455.txt blk02456.txt blk02457.txt blk02458.txt blk02459.txt blk02460.txt blk02461.txt blk02462.txt blk02463.txt blk02464.txt blk02465.txt blk02466.txt blk02467.txt blk02468.txt blk02469.txt blk02470.txt blk02471.txt blk02472.txt blk02473.txt blk02474.txt blk02475.txt blk02476.txt blk02477.txt blk02478.txt blk02479.txt blk02480.txt blk02481.txt blk02482.txt blk02483.txt blk02484.txt blk02485.txt blk02486.txt blk02487.txt blk02488.txt blk02489.txt blk02490.txt blk02491.txt blk02492.txt blk02493.txt blk02494.txt blk02495.txt blk02496.txt blk02497.txt blk02498.txt blk02499.txt blk02500.txt blk02501.txt blk02502.txt blk02503.txt blk02504.txt blk02505.txt blk02506.txt blk02507.txt blk02508.txt blk02509.txt blk02510.txt blk02511.txt blk02512.txt blk02513.txt blk02514.txt blk02515.txt blk02516.txt blk02517.txt blk02518.txt blk02519.txt blk02520.txt blk02521.txt blk02522.txt blk02523.txt blk02524.txt blk02525.txt blk02526.txt blk02527.txt blk02528.txt blk02529.txt blk02530.txt blk02531.txt blk02532.txt blk02533.txt blk02534.txt blk02535.txt blk02536.txt blk02537.txt blk02538.txt blk02539.txt blk02540.txt blk02541.txt blk02542.txt blk02543.txt blk02544.txt blk02545.txt blk02546.txt blk02547.txt blk02548.txt blk02549.txt blk02550.txt blk02551.txt blk02552.txt blk02553.txt blk02554.txt blk02555.txt blk02556.txt blk02557.txt blk02558.txt blk02559.txt blk02560.txt blk02561.txt blk02562.txt blk02563.txt blk02564.txt blk02565.txt blk02566.txt blk02567.txt blk02568.txt blk02569.txt blk02570.txt blk02571.txt blk02572.txt blk02573.txt blk02574.txt blk02575.txt blk02576.txt blk02577.txt blk02578.txt blk02579.txt blk02580.txt blk02581.txt blk02582.txt blk02583.txt blk02584.txt blk02585.txt blk02586.txt blk02587.txt blk02588.txt blk02589.txt blk02590.txt blk02591.txt blk02592.txt blk02593.txt blk02594.txt blk02595.txt blk02596.txt blk02597.txt blk02598.txt blk02599.txt blk02600.txt blk02601.txt blk02602.txt blk02603.txt blk02604.txt blk02605.txt blk02606.txt blk02607.txt blk02608.txt blk02609.txt blk02610.txt blk02611.txt blk02612.txt blk02613.txt blk02614.txt blk02615.txt blk02616.txt blk02617.txt blk02618.txt blk02619.txt blk02620.txt blk02621.txt blk02622.txt blk02623.txt blk02624.txt blk02625.txt blk02626.txt blk02627.txt blk02628.txt blk02629.txt blk02630.txt blk02631.txt blk02632.txt blk02633.txt blk02634.txt blk02635.txt blk02636.txt blk02637.txt blk02638.txt blk02639.txt blk02640.txt blk02641.txt blk02642.txt blk02643.txt blk02644.txt blk02645.txt blk02646.txt blk02647.txt blk02648.txt blk02649.txt blk02650.txt blk02651.txt blk02652.txt blk02653.txt blk02654.txt blk02655.txt blk02656.txt blk02657.txt blk02658.txt blk02659.txt blk02660.txt blk02661.txt blk02662.txt blk02663.txt blk02664.txt blk02665.txt blk02666.txt blk02667.txt blk02668.txt blk02669.txt blk02670.txt blk02671.txt blk02672.txt blk02673.txt blk02674.txt blk02675.txt blk02676.txt blk02677.txt blk02678.txt blk02679.txt blk02680.txt blk02681.txt blk02682.txt blk02683.txt blk02684.txt blk02685.txt blk02686.txt blk02687.txt blk02688.txt blk02689.txt blk02690.txt blk02691.txt blk02692.txt blk02693.txt blk02694.txt blk02695.txt blk02696.txt blk02697.txt blk02698.txt blk02699.txt blk02700.txt blk02701.txt blk02702.txt blk02703.txt blk02704.txt blk02705.txt blk02706.txt blk02707.txt blk02708.txt blk02709.txt blk02710.txt blk02711.txt blk02712.txt blk02713.txt blk02714.txt blk02715.txt blk02716.txt blk02717.txt blk02718.txt blk02719.txt blk02720.txt blk02721.txt blk02722.txt blk02723.txt blk02724.txt blk02725.txt blk02726.txt blk02727.txt blk02728.txt blk02729.txt blk02730.txt blk02731.txt blk02732.txt blk02733.txt blk02734.txt blk02735.txt blk02736.txt blk02737.txt blk02738.txt blk02739.txt blk02740.txt blk02741.txt blk02742.txt blk02743.txt blk02744.txt blk02745.txt blk02746.txt blk02747.txt blk02748.txt blk02749.txt blk02750.txt blk02751.txt blk02752.txt blk02753.txt blk02754.txt blk02755.txt blk02756.txt blk02757.txt blk02758.txt blk02759.txt blk02760.txt blk02761.txt blk02762.txt blk02763.txt blk02764.txt blk02765.txt blk02766.txt blk02767.txt blk02768.txt blk02769.txt blk02770.txt blk02771.txt blk02772.txt blk02773.txt blk02774.txt blk02775.txt blk02776.txt blk02777.txt blk02778.txt blk02779.txt blk02780.txt blk02781.txt blk02782.txt blk02783.txt blk02784.txt blk02785.txt blk02786.txt blk02787.txt blk02788.txt blk02789.txt blk02790.txt blk02791.txt blk02792.txt blk02793.txt blk02794.txt blk02795.txt blk02796.txt blk02797.txt blk02798.txt blk02799.txt blk02800.txt blk02801.txt blk02802.txt blk02803.txt blk02804.txt blk02805.txt blk02806.txt blk02807.txt blk02808.txt blk02809.txt blk02810.txt blk02811.txt blk02812.txt blk02813.txt blk02814.txt blk02815.txt blk02816.txt blk02817.txt blk02818.txt blk02819.txt blk02820.txt blk02821.txt blk02822.txt blk02823.txt blk02824.txt blk02825.txt blk02826.txt blk02827.txt blk02828.txt blk02829.txt blk02830.txt blk02831.txt blk02832.txt blk02833.txt blk02834.txt blk02835.txt blk02836.txt blk02837.txt blk02838.txt blk02839.txt blk02840.txt blk02841.txt blk02842.txt blk02843.txt blk02844.txt blk02845.txt blk02846.txt blk02847.txt blk02848.txt blk02849.txt blk02850.txt blk02851.txt blk02852.txt blk02853.txt blk02854.txt blk02855.txt blk02856.txt blk02857.txt blk02858.txt blk02859.txt blk02860.txt blk02861.txt blk02862.txt blk02863.txt blk02864.txt blk02865.txt blk02866.txt blk02867.txt blk02868.txt blk02869.txt blk02870.txt blk02871.txt blk02872.txt blk02873.txt blk02874.txt blk02875.txt blk02876.txt blk02877.txt blk02878.txt blk02879.txt blk02880.txt blk02881.txt blk02882.txt blk02883.txt blk02884.txt blk02885.txt blk02886.txt blk02887.txt blk02888.txt blk02889.txt blk02890.txt blk02891.txt blk02892.txt blk02893.txt blk02894.txt blk02895.txt blk02896.txt blk02897.txt blk02898.txt blk02899.txt blk02900.txt blk02901.txt blk02902.txt blk02903.txt blk02904.txt blk02905.txt blk02906.txt blk02907.txt blk02908.txt blk02909.txt blk02910.txt blk02911.txt blk02912.txt blk02913.txt blk02914.txt blk02915.txt blk02916.txt blk02917.txt blk02918.txt blk02919.txt blk02920.txt blk02921.txt blk02922.txt blk02923.txt blk02924.txt blk02925.txt blk02926.txt blk02927.txt blk02928.txt blk02929.txt blk02930.txt blk02931.txt blk02932.txt blk02933.txt blk02934.txt blk02935.txt blk02936.txt blk02937.txt blk02938.txt blk02939.txt blk02940.txt blk02941.txt blk02942.txt blk02943.txt blk02944.txt blk02945.txt blk02946.txt blk02947.txt blk02948.txt blk02949.txt blk02950.txt blk02951.txt blk02952.txt blk02953.txt blk02954.txt blk02955.txt blk02956.txt blk02957.txt blk02958.txt blk02959.txt blk02960.txt blk02961.txt blk02962.txt blk02963.txt blk02964.txt blk02965.txt blk02966.txt blk02967.txt blk02968.txt blk02969.txt blk02970.txt blk02971.txt blk02972.txt blk02973.txt blk02974.txt blk02975.txt blk02976.txt blk02977.txt blk02978.txt blk02979.txt blk02980.txt blk02981.txt blk02982.txt blk02983.txt blk02984.txt blk02985.txt blk02986.txt blk02987.txt blk02988.txt blk02989.txt blk02990.txt blk02991.txt blk02992.txt blk02993.txt blk02994.txt blk02995.txt blk02996.txt blk02997.txt blk02998.txt blk02999.txt blk03000.txt blk03001.txt blk03002.txt blk03003.txt blk03004.txt blk03005.txt blk03006.txt blk03007.txt blk03008.txt blk03009.txt blk03010.txt blk03011.txt blk03012.txt blk03013.txt blk03014.txt blk03015.txt blk03016.txt blk03017.txt blk03018.txt blk03019.txt blk03020.txt blk03021.txt blk03022.txt blk03023.txt blk03024.txt blk03025.txt blk03026.txt blk03027.txt blk03028.txt blk03029.txt blk03030.txt blk03031.txt blk03032.txt blk03033.txt blk03034.txt blk03035.txt blk03036.txt blk03037.txt blk03038.txt blk03039.txt blk03040.txt blk03041.txt blk03042.txt blk03043.txt blk03044.txt blk03045.txt blk03046.txt blk03047.txt blk03048.txt blk03049.txt blk03050.txt blk03051.txt blk03052.txt blk03053.txt blk03054.txt blk03055.txt blk03056.txt blk03057.txt blk03058.txt blk03059.txt blk03060.txt blk03061.txt blk03062.txt blk03063.txt blk03064.txt blk03065.txt blk03066.txt blk03067.txt blk03068.txt blk03069.txt blk03070.txt blk03071.txt blk03072.txt blk03073.txt blk03074.txt blk03075.txt blk03076.txt blk03077.txt blk03078.txt blk03079.txt blk03080.txt blk03081.txt blk03082.txt blk03083.txt blk03084.txt blk03085.txt blk03086.txt blk03087.txt blk03088.txt blk03089.txt blk03090.txt blk03091.txt blk03092.txt blk03093.txt blk03094.txt blk03095.txt blk03096.txt blk03097.txt blk03098.txt blk03099.txt blk03100.txt blk03101.txt blk03102.txt blk03103.txt blk03104.txt blk03105.txt blk03106.txt blk03107.txt blk03108.txt blk03109.txt blk03110.txt blk03111.txt blk03112.txt blk03113.txt blk03114.txt blk03115.txt blk03116.txt blk03117.txt blk03118.txt blk03119.txt blk03120.txt blk03121.txt blk03122.txt blk03123.txt blk03124.txt blk03125.txt blk03126.txt blk03127.txt blk03128.txt blk03129.txt blk03130.txt blk03131.txt blk03132.txt blk03133.txt blk03134.txt blk03135.txt blk03136.txt blk03137.txt blk03138.txt blk03139.txt blk03140.txt blk03141.txt blk03142.txt blk03143.txt blk03144.txt blk03145.txt blk03146.txt blk03147.txt blk03148.txt blk03149.txt blk03150.txt blk03151.txt blk03152.txt blk03153.txt blk03154.txt blk03155.txt blk03156.txt blk03157.txt blk03158.txt blk03159.txt blk03160.txt blk03161.txt blk03162.txt blk03163.txt blk03164.txt blk03165.txt blk03166.txt blk03167.txt blk03168.txt blk03169.txt blk03170.txt blk03171.txt blk03172.txt blk03173.txt blk03174.txt blk03175.txt blk03176.txt blk03177.txt blk03178.txt blk03179.txt blk03180.txt blk03181.txt blk03182.txt blk03183.txt blk03184.txt blk03185.txt blk03186.txt blk03187.txt blk03188.txt blk03189.txt blk03190.txt blk03191.txt blk03192.txt blk03193.txt blk03194.txt blk03195.txt blk03196.txt blk03197.txt blk03198.txt blk03199.txt blk03200.txt blk03201.txt blk03202.txt blk03203.txt blk03204.txt blk03205.txt blk03206.txt blk03207.txt blk03208.txt blk03209.txt blk03210.txt blk03211.txt blk03212.txt blk03213.txt blk03214.txt blk03215.txt blk03216.txt blk03217.txt blk03218.txt blk03219.txt blk03220.txt blk03221.txt blk03222.txt blk03223.txt blk03224.txt blk03225.txt blk03226.txt blk03227.txt blk03228.txt blk03229.txt blk03230.txt blk03231.txt blk03232.txt blk03233.txt blk03234.txt blk03235.txt blk03236.txt blk03237.txt blk03238.txt blk03239.txt blk03240.txt blk03241.txt blk03242.txt blk03243.txt blk03244.txt blk03245.txt blk03246.txt blk03247.txt blk03248.txt blk03249.txt blk03250.txt blk03251.txt blk03252.txt blk03253.txt blk03254.txt blk03255.txt blk03256.txt blk03257.txt blk03258.txt blk03259.txt blk03260.txt blk03261.txt blk03262.txt blk03263.txt blk03264.txt blk03265.txt blk03266.txt blk03267.txt blk03268.txt blk03269.txt blk03270.txt blk03271.txt blk03272.txt blk03273.txt blk03274.txt blk03275.txt blk03276.txt blk03277.txt blk03278.txt blk03279.txt blk03280.txt blk03281.txt blk03282.txt blk03283.txt blk03284.txt blk03285.txt blk03286.txt blk03287.txt blk03288.txt blk03289.txt blk03290.txt blk03291.txt blk03292.txt blk03293.txt blk03294.txt blk03295.txt blk03296.txt blk03297.txt blk03298.txt blk03299.txt blk03300.txt blk03301.txt blk03302.txt blk03303.txt blk03304.txt blk03305.txt blk03306.txt blk03307.txt blk03308.txt blk03309.txt blk03310.txt blk03311.txt blk03312.txt blk03313.txt blk03314.txt blk03315.txt blk03316.txt blk03317.txt blk03318.txt blk03319.txt blk03320.txt blk03321.txt blk03322.txt blk03323.txt blk03324.txt blk03325.txt blk03326.txt blk03327.txt blk03328.txt blk03329.txt blk03330.txt blk03331.txt blk03332.txt blk03333.txt blk03334.txt blk03335.txt blk03336.txt blk03337.txt blk03338.txt blk03339.txt blk03340.txt blk03341.txt blk03342.txt blk03343.txt blk03344.txt blk03345.txt blk03346.txt blk03347.txt blk03348.txt blk03349.txt blk03350.txt blk03351.txt blk03352.txt blk03353.txt blk03354.txt blk03355.txt blk03356.txt blk03357.txt blk03358.txt blk03359.txt blk03360.txt blk03361.txt blk03362.txt blk03363.txt blk03364.txt blk03365.txt blk03366.txt blk03367.txt blk03368.txt blk03369.txt blk03370.txt blk03371.txt blk03372.txt blk03373.txt blk03374.txt blk03375.txt blk03376.txt blk03377.txt blk03378.txt blk03379.txt blk03380.txt blk03381.txt blk03382.txt blk03383.txt blk03384.txt blk03385.txt blk03386.txt blk03387.txt blk03388.txt blk03389.txt blk03390.txt blk03391.txt blk03392.txt blk03393.txt blk03394.txt blk03395.txt blk03396.txt blk03397.txt blk03398.txt blk03399.txt blk03400.txt blk03401.txt blk03402.txt blk03403.txt blk03404.txt blk03405.txt blk03406.txt blk03407.txt blk03408.txt blk03409.txt blk03410.txt blk03411.txt blk03412.txt blk03413.txt blk03414.txt blk03415.txt blk03416.txt blk03417.txt blk03418.txt blk03419.txt blk03420.txt blk03421.txt blk03422.txt blk03423.txt blk03424.txt blk03425.txt blk03426.txt blk03427.txt blk03428.txt blk03429.txt blk03430.txt blk03431.txt blk03432.txt blk03433.txt blk03434.txt blk03435.txt blk03436.txt blk03437.txt blk03438.txt blk03439.txt blk03440.txt blk03441.txt blk03442.txt blk03443.txt blk03444.txt blk03445.txt blk03446.txt blk03447.txt blk03448.txt blk03449.txt blk03450.txt blk03451.txt blk03452.txt blk03453.txt blk03454.txt blk03455.txt blk03456.txt blk03457.txt blk03458.txt blk03459.txt blk03460.txt blk03461.txt blk03462.txt blk03463.txt blk03464.txt blk03465.txt blk03466.txt blk03467.txt blk03468.txt blk03469.txt blk03470.txt blk03471.txt blk03472.txt blk03473.txt blk03474.txt blk03475.txt blk03476.txt blk03477.txt blk03478.txt blk03479.txt blk03480.txt blk03481.txt blk03482.txt blk03483.txt blk03484.txt blk03485.txt blk03486.txt blk03487.txt blk03488.txt blk03489.txt blk03490.txt blk03491.txt blk03492.txt blk03493.txt blk03494.txt blk03495.txt blk03496.txt blk03497.txt blk03498.txt blk03499.txt blk03500.txt blk03501.txt blk03502.txt blk03503.txt blk03504.txt blk03505.txt blk03506.txt blk03507.txt blk03508.txt blk03509.txt blk03510.txt blk03511.txt blk03512.txt blk03513.txt blk03514.txt blk03515.txt blk03516.txt blk03517.txt blk03518.txt blk03519.txt blk03520.txt blk03521.txt blk03522.txt blk03523.txt blk03524.txt blk03525.txt blk03526.txt blk03527.txt blk03528.txt blk03529.txt blk03530.txt blk03531.txt blk03532.txt blk03533.txt blk03534.txt blk03535.txt blk03536.txt blk03537.txt blk03538.txt blk03539.txt blk03540.txt blk03541.txt blk03542.txt blk03543.txt blk03544.txt blk03545.txt blk03546.txt blk03547.txt blk03548.txt blk03549.txt blk03550.txt blk03551.txt blk03552.txt blk03553.txt blk03554.txt blk03555.txt blk03556.txt blk03557.txt blk03558.txt blk03559.txt blk03560.txt blk03561.txt blk03562.txt blk03563.txt blk03564.txt blk03565.txt blk03566.txt blk03567.txt blk03568.txt blk03569.txt blk03570.txt blk03571.txt blk03572.txt blk03573.txt blk03574.txt blk03575.txt blk03576.txt blk03577.txt blk03578.txt blk03579.txt blk03580.txt blk03581.txt blk03582.txt blk03583.txt blk03584.txt blk03585.txt blk03586.txt blk03587.txt blk03588.txt blk03589.txt blk03590.txt blk03591.txt blk03592.txt blk03593.txt blk03594.txt blk03595.txt blk03596.txt blk03597.txt blk03598.txt blk03599.txt blk03600.txt blk03601.txt blk03602.txt blk03603.txt blk03604.txt blk03605.txt blk03606.txt blk03607.txt blk03608.txt blk03609.txt blk03610.txt blk03611.txt blk03612.txt blk03613.txt blk03614.txt blk03615.txt blk03616.txt blk03617.txt blk03618.txt blk03619.txt blk03620.txt blk03621.txt blk03622.txt blk03623.txt blk03624.txt blk03625.txt blk03626.txt blk03627.txt blk03628.txt blk03629.txt blk03630.txt blk03631.txt blk03632.txt blk03633.txt blk03634.txt blk03635.txt blk03636.txt blk03637.txt blk03638.txt blk03639.txt blk03640.txt blk03641.txt blk03642.txt blk03643.txt blk03644.txt blk03645.txt blk03646.txt blk03647.txt blk03648.txt blk03649.txt blk03650.txt blk03651.txt blk03652.txt blk03653.txt blk03654.txt blk03655.txt blk03656.txt blk03657.txt blk03658.txt blk03659.txt blk03660.txt blk03661.txt blk03662.txt blk03663.txt blk03664.txt blk03665.txt blk03666.txt blk03667.txt blk03668.txt blk03669.txt blk03670.txt blk03671.txt blk03672.txt blk03673.txt blk03674.txt blk03675.txt blk03676.txt blk03677.txt blk03678.txt blk03679.txt blk03680.txt blk03681.txt blk03682.txt blk03683.txt blk03684.txt blk03685.txt blk03686.txt blk03687.txt blk03688.txt blk03689.txt blk03690.txt blk03691.txt blk03692.txt blk03693.txt blk03694.txt blk03695.txt blk03696.txt blk03697.txt blk03698.txt blk03699.txt blk03700.txt blk03701.txt blk03702.txt blk03703.txt blk03704.txt blk03705.txt blk03706.txt blk03707.txt blk03708.txt blk03709.txt blk03710.txt blk03711.txt blk03712.txt blk03713.txt blk03714.txt blk03715.txt blk03716.txt blk03717.txt blk03718.txt blk03719.txt blk03720.txt blk03721.txt blk03722.txt blk03723.txt blk03724.txt blk03725.txt blk03726.txt blk03727.txt blk03728.txt blk03729.txt blk03730.txt blk03731.txt blk03732.txt blk03733.txt blk03734.txt blk03735.txt blk03736.txt blk03737.txt blk03738.txt blk03739.txt blk03740.txt blk03741.txt blk03742.txt blk03743.txt blk03744.txt blk03745.txt blk03746.txt blk03747.txt blk03748.txt blk03749.txt blk03750.txt blk03751.txt blk03752.txt blk03753.txt blk03754.txt blk03755.txt blk03756.txt blk03757.txt blk03758.txt blk03759.txt blk03760.txt blk03761.txt blk03762.txt blk03763.txt blk03764.txt blk03765.txt blk03766.txt blk03767.txt blk03768.txt blk03769.txt blk03770.txt blk03771.txt blk03772.txt blk03773.txt blk03774.txt blk03775.txt blk03776.txt blk03777.txt blk03778.txt blk03779.txt blk03780.txt blk03781.txt blk03782.txt blk03783.txt blk03784.txt blk03785.txt blk03786.txt blk03787.txt blk03788.txt blk03789.txt blk03790.txt blk03791.txt blk03792.txt blk03793.txt blk03794.txt blk03795.txt blk03796.txt blk03797.txt blk03798.txt blk03799.txt blk03800.txt blk03801.txt blk03802.txt blk03803.txt blk03804.txt blk03805.txt blk03806.txt blk03807.txt blk03808.txt blk03809.txt blk03810.txt blk03811.txt blk03812.txt blk03813.txt blk03814.txt blk03815.txt blk03816.txt blk03817.txt blk03818.txt blk03819.txt blk03820.txt blk03821.txt blk03822.txt blk03823.txt blk03824.txt blk03825.txt blk03826.txt blk03827.txt blk03828.txt blk03829.txt blk03830.txt blk03831.txt blk03832.txt blk03833.txt blk03834.txt blk03835.txt blk03836.txt blk03837.txt blk03838.txt blk03839.txt blk03840.txt blk03841.txt blk03842.txt blk03843.txt blk03844.txt blk03845.txt blk03846.txt blk03847.txt blk03848.txt blk03849.txt blk03850.txt blk03851.txt blk03852.txt blk03853.txt blk03854.txt blk03855.txt blk03856.txt blk03857.txt blk03858.txt blk03859.txt blk03860.txt blk03861.txt blk03862.txt blk03863.txt blk03864.txt blk03865.txt blk03866.txt blk03867.txt blk03868.txt blk03869.txt blk03870.txt blk03871.txt blk03872.txt blk03873.txt blk03874.txt blk03875.txt blk03876.txt blk03877.txt blk03878.txt blk03879.txt blk03880.txt blk03881.txt blk03882.txt blk03883.txt blk03884.txt blk03885.txt blk03886.txt blk03887.txt blk03888.txt blk03889.txt blk03890.txt blk03891.txt blk03892.txt blk03893.txt blk03894.txt blk03895.txt blk03896.txt blk03897.txt blk03898.txt blk03899.txt blk03900.txt blk03901.txt blk03902.txt blk03903.txt blk03904.txt blk03905.txt blk03906.txt blk03907.txt blk03908.txt blk03909.txt blk03910.txt blk03911.txt blk03912.txt blk03913.txt blk03914.txt blk03915.txt blk03916.txt blk03917.txt blk03918.txt blk03919.txt blk03920.txt blk03921.txt blk03922.txt blk03923.txt blk03924.txt blk03925.txt blk03926.txt blk03927.txt blk03928.txt blk03929.txt blk03930.txt blk03931.txt blk03932.txt blk03933.txt blk03934.txt blk03935.txt blk03936.txt blk03937.txt blk03938.txt blk03939.txt blk03940.txt blk03941.txt blk03942.txt blk03943.txt blk03944.txt blk03945.txt blk03946.txt blk03947.txt blk03948.txt blk03949.txt blk03950.txt blk03951.txt blk03952.txt blk03953.txt blk03954.txt blk03955.txt blk03956.txt blk03957.txt blk03958.txt blk03959.txt blk03960.txt blk03961.txt blk03962.txt blk03963.txt blk03964.txt blk03965.txt blk03966.txt blk03967.txt blk03968.txt blk03969.txt blk03970.txt blk03971.txt blk03972.txt blk03973.txt blk03974.txt blk03975.txt blk03976.txt blk03977.txt blk03978.txt blk03979.txt blk03980.txt blk03981.txt blk03982.txt blk03983.txt blk03984.txt blk03985.txt blk03986.txt blk03987.txt blk03988.txt blk03989.txt blk03990.txt blk03991.txt blk03992.txt blk03993.txt blk03994.txt blk03995.txt blk03996.txt blk03997.txt blk03998.txt blk03999.txt blk04000.txt blk04001.txt blk04002.txt blk04003.txt blk04004.txt blk04005.txt blk04006.txt blk04007.txt blk04008.txt blk04009.txt blk04010.txt blk04011.txt blk04012.txt blk04013.txt blk04014.txt blk04015.txt blk04016.txt blk04017.txt blk04018.txt blk04019.txt blk04020.txt blk04021.txt blk04022.txt blk04023.txt blk04024.txt blk04025.txt blk04026.txt blk04027.txt blk04028.txt blk04029.txt blk04030.txt blk04031.txt blk04032.txt blk04033.txt blk04034.txt blk04035.txt blk04036.txt blk04037.txt blk04038.txt blk04039.txt blk04040.txt blk04041.txt blk04042.txt blk04043.txt blk04044.txt blk04045.txt blk04046.txt blk04047.txt blk04048.txt blk04049.txt blk04050.txt blk04051.txt blk04052.txt blk04053.txt blk04054.txt blk04055.txt blk04056.txt blk04057.txt blk04058.txt blk04059.txt blk04060.txt blk04061.txt blk04062.txt blk04063.txt blk04064.txt blk04065.txt blk04066.txt blk04067.txt blk04068.txt blk04069.txt blk04070.txt blk04071.txt blk04072.txt blk04073.txt blk04074.txt blk04075.txt blk04076.txt blk04077.txt blk04078.txt blk04079.txt blk04080.txt blk04081.txt blk04082.txt blk04083.txt blk04084.txt blk04085.txt blk04086.txt blk04087.txt blk04088.txt blk04089.txt blk04090.txt blk04091.txt blk04092.txt blk04093.txt blk04094.txt blk04095.txt blk04096.txt blk04097.txt blk04098.txt blk04099.txt blk04100.txt blk04101.txt blk04102.txt blk04103.txt blk04104.txt blk04105.txt blk04106.txt blk04107.txt blk04108.txt blk04109.txt blk04110.txt blk04111.txt blk04112.txt blk04113.txt blk04114.txt blk04115.txt blk04116.txt blk04117.txt blk04118.txt blk04119.txt blk04120.txt blk04121.txt blk04122.txt blk04123.txt blk04124.txt blk04125.txt blk04126.txt blk04127.txt blk04128.txt blk04129.txt blk04130.txt blk04131.txt blk04132.txt blk04133.txt blk04134.txt blk04135.txt blk04136.txt blk04137.txt blk04138.txt blk04139.txt blk04140.txt blk04141.txt blk04142.txt blk04143.txt blk04144.txt blk04145.txt blk04146.txt blk04147.txt blk04148.txt blk04149.txt blk04150.txt blk04151.txt blk04152.txt blk04153.txt blk04154.txt blk04155.txt blk04156.txt blk04157.txt blk04158.txt blk04159.txt blk04160.txt blk04161.txt blk04162.txt blk04163.txt blk04164.txt blk04165.txt blk04166.txt blk04167.txt blk04168.txt blk04169.txt blk04170.txt blk04171.txt blk04172.txt blk04173.txt blk04174.txt blk04175.txt blk04176.txt blk04177.txt blk04178.txt blk04179.txt blk04180.txt blk04181.txt blk04182.txt blk04183.txt blk04184.txt blk04185.txt blk04186.txt blk04187.txt blk04188.txt blk04189.txt blk04190.txt blk04191.txt blk04192.txt blk04193.txt blk04194.txt blk04195.txt blk04196.txt blk04197.txt blk04198.txt blk04199.txt blk04200.txt blk04201.txt blk04202.txt blk04203.txt blk04204.txt blk04205.txt blk04206.txt blk04207.txt blk04208.txt blk04209.txt blk04210.txt blk04211.txt blk04212.txt blk04213.txt blk04214.txt blk04215.txt blk04216.txt blk04217.txt blk04218.txt blk04219.txt blk04220.txt blk04221.txt blk04222.txt blk04223.txt blk04224.txt blk04225.txt blk04226.txt blk04227.txt blk04228.txt blk04229.txt blk04230.txt blk04231.txt blk04232.txt blk04233.txt blk04234.txt blk04235.txt blk04236.txt blk04237.txt blk04238.txt blk04239.txt blk04240.txt blk04241.txt blk04242.txt blk04243.txt blk04244.txt blk04245.txt blk04246.txt blk04247.txt blk04248.txt blk04249.txt blk04250.txt blk04251.txt blk04252.txt blk04253.txt blk04254.txt blk04255.txt blk04256.txt blk04257.txt blk04258.txt blk04259.txt blk04260.txt blk04261.txt blk04262.txt blk04263.txt blk04264.txt blk04265.txt blk04266.txt blk04267.txt blk04268.txt blk04269.txt blk04270.txt blk04271.txt blk04272.txt blk04273.txt blk04274.txt blk04275.txt blk04276.txt blk04277.txt blk04278.txt blk04279.txt blk04280.txt blk04281.txt blk04282.txt blk04283.txt blk04284.txt blk04285.txt blk04286.txt blk04287.txt blk04288.txt blk04289.txt blk04290.txt blk04291.txt blk04292.txt blk04293.txt blk04294.txt blk04295.txt blk04296.txt blk04297.txt blk04298.txt blk04299.txt blk04300.txt blk04301.txt blk04302.txt blk04303.txt blk04304.txt blk04305.txt blk04306.txt blk04307.txt blk04308.txt blk04309.txt blk04310.txt blk04311.txt blk04312.txt blk04313.txt blk04314.txt blk04315.txt blk04316.txt blk04317.txt blk04318.txt blk04319.txt blk04320.txt blk04321.txt blk04322.txt blk04323.txt blk04324.txt blk04325.txt blk04326.txt blk04327.txt blk04328.txt blk04329.txt blk04330.txt blk04331.txt blk04332.txt blk04333.txt blk04334.txt blk04335.txt blk04336.txt blk04337.txt blk04338.txt blk04339.txt blk04340.txt blk04341.txt blk04342.txt blk04343.txt blk04344.txt blk04345.txt blk04346.txt blk04347.txt blk04348.txt blk04349.txt blk04350.txt blk04351.txt blk04352.txt blk04353.txt blk04354.txt blk04355.txt blk04356.txt blk04357.txt blk04358.txt blk04359.txt blk04360.txt blk04361.txt blk04362.txt blk04363.txt blk04364.txt blk04365.txt blk04366.txt blk04367.txt blk04368.txt blk04369.txt blk04370.txt blk04371.txt blk04372.txt blk04373.txt blk04374.txt blk04375.txt blk04376.txt blk04377.txt blk04378.txt blk04379.txt blk04380.txt blk04381.txt blk04382.txt blk04383.txt blk04384.txt blk04385.txt blk04386.txt blk04387.txt blk04388.txt blk04389.txt blk04390.txt blk04391.txt blk04392.txt blk04393.txt blk04394.txt blk04395.txt blk04396.txt blk04397.txt blk04398.txt blk04399.txt blk04400.txt blk04401.txt blk04402.txt blk04403.txt blk04404.txt blk04405.txt blk04406.txt blk04407.txt blk04408.txt blk04409.txt blk04410.txt blk04411.txt blk04412.txt blk04413.txt blk04414.txt blk04415.txt blk04416.txt blk04417.txt blk04418.txt blk04419.txt blk04420.txt blk04421.txt blk04422.txt blk04423.txt blk04424.txt blk04425.txt blk04426.txt blk04427.txt blk04428.txt blk04429.txt blk04430.txt blk04431.txt blk04432.txt blk04433.txt blk04434.txt blk04435.txt blk04436.txt blk04437.txt blk04438.txt blk04439.txt blk04440.txt blk04441.txt blk04442.txt blk04443.txt blk04444.txt blk04445.txt blk04446.txt blk04447.txt blk04448.txt blk04449.txt blk04450.txt blk04451.txt blk04452.txt blk04453.txt blk04454.txt blk04455.txt blk04456.txt blk04457.txt blk04458.txt blk04459.txt blk04460.txt blk04461.txt blk04462.txt blk04463.txt blk04464.txt blk04465.txt blk04466.txt blk04467.txt blk04468.txt blk04469.txt blk04470.txt blk04471.txt blk04472.txt blk04473.txt blk04474.txt blk04475.txt blk04476.txt blk04477.txt blk04478.txt blk04479.txt blk04480.txt blk04481.txt blk04482.txt blk04483.txt blk04484.txt blk04485.txt blk04486.txt blk04487.txt blk04488.txt blk04489.txt blk04490.txt blk04491.txt blk04492.txt blk04493.txt blk04494.txt blk04495.txt blk04496.txt blk04497.txt blk04498.txt blk04499.txt blk04500.txt blk04501.txt blk04502.txt blk04503.txt blk04504.txt blk04505.txt blk04506.txt blk04507.txt blk04508.txt blk04509.txt blk04510.txt blk04511.txt blk04512.txt blk04513.txt blk04514.txt blk04515.txt blk04516.txt blk04517.txt blk04518.txt blk04519.txt blk04520.txt blk04521.txt blk04522.txt blk04523.txt blk04524.txt blk04525.txt blk04526.txt blk04527.txt blk04528.txt blk04529.txt blk04530.txt blk04531.txt blk04532.txt blk04533.txt blk04534.txt blk04535.txt blk04536.txt blk04537.txt blk04538.txt blk04539.txt blk04540.txt blk04541.txt blk04542.txt blk04543.txt blk04544.txt blk04545.txt blk04546.txt blk04547.txt blk04548.txt blk04549.txt blk04550.txt blk04551.txt blk04552.txt blk04553.txt blk04554.txt blk04555.txt blk04556.txt blk04557.txt blk04558.txt blk04559.txt blk04560.txt blk04561.txt blk04562.txt blk04563.txt blk04564.txt blk04565.txt blk04566.txt blk04567.txt blk04568.txt blk04569.txt blk04570.txt blk04571.txt blk04572.txt blk04573.txt blk04574.txt blk04575.txt blk04576.txt blk04577.txt blk04578.txt blk04579.txt blk04580.txt blk04581.txt blk04582.txt blk04583.txt blk04584.txt blk04585.txt blk04586.txt blk04587.txt blk04588.txt blk04589.txt blk04590.txt blk04591.txt blk04592.txt blk04593.txt blk04594.txt blk04595.txt blk04596.txt blk04597.txt blk04598.txt blk04599.txt blk04600.txt blk04601.txt blk04602.txt blk04603.txt blk04604.txt blk04605.txt blk04606.txt blk04607.txt blk04608.txt blk04609.txt blk04610.txt blk04611.txt blk04612.txt blk04613.txt blk04614.txt blk04615.txt blk04616.txt blk04617.txt blk04618.txt blk04619.txt blk04620.txt blk04621.txt blk04622.txt blk04623.txt blk04624.txt blk04625.txt blk04626.txt blk04627.txt blk04628.txt blk04629.txt blk04630.txt blk04631.txt blk04632.txt blk04633.txt blk04634.txt blk04635.txt blk04636.txt blk04637.txt blk04638.txt blk04639.txt blk04640.txt blk04641.txt blk04642.txt blk04643.txt blk04644.txt blk04645.txt blk04646.txt blk04647.txt blk04648.txt blk04649.txt blk04650.txt blk04651.txt blk04652.txt blk04653.txt blk04654.txt blk04655.txt blk04656.txt blk04657.txt blk04658.txt blk04659.txt blk04660.txt blk04661.txt blk04662.txt blk04663.txt blk04664.txt blk04665.txt blk04666.txt blk04667.txt blk04668.txt blk04669.txt blk04670.txt blk04671.txt blk04672.txt blk04673.txt blk04674.txt blk04675.txt blk04676.txt blk04677.txt blk04678.txt blk04679.txt blk04680.txt blk04681.txt blk04682.txt blk04683.txt blk04684.txt blk04685.txt blk04686.txt blk04687.txt blk04688.txt blk04689.txt blk04690.txt blk04691.txt blk04692.txt blk04693.txt blk04694.txt blk04695.txt blk04696.txt blk04697.txt blk04698.txt blk04699.txt blk04700.txt blk04701.txt blk04702.txt blk04703.txt blk04704.txt blk04705.txt blk04706.txt blk04707.txt blk04708.txt blk04709.txt blk04710.txt blk04711.txt blk04712.txt blk04713.txt blk04714.txt blk04715.txt blk04716.txt blk04717.txt blk04718.txt blk04719.txt blk04720.txt blk04721.txt blk04722.txt blk04723.txt blk04724.txt blk04725.txt blk04726.txt blk04727.txt blk04728.txt blk04729.txt blk04730.txt blk04731.txt blk04732.txt blk04733.txt blk04734.txt blk04735.txt blk04736.txt blk04737.txt blk04738.txt blk04739.txt blk04740.txt blk04741.txt blk04742.txt blk04743.txt blk04744.txt blk04745.txt blk04746.txt blk04747.txt blk04748.txt blk04749.txt blk04750.txt blk04751.txt blk04752.txt blk04753.txt blk04754.txt blk04755.txt blk04756.txt blk04757.txt blk04758.txt blk04759.txt blk04760.txt blk04761.txt blk04762.txt blk04763.txt blk04764.txt blk04765.txt blk04766.txt blk04767.txt blk04768.txt blk04769.txt blk04770.txt blk04771.txt blk04772.txt blk04773.txt blk04774.txt blk04775.txt blk04776.txt blk04777.txt blk04778.txt blk04779.txt blk04780.txt blk04781.txt blk04782.txt blk04783.txt blk04784.txt blk04785.txt blk04786.txt blk04787.txt blk04788.txt blk04789.txt blk04790.txt blk04791.txt blk04792.txt blk04793.txt blk04794.txt blk04795.txt blk04796.txt blk04797.txt blk04798.txt blk04799.txt blk04800.txt blk04801.txt blk04802.txt blk04803.txt blk04804.txt blk04805.txt blk04806.txt blk04807.txt blk04808.txt blk04809.txt blk04810.txt blk04811.txt blk04812.txt blk04813.txt blk04814.txt blk04815.txt blk04816.txt blk04817.txt blk04818.txt blk04819.txt blk04820.txt blk04821.txt blk04822.txt blk04823.txt blk04824.txt blk04825.txt blk04826.txt blk04827.txt blk04828.txt blk04829.txt blk04830.txt blk04831.txt blk04832.txt blk04833.txt blk04834.txt blk04835.txt blk04836.txt blk04837.txt blk04838.txt blk04839.txt blk04840.txt blk04841.txt blk04842.txt blk04843.txt blk04844.txt blk04845.txt blk04846.txt blk04847.txt blk04848.txt blk04849.txt blk04850.txt blk04851.txt blk04852.txt blk04853.txt blk04854.txt blk04855.txt blk04856.txt blk04857.txt blk04858.txt blk04859.txt blk04860.txt blk04861.txt blk04862.txt blk04863.txt blk04864.txt blk04865.txt blk04866.txt blk04867.txt blk04868.txt blk04869.txt blk04870.txt blk04871.txt blk04872.txt blk04873.txt blk04874.txt blk04875.txt blk04876.txt blk04877.txt blk04878.txt blk04879.txt blk04880.txt blk04881.txt blk04882.txt blk04883.txt blk04884.txt blk04885.txt blk04886.txt blk04887.txt blk04888.txt blk04889.txt blk04890.txt blk04891.txt blk04892.txt blk04893.txt blk04894.txt blk04895.txt blk04896.txt blk04897.txt blk04898.txt blk04899.txt blk04900.txt blk04901.txt blk04902.txt blk04903.txt blk04904.txt blk04905.txt blk04906.txt blk04907.txt blk04908.txt blk04909.txt blk04910.txt blk04911.txt blk04912.txt blk04913.txt blk04914.txt blk04915.txt blk04916.txt blk04917.txt blk04918.txt blk04919.txt blk04920.txt blk04921.txt blk04922.txt blk04923.txt blk04924.txt blk04925.txt blk04926.txt blk04927.txt blk04928.txt blk04929.txt blk04930.txt blk04931.txt blk04932.txt blk04933.txt blk04934.txt blk04935.txt blk04936.txt blk04937.txt blk04938.txt blk04939.txt blk04940.txt blk04941.txt blk04942.txt blk04943.txt blk04944.txt blk04945.txt blk04946.txt blk04947.txt blk04948.txt blk04949.txt blk04950.txt blk04951.txt blk04952.txt blk04953.txt blk04954.txt blk04955.txt blk04956.txt blk04957.txt blk04958.txt blk04959.txt blk04960.txt blk04961.txt blk04962.txt blk04963.txt blk04964.txt blk04965.txt blk04966.txt blk04967.txt blk04968.txt blk04969.txt blk04970.txt blk04971.txt blk04972.txt blk04973.txt blk04974.txt blk04975.txt blk04976.txt blk04977.txt blk04978.txt blk04979.txt blk04980.txt blk04981.txt blk04982.txt blk04983.txt blk04984.txt blk04985.txt blk04986.txt blk04987.txt blk04988.txt blk04989.txt blk04990.txt blk04991.txt blk04992.txt blk04993.txt blk04994.txt blk04995.txt blk04996.txt blk04997.txt blk04998.txt blk04999.txt blk05000.txt blk05001.txt blk05002.txt blk05003.txt blk05004.txt blk05005.txt blk05006.txt blk05007.txt blk05008.txt blk05009.txt blk05010.txt blk05011.txt blk05012.txt blk05013.txt blk05014.txt blk05015.txt blk05016.txt blk05017.txt blk05018.txt blk05019.txt blk05020.txt blk05021.txt blk05022.txt blk05023.txt blk05024.txt blk05025.txt blk05026.txt blk05027.txt blk05028.txt blk05029.txt blk05030.txt blk05031.txt blk05032.txt blk05033.txt blk05034.txt blk05035.txt blk05036.txt blk05037.txt blk05038.txt blk05039.txt blk05040.txt blk05041.txt blk05042.txt blk05043.txt blk05044.txt blk05045.txt blk05046.txt blk05047.txt blk05048.txt blk05049.txt blk05050.txt blk05051.txt blk05052.txt blk05053.txt blk05054.txt blk05055.txt blk05056.txt blk05057.txt blk05058.txt blk05059.txt blk05060.txt blk05061.txt blk05062.txt blk05063.txt blk05064.txt blk05065.txt blk05066.txt blk05067.txt blk05068.txt blk05069.txt blk05070.txt blk05071.txt blk05072.txt blk05073.txt blk05074.txt blk05075.txt blk05076.txt blk05077.txt blk05078.txt blk05079.txt blk05080.txt blk05081.txt blk05082.txt blk05083.txt blk05084.txt blk05085.txt blk05086.txt blk05087.txt blk05088.txt blk05089.txt blk05090.txt blk05091.txt blk05092.txt blk05093.txt blk05094.txt blk05095.txt blk05096.txt blk05097.txt blk05098.txt blk05099.txt blk05100.txt blk05101.txt blk05102.txt blk05103.txt blk05104.txt blk05105.txt blk05106.txt blk05107.txt blk05108.txt blk05109.txt blk05110.txt blk05111.txt blk05112.txt blk05113.txt blk05114.txt blk05115.txt blk05116.txt blk05117.txt blk05118.txt blk05119.txt blk05120.txt blk05121.txt blk05122.txt blk05123.txt blk05124.txt blk05125.txt blk05126.txt blk05127.txt blk05128.txt blk05129.txt blk05130.txt blk05131.txt blk05132.txt blk05133.txt blk05134.txt blk05135.txt blk05136.txt blk05137.txt blk05138.txt blk05139.txt blk05140.txt blk05141.txt blk05142.txt blk05143.txt blk05144.txt blk05145.txt blk05146.txt blk05147.txt blk05148.txt blk05149.txt blk05150.txt blk05151.txt blk05152.txt blk05153.txt blk05154.txt blk05155.txt blk05156.txt blk05157.txt blk05158.txt blk05159.txt blk05160.txt blk05161.txt blk05162.txt blk05163.txt blk05164.txt blk05165.txt blk05166.txt blk05167.txt blk05168.txt blk05169.txt blk05170.txt blk05171.txt blk05172.txt blk05173.txt blk05174.txt blk05175.txt blk05176.txt blk05177.txt blk05178.txt blk05179.txt blk05180.txt blk05181.txt blk05182.txt blk05183.txt blk05184.txt blk05185.txt blk05186.txt blk05187.txt blk05188.txt blk05189.txt blk05190.txt blk05191.txt blk05192.txt blk05193.txt blk05194.txt blk05195.txt blk05196.txt blk05197.txt blk05198.txt blk05199.txt blk05200.txt blk05201.txt blk05202.txt blk05203.txt blk05204.txt blk05205.txt blk05206.txt blk05207.txt blk05208.txt blk05209.txt blk05210.txt blk05211.txt blk05212.txt blk05213.txt blk05214.txt blk05215.txt blk05216.txt blk05217.txt blk05218.txt blk05219.txt blk05220.txt blk05221.txt blk05222.txt blk05223.txt blk05224.txt blk05225.txt blk05226.txt blk05227.txt blk05228.txt blk05229.txt blk05230.txt blk05231.txt blk05232.txt blk05233.txt blk05234.txt blk05235.txt blk05236.txt blk05237.txt blk05238.txt blk05239.txt blk05240.txt blk05241.txt blk05242.txt blk05243.txt blk05244.txt blk05245.txt blk05246.txt blk05247.txt blk05248.txt blk05249.txt blk05250.txt blk05251.txt blk05252.txt blk05253.txt blk05254.txt blk05255.txt blk05256.txt blk05257.txt blk05258.txt blk05259.txt blk05260.txt blk05261.txt blk05262.txt blk05263.txt blk05264.txt blk05265.txt blk05266.txt blk05267.txt blk05268.txt blk05269.txt blk05270.txt blk05271.txt blk05272.txt blk05273.txt blk05274.txt blk05275.txt blk05276.txt blk05277.txt blk05278.txt blk05279.txt blk05280.txt blk05281.txt blk05282.txt blk05283.txt blk05284.txt blk05285.txt blk05286.txt blk05287.txt blk05288.txt blk05289.txt blk05290.txt blk05291.txt blk05292.txt blk05293.txt blk05294.txt blk05295.txt blk05296.txt blk05297.txt blk05298.txt blk05299.txt blk05300.txt blk05301.txt blk05302.txt blk05303.txt blk05304.txt blk05305.txt blk05306.txt blk05307.txt blk05308.txt blk05309.txt blk05310.txt blk05311.txt blk05312.txt blk05313.txt blk05314.txt blk05315.txt blk05316.txt blk05317.txt blk05318.txt blk05319.txt blk05320.txt blk05321.txt blk05322.txt blk05323.txt blk05324.txt blk05325.txt blk05326.txt blk05327.txt blk05328.txt blk05329.txt blk05330.txt blk05331.txt blk05332.txt blk05333.txt blk05334.txt blk05335.txt blk05336.txt blk05337.txt blk05338.txt blk05339.txt blk05340.txt blk05341.txt blk05342.txt blk05343.txt blk05344.txt blk05345.txt blk05346.txt blk05347.txt blk05348.txt blk05349.txt blk05350.txt blk05351.txt blk05352.txt blk05353.txt blk05354.txt blk05355.txt blk05356.txt blk05357.txt blk05358.txt blk05359.txt blk05360.txt blk05361.txt blk05362.txt blk05363.txt blk05364.txt blk05365.txt blk05366.txt blk05367.txt blk05368.txt blk05369.txt blk05370.txt blk05371.txt blk05372.txt blk05373.txt blk05374.txt blk05375.txt blk05376.txt blk05377.txt blk05378.txt blk05379.txt blk05380.txt blk05381.txt blk05382.txt blk05383.txt blk05384.txt blk05385.txt blk05386.txt blk05387.txt blk05388.txt blk05389.txt blk05390.txt blk05391.txt blk05392.txt blk05393.txt blk05394.txt blk05395.txt blk05396.txt blk05397.txt blk05398.txt blk05399.txt blk05400.txt blk05401.txt blk05402.txt blk05403.txt blk05404.txt blk05405.txt blk05406.txt blk05407.txt blk05408.txt blk05409.txt blk05410.txt blk05411.txt blk05412.txt blk05413.txt blk05414.txt blk05415.txt blk05416.txt blk05417.txt blk05418.txt blk05419.txt blk05420.txt blk05421.txt blk05422.txt blk05423.txt blk05424.txt blk05425.txt blk05426.txt blk05427.txt blk05428.txt blk05429.txt blk05430.txt blk05431.txt blk05432.txt blk05433.txt blk05434.txt blk05435.txt blk05436.txt blk05437.txt blk05438.txt blk05439.txt blk05440.txt blk05441.txt blk05442.txt blk05443.txt blk05444.txt blk05445.txt blk05446.txt blk05447.txt blk05448.txt blk05449.txt blk05450.txt blk05451.txt blk05452.txt blk05453.txt blk05454.txt blk05455.txt blk05456.txt blk05457.txt blk05458.txt blk05459.txt blk05460.txt blk05461.txt blk05462.txt blk05463.txt blk05464.txt blk05465.txt blk05466.txt blk05467.txt blk05468.txt blk05469.txt blk05470.txt blk05471.txt blk05472.txt blk05473.txt blk05474.txt blk05475.txt blk05476.txt blk05477.txt blk05478.txt blk05479.txt blk05480.txt blk05481.txt blk05482.txt blk05483.txt blk05484.txt blk05485.txt blk05486.txt blk05487.txt blk05488.txt blk05489.txt blk05490.txt blk05491.txt blk05492.txt blk05493.txt blk05494.txt blk05495.txt blk05496.txt blk05497.txt blk05498.txt blk05499.txt blk05500.txt blk05501.txt blk05502.txt blk05503.txt Show all files
Advertisement: