Are you sure?
+>>0,isFinite(p)?(p=p>>>0,y===void 0&&(y="utf8")):(y=p,p=void 0);else throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported");const x=this.length-A;if((p===void 0||p>x)&&(p=x),s.length>0&&(p<0||A<0)||A>this.length)throw new RangeError("Attempt to write outside buffer bounds");y||(y="utf8");let Z=!1;for(;;)switch(y){case"hex":return L(this,s,A,p);case"utf8":case"utf-8":return z(this,s,A,p);case"ascii":case"latin1":case"binary":return _(this,s,A,p);case"base64":return O(this,s,A,p);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return H(this,s,A,p);default:if(Z)throw new TypeError("Unknown encoding: "+y);y=(""+y).toLowerCase(),Z=!0}},l.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};function P(d,s,A){return s===0&&A===d.length?e.fromByteArray(d):e.fromByteArray(d.slice(s,A))}function $(d,s,A){A=Math.min(d.length,A);const p=[];let y=s;for(;y239?4:x>223?3:x>191?2:1;if(y+F<=A){let re,ne,ae,K;switch(F){case 1:x<128&&(Z=x);break;case 2:re=d[y+1],(re&192)===128&&(K=(x&31)<<6|re&63,K>127&&(Z=K));break;case 3:re=d[y+1],ne=d[y+2],(re&192)===128&&(ne&192)===128&&(K=(x&15)<<12|(re&63)<<6|ne&63,K>2047&&(K<55296||K>57343)&&(Z=K));break;case 4:re=d[y+1],ne=d[y+2],ae=d[y+3],(re&192)===128&&(ne&192)===128&&(ae&192)===128&&(K=(x&15)<<18|(re&63)<<12|(ne&63)<<6|ae&63,K>65535&&K<1114112&&(Z=K))}}Z===null?(Z=65533,F=1):Z>65535&&(Z-=65536,p.push(Z>>>10&1023|55296),Z=56320|Z&1023),p.push(Z),y+=F}return M(p)}const q=4096;function M(d){const s=d.length;if(s<=q)return String.fromCharCode.apply(String,d);let A="",p=0;for(;p >>0,p=p>>>0,!y){const F=Math.pow(2,8*p)-1;ee(this,s,A,p,F,0)}let x=p-1,Z=1;for(this[A+x]=s&255;--x>=0&&(Z*=256);)this[A+x]=s/Z&255;return A+p},l.prototype.writeUint8=l.prototype.writeUInt8=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,1,255,0),this[A]=s&255,A+1},l.prototype.writeUint16LE=l.prototype.writeUInt16LE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,2,65535,0),this[A]=s&255,this[A+1]=s>>>8,A+2},l.prototype.writeUint16BE=l.prototype.writeUInt16BE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,2,65535,0),this[A]=s>>>8,this[A+1]=s&255,A+2},l.prototype.writeUint32LE=l.prototype.writeUInt32LE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,4,4294967295,0),this[A+3]=s>>>24,this[A+2]=s>>>16,this[A+1]=s>>>8,this[A]=s&255,A+4},l.prototype.writeUint32BE=l.prototype.writeUInt32BE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,4,4294967295,0),this[A]=s>>>24,this[A+1]=s>>>16,this[A+2]=s>>>8,this[A+3]=s&255,A+4};function le(d,s,A,p,y){Xe(s,p,y,d,A,7);let x=Number(s&BigInt(4294967295));d[A++]=x,x=x>>8,d[A++]=x,x=x>>8,d[A++]=x,x=x>>8,d[A++]=x;let Z=Number(s>>BigInt(32)&BigInt(4294967295));return d[A++]=Z,Z=Z>>8,d[A++]=Z,Z=Z>>8,d[A++]=Z,Z=Z>>8,d[A++]=Z,A}function Be(d,s,A,p,y){Xe(s,p,y,d,A,7);let x=Number(s&BigInt(4294967295));d[A+7]=x,x=x>>8,d[A+6]=x,x=x>>8,d[A+5]=x,x=x>>8,d[A+4]=x;let Z=Number(s>>BigInt(32)&BigInt(4294967295));return d[A+3]=Z,Z=Z>>8,d[A+2]=Z,Z=Z>>8,d[A+1]=Z,Z=Z>>8,d[A]=Z,A+8}l.prototype.writeBigUInt64LE=ue(function(s,A=0){return le(this,s,A,BigInt(0),BigInt("0xffffffffffffffff"))}),l.prototype.writeBigUInt64BE=ue(function(s,A=0){return Be(this,s,A,BigInt(0),BigInt("0xffffffffffffffff"))}),l.prototype.writeIntLE=function(s,A,p,y){if(s=+s,A=A>>>0,!y){const re=Math.pow(2,8*p-1);ee(this,s,A,p,re-1,-re)}let x=0,Z=1,F=0;for(this[A]=s&255;++x >0)-F&255;return A+p},l.prototype.writeIntBE=function(s,A,p,y){if(s=+s,A=A>>>0,!y){const re=Math.pow(2,8*p-1);ee(this,s,A,p,re-1,-re)}let x=p-1,Z=1,F=0;for(this[A+x]=s&255;--x>=0&&(Z*=256);)s<0&&F===0&&this[A+x+1]!==0&&(F=1),this[A+x]=(s/Z>>0)-F&255;return A+p},l.prototype.writeInt8=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,1,127,-128),s<0&&(s=255+s+1),this[A]=s&255,A+1},l.prototype.writeInt16LE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,2,32767,-32768),this[A]=s&255,this[A+1]=s>>>8,A+2},l.prototype.writeInt16BE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,2,32767,-32768),this[A]=s>>>8,this[A+1]=s&255,A+2},l.prototype.writeInt32LE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,4,2147483647,-2147483648),this[A]=s&255,this[A+1]=s>>>8,this[A+2]=s>>>16,this[A+3]=s>>>24,A+4},l.prototype.writeInt32BE=function(s,A,p){return s=+s,A=A>>>0,p||ee(this,s,A,4,2147483647,-2147483648),s<0&&(s=4294967295+s+1),this[A]=s>>>24,this[A+1]=s>>>16,this[A+2]=s>>>8,this[A+3]=s&255,A+4},l.prototype.writeBigInt64LE=ue(function(s,A=0){return le(this,s,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))}),l.prototype.writeBigInt64BE=ue(function(s,A=0){return Be(this,s,A,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))});function Ge(d,s,A,p,y,x){if(A+p>d.length)throw new RangeError("Index out of range");if(A<0)throw new RangeError("Index out of range")}function _e(d,s,A,p,y){return s=+s,A=A>>>0,y||Ge(d,s,A,4),n.write(d,s,A,p,23,4),A+4}l.prototype.writeFloatLE=function(s,A,p){return _e(this,s,A,!0,p)},l.prototype.writeFloatBE=function(s,A,p){return _e(this,s,A,!1,p)};function Te(d,s,A,p,y){return s=+s,A=A>>>0,y||Ge(d,s,A,8),n.write(d,s,A,p,52,8),A+8}l.prototype.writeDoubleLE=function(s,A,p){return Te(this,s,A,!0,p)},l.prototype.writeDoubleBE=function(s,A,p){return Te(this,s,A,!1,p)},l.prototype.copy=function(s,A,p,y){if(!l.isBuffer(s))throw new TypeError("argument should be a Buffer");if(p||(p=0),!y&&y!==0&&(y=this.length),A>=s.length&&(A=s.length),A||(A=0),y>0&&y =this.length)throw new RangeError("Index out of range");if(y<0)throw new RangeError("sourceEnd out of bounds");y>this.length&&(y=this.length),s.length-A 2**32?y=ke(String(A)):typeof A=="bigint"&&(y=String(A),(A>BigInt(2)**BigInt(32)||A<-(BigInt(2)**BigInt(32)))&&(y=ke(y)),y+="n"),p+=` It must be ${s}. Received ${y}`,p},RangeError);function ke(d){let s="",A=d.length;const p=d[0]==="-"?1:0;for(;A>=p+4;A-=3)s=`_${d.slice(A-3,A)}${s}`;return`${d.slice(0,A)}${s}`}function Le(d,s,A){Ne(s,"offset"),(d[s]===void 0||d[s+A]===void 0)&&Ee(s,d.length-(A+1))}function Xe(d,s,A,p,y,x){if(d>A||d 55295&&A<57344){if(!y){if(A>56319){(s-=3)>-1&&x.push(239,191,189);continue}else if(Z+1===p){(s-=3)>-1&&x.push(239,191,189);continue}y=A;continue}if(A<56320){(s-=3)>-1&&x.push(239,191,189),y=A;continue}A=(y-55296<<10|A-56320)+65536}else y&&(s-=3)>-1&&x.push(239,191,189);if(y=null,A<128){if((s-=1)<0)break;x.push(A)}else if(A<2048){if((s-=2)<0)break;x.push(A>>6|192,A&63|128)}else if(A<65536){if((s-=3)<0)break;x.push(A>>12|224,A>>6&63|128,A&63|128)}else if(A<1114112){if((s-=4)<0)break;x.push(A>>18|240,A>>12&63|128,A>>6&63|128,A&63|128)}else throw new Error("Invalid code point")}return x}function Qe(d){const s=[];for(let A=0;A =s.length||y>=d.length);++y)s[y+A]=d[y];return y}function ge(d,s){return d instanceof s||d!=null&&d.constructor!=null&&d.constructor.name!=null&&d.constructor.name===s.name}function Y(d){return d!==d}const ye=function(){const d="0123456789abcdef",s=new Array(256);for(let A=0;A<16;++A){const p=A*16;for(let y=0;y<16;++y)s[p+y]=d[A]+d[y]}return s}();function ue(d){return typeof BigInt>"u"?st:d}function st(){throw new Error("BigInt not supported")}})(sn);typeof window<"u"&&(window.Buffer=window.Buffer||sn.Buffer);let Vt=class extends nt.Client{constructor(e){super(new nt.Spec(["AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAHwAAAAAAAAAIT3ZlcmZsb3cAAAABAAAAAAAAABNJbnN1ZmZpY2llbnRCYWxhbmNlAAAAAAIAAAAAAAAADFVuYXV0aG9yaXplZAAAAAMAAAAAAAAADkNvbnRyYWN0UGF1c2VkAAAAAAAEAAAAAAAAABNDcmVkaXRMaW1pdEV4Y2VlZGVkAAAAAAUAAAAAAAAAFFVuc3VwcG9ydGVkTWlncmF0aW9uAAAABgAAAAAAAAARSW52YWxpZE11bHRpcGxpZXIAAAAAAAAHAAAAAAAAABFSYXRlTGltaXRFeGNlZWRlZAAAAAAAAAgAAAAAAAAAD1Zlc3RpbmdOb3RGb3VuZAAAAAAJAAAAAAAAAA5Ob1BlbmRpbmdBZG1pbgAAAAAACgAAAAAAAAATSW5zdWZmaWNpZW50UmVzZXJ2ZQAAAAALAAAAAAAAABVJbnZhbGlkUmVkZW1wdGlvblJhdGUAAAAAAAAMAAAAAAAAABFJbnZhbGlkQWRtaW5Ob25jZQAAAAAAAA0AAAAyQSByZWZlcnJlciBhbmQgcmVmZXJlZSBjYW5ub3QgYmUgdGhlIHNhbWUgYWRkcmVzcy4AAAAAAAxTZWxmUmVmZXJyYWwAAAAOAAAASlRoZSByZWZlcmVlIHdhcyBwcmV2aW91c2x5IHJld2FyZGVkIGFzIGEgcmVmZXJlZSBvZiB0aGlzIHJlZmVycmVyIChjeWNsZSkuAAAAAAAQQ2lyY3VsYXJSZWZlcnJhbAAAAA8AAABGVGhpcyByZWZlcmVlIGhhcyBhbHJlYWR5IHRyaWdnZXJlZCBhIHJlZmVycmFsIGJvbnVzIChvbmUgcGVyIHJlZmVyZWUpLgAAAAAAF1JlZmVycmFsQWxyZWFkeVJld2FyZGVkAAAAABAAAAA/UGF5aW5nIHRoaXMgYm9udXMgd291bGQgZXhjZWVkIHRoZSBjb25maWd1cmVkIHBlci1yZWZlcnJlciBjYXAuAAAAABNSZWZlcnJhbENhcEV4Y2VlZGVkAAAAABEAAAA/UmVmZXJyYWwgcmV3YXJkcyBoYXZlIG5vdCBiZWVuIGNvbmZpZ3VyZWQgKGJvbnVzIHJhdGUgaXMgemVybykuAAAAABVSZWZlcnJhbE5vdENvbmZpZ3VyZWQAAAAAAAASAAAAL1RoZSBzdXBwbGllZCByZWZlcnJhbCBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuAAAAABVJbnZhbGlkUmVmZXJyYWxDb25maWcAAAAAAAATAAAAMVRoZSBjb21wdXRlZCByZWZlcnJhbCBib251cyByb3VuZGVkIGRvd24gdG8gemVyby4AAAAAAAARWmVyb1JlZmVycmFsQm9udXMAAAAAAAAUAAAAIVNFUC00MSB0b2tlbiBtb2RlIGlzIG5vdCBlbmFibGVkLgAAAAAAABNUb2tlbk1vZGVOb3RFbmFibGVkAAAAABUAAAAzU0VQLTQxOiBhbGxvd2FuY2Ugbm90IHN1ZmZpY2llbnQgZm9yIHRyYW5zZmVyX2Zyb20uAAAAABFBbGxvd2FuY2VFeGNlZWRlZAAAAAAAABYAAAAuU0VQLTQxOiBhcHByb3ZhbCBleHBpcmF0aW9uIGxlZGdlciBoYXMgcGFzc2VkLgAAAAAAD0FwcHJvdmFsRXhwaXJlZAAAAAAXAAAAPVNFUC00MTogaW52YWxpZCBleHBpcmF0aW9uIGxlZGdlciAobXVzdCBiZSA+IGN1cnJlbnQgbGVkZ2VyKS4AAAAAAAARSW52YWxpZEV4cGlyYXRpb24AAAAAAAAYAAAAAAAAABBJbnZhbGlkVGhyZXNob2xkAAAAGQAAAAAAAAAWSW5zdWZmaWNpZW50U2lnbmF0dXJlcwAAAAAAGgAAAAAAAAALTm9uY2VSZXVzZWQAAAAAGwAAAAAAAAAPRHVwbGljYXRlU2lnbmVyAAAAABwAAAAAAAAADVVua25vd25TaWduZXIAAAAAAAAdAAABAk9wZXJhdGlvbiBhbW91bnQgbXVzdCBiZSBncmVhdGVyIHRoYW4gemVybyAoaXNzdWUgIzEwMjApLgoKQXNzaWduZWQgMzAvMzEgcmF0aGVyIHRoYW4gMjEvMjI6IHRoZSBTRVAtNDEgYmxvY2sgYWxyZWFkeSBwdWJsaXNoZWQKdGhvc2UgY29kZXMgdGhyb3VnaCB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzIGFuZCBkb2NzL0NPTlRSQUNUU19BUEkubWQsCnNvIHJlbnVtYmVyaW5nIGl0IHdvdWxkIGJyZWFrIGRlY29kaW5nIGZvciBleGlzdGluZyBjbGllbnRzLgAAAAAAClplcm9BbW91bnQAAAAAAB4AAABJVHJhbnNmZXIgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBjYW5ub3QgYmUgdGhlIHNhbWUgYWRkcmVzcyAoaXNzdWUgIzEwMjApLgAAAAAAAAxTZWxmVHJhbnNmZXIAAAAf","AAAAAQAAADRWZXN0aW5nIHNjaGVkdWxlIHJlY29yZCBzdG9yZWQgcGVyIHVzZXIgcGVyIHZlc3RfaWQuAAAAAAAAAA1WZXN0aW5nUmVjb3JkAAAAAAAABAAAAAAAAAAHY2xhaW1lZAAAAAAGAAAAAAAAAAplbmRfbGVkZ2VyAAAAAAAEAAAAAAAAAAxzdGFydF9sZWRnZXIAAAAEAAAAAAAAAAV0b3RhbAAAAAAAAAY=","AAAAAAAAACFSZXR1cm4gdGhlIGN1cnJlbnQgYWRtaW4gYWRkcmVzcy4AAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAACtDbGFpbSByZXdhcmRzIGZvciBhIHVzZXIgKHJlZHVjZXMgYmFsYW5jZSkuAAAAAAVjbGFpbQAAAAAAAAIAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAYAAAABAAAD6QAAAAYAAAAD","AAAAAAAAABhDcmVkaXQgcG9pbnRzIHRvIGEgdXNlci4AAAAGY3JlZGl0AAAAAAADAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAEdXNlcgAAABMAAAAAAAAABmFtb3VudAAAAAAABgAAAAEAAAPpAAAABgAAAAM=","AAAAAAAAAJZSZWRlZW0gcG9pbnRzIGZvciBhc3NldCB0b2tlbnMuCkJ1cm5zIHBvaW50c19hbW91bnQgZnJvbSB1c2VyIGJhbGFuY2UsIHRyYW5zZmVycyBhc3NldCB0b2tlbnMgdG8gdXNlci4KUmV0dXJucyB0aGUgYW1vdW50IG9mIGFzc2V0IHRva2VucyB0cmFuc2ZlcnJlZC4AAAAAAAZyZWRlZW0AAAAAAAIAAAAAAAAABHVzZXIAAAATAAAAAAAAAA1wb2ludHNfYW1vdW50AAAAAAAABgAAAAEAAAPpAAAACwAAAAM=","AAAAAAAAACpHZXQgdGhlIGN1cnJlbnQgcG9pbnRzIGJhbGFuY2UgZm9yIGEgdXNlci4AAAAAAAdiYWxhbmNlAAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAAAY=","AAAAAAAAALdNaWdyYXRpb24gZW50cnlwb2ludCBmb3IgZnV0dXJlIHNjaGVtYSBjaGFuZ2VzLgoKQ3VycmVudCBiZWhhdmlvciBpcyBpbnRlbnRpb25hbGx5IGlkZW1wb3RlbnQgZm9yIHZlcnNpb24gYDFgLCBzbyBvcGVyYXRpb25hbApzY3JpcHRzIGNhbiBjYWxsIHRoaXMgc2FmZWx5IGR1cmluZyBkZXBsb3ltZW50cy91cGdyYWRlcy4AAAAAB21pZ3JhdGUAAAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAA50YXJnZXRfdmVyc2lvbgAAAAAABAAAAAEAAAPpAAAABAAAAAM=","AAAAAAAAAh5SZXBsYWNlIHRoZSBjb250cmFjdCBXQVNNIGluLXBsYWNlIHdpdGhvdXQgcmVzZXR0aW5nIHBhcnRpY2lwYW50IHN0YXRlLgoKQ2FsbHMgYGNvbnRyYWN0X3VwZGF0ZV9jdXJyZW50X2NvbnRyYWN0X3dhc21gIHdpdGggdGhlIHN1cHBsaWVkIGhhc2ggb2YKdGhlIG5ldyBXQVNNIGJsb2IuICBCYWxhbmNlcyBhbmQgdmVzdGluZyByZWNvcmRzIGluIHBlcnNpc3RlbnQgc3RvcmFnZQpzdXJ2aXZlIGJlY2F1c2UgU29yb2JhbiBXQVNNLW9ubHkgdXBncmFkZXMgbmV2ZXIgdG91Y2ggc3RvcmFnZS4KUmVxdWlyZXMgYWRtaW4gYXV0aCBhbmQgYSB2YWxpZCBub25jZSBzbyB1cGdyYWRlcyBhcmUgcmVwbGF5LXNhZmUuCgpUeXBpY2FsIHdvcmtmbG93IChpc3N1ZSAjNTE4KToKMS4gVXBsb2FkIG5ldyBXQVNNIOKGkiBvYnRhaW4gYG5ld193YXNtX2hhc2hgLgoyLiBDYWxsIGB1cGdyYWRlKGFkbWluLCBub25jZSwgbmV3X3dhc21faGFzaClgLgozLiBJZiBzdG9yYWdlIGxheW91dCBjaGFuZ2VkLCBjYWxsIGBtaWdyYXRlKGFkbWluLCB0YXJnZXRfdmVyc2lvbilgLgAAAAAAB3VwZ3JhZGUAAAAAAwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAVub25jZQAAAAAAAAsAAAAAAAAADW5ld193YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAChHZXQgY29udHJhY3QgbWV0YWRhdGEgKG5hbWUgYW5kIHN5bWJvbCkuAAAACG1ldGFkYXRhAAAAAAAAAAEAAAPtAAAAAgAAABEAAAAR","AAAAAAAAAQtSZWNvcmQgdGhlIGN1cnJlbnQgbGVkZ2VyIG51bWJlciB1bmRlciBgc25hcHNob3RfaWRgIChhZG1pbiBvbmx5KS4KRG9lcyBOT1QgY29weSBiYWxhbmNlcyDigJQgc3RvcmVzIGEgbGVkZ2VyIHJlZmVyZW5jZSBmb3Igb2ZmLWNoYWluIGluZGV4aW5nLgpPZmYtY2hhaW4gaW5kZXhlcnMgY2FuIHVzZSB0aGUgbGVkZ2VyIG51bWJlciB3aXRoIEhvcml6b24gYGdldExlZGdlckVudHJpZXNgCnRvIHJlY29uc3RydWN0IGJhbGFuY2VzIGF0IHRoYXQgcG9pbnQgaW4gdGltZS4AAAAACHNuYXBzaG90AAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAtzbmFwc2hvdF9pZAAAAAAGAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAABxDaGVjayBpZiBjb250cmFjdCBpcyBwYXVzZWQuAAAACWlzX3BhdXNlZAAAAAAAAAAAAAABAAAAAQ==","AAAAAAAAAEFDb25maWd1cmUgdGllcmVkIHJld2FyZCBkaXN0cmlidXRpb24gZm9yIGEgY2FtcGFpZ24gKGFkbWluIG9ubHkpLgAAAAAAAAlzZXRfdGllcnMAAAAAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAAC2NhbXBhaWduX2lkAAAAAAYAAAAAAAAABXRpZXJzAAAAAAAD6gAAA+0AAAACAAAABgAAAAYAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAChJbml0aWFsaXplIHRoZSByZXdhcmRzIGNvbnRyYWN0IChhZG1pbikuAAAACmluaXRpYWxpemUAAAAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAEbmFtZQAAABEAAAAAAAAABnN5bWJvbAAAAAAAEQAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAFBTRVAtNDE6IEJ1cm4gYGFtb3VudGAgZnJvbSBgZnJvbWAncyBiYWxhbmNlLgpSZXF1aXJlcyBhdXRob3JpemF0aW9uIGZyb20gYGZyb21gLgAAAApzZXA0MV9idXJuAAAAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAACZTRVAtNDE6IFJldHVybnMgdGhlIG5hbWUgb2YgdGhlIHRva2VuLgAAAAAACnNlcDQxX25hbWUAAAAAAAAAAAABAAAAEQ==","AAAAAAAAAX1QYXVzZSB0aGUgY29udHJhY3QuIEJsb2NrcyBjcmVkaXQgYW5kIGNsYWltIG9wZXJhdGlvbnMuCgpUaGlzIGlzIGEgY3JpdGljYWwgb3BlcmF0aW9uOiB3aGVuIGEgbXVsdGlzaWcgdGhyZXNob2xkIGlzIGNvbmZpZ3VyZWQKKHNlZSBbYFNlbGY6OnNldF9tdWx0aXNpZ190aHJlc2hvbGRgXSksIGBzaWduYXR1cmVzYCBtdXN0IGNvbnRhaW4gYXQKbGVhc3QgYHJlcXVpcmVkYCB2YWxpZCBjby1hZG1pbiBzaWduYXR1cmVzIG92ZXIKYChvcCwgbm9uY2UsIHNoYTI1NihwYXVzZWQpKWA7IG90aGVyd2lzZSBwYXNzIGFuIGVtcHR5IGBWZWNgIGFuZCB0aGUKbGVnYWN5IHNpbmdsZS1hZG1pbiBjaGVjayBhcHBsaWVzIChgbm9uY2VgIGlzIGlnbm9yZWQgaW4gdGhhdCBjYXNlKS4AAAAAAAAKc2V0X3BhdXNlZAAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAVub25jZQAAAAAAAAYAAAAAAAAABnBhdXNlZAAAAAAAAQAAAAAAAAAKc2lnbmF0dXJlcwAAAAAD6gAAA+0AAAACAAAAEwAAA+4AAABAAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAADNDbGVhciBjb25maWd1cmVkIHRpZXJzIGZvciBhIGNhbXBhaWduIChhZG1pbiBvbmx5KS4AAAAAC2NsZWFyX3RpZXJzAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAALY2FtcGFpZ25faWQAAAAABgAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAJFBY2NlcHQgYWRtaW4gcm9sZS4gQ2FsbGVyIE1VU1QgYmUgdGhlIGFkZHJlc3MgdGhhdCB0aGUgY3VycmVudCBhZG1pbgpwcmV2aW91c2x5IHByb3Bvc2VkIHZpYSBgcHJvcG9zZV9hZG1pbmAuIENsZWFycyB0aGUgcGVuZGluZyBzbG90IG9uCnN1Y2Nlc3MuAAAAAAAADGFjY2VwdF9hZG1pbgAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAIhSZWdpc3RlciBhIGNvLWFkbWluJ3MgZWQyNTUxOSBwdWJsaWMga2V5IGZvciBtdWx0aXNpZyB2ZXJpZmljYXRpb24KKGFkbWluIG9ubHkpLiBPdmVyd3JpdGVzIHRoZSBrZXkgaWYgYGNvX2FkbWluYCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuAAAADGFkZF9jb19hZG1pbgAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAIY29fYWRtaW4AAAATAAAAAAAAAAZwdWJrZXkAAAAAA+4AAAAgAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAGVDcmVkaXQgcG9pbnRzIHRvIG11bHRpcGxlIHVzZXJzIGluIG9uZSBjYWxsLgpFYWNoIHJlY2lwaWVudCBjb3VudHMgYXMgb25lIGNhbGwgdG93YXJkIHRoZSByYXRlIGxpbWl0LgAAAAAAAAxiYXRjaF9jcmVkaXQAAAACAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAKcmVjaXBpZW50cwAAAAAD6gAAA+0AAAACAAAAEwAAAAYAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAJ1DbGFpbSB1cCB0byBgYW1vdW50YCBmcm9tIHRoZSB1bmxvY2tlZCBwb3J0aW9uIG9mIGEgc3BlY2lmaWMgdmVzdGluZyBzY2hlZHVsZS4KUmV0dXJucyB0aGUgcmVtYWluaW5nIGNsYWltYWJsZSBhbW91bnQgaW4gdGhhdCB2ZXN0IHNjaGVkdWxlIGFmdGVyIHRoaXMgY2xhaW0uAAAAAAAADGNsYWltX3Zlc3RlZAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAd2ZXN0X2lkAAAAAAYAAAAAAAAABmFtb3VudAAAAAAABgAAAAEAAAPpAAAABgAAAAM=","AAAAAAAAAHZGdW5kIHJlZGVtcHRpb24gcmVzZXJ2ZSAoY2FsbGFibGUgYnkgYW55b25lLCB0eXBpY2FsbHkgYWRtaW4pLgpUcmFuc2ZlcnMgYXNzZXQgdG9rZW5zIGZyb20gY2FsbGVyIHRvIGNvbnRyYWN0IHJlc2VydmUuAAAAAAAMZnVuZF9yZXNlcnZlAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAABgAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAEBSZXR1cm5zIHRoZSBsZWRnZXIgbnVtYmVyIHJlY29yZGVkIGZvciBgc25hcHNob3RfaWRgLCBvciBgTm9uZWAuAAAADGdldF9zbmFwc2hvdAAAAAEAAAAAAAAAC3NuYXBzaG90X2lkAAAAAAYAAAABAAAD6AAAAAY=","AAAAAAAAAChTRVAtNDE6IFJldHVybnMgdGhlIHN5bWJvbCBvZiB0aGUgdG9rZW4uAAAADHNlcDQxX3N5bWJvbAAAAAAAAAABAAAAEQ==","AAAAAAAAAAAAAAAMdG90YWxfc3VwcGx5AAAAAAAAAAEAAAAG","AAAAAAAAAE5SZXR1cm5zIHRoZSBzdW0gb2YgYWxsIHZlc3Rpbmcgc2NoZWR1bGUgdG90YWxzIGZvciBhIHVzZXIgKHZlc3RlZCArIHVudmVzdGVkKS4AAAAAAAx0b3RhbF92ZXN0ZWQAAAABAAAAAAAAAAR1c2VyAAAAEwAAAAEAAAAG","AAAAAAAAAMtDcmVkaXQgYSBsaW5lYXJseS12ZXN0aW5nIGFtb3VudCB0byBhIHVzZXIgKGF1dGhvcml6ZWQgY2FsbGVyIG9ubHkpLgpWZXN0aW5nIGlzIGxpbmVhcjogYHVubG9ja2VkID0gdG90YWwgKiAobm93IC0gc3RhcnRfbGVkZ2VyKSAvIChlbmRfbGVkZ2VyIC0gc3RhcnRfbGVkZ2VyKWAuClJldHVybnMgdGhlIG5ldyB2ZXN0X2lkIGZvciB0aGlzIHNjaGVkdWxlLgAAAAANY3JlZGl0X3Zlc3RlZAAAAAAAAAUAAAAAAAAABGZyb20AAAATAAAAAAAAAAR1c2VyAAAAEwAAAAAAAAAMdG90YWxfYW1vdW50AAAABgAAAAAAAAAMc3RhcnRfbGVkZ2VyAAAABAAAAAAAAAAKZW5kX2xlZGdlcgAAAAAABAAAAAEAAAPpAAAABgAAAAM=","AAAAAAAAAB9DaGVjayBpZiB0b2tlbiBtb2RlIGlzIGVuYWJsZWQuAAAAAA1pc190b2tlbl9tb2RlAAAAAAAAAAAAAAEAAAAB","AAAAAAAAAHNSZXR1cm4gdGhlIHBlbmRpbmcgYWRtaW4gYWRkcmVzcyBwcm9wb3NlZCBieSB0aGUgY3VycmVudCBhZG1pbiwgaWYgYW55LgpgTm9uZWAgd2hlbiB0aGVyZSBpcyBubyBpbi1mbGlnaHQgdHJhbnNmZXIuAAAAAA1wZW5kaW5nX2FkbWluAAAAAAAAAAAAAAEAAAPoAAAAEw==","AAAAAAAAARxQcm9wb3NlIGEgbmV3IGFkbWluIChjdXJyZW50IGFkbWluIG9ubHkpLiBUaGUgdHJhbnNmZXIgZG9lcyBub3QgdGFrZQplZmZlY3QgdW50aWwgYGFjY2VwdF9hZG1pbmAgaXMgY2FsbGVkIGJ5IHRoZSBuZXcgYWRtaW4uCgpDYWxsaW5nIGFnYWluIG92ZXJ3cml0ZXMgdGhlIHByZXZpb3VzIHBlbmRpbmcgYWRtaW4sIHNvIHRoZSBjdXJyZW50CmFkbWluIGNhbiBjYW5jZWwgYSBwcm9wb3NhbCBieSBjYWxsaW5nIGBjYW5jZWxfYWRtaW5fdHJhbnNmZXJgIG9yIGJ5CnByb3Bvc2luZyB0aGVtc2VsdmVzLgAAAA1wcm9wb3NlX2FkbWluAAAAAAAAAgAAAAAAAAANY3VycmVudF9hZG1pbgAAAAAAABMAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAIZTRVAtNDE6IFNldCBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byBzcGVuZCBgYW1vdW50YCBmcm9tIGNhbGxlcidzIGJhbGFuY2UuCklmIGV4cGlyYXRpb25fbGVkZ2VyIGlzIDAsIHRoZSBhbGxvd2FuY2UgZG9lcyBub3QgZXhwaXJlLgAAAAAADXNlcDQxX2FwcHJvdmUAAAAAAAAEAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAAAAAAAEWV4cGlyYXRpb25fbGVkZ2VyAAAAAAAABAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAGJTRVAtNDE6IFJldHVybnMgdGhlIGJhbGFuY2Ugb2YgYGlkYCBhcyBpMTI4LgpNYXBzIGludGVybmFsIHU2NCBwb2ludHMgdG8gaTEyOCBwZXIgU0VQLTQxIHN0YW5kYXJkLgAAAAAADXNlcDQxX2JhbGFuY2UAAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAL","AAAAAAAAAOxTdG9yYWdlIHN0YXRzIGZvciBtb25pdG9yaW5nOiBgKHBhcnRpY2lwYW50X2NvdW50LCBub25jZV9jb3VudCwgZXhwaXJlZF9lc3RpbWF0ZSlgLgpgcGFydGljaXBhbnRfY291bnRgIGlzIGFsd2F5cyBgMGAgaGVyZTsgdGhlIHJld2FyZHMgY29udHJhY3QgdHJhY2tzCmJhbGFuY2VzLCBub3QgcGFydGljaXBhbnRzLiBgZXhwaXJlZF9lc3RpbWF0ZWAgY291bnRzIGN1cnJlbnRseS1zdGFsZQpub25jZSByZWNvcmRzLgAAAA1zdG9yYWdlX3N0YXRzAAAAAAAAAAAAAAEAAAPtAAAAAwAAAAYAAAAGAAAABg==","AAAAAAAAAClHZXQgdG90YWwgY2xhaW1lZCByZXdhcmRzIChnbG9iYWwgc3RhdHMpLgAAAAAAAA10b3RhbF9jbGFpbWVkAAAAAAAAAAAAAAEAAAAG","AAAAAAAAADZUcmFuc2ZlciBwb2ludHMgZnJvbSBvbmUgdXNlciB0byBhbm90aGVyIChhZG1pbiBvbmx5KS4AAAAAAA5hZG1pbl90cmFuc2ZlcgAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAABgAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAACxDcmVkaXQgcG9pbnRzIHRvIGEgdXNlciBiYXNlZCBvbiB0aGVpciByYW5rLgAAAA5jcmVkaXRfYnlfcmFuawAAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAABHVzZXIAAAATAAAAAAAAAARyYW5rAAAABgAAAAAAAAALY2FtcGFpZ25faWQAAAAABgAAAAEAAAPpAAAABgAAAAM=","AAAAAAAAAENSZXR1cm5zIGFsbCBgKHNuYXBzaG90X2lkLCBsZWRnZXJfbnVtYmVyKWAgcGFpcnMgaW4gY3JlYXRpb24gb3JkZXIuAAAAAA5saXN0X3NuYXBzaG90cwAAAAAAAAAAAAEAAAPqAAAD7QAAAAIAAAAGAAAABg==","AAAAAAAAADxSZXR1cm5zIHRoZSBhY3RpdmUgc3RvcmFnZSBzY2hlbWEgdmVyc2lvbiBmb3IgdGhpcyBjb250cmFjdC4AAAAOc2NoZW1hX3ZlcnNpb24AAAAAAAAAAAABAAAABA==","AAAAAAAAADhTRVAtNDE6IFJldHVybnMgdGhlIG51bWJlciBvZiBkZWNpbWFscyB1c2VkIGZvciBkaXNwbGF5LgAAAA5zZXA0MV9kZWNpbWFscwAAAAAAAAAAAAEAAAAE","AAAAAAAAAFJTRVAtNDE6IFRyYW5zZmVyIGBhbW91bnRgIGZyb20gYGZyb21gIHRvIGB0b2AuClJlcXVpcmVzIGF1dGhvcml6YXRpb24gZnJvbSBgZnJvbWAuAAAAAAAOc2VwNDFfdHJhbnNmZXIAAAAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAGtSZXR1cm5zIHRoZSBjdXJyZW50bHkgdW5sb2NrZWQgYnV0IHVuY2xhaW1lZCB2ZXN0ZWQgYmFsYW5jZSBmb3IgYSB1c2VyCmFjcm9zcyBhbGwgYWN0aXZlIHZlc3Rpbmcgc2NoZWR1bGVzLgAAAAAOdmVzdGVkX2JhbGFuY2UAAAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAAAY=","AAAAAAAAAAAAAAAPaXNfcGF1c2VkX2NsYWltAAAAAAAAAAABAAAAAQ==","AAAAAAAAAF9HZXQgcmVkZW1wdGlvbiByYXRlIGNvbmZpZ3VyYXRpb24uClJldHVybnMgKGFzc2V0X2FkZHJlc3MsIHJhdGVfYnBzKSBvciBOb25lIGlmIG5vdCBjb25maWd1cmVkLgAAAAAPcmVkZW1wdGlvbl9yYXRlAAAAAAAAAAABAAAD6AAAA+0AAAACAAAAEwAAAAQ=","AAAAAAAAAIpSZXR1cm5zIHRoZSByZWZlcnJhbCBjb25maWd1cmF0aW9uIGFzIGAocmF0ZV9icHMsIHBlcl9yZWZlcnJlcl9jYXApYC4KRGVmYXVsdHMgdG8gYCgwLCAwKWAgd2hlbiByZWZlcnJhbCByZXdhcmRzIGhhdmUgbm90IGJlZW4gY29uZmlndXJlZC4AAAAAAA9yZWZlcnJhbF9jb25maWcAAAAAAAAAAAEAAAPtAAAAAgAAAAQAAAAG","AAAAAAAAADxSZW1vdmUgYSBjby1hZG1pbiBmcm9tIHRoZSBtdWx0aXNpZyBzaWduZXIgc2V0IChhZG1pbiBvbmx5KS4AAAAPcmVtb3ZlX2NvX2FkbWluAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAIY29fYWRtaW4AAAATAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAD9TRVAtNDE6IFJldHVybnMgdGhlIGFsbG93YW5jZSBgb3duZXJgIGhhcyBncmFudGVkIHRvIGBzcGVuZGVyYC4AAAAAD3NlcDQxX2FsbG93YW5jZQAAAAACAAAAAAAAAAVvd25lcgAAAAAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAGNTRVAtNDE6IEJ1cm4gYGFtb3VudGAgZnJvbSBgZnJvbWAncyBiYWxhbmNlIHVzaW5nIGFsbG93YW5jZS4KUmVxdWlyZXMgYXV0aG9yaXphdGlvbiBmcm9tIGBzcGVuZGVyYC4AAAAAD3NlcDQxX2J1cm5fZnJvbQAAAAADAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAAAAAAAQaXNfcGF1c2VkX2NyZWRpdAAAAAAAAAABAAAAAQ==","AAAAAAAAAAAAAAAQaXNfcGF1c2VkX3JlZGVlbQAAAAAAAAABAAAAAQ==","AAAAAAAAAEdQYXVzZSBvciB1bnBhdXNlIHRoZSBgY2xhaW1gIC8gYGNsYWltX3Zlc3RlZGAgb3BlcmF0aW9ucyBpbmRlcGVuZGVudGx5LgAAAAAQc2V0X3BhdXNlZF9jbGFpbQAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAGcGF1c2VkAAAAAAABAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAF5XaXRoZHJhdyBhc3NldCB0b2tlbnMgZnJvbSByZWRlbXB0aW9uIHJlc2VydmUgKGFkbWluIG9ubHkpLgpVc2VkIHRvIHJlY2xhaW0gdW5yZWRlZW1lZCBhc3NldHMuAAAAAAAQd2l0aGRyYXdfcmVzZXJ2ZQAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAALAAAAAAAAAAZhbW91bnQAAAAAAAYAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAEZHZXQgdGhlIG51bWJlciBvZiBjcmVkaXQgY2FsbHMgbWFkZSBieSBgY2FsbGVyYCBpbiB0aGUgY3VycmVudCB3aW5kb3cuAAAAAAARY3JlZGl0X2NhbGxfY291bnQAAAAAAAABAAAAAAAAAAZjYWxsZXIAAAAAABMAAAABAAAABA==","AAAAAAAAAJdFbmFibGUgdG9rZW4gbW9kZSAoYWRtaW4gb25seSkuIE9uZS13YXk6IG9uY2UgZW5hYmxlZCwgY2Fubm90IGJlIGRpc2FibGVkLgpUaGlzIGVuYWJsZXMgU0VQLTQxLWNvbXBsaWFudCB0b2tlbiBpbnRlcmZhY2UgYWxvbmdzaWRlIGV4aXN0aW5nIHBvaW50cyBBUEkuAAAAABFlbmFibGVfdG9rZW5fbW9kZQAAAAAAAAQAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAEbmFtZQAAABEAAAAAAAAABnN5bWJvbAAAAAAAEQAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAADRHZXQgcG9pbnRzIHJld2FyZCBmb3IgYSBnaXZlbiByYW5rIHVuZGVyIGEgY2FtcGFpZ24uAAAAEWdldF90aWVyX2Zvcl9yYW5rAAAAAAAAAgAAAAAAAAAEcmFuawAAAAYAAAAAAAAAC2NhbXBhaWduX2lkAAAAAAYAAAABAAAABg==","AAAAAAAAALhSZW1vdmUgbXVsdGlzaWcgbm9uY2UgcmVjb3JkcyBvbGRlciB0aGFuIFtgTk9OQ0VfVFRMX0xFREdFUlNgXSwgdXAgdG8KYG1heF9lbnRyaWVzYCBwZXIgY2FsbC4gQ2FsbGFibGUgYnkgYW55b25lIHNpbmNlIGl0IG9ubHkgZGVsZXRlcwpzdGFsZSBkYXRhLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZW50cmllcyBwcnVuZWQuAAAAEXBydW5lX3VzZWRfbm9uY2VzAAAAAAAAAQAAAAAAAAALbWF4X2VudHJpZXMAAAAABAAAAAEAAAAE","AAAAAAAAAIFQYXVzZSBvciB1bnBhdXNlIHRoZSBgY3JlZGl0YCAvIGBiYXRjaF9jcmVkaXRgIC8gYGNyZWRpdF92ZXN0ZWRgIC8KYGNyZWRpdF9ieV9yYW5rYCBvcGVyYXRpb25zIGluZGVwZW5kZW50bHkgb2YgdGhlIGdsb2JhbCBwYXVzZS4AAAAAAAARc2V0X3BhdXNlZF9jcmVkaXQAAAAAAAACAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABnBhdXNlZAAAAAAAAQAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAADZQYXVzZSBvciB1bnBhdXNlIHRoZSBgcmVkZWVtYCBvcGVyYXRpb24gaW5kZXBlbmRlbnRseS4AAAAAABFzZXRfcGF1c2VkX3JlZGVlbQAAAAAAAAIAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAGcGF1c2VkAAAAAAABAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAEBSZXR1cm5zIHRoZSBjb25maWd1cmVkIE0tb2YtTiBtdWx0aXNpZyB0aHJlc2hvbGQgKDAgPSBkaXNhYmxlZCkuAAAAEm11bHRpc2lnX3RocmVzaG9sZAAAAAAAAAAAAAEAAAAE","AAAAAAAAAxlQYXkgYSByZWZlcnJlciB0aGUgY29uZmlndXJlZCBib251cyBmb3IgYSByZWZlcmVlJ3MgcXVhbGlmeWluZyBhY3Rpb24KKGFkbWluIG9ubHkpLiBFbmZvcmNlcyB0aGUgYW50aS1hYnVzZSBpbnZhcmlhbnRzIG9uLWNoYWluOgoKLSAqKnNlbGYtcmVmZXJyYWwqKjogYHJlZmVycmVyID09IHJlZmVyZWVgIGlzIHJlamVjdGVkLgotICoqY2lyY3VsYXIqKjogcmVqZWN0ZWQgd2hlbiBgcmVmZXJyZXJgIHdhcyBpdHNlbGYgcHJldmlvdXNseSByZXdhcmRlZCBhcwphIHJlZmVyZWUgb2YgYHJlZmVyZWVgIChhbiBgQSDihpIgQmAgdGhlbiBgQiDihpIgQWAgY3ljbGUpLgotICoqdW5pcXVlbmVzcyAvIHN5YmlsIGdhdGUqKjogZWFjaCBgcmVmZXJlZWAgY2FuIHRyaWdnZXIgYXQgbW9zdCBvbmUKcmVmZXJyYWwgYm9udXMsIGV2ZXIg4oCUIG1ha2luZyB0aGUgcGF5b3V0IGlkZW1wb3RlbnQgYW5kIGFsbC1vci1ub3RoaW5nLgotICoqcGVyLXJlZmVycmVyIGNhcCoqOiB0aGUgcmVmZXJyZXIncyBjdW11bGF0aXZlIGJvbnVzIG1heSBub3QgZXhjZWVkIHRoZQpjb25maWd1cmVkIGNhcC4KCk9uIHN1Y2Nlc3MgdGhlIGJvbnVzIGlzIGNyZWRpdGVkIHRvIGByZWZlcnJlcmAncyBiYWxhbmNlIChlbWl0dGluZyB0aGUKc3RhbmRhcmQgYGNyZWRpdGAgZXZlbnQgc28gYmFsYW5jZSBpbmRleGVycyBzdGF5IGNvbnNpc3RlbnQpIGFuZCBhCmByZWZfYm9udXNgIGV2ZW50IGlzIHB1Ymxpc2hlZCBmb3IgYXR0cmlidXRpb24vaW5zdHJ1bWVudGF0aW9uLiBSZXR1cm5zCnRoZSBib251cyBhbW91bnQgY3JlZGl0ZWQuAAAAAAAAEnBheV9yZWZlcnJhbF9ib251cwAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAhyZWZlcnJlcgAAABMAAAAAAAAAB3JlZmVyZWUAAAAAEwAAAAAAAAARcXVhbGlmeWluZ19hbW91bnQAAAAAAAAGAAAAAQAAA+kAAAAGAAAAAw==","AAAAAAAAACdHZXQgY3VycmVudCByZWRlbXB0aW9uIHJlc2VydmUgYmFsYW5jZS4AAAAAEnJlZGVtcHRpb25fcmVzZXJ2ZQAAAAAAAAAAAAEAAAAG","AAAAAAAAAERSZXR1cm5zIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzIGZvciBjYW1wYWlnbiwgZGVmYXVsdHMgdG8gMTBfMDAwLgAAABNjYW1wYWlnbl9tdWx0aXBsaWVyAAAAAAEAAAAAAAAAC2NhbXBhaWduX2lkAAAAAAYAAAABAAAABA==","AAAAAAAAAHpDcmVkaXQgcG9pbnRzIHVzaW5nIGNhbXBhaWduIG11bHRpcGxpZXIuIFJvdW5kaW5nIHVzZXMgZmxvb3IgZGl2aXNpb246CmBhZGp1c3RlZCA9IGJhc2VfYW1vdW50ICogbXVsdGlwbGllcl9icHMgLyAxMF8wMDBgLgAAAAAAE2NyZWRpdF9mb3JfY2FtcGFpZ24AAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAtjYW1wYWlnbl9pZAAAAAAGAAAAAAAAAAtiYXNlX2Ftb3VudAAAAAAGAAAAAQAAA+kAAAAGAAAAAw==","AAAAAAAAAEZHZXQgbWF4aW11bSBhbW91bnQgYWxsb3dlZCBwZXIgc2luZ2xlIGNyZWRpdCBjYWxsICgwIG1lYW5zIHVubGltaXRlZCkuAAAAAAATbWF4X2NyZWRpdF9wZXJfY2FsbAAAAAAAAAAAAQAAAAY=","AAAAAAAAAGVTRVAtNDE6IFRyYW5zZmVyIGBhbW91bnRgIGZyb20gYGZyb21gIHRvIGB0b2AgdXNpbmcgYWxsb3dhbmNlLgpSZXF1aXJlcyBhdXRob3JpemF0aW9uIGZyb20gYHNwZW5kZXJgLgAAAAAAABNzZXA0MV90cmFuc2Zlcl9mcm9tAAAAAAQAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAEZnJvbQAAABMAAAAAAAAAAnRvAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAsAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAMVTZXQgcmVkZW1wdGlvbiByYXRlIGZvciBwb2ludHMtdG8tYXNzZXQgY29udmVyc2lvbiAoYWRtaW4gb25seSkuCnJhdGVfYnBzOiBob3cgbWFueSB1bml0cyBvZiBhc3NldCBwZXIgMTAsMDAwIHBvaW50cyAoYmFzaXMgcG9pbnRzKS4KRXhhbXBsZTogcmF0ZV9icHMgPSAxMDAgbWVhbnMgMTAwLzEwLDAwMCA9IDAuMDEgYXNzZXQgcGVyIHBvaW50LgAAAAAAABNzZXRfcmVkZW1wdGlvbl9yYXRlAAAAAAQAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAALAAAAAAAAAAVhc3NldAAAAAAAABMAAAAAAAAACHJhdGVfYnBzAAAABAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAU9Db25maWd1cmUgdGhlIG9uLWNoYWluIHJlZmVycmFsIHJld2FyZCBlbmdpbmUgKGFkbWluIG9ubHkpLgoKYHJhdGVfYnBzYCBpcyB0aGUgcmVmZXJyZXIgYm9udXMgYXMgYmFzaXMgcG9pbnRzIG9mIGEgcmVmZXJlZSdzCnF1YWxpZnlpbmcgYW1vdW50IChgYm9udXMgPSBxdWFsaWZ5aW5nX2Ftb3VudCAqIHJhdGVfYnBzIC8gMTBfMDAwYCkgYW5kCm11c3QgYmUgaW4gYDEuLj1NQVhfUkVGRVJSQUxfUkFURV9CUFNgLiBgcGVyX3JlZmVycmVyX2NhcGAgaXMgdGhlIG1heGltdW0KY3VtdWxhdGl2ZSBib251cyBhIHNpbmdsZSByZWZlcnJlciBtYXkgZWFybjsgYDBgIG1lYW5zIHVuY2FwcGVkLgAAAAATc2V0X3JlZmVycmFsX2NvbmZpZwAAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAACHJhdGVfYnBzAAAABAAAAAAAAAAQcGVyX3JlZmVycmVyX2NhcAAAAAYAAAABAAAD6QAAAAIAAAAD","AAAAAAAAADFDdW11bGF0aXZlIHJlZmVycmFsIGJvbnVzIGNyZWRpdGVkIHRvIGByZWZlcnJlcmAuAAAAAAAAFHJlZmVycmFsX2JvbnVzX3RvdGFsAAAAAQAAAAAAAAAIcmVmZXJyZXIAAAATAAAAAQAAAAY=","AAAAAAAAADVUaGUgcmVmZXJyZXIgdGhhdCB3YXMgcmV3YXJkZWQgZm9yIGByZWZlcmVlYCwgaWYgYW55LgAAAAAAABRyZXdhcmRlZF9yZWZlcnJlcl9vZgAAAAEAAAAAAAAAB3JlZmVyZWUAAAAAEwAAAAEAAAPoAAAAEw==","AAAAAAAAADhDYW5jZWwgYW4gaW4tZmxpZ2h0IGFkbWluIHRyYW5zZmVyIChjdXJyZW50IGFkbWluIG9ubHkpLgAAABVjYW5jZWxfYWRtaW5fdHJhbnNmZXIAAAAAAAABAAAAAAAAAA1jdXJyZW50X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAG9HZXQgdGhlIGN1cnJlbnQgcmF0ZSBsaW1pdCBjb25maWc6IGAobWF4X2NhbGxzLCB3aW5kb3dfbGVkZ2VycylgLgpSZXR1cm5zIGAoMCwgMClgIHdoZW4gbm8gbGltaXQgaXMgY29uZmlndXJlZC4AAAAAFWdldF9jcmVkaXRfcmF0ZV9saW1pdAAAAAAAAAAAAAABAAAD7QAAAAIAAAAEAAAABA==","AAAAAAAAADROdW1iZXIgb2YgcmVmZXJlZXMgYHJlZmVycmVyYCBoYXMgYmVlbiByZXdhcmRlZCBmb3IuAAAAFXJlZmVycmFsX3Jld2FyZF9jb3VudAAAAAAAAAEAAAAAAAAACHJlZmVycmVyAAAAEwAAAAEAAAAG","AAAAAAAAAJxTZXQgcGVyLWNhbGxlciBjcmVkaXQgcmF0ZSBsaW1pdCAoYWRtaW4gb25seSkuCmBtYXhfY2FsbHNgIGNyZWRpdHMgYWxsb3dlZCBwZXIgYHdpbmRvd19sZWRnZXJzYCBsZWRnZXIgd2luZG93LgpTZXQgYG1heF9jYWxscyA9IDBgIHRvIGRpc2FibGUgcmF0ZSBsaW1pdGluZy4AAAAVc2V0X2NyZWRpdF9yYXRlX2xpbWl0AAAAAAAAAwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltYXhfY2FsbHMAAAAAAAAEAAAAAAAAAA53aW5kb3dfbGVkZ2VycwAAAAAABAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAExBbGlhcyBmb3IgcmVkZW1wdGlvbl9yZXNlcnZlIOKAlCByZXR1cm5zIHRoZSBjdXJyZW50IHBheW91dCByZXNlcnZlIGJhbGFuY2UuAAAAFnBheW91dF9yZXNlcnZlX2JhbGFuY2UAAAAAAAAAAAABAAAACw==","AAAAAAAAAIxTZXQgdGhlIE0tb2YtTiBtdWx0aXNpZyB0aHJlc2hvbGQgZm9yIGNyaXRpY2FsIG9wZXJhdGlvbnMgKGFkbWluIG9ubHkpLgpgcmVxdWlyZWQgPSAwYCBkaXNhYmxlcyBtdWx0aXNpZyAobGVnYWN5IHNpbmdsZS1hZG1pbiBhdXRoIGFwcGxpZXMpLgAAABZzZXRfbXVsdGlzaWdfdGhyZXNob2xkAAAAAAACAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAACHJlcXVpcmVkAAAABAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAHtTZXQgY2FtcGFpZ24tc3BlY2lmaWMgcmV3YXJkIG11bHRpcGxpZXIgaW4gYmFzaXMgcG9pbnRzIChhZG1pbiBvbmx5KS4KRXhhbXBsZTogMTBfMDAwID0gMS4weCwgMTJfNTAwID0gMS4yNXgsIDVfMDAwID0gMC41eC4AAAAAF3NldF9jYW1wYWlnbl9tdWx0aXBsaWVyAAAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAALY2FtcGFpZ25faWQAAAAABgAAAAAAAAAObXVsdGlwbGllcl9icHMAAAAAAAQAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAF5TZXQgbWF4aW11bSBhbW91bnQgYWxsb3dlZCBwZXIgc2luZ2xlIGNyZWRpdCBjYWxsIChhZG1pbiBvbmx5KS4KU2V0IHRvIDAgdG8gZGlzYWJsZSB0aGUgbGltaXQuAAAAAAAXc2V0X21heF9jcmVkaXRfcGVyX2NhbGwAAAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAptYXhfYW1vdW50AAAAAAAGAAAAAQAAA+kAAAACAAAAAw=="]),e),this.options=e,this.fromJSON={admin:this.txFromJSON,claim:this.txFromJSON,credit:this.txFromJSON,redeem:this.txFromJSON,balance:this.txFromJSON,migrate:this.txFromJSON,upgrade:this.txFromJSON,metadata:this.txFromJSON,snapshot:this.txFromJSON,is_paused:this.txFromJSON,set_tiers:this.txFromJSON,initialize:this.txFromJSON,sep41_burn:this.txFromJSON,sep41_name:this.txFromJSON,set_paused:this.txFromJSON,clear_tiers:this.txFromJSON,accept_admin:this.txFromJSON,add_co_admin:this.txFromJSON,batch_credit:this.txFromJSON,claim_vested:this.txFromJSON,fund_reserve:this.txFromJSON,get_snapshot:this.txFromJSON,sep41_symbol:this.txFromJSON,total_supply:this.txFromJSON,total_vested:this.txFromJSON,credit_vested:this.txFromJSON,is_token_mode:this.txFromJSON,pending_admin:this.txFromJSON,propose_admin:this.txFromJSON,sep41_approve:this.txFromJSON,sep41_balance:this.txFromJSON,storage_stats:this.txFromJSON,total_claimed:this.txFromJSON,admin_transfer:this.txFromJSON,credit_by_rank:this.txFromJSON,list_snapshots:this.txFromJSON,schema_version:this.txFromJSON,sep41_decimals:this.txFromJSON,sep41_transfer:this.txFromJSON,vested_balance:this.txFromJSON,is_paused_claim:this.txFromJSON,redemption_rate:this.txFromJSON,referral_config:this.txFromJSON,remove_co_admin:this.txFromJSON,sep41_allowance:this.txFromJSON,sep41_burn_from:this.txFromJSON,is_paused_credit:this.txFromJSON,is_paused_redeem:this.txFromJSON,set_paused_claim:this.txFromJSON,withdraw_reserve:this.txFromJSON,credit_call_count:this.txFromJSON,enable_token_mode:this.txFromJSON,get_tier_for_rank:this.txFromJSON,prune_used_nonces:this.txFromJSON,set_paused_credit:this.txFromJSON,set_paused_redeem:this.txFromJSON,multisig_threshold:this.txFromJSON,pay_referral_bonus:this.txFromJSON,redemption_reserve:this.txFromJSON,campaign_multiplier:this.txFromJSON,credit_for_campaign:this.txFromJSON,max_credit_per_call:this.txFromJSON,sep41_transfer_from:this.txFromJSON,set_redemption_rate:this.txFromJSON,set_referral_config:this.txFromJSON,referral_bonus_total:this.txFromJSON,rewarded_referrer_of:this.txFromJSON,cancel_admin_transfer:this.txFromJSON,get_credit_rate_limit:this.txFromJSON,referral_reward_count:this.txFromJSON,set_credit_rate_limit:this.txFromJSON,payout_reserve_balance:this.txFromJSON,set_multisig_threshold:this.txFromJSON,set_campaign_multiplier:this.txFromJSON,set_max_credit_per_call:this.txFromJSON}}static async deploy(e){return nt.Client.deploy(null,e)}};typeof window<"u"&&(window.Buffer=window.Buffer||sn.Buffer);class Ft extends nt.Client{constructor(e){super(new nt.Spec(["AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAFwAAAAAAAAAMVW5hdXRob3JpemVkAAAAZAAAAAAAAAART3V0c2lkZVRpbWVXaW5kb3cAAAAAAABlAAAAAAAAAApDYXBSZWFjaGVkAAAAAABmAAAAAAAAABBDYW1wYWlnbkluYWN0aXZlAAAAZwAAAAAAAAAOTm90SW5BbGxvd2xpc3QAAAAAAGgAAAAAAAAAFFVuc3VwcG9ydGVkTWlncmF0aW9uAAAAaQAAAAAAAAARSW52YWxpZEFkbWluTm9uY2UAAAAAAABqAAAAAAAAAA1JbnZhbGlkV2luZG93AAAAAAAAawAAAAAAAAAOTm9QZW5kaW5nQWRtaW4AAAAAAGwAAAAAAAAADFNlbGZSZWZlcnJhbAAAAG0AAAAAAAAAFVJlZmVycmVyTm90UmVnaXN0ZXJlZAAAAAAAAG4AAABGVGhlIGNhbXBhaWduJ3MgcHJpdmFjeSBtb2RlIGRvZXMgbm90IG1hdGNoIHRoZSByZWdpc3RyYXRpb24gcGF0aCB1c2VkLgAAAAAAEkludmFsaWRQcml2YWN5TW9kZQAAAAAAbwAAACNUaGUgWksgcHJvb2YgaXMgZW1wdHkgb3IgbWFsZm9ybWVkLgAAAAAMSW52YWxpZFByb29mAAAAcAAAAEhUaGUgbnVsbGlmaWVyIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYSByZWdpc3RyYXRpb24gaW4gdGhpcyBjYW1wYWlnbi4AAAAUTnVsbGlmaWVyQWxyZWFkeVVzZWQAAABxAAAAAAAAABJJbnZpdGVDb2RlUmVxdWlyZWQAAAAAAHIAAAAAAAAAEUludmFsaWRJbnZpdGVDb2RlAAAAAAAAcwAAAAAAAAARSW52aXRlQWxyZWFkeVVzZWQAAAAAAAB0AAAAAAAAAA5JbnZpdGVOb3RGb3VuZAAAAAAAdQAAAAAAAAAQSW52YWxpZFRocmVzaG9sZAAAAHYAAAAAAAAAFkluc3VmZmljaWVudFNpZ25hdHVyZXMAAAAAAHcAAAAAAAAAC05vbmNlUmV1c2VkAAAAAHgAAAAAAAAAD0R1cGxpY2F0ZVNpZ25lcgAAAAB5AAAAAAAAAA1Vbmtub3duU2lnbmVyAAAAAAAAeg==","AAAAAwAAAAAAAAAAAAAAC1ByaXZhY3lNb2RlAAAAAAMAAAApT3BlbiByZWdpc3RyYXRpb24g4oCUIG5vIHByb29mcyByZXF1aXJlZC4AAAAAAAAETm9uZQAAAAAAAAA4TWVya2xlIGFsbG93bGlzdCDigJQgc3RhbmRhcmQgbGVhZiArIHByb29mIHJlZ2lzdHJhdGlvbi4AAAAGTWVya2xlAAAAAAABAAAANFpLIHJlZ2lzdHJhdGlvbiDigJQgcmVxdWlyZXMgYSB6ZXJvLWtub3dsZWRnZSBwcm9vZi4AAAACWmsAAAAAAAI=","AAAAAgAAAAAAAAAAAAAADEFjdGl2aXR5S2luZAAAAAMAAAAAAAAAAAAAAAhSZWdpc3RlcgAAAAAAAAAAAAAABkNyZWRpdAAAAAAAAAAAAAAAAAAFQ2xhaW0AAAA=","AAAAAQAAAAAAAAAAAAAADUFjdGl2aXR5RW50cnkAAAAAAAAEAAAAAAAAAAVhY3RvcgAAAAAAABMAAAAAAAAABmFtb3VudAAAAAAD6AAAAAYAAAAAAAAABGtpbmQAAAfQAAAADEFjdGl2aXR5S2luZAAAAAAAAAAGbGVkZ2VyAAAAAAAE","AAAAAwAAAAAAAAAAAAAADlVuaXF1ZW5lc3NNb2RlAAAAAAACAAAAL05vIHVuaXF1ZW5lc3MgZW5mb3JjZW1lbnQg4oCUIGN1cnJlbnQgYmVoYXZpb3IuAAAAAAROb25lAAAAAAAAAD1OdWxsaWZpZXItYmFzZWQgdW5pcXVlbmVzcyDigJQgb25lIGVudHJ5IHBlciB1bmlxdWUgaWRlbnRpdHkuAAAAAAAACU51bGxpZmllcgAAAAAAAAE=","AAAAAAAAACFSZXR1cm4gdGhlIGN1cnJlbnQgYWRtaW4gYWRkcmVzcy4AAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAALZNaWdyYXRpb24gZW50cnlwb2ludCBmb3IgZnV0dXJlIHNjaGVtYSB0cmFuc2l0aW9ucy4KCkZvciBub3csIHZlcnNpb24gYDFgIGlzIHRoZSBvbmx5IHN1cHBvcnRlZCBzY2hlbWEgYW5kIHRoaXMgZnVuY3Rpb24Kc2VydmVzIGFzIGFuIGlkZW1wb3RlbnQgbWlncmF0aW9uIGhvb2sgZm9yIHVwZ3JhZGUgd29ya2Zsb3dzLgAAAAAAB21pZ3JhdGUAAAAAAgAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAA50YXJnZXRfdmVyc2lvbgAAAAAABAAAAAEAAAPpAAAABAAAAAM=","AAAAAAAAAlxSZXBsYWNlIHRoZSBjb250cmFjdCBXQVNNIGluLXBsYWNlIHdpdGhvdXQgcmVzZXR0aW5nIHBhcnRpY2lwYW50IHN0YXRlLgoKQ2FsbHMgYGNvbnRyYWN0X3VwZGF0ZV9jdXJyZW50X2NvbnRyYWN0X3dhc21gIHdpdGggdGhlIHN1cHBsaWVkIGhhc2ggb2YKdGhlIG5ldyBXQVNNIGJsb2IgKG11c3QgYWxyZWFkeSBiZSB1cGxvYWRlZCB2aWEKYEVudjo6ZGVwbG95ZXIoKS51cGxvYWRfY29udHJhY3Rfd2FzbWApLiAgUGFydGljaXBhbnQgcmVjb3JkcyBpbgpwZXJzaXN0ZW50IHN0b3JhZ2Ugc3Vydml2ZSBiZWNhdXNlIFNvcm9iYW4gV0FTTS1vbmx5IHVwZ3JhZGVzIG5ldmVyCnRvdWNoIHN0b3JhZ2UuICBSZXF1aXJlcyBhZG1pbiBhdXRoIGFuZCBhIHZhbGlkIG5vbmNlIHNvIHVwZ3JhZGVzIGFyZQpyZXBsYXktc2FmZS4KClR5cGljYWwgd29ya2Zsb3cgKGlzc3VlICM1MTgpOgoxLiBVcGxvYWQgbmV3IFdBU00g4oaSIG9idGFpbiBgbmV3X3dhc21faGFzaGAuCjIuIENhbGwgYHVwZ3JhZGUoYWRtaW4sIG5vbmNlLCBuZXdfd2FzbV9oYXNoKWAuCjMuIElmIHN0b3JhZ2UgbGF5b3V0IGNoYW5nZWQsIGNhbGwgYG1pZ3JhdGUoYWRtaW4sIHRhcmdldF92ZXJzaW9uKWAuAAAAB3VwZ3JhZGUAAAAAAwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAVub25jZQAAAAAAAAYAAAAAAAAADW5ld193YXNtX2hhc2gAAAAAAAPuAAAAIAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAABABSZWdpc3RlciBhIHBhcnRpY2lwYW50LgoKYGxlYWZgICDigJMgdGhlIDMyLWJ5dGUgbGVhZiB2YWx1ZSBjb21taXR0ZWQgaW4gdGhlIE1lcmtsZSB0cmVlIGZvciB0aGlzCnBhcnRpY2lwYW50LiAgTXVzdCBiZSBgc2hhMjU2KGFkZHJlc3NfeGRyX2J5dGVzKWAgZm9yIHRoZQpjYWxsZXIncyBhZGRyZXNzLCBjb21wdXRlZCBieSBvZmYtY2hhaW4gdG9vbGluZy4KCmBwcm9vZmAg4oCTIG9yZGVyZWQgbGlzdCBvZiBzaWJsaW5nIGhhc2hlcyBmb3IgdGhlIE1lcmtsZSBwYXRoIGZyb20KYGxlYWZgIHRvIHRoZSBzdG9yZWQgcm9vdC4gIFBhc3MgYW4gZW1wdHkgYFZlY2Agd2hlbiBubyByb290CmlzIGNvbmZpZ3VyZWQuCgpgaW52aXRlX2NvZGVgIOKAkyByZXF1aXJlZCB3aGVuIGludml0ZS1vbmx5IG1vZGUgaXMgZW5hYmxlZCAoc2VlCltgU2VsZjo6c2V0X2ludml0ZV9vbmx5YF0pOyBgc2hhMjU2KGludml0ZV9jb2RlKWAgbXVzdCBtYXRjaAphIGhhc2ggaXNzdWVkIHZpYSBbYFNlbGY6Omlzc3VlX2ludml0ZWBdIHRoYXQgaGFzIG5vdCB5ZXQKYmVlbiByZWRlZW1lZC4gUGFzcyBgTm9uZWAgd2hlbiBpbnZpdGUtb25seSBtb2RlIGlzIG9mZi4KCmByZWZlcnJlcmAg4oCTIG9wdGlvbmFsIGFkZHJlc3Mgb2YgYW4gYWxyZWFkeS1yZWdpc3RlcmVkIHBhcnRpY2lwYW50IHdobwpyZWZlcnJlZCB0aGlzIHJlZ2lzdHJhbnQgKGlzc3VlICM0NTUpLiBXaGVuIHN1cHBsaWVkLCB0aGUKY29udHJhY3QgcmVjb3JkcyBgKHJlZmVyZWUgLT4gcmVmZXJyZXIpYCwgaW5jcmVtZW50cyB0aGUKcmVmZXJyZXIncyB0YWxseSwgYW5kIGVtaXRzIGEgYHJlZmVycmVkYCBldmVudCBzbyB0aGUgYmFja2VuZAppbmRleGVyIGNhbiBjcmVkaXQgdGhlIHJlZmVycmFsIGJvbnVzIHRydXN0bGVzc2x5LiBBIHJlZmVycmVyCmNhbm5vdCByZWZlciB0aGVtc2VsdmVzIChgRXJyb3I6OlNlbGZSZWZlcnJhbGApIGFuZCBtdXN0CmFscmVhZHkgYmUgcmVnaXN0ZXJlZCAoYEVycm9yOjpSZWZlcnJlck5vdFJlZ2lzdGVyZWRgKS4KUmVmZXJyAAAACHJlZ2lzdGVyAAAABQAAAAAAAAALcGFydGljaXBhbnQAAAAAEwAAAAAAAAAEbGVhZgAAA+4AAAAgAAAAAAAAAAVwcm9vZgAAAAAAA+oAAAPuAAAAIAAAAAAAAAALaW52aXRlX2NvZGUAAAAD6AAAAA4AAAAAAAAACHJlZmVycmVyAAAD6AAAABMAAAABAAAD6QAAAAEAAAAD","AAAAAAAAABxDaGVjayBpZiBjYW1wYWlnbiBpcyBhY3RpdmUuAAAACWlzX2FjdGl2ZQAAAAAAAAAAAAABAAAAAQ==","AAAAAAAAAJ1EZXJlZ2lzdGVyIGEgcGFydGljaXBhbnQuCgpDaGVja3MgbGl2ZW5lc3Mvd2luZG93OiBpZiBlbmRfdGltZSBpcyB1NjQ6Ok1BWCwgY2hlY2tzIGlmIGNhbXBhaWduIGlzIGFjdGl2ZTsKb3RoZXJ3aXNlLCBjaGVja3MgaWYgY3VycmVudCB0aW1lc3RhbXAgPD0gZW5kX3RpbWUuAAAAAAAACmRlcmVnaXN0ZXIAAAAAAAEAAAAAAAAAC3BhcnRpY2lwYW50AAAAABMAAAABAAAD6QAAAAEAAAAD","AAAAAAAAAJxHZXQgdGhlIGNvbmZpZ3VyZWQgYChzdGFydCwgZW5kKWAgcmVnaXN0cmF0aW9uIHdpbmRvdy4KCkRlZmF1bHRzIHRvIGAoMCwgdTY0OjpNQVgpYCB3aGVuIG5vIHdpbmRvdyBoYXMgYmVlbiBzZXQsIHdoaWNoCmNhbGxlcnMgY2FuIGludGVycHJldCBhcyAidW5ib3VuZGVkIi4AAAAKZ2V0X3dpbmRvdwAAAAAAAAAAAAEAAAPtAAAAAgAAAAYAAAAG","AAAAAAAAACtJbml0aWFsaXplIGNhbXBhaWduIGNvbnRyYWN0IHdpdGggYW4gYWRtaW4uAAAAAAppbml0aWFsaXplAAAAAAABAAAAAAAAAAVhZG1pbgAAAAAAABMAAAABAAAD6QAAAAIAAAAD","AAAAAAAAACZTZXQgY2FtcGFpZ24gYWN0aXZlIGZsYWcgKGFkbWluIG9ubHkpLgAAAAAACnNldF9hY3RpdmUAAAAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAZhY3RpdmUAAAAAAAEAAAABAAAD6QAAAAIAAAAD","AAAAAAAAANlTZXQgcmVnaXN0cmF0aW9uIHRpbWUgd2luZG93IChhZG1pbiBvbmx5KS4KCkJvdGggYm91bmRzIGFyZSBpbmNsdXNpdmU6IGByZWdpc3RlcmAgc3VjY2VlZHMgd2hlbgpgc3RhcnQgPD0gbm93IDw9IGVuZGAuIFVzZSBgMGAgYW5kIGB1NjQ6Ok1BWGAgZm9yIGFuIGVmZmVjdGl2ZWx5Cm9wZW4gd2luZG93LiBSZWplY3RzIGBzdGFydCA+IGVuZGAgd2l0aCBgSW52YWxpZFdpbmRvd2AuAAAAAAAACnNldF93aW5kb3cAAAAAAAQAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAVzdGFydAAAAAAAAAYAAAAAAAAAA2VuZAAAAAAGAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAADtHZXQgdGhlIG5leHQgcmVxdWlyZWQgYWRtaW4gbm9uY2UgZm9yIHNlbnNpdGl2ZSBvcGVyYXRpb25zLgAAAAALYWRtaW5fbm9uY2UAAAAAAAAAAAEAAAAG","AAAAAAAAADBHZXQgbWF4aW11bSBwYXJ0aWNpcGFudCBjYXAgKDAgbWVhbnMgdW5saW1pdGVkKS4AAAALZ2V0X21heF9jYXAAAAAAAAAAAAEAAAAG","AAAAAAAAAEBSZXR1cm5zIHdoZXRoZXIgdGhlIGdpdmVuIGludml0ZSBoYXNoIGhhcyBhbHJlYWR5IGJlZW4gcmVkZWVtZWQuAAAAC2ludml0ZV91c2VkAAAAAAEAAAAAAAAAC2ludml0ZV9oYXNoAAAAA+4AAAAgAAAAAQAAAAE=","AAAAAAAAAHZSZXR1cm4gdGhlIHJlZmVycmVyIHJlY29yZGVkIGZvciBgcGFydGljaXBhbnRgIGF0IHJlZ2lzdHJhdGlvbiwgb3IKYE5vbmVgIGlmIHRoZXkgcmVnaXN0ZXJlZCB3aXRob3V0IG9uZSAoaXNzdWUgIzQ1NSkuAAAAAAALcmVmZXJyZXJfb2YAAAAAAQAAAAAAAAALcGFydGljaXBhbnQAAAAAEwAAAAEAAAPoAAAAEw==","AAAAAAAAAEFTZXQgbWF4aW11bSBwYXJ0aWNpcGFudCBjYXAgKGFkbWluIG9ubHkpLiBTZXQgdG8gMCBmb3IgdW5saW1pdGVkLgAAAAAAAAtzZXRfbWF4X2NhcAAAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAHbWF4X2NhcAAAAAAGAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAJFBY2NlcHQgYWRtaW4gcm9sZS4gQ2FsbGVyIE1VU1QgYmUgdGhlIGFkZHJlc3MgdGhhdCB0aGUgY3VycmVudCBhZG1pbgpwcmV2aW91c2x5IHByb3Bvc2VkIHZpYSBgcHJvcG9zZV9hZG1pbmAuIENsZWFycyB0aGUgcGVuZGluZyBzbG90IG9uCnN1Y2Nlc3MuAAAAAAAADGFjY2VwdF9hZG1pbgAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAEpSZXR1cm4gdGhlIGFjdGl2aXR5IGxvZyByaW5nIGJ1ZmZlciBpbiBjaHJvbm9sb2dpY2FsIG9yZGVyIChvbGRlc3QgZmlyc3QpLgAAAAAADGFjdGl2aXR5X2xvZwAAAAAAAAABAAAD6gAAB9AAAAANQWN0aXZpdHlFbnRyeQAAAA==","AAAAAAAAAIhSZWdpc3RlciBhIGNvLWFkbWluJ3MgZWQyNTUxOSBwdWJsaWMga2V5IGZvciBtdWx0aXNpZyB2ZXJpZmljYXRpb24KKGFkbWluIG9ubHkpLiBPdmVyd3JpdGVzIHRoZSBrZXkgaWYgYGNvX2FkbWluYCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuAAAADGFkZF9jb19hZG1pbgAAAAQAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAhjb19hZG1pbgAAABMAAAAAAAAABnB1YmtleQAAAAAD7gAAACAAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAJZJc3N1ZSBhbiBpbnZpdGUgYnkgc3RvcmluZyBpdHMgaGFzaCAoYWRtaW4gb25seSkuIFRoZSBoYXNoIHNob3VsZCBiZQpgc2hhMjU2KGludml0ZV9jb2RlKWAsIGNvbXB1dGVkIG9mZi1jaGFpbjsgdGhlIHJhdyBjb2RlIGlzIG5ldmVyCnN0b3JlZCBvbi1jaGFpbi4AAAAAAAxpc3N1ZV9pbnZpdGUAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAALaW52aXRlX2hhc2gAAAAD7gAAACAAAAABAAAD6QAAAAIAAAAD","AAAAAAAAAEdSZXR1cm4gdGhlIHBlbmRpbmcgYWRtaW4gYWRkcmVzcyBwcm9wb3NlZCBieSB0aGUgY3VycmVudCBhZG1pbiwgaWYgYW55LgAAAAANcGVuZGluZ19hZG1pbgAAAAAAAAAAAAABAAAD6AAAABM=","AAAAAAAAAHxQcm9wb3NlIGEgbmV3IGFkbWluIChjdXJyZW50IGFkbWluIG9ubHkpLiBUaGUgdHJhbnNmZXIgZG9lcyBub3QgdGFrZQplZmZlY3QgdW50aWwgYGFjY2VwdF9hZG1pbmAgaXMgY2FsbGVkIGJ5IHRoZSBuZXcgYWRtaW4uAAAADXByb3Bvc2VfYWRtaW4AAAAAAAACAAAAAAAAAA1jdXJyZW50X2FkbWluAAAAAAAAEwAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAC9SZXZva2UgYSBwcmV2aW91c2x5IGlzc3VlZCBpbnZpdGUgKGFkbWluIG9ubHkpLgAAAAANcmV2b2tlX2ludml0ZQAAAAAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAtpbnZpdGVfaGFzaAAAAAPuAAAAIAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAOdTdG9yYWdlIHN0YXRzIGZvciBtb25pdG9yaW5nOiBgKHBhcnRpY2lwYW50X2NvdW50LCBub25jZV9jb3VudCwgZXhwaXJlZF9lc3RpbWF0ZSlgLgpgZXhwaXJlZF9lc3RpbWF0ZWAgY291bnRzIGBQQVJUSUNJUEFOVF9SRUdJU1RSWWAgZW50cmllcyB3aG9zZSBwZXJzaXN0ZW50CnJlY29yZCBpcyBhbHJlYWR5IGdvbmUgKGRlcmVnaXN0ZXJlZCBvciBUVEwtYXJjaGl2ZWQpIGFuZCBhd2FpdGluZyBwcnVuZS4AAAAADXN0b3JhZ2Vfc3RhdHMAAAAAAAAAAAAAAQAAA+0AAAADAAAABgAAAAYAAAAG","AAAAAAAAADlSZXR1cm5zIHdoZXRoZXIgaW52aXRlLW9ubHkgcmVnaXN0cmF0aW9uIG1vZGUgaXMgZW5hYmxlZC4AAAAAAAAOaXNfaW52aXRlX29ubHkAAAAAAAAAAAABAAAAAQ==","AAAAAAAAAGpDaGVjayBpZiBhIHBhcnRpY2lwYW50IGlzIHJlZ2lzdGVyZWQuICgjMjgwKSBSZWFkcyBmcm9tCnBlcnNpc3RlbnQgc3RvcmFnZSB3aGVyZSBwYXJ0aWNpcGFudCByZWNvcmRzIGxpdmUuAAAAAAAOaXNfcGFydGljaXBhbnQAAAAAAAEAAAAAAAAAC3BhcnRpY2lwYW50AAAAABMAAAABAAAAAQ==","AAAAAAAAAJ9SZXR1cm4gaG93IG1hbnkgcGFydGljaXBhbnRzIHJlZ2lzdGVyZWQgd2l0aCBgcmVmZXJyZXJgIGFzIHRoZWlyCm9uLWNoYWluIHJlZmVycmVyIChpc3N1ZSAjNDU1KS4gRGVmYXVsdHMgdG8gYDBgIGZvciBhbiBhZGRyZXNzIHRoYXQKaGFzIG5ldmVyIHJlZmVycmVkIGFueW9uZS4AAAAADnJlZmVycmFsX2NvdW50AAAAAAABAAAAAAAAAAhyZWZlcnJlcgAAABMAAAABAAAABg==","AAAAAAAAADxSZXR1cm5zIHRoZSBhY3RpdmUgc3RvcmFnZSBzY2hlbWEgdmVyc2lvbiBmb3IgdGhpcyBjb250cmFjdC4AAAAOc2NoZW1hX3ZlcnNpb24AAAAAAAAAAAABAAAABA==","AAAAAAAAAEtSZXR1cm4gdGhlIGN1cnJlbnQgTWVya2xlIHJvb3QsIG9yIGBOb25lYCB3aGVuIG9wZW4gcmVnaXN0cmF0aW9uIGlzIGFjdGl2ZS4AAAAAD2dldF9tZXJrbGVfcm9vdAAAAAAAAAAAAQAAA+gAAAPuAAAAIA==","AAAAAAAAAKhSZWdpc3RlciBhIHBhcnRpY2lwYW50IHdpdGggdW5pcXVlbmVzcyBwcm9vZiAoWksgdW5pcXVlIHJlZ2lzdHJhdGlvbikuCgpBbGlhcyBmb3IgYHJlZ2lzdGVyX3ByaXZhdGVgIHRoYXQgZW1waGFzaXplcyB0aGUgdW5pcXVlbmVzcyBndWFyYW50ZWUKcHJvdmlkZWQgYnkgdGhlIG51bGxpZmllci4AAAAPcmVnaXN0ZXJfdW5pcXVlAAAAAAQAAAAAAAAAC3BhcnRpY2lwYW50AAAAABMAAAAAAAAACW51bGxpZmllcgAAAAAAA+4AAAAgAAAAAAAAAAVwcm9vZgAAAAAAA+oAAAPuAAAAIAAAAAAAAAAIcmVmZXJyZXIAAAPoAAAAEwAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAADxSZW1vdmUgYSBjby1hZG1pbiBmcm9tIHRoZSBtdWx0aXNpZyBzaWduZXIgc2V0IChhZG1pbiBvbmx5KS4AAAAPcmVtb3ZlX2NvX2FkbWluAAAAAAMAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAAhjb19hZG1pbgAAABMAAAABAAAD6QAAAAIAAAAD","AAAAAAAAADJUb2dnbGUgaW52aXRlLW9ubHkgcmVnaXN0cmF0aW9uIG1vZGUgKGFkbWluIG9ubHkpLgAAAAAAD3NldF9pbnZpdGVfb25seQAAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAHZW5hYmxlZAAAAAABAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAgJTZXQgdGhlIE1lcmtsZSByb290IGZvciBhbGxvd2xpc3QtZ2F0ZWQgcmVnaXN0cmF0aW9uLgoKT25jZSBzZXQsIGV2ZXJ5IGByZWdpc3RlcmAgY2FsbCBtdXN0IHN1cHBseSBhIHZhbGlkIGAobGVhZiwgcHJvb2YpYC4KUmVtb3ZlIHRoZSByb290IGJ5IGNhbGxpbmcgdGhpcyBhZ2FpbiB3aXRoIGEgcm9vdCBvZiBhbGwgemVyb3MgdG8KcmV2ZXJ0IHRvIG9wZW4gcmVnaXN0cmF0aW9uLgoKVGhpcyBpcyBhIGNyaXRpY2FsIG9wZXJhdGlvbjogd2hlbiBhIG11bHRpc2lnIHRocmVzaG9sZCBpcyBjb25maWd1cmVkCihzZWUgW2BTZWxmOjpzZXRfbXVsdGlzaWdfdGhyZXNob2xkYF0pLCBgc2lnbmF0dXJlc2AgbXVzdCBjb250YWluIGF0CmxlYXN0IGByZXF1aXJlZGAgdmFsaWQgY28tYWRtaW4gc2lnbmF0dXJlcyBvdmVyCmAob3AsIG5vbmNlLCBzaGEyNTYocm9vdCkpYDsgb3RoZXJ3aXNlIHBhc3MgYW4gZW1wdHkgYFZlY2AgYW5kIHRoZQpsZWdhY3kgc2luZ2xlLWFkbWluIG5vbmNlIGNoZWNrIGFwcGxpZXMuAAAAAAAPc2V0X21lcmtsZV9yb290AAAAAAQAAAAAAAAABWFkbWluAAAAAAAAEwAAAAAAAAAFbm9uY2UAAAAAAAAGAAAAAAAAAARyb290AAAD7gAAACAAAAAAAAAACnNpZ25hdHVyZXMAAAAAA+oAAAPtAAAAAgAAABMAAAPuAAAAQAAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAAHtEZXJlZ2lzdGVyIGEgcGFydGljaXBhbnQgYnkgdGhlIGFkbWluLgoKQnlwYXNzZXMgdGltZSB3aW5kb3cgYW5kIGxpdmVuZXNzIGNoZWNrcy4gUmVxdWlyZXMgYWRtaW4gYXV0aCBhbmQgbm9uY2UgdmFsaWRhdGlvbi4AAAAAEGFkbWluX2RlcmVnaXN0ZXIAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAALcGFydGljaXBhbnQAAAAAEwAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAFJHZXQgdGhlIGN1cnJlbnQgcHJpdmFjeSBtb2RlLgpEZWZhdWx0cyB0byBgUHJpdmFjeU1vZGU6Ok5vbmVgIChvcGVuKSB3aGVuIG5vdCBzZXQuAAAAAAAQZ2V0X3ByaXZhY3lfbW9kZQAAAAAAAAABAAAH0AAAAAtQcml2YWN5TW9kZQA=","AAAAAAAAAQNSZXR1cm5zIGB0cnVlYCB3aGVuIHRoZSBjdXJyZW50IGxlZGdlciB0aW1lc3RhbXAgaXMgd2l0aGluCmBbc3RhcnQsIGVuZF1gIG9mIHRoZSBjb25maWd1cmVkIHdpbmRvdy4KCk9mZi1jaGFpbiBjYWxsZXJzIGFuZCBkZXBlbmRlbnQgY29udHJhY3RzIChlLmcuIHJld2FyZHMgbG9naWMpCmNhbiB1c2UgdGhpcyB2aWV3IHRvIGdhdGUgb3BlcmF0aW9ucyBvbiBjYW1wYWlnbiBsaXZlbmVzcyB3aXRob3V0CmR1cGxpY2F0aW5nIHRoZSB3aW5kb3cgY2hlY2suAAAAABBpc193aXRoaW5fd2luZG93AAAAAAAAAAEAAAAB","AAAAAAAAAXVSZWdpc3RlciBhIHBhcnRpY2lwYW50IHVzaW5nIGEgWksgcHJvb2YgKHByaXZhdGUgcmVnaXN0cmF0aW9uKS4KCk9ubHkgY2FsbGFibGUgd2hlbiB0aGUgY2FtcGFpZ24ncyBwcml2YWN5IG1vZGUgaXMgYFprYC4KVGhlIGBwcm9vZmAgZmllbGQgY2FycmllcyB0aGUgWksgcHJvb2YgYnl0ZXM7IHRoZSBjb250cmFjdCB2ZXJpZmllcwp0aGF0IHRoZSBwcm9vZiBpcyBub24tZW1wdHkgYXMgYSBiYXNpYyBzYW5pdHkgY2hlY2suIEZ1bGwgb24tY2hhaW4KdmVyaWZpY2F0aW9uIGlzIG91dCBvZiBzY29wZSAoc2VlIE5FVy0wMDEvMDAyKS4KClJldHVybnMgYHRydWVgIG9uIGZpcnN0IHJlZ2lzdHJhdGlvbiwgYGZhbHNlYCBpZiBhbHJlYWR5IHJlZ2lzdGVyZWQuAAAAAAAAEHJlZ2lzdGVyX3ByaXZhdGUAAAAEAAAAAAAAAAtwYXJ0aWNpcGFudAAAAAATAAAAAAAAAAludWxsaWZpZXIAAAAAAAPuAAAAIAAAAAAAAAAFcHJvb2YAAAAAAAPqAAAD7gAAACAAAAAAAAAACHJlZmVycmVyAAAD6AAAABMAAAABAAAD6QAAAAEAAAAD","AAAAAAAAAY9TZXQgdGhlIHByaXZhY3kgbW9kZSBmb3IgdGhpcyBjYW1wYWlnbiAoYWRtaW4gb25seSkuCgpDb250cm9scyB3aGljaCByZWdpc3RyYXRpb24gcGF0aCBpcyB1c2VkOgotIGBOb25lYDogb3BlbiByZWdpc3RyYXRpb24sIG5vIHByb29mcyByZXF1aXJlZC4KLSBgTWVya2xlYDogc3RhbmRhcmQgTWVya2xlIGFsbG93bGlzdCByZWdpc3RyYXRpb24uCi0gYFprYDogemVyby1rbm93bGVkZ2UgcHJvb2YgcmVnaXN0cmF0aW9uIChyZXF1aXJlcyBgcmVnaXN0ZXJfcHJpdmF0ZWApLgoKYGZhbGxiYWNrX2FsbG93ZWRgOiB3aGVuIHRydWUgYW5kIHRoZSB1c2VyJ3MgYnJvd3NlciBjYW5ub3QgcHJvdmUgaW4gWksKbW9kZSwgdGhlIGZyb250ZW5kIG1heSBmYWxsIGJhY2sgdG8gTWVya2xlIHJlZ2lzdHJhdGlvbi4AAAAAEHNldF9wcml2YWN5X21vZGUAAAAEAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAEbW9kZQAAB9AAAAALUHJpdmFjeU1vZGUAAAAAAAAAABBmYWxsYmFja19hbGxvd2VkAAAAAQAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAALhSZW1vdmUgbXVsdGlzaWcgbm9uY2UgcmVjb3JkcyBvbGRlciB0aGFuIFtgTk9OQ0VfVFRMX0xFREdFUlNgXSwgdXAgdG8KYG1heF9lbnRyaWVzYCBwZXIgY2FsbC4gQ2FsbGFibGUgYnkgYW55b25lIHNpbmNlIGl0IG9ubHkgZGVsZXRlcwpzdGFsZSBkYXRhLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZW50cmllcyBwcnVuZWQuAAAAEXBydW5lX3VzZWRfbm9uY2VzAAAAAAAAAQAAAAAAAAALbWF4X2VudHJpZXMAAAAABAAAAAEAAAAE","AAAAAAAAAEBSZXR1cm5zIHRoZSBjb25maWd1cmVkIE0tb2YtTiBtdWx0aXNpZyB0aHJlc2hvbGQgKDAgPSBkaXNhYmxlZCkuAAAAEm11bHRpc2lnX3RocmVzaG9sZAAAAAAAAAAAAAEAAAAE","AAAAAAAAAFFHZXQgdGhlIGN1cnJlbnQgdW5pcXVlbmVzcyBtb2RlLgpEZWZhdWx0cyB0byBgVW5pcXVlbmVzc01vZGU6Ok5vbmVgIHdoZW4gbm90IHNldC4AAAAAAAATZ2V0X3VuaXF1ZW5lc3NfbW9kZQAAAAAAAAAAAQAAB9AAAAAOVW5pcXVlbmVzc01vZGUAAA==","AAAAAAAAAEpDaGVjayB3aGV0aGVyIGZhbGxiYWNrIHRvIE1lcmtsZSByZWdpc3RyYXRpb24gaXMgYWxsb3dlZCBmb3IgWksgY2FtcGFpZ25zLgAAAAAAE2lzX2ZhbGxiYWNrX2FsbG93ZWQAAAAAAAAAAAEAAAAB","AAAAAAAAAStTZXQgdGhlIHVuaXF1ZW5lc3MgbW9kZSBmb3IgdGhpcyBjYW1wYWlnbiAoYWRtaW4gb25seSkuCgpDb250cm9scyB3aGV0aGVyIGFudGktc3liaWwgdW5pcXVlbmVzcyBpcyBlbmZvcmNlZDoKLSBgTm9uZWA6IG5vIHVuaXF1ZW5lc3MgZW5mb3JjZW1lbnQgKGN1cnJlbnQgYmVoYXZpb3IpLgotIGBOdWxsaWZpZXJgOiByZXF1aXJlcyBhIG51bGxpZmllciByZWdpc3RyeSBwcm9vZiBmb3IgdW5pcXVlbmVzcy4KCmByZWdpc3RyeV9hZGRyZXNzYCBtdXN0IGJlIHByb3ZpZGVkIHdoZW4gc2V0dGluZyBgTnVsbGlmaWVyYCBtb2RlLgAAAAATc2V0X3VuaXF1ZW5lc3NfbW9kZQAAAAAEAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAEbW9kZQAAB9AAAAAOVW5pcXVlbmVzc01vZGUAAAAAAAAAAAAQcmVnaXN0cnlfYWRkcmVzcwAAA+gAAAATAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAADhDYW5jZWwgYW4gaW4tZmxpZ2h0IGFkbWluIHRyYW5zZmVyIChjdXJyZW50IGFkbWluIG9ubHkpLgAAABVjYW5jZWxfYWRtaW5fdHJhbnNmZXIAAAAAAAABAAAAAAAAAA1jdXJyZW50X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAAAgAAAAM=","AAAAAAAAACxHZXQgdGhlIGNvbmZpZ3VyZWQgYWN0aXZpdHkgbG9nIGJ1ZmZlciBzaXplLgAAABVnZXRfYWN0aXZpdHlfbG9nX3NpemUAAAAAAAAAAAAAAQAAAAQ=","AAAAAAAAAB5HZXQgY3VycmVudCBwYXJ0aWNpcGFudCBjb3VudC4AAAAAABVnZXRfcGFydGljaXBhbnRfY291bnQAAAAAAAAAAAAAAQAAAAY=","AAAAAAAAAI5TZXQgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYWN0aXZpdHkgbG9nIHJpbmcgYnVmZmVyIChhZG1pbiBvbmx5KS4KTXVzdCBiZSBiZXR3ZWVuIE1JTl9BQ1RJVklUWV9MT0dfU0laRSAoMTApIGFuZCBNQVhfQUNUSVZJVFlfTE9HX1NJWkUgKDIwMCkuAAAAAAAVc2V0X2FjdGl2aXR5X2xvZ19zaXplAAAAAAAAAwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAVub25jZQAAAAAAAAYAAAAAAAAABHNpemUAAAAEAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAADJHZXQgdGhlIG51bGxpZmllciByZWdpc3RyeSBhZGRyZXNzLCBpZiBjb25maWd1cmVkLgAAAAAAFmdldF9udWxsaWZpZXJfcmVnaXN0cnkAAAAAAAAAAAABAAAD6AAAABM=","AAAAAAAAAIxTZXQgdGhlIE0tb2YtTiBtdWx0aXNpZyB0aHJlc2hvbGQgZm9yIGNyaXRpY2FsIG9wZXJhdGlvbnMgKGFkbWluIG9ubHkpLgpgcmVxdWlyZWQgPSAwYCBkaXNhYmxlcyBtdWx0aXNpZyAobGVnYWN5IHNpbmdsZS1hZG1pbiBhdXRoIGFwcGxpZXMpLgAAABZzZXRfbXVsdGlzaWdfdGhyZXNob2xkAAAAAAADAAAAAAAAAAVhZG1pbgAAAAAAABMAAAAAAAAABW5vbmNlAAAAAAAABgAAAAAAAAAIcmVxdWlyZWQAAAAEAAAAAQAAA+kAAAACAAAAAw==","AAAAAAAAAcZSZWdpc3RlciBhIHBhcnRpY2lwYW50IHdpdGggdW5pcXVlbmVzcyBwcm9vZiAoYW50aS1zeWJpbCkuCgpXaGVuIHRoZSBjYW1wYWlnbidzIHVuaXF1ZW5lc3MgbW9kZSBpcyBgTnVsbGlmaWVyYCwgdGhpcyBmdW5jdGlvbjoKMS4gVmVyaWZpZXMgdGhlIG51bGxpZmllciBoYXMgbm90IGJlZW4gc3BlbnQgdmlhIHRoZSBudWxsaWZpZXIgcmVnaXN0cnkuCjIuIFNwZW5kcyB0aGUgbnVsbGlmaWVyIHRvIHByZXZlbnQgZG91YmxlLXJlZ2lzdHJhdGlvbi4KClRoZSBgdW5pcXVlbmVzc19wcm9vZmAgaXMgcGFzc2VkIHRocm91Z2ggdG8gdGhlIHJlZ2lzdHJ5IGZvcgpmdXR1cmUgdmVyaWZpY2F0aW9uLiBGb3Igbm93LCBpdCdzIHN0b3JlZCBhbG9uZ3NpZGUgdGhlIG51bGxpZmllci4KClJldHVybnMgYHRydWVgIG9uIGZpcnN0IHJlZ2lzdHJhdGlvbiwgYGZhbHNlYCBpZiBhbHJlYWR5IHJlZ2lzdGVyZWQuAAAAAAAYcmVnaXN0ZXJfd2l0aF91bmlxdWVuZXNzAAAAAwAAAAAAAAALcGFydGljaXBhbnQAAAAAEwAAAAAAAAAJbnVsbGlmaWVyAAAAAAAD7gAAACAAAAAAAAAAEHVuaXF1ZW5lc3NfcHJvb2YAAAAOAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAfRHYXJiYWdlLWNvbGxlY3QgYFBBUlRJQ0lQQU5UX1JFR0lTVFJZYCBlbnRyaWVzIHdob3NlIHBlcnNpc3RlbnQKcGFydGljaXBhbnQgcmVjb3JkIGlzIGdvbmUg4oCUIGVpdGhlciBleHBsaWNpdGx5IGRlcmVnaXN0ZXJlZCwgb3IKYXJjaGl2ZWQgYnkgdGhlIG5ldHdvcmsgYWZ0ZXIgaXRzIFRUTCBsYXBzZWQgKCMyODApIOKAlCB1cCB0bwpgbWF4X2VudHJpZXNgIHBlciBjYWxsLiBDYWxsYWJsZSBieSBhbnlvbmUgc2luY2UgaXQgb25seSBkZWxldGVzCnN0YWxlIGJvb2trZWVwaW5nLCBuZXZlciBsaXZlIGRhdGEuIFJldHVybnMgdGhlIG51bWJlciBwcnVuZWQuCgpVc2VzIHN3YXAtcmVtb3ZlIHNvIGVhY2ggcHJ1bmVkIGVudHJ5IGlzIE8oMSk7IGEgcGVyc2lzdGVkIGN1cnNvcgpsZXRzIHJlcGVhdGVkIGNhbGxzIHN3ZWVwIHRoZSB3aG9sZSByZWdpc3RyeSBvdmVyIHRpbWUgd2l0aG91dApyZXNjYW5uaW5nIGZyb20gdGhlIHN0YXJ0LCBib3VuZGluZyB3b3JrIHBlciBjYWxsLgAAABpwcnVuZV9leHBpcmVkX3BhcnRpY2lwYW50cwAAAAAAAQAAAAAAAAALbWF4X2VudHJpZXMAAAAABAAAAAEAAAAE"]),e),this.options=e,this.fromJSON={admin:this.txFromJSON,migrate:this.txFromJSON,upgrade:this.txFromJSON,register:this.txFromJSON,is_active:this.txFromJSON,deregister:this.txFromJSON,get_window:this.txFromJSON,initialize:this.txFromJSON,set_active:this.txFromJSON,set_window:this.txFromJSON,admin_nonce:this.txFromJSON,get_max_cap:this.txFromJSON,invite_used:this.txFromJSON,referrer_of:this.txFromJSON,set_max_cap:this.txFromJSON,accept_admin:this.txFromJSON,activity_log:this.txFromJSON,add_co_admin:this.txFromJSON,issue_invite:this.txFromJSON,pending_admin:this.txFromJSON,propose_admin:this.txFromJSON,revoke_invite:this.txFromJSON,storage_stats:this.txFromJSON,is_invite_only:this.txFromJSON,is_participant:this.txFromJSON,referral_count:this.txFromJSON,schema_version:this.txFromJSON,get_merkle_root:this.txFromJSON,register_unique:this.txFromJSON,remove_co_admin:this.txFromJSON,set_invite_only:this.txFromJSON,set_merkle_root:this.txFromJSON,admin_deregister:this.txFromJSON,get_privacy_mode:this.txFromJSON,is_within_window:this.txFromJSON,register_private:this.txFromJSON,set_privacy_mode:this.txFromJSON,prune_used_nonces:this.txFromJSON,multisig_threshold:this.txFromJSON,get_uniqueness_mode:this.txFromJSON,is_fallback_allowed:this.txFromJSON,set_uniqueness_mode:this.txFromJSON,cancel_admin_transfer:this.txFromJSON,get_activity_log_size:this.txFromJSON,get_participant_count:this.txFromJSON,set_activity_log_size:this.txFromJSON,get_nullifier_registry:this.txFromJSON,set_multisig_threshold:this.txFromJSON,register_with_uniqueness:this.txFromJSON,prune_expired_participants:this.txFromJSON}}static async deploy(e){return nt.Client.deploy(null,e)}}const D={RETRY:"retry",RE_SIGN:"re_sign",SWITCH_WALLET:"switch_wallet",TOP_UP:"top_up",VIEW_EXPLORER:"view_explorer",REPORT:"report"},pn={wallet:[D.RE_SIGN],network:[D.RETRY],rpc:[D.RETRY],validation:[],contract:[D.VIEW_EXPLORER],unknown:[D.RETRY,D.REPORT]},hn={2:[D.TOP_UP],100:[D.SWITCH_WALLET],104:[D.SWITCH_WALLET],3:[D.SWITCH_WALLET],105:[D.RETRY],106:[D.RETRY],4:[D.RETRY],429:[D.RETRY],500:[D.RETRY,D.REPORT],503:[D.RETRY],101:[D.VIEW_EXPLORER],102:[D.VIEW_EXPLORER],103:[D.VIEW_EXPLORER]},Ta={[D.RETRY]:{label:"Try again",description:"Resubmit the transaction"},[D.RE_SIGN]:{label:"Sign again",description:"Re-open your wallet to sign the transaction"},[D.SWITCH_WALLET]:{label:"Switch wallet",description:"Connect a different wallet or account"},[D.TOP_UP]:{label:"Add funds",description:"Add XLM or tokens to your wallet"},[D.VIEW_EXPLORER]:{label:"View on explorer",description:"Open the transaction on Stellar Expert"},[D.REPORT]:{label:"Report issue",description:"Open a support request for this error"}},It={100:"You don't have permission to perform this action",101:"This campaign is not currently accepting registrations",102:"This campaign has reached its participant limit",103:"This campaign is not active",104:"Your address is not eligible for this campaign",105:"Contract migration failed or this action has already been processed",106:"This action has already been processed",1:"Balance calculation error. Please contact support",2:"Insufficient balance to claim this amount",3:"You don't have permission to perform this action",4:"The rewards contract is temporarily unavailable",5:"Credit amount exceeds the maximum allowed per transaction",6:"Invalid reward configuration. Please contact support",7:"Invalid reward multiplier configuration. Please contact support",400:"Invalid input. Please check your data and try again",401:"API key is required or invalid",404:"The requested resource was not found",429:"Too many requests. Please wait before trying again",500:"An unexpected error occurred. Please try again later",503:"The blockchain service is temporarily unavailable"},pe={CONTRACT:"contract",WALLET:"wallet",NETWORK:"network",RPC:"rpc",VALIDATION:"validation",UNKNOWN:"unknown"},La={[pe.WALLET]:"Signing was cancelled in your wallet. Nothing was submitted.",[pe.NETWORK]:"Network problem reaching the blockchain — your action was not submitted. Check your connection and try again.",[pe.RPC]:"The Soroban network is temporarily unavailable. Your action was not applied; please try again in a moment.",[pe.VALIDATION]:"Please check your input and try again.",[pe.UNKNOWN]:"An unexpected error occurred. Your action was not applied."};function tr(t){var r;if(t==null)return null;if(typeof t=="number")return Number.isFinite(t)?t:null;if(typeof t=="string"){const a=t.match(/(?:Error\(Contract,\s*#|contract.*?#|code[:\s]+)(\d+)/i);return a?Number(a[1]):null}if(typeof t.code=="number")return t.code;if(typeof t.status=="number")return t.status;const n=(t.message||((r=t.toString)==null?void 0:r.call(t))||"").match(/(?:Error\(Contract,\s*#|contract.*?#|code[:\s]+)(\d+)/i);return n?Number(n[1]):null}function Ha(t){var r;if(!t)return pe.UNKNOWN;const e=tr(t),n=(typeof t=="string"?t:t.message||((r=t.toString)==null?void 0:r.call(t))||"").toLowerCase();return/error\(contract|contract.*?#\d+/i.test(n)?pe.CONTRACT:/user (rejected|declined)|reject|declin|denied|cancel|freighter|wallet|not allowed/.test(n)?pe.WALLET:/failed to fetch|networkerror|offline|timeout|timed out|enotfound|econnrefused|etimedout|dns/.test(n)?pe.NETWORK:/rpc|simulat|soroban|horizon|gateway|bad gateway|service unavailable|50[023]/.test(n)?pe.RPC:/invalid|required|must be|too large|not a number/.test(n)?pe.VALIDATION:typeof e=="number"&&e>=1&&e<=199?pe.CONTRACT:pe.UNKNOWN}function Ja(t,e){return e!==null&&hn[e]?hn[e]:pn[t]??pn[pe.UNKNOWN]}function Pa(t){const e=Ha(t),n=tr(t),r=e===pe.CONTRACT&&n&&It[n]?Dt(n):La[e]||Dt(t),a=Ja(e,n??null);return{class:e,code:n??null,message:r,recovery:n?Ua(n):null,recoveryActions:a,retryable:e===pe.NETWORK||e===pe.RPC||(n?Oa(n):!1)}}function Dt(t){if(!t)return"An unknown error occurred";let e=null;if(typeof t=="number")e=t;else if(typeof t=="string")e=parseInt(t,10);else if(t.code!==void 0)e=t.code;else if(t.status!==void 0)e=t.status;else if(t.message){const n=t.message.match(/code[:\s]+(\d+)/i);n&&(e=parseInt(n[1],10))}return e&&It[e]?It[e]:t.message&&typeof t.message=="string"?t.message:"An unexpected error occurred"}function Ua(t){return{100:"Use an admin account to perform this action",101:"Check the campaign details for registration dates",102:"Try registering for another campaign",103:"Wait for the campaign to be activated",104:"Contact the campaign operator for eligibility",105:"Retry the action with a new transaction",1:"Contact support if the issue persists",2:"Earn more rewards before claiming",3:"Use the correct account for this action",4:"Try again in a few moments",5:"Split your credit into multiple transactions",6:"Contact support for configuration help",429:"Wait a moment and try again",503:"Try again in a few moments"}[t]||null}function Oa(t){return[4,429,500,503].includes(t)}class Da{constructor(){this.providers=new Map,this.activeProvider=null,this.connectedAddress=null}registerProvider(e){if(!e||typeof e.getName!="function")throw new Error("Invalid provider: must implement getName()");const n=e.getName();this.providers.set(n,e)}getProvider(e){const n=this.providers.get(e);if(!n)throw new Error(`Wallet provider "${e}" not found`);return n}async getAvailableProviders(){const e=[];for(const[n,r]of this.providers.entries())try{await r.isAvailable()&&e.push({name:n,provider:r})}catch(a){console.warn(`Failed to check availability for ${n}:`,a)}return e}async connect(e){const n=this.getProvider(e);if(!await n.isAvailable())throw new Error(`Wallet provider "${e}" is not available`);const a=await n.connect();return this.activeProvider=n,this.connectedAddress=a,{address:a,provider:e}}async disconnect(){this.activeProvider&&(await this.activeProvider.disconnect(),this.activeProvider=null,this.connectedAddress=null)}async getAddress(){if(!this.activeProvider)throw new Error("No wallet connected");if(this.connectedAddress)return this.connectedAddress;const e=await this.activeProvider.getAddress();return this.connectedAddress=e,e}async signTransaction(e,n={}){if(!this.activeProvider)throw new Error("No wallet connected");return this.activeProvider.signTransaction(e,n)}async batchSignTransactions(e,n={}){if(!this.activeProvider)throw new Error("No wallet connected");if(!Array.isArray(e)||e.length===0)throw new Error("batchSignTransactions requires a non-empty array of XDRs");if(e.length===1)return[await this.activeProvider.signTransaction(e[0],n)];const r=[];for(const a of e){const o=await this.activeProvider.signTransaction(a,n);r.push(o)}return r}async isConnected(){return this.activeProvider?this.activeProvider.isConnected():!1}getActiveProviderName(){return this.activeProvider?this.activeProvider.getName():null}async getNetwork(){return this.activeProvider?this.activeProvider.getNetwork():null}}class We{constructor(){if(new.target===We)throw new TypeError("Cannot construct WalletProvider instances directly")}async isAvailable(){throw new Error("isAvailable() must be implemented")}async connect(){throw new Error("connect() must be implemented")}async disconnect(){throw new Error("disconnect() must be implemented")}async getAddress(){throw new Error("getAddress() must be implemented")}async signTransaction(e,n){throw new Error("signTransaction() must be implemented")}async isConnected(){throw new Error("isConnected() must be implemented")}getName(){throw new Error("getName() must be implemented")}async getNetwork(){return null}}class za extends We{constructor(){super(),this.name="Freighter"}getName(){return this.name}getApi(){if(!window.freighterApi)throw new Error("Freighter API is unavailable. Install or unlock the Freighter browser extension.");return window.freighterApi}async isAvailable(){try{return!!window.freighterApi}catch{return!1}}async isConnected(){try{const n=await this.getApi().isConnected();return n.error?!1:n.isConnected}catch{return!1}}async connect(){const e=this.getApi(),n=await e.isConnected();if(n.error)throw new Error(n.error);if(!n.isConnected)throw new Error("Freighter extension was not detected. Install or unlock Freighter to connect a wallet.");const r=await e.getAddress();if(r.error)throw new Error(r.error);if(r.address)return r.address;const a=await e.requestAccess();if(a.error)throw new Error(a.error);if(!a.address)throw new Error("Freighter did not return a wallet address.");return a.address}async disconnect(){return!0}async getAddress(){const n=await this.getApi().getAddress();if(n.error)throw new Error(n.error);if(!n.address)throw new Error("No address available. Please connect your wallet first.");return n.address}async signTransaction(e,n={}){const a=await this.getApi().signTransaction(e,{networkPassphrase:n.networkPassphrase,address:n.address});if(a.error)throw new Error(a.error);if(!a.signedTxXdr)throw new Error("Freighter did not return a signed transaction.");return a.signedTxXdr}}class Ma extends We{constructor(){super(),this.name="xBull"}getName(){return this.name}getApi(){if(!window.xBullSDK)throw new Error("xBull SDK is unavailable. Install or unlock the xBull browser extension.");return window.xBullSDK}async isAvailable(){try{return!!window.xBullSDK}catch{return!1}}async isConnected(){try{return!!window.xBullSDK}catch{return!1}}async connect(){const e=this.getApi();await e.connect();const n=await e.getPublicKey();if(!n)throw new Error("xBull did not return a wallet address.");return n}async disconnect(){return!0}async getAddress(){const n=await this.getApi().getPublicKey();if(!n)throw new Error("No address available. Please connect your wallet first.");return n}async signTransaction(e,n={}){var c;const r=this.getApi(),a=(c=n.networkPassphrase)!=null&&c.includes("Test SDF")?"TESTNET":"PUBLIC",o=await r.signXDR(e,{network:a});if(!o)throw new Error("xBull did not return a signed transaction.");return o}async getNetwork(){try{const e=this.getApi();if(typeof e.getNetwork=="function")return await e.getNetwork()??null;if(typeof e.getNetworkDetails=="function"){const n=await e.getNetworkDetails();return(n==null?void 0:n.networkPassphrase)??null}return null}catch{return null}}}class Qa extends We{constructor(){super(),this.name="Rabet"}getName(){return this.name}getApi(){if(!window.rabet)throw new Error("Rabet is not installed. Please install the Rabet browser extension from https://rabet.io and reload the page.");return window.rabet}async isAvailable(){try{return!!window.rabet}catch{return!1}}async isConnected(){try{return!!window.rabet}catch{return!1}}async connect(){const n=await this.getApi().connect();if(!(n!=null&&n.publicKey))throw new Error("Rabet did not return a wallet address.");return n.publicKey}async disconnect(){return!0}async getAddress(){const n=await this.getApi().connect();if(!(n!=null&&n.publicKey))throw new Error("No address available. Please connect your Rabet wallet first.");return n.publicKey}async getNetwork(){const n=await this.getApi().connect();if(!(n!=null&&n.network))throw new Error("Rabet did not return a network passphrase.");return n.network}async signTransaction(e,n={}){const r=this.getApi(),a=n.networkPassphrase??await this.getNetwork(),o=await r.sign(e,a);if(!(o!=null&&o.xdr))throw new Error("Rabet did not return a signed transaction.");return o.xdr}}class $a extends We{constructor(){super(),this.name="Lobstr"}getName(){return this.name}getApi(){const e=window.lobstr??window.lobstrApi;if(!e)throw new Error("Lobstr is unavailable. Install or unlock the Lobstr browser extension.");return e}async isAvailable(){try{return!!(window.lobstr??window.lobstrApi)}catch{return!1}}async isConnected(){try{return!!(window.lobstr??window.lobstrApi)}catch{return!1}}async connect(){const e=this.getApi();if(typeof e.connect=="function"){const n=await e.connect(),r=(n==null?void 0:n.publicKey)??(n==null?void 0:n.address)??n;if(!r||typeof r!="string")throw new Error("Lobstr did not return a wallet address.");return r}if(typeof e.getPublicKey=="function"){const n=await e.getPublicKey();if(!n)throw new Error("Lobstr did not return a wallet address.");return n}throw new Error("Lobstr extension API is not compatible with this version of Trivela.")}async disconnect(){return!0}async getAddress(){const e=this.getApi();if(typeof e.getPublicKey=="function"){const n=await e.getPublicKey();if(!n)throw new Error("No address available. Please connect your wallet first.");return n}if(typeof e.connect=="function")return this.connect();throw new Error("Lobstr extension API is not compatible with this version of Trivela.")}async signTransaction(e,n={}){const r=this.getApi();if(typeof r.signTransaction=="function"){const a=await r.signTransaction(e,{networkPassphrase:n.networkPassphrase}),o=(a==null?void 0:a.signedTxXdr)??(a==null?void 0:a.xdr)??a;if(!o||typeof o!="string")throw new Error("Lobstr did not return a signed transaction.");return o}if(typeof r.sign=="function"){const a=await r.sign(e,n.networkPassphrase),o=(a==null?void 0:a.xdr)??a;if(!o||typeof o!="string")throw new Error("Lobstr did not return a signed transaction.");return o}throw new Error("Lobstr extension does not support transaction signing.")}}class Ka extends We{constructor(){super(),this.name="WalletConnect",this._address=null}getName(){return this.name}_getClient(){return window.__walletConnectClient??null}async isAvailable(){return this._getClient()!==null}async isConnected(){var e,n;try{const r=this._getClient();return r?(((n=(e=r.session)==null?void 0:e.getAll)==null?void 0:n.call(e))??[]).length>0:!1}catch{return!1}}async connect(){var l,u,g;const e=this._getClient();if(!e)throw new Error("WalletConnect is not configured. Set up a WalletConnect project ID and initialise the Sign Client to enable QR-code wallet connections.");const{uri:n,approval:r}=await e.connect({requiredNamespaces:{stellar:{methods:["stellar_signTransaction"],chains:["stellar:pubnet","stellar:testnet"],events:["accountsChanged"]}}});n&&typeof window.open=="function"&&window.open(n,"_blank","noopener,noreferrer");const c=(((g=(u=(l=(await r()).namespaces)==null?void 0:l.stellar)==null?void 0:u.accounts)==null?void 0:g[0])??"").split(":").pop();if(!c)throw new Error("WalletConnect session did not provide a Stellar address.");return this._address=c,c}async disconnect(){var n,r;const e=this._getClient();if(!e)return!0;try{const a=((r=(n=e.session)==null?void 0:n.getAll)==null?void 0:r.call(n))??[];for(const o of a)await e.disconnect({topic:o.topic,reason:{code:6e3,message:"User disconnected"}})}catch{}return this._address=null,!0}async getAddress(){if(this._address)return this._address;throw new Error("No WalletConnect session active. Please connect first.")}async signTransaction(e,n={}){var g,m,b;const r=this._getClient();if(!r)throw new Error("WalletConnect is not configured.");const a=((m=(g=r.session)==null?void 0:g.getAll)==null?void 0:m.call(g))??[];if(a.length===0)throw new Error("No active WalletConnect session.");const o=a[0],c=(b=n.networkPassphrase)!=null&&b.includes("Test SDF")?"stellar:testnet":"stellar:pubnet",l=await r.request({topic:o.topic,chainId:c,request:{method:"stellar_signTransaction",params:{xdr:e}}}),u=(l==null?void 0:l.signedTxXdr)??(l==null?void 0:l.xdr)??l;if(!u||typeof u!="string")throw new Error("WalletConnect did not return a signed transaction.");return u}}const qa="Trivela",_t=typeof window<"u"?window.location.hostname:"localhost";class ei extends We{constructor(){super(),this.credential=null,this.address=null}getName(){return"Passkey"}async isAvailable(){if(typeof window>"u"||!window.PublicKeyCredential)return!1;try{return await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable()}catch{return!1}}async connect(){if(!await this.isAvailable())throw new Error("WebAuthn is not available in this browser");const e=this.loadStoredCredential();return e?(this.credential=e,this.address=this.deriveAddress(e),this.address):this.createWallet()}async createWallet(){const e=crypto.getRandomValues(new Uint8Array(32)),n=crypto.getRandomValues(new Uint8Array(16)),r=await navigator.credentials.create({publicKey:{challenge:e,rp:{name:qa,id:_t},user:{id:n,name:`trivela-user-${Date.now()}`,displayName:"Trivela User"},pubKeyCredParams:[{alg:-7,type:"public-key"},{alg:-257,type:"public-key"}],authenticatorSelection:{authenticatorAttachment:"platform",userVerification:"required",residentKey:"preferred"},timeout:6e4,attestation:"none"}});return this.credential=r,this.address=this.deriveAddress(r),this.storeCredential(r),this.address}async disconnect(){this.credential=null,this.address=null,this.clearStoredCredential()}async getAddress(){if(!this.address)throw new Error("No wallet connected");return this.address}async signTransaction(e,n={}){if(!this.credential)throw new Error("No wallet connected");const r=crypto.getRandomValues(new Uint8Array(32)),a=await navigator.credentials.get({publicKey:{challenge:r,rpId:_t,allowCredentials:[{id:this.credential.rawId,type:"public-key",transports:["internal"]}],userVerification:"required",timeout:6e4}});return{signedXdr:e,signature:a.response.signature,authenticatorData:a.response.authenticatorData,clientDataJSON:a.response.clientDataJSON,credentialId:this.credential.rawId}}async isConnected(){return this.credential!==null&&this.address!==null}deriveAddress(e){const n=new TextEncoder().encode(`${_t}:${e.id}`),r=crypto.subtle.digest("SHA-256",n),o=new Uint8Array(r).slice(0,32),c="ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";let l="G";for(let u=0;u<56;u++){const g=Math.floor(u*5/8),m=u*5%8,b=o[g]||0,h=o[g+1]||0,f=(b<<8|h)>>11-m&31;l+=c[f]||"A"}return l}storeCredential(e){try{const n={id:e.id,rawId:Array.from(new Uint8Array(e.rawId)),type:e.type};localStorage.setItem("trivela_passkey",JSON.stringify(n))}catch{}}loadStoredCredential(){try{const e=localStorage.getItem("trivela_passkey");if(!e)return null;const n=JSON.parse(e);return{...n,rawId:new Uint8Array(n.rawId).buffer}}catch{return null}}clearStoredCredential(){try{localStorage.removeItem("trivela_passkey")}catch{}}}class ti extends We{constructor(){super(),this.name="Hana"}getName(){return this.name}getApi(){var e;if(!((e=window==null?void 0:window.hana)!=null&&e.stellar))throw new Error("Hana wallet is unavailable. Install or unlock the Hana browser extension.");return window.hana.stellar}async isAvailable(){var e;try{return!!((e=window==null?void 0:window.hana)!=null&&e.stellar)}catch{return!1}}async isConnected(){try{return!!await this.getApi().isConnected()}catch{return!1}}async connect(){const n=await this.getApi().connect();if(!(n!=null&&n.publicKey))throw new Error("Hana did not return a wallet address.");return n.publicKey}async disconnect(){try{const e=this.getApi();typeof e.disconnect=="function"&&await e.disconnect()}catch{}return!0}async getAddress(){var r;const e=this.getApi(),n=await((r=e.getPublicKey)==null?void 0:r.call(e))??await e.connect();if(!(n!=null&&n.publicKey)&&typeof n!="string")throw new Error("No address available. Please connect your wallet first.");return typeof n=="string"?n:n.publicKey}async signTransaction(e,n={}){const a=await this.getApi().signTransaction(e,{networkPassphrase:n.networkPassphrase});if(!(a!=null&&a.signedTxXdr))throw new Error("Hana did not return a signed transaction.");return a.signedTxXdr}}const gn="44'/148'/0'";async function ni(){const t=await Ae(()=>import("@ledgerhq/hw-transport-webusb"),[]).catch(()=>{throw new Error("Ledger transport library is not installed. Run: npm install @ledgerhq/hw-transport-webusb @ledgerhq/hw-app-stellar")});return t.default??t}async function mn(){const t=await Ae(()=>import("@ledgerhq/hw-app-stellar"),[]).catch(()=>{throw new Error("Ledger Stellar app library is not installed.")});return t.default??t}class ri extends We{constructor(){super(),this.name="Ledger",this._transport=null,this._address=null}getName(){return this.name}async isAvailable(){try{return typeof navigator<"u"&&!!navigator.usb}catch{return!1}}async isConnected(){return!!this._transport&&!!this._address}async connect(){if(!await this.isAvailable())throw new Error("WebUSB is not supported in this browser. Use Chrome or Edge to connect a Ledger device.");const e=await ni();this._transport=await e.create();const n=await mn(),r=new n(this._transport),{publicKey:a}=await r.getPublicKey(gn);if(!a)throw new Error("Ledger did not return a public key. Ensure the Stellar app is open on your device.");return this._address=a,a}async disconnect(){return this._transport&&(await this._transport.close().catch(()=>{}),this._transport=null),this._address=null,!0}async getAddress(){if(!this._address)throw new Error("Ledger not connected. Call connect() first.");return this._address}async signTransaction(e,n={}){if(!this._transport||!this._address)throw new Error("Ledger not connected. Call connect() first.");const{Transaction:r,Networks:a,Keypair:o,xdr:c}=await Ae(async()=>{const{Transaction:B,Networks:I,Keypair:W,xdr:R}=await import("./vendor-stellar-BhxI8NIn.js").then(X=>X.s);return{Transaction:B,Networks:I,Keypair:W,xdr:R}},__vite__mapDeps([0,1])),l=await mn(),u=n.networkPassphrase??a.PUBLIC,g=new r(e,u),m=new l(this._transport),{signature:b}=await m.signTransaction(gn,g.hash());if(!b)throw new Error("Ledger did not return a signature. Ensure you approved the transaction on the device.");const f=o.fromPublicKey(this._address).rawPublicKey().slice(-4),v=new c.DecoratedSignature({hint:f,signature:b});return g.signatures.push(v),g.toEnvelope().toXDR("base64")}}class ai extends We{constructor(){super(),this.name="Albedo",this._connectedPubkey=null}getName(){return this.name}getApi(){if(typeof window>"u"||!window.albedo)throw new Error("Albedo is not available. Open https://albedo.link to use web-based signing.");return window.albedo}async isAvailable(){try{return typeof window<"u"&&!!window.albedo}catch{return!1}}async isConnected(){return!!this._connectedPubkey}async connect(){var n;const e=this.getApi();try{const r=await e.publicKey({});if(!(r!=null&&r.pubkey))throw new Error("Albedo did not return a public key.");return this._connectedPubkey=r.pubkey,r.pubkey}catch(r){throw(n=r.message)!=null&&n.includes("User rejected")||r.code==="user_rejected"?new Error("Albedo connection was rejected by the user."):r}}async disconnect(){return this._connectedPubkey=null,!0}async getAddress(){return this._connectedPubkey?this._connectedPubkey:this.connect()}async signTransaction(e,n={}){var a;const r=this.getApi();try{const o=await r.signTransaction({xdr:e,pubkey:this._connectedPubkey??void 0,network_passphrase:n.networkPassphrase}),c=(o==null?void 0:o.signed_envelope_xdr)??(o==null?void 0:o.xdr);if(!c)throw new Error("Albedo did not return a signed transaction.");return c}catch(o){throw(a=o.message)!=null&&a.includes("User rejected")||o.code==="user_rejected"?new Error("Transaction signing was rejected by the user."):o}}}const fe=new Da;fe.registerProvider(new za);fe.registerProvider(new Ma);fe.registerProvider(new Qa);fe.registerProvider(new $a);fe.registerProvider(new Ka);fe.registerProvider(new ei);fe.registerProvider(new ti);fe.registerProvider(new ri);fe.registerProvider(new ai);async function ii(t="Freighter"){return fe.connect(t)}async function si(){return fe.getAddress()}async function oi(){return fe.isConnected()}function jt(t){return typeof t=="bigint"?t.toString():typeof t=="number"?String(t):"0"}function Ai(t){const e=Number(t);return Number.isFinite(e)?`${e.toFixed(2)} XLM`:"0 XLM"}function nr(t){var a;if(!t)return"Unable to load points right now.";const e=o=>{var u;const c=typeof o=="string"?o:(o==null?void 0:o.message)||((u=o==null?void 0:o.toString)==null?void 0:u.call(o))||"",l=[/Error\(Contract,\s*#(\d+)\)/i,/contract.*?#(\d+)/i,/code[:\s]+(\d+)/i];for(const g of l){const m=c.match(g);if(m)return Number(m[1])}return null},n=typeof t=="string"?t:t.message||((a=t.toString)==null?void 0:a.call(t))||"Unable to load points right now.",r=e(t);return typeof r=="number"&&Number.isFinite(r)&&It[r]?Dt(r):/not found|missing|404/i.test(n)?"Rewards contract is not deployed on the configured Soroban network yet.":/unsupported address type/i.test(n)?"Connected wallet address is invalid for Soroban calls.":n}async function li(t){var a;const e=await fetch(`${Qr()}/accounts/${encodeURIComponent(t)}`);if(!e.ok)throw new Error(`Horizon returned ${e.status} while loading the wallet balance.`);const r=(a=(await e.json()).balances)==null?void 0:a.find(o=>o.asset_type==="native");return(r==null?void 0:r.balance)||"0"}async function ci(t){const e=gt();if(!e)throw new Error("Set VITE_REWARDS_CONTRACT_ID to load on-chain points.");return await(await new Vt({rpcUrl:Fe(),networkPassphrase:ve(),contractId:e}).balance({user:t})).simulate()}async function di(t,e){const n=gt();if(!n)throw new Error("Set VITE_REWARDS_CONTRACT_ID before claiming rewards.");const a=await new Vt({rpcUrl:Fe(),networkPassphrase:ve(),contractId:n,publicKey:t,signTransaction:async u=>({signedTxXdr:await fe.signTransaction(u,{networkPassphrase:ve(),address:t})})}).claim({user:t,amount:BigInt(e)}),o=await a.signAndSend(),c=a.signed.hash().toString("hex"),l=jt(o);return{hash:c,newBalance:l}}async function ui(t,e){const n=gt();if(!n)throw new Error("Set VITE_REWARDS_CONTRACT_ID before redeeming.");const a=await new Vt({rpcUrl:Fe(),networkPassphrase:ve(),contractId:n,publicKey:t,signTransaction:async u=>({signedTxXdr:await fe.signTransaction(u,{networkPassphrase:ve(),address:t})})}).redeem({user:t,points_amount:BigInt(e)}),o=await a.signAndSend(),c=a.signed.hash().toString("hex"),l=jt(o);return{hash:c,assetAmount:l}}async function fn(){const t=gt();if(!t)return"0";const r=await(await new Vt({rpcUrl:Fe(),networkPassphrase:ve(),contractId:t}).payout_reserve_balance()).simulate();return jt(r)}async function OA(t){const e=t||mt();if(!e)return null;const n=new Ft({rpcUrl:Fe(),networkPassphrase:ve(),contractId:e}),[r,a,o]=await Promise.all([n.is_active().then(c=>c.simulate()),n.is_within_window().then(c=>c.simulate()),n.get_participant_count().then(c=>c.simulate())]);return{isActive:r,isWithinWindow:a,participantCount:Number(o)}}async function pi(t){const e=mt();if(!e)throw new Error("Set VITE_CAMPAIGN_CONTRACT_ID to check participant status.");return await(await new Ft({rpcUrl:Fe(),networkPassphrase:ve(),contractId:e}).is_participant({participant:t})).simulate()}async function hi(t){const e=mt();if(!e)throw new Error("Set VITE_CAMPAIGN_CONTRACT_ID before registering.");const n=new Ft({rpcUrl:Fe(),networkPassphrase:ve(),contractId:e,publicKey:t,signTransaction:async u=>({signedTxXdr:await fe.signTransaction(u,{networkPassphrase:ve(),address:t})})}),r=new Uint8Array(32),a=[],o=await n.register({participant:t,leaf:r,proof:a}),c=await o.signAndSend();return{hash:o.signed.hash().toString("hex"),alreadyRegistered:!c}}async function gi(t,e){const r=await new Ft({rpcUrl:Fe(),networkPassphrase:ve(),contractId:e,publicKey:t,signTransaction:async o=>({signedTxXdr:await fe.signTransaction(o,{networkPassphrase:ve(),address:t})})}).initialize({admin:t});return await r.signAndSend(),{hash:r.signed.hash().toString("hex")}}const bn="https://stellar.expert/explorer",mi="https://github.com/FinesseStudioLab/Trivela/issues/new";function fi({onRetry:t,onSwitchWallet:e,onTopUp:n,network:r="testnet",hash:a}={}){const o=w.useCallback(()=>{t==null||t()},[t]),c=w.useCallback(()=>{t==null||t()},[t]),l=w.useCallback(()=>{e==null||e()},[e]),u=w.useCallback(()=>{n==null||n()},[n]),g=w.useCallback(v=>{const B=v??a;return B?`${bn}/${r}/tx/${B}`:`${bn}/${r}`},[r,a]),m=w.useCallback((v=null)=>{const B=new URLSearchParams({labels:"bug",title:`Transaction error${v!=null?` (code ${v})`:""}`});return`${mi}?${B.toString()}`},[]),b=w.useCallback(()=>{window.open(g(),"_blank","noopener,noreferrer")},[g]),h=w.useCallback((v=null)=>{window.open(m(v),"_blank","noopener,noreferrer")},[m]);return{handlers:{[D.RETRY]:o,[D.RE_SIGN]:c,[D.SWITCH_WALLET]:l,[D.TOP_UP]:u,[D.VIEW_EXPLORER]:b,[D.REPORT]:h},getExplorerUrl:g,getReportUrl:m}}const yn={success:"✓",pending:"⏳",error:"✕"},wn={success:"Success",pending:"Awaiting confirmation…",error:"Failed"};function ut({hash:t,network:e="testnet",variant:n="success",status:r,message:a,mappedError:o,onRetry:c,onSwitchWallet:l,onTopUp:u}){var k;const[g,m]=w.useState(!1),{handlers:b,getExplorerUrl:h,getReportUrl:f}=fi({onRetry:c,onSwitchWallet:l,onTopUp:u,network:e,hash:t}),v=t?`${t.substring(0,8)}...${t.substring(t.length-8)}`:"",B=t?h(t):null,I=r??wn[n]??wn.success,W=n==="error",R=W&&((k=o==null?void 0:o.recoveryActions)!=null&&k.length)?o.recoveryActions:[],X=async()=>{try{await navigator.clipboard.writeText(t),m(!0),setTimeout(()=>m(!1),2e3)}catch(G){console.error("Failed to copy transaction hash:",G)}};return!t&&n==="success"?null:i.jsxs("div",{className:`tx-status tx-status--${n}`,role:W?"alert":"status","aria-live":W?"assertive":"polite",children:[i.jsxs("div",{className:"tx-status-header",children:[i.jsx("span",{className:"tx-status-icon","aria-hidden":"true",children:yn[n]??yn.success}),i.jsx("span",{className:"tx-status-label",children:I})]}),a&&i.jsx("p",{className:"tx-status-message",children:a}),R.length>0&&i.jsx("div",{className:"tx-recovery-actions",role:"group","aria-label":"Recovery options",children:R.map(G=>{const S=Ta[G];if(!S)return null;if(G===D.VIEW_EXPLORER&&B)return i.jsxs("a",{href:B,target:"_blank",rel:"noopener noreferrer",className:"tx-recovery-btn tx-recovery-btn--secondary","aria-label":S.description,children:[S.label,i.jsxs("svg",{width:"12",height:"12",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[i.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),i.jsx("polyline",{points:"15 3 21 3 21 9"}),i.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})]},G);if(G===D.REPORT)return i.jsx("a",{href:f((o==null?void 0:o.code)??null),target:"_blank",rel:"noopener noreferrer",className:"tx-recovery-btn tx-recovery-btn--ghost","aria-label":S.description,children:S.label},G);const j=G===D.RETRY||G===D.RE_SIGN;return i.jsx("button",{type:"button",className:`tx-recovery-btn ${j?"tx-recovery-btn--primary":"tx-recovery-btn--secondary"}`,onClick:()=>{var L;return(L=b[G])==null?void 0:L.call(b)},"aria-label":S.description,children:S.label},G)})}),t&&i.jsxs("div",{className:"tx-status-body",children:[i.jsxs("div",{className:"tx-hash-container",children:[i.jsx("span",{className:"tx-hash-label",children:"Transaction Hash"}),i.jsxs("div",{className:"tx-hash-row",children:[i.jsx("code",{className:"tx-hash-value",title:t,children:v}),i.jsx("button",{type:"button",className:`tx-copy-btn ${g?"copied":""}`,onClick:X,"aria-label":g?"Copied to clipboard":"Copy transaction hash",children:g?i.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:i.jsx("polyline",{points:"20 6 9 17 4 12"})}):i.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",children:[i.jsx("rect",{x:"9",y:"9",width:"13",height:"13",rx:"2",ry:"2"}),i.jsx("path",{d:"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"})]})})]})]}),B&&!R.includes(D.VIEW_EXPLORER)&&i.jsxs("a",{href:B,target:"_blank",rel:"noopener noreferrer",className:"tx-explorer-link",children:["View on Stellar Expert",i.jsxs("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[i.jsx("path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"}),i.jsx("polyline",{points:"15 3 21 3 21 9"}),i.jsx("line",{x1:"10",y1:"14",x2:"21",y2:"3"})]})]})]})]})}function rr({mapError:t=Pa}={}){const[e,n]=w.useState("idle"),[r,a]=w.useState(null),o=w.useRef(!1),c=w.useCallback(async(u,{optimistic:g,rollback:m,reconcile:b}={})=>{if(o.current)return{ok:!1,skipped:!0};o.current=!0,n("pending"),a(null);let h=!1;try{g&&(g(),h=!0);const f=await u();return b==null||b(f),n("success"),{ok:!0,result:f}}catch(f){h&&(m==null||m());const v=t(f);return a(v),n("error"),{ok:!1,error:v}}finally{o.current=!1}},[t]),l=w.useCallback(()=>{n("idle"),a(null)},[]);return{status:e,error:r,isPending:e==="pending",isSuccess:e==="success",isError:e==="error",run:c,reset:l}}const bi=80,it={getItem(t){if(typeof window>"u"||!window.localStorage)return null;try{return window.localStorage.getItem(t)}catch{return null}},setItem(t,e){if(!(typeof window>"u"||!window.localStorage))try{window.localStorage.setItem(t,e)}catch{}},removeItem(t){if(!(typeof window>"u"||!window.localStorage))try{window.localStorage.removeItem(t)}catch{}}};function Tt(t){if(typeof t!="string")return;const e=t.replace(/[^a-zA-Z0-9 _:\-./]/g,"").trim();if(e)return e.slice(0,bi)}function Oe(t,e={}){if(typeof window>"u"||typeof t!="string")return;const n={event:Tt(t)||"unknown_event",timestamp:new Date().toISOString(),metadata:Object.fromEntries(Object.entries(e).map(([r,a])=>[Tt(r),Tt(String(a))]).filter(([r,a])=>!!r&&!!a))};console.info("[analytics-safe]",n)}const xn="trivela_analytics_session",yi="trivela_analytics_consent",An="trivela_analytics_buffer",wi=10,xi=5e3;let Je=null,Lt=null,we=[],at=null;function vi(){return navigator.doNotTrack==="1"||navigator.doNotTrack==="yes"||window.doNotTrack==="1"}function Bi(){if(Je)return Je;const t=it.getItem(xn);return t?(Je=t,Je):(Je=`anon_${Zi()}`,it.setItem(xn,Je),Je)}function Zi(){const t=new Uint8Array(16);return crypto.getRandomValues(t),Array.from(t,e=>e.toString(16).padStart(2,"0")).join("").substring(0,16)}function Ii(){return vi()?!1:(Lt===null&&(Lt=it.getItem(yi)==="true"),Lt!==!1)}function Ni(){const t=new URLSearchParams(window.location.search);return{source:t.get("utm_source")||void 0,medium:t.get("utm_medium")||void 0,campaign:t.get("utm_campaign")||void 0}}async function se(t,e={},n={}){if(!Ii())return;const r=Ni(),a={event_name:t,session_id:Bi(),campaign_id:n.campaignId||e.campaign_id,source:r.source,medium:r.medium,campaign:r.campaign,properties:Wi(e),timestamp:new Date().toISOString()};we.push(a),Bt(),we.length>=wi?await zt():(at&&clearTimeout(at),at=setTimeout(()=>zt(),xi))}function Wi(t){const e={...t},n=["wallet_address","ip","email","name","address"];for(const r of n)delete e[r];return e.balance_points&&(e.balance_points=Math.floor(e.balance_points/100)*100),e.amount_requested&&(e.amount_requested=Math.floor(e.amount_requested/100)*100),e.amount_claimed&&(e.amount_claimed=Math.floor(e.amount_claimed/100)*100),e}function Bt(){try{it.setItem(An,JSON.stringify(we))}catch(t){console.warn("Failed to save analytics buffer:",t)}}function Gi(){try{const t=it.getItem(An);t&&(we=JSON.parse(t))}catch(t){console.warn("Failed to load analytics buffer:",t),we=[]}}async function zt(){if(we.length===0)return;const t=[...we];we=[],Bt(),at&&(clearTimeout(at),at=null);try{(await fetch("/api/v1/analytics/events/batch",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({events:t})})).ok||(we.unshift(...t),Bt())}catch{we.unshift(...t),Bt()}}function vn(){if(we.length>0){const t=new Blob([JSON.stringify({events:we})],{type:"application/json"});navigator.sendBeacon("/api/v1/analytics/events/batch",t),we=[],it.removeItem(An)}}typeof window<"u"&&(Gi(),we.length>0&&zt(),window.addEventListener("beforeunload",vn),document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&vn()}));const bt={trackWalletConnectInitiated:(t,e,n)=>se("wallet_connect_initiated",{provider:t,page:e,campaign_id:n}),trackWalletConnectSuccess:(t,e,n)=>se("wallet_connect_success",{provider:t,network:e,time_to_connect_ms:n}),trackWalletConnectFailed:(t,e,n)=>se("wallet_connect_failed",{provider:t,error_type:e,time_to_failure_ms:n}),trackRegistrationViewed:(t,e,n,r)=>se("registration_viewed",{campaign_id:t,privacy_mode:e,is_registered:n,time_remaining_hours:r}),trackRegistrationInitiated:(t,e,n)=>se("registration_initiated",{campaign_id:t,privacy_mode:e,has_allowlist_proof:n}),trackRegistrationTxSigned:(t,e,n)=>se("registration_tx_signed",{campaign_id:t,privacy_mode:e,time_to_sign_ms:n}),trackRegistrationSuccess:(t,e,n,r,a)=>se("registration_success",{campaign_id:t,privacy_mode:e,tx_fee_xlm:n,time_to_confirm_ms:r,already_registered:a}),trackRegistrationFailed:(t,e,n,r)=>se("registration_failed",{campaign_id:t,privacy_mode:e,error_type:n,stage:r}),trackRewardsViewed:(t,e,n)=>se("rewards_viewed",{campaign_id:t,balance_points:e,has_payout_asset:n}),trackClaimInitiated:(t,e,n)=>se("claim_initiated",{campaign_id:t,claim_type:e,amount_requested:n}),trackClaimTxSigned:(t,e,n)=>se("claim_tx_signed",{campaign_id:t,claim_type:e,time_to_sign_ms:n}),trackClaimSuccess:(t,e,n,r,a)=>se("claim_success",{campaign_id:t,claim_type:e,amount_claimed:n,tx_fee_xlm:r,time_to_confirm_ms:a}),trackClaimFailed:(t,e,n,r)=>se("claim_failed",{campaign_id:t,claim_type:e,error_type:n,stage:r}),trackCampaignListViewed:(t,e,n)=>se("campaign_list_viewed",{filter_status:t,filter_category:e,campaigns_visible:n}),trackCampaignCardClicked:(t,e,n,r)=>se("campaign_card_clicked",{campaign_id:t,campaign_status:e,position:n,source_page:r}),trackCampaignDetailViewed:(t,e,n,r,a)=>se("campaign_detail_viewed",{campaign_id:t,campaign_status:e,has_payout_asset:n,privacy_mode:r,days_remaining:a}),trackCampaignCreateStarted:(t,e)=>se("campaign_create_started",{is_admin:t,has_created_before:e}),trackCampaignCreateStepCompleted:(t,e,n)=>se("campaign_create_step_completed",{step:t,step_number:e,time_on_step_ms:n}),trackCampaignCreateSuccess:(t,e,n,r,a)=>se("campaign_create_success",{campaign_id:t,privacy_mode:e,has_payout_asset:n,total_time_ms:r,steps_visited:a}),trackCampaignCreateAbandoned:(t,e)=>se("campaign_create_abandoned",{last_step:t,time_spent_ms:e}),trackSessionStarted:(t,e,n,r,a)=>se("session_started",{entry_page:t,source:e,medium:n,campaign:r,referrer_domain:a}),trackPageViewed:(t,e,n)=>se("page_viewed",{page_path:t,page_title:e,previous_page:n})};function Si({walletAddress:t,hasPayoutAsset:e=!1,onClaimSuccess:n}){const[r,a]=w.useState(""),[o,c]=w.useState(""),[l,u]=w.useState(null),[g,m]=w.useState(""),[b,h]=w.useState(e?"redeem":"claim"),f=w.useId(),v=w.useId(),B=w.useId(),I=an(),{run:W,isPending:R,isError:X,error:k}=rr();w.useEffect(()=>{e&&t&&fn().then(m).catch(()=>m(""))},[e,t]),w.useEffect(()=>{h(e?"redeem":"claim")},[e]);const G=Number(r),S=Number.isInteger(G)&&G>0,j=o||X?B:void 0,L=async z=>{if(z.preventDefault(),!t||!S)return;c(""),u(null);const _=r;b==="redeem"?await W(()=>ui(t,G),{optimistic:()=>a(""),rollback:()=>a(_),reconcile:({hash:O,assetAmount:H})=>{c(O),u({points:_,asset:H}),n==null||n(),fn().then(m).catch(()=>{})}}):await W(()=>di(t,G),{optimistic:()=>a(""),rollback:()=>a(_),reconcile:({hash:O,newBalance:H})=>{c(O),n==null||n(H)}})};return i.jsxs("section",{className:"claim-section","aria-labelledby":v,children:[i.jsx("h3",{id:v,className:"claim-heading",children:b==="redeem"?"Redeem for asset":"Claim rewards"}),e&&i.jsxs("div",{className:"claim-mode-toggle",style:{display:"flex",gap:"8px",marginBottom:"12px"},children:[i.jsx("button",{type:"button",className:`btn ${b==="redeem"?"btn-primary":"btn-secondary"}`,onClick:()=>h("redeem"),style:{fontSize:"0.85rem",padding:"6px 12px"},children:"Redeem asset"}),i.jsx("button",{type:"button",className:`btn ${b==="claim"?"btn-primary":"btn-secondary"}`,onClick:()=>h("claim"),style:{fontSize:"0.85rem",padding:"6px 12px"},children:"Claim points"})]}),b==="redeem"&&g&&i.jsxs("p",{className:"claim-reserve-info",style:{fontSize:"0.85rem",color:"#94a3b8",marginBottom:"8px"},children:["Reserve: ",g," tokens available"]}),i.jsxs("form",{className:"claim-form",onSubmit:L,children:[i.jsx("label",{htmlFor:f,className:"claim-label",children:b==="redeem"?"Points to redeem":"Amount to claim"}),i.jsxs("div",{className:"claim-input-row",children:[i.jsx("input",{id:f,type:"number",min:"1",step:"1",placeholder:"e.g. 100",className:"claim-input",value:r,disabled:R||!t,"aria-invalid":X,"aria-describedby":j,onChange:z=>a(z.target.value)}),i.jsx("button",{type:"submit",className:"btn btn-primary btn-button",disabled:!t||!S||R,children:R?"Signing…":b==="redeem"?"Redeem":"Claim"})]})]}),R&&i.jsx(ut,{variant:"pending",network:I,status:b==="redeem"?"Redeeming…":"Claiming…"}),!R&&o&&i.jsx(ut,{hash:o,network:I,status:"Transaction confirmed"}),!R&&l&&i.jsxs("div",{className:"claim-redeem-result",style:{background:"rgba(34, 197, 94, 0.1)",border:"1px solid rgba(34, 197, 94, 0.3)",borderRadius:"8px",padding:"10px 14px",marginTop:"8px",fontSize:"0.9rem"},children:["Redeemed ",l.points," points → received ",l.asset," tokens"]}),X&&k&&i.jsxs("p",{id:B,className:"claim-error",role:"alert",children:[k.message,k.recovery?` ${k.recovery}.`:""]})]})}const me={NONE:0,MERKLE:1,ZK:2},Ri={[me.NONE]:"Open",[me.MERKLE]:"Allowlist",[me.ZK]:"Zero-Knowledge"},Ci={background:"rgba(99, 102, 241, 0.1)",border:"1px solid rgba(99, 102, 241, 0.3)",borderRadius:"8px",padding:"10px 14px",fontSize:"0.85rem",color:"#a5b4fc",marginTop:"8px"},ki={background:"rgba(251, 191, 36, 0.1)",border:"1px solid rgba(251, 191, 36, 0.3)",borderRadius:"8px",padding:"10px 14px",fontSize:"0.85rem",color:"#fbbf24",marginTop:"8px"};function Ei({walletAddress:t,onRegistered:e}){const[n,r]=w.useState(null),[a,o]=w.useState(!1),[c,l]=w.useState(""),[u,g]=w.useState(""),[m,b]=w.useState(""),[h,f]=w.useState(null),[v,B]=w.useState(!1),[I,W]=w.useState(null),[R,X]=w.useState(null),k=w.useId(),G=w.useId(),S=mt(),j=an(),{run:L,isPending:z,isError:_,error:O}=rr();w.useEffect(()=>{if(!S)return;let N=!1;const V=new dt.CampaignClient({rpcUrl:Fe(),networkPassphrase:ve(),contractId:S});return Promise.all([V.get_privacy_mode().then(Q=>Q.simulate()),V.is_fallback_allowed().then(Q=>Q.simulate())]).then(([Q,ie])=>{N||(f(Q),B(ie))}).catch(()=>{N||f(me.NONE)}),()=>{N=!0}},[S]),w.useEffect(()=>{if(h!==me.ZK)return;let N=!1;return(async()=>{try{if(typeof Worker>"u"){N||W(!1);return}if(typeof WebAssembly>"u"){N||W(!1);return}N||W(!0)}catch{N||W(!1)}})(),()=>{N=!0}},[h]),w.useEffect(()=>{if(!t||!S){r(null),g(""),b("");return}let N=!1;return o(!0),g(""),b(""),bt.trackRegistrationViewed(S,h===me.NONE?"open":h===me.MERKLE?"merkle":"zk",n,null),pi(t).then(V=>{N||r(V)}).catch(V=>{N||g(nr(V))}).finally(()=>{N||o(!1)}),()=>{N=!0}},[t,S,h]);const H=async()=>{if(!t)return;b(""),l(""),g("");const N=n,V=Date.now();X(V),bt.trackRegistrationInitiated(S,h===me.NONE?"open":h===me.MERKLE?"merkle":"zk",!1),await L(()=>hi(t),{optimistic:()=>r(!0),rollback:()=>{r(N),bt.trackRegistrationFailed(S,h===me.NONE?"open":h===me.MERKLE?"merkle":"zk","unknown","rollback")},reconcile:({hash:Q,alreadyRegistered:ie})=>{l(Q);const J=Date.now()-V;ie?b("You were already registered in this campaign."):e==null||e(),bt.trackRegistrationSuccess(S,h===me.NONE?"open":h===me.MERKLE?"merkle":"zk","0.0001",J,ie||!1)}})};if(!S)return null;const P=h!==null?Ri[h]:"…",$=a?"Checking…":z?"Registering…":n===!0?"✓ Registered":n===!1?"Not registered":"—",q=!n&&(h!==me.ZK||I===!0||I===!1&&v),M=h===me.ZK&&I===!1&&!v;return i.jsxs("section",{className:"register-section","aria-labelledby":k,"aria-busy":a||z,children:[i.jsx("h3",{id:k,className:"register-heading",children:"Campaign registration"}),i.jsxs("div",{className:"register-status",style:{display:"flex",justifyContent:"space-between",alignItems:"center",marginBottom:"8px"},children:[i.jsxs("div",{children:[i.jsx("span",{className:"register-status-label",children:"Participant status "}),i.jsx("strong",{id:G,className:n?"register-active":"","aria-live":"polite",children:$})]}),h!==null&&i.jsxs("span",{style:{fontSize:"0.75rem",padding:"3px 8px",borderRadius:"12px",background:"rgba(99, 102, 241, 0.15)",color:"#a5b4fc"},children:[P," mode"]})]}),q&&i.jsx("button",{type:"button",className:"btn btn-primary btn-button",disabled:z||a||!t,"aria-describedby":G,onClick:H,children:z?"Signing…":"Register in campaign"}),M&&i.jsx("div",{style:ki,children:"Your browser does not support zero-knowledge proofs. Contact the campaign operator to enable fallback registration."}),h===me.ZK&&I===!0&&!n&&i.jsx("div",{style:Ci,children:"This campaign uses zero-knowledge proofs for privacy-preserving registration."}),z&&i.jsx(ut,{variant:"pending",network:j,status:"Registering…"}),!z&&c&&i.jsx(ut,{hash:c,network:j,status:"Registered"}),m&&i.jsx("p",{className:"register-note",role:"status",children:m}),_&&O&&i.jsxs("p",{className:"register-error",role:"alert",children:[O.message,O.recovery?` ${O.recovery}.`:""]}),u&&i.jsx("p",{className:"register-error",role:"alert",children:u})]})}function Vi({network:t="testnet",onChange:e}){return null}const Fi=3e4;function ji(t){const e=Date.now()-new Date(t).getTime(),n=Math.floor(e/6e4);if(n<1)return"just now";if(n<60)return`${n}m ago`;const r=Math.floor(n/60);return r<24?`${r}h ago`:`${Math.floor(r/24)}d ago`}function Xi(){const[t,e]=w.useState(!1),[n,r]=w.useState([]),[a,o]=w.useState(0),[c,l]=w.useState(!1),u=w.useRef(null),g=w.useRef(null),m=w.useCallback(async()=>{try{const f=await rt.getNotifications({limit:20}),v=Array.isArray(f)?f:f.data??f.notifications??[];r(v),o(v.filter(B=>!B.read).length)}catch{}},[]);w.useEffect(()=>{m();const f=setInterval(m,Fi);return()=>clearInterval(f)},[m]),w.useEffect(()=>{if(!t)return;function f(B){B.key==="Escape"&&e(!1)}function v(B){u.current&&!u.current.contains(B.target)&&g.current&&!g.current.contains(B.target)&&e(!1)}return document.addEventListener("keydown",f),document.addEventListener("mousedown",v),()=>{document.removeEventListener("keydown",f),document.removeEventListener("mousedown",v)}},[t]);const b=async f=>{try{await rt.markNotificationRead(f),r(v=>v.map(B=>B.id===f?{...B,read:!0}:B)),o(v=>Math.max(0,v-1))}catch{}},h=async()=>{l(!0);try{await rt.markAllNotificationsRead(),r(f=>f.map(v=>({...v,read:!0}))),o(0)}catch{}finally{l(!1)}};return i.jsxs("div",{style:{position:"relative",display:"inline-flex"},children:[i.jsxs("button",{ref:g,type:"button",className:"btn btn-secondary btn-button","aria-label":`Notifications${a>0?`, ${a} unread`:""}`,"aria-expanded":t,"aria-haspopup":"true",onClick:()=>e(f=>!f),style:{position:"relative",padding:"0.45rem 0.75rem"},children:[i.jsx("span",{"aria-hidden":"true",children:"🔔"}),a>0&&i.jsx("span",{"aria-hidden":"true",style:{position:"absolute",top:2,right:2,background:"var(--danger)",color:"#fff",borderRadius:"999px",fontSize:"0.65rem",fontWeight:700,minWidth:16,height:16,display:"flex",alignItems:"center",justifyContent:"center",padding:"0 4px"},children:a>99?"99+":a})]}),t&&i.jsxs("div",{ref:u,role:"dialog","aria-label":"Notifications",style:{position:"absolute",top:"calc(100% + 8px)",right:0,width:"min(360px, 92vw)",background:"var(--bg-card-solid)",border:"1px solid var(--border)",borderRadius:14,boxShadow:"var(--shadow-lg)",zIndex:100,overflow:"hidden"},children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",padding:"12px 16px",borderBottom:"1px solid var(--border)"},children:[i.jsx("h2",{style:{margin:0,fontSize:"0.95rem",fontWeight:700},children:"Notifications"}),i.jsxs("div",{style:{display:"flex",gap:8,alignItems:"center"},children:[a>0&&i.jsx("button",{type:"button",className:"btn btn-secondary",onClick:h,disabled:c,style:{fontSize:"0.75rem",padding:"3px 10px"},children:"Mark all read"}),i.jsx("button",{type:"button","aria-label":"Close notifications",onClick:()=>e(!1),style:{background:"none",border:"none",cursor:"pointer",color:"var(--text-muted)",fontSize:"1.1rem",lineHeight:1,padding:"2px 4px"},children:"✕"})]})]}),i.jsx("ul",{role:"list",style:{listStyle:"none",margin:0,padding:0,maxHeight:360,overflowY:"auto"},children:n.length===0?i.jsx("li",{style:{padding:"32px 16px",textAlign:"center",color:"var(--text-muted)",fontSize:"0.875rem"},children:"No notifications yet."}):n.map(f=>i.jsxs("li",{style:{display:"flex",gap:12,padding:"12px 16px",borderBottom:"1px solid var(--border)",background:f.read?"transparent":"var(--accent-soft)",cursor:f.read?"default":"pointer"},onClick:()=>!f.read&&b(f.id),children:[i.jsxs("div",{style:{flex:1,minWidth:0},children:[i.jsx("p",{style:{margin:0,fontSize:"0.875rem",fontWeight:f.read?400:600,color:"var(--text)",whiteSpace:"pre-wrap",wordBreak:"break-word"},children:f.title??f.message??"New notification"}),f.body&&i.jsx("p",{style:{margin:"2px 0 0",fontSize:"0.8rem",color:"var(--text-muted)"},children:f.body}),i.jsx("p",{style:{margin:"4px 0 0",fontSize:"0.72rem",color:"var(--text-muted)"},children:f.created_at?ji(f.created_at):""})]}),!f.read&&i.jsx("span",{"aria-label":"Unread",style:{flexShrink:0,width:8,height:8,borderRadius:"50%",background:"var(--accent)",marginTop:6}})]},f.id))})]})]})}function Yi({isOpen:t,onClose:e,publicKey:n,onSuccess:r}){const[a,o]=w.useState(!1),[c,l]=w.useState(null),[u,g]=w.useState(!1),[m,b]=w.useState(null),h=Mr(),f=async()=>{if(!n){l("No wallet connected");return}o(!0),l(null),g(!1);try{const v=await fetch("/api/v1/faucet/fund",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({publicKey:n})}),B=await v.json();if(!v.ok)throw new Error(B.error||"Failed to fund account");g(!0),b(B.hash),r==null||r(B)}catch(v){l(v.message)}finally{o(!1)}};return t?i.jsx("div",{className:"fixed inset-0 bg-black/50 flex items-center justify-center z-50",children:i.jsxs("div",{className:"bg-white rounded-lg p-6 max-w-md w-full mx-4",children:[i.jsxs("div",{className:"flex justify-between items-center mb-4",children:[i.jsx("h2",{className:"text-xl font-bold",children:"Fund Testnet Account"}),i.jsx("button",{onClick:e,className:"text-gray-500 hover:text-gray-700",children:"✕"})]}),h.network!=="testnet"?i.jsx("div",{className:"bg-yellow-50 border border-yellow-200 rounded-lg p-4",children:i.jsxs("p",{className:"text-yellow-800 text-sm",children:[i.jsx("strong",{children:"Mainnet Notice:"})," The faucet is only available on testnet. To acquire assets on mainnet, please use a Stellar exchange or transfer from another wallet."]})}):i.jsxs(i.Fragment,{children:[i.jsxs("div",{className:"mb-4",children:[i.jsx("p",{className:"text-gray-600 text-sm mb-2",children:"Get 10,000 test XLM from Friendbot to start participating in campaigns."}),i.jsxs("div",{className:"bg-gray-50 rounded-lg p-3",children:[i.jsx("p",{className:"text-xs text-gray-500 mb-1",children:"Connected Wallet:"}),i.jsx("p",{className:"text-sm font-mono break-all",children:n||"Not connected"})]})]}),c&&i.jsx("div",{className:"bg-red-50 border border-red-200 rounded-lg p-3 mb-4",children:i.jsx("p",{className:"text-red-800 text-sm",children:c})}),u&&i.jsxs("div",{className:"bg-green-50 border border-green-200 rounded-lg p-3 mb-4",children:[i.jsx("p",{className:"text-green-800 text-sm font-medium mb-1",children:"✓ Account funded successfully!"}),m&&i.jsxs("p",{className:"text-xs text-green-600 font-mono break-all",children:["TX: ",m]})]}),i.jsxs("div",{className:"flex gap-3",children:[i.jsx("button",{onClick:f,disabled:a||!n||u,className:"flex-1 bg-blue-600 text-white py-2 px-4 rounded-lg hover:bg-blue-700 disabled:bg-gray-300 disabled:cursor-not-allowed transition-colors",children:a?"Funding...":u?"Funded":"Fund Account"}),i.jsx("button",{onClick:e,className:"px-4 py-2 border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors",children:"Close"})]}),i.jsx("p",{className:"text-xs text-gray-400 mt-3",children:"Rate limited to 5 requests per hour to prevent abuse."})]})]})}):null}const Mt={"nav.campaigns":"Campaigns","nav.explore":"Explore","nav.analytics":"Analytics","nav.notifications":"Notifications","nav.about":"About","nav.admin":"Admin","nav.github":"GitHub","nav.stellar":"Stellar","wallet.connect":"Connect wallet","wallet.disconnect":"Disconnect","wallet.connecting":"Connecting…","wallet.modal.title":"Connect wallet","wallet.modal.detected":"Detected","wallet.modal.install":"Install →","wallet.modal.soon":"Soon","wallet.modal.newToStellar":"New to Stellar?","wallet.modal.newToStellarDesc":"are great places to start.","wallet.modal.comingSoon":"WalletConnect integration coming soon","wallet.error.notFound":"Wallet not found","wallet.balance":"Balance","wallet.points":"My points","wallet.freighter.desc":"The official Stellar browser extension wallet","wallet.xbull.desc":"Feature-rich Stellar wallet with DeFi support","wallet.lobstr.desc":"Popular mobile & desktop Stellar wallet","wallet.walletconnect.desc":"Connect any compatible mobile wallet via QR code","wallet.rabet.desc":"Lightweight Stellar browser extension","campaigns.title":"Campaigns","campaigns.search":"Search campaigns…","campaigns.empty":"No campaigns found","campaigns.loading":"Loading campaigns…","campaigns.error":"Could not load campaigns","campaigns.retry":"Retry","campaigns.activeOnly":"Active only","campaigns.sort.newest":"Newest","campaigns.sort.oldest":"Oldest","campaigns.sort.nameAsc":"Name A–Z","campaigns.sort.nameDesc":"Name Z–A","campaigns.sort.rewardDesc":"Highest reward","campaigns.join":"Join campaign","campaigns.claim":"Claim rewards","common.loading":"Loading…","common.error":"An error occurred","common.retry":"Retry","common.apply":"Apply","common.reset":"Reset","common.close":"Close","common.save":"Save","common.cancel":"Cancel","common.previous":"Previous","common.next":"Next","common.darkMode":"Dark mode","common.lightMode":"Light mode","common.language":"Language","points.myPoints":"My points","points.totalPoints":"Total points","points.loading":"Loading points…","points.refresh":"Refresh points","points.claim":"Claim","network.testnet":"Testnet","network.mainnet":"Mainnet","network.switch":"Switch network","audit.title":"Org Activity Feed","audit.subtitle":"All privileged actions taken by org members.","audit.export.csv":"Export CSV","audit.export.json":"Export JSON","audit.filter.actor":"Actor","audit.filter.action":"Action","audit.filter.resource":"Resource","audit.filter.from":"From","audit.filter.to":"To","audit.filter.allActions":"All actions","audit.filter.actorPlaceholder":"Wallet or user ID","audit.filter.resourcePlaceholder":"campaign/member/key…","audit.empty":"No audit entries match your filters.","audit.loading":"Loading audit log…","audit.error":"Could not load audit log.","audit.col.timestamp":"Timestamp","audit.col.actor":"Actor","audit.col.action":"Action","audit.col.resource":"Resource","audit.col.details":"Details","admin.title":"Admin","admin.campaigns":"Manage campaigns","about.title":"About Trivela"},_i={"nav.campaigns":"活动","nav.explore":"探索","nav.analytics":"数据分析","nav.notifications":"通知","nav.about":"关于","nav.admin":"管理员","nav.github":"GitHub","nav.stellar":"Stellar","wallet.connect":"连接钱包","wallet.disconnect":"断开连接","wallet.connecting":"连接中…","wallet.modal.title":"连接钱包","wallet.modal.detected":"已检测到","wallet.modal.install":"安装 →","wallet.modal.soon":"即将推出","wallet.modal.newToStellar":"初次使用 Stellar?","wallet.modal.newToStellarDesc":"是很好的起点。","wallet.modal.comingSoon":"WalletConnect 集成即将推出","wallet.error.notFound":"未找到钱包","wallet.balance":"余额","wallet.points":"我的积分","wallet.freighter.desc":"官方 Stellar 浏览器扩展钱包","wallet.xbull.desc":"功能丰富的 Stellar DeFi 钱包","wallet.lobstr.desc":"流行的移动端和桌面端 Stellar 钱包","wallet.walletconnect.desc":"通过二维码连接任意兼容的移动端钱包","wallet.rabet.desc":"轻量级 Stellar 浏览器扩展","campaigns.title":"活动列表","campaigns.search":"搜索活动…","campaigns.empty":"未找到任何活动","campaigns.loading":"加载活动中…","campaigns.error":"无法加载活动","campaigns.retry":"重试","campaigns.activeOnly":"仅显示进行中","campaigns.sort.newest":"最新","campaigns.sort.oldest":"最早","campaigns.sort.nameAsc":"名称 A–Z","campaigns.sort.nameDesc":"名称 Z–A","campaigns.sort.rewardDesc":"最高奖励","campaigns.join":"加入活动","campaigns.claim":"领取奖励","common.loading":"加载中…","common.error":"发生错误","common.retry":"重试","common.apply":"应用","common.reset":"重置","common.close":"关闭","common.save":"保存","common.cancel":"取消","common.previous":"上一页","common.next":"下一页","common.darkMode":"深色模式","common.lightMode":"浅色模式","common.language":"语言","points.myPoints":"我的积分","points.totalPoints":"总积分","points.loading":"积分加载中…","points.refresh":"刷新积分","points.claim":"领取","network.testnet":"测试网","network.mainnet":"主网","network.switch":"切换网络","audit.title":"组织操作记录","audit.subtitle":"记录所有组织成员的特权操作。","audit.export.csv":"导出 CSV","audit.export.json":"导出 JSON","audit.filter.actor":"操作者","audit.filter.action":"操作类型","audit.filter.resource":"资源","audit.filter.from":"开始日期","audit.filter.to":"结束日期","audit.filter.allActions":"全部操作","audit.filter.actorPlaceholder":"钱包地址或用户 ID","audit.filter.resourcePlaceholder":"活动/成员/密钥…","audit.empty":"没有符合筛选条件的审计记录。","audit.loading":"加载审计日志中…","audit.error":"无法加载审计日志。","audit.col.timestamp":"时间","audit.col.actor":"操作者","audit.col.action":"操作","audit.col.resource":"资源","audit.col.details":"详情","admin.title":"管理员","admin.campaigns":"管理活动","about.title":"关于 Trivela"},ar={en:Mt,"zh-CN":_i},ir="trivela_locale",Nt=Object.keys(ar);function Ti(){try{const e=localStorage.getItem(ir);if(e&&Nt.includes(e))return e}catch{}return(navigator.language??"en").startsWith("zh")?"zh-CN":"en"}const sr=w.createContext({locale:"en",setLocale:()=>{},t:t=>t});function Li({children:t}){const[e,n]=w.useState(Ti),r=w.useCallback(c=>{if(Nt.includes(c)){n(c);try{localStorage.setItem(ir,c)}catch{}}},[]);w.useEffect(()=>{document.documentElement.lang=e},[e]);const a=w.useCallback((c,l)=>(ar[e]??Mt)[c]??Mt[c]??l??c,[e]),o=w.useMemo(()=>({locale:e,setLocale:r,t:a,supported:Nt}),[e,r,a]);return i.jsx(sr.Provider,{value:o,children:t})}function ln(){return w.useContext(sr)}const Hi={en:"EN","zh-CN":"中文"};function Ji(t){return t?t.length<=14?t:`${t.slice(0,6)}...${t.slice(-4)}`:""}const Pi=[{href:"/analytics",key:"nav.analytics"},{href:"/notification-settings",key:"nav.notifications"},{href:"https://github.com/FinesseStudioLab/Trivela",key:"nav.github"},{href:"https://developers.stellar.org/docs",key:"nav.stellar"},{href:"/",key:"nav.campaigns"},{href:"/explore",key:"nav.explore"},{href:"/about",key:"nav.about"},{href:"/admin",key:"nav.admin"}];function or({theme:t="dark",onToggleTheme:e,stellarNetwork:n="testnet",onChangeStellarNetwork:r,walletAddress:a="",walletBalance:o="",isWalletBalanceLoading:c=!1,isWalletLoading:l=!1,onConnectWallet:u,onDisconnectWallet:g}){const m=t==="dark"?"light":"dark",{t:b,locale:h,setLocale:f}=ln(),v=`${b(n==="mainnet"?"network.mainnet":"network.testnet")} balance`,B=Pi.map(N=>({...N,label:b(N.key)})),{pathname:I}=tn(),[W,R]=w.useState(!1),[X,k]=w.useState(!1),[G,S]=w.useState(null),[j,L]=w.useState("red"),[z,_]=w.useState(!1),[O,H]=w.useState(()=>{try{const N=localStorage.getItem("rpc_latency_history");return N?JSON.parse(N):[]}catch{return[]}});w.useEffect(()=>{const N=async()=>{const Q=Date.now();try{const ie=await fetch(U("/health/rpc")),ee=Date.now()-Q;if(ie.ok){S(ee);let le="green";ee>=2e3?le="red":ee>=500&&(le="yellow"),L(le),H(Be=>{const Ge=[...Be.slice(-4),ee];return localStorage.setItem("rpc_latency_history",JSON.stringify(Ge)),Ge})}else S(null),L("red"),H(le=>{const Be=[...le.slice(-4),0];return localStorage.setItem("rpc_latency_history",JSON.stringify(Be)),Be})}catch{S(null),L("red"),H(J=>{const ee=[...J.slice(-4),0];return localStorage.setItem("rpc_latency_history",JSON.stringify(ee)),ee})}};N();const V=setInterval(N,3e4);return()=>clearInterval(V)},[n]);const P=n==="mainnet"?"https://soroban-mainnet.stellar.org":"https://soroban-testnet.stellar.org",$=G!==null?`RPC Latency: ${G}ms — ${n==="mainnet"?"Mainnet":"Testnet"}`:`RPC Offline — ${n==="mainnet"?"Mainnet":"Testnet"}`,q=()=>R(N=>!N),M=()=>R(!1);return i.jsxs(i.Fragment,{children:[i.jsx("header",{className:"site-header",children:i.jsxs("nav",{className:"nav","aria-label":"Primary",children:[i.jsxs("div",{className:"nav-top-row",children:[i.jsxs("a",{href:"/",className:"nav-logo","aria-label":"Trivela home",onClick:M,children:[i.jsx("span",{className:"nav-logo-icon","aria-hidden":"true",children:"◇"}),"Trivela"]}),i.jsxs("button",{type:"button",className:"nav-hamburger",onClick:q,"aria-expanded":W,"aria-controls":"nav-mobile-menu","aria-label":W?"Close navigation menu":"Open navigation menu",children:[i.jsx("span",{className:"nav-hamburger-bar","aria-hidden":"true"}),i.jsx("span",{className:"nav-hamburger-bar","aria-hidden":"true"}),i.jsx("span",{className:"nav-hamburger-bar","aria-hidden":"true"})]})]}),i.jsxs("div",{id:"nav-mobile-menu",className:`nav-actions${W?" nav-actions--open":""}`,children:[i.jsxs("div",{className:"nav-links",children:[B.map(N=>{const V=N.href.startsWith("http");return i.jsx("a",{href:N.href,...V?{target:"_blank",rel:"noopener noreferrer"}:{},children:N.label},N.href)}),B.map(N=>i.jsx("a",{href:N.href,className:I===N.href?"nav-link-active":void 0,"aria-current":I===N.href?"page":void 0,onClick:M,children:N.label},N.href)),a&&i.jsx("a",{href:"/profile",className:I==="/profile"?"nav-link-active":void 0,"aria-current":I==="/profile"?"page":void 0,onClick:M,children:"Profile"}),a&&i.jsx("a",{href:"/history",className:I==="/history"?"nav-link-active":void 0,"aria-current":I==="/history"?"page":void 0,onClick:M,children:"History"})]}),i.jsxs("div",{className:"nav-utilities",children:[i.jsxs("div",{style:{display:"flex",alignItems:"center",gap:"8px",position:"relative"},children:[i.jsxs("button",{type:"button",onClick:()=>_(!z),style:{background:"none",border:"none",padding:"4px",cursor:"pointer",display:"flex",alignItems:"center",gap:"6px"},title:$,children:[i.jsx("span",{style:{width:"10px",height:"10px",borderRadius:"50%",backgroundColor:j==="green"?"#10b981":j==="yellow"?"#f59e0b":"#ef4444",display:"inline-block"}}),G!==null&&i.jsxs("span",{style:{fontSize:"0.75rem",color:"var(--color-text-secondary, #94a3b8)"},children:[G,"ms"]})]}),z&&i.jsxs("div",{style:{position:"absolute",top:"100%",right:0,backgroundColor:"var(--color-surface, #1e293b)",border:"1px solid var(--color-border, #334155)",borderRadius:"8px",padding:"16px",zIndex:100,width:"260px",textAlign:"left",boxShadow:"0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)"},children:[i.jsx("h4",{style:{margin:"0 0 8px 0",fontSize:"0.875rem",fontWeight:600,color:"var(--color-text, #f8fafc)"},children:"Soroban RPC Status"}),i.jsxs("p",{style:{margin:"0 0 12px 0",fontSize:"0.75rem",color:"var(--color-text-secondary, #94a3b8)",wordBreak:"break-all"},children:[i.jsx("strong",{children:"URL:"})," ",P]}),i.jsxs("div",{style:{marginBottom:"12px"},children:[i.jsx("p",{style:{margin:"0 0 4px 0",fontSize:"0.75rem",fontWeight:600,color:"var(--color-text, #f8fafc)"},children:"Latency Sparkline (last 5):"}),i.jsx("div",{style:{display:"flex",alignItems:"flex-end",gap:"4px",height:"30px",background:"rgba(0,0,0,0.2)",padding:"4px",borderRadius:"4px"},children:O.map((N,V)=>{const Q=Math.max(...O,500),ie=N>0?N/Q*100:5,J=N===0?"#ef4444":N<500?"#10b981":N<2e3?"#f59e0b":"#ef4444";return i.jsx("div",{style:{flex:1,height:`${ie}%`,backgroundColor:J,borderRadius:"2px"},title:N>0?`${N}ms`:"Failed/Error"},V)})})]}),i.jsx("a",{href:"https://stellar.org/status",target:"_blank",rel:"noopener noreferrer",style:{fontSize:"0.75rem",color:"#38bdf8",textDecoration:"underline"},children:"Stellar Network Status"})]})]}),i.jsx(Xi,{}),i.jsx(Vi,{network:n,onChange:r}),a&&i.jsxs("p",{className:"nav-wallet","aria-live":"polite",children:[i.jsx("span",{className:"nav-wallet-label",children:"Wallet"}),i.jsx("span",{className:"nav-wallet-value",children:Ji(a)})]}),a&&i.jsxs("p",{className:"nav-wallet nav-wallet-balance","aria-live":"polite",children:[i.jsx("span",{className:"nav-wallet-label",children:v}),i.jsx("span",{className:"nav-wallet-value",children:c?"Loading…":o||"0 XLM"})]}),a&&n==="testnet"&&i.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>k(!0),style:{fontSize:"0.85rem",padding:"6px 12px"},children:"💧 Fund"}),u&&i.jsx("button",{type:"button",className:"btn btn-primary btn-button wallet-toggle",onClick:a?g:u,disabled:l,"aria-label":b(a?"wallet.disconnect":"wallet.connect"),children:l?b("wallet.connecting"):a?b("wallet.disconnect"):j==="red"?`${b("wallet.connect")} (Network degraded)`:b("wallet.connect")}),i.jsxs("button",{type:"button",className:"btn btn-secondary btn-button theme-toggle",onClick:e,"aria-label":`Switch to ${m} theme`,children:[i.jsx("span",{className:"theme-toggle-label",children:b(t==="dark"?"common.lightMode":"common.darkMode")}),i.jsx("span",{className:"theme-toggle-state","aria-hidden":"true",children:t})]}),i.jsx("select",{value:h,onChange:N=>f(N.target.value),"aria-label":b("common.language"),style:{background:"var(--color-surface, #1e293b)",border:"1px solid var(--color-border, rgba(255,255,255,0.1))",borderRadius:"6px",color:"var(--color-text, #e2e8f0)",fontSize:"0.8rem",padding:"4px 8px",cursor:"pointer"},children:Nt.map(N=>i.jsx("option",{value:N,children:Hi[N]??N},N))})]})]})]})}),i.jsx(Yi,{isOpen:X,onClose:()=>k(!1),publicKey:a,onSuccess:()=>{k(!1),u&&typeof u=="function"&&window.location.reload()}})]})}const Ui=({status:t})=>{const e=(t==null?void 0:t.toLowerCase())||"active",n=r=>{switch(r){case"upcoming":return"Upcoming";case"ended":return"Ended";case"active":default:return"Active"}};return i.jsxs("span",{className:`status-badge status-${e}`,children:[i.jsx("span",{className:"status-dot"}),n(e)]})};function Ar(t,e=new Date){if(!t)return null;const n=new Date(t);if(Number.isNaN(n.getTime()))return null;const r=n.getTime()-e.getTime();if(r<0)return null;const a=Math.floor(r/(1e3*60*60)),o=Math.floor(r%(1e3*60*60)/(1e3*60));return{hours:a,minutes:o,totalMs:r}}function Oi(t,e){return t===0&&e===0?"Ending soon":t===0?`${e}m`:e===0?`${t}h`:`${t}h ${e}m`}function Di(t,e=new Date){const n=Ar(t,e);if(!n)return!1;const r=24*60*60*1e3;return n.totalMs {t('terms.loading') || 'Loading terms...'} {error} {t('terms.noHistory') || 'No consent history found.'} Terms content will be loaded here.
+ {t('terms.versionLabel') || 'Version'}: {terms?.version}
+
+ Please review and accept our Terms of Service and Privacy Policy to continue using Trivela.
+
+
+ {t('terms.auditNote') || 'Your acceptance will be recorded in a tamper-evident audit trail for compliance purposes.'}
+
+
+ {hint}
+
+ {error}
+
+ {warning}
+
+ {success}
+ Are you sure? This action cannot be undone. {message} Modal content Modal content Content Content Content Content Content Content Content
+ This is a modal dialog with focus trapping, ESC/overlay close, and keyboard navigation.
+
+ This is a small modal for confirmations.
+
+ This is a large modal for complex content with more information.
+
+ Reward: 25 points per action
+ This action cannot be undone. All campaign data including claims and rewards will be permanently removed.
+
+ Try pressing Escape, clicking the overlay, or tabbing through the focusable elements.
+
+ Modal automatically adapts to the light theme through CSS custom properties.
+ p)&&(A=p);let y="";for(let x=s;xp&&(s=p),A<0?(A+=p,A<0&&(A=0)):A>p&&(A=p),AA)throw new RangeError("Trying to access beyond buffer length")}l.prototype.readUintLE=l.prototype.readUIntLE=function(s,A,p){s=s>>>0,A=A>>>0,p||J(s,A,this.length);let y=this[s],x=1,Z=0;for(;++Z>>0,A=A>>>0,p||J(s,A,this.length);let y=this[s+--A],x=1;for(;A>0&&(x*=256);)y+=this[s+--A]*x;return y},l.prototype.readUint8=l.prototype.readUInt8=function(s,A){return s=s>>>0,A||J(s,1,this.length),this[s]},l.prototype.readUint16LE=l.prototype.readUInt16LE=function(s,A){return s=s>>>0,A||J(s,2,this.length),this[s]|this[s+1]<<8},l.prototype.readUint16BE=l.prototype.readUInt16BE=function(s,A){return s=s>>>0,A||J(s,2,this.length),this[s]<<8|this[s+1]},l.prototype.readUint32LE=l.prototype.readUInt32LE=function(s,A){return s=s>>>0,A||J(s,4,this.length),(this[s]|this[s+1]<<8|this[s+2]<<16)+this[s+3]*16777216},l.prototype.readUint32BE=l.prototype.readUInt32BE=function(s,A){return s=s>>>0,A||J(s,4,this.length),this[s]*16777216+(this[s+1]<<16|this[s+2]<<8|this[s+3])},l.prototype.readBigUInt64LE=ue(function(s){s=s>>>0,Ne(s,"offset");const A=this[s],p=this[s+7];(A===void 0||p===void 0)&&Ee(s,this.length-8);const y=A+this[++s]*2**8+this[++s]*2**16+this[++s]*2**24,x=this[++s]+this[++s]*2**8+this[++s]*2**16+p*2**24;return BigInt(y)+(BigInt(x)<= 0${Z} and < 2${Z} ** ${(x+1)*8}${Z}`:F=`>= -(2${Z} ** ${(x+1)*8-1}${Z}) and < 2 ** ${(x+1)*8-1}${Z}`,new Ie.ERR_OUT_OF_RANGE("value",F,d)}Le(p,y,x)}function Ne(d,s){if(typeof d!="number")throw new Ie.ERR_INVALID_ARG_TYPE(s,"number",d)}function Ee(d,s,A){throw Math.floor(d)!==d?(Ne(d,A),new Ie.ERR_OUT_OF_RANGE("offset","an integer",d)):s<0?new Ie.ERR_BUFFER_OUT_OF_BOUNDS:new Ie.ERR_OUT_OF_RANGE("offset",`>= 0 and <= ${s}`,d)}const Ye=/[^+/0-9A-Za-z-_]/g;function Me(d){if(d=d.split("=")[0],d=d.trim().replace(Ye,""),d.length<2)return"";for(;d.length%4!==0;)d=d+"=";return d}function Ve(d,s){s=s||1/0;let A;const p=d.length;let y=null;const x=[];for(let Z=0;Z
+
+
+ )}
+
+
+
+
+ {consentHistory.map((entry, idx) => (
+ {t('terms.version') || 'Version'}
+ {t('terms.type') || 'Type'}
+ {t('terms.acceptedAt') || 'Accepted'}
+
+
+ ))}
+
+ {entry.terms_version}
+ {entry.consent_type}
+ {formatDate(entry.accepted_at)}
+ {t('terms.title') || 'Terms of Service & Privacy Policy'}
+
+ {title}
+
+ {showCloseButton && (
+
+ )}
+ Campaign Info
+
+ Duration: June 1 - Aug 31, 2026
+ Category: DeFi
+ N(e));if(b.useEffect(()=>{const t=()=>{n(N(e))};t();const s=N(e);if((s==null?void 0:s.type)===o.ENDING_SOON){const i=setInterval(t,6e4);return()=>clearInterval(i)}},[e]),!a)return null;switch(a.type){case o.ENDING_SOON:return r.jsxs("span",{className:"urgency-badge urgency-badge--ending-soon",role:"status","aria-live":"polite",children:[r.jsx("span",{className:"urgency-badge-icon","aria-hidden":"true",children:"⏱"}),a.data.label]});case o.FILLING_FAST:return r.jsxs("span",{className:"urgency-badge urgency-badge--filling-fast",role:"status",children:[r.jsx("span",{className:"urgency-badge-icon","aria-hidden":"true",children:"🔥"}),a.data.label]});case o.JUST_LAUNCHED:return r.jsxs("span",{className:"urgency-badge urgency-badge--just-launched",role:"status",children:[r.jsx("span",{className:"urgency-badge-icon","aria-hidden":"true",children:"✨"}),a.data.label]});default:return null}}R.__docgenInfo={description:`UrgencyBadge component displays time-sensitive signals for campaigns
+@param {object} props
+@param {object} props.campaign - Campaign data`,methods:[],displayName:"UrgencyBadge"};function K(e){if(!e)return"";const a=new Date(e);return Number.isNaN(a.getTime())?"":new Intl.DateTimeFormat("en",{month:"short",day:"numeric",year:"numeric"}).format(a)}function $({campaign:e}){const a=b.useId(),n=K(e==null?void 0:e.createdAt),t=(e==null?void 0:e.rewardPerAction)??0,s=(e==null?void 0:e.description)||"No campaign description has been added yet.",i=(e==null?void 0:e.status)||(e!=null&&e.active?"active":"ended");return r.jsx("article",{className:"campaign-card","aria-labelledby":a,children:r.jsxs(J,{to:`/campaign/${e==null?void 0:e.id}`,className:"campaign-card-link",children:[r.jsxs("div",{className:"campaign-card-header",children:[r.jsxs("div",{children:[r.jsxs("p",{className:"campaign-card-eyebrow",children:["Campaign #",(e==null?void 0:e.id)||"—"]}),r.jsx("h3",{id:a,className:"campaign-card-title",children:(e==null?void 0:e.name)||"Untitled campaign"})]}),r.jsxs("div",{className:"campaign-card-badges",children:[r.jsx(R,{campaign:e}),r.jsx(H,{status:i})]})]}),r.jsx("p",{className:"campaign-card-description",children:s}),r.jsxs("dl",{className:"campaign-card-metadata",children:[r.jsxs("div",{className:"campaign-card-metadata-item",children:[r.jsx("dt",{children:"Reward"}),r.jsxs("dd",{children:[t," pts"]})]}),n&&r.jsxs("div",{className:"campaign-card-metadata-item",children:[r.jsx("dt",{children:"Created"}),r.jsx("dd",{children:n})]})]})]})})}$.__docgenInfo={description:"",methods:[],displayName:"CampaignCard"};const re={title:"Components/CampaignCard",component:$,tags:["autodocs"],argTypes:{campaign:{control:"object"},loading:{control:"boolean"}}},c={id:"1",name:"Summer DeFi Rewards",slug:"summer-defi-rewards",description:"Earn points for swapping on our DEX every day this summer.",active:!0,featured:!1,rewardPerAction:25,status:"active",startDate:"2026-06-01",endDate:"2026-08-31",tags:["defi","swap"],category:"DeFi",imageUrl:null},l={args:{campaign:c}},u={args:{campaign:{...c,featured:!0,name:"Featured Airdrop Campaign"}}},m={args:{campaign:{...c,active:!1,status:"ended",name:"Ended Campaign"}}},g={args:{campaign:{...c,status:"upcoming",startDate:"2027-01-01",name:"Upcoming Campaign"}}},p={args:{campaign:{...c,imageUrl:"https://via.placeholder.com/400x200?text=Campaign+Banner"}}},f={args:{campaign:c,loading:!0}},h={args:{campaign:{...c,featured:!0}},parameters:{backgrounds:{default:"dark"}}};var j,y,x;l.parameters={...l.parameters,docs:{...(j=l.parameters)==null?void 0:j.docs,source:{originalSource:`{
+ args: {
+ campaign: baseCampaign
+ }
+}`,...(x=(y=l.parameters)==null?void 0:y.docs)==null?void 0:x.source}}};var S,D,_;u.parameters={...u.parameters,docs:{...(S=u.parameters)==null?void 0:S.docs,source:{originalSource:`{
+ args: {
+ campaign: {
+ ...baseCampaign,
+ featured: true,
+ name: 'Featured Airdrop Campaign'
+ }
+ }
+}`,...(_=(D=u.parameters)==null?void 0:D.docs)==null?void 0:_.source}}};var C,v,I;m.parameters={...m.parameters,docs:{...(C=m.parameters)==null?void 0:C.docs,source:{originalSource:`{
+ args: {
+ campaign: {
+ ...baseCampaign,
+ active: false,
+ status: 'ended',
+ name: 'Ended Campaign'
+ }
+ }
+}`,...(I=(v=m.parameters)==null?void 0:v.docs)==null?void 0:I.source}}};var E,T,U;g.parameters={...g.parameters,docs:{...(E=g.parameters)==null?void 0:E.docs,source:{originalSource:`{
+ args: {
+ campaign: {
+ ...baseCampaign,
+ status: 'upcoming',
+ startDate: '2027-01-01',
+ name: 'Upcoming Campaign'
+ }
+ }
+}`,...(U=(T=g.parameters)==null?void 0:T.docs)==null?void 0:U.source}}};var w,F,A;p.parameters={...p.parameters,docs:{...(w=p.parameters)==null?void 0:w.docs,source:{originalSource:`{
+ args: {
+ campaign: {
+ ...baseCampaign,
+ imageUrl: 'https://via.placeholder.com/400x200?text=Campaign+Banner'
+ }
+ }
+}`,...(A=(F=p.parameters)==null?void 0:F.docs)==null?void 0:A.source}}};var L,O,M;f.parameters={...f.parameters,docs:{...(L=f.parameters)==null?void 0:L.docs,source:{originalSource:`{
+ args: {
+ campaign: baseCampaign,
+ loading: true
+ }
+}`,...(M=(O=f.parameters)==null?void 0:O.docs)==null?void 0:M.source}}};var k,B,G;h.parameters={...h.parameters,docs:{...(k=h.parameters)==null?void 0:k.docs,source:{originalSource:`{
+ args: {
+ campaign: {
+ ...baseCampaign,
+ featured: true
+ }
+ },
+ parameters: {
+ backgrounds: {
+ default: 'dark'
+ }
+ }
+}`,...(G=(B=h.parameters)==null?void 0:B.docs)==null?void 0:G.source}}};const ne=["Active","Featured","Inactive","Upcoming","WithImage","LoadingSkeleton","DarkMode"];export{l as Active,h as DarkMode,u as Featured,m as Inactive,f as LoadingSkeleton,g as Upcoming,p as WithImage,ne as __namedExportsOrder,re as default};
diff --git a/frontend/storybook-static/assets/CampaignCard.stories-BsfjgR5N.js b/frontend/storybook-static/assets/CampaignCard.stories-BsfjgR5N.js
deleted file mode 100644
index fa8ef1b5..00000000
--- a/frontend/storybook-static/assets/CampaignCard.stories-BsfjgR5N.js
+++ /dev/null
@@ -1,128 +0,0 @@
-import { j as r } from './jsx-runtime-Z5uAzocK.js';
-import { r as f } from './index-pP6CS22B.js';
-import './_commonjsHelpers-Cpj98o6Y.js';
-function v(e) {
- if (!e) return '';
- const t = new Date(e);
- return Number.isNaN(t.getTime())
- ? ''
- : new Intl.DateTimeFormat('en', { month: 'short', day: 'numeric', year: 'numeric' }).format(t);
-}
-function h({ campaign: e }) {
- const t = f.useId(),
- d = v(e == null ? void 0 : e.createdAt),
- u = (e == null ? void 0 : e.rewardPerAction) ?? 0,
- x = (e == null ? void 0 : e.description) || 'No campaign description has been added yet.',
- i = (e == null ? void 0 : e.active) !== !1;
- return r.jsxs('article', {
- className: 'campaign-card',
- 'aria-labelledby': t,
- children: [
- r.jsxs('div', {
- className: 'campaign-card-header',
- children: [
- r.jsxs('div', {
- children: [
- r.jsxs('p', {
- className: 'campaign-card-eyebrow',
- children: ['Campaign #', (e == null ? void 0 : e.id) || '—'],
- }),
- r.jsx('h3', {
- id: t,
- className: 'campaign-card-title',
- children: (e == null ? void 0 : e.name) || 'Untitled campaign',
- }),
- ],
- }),
- r.jsx('span', {
- className: `campaign-badge ${i ? 'campaign-badge-active' : 'campaign-badge-inactive'}`,
- children: i ? 'Active' : 'Inactive',
- }),
- ],
- }),
- r.jsx('p', { className: 'campaign-card-description', children: x }),
- r.jsxs('dl', {
- className: 'campaign-card-metadata',
- children: [
- r.jsxs('div', {
- className: 'campaign-card-metadata-item',
- children: [
- r.jsx('dt', { children: 'Reward' }),
- r.jsxs('dd', { children: [u, ' pts'] }),
- ],
- }),
- d &&
- r.jsxs('div', {
- className: 'campaign-card-metadata-item',
- children: [r.jsx('dt', { children: 'Created' }), r.jsx('dd', { children: d })],
- }),
- ],
- }),
- ],
- });
-}
-h.__docgenInfo = { description: '', methods: [], displayName: 'CampaignCard' };
-const C = {
- title: 'Campaigns/CampaignCard',
- component: h,
- args: {
- campaign: {
- id: '12',
- name: 'Builder Sprint',
- description:
- 'Complete onboarding tasks, submit feedback, and earn points for each milestone.',
- active: !0,
- rewardPerAction: 25,
- createdAt: '2026-03-20T09:30:00.000Z',
- },
- },
- parameters: { layout: 'padded' },
- },
- a = {},
- s = {
- args: {
- campaign: {
- id: '13',
- name: 'Archive Campaign',
- description: 'A completed campaign kept around for reporting.',
- active: !1,
- rewardPerAction: 10,
- createdAt: '2026-01-10T15:00:00.000Z',
- },
- },
- };
-var n, c, o;
-a.parameters = {
- ...a.parameters,
- docs: {
- ...((n = a.parameters) == null ? void 0 : n.docs),
- source: {
- originalSource: '{}',
- ...((o = (c = a.parameters) == null ? void 0 : c.docs) == null ? void 0 : o.source),
- },
- },
-};
-var m, l, p;
-s.parameters = {
- ...s.parameters,
- docs: {
- ...((m = s.parameters) == null ? void 0 : m.docs),
- source: {
- originalSource: `{
- args: {
- campaign: {
- id: '13',
- name: 'Archive Campaign',
- description: 'A completed campaign kept around for reporting.',
- active: false,
- rewardPerAction: 10,
- createdAt: '2026-01-10T15:00:00.000Z'
- }
- }
-}`,
- ...((p = (l = s.parameters) == null ? void 0 : l.docs) == null ? void 0 : p.source),
- },
- },
-};
-const b = ['Active', 'Inactive'];
-export { a as Active, s as Inactive, b as __namedExportsOrder, C as default };
diff --git a/frontend/storybook-static/assets/Color-YHDXOIA2-Cy9RgvGh.js b/frontend/storybook-static/assets/Color-YHDXOIA2-Cy9RgvGh.js
deleted file mode 100644
index 205ca343..00000000
--- a/frontend/storybook-static/assets/Color-YHDXOIA2-Cy9RgvGh.js
+++ /dev/null
@@ -1,1595 +0,0 @@
-import {
- d as ce,
- Z as Y,
- g as he,
- v as M,
- s as fe,
- Q as de,
- M as ge,
- _ as be,
- a as q,
-} from './DocsRenderer-CFRXHY34-5PiWQjBz.js';
-import { r as p, R as m } from './index-pP6CS22B.js';
-import './iframe-gSIONkAl.js';
-import './jsx-runtime-Z5uAzocK.js';
-import './index-Bvak3XBe.js';
-import './_commonjsHelpers-Cpj98o6Y.js';
-import './index-Bhelpi4i.js';
-import './index-DrFu-skq.js';
-import './react-18-D3TVCdaC.js';
-var me = q({
- '../../node_modules/color-name/index.js'(n, o) {
- o.exports = {
- aliceblue: [240, 248, 255],
- antiquewhite: [250, 235, 215],
- aqua: [0, 255, 255],
- aquamarine: [127, 255, 212],
- azure: [240, 255, 255],
- beige: [245, 245, 220],
- bisque: [255, 228, 196],
- black: [0, 0, 0],
- blanchedalmond: [255, 235, 205],
- blue: [0, 0, 255],
- blueviolet: [138, 43, 226],
- brown: [165, 42, 42],
- burlywood: [222, 184, 135],
- cadetblue: [95, 158, 160],
- chartreuse: [127, 255, 0],
- chocolate: [210, 105, 30],
- coral: [255, 127, 80],
- cornflowerblue: [100, 149, 237],
- cornsilk: [255, 248, 220],
- crimson: [220, 20, 60],
- cyan: [0, 255, 255],
- darkblue: [0, 0, 139],
- darkcyan: [0, 139, 139],
- darkgoldenrod: [184, 134, 11],
- darkgray: [169, 169, 169],
- darkgreen: [0, 100, 0],
- darkgrey: [169, 169, 169],
- darkkhaki: [189, 183, 107],
- darkmagenta: [139, 0, 139],
- darkolivegreen: [85, 107, 47],
- darkorange: [255, 140, 0],
- darkorchid: [153, 50, 204],
- darkred: [139, 0, 0],
- darksalmon: [233, 150, 122],
- darkseagreen: [143, 188, 143],
- darkslateblue: [72, 61, 139],
- darkslategray: [47, 79, 79],
- darkslategrey: [47, 79, 79],
- darkturquoise: [0, 206, 209],
- darkviolet: [148, 0, 211],
- deeppink: [255, 20, 147],
- deepskyblue: [0, 191, 255],
- dimgray: [105, 105, 105],
- dimgrey: [105, 105, 105],
- dodgerblue: [30, 144, 255],
- firebrick: [178, 34, 34],
- floralwhite: [255, 250, 240],
- forestgreen: [34, 139, 34],
- fuchsia: [255, 0, 255],
- gainsboro: [220, 220, 220],
- ghostwhite: [248, 248, 255],
- gold: [255, 215, 0],
- goldenrod: [218, 165, 32],
- gray: [128, 128, 128],
- green: [0, 128, 0],
- greenyellow: [173, 255, 47],
- grey: [128, 128, 128],
- honeydew: [240, 255, 240],
- hotpink: [255, 105, 180],
- indianred: [205, 92, 92],
- indigo: [75, 0, 130],
- ivory: [255, 255, 240],
- khaki: [240, 230, 140],
- lavender: [230, 230, 250],
- lavenderblush: [255, 240, 245],
- lawngreen: [124, 252, 0],
- lemonchiffon: [255, 250, 205],
- lightblue: [173, 216, 230],
- lightcoral: [240, 128, 128],
- lightcyan: [224, 255, 255],
- lightgoldenrodyellow: [250, 250, 210],
- lightgray: [211, 211, 211],
- lightgreen: [144, 238, 144],
- lightgrey: [211, 211, 211],
- lightpink: [255, 182, 193],
- lightsalmon: [255, 160, 122],
- lightseagreen: [32, 178, 170],
- lightskyblue: [135, 206, 250],
- lightslategray: [119, 136, 153],
- lightslategrey: [119, 136, 153],
- lightsteelblue: [176, 196, 222],
- lightyellow: [255, 255, 224],
- lime: [0, 255, 0],
- limegreen: [50, 205, 50],
- linen: [250, 240, 230],
- magenta: [255, 0, 255],
- maroon: [128, 0, 0],
- mediumaquamarine: [102, 205, 170],
- mediumblue: [0, 0, 205],
- mediumorchid: [186, 85, 211],
- mediumpurple: [147, 112, 219],
- mediumseagreen: [60, 179, 113],
- mediumslateblue: [123, 104, 238],
- mediumspringgreen: [0, 250, 154],
- mediumturquoise: [72, 209, 204],
- mediumvioletred: [199, 21, 133],
- midnightblue: [25, 25, 112],
- mintcream: [245, 255, 250],
- mistyrose: [255, 228, 225],
- moccasin: [255, 228, 181],
- navajowhite: [255, 222, 173],
- navy: [0, 0, 128],
- oldlace: [253, 245, 230],
- olive: [128, 128, 0],
- olivedrab: [107, 142, 35],
- orange: [255, 165, 0],
- orangered: [255, 69, 0],
- orchid: [218, 112, 214],
- palegoldenrod: [238, 232, 170],
- palegreen: [152, 251, 152],
- paleturquoise: [175, 238, 238],
- palevioletred: [219, 112, 147],
- papayawhip: [255, 239, 213],
- peachpuff: [255, 218, 185],
- peru: [205, 133, 63],
- pink: [255, 192, 203],
- plum: [221, 160, 221],
- powderblue: [176, 224, 230],
- purple: [128, 0, 128],
- rebeccapurple: [102, 51, 153],
- red: [255, 0, 0],
- rosybrown: [188, 143, 143],
- royalblue: [65, 105, 225],
- saddlebrown: [139, 69, 19],
- salmon: [250, 128, 114],
- sandybrown: [244, 164, 96],
- seagreen: [46, 139, 87],
- seashell: [255, 245, 238],
- sienna: [160, 82, 45],
- silver: [192, 192, 192],
- skyblue: [135, 206, 235],
- slateblue: [106, 90, 205],
- slategray: [112, 128, 144],
- slategrey: [112, 128, 144],
- snow: [255, 250, 250],
- springgreen: [0, 255, 127],
- steelblue: [70, 130, 180],
- tan: [210, 180, 140],
- teal: [0, 128, 128],
- thistle: [216, 191, 216],
- tomato: [255, 99, 71],
- turquoise: [64, 224, 208],
- violet: [238, 130, 238],
- wheat: [245, 222, 179],
- white: [255, 255, 255],
- whitesmoke: [245, 245, 245],
- yellow: [255, 255, 0],
- yellowgreen: [154, 205, 50],
- };
- },
- }),
- Z = q({
- '../../node_modules/color-convert/conversions.js'(n, o) {
- var c = me(),
- h = {};
- for (let e of Object.keys(c)) h[c[e]] = e;
- var i = {
- rgb: { channels: 3, labels: 'rgb' },
- hsl: { channels: 3, labels: 'hsl' },
- hsv: { channels: 3, labels: 'hsv' },
- hwb: { channels: 3, labels: 'hwb' },
- cmyk: { channels: 4, labels: 'cmyk' },
- xyz: { channels: 3, labels: 'xyz' },
- lab: { channels: 3, labels: 'lab' },
- lch: { channels: 3, labels: 'lch' },
- hex: { channels: 1, labels: ['hex'] },
- keyword: { channels: 1, labels: ['keyword'] },
- ansi16: { channels: 1, labels: ['ansi16'] },
- ansi256: { channels: 1, labels: ['ansi256'] },
- hcg: { channels: 3, labels: ['h', 'c', 'g'] },
- apple: { channels: 3, labels: ['r16', 'g16', 'b16'] },
- gray: { channels: 1, labels: ['gray'] },
- };
- o.exports = i;
- for (let e of Object.keys(i)) {
- if (!('channels' in i[e])) throw new Error('missing channels property: ' + e);
- if (!('labels' in i[e])) throw new Error('missing channel labels property: ' + e);
- if (i[e].labels.length !== i[e].channels)
- throw new Error('channel and label counts mismatch: ' + e);
- let { channels: t, labels: r } = i[e];
- (delete i[e].channels,
- delete i[e].labels,
- Object.defineProperty(i[e], 'channels', { value: t }),
- Object.defineProperty(i[e], 'labels', { value: r }));
- }
- ((i.rgb.hsl = function (e) {
- let t = e[0] / 255,
- r = e[1] / 255,
- a = e[2] / 255,
- l = Math.min(t, r, a),
- u = Math.max(t, r, a),
- s = u - l,
- f,
- g;
- (u === l
- ? (f = 0)
- : t === u
- ? (f = (r - a) / s)
- : r === u
- ? (f = 2 + (a - t) / s)
- : a === u && (f = 4 + (t - r) / s),
- (f = Math.min(f * 60, 360)),
- f < 0 && (f += 360));
- let b = (l + u) / 2;
- return (
- u === l ? (g = 0) : b <= 0.5 ? (g = s / (u + l)) : (g = s / (2 - u - l)),
- [f, g * 100, b * 100]
- );
- }),
- (i.rgb.hsv = function (e) {
- let t,
- r,
- a,
- l,
- u,
- s = e[0] / 255,
- f = e[1] / 255,
- g = e[2] / 255,
- b = Math.max(s, f, g),
- y = b - Math.min(s, f, g),
- v = function (w) {
- return (b - w) / 6 / y + 1 / 2;
- };
- return (
- y === 0
- ? ((l = 0), (u = 0))
- : ((u = y / b),
- (t = v(s)),
- (r = v(f)),
- (a = v(g)),
- s === b
- ? (l = a - r)
- : f === b
- ? (l = 1 / 3 + t - a)
- : g === b && (l = 2 / 3 + r - t),
- l < 0 ? (l += 1) : l > 1 && (l -= 1)),
- [l * 360, u * 100, b * 100]
- );
- }),
- (i.rgb.hwb = function (e) {
- let t = e[0],
- r = e[1],
- a = e[2],
- l = i.rgb.hsl(e)[0],
- u = (1 / 255) * Math.min(t, Math.min(r, a));
- return ((a = 1 - (1 / 255) * Math.max(t, Math.max(r, a))), [l, u * 100, a * 100]);
- }),
- (i.rgb.cmyk = function (e) {
- let t = e[0] / 255,
- r = e[1] / 255,
- a = e[2] / 255,
- l = Math.min(1 - t, 1 - r, 1 - a),
- u = (1 - t - l) / (1 - l) || 0,
- s = (1 - r - l) / (1 - l) || 0,
- f = (1 - a - l) / (1 - l) || 0;
- return [u * 100, s * 100, f * 100, l * 100];
- }));
- function d(e, t) {
- return (e[0] - t[0]) ** 2 + (e[1] - t[1]) ** 2 + (e[2] - t[2]) ** 2;
- }
- ((i.rgb.keyword = function (e) {
- let t = h[e];
- if (t) return t;
- let r = 1 / 0,
- a;
- for (let l of Object.keys(c)) {
- let u = c[l],
- s = d(e, u);
- s < r && ((r = s), (a = l));
- }
- return a;
- }),
- (i.keyword.rgb = function (e) {
- return c[e];
- }),
- (i.rgb.xyz = function (e) {
- let t = e[0] / 255,
- r = e[1] / 255,
- a = e[2] / 255;
- ((t = t > 0.04045 ? ((t + 0.055) / 1.055) ** 2.4 : t / 12.92),
- (r = r > 0.04045 ? ((r + 0.055) / 1.055) ** 2.4 : r / 12.92),
- (a = a > 0.04045 ? ((a + 0.055) / 1.055) ** 2.4 : a / 12.92));
- let l = t * 0.4124 + r * 0.3576 + a * 0.1805,
- u = t * 0.2126 + r * 0.7152 + a * 0.0722,
- s = t * 0.0193 + r * 0.1192 + a * 0.9505;
- return [l * 100, u * 100, s * 100];
- }),
- (i.rgb.lab = function (e) {
- let t = i.rgb.xyz(e),
- r = t[0],
- a = t[1],
- l = t[2];
- ((r /= 95.047),
- (a /= 100),
- (l /= 108.883),
- (r = r > 0.008856 ? r ** (1 / 3) : 7.787 * r + 16 / 116),
- (a = a > 0.008856 ? a ** (1 / 3) : 7.787 * a + 16 / 116),
- (l = l > 0.008856 ? l ** (1 / 3) : 7.787 * l + 16 / 116));
- let u = 116 * a - 16,
- s = 500 * (r - a),
- f = 200 * (a - l);
- return [u, s, f];
- }),
- (i.hsl.rgb = function (e) {
- let t = e[0] / 360,
- r = e[1] / 100,
- a = e[2] / 100,
- l,
- u,
- s;
- if (r === 0) return ((s = a * 255), [s, s, s]);
- a < 0.5 ? (l = a * (1 + r)) : (l = a + r - a * r);
- let f = 2 * a - l,
- g = [0, 0, 0];
- for (let b = 0; b < 3; b++)
- ((u = t + (1 / 3) * -(b - 1)),
- u < 0 && u++,
- u > 1 && u--,
- 6 * u < 1
- ? (s = f + (l - f) * 6 * u)
- : 2 * u < 1
- ? (s = l)
- : 3 * u < 2
- ? (s = f + (l - f) * (2 / 3 - u) * 6)
- : (s = f),
- (g[b] = s * 255));
- return g;
- }),
- (i.hsl.hsv = function (e) {
- let t = e[0],
- r = e[1] / 100,
- a = e[2] / 100,
- l = r,
- u = Math.max(a, 0.01);
- ((a *= 2), (r *= a <= 1 ? a : 2 - a), (l *= u <= 1 ? u : 2 - u));
- let s = (a + r) / 2,
- f = a === 0 ? (2 * l) / (u + l) : (2 * r) / (a + r);
- return [t, f * 100, s * 100];
- }),
- (i.hsv.rgb = function (e) {
- let t = e[0] / 60,
- r = e[1] / 100,
- a = e[2] / 100,
- l = Math.floor(t) % 6,
- u = t - Math.floor(t),
- s = 255 * a * (1 - r),
- f = 255 * a * (1 - r * u),
- g = 255 * a * (1 - r * (1 - u));
- switch (((a *= 255), l)) {
- case 0:
- return [a, g, s];
- case 1:
- return [f, a, s];
- case 2:
- return [s, a, g];
- case 3:
- return [s, f, a];
- case 4:
- return [g, s, a];
- case 5:
- return [a, s, f];
- }
- }),
- (i.hsv.hsl = function (e) {
- let t = e[0],
- r = e[1] / 100,
- a = e[2] / 100,
- l = Math.max(a, 0.01),
- u,
- s;
- s = (2 - r) * a;
- let f = (2 - r) * l;
- return (
- (u = r * l),
- (u /= f <= 1 ? f : 2 - f),
- (u = u || 0),
- (s /= 2),
- [t, u * 100, s * 100]
- );
- }),
- (i.hwb.rgb = function (e) {
- let t = e[0] / 360,
- r = e[1] / 100,
- a = e[2] / 100,
- l = r + a,
- u;
- l > 1 && ((r /= l), (a /= l));
- let s = Math.floor(6 * t),
- f = 1 - a;
- ((u = 6 * t - s), s & 1 && (u = 1 - u));
- let g = r + u * (f - r),
- b,
- y,
- v;
- switch (s) {
- default:
- case 6:
- case 0:
- ((b = f), (y = g), (v = r));
- break;
- case 1:
- ((b = g), (y = f), (v = r));
- break;
- case 2:
- ((b = r), (y = f), (v = g));
- break;
- case 3:
- ((b = r), (y = g), (v = f));
- break;
- case 4:
- ((b = g), (y = r), (v = f));
- break;
- case 5:
- ((b = f), (y = r), (v = g));
- break;
- }
- return [b * 255, y * 255, v * 255];
- }),
- (i.cmyk.rgb = function (e) {
- let t = e[0] / 100,
- r = e[1] / 100,
- a = e[2] / 100,
- l = e[3] / 100,
- u = 1 - Math.min(1, t * (1 - l) + l),
- s = 1 - Math.min(1, r * (1 - l) + l),
- f = 1 - Math.min(1, a * (1 - l) + l);
- return [u * 255, s * 255, f * 255];
- }),
- (i.xyz.rgb = function (e) {
- let t = e[0] / 100,
- r = e[1] / 100,
- a = e[2] / 100,
- l,
- u,
- s;
- return (
- (l = t * 3.2406 + r * -1.5372 + a * -0.4986),
- (u = t * -0.9689 + r * 1.8758 + a * 0.0415),
- (s = t * 0.0557 + r * -0.204 + a * 1.057),
- (l = l > 0.0031308 ? 1.055 * l ** (1 / 2.4) - 0.055 : l * 12.92),
- (u = u > 0.0031308 ? 1.055 * u ** (1 / 2.4) - 0.055 : u * 12.92),
- (s = s > 0.0031308 ? 1.055 * s ** (1 / 2.4) - 0.055 : s * 12.92),
- (l = Math.min(Math.max(0, l), 1)),
- (u = Math.min(Math.max(0, u), 1)),
- (s = Math.min(Math.max(0, s), 1)),
- [l * 255, u * 255, s * 255]
- );
- }),
- (i.xyz.lab = function (e) {
- let t = e[0],
- r = e[1],
- a = e[2];
- ((t /= 95.047),
- (r /= 100),
- (a /= 108.883),
- (t = t > 0.008856 ? t ** (1 / 3) : 7.787 * t + 16 / 116),
- (r = r > 0.008856 ? r ** (1 / 3) : 7.787 * r + 16 / 116),
- (a = a > 0.008856 ? a ** (1 / 3) : 7.787 * a + 16 / 116));
- let l = 116 * r - 16,
- u = 500 * (t - r),
- s = 200 * (r - a);
- return [l, u, s];
- }),
- (i.lab.xyz = function (e) {
- let t = e[0],
- r = e[1],
- a = e[2],
- l,
- u,
- s;
- ((u = (t + 16) / 116), (l = r / 500 + u), (s = u - a / 200));
- let f = u ** 3,
- g = l ** 3,
- b = s ** 3;
- return (
- (u = f > 0.008856 ? f : (u - 16 / 116) / 7.787),
- (l = g > 0.008856 ? g : (l - 16 / 116) / 7.787),
- (s = b > 0.008856 ? b : (s - 16 / 116) / 7.787),
- (l *= 95.047),
- (u *= 100),
- (s *= 108.883),
- [l, u, s]
- );
- }),
- (i.lab.lch = function (e) {
- let t = e[0],
- r = e[1],
- a = e[2],
- l;
- ((l = (Math.atan2(a, r) * 360) / 2 / Math.PI), l < 0 && (l += 360));
- let u = Math.sqrt(r * r + a * a);
- return [t, u, l];
- }),
- (i.lch.lab = function (e) {
- let t = e[0],
- r = e[1],
- a = (e[2] / 360) * 2 * Math.PI,
- l = r * Math.cos(a),
- u = r * Math.sin(a);
- return [t, l, u];
- }),
- (i.rgb.ansi16 = function (e, t = null) {
- let [r, a, l] = e,
- u = t === null ? i.rgb.hsv(e)[2] : t;
- if (((u = Math.round(u / 50)), u === 0)) return 30;
- let s =
- 30 + ((Math.round(l / 255) << 2) | (Math.round(a / 255) << 1) | Math.round(r / 255));
- return (u === 2 && (s += 60), s);
- }),
- (i.hsv.ansi16 = function (e) {
- return i.rgb.ansi16(i.hsv.rgb(e), e[2]);
- }),
- (i.rgb.ansi256 = function (e) {
- let t = e[0],
- r = e[1],
- a = e[2];
- return t === r && r === a
- ? t < 8
- ? 16
- : t > 248
- ? 231
- : Math.round(((t - 8) / 247) * 24) + 232
- : 16 +
- 36 * Math.round((t / 255) * 5) +
- 6 * Math.round((r / 255) * 5) +
- Math.round((a / 255) * 5);
- }),
- (i.ansi16.rgb = function (e) {
- let t = e % 10;
- if (t === 0 || t === 7) return (e > 50 && (t += 3.5), (t = (t / 10.5) * 255), [t, t, t]);
- let r = (~~(e > 50) + 1) * 0.5,
- a = (t & 1) * r * 255,
- l = ((t >> 1) & 1) * r * 255,
- u = ((t >> 2) & 1) * r * 255;
- return [a, l, u];
- }),
- (i.ansi256.rgb = function (e) {
- if (e >= 232) {
- let u = (e - 232) * 10 + 8;
- return [u, u, u];
- }
- e -= 16;
- let t,
- r = (Math.floor(e / 36) / 5) * 255,
- a = (Math.floor((t = e % 36) / 6) / 5) * 255,
- l = ((t % 6) / 5) * 255;
- return [r, a, l];
- }),
- (i.rgb.hex = function (e) {
- let t = (
- ((Math.round(e[0]) & 255) << 16) +
- ((Math.round(e[1]) & 255) << 8) +
- (Math.round(e[2]) & 255)
- )
- .toString(16)
- .toUpperCase();
- return '000000'.substring(t.length) + t;
- }),
- (i.hex.rgb = function (e) {
- let t = e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
- if (!t) return [0, 0, 0];
- let r = t[0];
- t[0].length === 3 &&
- (r = r
- .split('')
- .map((f) => f + f)
- .join(''));
- let a = parseInt(r, 16),
- l = (a >> 16) & 255,
- u = (a >> 8) & 255,
- s = a & 255;
- return [l, u, s];
- }),
- (i.rgb.hcg = function (e) {
- let t = e[0] / 255,
- r = e[1] / 255,
- a = e[2] / 255,
- l = Math.max(Math.max(t, r), a),
- u = Math.min(Math.min(t, r), a),
- s = l - u,
- f,
- g;
- return (
- s < 1 ? (f = u / (1 - s)) : (f = 0),
- s <= 0
- ? (g = 0)
- : l === t
- ? (g = ((r - a) / s) % 6)
- : l === r
- ? (g = 2 + (a - t) / s)
- : (g = 4 + (t - r) / s),
- (g /= 6),
- (g %= 1),
- [g * 360, s * 100, f * 100]
- );
- }),
- (i.hsl.hcg = function (e) {
- let t = e[1] / 100,
- r = e[2] / 100,
- a = r < 0.5 ? 2 * t * r : 2 * t * (1 - r),
- l = 0;
- return (a < 1 && (l = (r - 0.5 * a) / (1 - a)), [e[0], a * 100, l * 100]);
- }),
- (i.hsv.hcg = function (e) {
- let t = e[1] / 100,
- r = e[2] / 100,
- a = t * r,
- l = 0;
- return (a < 1 && (l = (r - a) / (1 - a)), [e[0], a * 100, l * 100]);
- }),
- (i.hcg.rgb = function (e) {
- let t = e[0] / 360,
- r = e[1] / 100,
- a = e[2] / 100;
- if (r === 0) return [a * 255, a * 255, a * 255];
- let l = [0, 0, 0],
- u = (t % 1) * 6,
- s = u % 1,
- f = 1 - s,
- g = 0;
- switch (Math.floor(u)) {
- case 0:
- ((l[0] = 1), (l[1] = s), (l[2] = 0));
- break;
- case 1:
- ((l[0] = f), (l[1] = 1), (l[2] = 0));
- break;
- case 2:
- ((l[0] = 0), (l[1] = 1), (l[2] = s));
- break;
- case 3:
- ((l[0] = 0), (l[1] = f), (l[2] = 1));
- break;
- case 4:
- ((l[0] = s), (l[1] = 0), (l[2] = 1));
- break;
- default:
- ((l[0] = 1), (l[1] = 0), (l[2] = f));
- }
- return (
- (g = (1 - r) * a),
- [(r * l[0] + g) * 255, (r * l[1] + g) * 255, (r * l[2] + g) * 255]
- );
- }),
- (i.hcg.hsv = function (e) {
- let t = e[1] / 100,
- r = e[2] / 100,
- a = t + r * (1 - t),
- l = 0;
- return (a > 0 && (l = t / a), [e[0], l * 100, a * 100]);
- }),
- (i.hcg.hsl = function (e) {
- let t = e[1] / 100,
- r = (e[2] / 100) * (1 - t) + 0.5 * t,
- a = 0;
- return (
- r > 0 && r < 0.5 ? (a = t / (2 * r)) : r >= 0.5 && r < 1 && (a = t / (2 * (1 - r))),
- [e[0], a * 100, r * 100]
- );
- }),
- (i.hcg.hwb = function (e) {
- let t = e[1] / 100,
- r = e[2] / 100,
- a = t + r * (1 - t);
- return [e[0], (a - t) * 100, (1 - a) * 100];
- }),
- (i.hwb.hcg = function (e) {
- let t = e[1] / 100,
- r = 1 - e[2] / 100,
- a = r - t,
- l = 0;
- return (a < 1 && (l = (r - a) / (1 - a)), [e[0], a * 100, l * 100]);
- }),
- (i.apple.rgb = function (e) {
- return [(e[0] / 65535) * 255, (e[1] / 65535) * 255, (e[2] / 65535) * 255];
- }),
- (i.rgb.apple = function (e) {
- return [(e[0] / 255) * 65535, (e[1] / 255) * 65535, (e[2] / 255) * 65535];
- }),
- (i.gray.rgb = function (e) {
- return [(e[0] / 100) * 255, (e[0] / 100) * 255, (e[0] / 100) * 255];
- }),
- (i.gray.hsl = function (e) {
- return [0, 0, e[0]];
- }),
- (i.gray.hsv = i.gray.hsl),
- (i.gray.hwb = function (e) {
- return [0, 100, e[0]];
- }),
- (i.gray.cmyk = function (e) {
- return [0, 0, 0, e[0]];
- }),
- (i.gray.lab = function (e) {
- return [e[0], 0, 0];
- }),
- (i.gray.hex = function (e) {
- let t = Math.round((e[0] / 100) * 255) & 255,
- r = ((t << 16) + (t << 8) + t).toString(16).toUpperCase();
- return '000000'.substring(r.length) + r;
- }),
- (i.rgb.gray = function (e) {
- return [((e[0] + e[1] + e[2]) / 3 / 255) * 100];
- }));
- },
- }),
- ve = q({
- '../../node_modules/color-convert/route.js'(n, o) {
- var c = Z();
- function h() {
- let t = {},
- r = Object.keys(c);
- for (let a = r.length, l = 0; l < a; l++) t[r[l]] = { distance: -1, parent: null };
- return t;
- }
- function i(t) {
- let r = h(),
- a = [t];
- for (r[t].distance = 0; a.length; ) {
- let l = a.pop(),
- u = Object.keys(c[l]);
- for (let s = u.length, f = 0; f < s; f++) {
- let g = u[f],
- b = r[g];
- b.distance === -1 && ((b.distance = r[l].distance + 1), (b.parent = l), a.unshift(g));
- }
- }
- return r;
- }
- function d(t, r) {
- return function (a) {
- return r(t(a));
- };
- }
- function e(t, r) {
- let a = [r[t].parent, t],
- l = c[r[t].parent][t],
- u = r[t].parent;
- for (; r[u].parent; )
- (a.unshift(r[u].parent), (l = d(c[r[u].parent][u], l)), (u = r[u].parent));
- return ((l.conversion = a), l);
- }
- o.exports = function (t) {
- let r = i(t),
- a = {},
- l = Object.keys(r);
- for (let u = l.length, s = 0; s < u; s++) {
- let f = l[s];
- r[f].parent !== null && (a[f] = e(f, r));
- }
- return a;
- };
- },
- }),
- pe = q({
- '../../node_modules/color-convert/index.js'(n, o) {
- var c = Z(),
- h = ve(),
- i = {},
- d = Object.keys(c);
- function e(r) {
- let a = function (...l) {
- let u = l[0];
- return u == null ? u : (u.length > 1 && (l = u), r(l));
- };
- return ('conversion' in r && (a.conversion = r.conversion), a);
- }
- function t(r) {
- let a = function (...l) {
- let u = l[0];
- if (u == null) return u;
- u.length > 1 && (l = u);
- let s = r(l);
- if (typeof s == 'object')
- for (let f = s.length, g = 0; g < f; g++) s[g] = Math.round(s[g]);
- return s;
- };
- return ('conversion' in r && (a.conversion = r.conversion), a);
- }
- (d.forEach((r) => {
- ((i[r] = {}),
- Object.defineProperty(i[r], 'channels', { value: c[r].channels }),
- Object.defineProperty(i[r], 'labels', { value: c[r].labels }));
- let a = h(r);
- Object.keys(a).forEach((l) => {
- let u = a[l];
- ((i[r][l] = t(u)), (i[r][l].raw = e(u)));
- });
- }),
- (o.exports = i));
- },
- }),
- _ = be(pe());
-function C() {
- return (C =
- Object.assign ||
- function (n) {
- for (var o = 1; o < arguments.length; o++) {
- var c = arguments[o];
- for (var h in c) Object.prototype.hasOwnProperty.call(c, h) && (n[h] = c[h]);
- }
- return n;
- }).apply(this, arguments);
-}
-function V(n, o) {
- if (n == null) return {};
- var c,
- h,
- i = {},
- d = Object.keys(n);
- for (h = 0; h < d.length; h++) o.indexOf((c = d[h])) >= 0 || (i[c] = n[c]);
- return i;
-}
-function L(n) {
- var o = p.useRef(n),
- c = p.useRef(function (h) {
- o.current && o.current(h);
- });
- return ((o.current = n), c.current);
-}
-var O = function (n, o, c) {
- return (o === void 0 && (o = 0), c === void 0 && (c = 1), n > c ? c : n < o ? o : n);
- },
- S = function (n) {
- return 'touches' in n;
- },
- B = function (n) {
- return (n && n.ownerDocument.defaultView) || self;
- },
- T = function (n, o, c) {
- var h = n.getBoundingClientRect(),
- i = S(o)
- ? (function (d, e) {
- for (var t = 0; t < d.length; t++) if (d[t].identifier === e) return d[t];
- return d[0];
- })(o.touches, c)
- : o;
- return {
- left: O((i.pageX - (h.left + B(n).pageXOffset)) / h.width),
- top: O((i.pageY - (h.top + B(n).pageYOffset)) / h.height),
- };
- },
- W = function (n) {
- !S(n) && n.preventDefault();
- },
- G = m.memo(function (n) {
- var o = n.onMove,
- c = n.onKey,
- h = V(n, ['onMove', 'onKey']),
- i = p.useRef(null),
- d = L(o),
- e = L(c),
- t = p.useRef(null),
- r = p.useRef(!1),
- a = p.useMemo(
- function () {
- var f = function (y) {
- (W(y),
- (S(y) ? y.touches.length > 0 : y.buttons > 0) && i.current
- ? d(T(i.current, y, t.current))
- : b(!1));
- },
- g = function () {
- return b(!1);
- };
- function b(y) {
- var v = r.current,
- w = B(i.current),
- E = y ? w.addEventListener : w.removeEventListener;
- (E(v ? 'touchmove' : 'mousemove', f), E(v ? 'touchend' : 'mouseup', g));
- }
- return [
- function (y) {
- var v = y.nativeEvent,
- w = i.current;
- if (
- w &&
- (W(v),
- !(function (k, P) {
- return P && !S(k);
- })(v, r.current) && w)
- ) {
- if (S(v)) {
- r.current = !0;
- var E = v.changedTouches || [];
- E.length && (t.current = E[0].identifier);
- }
- (w.focus(), d(T(w, v, t.current)), b(!0));
- }
- },
- function (y) {
- var v = y.which || y.keyCode;
- v < 37 ||
- v > 40 ||
- (y.preventDefault(),
- e({
- left: v === 39 ? 0.05 : v === 37 ? -0.05 : 0,
- top: v === 40 ? 0.05 : v === 38 ? -0.05 : 0,
- }));
- },
- b,
- ];
- },
- [e, d],
- ),
- l = a[0],
- u = a[1],
- s = a[2];
- return (
- p.useEffect(
- function () {
- return s;
- },
- [s],
- ),
- m.createElement(
- 'div',
- C({}, h, {
- onTouchStart: l,
- onMouseDown: l,
- className: 'react-colorful__interactive',
- ref: i,
- onKeyDown: u,
- tabIndex: 0,
- role: 'slider',
- }),
- )
- );
- }),
- N = function (n) {
- return n.filter(Boolean).join(' ');
- },
- F = function (n) {
- var o = n.color,
- c = n.left,
- h = n.top,
- i = h === void 0 ? 0.5 : h,
- d = N(['react-colorful__pointer', n.className]);
- return m.createElement(
- 'div',
- { className: d, style: { top: 100 * i + '%', left: 100 * c + '%' } },
- m.createElement('div', {
- className: 'react-colorful__pointer-fill',
- style: { backgroundColor: o },
- }),
- );
- },
- x = function (n, o, c) {
- return (o === void 0 && (o = 0), c === void 0 && (c = Math.pow(10, o)), Math.round(c * n) / c);
- },
- ye = { grad: 0.9, turn: 360, rad: 360 / (2 * Math.PI) },
- xe = function (n) {
- return re(X(n));
- },
- X = function (n) {
- return (
- n[0] === '#' && (n = n.substring(1)),
- n.length < 6
- ? {
- r: parseInt(n[0] + n[0], 16),
- g: parseInt(n[1] + n[1], 16),
- b: parseInt(n[2] + n[2], 16),
- a: n.length === 4 ? x(parseInt(n[3] + n[3], 16) / 255, 2) : 1,
- }
- : {
- r: parseInt(n.substring(0, 2), 16),
- g: parseInt(n.substring(2, 4), 16),
- b: parseInt(n.substring(4, 6), 16),
- a: n.length === 8 ? x(parseInt(n.substring(6, 8), 16) / 255, 2) : 1,
- }
- );
- },
- we = function (n, o) {
- return (o === void 0 && (o = 'deg'), Number(n) * (ye[o] || 1));
- },
- ke = function (n) {
- var o =
- /hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(
- n,
- );
- return o
- ? _e({
- h: we(o[1], o[2]),
- s: Number(o[3]),
- l: Number(o[4]),
- a: o[5] === void 0 ? 1 : Number(o[5]) / (o[6] ? 100 : 1),
- })
- : { h: 0, s: 0, v: 0, a: 1 };
- },
- _e = function (n) {
- var o = n.s,
- c = n.l;
- return {
- h: n.h,
- s: (o *= (c < 50 ? c : 100 - c) / 100) > 0 ? ((2 * o) / (c + o)) * 100 : 0,
- v: c + o,
- a: n.a,
- };
- },
- Ee = function (n) {
- return Ce(ee(n));
- },
- J = function (n) {
- var o = n.s,
- c = n.v,
- h = n.a,
- i = ((200 - o) * c) / 100;
- return {
- h: x(n.h),
- s: x(i > 0 && i < 200 ? ((o * c) / 100 / (i <= 100 ? i : 200 - i)) * 100 : 0),
- l: x(i / 2),
- a: x(h, 2),
- };
- },
- K = function (n) {
- var o = J(n);
- return 'hsl(' + o.h + ', ' + o.s + '%, ' + o.l + '%)';
- },
- I = function (n) {
- var o = J(n);
- return 'hsla(' + o.h + ', ' + o.s + '%, ' + o.l + '%, ' + o.a + ')';
- },
- ee = function (n) {
- var o = n.h,
- c = n.s,
- h = n.v,
- i = n.a;
- ((o = (o / 360) * 6), (c /= 100), (h /= 100));
- var d = Math.floor(o),
- e = h * (1 - c),
- t = h * (1 - (o - d) * c),
- r = h * (1 - (1 - o + d) * c),
- a = d % 6;
- return {
- r: x(255 * [h, t, e, e, r, h][a]),
- g: x(255 * [r, h, h, t, e, e][a]),
- b: x(255 * [e, e, r, h, h, t][a]),
- a: x(i, 2),
- };
- },
- Me = function (n) {
- var o =
- /rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i.exec(
- n,
- );
- return o
- ? re({
- r: Number(o[1]) / (o[2] ? 100 / 255 : 1),
- g: Number(o[3]) / (o[4] ? 100 / 255 : 1),
- b: Number(o[5]) / (o[6] ? 100 / 255 : 1),
- a: o[7] === void 0 ? 1 : Number(o[7]) / (o[8] ? 100 : 1),
- })
- : { h: 0, s: 0, v: 0, a: 1 };
- },
- j = function (n) {
- var o = n.toString(16);
- return o.length < 2 ? '0' + o : o;
- },
- Ce = function (n) {
- var o = n.r,
- c = n.g,
- h = n.b,
- i = n.a,
- d = i < 1 ? j(x(255 * i)) : '';
- return '#' + j(o) + j(c) + j(h) + d;
- },
- re = function (n) {
- var o = n.r,
- c = n.g,
- h = n.b,
- i = n.a,
- d = Math.max(o, c, h),
- e = d - Math.min(o, c, h),
- t = e ? (d === o ? (c - h) / e : d === c ? 2 + (h - o) / e : 4 + (o - c) / e) : 0;
- return {
- h: x(60 * (t < 0 ? t + 6 : t)),
- s: x(d ? (e / d) * 100 : 0),
- v: x((d / 255) * 100),
- a: i,
- };
- },
- te = m.memo(function (n) {
- var o = n.hue,
- c = n.onChange,
- h = N(['react-colorful__hue', n.className]);
- return m.createElement(
- 'div',
- { className: h },
- m.createElement(
- G,
- {
- onMove: function (i) {
- c({ h: 360 * i.left });
- },
- onKey: function (i) {
- c({ h: O(o + 360 * i.left, 0, 360) });
- },
- 'aria-label': 'Hue',
- 'aria-valuenow': x(o),
- 'aria-valuemax': '360',
- 'aria-valuemin': '0',
- },
- m.createElement(F, {
- className: 'react-colorful__hue-pointer',
- left: o / 360,
- color: K({ h: o, s: 100, v: 100, a: 1 }),
- }),
- ),
- );
- }),
- ne = m.memo(function (n) {
- var o = n.hsva,
- c = n.onChange,
- h = { backgroundColor: K({ h: o.h, s: 100, v: 100, a: 1 }) };
- return m.createElement(
- 'div',
- { className: 'react-colorful__saturation', style: h },
- m.createElement(
- G,
- {
- onMove: function (i) {
- c({ s: 100 * i.left, v: 100 - 100 * i.top });
- },
- onKey: function (i) {
- c({ s: O(o.s + 100 * i.left, 0, 100), v: O(o.v - 100 * i.top, 0, 100) });
- },
- 'aria-label': 'Color',
- 'aria-valuetext': 'Saturation ' + x(o.s) + '%, Brightness ' + x(o.v) + '%',
- },
- m.createElement(F, {
- className: 'react-colorful__saturation-pointer',
- top: 1 - o.v / 100,
- left: o.s / 100,
- color: K(o),
- }),
- ),
- );
- }),
- ae = function (n, o) {
- if (n === o) return !0;
- for (var c in n) if (n[c] !== o[c]) return !1;
- return !0;
- },
- le = function (n, o) {
- return n.replace(/\s/g, '') === o.replace(/\s/g, '');
- },
- $e = function (n, o) {
- return n.toLowerCase() === o.toLowerCase() || ae(X(n), X(o));
- };
-function oe(n, o, c) {
- var h = L(c),
- i = p.useState(function () {
- return n.toHsva(o);
- }),
- d = i[0],
- e = i[1],
- t = p.useRef({ color: o, hsva: d });
- (p.useEffect(
- function () {
- if (!n.equal(o, t.current.color)) {
- var a = n.toHsva(o);
- ((t.current = { hsva: a, color: o }), e(a));
- }
- },
- [o, n],
- ),
- p.useEffect(
- function () {
- var a;
- ae(d, t.current.hsva) ||
- n.equal((a = n.fromHsva(d)), t.current.color) ||
- ((t.current = { hsva: d, color: a }), h(a));
- },
- [d, n, h],
- ));
- var r = p.useCallback(function (a) {
- e(function (l) {
- return Object.assign({}, l, a);
- });
- }, []);
- return [d, r];
-}
-var Oe = typeof window < 'u' ? p.useLayoutEffect : p.useEffect,
- Se = function () {
- return typeof __webpack_nonce__ < 'u' ? __webpack_nonce__ : void 0;
- },
- A = new Map(),
- ue = function (n) {
- Oe(function () {
- var o = n.current ? n.current.ownerDocument : document;
- if (o !== void 0 && !A.has(o)) {
- var c = o.createElement('style');
- ((c.innerHTML = `.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url('data:image/svg+xml;charset=utf-8,')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}`),
- A.set(o, c));
- var h = Se();
- (h && c.setAttribute('nonce', h), o.head.appendChild(c));
- }
- }, []);
- },
- Ne = function (n) {
- var o = n.className,
- c = n.colorModel,
- h = n.color,
- i = h === void 0 ? c.defaultColor : h,
- d = n.onChange,
- e = V(n, ['className', 'colorModel', 'color', 'onChange']),
- t = p.useRef(null);
- ue(t);
- var r = oe(c, i, d),
- a = r[0],
- l = r[1],
- u = N(['react-colorful', o]);
- return m.createElement(
- 'div',
- C({}, e, { ref: t, className: u }),
- m.createElement(ne, { hsva: a, onChange: l }),
- m.createElement(te, { hue: a.h, onChange: l, className: 'react-colorful__last-control' }),
- );
- },
- je = {
- defaultColor: '000',
- toHsva: xe,
- fromHsva: function (n) {
- return Ee({ h: n.h, s: n.s, v: n.v, a: 1 });
- },
- equal: $e,
- },
- Re = function (n) {
- return m.createElement(Ne, C({}, n, { colorModel: je }));
- },
- ze = function (n) {
- var o = n.className,
- c = n.hsva,
- h = n.onChange,
- i = {
- backgroundImage:
- 'linear-gradient(90deg, ' +
- I(Object.assign({}, c, { a: 0 })) +
- ', ' +
- I(Object.assign({}, c, { a: 1 })) +
- ')',
- },
- d = N(['react-colorful__alpha', o]),
- e = x(100 * c.a);
- return m.createElement(
- 'div',
- { className: d },
- m.createElement('div', { className: 'react-colorful__alpha-gradient', style: i }),
- m.createElement(
- G,
- {
- onMove: function (t) {
- h({ a: t.left });
- },
- onKey: function (t) {
- h({ a: O(c.a + t.left) });
- },
- 'aria-label': 'Alpha',
- 'aria-valuetext': e + '%',
- 'aria-valuenow': e,
- 'aria-valuemin': '0',
- 'aria-valuemax': '100',
- },
- m.createElement(F, { className: 'react-colorful__alpha-pointer', left: c.a, color: I(c) }),
- ),
- );
- },
- ie = function (n) {
- var o = n.className,
- c = n.colorModel,
- h = n.color,
- i = h === void 0 ? c.defaultColor : h,
- d = n.onChange,
- e = V(n, ['className', 'colorModel', 'color', 'onChange']),
- t = p.useRef(null);
- ue(t);
- var r = oe(c, i, d),
- a = r[0],
- l = r[1],
- u = N(['react-colorful', o]);
- return m.createElement(
- 'div',
- C({}, e, { ref: t, className: u }),
- m.createElement(ne, { hsva: a, onChange: l }),
- m.createElement(te, { hue: a.h, onChange: l }),
- m.createElement(ze, { hsva: a, onChange: l, className: 'react-colorful__last-control' }),
- );
- },
- Ie = { defaultColor: 'hsla(0, 0%, 0%, 1)', toHsva: ke, fromHsva: I, equal: le },
- He = function (n) {
- return m.createElement(ie, C({}, n, { colorModel: Ie }));
- },
- qe = {
- defaultColor: 'rgba(0, 0, 0, 1)',
- toHsva: Me,
- fromHsva: function (n) {
- var o = ee(n);
- return 'rgba(' + o.r + ', ' + o.g + ', ' + o.b + ', ' + o.a + ')';
- },
- equal: le,
- },
- Pe = function (n) {
- return m.createElement(ie, C({}, n, { colorModel: qe }));
- },
- Le = M.div({ position: 'relative', maxWidth: 250, '&[aria-readonly="true"]': { opacity: 0.5 } }),
- Be = M(Y)({
- position: 'absolute',
- zIndex: 1,
- top: 4,
- left: 4,
- '[aria-readonly=true] &': { cursor: 'not-allowed' },
- }),
- Xe = M.div({
- width: 200,
- margin: 5,
- '.react-colorful__saturation': { borderRadius: '4px 4px 0 0' },
- '.react-colorful__hue': { boxShadow: 'inset 0 0 0 1px rgb(0 0 0 / 5%)' },
- '.react-colorful__last-control': { borderRadius: '0 0 4px 4px' },
- }),
- Ke = M(fe)(({ theme: n }) => ({ fontFamily: n.typography.fonts.base })),
- De = M.div({
- display: 'grid',
- gridTemplateColumns: 'repeat(9, 16px)',
- gap: 6,
- padding: 3,
- marginTop: 5,
- width: 200,
- }),
- Ve = M.div(({ theme: n, active: o }) => ({
- width: 16,
- height: 16,
- boxShadow: o
- ? `${n.appBorderColor} 0 0 0 1px inset, ${n.textMutedColor}50 0 0 0 4px`
- : `${n.appBorderColor} 0 0 0 1px inset`,
- borderRadius: n.appBorderRadius,
- })),
- Ge = `url('data:image/svg+xml;charset=utf-8,')`,
- Q = ({ value: n, style: o, ...c }) => {
- let h = `linear-gradient(${n}, ${n}), ${Ge}, linear-gradient(#fff, #fff)`;
- return m.createElement(Ve, { ...c, style: { ...o, backgroundImage: h } });
- },
- Fe = M(de.Input)(({ theme: n, readOnly: o }) => ({
- width: '100%',
- paddingLeft: 30,
- paddingRight: 30,
- boxSizing: 'border-box',
- fontFamily: n.typography.fonts.base,
- })),
- Te = M(ge)(({ theme: n }) => ({
- position: 'absolute',
- zIndex: 1,
- top: 6,
- right: 7,
- width: 20,
- height: 20,
- padding: 4,
- boxSizing: 'border-box',
- cursor: 'pointer',
- color: n.input.color,
- })),
- se = ((n) => ((n.RGB = 'rgb'), (n.HSL = 'hsl'), (n.HEX = 'hex'), n))(se || {}),
- R = Object.values(se),
- We = /\(([0-9]+),\s*([0-9]+)%?,\s*([0-9]+)%?,?\s*([0-9.]+)?\)/,
- Ae = /^\s*rgba?\(([0-9]+),\s*([0-9]+),\s*([0-9]+),?\s*([0-9.]+)?\)\s*$/i,
- Qe = /^\s*hsla?\(([0-9]+),\s*([0-9]+)%,\s*([0-9]+)%,?\s*([0-9.]+)?\)\s*$/i,
- D = /^\s*#?([0-9a-f]{3}|[0-9a-f]{6})\s*$/i,
- Ue = /^\s*#?([0-9a-f]{3})\s*$/i,
- Ye = { hex: Re, rgb: Pe, hsl: He },
- z = { hex: 'transparent', rgb: 'rgba(0, 0, 0, 0)', hsl: 'hsla(0, 0%, 0%, 0)' },
- U = (n) => {
- let o = n == null ? void 0 : n.match(We);
- if (!o) return [0, 0, 0, 1];
- let [, c, h, i, d = 1] = o;
- return [c, h, i, d].map(Number);
- },
- $ = (n) => {
- if (!n) return;
- let o = !0;
- if (Ae.test(n)) {
- let [e, t, r, a] = U(n),
- [l, u, s] = _.default.rgb.hsl([e, t, r]) || [0, 0, 0];
- return {
- valid: o,
- value: n,
- keyword: _.default.rgb.keyword([e, t, r]),
- colorSpace: 'rgb',
- rgb: n,
- hsl: `hsla(${l}, ${u}%, ${s}%, ${a})`,
- hex: `#${_.default.rgb.hex([e, t, r]).toLowerCase()}`,
- };
- }
- if (Qe.test(n)) {
- let [e, t, r, a] = U(n),
- [l, u, s] = _.default.hsl.rgb([e, t, r]) || [0, 0, 0];
- return {
- valid: o,
- value: n,
- keyword: _.default.hsl.keyword([e, t, r]),
- colorSpace: 'hsl',
- rgb: `rgba(${l}, ${u}, ${s}, ${a})`,
- hsl: n,
- hex: `#${_.default.hsl.hex([e, t, r]).toLowerCase()}`,
- };
- }
- let c = n.replace('#', ''),
- h = _.default.keyword.rgb(c) || _.default.hex.rgb(c),
- i = _.default.rgb.hsl(h),
- d = n;
- if ((/[^#a-f0-9]/i.test(n) ? (d = c) : D.test(n) && (d = `#${c}`), d.startsWith('#')))
- o = D.test(d);
- else
- try {
- _.default.keyword.hex(d);
- } catch {
- o = !1;
- }
- return {
- valid: o,
- value: d,
- keyword: _.default.rgb.keyword(h),
- colorSpace: 'hex',
- rgb: `rgba(${h[0]}, ${h[1]}, ${h[2]}, 1)`,
- hsl: `hsla(${i[0]}, ${i[1]}%, ${i[2]}%, 1)`,
- hex: d,
- };
- },
- Ze = (n, o, c) => {
- if (!n || !(o != null && o.valid)) return z[c];
- if (c !== 'hex') return (o == null ? void 0 : o[c]) || z[c];
- if (!o.hex.startsWith('#'))
- try {
- return `#${_.default.keyword.hex(o.hex)}`;
- } catch {
- return z.hex;
- }
- let h = o.hex.match(Ue);
- if (!h) return D.test(o.hex) ? o.hex : z.hex;
- let [i, d, e] = h[1].split('');
- return `#${i}${i}${d}${d}${e}${e}`;
- },
- Je = (n, o) => {
- let [c, h] = p.useState(n || ''),
- [i, d] = p.useState(() => $(c)),
- [e, t] = p.useState((i == null ? void 0 : i.colorSpace) || 'hex');
- p.useEffect(() => {
- let u = n || '',
- s = $(u);
- (h(u), d(s), t((s == null ? void 0 : s.colorSpace) || 'hex'));
- }, [n]);
- let r = p.useMemo(() => Ze(c, i, e).toLowerCase(), [c, i, e]),
- a = p.useCallback(
- (u) => {
- let s = $(u),
- f = (s == null ? void 0 : s.value) || u || '';
- (h(f), f === '' && (d(void 0), o(void 0)), s && (d(s), t(s.colorSpace), o(s.value)));
- },
- [o],
- ),
- l = p.useCallback(() => {
- let u = R.indexOf(e) + 1;
- (u >= R.length && (u = 0), t(R[u]));
- let s = (i == null ? void 0 : i[R[u]]) || '';
- (h(s), o(s));
- }, [i, e, o]);
- return { value: c, realValue: r, updateValue: a, color: i, colorSpace: e, cycleColorSpace: l };
- },
- H = (n) => n.replace(/\s*/, '').toLowerCase(),
- er = (n, o, c) => {
- let [h, i] = p.useState(o != null && o.valid ? [o] : []);
- p.useEffect(() => {
- o === void 0 && i([]);
- }, [o]);
- let d = p.useMemo(
- () =>
- (n || [])
- .map((t) =>
- typeof t == 'string'
- ? $(t)
- : t.title
- ? { ...$(t.color), keyword: t.title }
- : $(t.color),
- )
- .concat(h)
- .filter(Boolean)
- .slice(-27),
- [n, h],
- ),
- e = p.useCallback(
- (t) => {
- t != null && t.valid && (d.some((r) => H(r[c]) === H(t[c])) || i((r) => r.concat(t)));
- },
- [c, d],
- );
- return { presets: d, addPreset: e };
- },
- rr = ({
- name: n,
- value: o,
- onChange: c,
- onFocus: h,
- onBlur: i,
- presetColors: d,
- startOpen: e = !1,
- argType: t,
- }) => {
- var E;
- let r = p.useCallback(ce(c, 200), [c]),
- {
- value: a,
- realValue: l,
- updateValue: u,
- color: s,
- colorSpace: f,
- cycleColorSpace: g,
- } = Je(o, r),
- { presets: b, addPreset: y } = er(d, s, f),
- v = Ye[f],
- w = !!((E = t == null ? void 0 : t.table) != null && E.readonly);
- return m.createElement(
- Le,
- { 'aria-readonly': w },
- m.createElement(
- Be,
- {
- startOpen: e,
- trigger: w ? [null] : void 0,
- closeOnOutsideClick: !0,
- onVisibleChange: () => y(s),
- tooltip: m.createElement(
- Xe,
- null,
- m.createElement(v, {
- color: l === 'transparent' ? '#000000' : l,
- onChange: u,
- onFocus: h,
- onBlur: i,
- }),
- b.length > 0 &&
- m.createElement(
- De,
- null,
- b.map((k, P) =>
- m.createElement(
- Y,
- {
- key: `${k.value}-${P}`,
- hasChrome: !1,
- tooltip: m.createElement(Ke, { note: k.keyword || k.value }),
- },
- m.createElement(Q, {
- value: k[f],
- active: s && H(k[f]) === H(s[f]),
- onClick: () => u(k.value),
- }),
- ),
- ),
- ),
- ),
- },
- m.createElement(Q, { value: l, style: { margin: 4 } }),
- ),
- m.createElement(Fe, {
- id: he(n),
- value: a,
- onChange: (k) => u(k.target.value),
- onFocus: (k) => k.target.select(),
- readOnly: w,
- placeholder: 'Choose color...',
- }),
- a ? m.createElement(Te, { onClick: g }) : null,
- );
- },
- hr = rr;
-export { rr as ColorControl, hr as default };
diff --git a/frontend/storybook-static/assets/Color-YHDXOIA2-TyRUFWHt.js b/frontend/storybook-static/assets/Color-YHDXOIA2-TyRUFWHt.js
new file mode 100644
index 00000000..6e2add77
--- /dev/null
+++ b/frontend/storybook-static/assets/Color-YHDXOIA2-TyRUFWHt.js
@@ -0,0 +1 @@
+import{d as ce,Z as Y,g as he,v as M,s as fe,Q as de,M as ge,_ as be,a as q}from"./DocsRenderer-CFRXHY34-PwQpkARk.js";import{r as p,R as m}from"./index-pP6CS22B.js";import"./iframe-TIV-g1v0.js";import"./jsx-runtime-Z5uAzocK.js";import"./index-DLHbBEj9.js";import"./_commonjsHelpers-Cpj98o6Y.js";import"./index-Bhelpi4i.js";import"./index-DrFu-skq.js";import"./react-18-bLqJeRpb.js";var me=q({"../../node_modules/color-name/index.js"(n,o){o.exports={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]}}}),Z=q({"../../node_modules/color-convert/conversions.js"(n,o){var c=me(),h={};for(let e of Object.keys(c))h[c[e]]=e;var i={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},lch:{channels:3,labels:"lch"},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}};o.exports=i;for(let e of Object.keys(i)){if(!("channels"in i[e]))throw new Error("missing channels property: "+e);if(!("labels"in i[e]))throw new Error("missing channel labels property: "+e);if(i[e].labels.length!==i[e].channels)throw new Error("channel and label counts mismatch: "+e);let{channels:t,labels:r}=i[e];delete i[e].channels,delete i[e].labels,Object.defineProperty(i[e],"channels",{value:t}),Object.defineProperty(i[e],"labels",{value:r})}i.rgb.hsl=function(e){let t=e[0]/255,r=e[1]/255,a=e[2]/255,l=Math.min(t,r,a),u=Math.max(t,r,a),s=u-l,f,g;u===l?f=0:t===u?f=(r-a)/s:r===u?f=2+(a-t)/s:a===u&&(f=4+(t-r)/s),f=Math.min(f*60,360),f<0&&(f+=360);let b=(l+u)/2;return u===l?g=0:b<=.5?g=s/(u+l):g=s/(2-u-l),[f,g*100,b*100]},i.rgb.hsv=function(e){let t,r,a,l,u,s=e[0]/255,f=e[1]/255,g=e[2]/255,b=Math.max(s,f,g),y=b-Math.min(s,f,g),v=function(w){return(b-w)/6/y+1/2};return y===0?(l=0,u=0):(u=y/b,t=v(s),r=v(f),a=v(g),s===b?l=a-r:f===b?l=1/3+t-a:g===b&&(l=2/3+r-t),l<0?l+=1:l>1&&(l-=1)),[l*360,u*100,b*100]},i.rgb.hwb=function(e){let t=e[0],r=e[1],a=e[2],l=i.rgb.hsl(e)[0],u=1/255*Math.min(t,Math.min(r,a));return a=1-1/255*Math.max(t,Math.max(r,a)),[l,u*100,a*100]},i.rgb.cmyk=function(e){let t=e[0]/255,r=e[1]/255,a=e[2]/255,l=Math.min(1-t,1-r,1-a),u=(1-t-l)/(1-l)||0,s=(1-r-l)/(1-l)||0,f=(1-a-l)/(1-l)||0;return[u*100,s*100,f*100,l*100]};function d(e,t){return(e[0]-t[0])**2+(e[1]-t[1])**2+(e[2]-t[2])**2}i.rgb.keyword=function(e){let t=h[e];if(t)return t;let r=1/0,a;for(let l of Object.keys(c)){let u=c[l],s=d(e,u);s*\.{3}(?:[^{}]|/g, function () {
- return i;
- })
- .replace(/+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|*\/?)?>/
- .source,
- )),
- (a.languages.jsx.tag.inside.tag.pattern = /^<\/?[^\s>\/]*/),
- (a.languages.jsx.tag.inside['attr-value'].pattern =
- /=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/),
- (a.languages.jsx.tag.inside.tag.inside['class-name'] = /^[A-Z]\w*(?:\.[A-Z]\w*)*$/),
- (a.languages.jsx.tag.inside.comment = o.comment),
- a.languages.insertBefore(
- 'inside',
- 'attr-name',
- { spread: { pattern: d(/
{WS(),xi=Ce(bF()),Si=Fy(xi.default,{}),Si.registerLanguage=function(e,t){return xi.default.register(t)},Si.alias=function(e,t){return xi.default.alias(e,t)},al=Si}),DF=z(()=>{vy()}),EF=U((e,t)=>{t.exports=r,r.displayName="bash",r.aliases=["shell"];function r(n){(function(a){var o="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",i={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},s={bash:i,environment:{pattern:RegExp("\\$"+o),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+o),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};a.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+o),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:s},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:i}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:s},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:s.entity}}],environment:{pattern:RegExp("\\$?"+o),alias:"constant"},variable:s.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},i.inside=a.languages.bash;for(var c=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],d=s.variable[1].inside,f=0;f >1,g=c[m],v=a(g),b=o(g);if(v<=i&&s<=b)return cf(g,t,r,g);if(b<=i){d=g,h=m+1;continue}if(s<=v){f=g,p=m;continue}throw new Error("Comment location overlaps with node location")}if((n==null?void 0:n.type)==="TemplateLiteral"){let{quasis:m}=n,g=cl(m,t,r);d&&cl(m,d,r)!==g&&(d=null),f&&cl(m,f,r)!==g&&(f=null)}return{enclosingNode:n,precedingNode:d,followingNode:f}}function Cw(e,t){let{comments:r}=e;if(delete e.comments,!aD(r)||!t.printer.canAttachComment)return;let n=[],{locStart:a,locEnd:o,printer:{experimentalFeatures:{avoidAstMutation:i=!1}={},handleComments:s={}},originalText:c}=t,{ownLine:d=ml,endOfLine:f=ml,remaining:h=ml}=s,p=r.map((m,g)=>({...cf(e,m,t),comment:m,text:c,options:t,ast:e,isLastComment:r.length-1===g}));for(let[m,g]of p.entries()){let{comment:v,precedingNode:b,enclosingNode:C,followingNode:E,text:D,options:w,ast:x,isLastComment:S}=g;if(w.parser==="json"||w.parser==="json5"||w.parser==="jsonc"||w.parser==="__js_expression"||w.parser==="__ts_expression"||w.parser==="__vue_expression"||w.parser==="__vue_ts_expression"){if(a(v)-a(x)<=0){rn(x,v);continue}if(o(v)-o(x)>=0){nn(x,v);continue}}let F;if(i?F=[g]:(v.enclosingNode=C,v.precedingNode=b,v.followingNode=E,F=[v,D,w,x,S]),xw(D,w,p,m))v.placement="ownLine",d(...F)||(E?rn(E,v):b?nn(b,v):To(C||x,v));else if(Sw(D,w,p,m))v.placement="endOfLine",f(...F)||(b?nn(b,v):E?rn(E,v):To(C||x,v));else if(v.placement="remaining",!h(...F))if(b&&E){let A=n.length;A>0&&n[A-1].followingNode!==E&&Rd(n,w),n.push(g)}else b?nn(b,v):E?rn(E,v):To(C||x,v)}if(Rd(n,t),!i)for(let m of r)delete m.precedingNode,delete m.enclosingNode,delete m.followingNode}function xw(e,t,r,n){let{comment:a,precedingNode:o}=r[n],{locStart:i,locEnd:s}=t,c=i(a);if(o)for(let d=n-1;d>=0;d--){let{comment:f,precedingNode:h}=r[d];if(h!==o||!bf(e.slice(s(f),c)))break;c=i(f)}return or(e,c,{backwards:!0})}function Sw(e,t,r,n){let{comment:a,followingNode:o}=r[n],{locStart:i,locEnd:s}=t,c=s(a);if(o)for(let d=n+1;d i(p,c)).filter(Boolean);let d={},f=new Set(a(s));for(let p in s)!Object.prototype.hasOwnProperty.call(s,p)||o.has(p)||(f.has(p)?d[p]=i(s[p],s):d[p]=s[p]);let h=r(s,d,c);if(h!==null)return h??d}}function Vw(e,t){let r=[e.node,...e.parentNodes],n=new Set([t.node,...t.parentNodes]);return r.find(a=>Ef.has(a.type)&&n.has(a))}function Nd(e){let t=CD(!1,e,r=>r.type!=="Program"&&r.type!=="File");return t===-1?e:e.slice(0,t+1)}function Uw(e,t,{locStart:r,locEnd:n}){let a=e.node,o=t.node;if(a===o)return{startNode:a,endNode:o};let i=r(e.node);for(let c of Nd(t.parentNodes))if(r(c)>=i)o=c;else break;let s=n(t.node);for(let c of Nd(e.parentNodes)){if(n(c)<=s)a=c;else break;if(a===o)break}return{startNode:a,endNode:o}}function es(e,t,r,n,a=[],o){let{locStart:i,locEnd:s}=r,c=i(e),d=s(e);if(!(t>d||t*\.{3}(?:[^{}]|/g,function(){return i}).replace(/+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|*\/?)?>/.source),a.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,a.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,a.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,a.languages.jsx.tag.inside.comment=o.comment,a.languages.insertBefore("inside","attr-name",{spread:{pattern:d(/=c&&g+1>=s)return i(Kc(o,w.lastComponent,t,e,o.useLongestToken));m[D]=w,w.oldPos+1>=c&&(b=Math.min(b,D-1)),g+1>=s&&(v=Math.max(v,D+1))}d++}if(u(C,"C"),a)u(function D(){setTimeout(function(){if(d>f||Date.now()>p)return a();C()||D()},0)},"E")();else for(;d<=f&&Date.now()<=p;){var E=C();if(E)return E}},"diff"),addToPath:u(function(e,t,r,n,a){var o=e.lastComponent;return o&&!a.oneChangePerToken&&o.added===t&&o.removed===r?{oldPos:e.oldPos+n,lastComponent:{count:o.count+1,added:t,removed:r,previousComponent:o.previousComponent}}:{oldPos:e.oldPos+n,lastComponent:{count:1,added:t,removed:r,previousComponent:o}}},"addToPath"),extractCommon:u(function(e,t,r,n,a){for(var o=t.length,i=r.length,s=e.oldPos,c=s-n,d=0;c+1>10),ve=fr%1024+56320,mr.push(ke,ve)),(Dr+1==Tr||mr.length>vr)&&(Lr+=String.fromCharCode.apply(null,mr),mr.length=0)}return Lr}(te);(function(ke,ve,vr){var mr=new Error(ke);throw mr.line=ve,mr.column=vr,mr})("Invalid Unicode escape code: "+Dt,Xt,Wt)}(Q.join(""))},br="\\u",ar={type:"literal",value:"\\u",description:'"\\\\u"'},o=0,et=0,kt=0,Rt={line:1,column:1,seenCR:!1},Qt=0,Jt=[],xt=0,$t={};if("startRule"in W){if(!(W.startRule in A))throw new Error(`Can't start parsing from rule "`+W.startRule+'".');g=A[W.startRule]}function we(){return Ee(et).line}function ae(){return Ee(et).column}function Ee(Q){return kt!==Q&&(kt>Q&&(kt=0,Rt={line:1,column:1,seenCR:!1}),function(Dt,Xt,Wt){var te,ke;for(te=Xt;te