From 5c3e60bc6a6273d108253f232936d1cde99481df Mon Sep 17 00:00:00 2001 From: Carson Roscoe Date: Thu, 2 Apr 2026 09:57:09 -0700 Subject: [PATCH 1/5] docs: add initial x402 foundation charter (#1911) --- .../x402 Technical Charter March 31, 2026.pdf | Bin 0 -> 235083 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 foundation/x402 Technical Charter March 31, 2026.pdf diff --git a/foundation/x402 Technical Charter March 31, 2026.pdf b/foundation/x402 Technical Charter March 31, 2026.pdf new file mode 100644 index 0000000000000000000000000000000000000000..ef05a7ddcd4260fea783aba5d3970a16d44239b6 GIT binary patch literal 235083 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

!;22;HP!XMhtbF@nF^yK5$P;7V$Ty0O z%0^WwsA2I(MIkle0&b^xkw@hwI%sbzXJa?*s@x>>zgr1v0d@hm0Tqn44RVLL0@#MQ zw85z>ASX~l$pSov{0VRsrC8X-!Y&rlSV&_bB~Ynp0=5IYhO~wYn)7v}{b{KI4u>`d z(in{L1n6m*15QE7jFK58GpvsBv+&RY>HszYg)Tb*lpjN!y`U=?(zgQ*y8g6ob6)3> zb@^FO?(l(;%s-Ot8p*beWS;Vh%0f>jNPK+!rmYS88;&--)}XXCtZvxYAjb9w2l@i; zf)j);s2eo5&%Li5f8-Z;=6*Zoa zYZlZ#q?7WUx=!Y#o?oID7{lX%vZBVyso2NbfIEQ#Z9fkENHAHwnL{=beipnvYUTsH_x`4$J))6X7&I>?^LDJVLG)*%04*|TN6tW zN7yG+gO*sJe54(3be*wapu7@nFi<`b>|CJy0kFRX%I~s2&Hl>tw*@;B$U14SOk$t1 z$%-uhX^8)kO{RU|r@`kg@THR$y|%GG%pgr~BAqndX&bq8 z9>ZdF=gpLZ4Mh2np($$@?L*AK~X1?;co z_A}Q(`%knZ_7}4H*{pzlAh+KH#nIe;&YraQBFKK&a(2+ZKX^o@BL66xQTsdGbo;h>uVO~r|w$77lTx*{U`T5Pbo3*rJib~NYoBSN;5HXg& z={B3>8#dkM^|E^ZKquADclggVVb@AP z8CCur_06q;;>RA#sPg&?^?Wdhe7%37{2=KNU&B||)*Rwpl6hMXv1|F7+8I*LuC4K2 zFr!S~1v4s_Oq%skrZl5W)~A~_=w_I&nYA^&nVBJ@=h$Rvgn9IwZnQYmRu;NITTPO| zj1QwMy{#-hOqyY0gc^&zxUpzrv3g^%(WEz)E{%F!E|}!Hq)G2s7Yuq`V|DeuFVvbV ztLrc6>y`_BRd4)?#x}~vs%2k$>c2u=FV%ZwU-h!DdfC?=&mO(6`WaQM zzNxj>L{;AExgp-iqav{^+HpUuO15-O(AUU#r}cWjTt39GC zq9;OFA{-F~5uS*q2z9mCD7Fe=7x|(>G>SH%;usY$mKA|{>I`K?+oE@q}bGi)>R_NcC?o+x37azqtGd7_%4RJ)N8 z#?}p#F1WD1#6~!gr4}}qa zxM?!A(QWh~qVXo3#2F`w731i(59xLGd-ZMjR!{5bTIzx4drbh^(L4nQUyc!u zq?yodrQPVikB+f==4AuyS+QF!7_0~;29tun3I-{MTH)bNdKP_r$_ikE9z>>Cs|-`t zs)grnzz7%6{dA08hac}F?tiAwSPs$${Cd7II6JsE_z`?D;ZQV=rqdi+P3!3@`W~L@ zbM!p@k$ui1VELNzf_klbI(R2yn@v^ly%E;UXnPBuQh@rA-oz;5m;<92$EL9vY%$x) zcCdc-4ts|ixD&7b-w3~WRlKK^sA{kbEhWp_KW52nT7oBVJ)(Ul#=DnZpqE(^%Vv2P z(VM7$hL7hpNDuMX`1@j$*s7dWzcqMb@VA4X2YqD3ESrcptfR*eg+H)l_%MorLs?XSDmbOsQZi^gR2H#57q~7(vMvR_%)nz zX$+0U{8@zAv>g6*Azeuu=mzr9?U*lj(k>k2`{^jXOmEP?)9>&Eh&kc&QuMwOvu+c+ z9qC^7ID3}8z+Pq_uro68Or#OKgjeutUdI>nO-S4MG5#k1wMZA8*hPDg9uNn`J9z6T zN>D9Cnxt+~A2GaY9ATVfoNxNk*;D6o&Uw$hKS+aVgO?BP7<_i{SHW4qYv8|&@@N!1 z-3%}9#T?v?^cZI1LHZ&6h~CnD{e*F*V#ZsUhS`vdr&hrx;^;J)O=Z)OW+KgIbC5dN ze6|E>BkN(`WH+*#*lq0Fdb$T=+sz(j2a%p)hmqc3$JsC0Z`daslb8$4W)~mM^LZ&o zTFoc&Mm_^+F<*_;#joV+@q`}Xef$uAQzQr%_S+7zM%*jDFP;-W7k^c_lB?t^<;pB& zv2vsGn)15xw(_}ZS8LTJ>I3R?2Ag4wVWwf3;U2?&!>APT?DjKQ{(VF6>q> zV%$$&@*VJe!)vTtO;oPt$FVM~qD$S(W+Gw+-Xd0r+r>}SMeMY2uy>hHEEUUx4~aVd znOMzc@uMtL*wr$zh;F4I+s8lPpYmTRNvwr`%tk18u&4NHQH`rAK>eALq}-_f8VC5d zsEl972KWo&MsZ{C->6J|fE`yK;IETIIl&X?I9By$em5%pgfHb=s8t!Geojjf_ea&M z5$_57W|kvzKL7PpBX3n%-zh$OG{k!ABF*2GWqnc``~F;R^B+%ftoUCRV3z}z_x zgR}}OU^^d5jmhc*Oz*aGbPQ?Y+?!iALbSrm556!^AL{;UPh#9r8jUO&VB{|a{fdiHy| ziaD^d255vLHMc6Y*qPd~|87BAK=V+#pYAj~ss4-_SqhQj7<>S;{5`q?@0<_Oe;Sp; zzd7`vk_)dL*qPU$#{Gkn$fN&9msc65>)`VQtn(&i5_aAl!DSfXQoN%Y@J@W0mIm*p zYCO9c!5f2Hs4e(la4xRk&B49cf7b^CR6?6oFQ28ll`+_3UuMtaee?^q1^f0SdKdeV zi&^P6NZ*J56VxN*Q{KYfSrNQ7_y#2*9+`;He7r?Z(n|V0;x>;eQS!Bc&&7FZ9!^H`Cs7yR6t);Qucb)KamrhbbJ2SJ_IDM| zL)YU()`PpwH*rGRjO4>@_IBL+ci?1nH_lJHa7TOyr?tm%%IU++qMr`YGq?*qtKS=6 zz)j;toZw!eS8*2m5&Z=B&!5uIaQAqZeu1;u`*a+qs}ne%{gSx+KX+=n{01ZLax46s z+^xNw9pTU59%kf61Eebb{FwuSB8@WhB%@T5K|KmRC&5Ni1Y6FoAgkMQruuzS(&sps z56GW;J{dg8eyA>|Xhi=e>D3Yb7^PA~aKIB$GHwicJe6Zi@{_H^Va_p;X`jU`E+J1& z@t8;GDU7LKOn%C26lPCC6!OI$Gf|{s@g$Fl^eCUDTF#vM^i*7YY5pmyI8|Z!<>&&o zM*l>{&FX4wo(OXSW5$FCqabTV1k?ET-XfsaoEqz9j76Tqg z6ola(FqLsQbZy}MA~fqVz?)QA`*!rVp39M32i1?t>&cUzbVU(Q8RO#PhYhpaRn;JMc}7cYY;<%~l*wc?#30O(5tL%J+H4eQiHl22Osa_4 zobrTubGx<6%B}s}>`95-Y>U`zliyl48Vn+qGd|bR`mkIuYs$+l<(5xRowS@hGwe`e0Xu%=F!RSMl zL#~6lhYF(aGzqRhJ3R12T%{SeCy|&?VylacuZ!$w-h+xzsIX2$){|CNmy^Re!}b+5 zeB6Y;m5gf|#Vn&dqxh(P{=UatWgKV!Thh3g)T)*_RyVe^saPtOGxOGfQALFw?NjGY zS@85uowA%_SU{x`H|y~qU0|)g#?z%%j&T)ayIh{^aoM@9a+f9BnVphsO-@Y~hG21|=VE|hFMWiBBC0>^)YEGG+ z$%*1oa@%twS)O;}ORjsSG3WU$PcHhBluScXVoGvKa#5lDrG(+xtT6dfy-_zfuU5Ox zW_iVXXJ>By_TKf4H#IhGsVizsj>}527i1QWc8EtO-Zu5IwUcjYY`kS+ftEKavtU$K zL4i|U{5U%Iq+_PDDDwoD#7EPl+?1J6t?I=5=h zWHuR?p(nBB3b`uhojO;pFT+z6r$!g(f$L)lut!j2D3Y>=XY*nUjZHEbIEFZk^9^?| z+;%@JJoAkQra9B5TsOGd)v)Le=KDD-VZl{7HNP9&@xq(?eUIEHy&46tX6ar{(Y?wV zspOa@sRHiA!L0;hEFuyvg}yB#3_VGq&EitGq*DId+M=N5y8l)D6yt^IvDSXj#A2Elk7=7Ng}DA<#?j(v2C$DHr0Cn z!}?;GH}%{+`C2_0Uy7BHQYw9AYiv&;)Y0+r(QZf#01MF$3#oW1gfQMXqbhnRD}GJoEn#UEcy2MRm4)&Y9V{ z>~;1&yR*01-Pzq_lkAe+4FnxKS8 zLSO-_)ZhBmYODR*&uVQyqD2a7`uX=mtwJ{cIcJxP?O)8Cb9QETGxJ`a_j%uUCJy6~ zoMaj^6{aNk_ZIldcM$RJdkMM8%9%dw~FuyW^3G}xGfXmp2MH-R0Pq#A%vI|4&k9aY;H zzFO+&{%qE8)r>JxUIpW^cr=bU1R01pUJEEeC8RK%Ghx$A3EAiMAx>rOOF)?OFM%#A zUU|%T6^D@}P!aIpklagv&xnT$09Z@6+S)sm{f0=1|L{Q3V6eDL{OSIp#e%OKqZ?6h z-Z2)NoY!M_A*_;QVyr|Et7&YL9b09^F42s8Rxjv$`1W0Q{cg!icijB)l;-ZH)uD!L zyt!ul6@@GFX!j}DcFm+me^Gw!zR zgPk~NGx&7)9Q-t$rbyS_p&Wn)UNn}N_xp>YnFy+p;)|BEyF4DRTP;jP1tJ_Gn@`{j z)!DMJj5^18jJ)R8CbR$X*x9W;<3dQ&P;kr!^rs)zMnYkH^>z5_pT$=ng7?v@-^|OV zX0IH$EHCSL@R7k5@_1_a7JfSaG|%ag>)8du_1*>YN@2Bqwc}yaBi0A)drf<-uNq$U z{!)I&`;I&m`GWnz>vqE+>oX{BpU3A7%Dm_`$);f5H_f-ryCcHOK7_n}pV`M*7#}il zvX{_RCu=Fe6}l+uE^}+I2*nbU)6J5>zrzO~^*!f9z9UQyi}c-1}|L zMb1^uO-|NXg1qh|4_^2|M33}Fn9fLF1VwyD;TPC%El}58i_j{x3GF~HqBqcS^xsH8 zzVH$F-HX0(qNU;u9kZ~DO2kQrM>@JO4e#F1k*69C?GWLM;u|6Y9o_TOCkU8Qonfkh zq{>?kZ1mmh!^h`aTeeDujW1hYCaFvh&N3lQXOu%0ixdhWNyNZ*pePxT4=?(Q$XxLO zlG`+AD6v-y02K0AtsEa~s*-w+N4(nD)HIfPcG0;ZxEMxufAfY%6PoXhU3>nVo$=%s z6XBBLys3U@D4*5fWca|-cRYD(_u*H5zjOKW9}kv487GaYr#OxAWG>czBiux^e;61? zhx*OUB1zv`%*~U;DaNU$nNju)5!Tdf;;j4`rdl9v%aq$)#Lqxi}+1g044N+Zq)Oz zFMlkLa6Sen9@3pJI+4?tBhYs0f;y=#hda8@kl_R-=@{hF!#%CT9m6EWqG;FDkO?J> zHkOO3F*UAgD$5x(Ya(I9FqUEKm%xw>uT)cV2{eigTy_ZzTY?1Fq?RhPtGxsNqrTb$ zaMFrt0F$c0{yJF1f?%>G!FiyFMG!3UpY|6e%LP5-jW}`>#XGE94^^;Qjk;bBrE)YH z6X%W*KPT3}uNc37%j5GVAKBR3_5Jck+m>cjpWnXDtJN<1QOqAs-+y(a?a?dm=-jn} zow4n{o7xuqaQB#lx9z**sVkDfI>FG&nRXZ3W{wM{CWVY&-_o{x)05<0VT=Zcu{{{E zr!W)`QXUJmfhiW<#^^R!Yldzf2Ls561`e`jlLfG53(J`;*lPp2gBM&pF9;0Fb7ldA zEzoilJ`6Zuf{*GJ1LQ=3;{*e1HnT_JbnK4;T&9~u(Z;|>ndcb9l;G#O3|p!D+F&O} z${`zL<8&VKKI!EJt|WMMW05ynEG#*#YE^-xRd%Ws=#JTAcC`R=c!JE~gL_6^LbrZ%PdN_H ze7F1%T-M8MK6ej#Y-ADfrX|>$)*G$@Dx5`Scli@6bj%Ok7}{jm#BB=R!`>U@3#g#Z zVdg~UsVf6(4C@11(RTm#z~jtQVqa`1W&<%uA02mlyn+ie3WkW)9#JusU?Zwu2{63O z8t~pn2O<&Gc?6@H%s6!{fA~H?@2e_cam<+r6gX|Lm+vE90zbuG5`%iIGlpW={k}LT zp*|I=4kmZsRa$wlH#v58V<0W5`Td)2`_J+9JhEZCzYc3| zKel@rq+puruJ%@Ojd87Yv-pm7TH`ndZe%vF8$5S<*%l$i8JL(a<>Q#hA^{2*#|}mk zFp;of8hh`63=D*l4cIIYt3oFl)g2~3sMTwcUfWsQS36Y8*7_=1!iRuUaz>n4r|#V8 z>~r!?U(H2gb`F#F6IEtLVGD;MER>Gn9xQZtQSt{&oWdb0aExVj0ZnuS1EB!o?3yK^ zi7|{;lClJ-R=kQE6H8#g5m^GFW;}okscCH$zLfn!0)y0GQ4nl0Eb(t2D9Q#KCToA` zFWM|$)r{N9@aJO^;c51~Bi@vQIK#Z49~`)t`?vh$@s;tN-@E(u<+s0n_u?164{iTg zIr6$=+SJ_idE4&Vn3!i+p;_8~{2$wv4()s9o@W*gz~Di6W%;_1E4I$=d~b5*i3gtj zGD3Xps?ih79_(W#FjR?H?C8*dQ<-R>_YUKQPk;udR-6oUOQ)sJ@+*q9_%wglh158f=&Sj{Z%&u zR$_Iwo$X@{?DOa(Fjw_Na=;Tb)SMw)AuSE3E3AI2b>qub*AQ15R&!enTR67r7MKh4 zV7V&?jYhy?4pS1s{Y6kQdS{$Nv*; zz9<_y4>&cRd`lPG7TZS#M!X)9m(pZ!T_5 zOheCZ>6^Rd#r~eFcCWna>Sf(KUR%HTmIeFYDsF7MaqXJ6{EAHZuT%GQ-mz=Lyepe; z!r1pU>`_l)>+ymltmMzR+mi1X{t$g9$*y468#W3X#I@#imi5lHk-LR&JB^~SqXtb7 z3`to{$_6H+v4A%mflGl5^#jRv9IG)R>S9J)rQvh~goq-o28@mO9PoO9MJCAShqgn& zAvq!r#!-Ubz$jRw*YwsfdQE3dU(HYrTLTGps`zcX@kJvt`chxvbi)-=H&TgBtyNHz zX!F2c!N%r_W^0wWU^gcuEs%&M!WMN22---JD&SSb6vCOR9S>1ayA%qEN@?U$_VZea z|9r5>^Hxy7LSV6maN^ouv>LvGgc9Kx?a!Wlzr6mAo6zCS zS1*2VUEl8Ct({v(D)jqCPr#kbK8%B2a6Rn}F+TE?M$odnX{WCbr{+4~%{cJbbT^}m z`JL`QH*!A@H5}vq4+Is|IzzLYYTXLwBxVN(945dM9%Ro|nk$!7MVyybNYrXer7kmR zGMSlul~PH=q!H)j%4#w`&+nF>g(YS`KF=7SIfkyN+RyFFn_jWK97Se};&e-*`Jikj z=j$plSL@-BE}Jmf6vHACn-pohO%1EPDx>~V@x@62hZcTuVn*vHBlzqy(g~_>s&d$! zCXFJqIV77ndMUZqT&1dY>9sKbrosjN)$98DKbN|g{d(oH^e?~s*P<5!8hn>sNS~MF z!7i#1jxRCEgN8PC5sTOtn5#%*j!BZ|S4MmF3FC2I*9%ZP9{RwWUABsFajC4P~=&bVZcJ+I$8{^^cFtrz+|@CoapFIw~Vx4Qe0{7@ob6z`#_Ng z44$i{vkS#D@}I_zJ^L!zm|Lzna}BYng`*!Z6AUXs6f{69xq?Aauw@Y

K$DA($;zM)EKQHOxYr)oCPu*+$|K=|R_M+!wV{1 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

V)OA z*~K5@AmEO1)Bqmwy~7DV2RN3yopFJp$Bnz^dy~%shie~q~4W6x@`#rShw97Sw%U*W!RFS`*e}|_fUgy!3 z@CW!4Jj*|0b2DHV(-qyK%S9XRDMACAWK(VQDI2umZz7<3Y3mGiHgqOrzFaanfEA_z z+!u2K*(jvJ(;z0P>>v^#*iP8sMs@=36@+sm1_ntZaM0F}gJEY@!WMd(3%RruFg~~QuWg}z8 zw#fuCjPy|U1*4))H}mmCs0jdj#$JcYh|J>7JQL&6c}Y9`$ke<4JlRJ@}>YhNPveO1JYpk{P+s19j zY^=@K@&e7$Tq6a@Am&RZrhlQM0}b!>oE#(>866#ygB`U=WX%^E*|u^bajx|sewvMgqSMWCCWG&+3C zp5>1wA8(~WPFhWEYTmSh0?llmz5E`Psm)xrdc(|HlKrc3H^*&FcX;ow-aTjA{QH;O zx$NPlhrN$4t257=Mw>>xZ&cn`GQRrQ>JzI^tycW1yDU{*t>M+Cr}@RLH3fL+*2rQ7 z_&R0WQpsu&&4S=`x&(eG0p$etrO8O{CGcZ(S!#IHMOm!F0J9XEHz#_^};;V?%S9gP9jIOs07bDe);8e5@_c4xu5) z7(Qg~>~a+3aM%7Z)Q z2-T0@;ytW#4Z5aO5=Oqw)bRM4#`^{}!qjX{tf9TN{k6FoQNnJGux~hkzjOBuaB9-$@4g|p|4Zx9dgAd~-=W8l5Sxs>h6k7Vi@&xd z!d~(N5Q&j{jLp+0?eG%=XrQCUj572ngCHn@X5gz-Qr)D)S7qSi0lq`!I6NbB>-9H0 zkM5>2h(G)oOsNni47QD?FObS&ar&%SoN}TCi%!~~De)``1z!{wn}g7Ww_r#b5Ft?` zWQ&*<;dp#79+i&1mibAB#^ciTdy7CnfEME?25y;d&DJ!RbGel25BJo2H}6=rE>};c z;xcmQjn0m)j_wY|Gnn6!uNdw5?Z(z5O0G^Psm=8fow^DQ=+qVNfh09r9!XNy7PsnX zt-L;owwXJUX#0-Tssuhfv6>q07}C+^p?Z%^uhD^}=IT$PtE<-}sq3t3bZT9EP14E# z+2ZvzcbBg`-cAyOg3rutiyKY?O zbF4@?8Ygj;;M4GAvrQAynVTX1mQ(pU(e1tDEVP`xk|ZMatbB!E*SB7O`oNz|yi^P_ z9ycQt@9I1CwY3{cTBeqqeD#X)y|;bkgYP`F*(cT6UERe7iVp2w+dVpb^SZ93-&Sj@ zcAq@@t*-7T|2w+c`oh?wr);;!8&`R^XXE6|u}HoVk#yF@xV?eNYo~7c{Ep5ZSvIcn z-lBDA*&FFcK7H@gJFc3(ckcSDKKxAAPNSB)a^J@8Sj>fC3>Cm5_y5MWY!7{M#mJrN zvq3$Gyu_1XnwN9%S|&6<8N6oD^JMUl68lyTLRXOUFqUi3kk542%`(ck{C;{{hFl|4 zmf;#@h{lChTzQ|k0L!hOj4S7Cfj|awy)wc!=pc`QKnQOJ-U@g#scs;q)QMlP-b0yE zs^kK%V6_UCFo~~+i5tfnCQw{F^>U|ps_3+w#^&*<6_)YN?hthRI@#k-G`sOd;gXWc z6L7#2K)@5wz&AaIq^apkl>2&7hBRkLbA~i$@Y9?pIt^ETeH7lnl@E`@d*yOpZxd4x zNYSjH1}KT2!tpkeM4d2iQSGza>wMn?wgv=4$j|i6_PGxAE%cq~V~QR$+BeZR2~Bn% z(mB~mOY@9iOKoKb{5KK%C7Q6@7MQ{^nFf( z0KnBN69p_nBy^*>PDc|uMAW34^B9SI(yb&B%c*P%z(dpXNL=-h(}Y;V`1j>qsdC2y=~xm=j<+s<6!n9yJ^_v0OldzX)DqxW9wUni&>9-LAnWk`T@jzETZ zeKI8YBNLVxFCNv%_~M1YNkYX1OPDZo=P$l`4372&@U(ft7}>s#2b$C4;+x}5Z;~^Ub{cmetjCM6 zK*w^w3FxH9WXK+_b9D3OW@T{Dsn|+yuV20{>xYOZs*%dv;v9s~Lzj=D#v@_Y%>^RD74o&1HbF;Yv zx$`-QsS2Y zS^OvsifZ$-;SfLTMcxMBf+K6{P}ssiow?ob4=910Y!@3cnfL2i)jcbtQ5nJNdb9EY z`Mm6wk7SSh4e2~&xh1kX9xffojnM$)gIZqV1~o|sQ;t*q1m)p6j@$SqSScJKT_W5B z(*x?_N3#+yOMg$#@(MUu`mOfWtJ~ZAS3jt93@)u%Q%QK)w3;jgQN;Z?ywTs@zIrKh zLEqlM;;!~@LpS|ZNmqp2Bt>7mWobRy@7|AP+d}78j2*s0n3#QG4SwbKj)KxBm8KB? zv?avixx;u1LpSI&`BaOJ;|Q#3fm3#Vw5$1*{x{RJD`qXjFLcvYmT zi>JX4D!zWYDZIsEOMHtjV{7f$S5)LtP!WEQf!=zccm%6dyEs~$Ej|-`CUv0b(eaC! zA|v9KGet(_3Z_12rVDEocqGrZuvbPr`_{;NSVlw=O*b&$^u|M;(}|-*Di^26AemfqZI4i~xk!?eg(8^_3MnHg zXi1a~CIFwImc@pL9&EBDj>cl5<(cO?j@cBlSTQlro)dWCGbNbdxy9#InkyLiQOLnX^FueW0SXuJVC`SIv}OT ztZ1kSPe?YEjE4Z03c(+h7zkpeg;OdmoKgYZ3>TSIW?mNFq2Cb}rC)`(0ck)U(E9X&#(H6zzf<6l#jUz4EABu$gtx@si0)0&M(rizzb7L@rPAoTgsTXw0z7pZ4{6I2xOf1ww}}FxrBFC5Dw>*B zDi|u6Z9MHw^MI7hY>!zTtfza{QdP=_byQB*B08dV4P(<9q9X{=kQhY^BbP}FyeP_i zFGa=Y(K&lq_J7~!<2_jV6-DNKHUEsCKJQ0o{6F>6ll}#me~ZWGWF)Iv12r(TqH@(L zRS_$PNa(bCw1Q?TvlY5B(bt$qcR!o?`X3WDFf|Qv78u=LElxuo4Dd^iPp!zu1dGq~ zEAYr*`eDHl`}+xDFWAb65p-6fX~@kn#R+h9QYOQDr&t!avD4F2Fg-WjB*{`!l#}N` z#N8%>tun2E?Mu9+Y%F*MfspQw_!>Saq=w)WUZ()c%VDX3R*>eJR9YVrb;iWso1gbO zsWfgPN0yM{ST;~EyYJrIR?8_@F0IKY3QIp%DkDpk_1UOT2y~8qJ&yl zFOH!O!FmzD2eD1RC($;DXdC1Q1EI-^_yw_z{4F@=2hc}I5%U*+{2bv)xKCoW!a)Xe zDh!#%!pjT^h$DHk*tzT$b@0(C@Qkjocg!$BY!Nca2LuU&%==f}WA$~s2#EBDfeK(Z$s>bSW6h9K!-7^|Tc6>BG5uc3D z#t+~FS-+KLhuV;p_L$igWdh$4>)|Ps3;3Itai~-E)!nmxH0nna{z?C=|A7Cz-|asV zTLGaQ!(*WT5@;GnQ^YSxFw@Z}9 z_y>dA`%(l5G4@j%2*@WRlc&ZUq;|Nt6(du8j9AcP#OocG$d4{<8?Lp+kQ)5d@WVoj zEx@l|E0Uv%9lh&YN3CxiwVq_Gf}_?CZWtuT4H6L=BqB689Dz?8Zk;#W8ncF57r>R@ z+X@^z%)@1di{$hoIlb6Rn0(OCOA;0K0t1gk_Vp&=!o9?>heLa5@;*tB)hm%}NaPw4 z(59Sg=(XmI_Djw+^ma1aJ%8~>whs=~>E`<%V(En$@R(BVT(=R_fWBetHXDwqZbMtP z?cKI-8?$Y@XG4c=@EH z-Ac>z^oK{=daZN^uGqe|VJp31s7^&iza&y_0ql278}_ym>V9}Mn*^InUUEMni>&D=nFe=0xKEx( zyB{Kuc$xR~9{3v0Iz|80fQ=!X2LBC^|085jY{k@2%U+0+a2)x2?K= z>C@Zwn3l`M#jG@n{%o>h*Ejl#OPh&90}pc7;|tts3e`M z5fsuv?8%PK04x&%X+GN=&!g?l3As*IEjj$dYSqc*Nmz)D%R%}Its|Zyi;#<#%}Lrf zR%2u~gv>W|kUF`64(Iwpjw7QnNAwFvbPX3HG@KY|igC~si`BcS6ge_Q8dBuV6nRj> z)M+Uh3sevsVOjO=Kh*7rQSz#~-CpPFpfzgs(fUMvvOZgPmtDvv^%?x?P~CH=ex^`^TPjYkIYn+P%7i7ZfO6A%$Yt)*6%*!*@taZp@C`+_xk~qwZ)r2+C?YJR} zf4CbmBrA-^WhhKMiQFF9t+qP9vm^q<8l!2)3)#sEJgv@ievDITwoME$IfEn`6!;uZ z7M#E2i2VP$Az^8Q6^)mmMi<)rA3nc%j~)y9I<8t;9k#o8*Wk!qpY{cz>qgdh2wJP> zF21yRd;k4Q_w3LV;(!#kpt~NJ`s`9_JeIVn<|Z$iZmL!*lv=87AfPc$fJ1a_#Bj(6n}-Np;=!*ME{ zoB%0QT@fOq5x+<-r zcwOiW>_=S_u1VLd>yXRiItPn@4cPuUY@RJMMS$fFPVM66Lxt-$9~!;p`osS8ro)CHNu%XK*G z?e)ZAzC99Z&SufnnFnwG^lSTGyZ4h1eE+)o?N`lx_NE7K-M}1t`jLb8eK_;AKmXeY ze|Oj5z|;4?vh?Ev|M1@DCMf#i@0Ny`=dmoBRD-^5g)CaDNpwjk-wp*#wZLpsSfO;r z3KOj!)=6-Q4)aDW+(Y~P@NY)d=3P)lLwh4{e%2!kmiQCNxVUPOmaP3 zLaR#yt2dW!DBULAR=R_`N4lrI?%qd=dY z$snK|J5*zLW?~hP&xyH3f~FkaIVf20SI3wA)l3l9x9N8lBB|Ed0B3aP{rQ?vXFGLN z4d7juw?{`EzKZ^lg-FOuFsR*U5$ow8ymJp5tjx1Ne{N6E7gwBg(n_$I{KFxkGe%c* zd3k6ew`L1Ob;VXp`M4bw3~51{V2eg-e#8DPfA+DdM<>5I)Kln;H#RTnO0OA?irKVm zpl)yQQ`haj@|us?J8RV()0lq!o}2dk=?@m4+7}hdOYhv+l{O3%^L6ZIZXT=2!F@~L z+?!ps^XgBW_~)ss+ zdNgx=`>x_%@n-er%-;6<#VK`PdMdN8_>lS+#jgloQooY^Qs%GQpDsQV`?~tA%ypw3tDN`Z2ANevXIu8tZE^6 ztgMleS=JLwBq&V_f|yn*4b38Y0?nXo#IR|v;*@w`qI!gy!IvN|#&K;~`v%z?u`HQiSP z8hddpaWus`&V{3U*r1#xS@dN#WX*H2BYQ&2@jaKj9GXjPG#R}Vu^D<9skIm;IMbQi z<*uQn&TwBUBH!@nricCsMgE~NkzZB+6La^#)0SI^pQg22 zE4;(vDZ=C%Uq-zNdoMOqg-*ItuxVTPtc$hV(XMu+ffglp@xxiu)Ccovb1lXD+NFpt zB9}Y^Gd`jp`NtTBVzK4B%Y$qW@>H~T)J{n`P1AHVqtEIzrHj}SUeM3zZhgY~`f@y- zW6MsTotkbYx13%amzsGXs1*}{(-@IrwRj{ZD@4p>zTltd!q48$6dV)O$;^(TJ*~Kh zmNgk)p8LMcFFJh3J-r*dbJ-oyP_$eN2d=tuskpvP;oX6(s+l~BG6!FMbxq0aSr@Tx zT-r2jVu+cG5j*jg16L%SnVH=e&(c4{GS%U_ZG}vkT|}n3Y(S7SBD33w%x)tgp>n1l z+Rcp6QfUGV=AH1q(7|%1ka2~IZgh_u?QtWwQAG%~v&vm*bW0kg4P8YO>ZD4mxLXaJ z8Xw0vt%^%rj6>i7h!Mu7r+;u-{DCu?FH2BoMld;7dn_HQxasx|*13!l+U!QRyYF+; zZlj%Dn?}3S|1M3ZjgSw)9sb%@L81hqt5fBI#5OZSP?%;{XLHm(<&>v@?L7{gcjWFEmgZFa2@(fzp1opWe^RL}A_PndD>T{gnXZ z)Z-bi-;?A^ue5zP%O#muB$SM$6f04B!utgOl>UY67jnK(F;FNCm9}*4>bl#yyYz7I zne4%?x0$z+ev9i!Qzz*((omHw>R3ENovh3w)t1`jv~n_$Ry7rgs*b-ocvCqUgE!kk zp zZ=jnhIt$4s3znvfl84o#OcHr4E=j?1nG{=aCsAv#0E-f`8+^dNFTO8*P;iZpp=pxF zZl|rxp*ebvne#mvn2pY=vx(W{6K!A4&XxTn1;P}GlGVRLii&>jglUMbI#j>fDaQIj2OV56Mzexw?hH^IRShO-eiev9}SAV z{0})%vSSH5K+_dfja52Wg>QGyvu_>U)6Ry{xUypGY$fb-QuQsb7ad<-8XOiYle$`A zhdFa)nm&3qlfUa@>$mILuFrq(4LRoQUMS08vH&8uj`=N`YNvF^s%RgE1}e;pTsuwp{w;{T%iUEiS+bYUgy zJ!OZm=1UP0gwIc$QT}Kcxx=IyCPQSn#i0wgm=R(42Ax!EKCUFhA}*l2Q^Z#A72npi>Jn0+!ZVg zi4#-+-@u^1u?y{@>4DS}(i6&y(HCR$%G(M%mqL%JXp4VKV3&Va;5V|{BS&RZW@1rU zQ5gigNa6ruqP6DTGBuh;9)BHfI`&%hCj{+%Jd*f6<%8MSl8%SvN;P#TMW-l)TrPJm zG8#rRVFbyH4}}-PXTm=Xd%_dRZ#~vBYA!gT?Bnl^11a}Ch-klX)|p?$Z=FRFtfCA! z(OG*7td(gnR*oeQ)@{f|a3Asr9Es}|nzBo{rq1eG(X2#pU2hjbeR*KG_mD+phhBfZ ztB|=;GP5&lD?8i&viFX1+;V+q>A$YO@ONWZT7{c$>DqM*{YRPDtsC1z0jO}X<{-x-L#_5I{X`5B?qb@GSd@k31+BeZ{x~)gh&?3 zwan|FYlYVV*J!JmkUi1bH9t^JPe|VURimNqQ#H9C{785TRIx z6g3wLjfQ8#^bFn|3NucwZAU<{c;;W)cR5zXLmk8*lKdrNGr=OsiQZU7i$M2DBn2rc zs7Xqc5@IUZT6BiwHU}V?Bl#1L@4-eR?+d2pIsXxCVLMcxE(c4l2rF!fD~6A3J<}9o z31;J&TZBwZGlNUNEPwj`bt6-yWbZ~aI5trH)aJ(Z%oi{GaE=5MzBF^y*ym=@6N8-z zWL$V^X0&IRX0Prgndl@e%Zpf+b@~@8Gtqe|HRK^{c1w8E@kTR0J4^vtX7Sv)fhr!E zs+ata9Ww7ta9(d)2A}7P5Z8Jn?2(9VD}_8XX~7ypClwv8bGmrxzeAj_zIj?Cv8%Q> zbREA_zCmFWvN%J%4MxM8qVMfUnj3q zHmSFAU*Vqc{(JSw#9Z5dqMqTt=KZSjRrQ&~x4GxM$M|FNapigSg~USJ59Rmy_vH`N z@|+j75q9E4Hz|u9PMNlxa>E9vG)W}Q-!NNL+jvRi1opPEL~^rZWK{WI=|r2TE) zRa`gUEjJP`dloYPsG!^2dH0~`A+a<56=(3{JoV+^; zRn2)hT;o`e+vVagGz^C@e4{+7;*;kQ9`JVYNaS<;9Dj`e0q^D?@FqamMcY$7z@6Y; z#l8FiuX3jfDN%IFi|1dzfO4#@K9R&sA2$E7#t148FdFVdN$K?;{*rO`R7EcbvvYxqXWd6}zbZMAP0fCl&!nXwT>{r= zkn-kb&Q&lpkKln0F)&cAI@#P>soYww&^#Ww*AfP9k{Cf`FB9hq=j`RY*F_b`#qTMh z5_PA64BwpvRPZ@hFO|xfOr_k!aU^xz_yEw2$%i=vE%N;*4u?pppyWV3W@58hGEBX) zt8%M%vht4cPT{x4Zwr1n;7GVmj(a7cb!RFSYj;mdQM5!>tho4mDqqSs^4sFyh<`)= zMxOH-y}4d<3pI>J*iGDq+YOXnv*= zf5iK6{E<8p@Q$Io#JeOH?mhS?H4GlHxc`W8DJ|;ROj@U`QkoL@U|P_WbXvpR?^&Ro z&R=}Mwq+xyb1dg&b5WTZrMybe;?UP^paIMp^E0q6COUW2`+!;Hp2rG-!%&XbsREiQoQG9cF`B@q77nn) z4Lxe18CZ8!v~U#x_IF%Hq)k>S^zhxxBSq#6?bh(XkAdbHW09j%z6nZe`0KoOKd%PCCm^k?djMDa48ev`QY9p8`_~ z0`dj%E(!8W#olTGq6kL2x#y==mRynO`r?K%lL21q_~ zY+}i;s-^LaZAda2byrn)tGoXDum0;VuRq!RCH(SKpVNZ##W`8gW^euq{-G4;5(rr~ z@4EDJVo~!9Ni52nu|)C!K>h?tq#mk1&uTS=X}%DqQULv&f=9PfT`bXqgJeNU;M#&o zQQA2sn;luv&NDe>T|mQQ=3|y)+*Ej~@T&1u=f6k(J#S#rVOlmyrv3D7#vkW&-b$KT zSEAB2O^vN_J>gokT*y=w8JDxmxe;Mecu90|p zk8@w*&xHkxhG7|wN%~no=TFAym{Y0HY-OckU1_{B8_g=A=RVj2dvHf?SD=y(7kHWi zY1{`P?emq>=}LK404ho+cP5sA-)wJjpZ+3@c-iT2L<)r>Z8Vwk$gt7rT;W2okT1&C zV-AIbToD<@4wLV&Yg~YWBJUB8h=h1dgrZAMr_1@&uVS%CejGvka1j7=4; zD;8ywBNEBvO}2dAgs{&WOwN2nb{Tt=Fi(@Fg0ASrLN#eH46bCn(CbGyQPLP8$VlKg ztohTa06t2kU@9dDKH7wg-skr?pd&4xg_e^67j)sDFtNqD>npDRaJ}oIa0Ax+u5&~Q z0#f)anOy#z8U0;wRyLZm{sgJ0|%>` zz>Nep+Elm9`aZcTA#W`oR`_4A7aJJr7gf+(%MGQ0T3EHp-u(+y(&^bgOW%}*?K?a@ zjd#=fX&u_>QL7pk+fWlC&4$Ao5m(YU>h*VL3}q)CSwZEu@Je8I>|z_dT+Lkfur(gH zq6)9(taMsx8vL$Vhf~XzaH)dL9<+}|8T@PSo@UB&fWgKE&OoWdqJSyqaCR~?I$%~? z@Q6$}fWI7SbN+by>psVi#X}_X+kX$xR_ImxwErQPhuwV z3-qZe=Nq#Eup@T_Ljw409C0WIbI9%lTJaFR2V=A40Vw3Jm|Q<>Od~&6l{D?w9$#S> zPptVm@Lc{Ka9w^ExRIKn*-rT2QwBT_*OK^5jOZ$)9otIxYVOw(27|_`cj?`Rgv}i` zNLI-mPV~T%wdfhOP8ufZU9KJOt)9u`o%)0HLDwDb1D-pRAEQ6!dJH^fc+~w!;v9In z@FT5=ETTjr8IRLY^(b7}4N2xYZb(=kaJk)?IBi2GBohhM0ZGKsC2_ZbqV-9%cOg4R zFLqp!h?+G6J#9o0%RZ*ybh=&GR`DF8;hXfk_yzY~`W>3257!LK4Vw(4;jkW0;_)S3 zW$WJf9FB< z9<=l3<6tMf8@7{8o8VLSR4Vx9c}}MfC16~R@&;Gy!P2ug^e*Yn1j|uc7?lQEXPBUi zb>30<6sRlZYMpI)6&Ikq*gF*QZF;Q4kbq+ z>2#0`VbPctYv5fPIIh{OAv772c9?+&7`Tbq!w^h{ph2yPgtEG6=acLtUp9c>uKEQyHMjAsL7a3T6PlynG7Uo<{VK47C;fz zdXj|c*l>?((G28HRp0C=`^K{ML`x#ERMj(<%P-drNUM+;v{3_@ z%&5TBaZPgI`4+FAc9f~84HtiK+E%9aT5<8=)7CP@+i~%&({@y3)Z(@2jDecA)@U@@ z?Sx6A4qlqH1fwqfPSDrpRqG_IMKmUM2kmMS+fp~V!FcHh#OBs3Tl%^@R8&iX=HI|& zyB0fHBXqTXB9U>Im>X-!mtGN*ft`Q=L*!2KLz&TZafW~h!GUT%8Z)96eqoi*BMXcail`N%~<@Fdn}{{w;8C)vo>gRA#DKnI=L7+H{zz65ad|G^UWH+HB7c6~oHzOX zo8icsCA7h8PFiFAW8Fi$?rMLBpW((7w%q%#ta@&`~ z;mU@p*J5FN6WN9PSMK`q<;$}Wf+Uy*fciUtV1ZNY695u%G6s+jf%)xQm|w_uv^BFn*GCdAwhPaS#OGgZ-eL47u5unGU1X?VYmQXtEfsZZ2B&$16iOuk9tbEB(cA(a$hC zLtiTA4ey({eM=p{)>D`Ng?LIciJ;tG@6N)LYsg9BPT~pjcZ8NaOKdzzKqL7zG6Dec z4$f?R0{)nKfv6A`^t=dl?d6}_4@ekE{D5ji1@c^or!K8sOMXc+`TH9+UqJA2A=ve6 zJ^||Rm#PMy9mas36EUp=zd6@2UXysmIZ-E$7>ZJ#i2TD&WPnI4Ze7^Kz>0*hV?A|=MckpMWpLPFt=?~qy@j)2S zGckdVgyd5~;Alt_6ATg2c}nmf6=QO#$4O?HQcv&l0xX;*hwJ8EIR)(F$TY}A@#5Gc z^;9$#1=@h0Hqco`!!i6=>;&u?w2XtW~5}u{l@D+*;yS<(FeZOi`tXrj6w;M4pp`Jmg)9eYAVhPUN zo@T9Gi3+c&6lszjV?rPj zB2EdqqoO+|_#+}`P9~fr!MnrJxHA<$3nTS>>H=>EU>qypLWE-xIqG$EG%UG}yPtIv zZa4bDQl5}3d(6kog!z+&VvALPo34h{rqk_fGpCFZzDo1uv%?UAg{`0b%hY;C=tIy z>7GY%RRS4iDs|4~|L3?X;W}Eooiwzz3kybDhG==@x#x5fr`GMb@u8@_Jk%-=iZ(tV zrw>#@PMI~43!BgG9ttCptACtWv*dq$WB=ILA4b-73s90^7hT#wd=r^@Puhf@_&3*K zY8z@zlOF=#MO3GNe^4cG|K~iPOFyZcRlckIRM8%?+~$11a=(+}UET#{@BXRO=s>0a)_IvE49cvoKmC4Rm#aPY!rh%hH zFXC_v^gkQ^+R?ypU&C{T2U6T>HL0Uls8#7`o~sp4N8@Tfp#8(!YqZf!I~o>{?)slk>aWCy`sge*H;snk=u}7 z#u`@5-$6bL9I$szgVeJ&bq1wf-8yV`hfbr{^Ln3lrC!H7JF_T>dG9Xg&!zm$wR0(X z=T*rpfRaye`PvW9v+Ws`Cm-gannA*q%N6$W&+_l`WPl&%i8|VB<{#!MzLUj*?_{yy zJ6SB$t7MnEFgM3?OteSL12(}vY}Pq|PMu|GhLSqH(uFfrsM9MSHoa>i@El9Rbi&!0 zU5NwXXWB0uYkk)8)mbTUQVKl7(sRn8`_mIFuVek zfI0GPg61g>JpVL4ED>!U<1dBoVM9T`_hVnC=Yc!re zeT~NR`{SA|bJsxdLD&3f?mnRP0vwsUM*nAAqX)lzK|k*r_RqM61@FATwy$Bq4zP|| zPb~vFz#uu{2N5JIxU*-1bnx?b#nLk#KeX*ci!F8xA#Caxp|wk zWT8nvT&I8@eY^pwFDXgMK5~t>kg>5W?_D-_`~Lkm?id;T$e~j1)|;%36{`qsrMe1z zLL1i!?sbQ5TDR_|L*$MSZHcGT;m{7Cym7v)oPSxJzpp3?`!aq>kA#E5p2x-cU-dkw zwD;_V_W9SGeBJp70yZ&JEaY>M&c3U&cXsx($931#uiamJT<5sDE?@Kev-cxk$rK8i zPvgyR^Vxh>!lhPs4*h*OpUvip6?ofp;|Aj1E9W+!$rN%q31$n0Ec^~W*xG=%zr|;N z8kfjN&?bXwt=IDT?3<_pA4P>#_}A`28~F8{Qfw|nrO#wC1tQQnsii}OxA0~Er;sV6 zQ2|jB&iC>WBn$oE7L^ChUZL(A7IeS}eIy=%tov!MVB{#q7Xgyp9t^Z|vMtwd((ln< z)>C=~2@x#oW{|J(!|4Rrw6Ve0mj2p}P2ST+BjwjooSJTgY7cgFRzbLuYpt{7!Q4v5 z?a5OgS+?xi1*o3*+9R|XfWkfagwlq=io8Brx?nc4YA}6$%k=9kxFOY;=I2s z){KLfFOtW}cR&}S_XG81Yr^omGW>23t_i@^-ko0JJ0AEQCtU5==^#F4g@>&0qb7LJ z1gG@yc0HUT;B5rdY!P8btc&9!DT*;yd!Ry~jW%$Wd>hox*AQ(s&Z}8~5!E%W`GYyU z=B$MfLusN|s1nYQ1=aBil~q(v6Y!T?zOb*_v-|PM8;|d=E;{(x)eH74jrm9SEL*Z? zp_p8{i+pGN!E-ll``Rbhjz9Q~J%_*fmqWL7?|N*@!cX3|XmH+Hma(R#f`6WI1RG_KqtPwx_^_6mr6BfT&+5H55{wwQ1C|X&jQG{Lkk3X=|B1 zpF;>x5)fLu)e z06hhN`FpL8qn0(7-y)yWOcGk`9V0vpwQeR)BWf^#!Mb;pm?9n}&JYyw81)1KGbGW+ zVxo;knmR|~2?Qqc?dM1W*(kNV3i0!*nWi8(pT}W-b{K&{L?XIK7kRoB-vz(Wszyfo z^Id`4$yd$4|64!xG$N7^3oH2PZbHv;r)CnVXV2TXenaaa@(GGVPwNGs^(1Q9iOzUM zJ)_Hq&lpFvy93pAz;<~vz%5BcM^CB!v8(lE=!zTED;$5o^#D5lRrR=2J$@rPeo(Un zn*?h8DtMrJ2uXpv)Z^|~as6&|`~mg2M?HQ6I{t)O_p0?yhBs7S0y7?o_F(eo?9$sq19F zzd@Uof(85%#2U)cW6M{`!^2?f^5wKuMz^RnU&<+YF0UZ3rZ(N2o}R8v;~i9{fA}KX zoPG&20BU$0r*V5x9rn*-hG<|HZN7+6%`n8xb~Pe#9!CeSs$mbgN~yeJuacTjnrdGa z#3HI&tEKKrt*l4Pc9+Q>@Ol_`k1tblYo31EnO>M{Hk18fuC<*Jdy}nTqCafC_g+)5 zXZ2kxa_dK8UFF3aThF_~p`euX7OQ>({4Ak2o0x#+K|awhS$%e+i5H!6D7mnaePU7b zuSb_kT3I$m77q|Rn}6Lm7Gq@D6kS{+b}mwG*}ZK^+7amvP`>`G|L4w7B;-slpDcfL zeXx*-*bT6a8|`7uLkKg6z(3Z9?-=>SF1Ty!){$Cm*+?v=^cOwSfstb-XwqmRK}lJz zz>ES%lo4gs-OENlEUg+}vv$?0kz!_Tz;i%5zO*kEuBljB7VW2RkvDDxcWm9UL*K^I z%z1<*6-{mQsCdd>izvi8jRxC%DX$=GP2)E84*PyfYIxkPYhO{UR!N#D z6s5cl3}=Sn#PG!MwgVe?Y}>F>ly+|0xPEc9cNs>le?$Kg+9%(7YdY5Da6l?uEapve z8f=?bklAUKw4jaL+Dtx=49whhD2JF6UuyFq#x*vq^mV)k_JmHQ(;gxUyW!+>Ro-uQjBWyQ!t{pI&FcZ z$5`HUc)>Ufn)Gux=~=U&R91$QcGBYWEc(N$>Y@lnGo-^~1H`W8qqVV!5!X$L6{FW- zx%(XFYp#Io!GYj^)HXc4#;HjxB@>2L_mcLZ%x`XqU*teITB~uTvAW^8%}7kkv4QZ5y=3EP0ja#D+tIeI2VaWRh|7>@gMo zj{Fs?CwL9F&GFYP$F?P`PGwkxLh|Y2ru)Xz!zqWwA+ShfhTPepGvqYsJ^4iIXL@%w zp6D>u)KuU8zui%vTo^$t=@TTkubOuk(h}{4{d~Dnw3E+V+Hu>LKU}u@M5{I6G!rHl zpWw>7))G&z*`6~upN=mnhh|x4(S6^zyI1NS@QNveD=o*PnC*tomXMvH#d5JVqWJ}a z>uulxaJ)XQ2TLSw>R>v}84Ub=+&zS84-g>VT^oUY0 z$brm4@P!J)M6a znaEzj0-iyoGD;pF#*Ff3i@5v;$xeid{2xOsyhb*X&-_{P?(hdm&??_kDcKXnP4^?@ zC+Co_gq&gr`T6TbB{}wI%D)egs0g=zltkdF>*XeatW!YoQeGNQkQvUipB3u;XZcCGOaFGbhjQa8uWHSFu>gBC8!IH)Jfl^6Y0DQ z`86bMw{mge$Ps6dwRsqw1b4&TSOYoG=HujR$U+?eE5PRGKe`mUSJ=;yInWJ4WUela zb)%1VVqk@&MNXK4D9? zL1S)sq>IgV_awc6c%1h1EZj7>pQ-qCkxU`!^(0Egw1tn@oQtECiEcMnzIm-D%SbL| zFiu3W!%3UyQ~LV4yLy+TofJh{_;7JFt&C=U8m7ynA-a%! zt}GPoOBQz%1eW!SE?=YwM29u7w=S+xV0YJO7qL@;)mjbs0|6LBPW!->1$_qCvk0R0 zuTY8+a+?W+&1T=C$!T}!uzc)?0*D2`(&k$9vlo=iGC34yKM{=}|L4{aX|Gts;~ z5>2{nY-PbnMH;*Rg+2SeeQZULp-no1Vgg>wrFiAt^@z57pa5>Hdmc=|N(z>fA4?LI z2s~V7U0%cp(08{P8#yk2^{}t{^!CQRW1OE-12B0P~3qDl>1Wb6FcR zb0ZY9ZUd&H`EEZ{p+L2X2puN69(n!Y5jH+r>c8{gUA5N6WRKs(ils2D&{9HidM6qi z7b`=zJ-(5NMrE3OZTY=VHNrPeZjU3@rX))sA0`f_dICoA(ygRULo(so=KI%7{^Nlv zBuR*x>vcxb}j+5|eJOK$xQmT}XrVPB4lB|-I7vwMl8K|dap4Uf( zFs+yKS30XM#?+>S4naVrIn8$Zj))2HW31nSklt=PhyQ1nLl?HV4VM69; zNs}2`8v3{YQK|bVY}x38gXJ@%Jr!G#n;7kLOTA4)2K86x&L_y%-WpyM(zXtHl0ClG zBT_l$Xq^!f9+NpSK73j7D`hwFA>1mW-eZX}gnFL>>*^7Ug=5(i2tf2FD~W(C=$(>m z0T!S$$WGSD3OYFEdwy518t(~`LlMdr zA1SpyA1z1hlq3C(6%_A)lsLpb~vb+WrL-HAHj0AkXWPdJ_EK0qClms#(_yt8+E*uk%3))(z@UMbK z5aeRcpcQllL)m`)JbV98M{-jh77zq2@k-@ZE6uS~5 z`R4yEE{JiGr1ka|p}!d$R1mSamBAPxV^R`DM|wf}Eew?i+RPxRctEsn@-TKuha?bd z#>vNKPI(9c%#B}Sefc`-N$~n7Rr>>HS{0?oXP`XgB7Ct}_D}|2k0ROQ)hIC(=u>HG_6e*Sq_IRY2r$^GkAtfhd zhf!ziw99H_f|9_6IwXY*wl-1a)Px@MND46{_|}w0wb63eWNRQ1%jKu^$ZVqyPXnxH zu%(6vnJJwPDHnBgqlC#X0^dgnwGjwAgStg3z^9AV8+HsFf+gq`MvSB+`7C-1>)_z}*2`jF zl9wc}((5ONguaX*ipF4nzV!|SbU>6Di`77i9eO0cf*>3M#X8r;S*>mKpQ%YX!% zAQE9KBMO`wdL)kadA(WQ<)X3z(blzyDAZs&E?=8|B{$7pQpZIa&0Jgl<}NfEvjmby zLWg~+fs>!0BiW3Bcpsr7LiD+w8sIu)+{8-=ec7UmqFN_{trHX*sb^YK z-MtFz6&uQijzE21~IAlm$|$WYEJNx|+#F=F+lbELQVRG}`K5Cx>WJp|pirtDSW z*M;Es5Q1L>e6GI5z+@f;@GkHmAl3pHFw&f-97OzRbF|sAwN^HwWa)N1DlG3o1rG?j>0%=PNrL?SJ zDHKW`P+k(+!YjNk%zFbvO9o1(rR}td&HU%wD_Kqg?d$h-UOVHQSUT&!pZ}cy+#`v~ zCxUzV9U>wx?De<23|YMCN1oji$0k-!kfRD{JaH8t@=Q$VS8;fZHp~sn#%Tj9T^+K} zpI4Z-)S?7aZ`WB?12S`{Ztd#ec?MwxTUAvG!U>{xIA1F<2HdBAED*2$5TD<`@>|>G zqGv7DMPduyh2m8^0IRkR_Tq_FPr%*frn?;|=s*ojH$w-?y2|JsnmG-t4OdfEm6ahs(D7|+p4I9rg4!dL(N-XH+C(G}Bwsf8&KVohi3v^i zsD;Gw!T`5?^YM*R*t7NHk1Q@d_VKOTKK{spH@P%B;CV)%wsq|3>)R8ysRbgfqhqGK zEfRK>wg|o3iZ*}*?Y@Cab z1u3uuE5vcz9;L*JC+DENf1oRFYTG zG*r7~)T5Wo>G+={;|5rz!bIU;M)ncg!PdgXdHi`h{|}!ro&69N?+ESIO1G$P{VWfb zYcVWF=nNARGWV`McKrpHkGP9Oy@wuIxahGfd&avw#O1vz3QbWuI}6ZiO2U`{A^fnDbwYL2HiR#{o)7PA4CB{6Y=C>>XWV7 zYZ}otLF5D%Wvy{)YigXxXT=ioG}qSF9IQe6YS4u>C{%-Lyv@y8uR`pzYRd|=zB-%3 ziJW-|DZ*{GQj>u!<~6k@g}lH-DY(U4^)`tK)z~#ptXr&y{Kxv7zSAD%liBNI1lQpik6;`u#Mw8Q^G}iZd4D~AXJdT9ceiv*pimX?}?FSra(19u(h;pbLw8IhfTo*(WLDUr77Nmn^Vq1G}Z+AO3VUMlM zZfDAH41>j+iDD+mryPj=sta>V6W|{qpgB&;2jmTNE?eN^hp{m(O1xPEghn170u8zT_CZlij??-!-$F{HqQC39{m{? z4jfxO_8OMkaj%MhUk~v&>@dQ7|U;z zxY)veW{ksyw)iO#w^jaVV{3U{VR6L;(P_tzUX7ztg#G@ajW?(N#5D=d}7&tNk9UVBu^r-mKn8W5^0&SqQYn_D^;r{QhlkURLbg0 zwR-r&FJ+}NV})LuhoowghTl*8=xbHf7sSOud`Y4w#b4srP|8k)rV=d z!BMW4mFO)NQ`2bus#ehHYbX=qD691SH}YV6NwrWfwtnnl1*)!QG#Zmtu2xfWm&?mC zcLp8~(7gc^44|g^ZS}OI9vzaRloaJjk+eP_Xt>k=u%G^nA6?={J$}^SM{(bZ?;4+= z$%popqjI0WP9|cmW)S`^L0ZnpnTA%1%C|POv@}S|>tsT$zh2f{Q>})@%1IS+;>tdM zCLbBZ-o)$4JbW%BTW#_$C(HLBJvk%e?2AYbpN;aCh207#PH-XQ&;*M!BhlN`#v+AW z{^oZbrPVg87F{kY)2k#3W!`Jw7r@q6UB)Pp7u>n4WbGyU+NrhQ*w&uX+ijI4AZ&rW zs8DM$tv-pKo@(u6L>3DzEz-%#&1U85Z_%pQP+?XU8P)l;#UfHy_qCp0r59Fj7F0L2 zSBSAD46sU?K@)vQ()t;PgKcT?7Z+2?PGtw%?KSz?ZpP#{OMT@gzbULxb|~e_4zo1o zU-p08FBk#YE0G^+S(9IDGWknNOeP4Rq+PXaH!G_!OU>7?=p!sv-Le$TND(VFORe3k zw!51J*KI~-bH_kmUw3y$Yb)DCZA|oP!7nUu5!e zPc-<$$n1j+teUHoM~{*hHD~MU-1dU?=7NF(HAEET*$B}g%Brk5u&y#Z1;iRY*5;pz zfDh4SA1ns~0;0{|Y3(MBP-!fgyI!GFh?PYpQna&Xl!Pa6*fDiMG_>}n6zhV0&mfS z#MK`6Zg4Jo)rkpGBjH_5u3+)psISjCEE5ZI&&TSxNpVDKHkarMp1;p%C@85YM9q3f zHOss$G=`ej^tCM(`P#3G%Na*Gb~yRk!eU49+Hag!Q^d*bCOon9=Aiu=$3dE}8t?n!HQNCCrp-N>aUxvmIk|7FNr82ElDg$BZ@Ck)f zf^1T0p)9jN9)thbL6DnsIaZ|xPLKQW1us;=pG|Pryet~Q4_D7e*N(;-%j9`41MLtHvQI!yHdvan#yaf^#Hw;hO%UW83u2Q4B@w|YxYI-zyJ(8%( zJ?4rUqe_hO4Rtjprx7GCtccyPvr27i8d>bzmKq6~mG)gX&lk4#_P08!LjygH3jh9C zJ5wL-=>|=#(D$O32;~r}6cras3nUbMprBY&gv3%xf+RrmeF#WCJ@NCS_~Hoita^{B zPIx`|Ajr3I_e?&JREfH6iV}P2+WqBK`g}<-EQVUqr&q5sRul-z%SCFY6g}wn%km9? zy^y|_-U`^A)cLK2Vo_e6<$zLIQd6CuuP-Sn0eN*iXsXW3qaf2-xF;V4^Lz4l<_lzC zF_ajIF>NM78$N%46~K#^0esib~#>G*)qrsvou~aIGyV_Yt zQ-?uY6X+OU2n+FkA^`SK416_HyILKF=F$VAiUSSJqJ{=hvp}`Q=`2t+H=||)r7EBx zN!>omj_i-29h4Mx+@}MM-T?zS&OiNA`;NoL*@t~BcTJpskgCaHr!vEiczy3ot|6~q z%C$U(x4*?!x4yz%uFH2wjQ+v%Y+VhO+4{yZQDtAczqYMXW!36k)vnSq)>`E37_An1 zM8&p%-QX-!7M7JO)rAc{o6gZ_>+jb#HL((QS7)_ctCtlQsWobyt=3T6=1{|Ykb_=( zfqyBbq`F#F3JOngsZf9pDCJ_I7^|~DnJ=R}XbYn8XX5eI-W~T*nDYs8E0(+M0Z0;C4+_7!j)}8%-@AsbfoO|QMiFgRumnvqKukVpxXdNq%fQI9H$m{C z-@o=fj83a=g+p3Rvn-#l>(OfU@%)bCLT?#m#ZKiE|KSgbO5!TjHvqg2uWS2J2CVDo zQqIWWmUC>wN+pf5_591pZKY8=$5vS$vWNV4;Jbx@e%Yj0m}U%>q#gfJH4S=ZLMr+i z^Z>WYA{ZrNSE8hFHzLj@z8JzF&(5qW(4VzcBRZ5L8#u@>NPaE`@0uaajdW)gi@3k} z7azwIjG1(} zGQldZS!q?<7QD2$cs9QZ^arF^c6Le^HyKJ3kxU%3$ItJfjoHk^sN%Hb@}LTgH|ek_ zDP6xmNr-*-!fFP4!L$+CMp*XO$_56gvKX%e|JaLqzlr#3NWWLtN8E<^bj4#d3@j=J z=Mt{04qCsrubhD|q-2g(MBI#itAIWE4PU8l#%!T_!0n~mQdC(jZlScw7p;Dq^1ZNk z-NNWZ*Q|9~W7DGg;s#rGgFS40sZC1v=X`w5dAr=a`{%&`giJRN zKc3`7A71=AYitcE)6@nW1<>M1f{qxb!Eb7px@5v*JjSE~4}`T-g?BiN{=5xRJSUR#TQ3?j4=`dkKt`?`|^Bg^@)$9$O38 z*2QG+;cU2%whF@nJ}zD)J-(4Plz>n<9ro;*TrQV6n$TJ!EyFi%gPEbf>isgrrFfDn=$Z}bC(SekM5BgtR&Z__HQ;j z%(^)P{frbDD?igqmg zpMi9^-}_KOvZb;Jx!?x~YhM=)e7}!faohyb&$>mw>hp@sEO@U;T87}OP-rk-C}2=f zeQk+2|7Q4Z=thFJ>PSdVB+VPPskfd!42@WwW>OIgc?qAX?d`Nt#U@{-g75a-sHOW+s5` z_m4IswScb;1IgHf!$S_u*T;r)vTifkfgTAlP{>lKecHj3kvC$9dmaN#33+?-Z=pqt ze;NU~!ewd79R==U%Xv0bNN7;1b$vH|pH&lAU|(>1jRMJnFf5)NOgS8S*Ngga1AvAdj=k(_+ua_IE^yuaTp!Qd^;h2yF5KKc4HGhwWXmb;6UT~-6S8g6 zY_iX~YN<$K-+WK5?iLGurdx~&!`}_fHpfmIMwaJWi(9pKwx8&{-n??waM!#p-~I^i z_q9j9M^d8b%G~^%#l&wrn*R*EtN8R&0chW>>|Lt7Dof0OANw4)rv#0*&~3KAW$$CA z=<9wA++03DKcZi-Tvq(J6Zj7dcc1bFRORu$34NOhC`RA)M_ikaB zs(9ey;*mD_lX1I*Z%BqK;1CnM3CaYdZ;X^bK@(Er-ntXL`H`$J(w=!KMd&9-;zpgA z_ip;K__N?z|C94Yb_kcTy=CnEVOKwA}=T6i*qA0 zl`^(tSU=a0ga~-Bp%!d~f=BkR1@pn~!3E~U8f0xsy=+I9c2bPgP7N4TO`)U><=i&@ z0R1W`Q*ThpPNg6OTOExgWwRF_l(@xZ3YB7NkxlWoGXvMNfoPmqWQOf27QTm7I(bwG zY0)yu881| zOzBNgKT}mO7$&NsRSoJN`P0fNXi7*Y8*kmcUz4P1Oe_qf(gEVE2)^F;Fx7daOs z>m|f@Od$%*RF=3MUVXMJ4%sa_kPfV<9aa5Gw+W}YlyJR(~|VJ<^Zrb;vR;fvjo zPeEdV=HXX8(b)(2CR8y6v0Jp{9_r(=DUce?9d@|p zGUnk)g^Um~ivz3BIk9+p8W@x5c>UpWXOw^p3YJ41=G93j97-pvoUxoSSpk&?Xd_^n ze!qcU{r#1b)_f<{x2F2>Y-sFNS(H@;)Nwg;+fN-lliFN44V4&p19?up88H1p4vMcc zd59l^{OHW$-J^yf0e_bDOoG%LSp<5!0XmKzXF)0M3c+RTsoA!8cx$My?T8IZ6V?nj z8Csz^>BNqDf24MB>&zo>0j`O<@@C0Bykn>r3w%A|6|TtRqLTc7R(qET&d1WXh;s06 zmnA)j2Err;IUi8E(Mi8Y3*x6t(cTR=dbp=0n!AsD^L?oHid0oM!nXQgIi1o!dc^*X z&FIO(h-JKx@hFI2QW7=aKb*leS%Z1H@NQ_WHTX@yo$q%B?$|_@>V#duEQdKb6Tu>F z-M*OKC4HY$g1$NDW)Po9@Nn*|(_jo&`}Z9;GQ1El!Tp8gfy$qvrT6!5vVIR7Q)24E z$bCF1+F6hHO1{1SWpHpX2-+(w5##-?vgajB*Z8w9U)VL=SL1+{!i94?u)aqOQ5aXtv6f2wj zLcZM*hx7s`!XQ$|gNO&^wPQA#$e&-0@Gp;`w7l%H=R}-+K(=XjcqFy2dCiy`zr6)` z3-GPP^P_Hc`(Xi3FNSECbaz+QBofC^b1Yg29Ln<|jAm4)K{H4_mj~J+K<%MDzweCS zvdK1ce>NnRu!@=l6C0CZ?7o169)VK2J;KM8dF+Ta6bxmjY(z92QqfO?Et*j zdJjHfRFcZ-GZeX03yVUm2WPlEH~oGkQjFPl6FP;`B8D(9f!uaZlVlhhg>zb!kv`RN z%&?+dGbl5{b{6bH{AjDM$0e!3qZ8qpV*g{8)mZbm^8|Zcb1n)1E$X){%uW&yt9Gb} zT--<6-j%J~?ML}tq!H%8o7EI2Z`6r*kA1r50Jo>uxBa_q{3p5b{8;E1GJBTSi34l`(mN?2 zWr}1?dHJC&TZ&GBgea!b$Z5?4DPw+5@wAO6XB#GTYa``4EL82Z2(iLCDwfH4=4nkU zZfyNNI262TO>UH2g;t3j*gCXXM9mNs*m$uhn!cjMcncfigtbvJGk#6^^gn|vhHwLB zsfVOegVUI~@)V4%YQ}XYFog)emcP&7dnQf<{q`Z%IufnK9~u65+M#7(WC3ktVH)u z9>w{5=0MwnuaMz>!$ z97!RuuAw^%R#uVht7!TV=@NfI`0+mYlw`0I)U`)k6sX8r4;{-`dq!$Gl-M*DP?VD= zr@4TcA1_~Mh11yhKqhW6|12*dB+tHsv8L3-G6)27IAbWi88LG7P$+=`FFNQYJW_472X%I$s$CzbwB5{A0)^;Vt_-a=RIED=EhT0^ z8Wu2;oWBf3<5{>|2@6EC-H^fCG-tYdbXK@TG0LkE7Y&5F0Iw+&pL+sbl{U;~Qbr_@ zhDseg3rE6l3zR~IfI`_JAu&de*6NKjqD|75qXYp)axUU=R^mKt*H~HVy0*uueQ* zR=p&6JYU+=*s&G`fM8V+$3%g+nR^U^c}sJy7$Fug39K$dj7qCYTFgyKB9G6okB1m} zfGxtX;ozh18e<+Q%373~W5E_VSpfAIJNAVE zgMba*hkl*yIX4CoEr_W@fR9i!JA;gH4^nB!%h}R^`@jp0BCxG#7T-^;G6$n9$XXBi z$39;2+iVV(Tr8kuFK`m}0+pBeiT;i6o4c&T^EU$DMXYp|nVu_dkiQ&1^*8uvd``6R=b) zP!?cXpxcATuW*7lkgvSmb0?lFxbAG7L;XoUSis&B_bzZkdN;94N*`(R9$P<&Kh^{6 z9V8Ah&7ZxMB1T(!a=DUpG@Y5wX+}ISXOpAOU6?xK?~JIh(*u#-E7`s62JeZkkb8ms z4qV+A0Y_tUXF^Uy4Ban^kNE;racN!edCS0R>Nxo;AnNg{e%twWXsA$@WCcr+H$@Y? zWTKFutSB4&epTP z966O-cTaRH5bbwI^G>m=F*^4>A1!tQRI9%U&^|)=sGdg7L2#xU2O&XT&c``MAMHAY z%1JRd{33gA@QARdJhZB!#wSsuU~XCOjvT5&)OG_!N%3Qg4t63Nj{A+OBGh)I>%@7{ zBI(I63Y#bv{H=>{)?c>WCT0V_Ls}1=gUETf#? z<%xZFx?YF=-7uNmae3;ZLBnnARgv@B`}>Rq;_&H^u-s?sG}ilZMPwE6<7}OS)DQ4( z@TR;d(hc9z`T0{I%+GfgorAGzq#dm!r~T}F^7zvGra(gXIHBdIzy+TC``-QuY>n5M z!Tfskg-R%YftR@J<{Dy-51TW`?SP-P=Uus5t|r%8NrhSkW%cLb&|B{m^}99Us6+mD|7t1Js4ji1X0t@u{75_3QTZzI|7V{UyA9`+eE&PuPUp3Vke0Q@G3k#--=CAfIn-TrKk$K7m`0bSa;jsXgjb|Vf#S9R|(1ahJu|WN!Wtjset3!qY3s#A&@$HA0 zaMi`Q#F2*Ib;t%&j@y$q=KICMVWfU{7Jl!zl_6pKISrqUhAsSQKTN!35EA;{l10ItyFmih*@8oF9va@C)GCA8p)zpra|qr5O1+bZx?~2gf6^ymrN| z9r0&=N1YLk1Fr||kG00XL|PsE!TVbt*EU?J#st*TDa!@(zKHaM&AuMl07 z3G(1 zt&u$SB^&0jZ#Dd@91m5xR{KNjR>$HGyAQe_q}HuT=NWQWNKdXmN2jL{Kb+6k;rB81 z-~N=zbn)K1uR0|UU1(x8z!G$Vj8|@aiY?;@QVxBtzT#hYIK7Hde!MT~Qi3JWq!9Q# z&kWIpuE=lld0SpZyP;rq^7~o;3f9Zg*zhZTNY&`zd>wQv)modKgC_hR*__jwU!S$X#_6-L{ zTKIU*wFR!vM%+@nEPbwHt2m;M?vHCC15Z#rH%y*CaeAoLwQSKQi4>uQanb%D&qZN|WWG9prAiLY(wzFn znu6MNrrtL+^^6GYB{YWIr23eSuE5t%dSiCIgL-t1JpXI#Y^WepewnXHKwM8Z*?lfPywiAm@s1~Vt*+0% zXo~r&q+SU>8(<(~v>oOGgIu(Kkj0}M`6c(g7ua(6$F;dkub~CI`#Yc$iTc6DU~vf& z0o~{ez`z&^z26i%v&DwzI@SZwHKqr`bGfXeyWKbB&ayH=^X{s+(Rzr;er@NWZg}#W zjkbUH&)R9s2EPW8`E~v_wrsEUjmhpwpB3}Wz_rDa6yGp+h_*Lpzb(7tw6V;iKiG7v zILtzrclRhWqd8+~5LwoaFu#LP=s^NpHDxFiK6wIaIJIv5R)@-z&CJUZ(s_zs(SJ$e7WDTQ^2m{Np_pT2; z`~zQeE8n}z$N3Qb8g;wIae>`HTgG~JJU+8WrV!h5dF2v&*2zdb(&c*u>b*k_eJ(l` zVf}}L6a1Sy>8P`kbPspUK^>IDLHrqz+pKGrhOC2?hD2@$jjJC0W}c@0di4W>inqj^ z-i!;bQ}{4j+1A5HWG{6-JcW2KqP5<%m;?ps<|qF=#gdklU3qe@XYlJsBMk#zBZtezZ2;1!_ z#cz_ltNlFrW4{S|!yCP+(S12}f`4>DGGMw*DEqZ(zk7bqn?Ymg6(Kf7YRT2bq{q*V zsugE}{!{B2BHe5yP*0_oq%o8XAMM2p`i5;Q>u8y5gVSnbxT_OrZqLlVUy_LFgK zhGeGWvU-#k1+LkfoS~m1FgWx}2fh}dQOr=he49E)TH^cwV|Q=A+&-Ik z$w%FSlFxKS`5)!rN`!Ey73&An*%7k|Es5)7rKQt}>g*KOImF2?BYnQ{O|PUkZCbwC zi&VdC|J+lHKw0>e*2WpAPm4V?laW520k6(jV*$Z;suQYOOn&X9SzVqAc&jH> zWgFt~N?Y3q&Vkd8EvuOphO{bBwU=s?h#W{t3QeHr(G&&nvAnlX%}zD}f9Vi_`)FFB zffJvDd6ySSC~S?yipg$S)hOsVi@An(es!R+T_NL4R7q@r#-sqT?!^s`GB^+_FZObNY=3 zq2_EsmbRupdL*Rv=_X>GZ9b&8&opHqhi`+&Xont;mN6NbkKeFOpVTxJnww4Rv(fe4 zM_nsA8m$cQ1A`OZ+W+lc{O!5qvL-=exfIO&A; zMlY@3Ab~igL4Kt48-1}f`)$xa%`878q?2JwDsGl=iAVWbCz5J^;TYhWUz+tyC4-Za zLe%(N@s&_pDScX?eNMf11>OtIVw+_Vfk&J&LVEFbB&SgS!9>Ku1TMd8NHI)>Q+0i` zNS2vRqUw$qKXnC<0t;)IJId+SR;A>v;4+|goVgiZle$L=mx1Ewkc$HE%`2sQc$#k; zS~fd(r;x~pcu0=x`2+m+63;F41dJ<=>6#M;GS0HyRuVbJ&iiZ6Jc|B6O@hjr`nYMf zM3H(4jQ0Ctg1*Xqu5WegHfP3Na;U~>g>rNNGWLi5^=rw@-RILgzHf=o;APe78zPCr zNgX3!+jdB=s8}FNtM^HjGeJqh<1$@jslWnM)Y*_Uq3C`9vY*Sjt6!}~R`wi}V!dbh}3IUFmzTM?Ifz?h5o)VqgVdvI`Z4Zlr z=i;Mj3pl#b=@YA}V402XYO7Mxb(U?cy0n%V>TwMf{e+QuWkgaBUr%jzyTbAerpc2r zfQ3!=t6;t&OKLqYk416@8M zZw>l*+)2S+w%w0~|M8%tdCdk9l#+t@NroHJh6B>^dfdXKf&)~WpxHRm0?ND!352NF z*~LT$4n~e3O=!~|Q1uf8;v+zKIY&guqvYc)CwpfUdM~!USw3z}3BN5l@i_(e8E(Xq z(ci2Bhs%ZA?Iq?>K!(5UvYYN}B@e zR_Ga$gG%^xjcJ2hU;RzPl>U18w48Wl^U+kt^JMF-^mk-OFBRIn^;ld@0u;0o-{jB> zBm>FfYOeFQEf3*jl*Eq?rPl5vkKDdU2|8&5n}_!W)m!01{f(*)ouC^aYR@$koH}D6l)Dz@3@;^tNMRZ)nKO%Ih*En}c zq946Q-Rr>$8<1Ed^_%8^#DW8Z;j-U(&5b|xV((=HH`7^2g~@;(vZYwsE&-H&BawU~ zu!T3ecx|9`XM4aAA?=rl{2A*eL^p;Jdz#55s$@WYS1}NI?MlH2{!9!%pYCyA*>FkCf&bwlyUi|f8W%!#k{0lRhLcilc@G{G(wGc!S@M=G zCNh>=TNb1lZlV+*#}CI~i$Otc2x=QQM+K>2po<}7jz}(lX({Xg&{>(4S#a)X7xA#q zKesn)1l2`%j+nTMzD7T3u#O=O*_hmk)Yy;p2Vy zwaczW;|QBs6V&Q~Xs#2as@tC0mG#q}XVr1Rtt0rYEb7SkH*x(Z@Y1K)0F0@fiIX$H z)X?^C&)&!ihKY!g=lFN3V1ojDPesU0 zHZ(DGHYDO?`_fZpP;ha!v9vRFBI0EKhgLK+{~}oa>8pI{7(1&1Oih*T?VX7@IsW0Q zdN`Oehw={J#1tCz=l^f_{<+S7`)6ur?rcHC#LUUa zpyFcW{MVAEoGimXCjZ+re*S;q;}vjsFf_I{btW=0HMg|mBe`tvCLyvk;Um#tlVg-~ z5HYo|l=K9cs(8w)8hctBbD59`@WaFKx^uhRI@o^UByzX4v2)^f=OZ!vij*n$SN|`Y zfrRKE5oc>Y5*B(UIu1rAk}o|XB3^)r8Mm^i_`meNC_WMkXJ-d)1_n1bH+nY~dV7F5 z0}~e)7Xu?R12Z$-mjs=Yhn=&bJDr^q>3TM=My;$mzH;1{(wc5$*aw<8jj zb7f-W{VV@J2LFQi`}!{xQE_!sfYX-){7m#5|C0P4y#JErW%%pde>nS3ApXxVm>B;% zJPs}Zn}331V$5J_V`^(^=j`+agXuqEm>6>#f2~_*d%(Z0@sFo}FRx9m6vVYP4BmS?U|L>T-R?fdc{ZI4aZs_m@i19xGeaUi* z{6%Cc`t{~#W@KikV`QOYVN(4%1)7%WqzxTTG= zDS$!T=I;VDHMTb~Wsv}Q^!F{AtVxa>D`Ircd2y*bvAe(7DqLEQ&M3~D8gmvA_q z&gHdy_Q6&!}XQl#>0?c;;R3R5%s-UoAiOGc0o8Y#{qOiH$ z`jG+BP^|$Qu(vzyAo)7(7@ziA*XY4F&AqI>K0ic|Pk4~?3j~N&;U?LE4r~+&gCRuP z_i>LK8j!(<>*IGYX;+?;>z&c70akhgfP^~)M^1$6QOcTc#`P);LXKM!6qv{+;$+k)8}oaz(& zfs7~bkum@>M^wW9LE4#SB{FL%`wgZ_$jxDByP78sdq3Zb6`4-RZI>otvCz{wup2+Q zkY>uog4#}gf&5ZxBh?#%FY>{mTgsIb^`=1UiZ9_!{Ym8pbq?{u9f&Vbe(M#ECmyDg z6?DI53UEiY*t5I0winA7NYsWr*i-0u1jR2&GWCLYNA9|-wnk;Ke{90*0afZ<3Op_n zThQswNFWm^>;urbfdU8<(&W!eDB`YwZ_3|&dx4VaTi#K0FdN>C&z?HeC?RAR>oF7CC+4dvQ$qB@pIi5qI&mqg@42)wjmB|LaFw0LL1>unDcjR7d! zGF%HB15hawF*M^DU&vq3J>fIArO?-c?SB()O^#482fZb{{dfic1o`xGq~N`uw_s|+ z?F{bv?aGU$(5JEO;f}uHe>o7lMf!xrFIPUIS|69Sec(9yOXE5ID!Y&4x&`+1N4s+g zs!O;?_$GOmObXdzp;Ql|wc#CN-q7~QLtf#L$WxA>UoQx|A*?q#UjOVB-Bl<0W^``f z>J{uSP*1Lq&%o}!&z{dd0b~Q+0#YtA$(t=)lF^aqJRSJub4Yf%mDbl zXab{yA21t;4R;dW5Q8=p{OkuGCXCop6g`ht%%QZT+QU9YLEeJCd!iHlT3nDC{n7h4 zzqr<5E+{U9=qEadeEz)u;F;9*w@=`>0p^cIyhZk<6$t9i@yq&5_*5>%+(7>*XF0(* zT{z`-@xu%aBkd30A*&NwqrE`cT;u?8>k4o!SWg#*&fQx8u&v2EBU114?X~Q+^h~l$ z+1TL$%agBOiPz(}#d#b4wBy8%87ge>#yWVRy8+`;2yxnVpvwuwi2M4-$a(oKGEVKr zK9Am4fOpkCe?OTUdQ*Dhh-@wdxy+w`a}VMM`9k*&*$pJ}E%C^BBTV;KB=4jg7`=Nk zA@N*3(Ib}U5A6_*!t5dlvR#E2xt^ij>qsKZ;vJMXzEn{>Y(yQ^37;4{3D}WbMa;9^ z=p$m@%-qNep`Y&PFDQJF?FBUs+0~MVJ(qFM-moKm_+eKJJ+o?C-eb_q7Wj5s1oPR% zgaxP5N*iJPyLuthgyc02yH5>$CcKEQJywkbbTZXq9MCRrm)AP|+f?7S6at;K2a>OZ zh8O)+%OKO6VO<~f;y~xuIH?>#4|RaOnc&I#3$J{z_P`MFSP37Vl8FX294yQ;*T94ZHd`bz2gWyNhrgqrxG#asOf4h;{3CYA0x=xrs!5G4E zeT$NMAf?+AVgA9po(*MhOhH*g}_pyYw3!&}#b|)Qa+Jw;hjk<@`G*c;gaK%C|Ur;3Z%OAb$xK zPJyJ+xN2Yvh`;m}mOlcqq-7OIE!Y;ce_~_E=)SkDv|u&;9GGmUz!Dg;4J-8Rwvv-9We1WE)4-afo-#?lDE8=}zFvE~FTQmF)%VFa_jmLeK8k+v1O z<^;-e21-969v}oDhdqX?ca~?C?;`RuT%nCHU#LKVB!DM?j)tY4a{MpN_gGBGa|?ih z)PPuka)3C293TYAa)rMoDwHPoDMx4kBi%q3F+XDwoEl43?UDBIlMwb!#k3@AB%K*b znh4@RqZJ`*$m7)U$Z(HbuKFIq;-QBmL&U5M?dKzxCXHItV1b<-+Eru`9+Bm?(8TvF zoCNIopg|HbCOqaJKE{JEBIh9+Q2Qg)A_Bbvv4PqEFTo%|0?`MlLMRR!`ac5k3xWcx z`iBE~0xIF#j>#le`$$3O<&oO#gMiV9B!=xZKL|V`_b(GTv_25_e1{PeTUOqHRc!-3 z!5)X>M&l6uJp(!xa_kYwDs1+JoK?XH@!)$Pbdr3ccw>Xut|xvkHbK*T+!<9!0S& z#sMUrcy$KuKTXE#1MxMekOqTAmc4hq{`@201{$_b*_NE6k9HlZ!I^YyCOQl<8$tgL zRAK00w7GyJtxjTIa({gTS_cM)#?C>7qZ1g%t3v}JN5wA> zLIN0->8SY_y;SsaTn@s)@l{7BR6B&-1CX_>*i3YtYS#pVRnwoe6^2?~Z0pW(`ph6j zvB_YD;z2#PLUGWLM0_xDCK}(6s6D8SVsj5X&c)QqPCtH2r}R8{fZBP3rfkDIgZPJn zdx9<&GLP_vbaUI|@eAaKBk-Px5^6g^l(%O_Dlwr4 z^i2Z0KAK%a^N&bSueu)_O*B_Qm#SMd`jo(TjrRImvC@>Ws~~><38}8&8;|SQ?&g9e z1kw+oJWM8D=;Ccd9IUnPjHJ4-=&{YdV~op(h|#mwLw>_S{ne|J-3uC z>>DpL{8zwiFJM%ks}WR-OCe^xT)`pwkVvQ-p&(Wlhq&RNwSs2<@LcmYX?iPGqEh-N ztC3(t3NaBKL~t23Z&at=V{{gAoZNe6=PaVu(lqcSQqDu&Lp8XJG0k1G?qk!VW+WuR zO4a80e~U49Y$|g7BdLQczzI9ASJ*$P0PSM5TXgJ5%!)E}-c;&(GW;|pXa9*XwnmIoU1%u_fU1SocvoPJetjx9cd+49XBEy13`hAZ`- zM#qASiWy3(ZldlsbGG*7FLb0X4WDLhO_I&{4KApn*kh43e#BVFb!Jn{dW{^_e+Y`w z9UE^@`+*&f=!GqHM>68iI+D#t=2oA>=^a0qTELV$XE8<@KylOUdk_^R>hOBCRQZy@ zm7g)FIF9E(_@v7*<}{R9qm;Cu#q>SDztv%vt>IwW`yk7mmet(ZTiv2@hP&g#y!_Pi z{%Yz-T~(i@sk%uoo2AY67k38*tCMr3&sl%{jh@f?@~p;kf3BqsiEU-n16%W(dHJa2 zz2=Gr*Lg+O1DiVj=!5J-yysY@v;$W76O_7QocOcW{Ro?4DR;NLo zjYzR1E&UJi!EvC*a($O>tMA}m5$albOBvOGO>W+_226VyjS)o~*l5vs^hFNc*fq9W ziIR_uEl@F<>Jro(X;Qh*b5IvHN0)=6Vsxna!N}sd!3qkw8f$bhD%+x1G{WNKbXm6S zk)X1^4@J%>41f+IF@!4$e5$kz|)#1Z!tBQXfB0jYQmy zEx|0%W==pQ8_@O;``1N_vepM}sc_dN@)np82M7!h7Y^t44Hqs#mq4`;;z@w|f;~!H zgn4(>w*xx7s{uN0Oj!LGR{KV2zrX(cc{uwL8=DoyYlt^v>{y) zYLm+KNu;}1oWc%J$ThWSP`qz5?d$Ph#knD#VOb4y7V`ouuyM8$x%Ab%R zv(i12+oK|oVDIlJXhUPOHOaGizIVi(b7bmGk2FA%vr|rV`LPR_EX^v@x{vXk+{^m0BRpGKDHii1XD};sIJym2mP4E4 zhya5yY17e9lz+;{;AQFL99y|5i#L>v%n)5Hp5__RM7WssgO8b%MO{sMZr(&OD8D`c zA_}fP0INLOAyM2yGDjZyA_k`!%qD@%C2$*l>pq7{18rTbPdV{mm{>;vs2j|ThfT* z#gW8eXamSv5V)U&a7d8@^(L=zGbkmq7jfbANg7xa3E4l%MQi|^Nt7qWbi7^nA^-q<)gU6j$^wrdO6cMlD=83pt_cK}zy$tA8+VtcT5R!gBo5haiejq0EtL zMXwA=GrvkDLk5>Y!kLMM(t_@~P;{%?M&bKJ;nPLo8?vh+nzBb1V!3&c3$baBf~}x~Sx*;GuOKJgR8Y_t|hnPGC zFX_phbmrQ}tqQM>JN?2{mT{(Kk|B_pGTpqIXW6zcN5KpqXRpehDzJ#Vp4cd`f_o~9 z&!dA?y-JBUb&k5Z(7lVwkZ3fcIx1}0yl?h8uI0A!xcYhWZatw@P~$o~YY2|R?;Fj^9%Q&w z&>%Q$=3j8l>GHIA!jE~RxLA-M?$^Rxj_ADaN9ne)Yk*Z_cZG$=ZXVx{nL~ZQ@{MjE zFPHtwpcaCc(o73Puez}o&C=@K(@TrnkJlev{P{IpCMjzKQD+gd9ML2p$89P%S3uvKV&U@iO=?QZ z6WaIaHLt6`en+06-{ea|gSYK~f;Y_S80*;|Slei<*bQ$}@L-O>)|>OxaBL=ZZmcEv zm`^mA6-qH{yCaMErO{WxfNq8!(*Us$tPx8gY;>mb2JxEYSou#wGx9ccE=sSmsITM@ zr<}{NB$2}?tvQ=hjT_Zu_DB8GiWw944Ws%1X+0{rt8$l!_Q!`8{UWQpL)Ur^8%VM_ zWfIEv)EE7aKbOg82CyjTq9(;~JWT+P)NM>{CWCy`2ginK>_XcH-N45ErB6MhMq2yw z-#oDu!uI(}2MLk{L^BE$^*C3M-3_)g@D-})J4sgUtWI>g4L*v`Vzw4*DtSAuR+d|A zrLsP@n#j7=--kn>uhT(^vvDYz&8bE(ndUO?X`7W|@i?|x zVa#_ZrZ3^)(c0Cav~|lKoH2`<6d=V+WgheSXRU}`67$eyyQ3Os+LscP;OyfiPbJ@A zGOJJ-TxQoaswwJ~l`c&Q^aW+reXq(hO6#?j_gyfn0V;d%vierFb@QU;;B99|Zc73o z3&v{IT$J&x=&M*t0#0?@jd$E*g+T^&h~HqYFmf$9}Av;l-;p8Tiq$Dqf%c%8(fw$wNO7jf?#BumtN3%0G>wsG6G-M4Lb zSKGF6+qP}nwyoQ?ZEO1X{+Ty1Z{C}E@kLBkMXkMKXT`2Km02e<&t7XgXo!XIQlHlj zrCX1UH>*z(dN0zfHCe1$5TQq?IPW|#xM;b1WlECEbCpLSjIs&q64%7BPjr6pOQEwT z(AY$7)MvD^j_qybuRQPfjfN8djptb>XYo_$gLIKe(_<|FbqYBnX9Pgt0EHeX;XHhj zfH1&~D@)@A`}Yeh=+27cCa@`Q(O3f6NL2Y2&jSBRKyw1)jAa{*qy5W?nf+A0A1B)4 zY_;ulSjxM8w2gptiTTq@&;~lH-_!_ev*_|xh*%;#e_ z_rtk2!O6Dknn+N!fWC$0S#eP5Sb}gJVMXphx*0h`Ev{Flrsa?3oq52ZGC^(@c$aDq zq2VJelWI@yACn4tL(%{!e^c&`jJ2%0WP?~d;q}k8{bqc=9V6g_H!gLx*|B4z52wo`oa45~n%RHm8!5B*lSx{T}Luh^$InFiEk< z7mIEIYyyu8a1pygN1!JnDjve1I8)8G@=VPk{4$xCBb@Un>SKHTWL{^tgKH`=f3U2BeSt?Xm6T2 z`={;bs+2jPO_8>qUGwYEQsgzgB4_(x7FT*Gk1N!0BDaNgbsCJz@pR^K^cf#zUU#my zIDQQj3x}QFy?(01O@F-# zn%fZ3)W)n+?=+tt0r$gWcMsl`V%qmbfA6Dfxe~x}9nD>n)nUJ4tW{jO+5FkeI^)Rc zO`u!*Sb(Bc<6UZdn-}$-0JR^G0T@s^uIlg}u7p3QBOS3$yV1V4rnfl{qnz{J6Bi{- zJQ7p_ax(OXXW4fjHc}R4YP%?&_8=HHw!txE#<^d$w$ZX5TpY1&0;55p$sCH0A~%@C z#c6=cW-JcpifIpZxUZ4e(DTyM-yZ7qGtY;}CZZ~<B zvYiFb)5xL?M=Id`w6d~stxo4OejFrn z8|@zIpwqjpn$l_6_;@bS{R-`TzX(sVrmxieB+Vw?_S!_V{AyHo5XUh1%#qc5of|w3 z^Cj(;ZtQXJqkccE7LKt7c@&<-mlrsHWr$ctP(jlb;F=R~O5#xqbMA~&{(Bn+6~)e5 z=6k2lzTTu9<0m)yFWY*tvabjML2o9GM7(t+jszo{-vKPnh+Rks&WrY!#%Sf4cCBB} z3=}~7qz@kJPzYk$(k&RaXy4O|^3R*|TQY$XEW8m{!s+s<=Ztxf$UMyLkWiMweQ&0w znJn|JOgf1fi^W!UFec3!LnAVyN#JJ)UxQ&rYZj?AzOfTSq*UR?pvh~WWgk29wk_<$ib;*8bBZd zeYE)#b>g>Gz_wLTb?K;-P#w~}tP?)Oi1bQq&u&jS3^VWCTE`;d)#GwC3Q8R6MJx`> zC|T@({aH}*H1^Pev^{*-+d9y&L+h6N^K!VD_>AaQyvu~|az z{Cziuc)Lx2m2gar_VmR8aV-}~zHl4hY18>mXW?sqB3Rqg4Z_#Nc<%jS(8uD&k|(c_Ux)%oHc6KY27TOcEaXx)sNdwvjnR0;tEKS`!+Sxb{2;Zrs?P@ zEwu$4Ogs)8Kz{h(%y;Z=iOh6e!Hpe3oRZafMk%7+&Hp1EFGaSNxWAA=mVRP z;d%4TJU|K0#~l-JV~Q6e=}@6t8{HlUkKTB=%2~DL)n^2Q4mX_Jm$@mPIWl5G0|_-M zLUbgZF>8TG(bml(M+m2^{l)4dhK1hM`$M&eiQr!YP?Qy=8X_RwwZ3N4;eL*uQe*3B zrnKkpHoBahupHTVa@#ZPd^x)*Jsl|KtEH^dS;1LnK0Z5^gnee8v9`t?lxgOy!E;@W z@8-8gE6Rf%k?uB^A2;b?do8jHu*2mj_B^JkCrsH%IFL8;HdD4p8T8fzP?CF|s;Le|r$^)Y`HsC?Dz|p8168@zFg2 z2{>N3-#7CQT87l=!`oihaoosNt$SOhkV}!CW^*r>Vb6hG(Hqp&e{gvpyohi6C*v=L zA(p%zH!!x*<{FaZ{4)!CKpFA?6$n{7%jcrM?0IyM3i@n?JmT&Qo2}?kN*q$C#fGFK zb(w7mdDoO8lAc152fjmoGh%*4NXG>Ol8#m$z+x5#B?np^OTL7o;jp0=_MwV*Dfzzp z_q7lD30j@|w=ToVQ&5gB8S+7E$CmpW99qk>%n*Ccp?)pM^#dzf%i>`0Kim+^+YzD_ zqEg%YJ;Z(`8pw&I54(yo3VH|urkW7D0=x1p>1m}7KOu_m_`H?eO9_*X-;~oK(a*t>iGB5hN39$YH^KSJskKJ$b7Y|9ptDT zCYtvhtSNm!*1@sis{oe&!958JTdm%WU*Qi)@3%{fnC1LjBwhBNE8i=&aWcB6pYMqi z(qq*UG@oir^)g#PWD5#cViQ}2!pBC&mTQ`57!Ij&?V|{eJA}5pOXshTWYi83ozbE* z$rves#J#fSOBX;As}RSLT=xtOrolzSfgd$tlH%S(jbk6C$FmMCr7oSkk-d^Vm%d`X zV$~F~dq%>JdfE8fbu}(-Soz4VnXedcQ2voM?|R_erEzDjl&Z9>%tUjI$5^@%VB3#k zsHCk0qtHKsAGKi3i!glXn_Z1?lJU`CeJ#=~_~#Xoeb-DzACm1jN-8{N>p3dlO^Mu# zi4I(m43$ArSxknZy3i0D!l0{y_B;O^DmWAFw8#lVpZ*dYaO7zABS?@Ac_3k}%8KcH zK!9d1Pzlm7BZPw#)d)N%i-Xi;*OJ<9tEP;bsN_-_BGao8YSbwe%|cU?gPHuv|MWuYNe8`j+|L6aFL+oRHQoaww%*y}h1 zY_@$S^diippW*<#Og8^|-r!Ylirdq%bw`e^;mIA*Xg>_!BI@?QJ4spJv0Ov)Ir-VF zmb8P69s_x{37RoTGf(ZJ!$`q7N_#-U|6=sTMRH~ua`2|fxA>NSVSMjQAuu91!aAsE zj=5KTCtp41P4H&EjOb$argo;rJ05dyiOgKFaA_mw!pV}#%3LtrB(_Zoqq*ngD+qmx z$2jGwjm1zpLg#8?syqhO=p|9^%lhnzF>MsrDQ{zbgqKj zh@9F2NpF*Tpj?I?v=pwFt$cjzuX!bnn(O(k^5AO3BQ zE>EJMpwB%y<&qI|*@-&vf>}{}Q+0Bil4L4*E+HHkcCIAfOoPnXLzBPycQPb6JP|`@ zwX2fp(!N-RUoXsfg0(ufPe-iTig6T#n`5-UjqB>HYiRrGmC7E%)b|e3st-dJXZ-kKSjg`%E3j^ynbzmE{f!zZ(Rg zJc>LaR>z8Jw7Xw9p^Evy!y!Uu_hL^z$Xw#-u$XaGp>CRG=AqygfFSiPZ@(Kl8`@6| z(}HSCiyi_N@=!&EZ-|XjdCJYo(RA%)uWF~dJ-m0c7Xu>)*#n}d9pu& zoQ4{Q#u7UgYvP222g=@_P^oI%ciez&dFK^Bclw+5cToullN`tg$-vORey>*rL;rQ} z$spsDGYcoyju(R^un6VJO5&8P`kV+&p$p6~DREJXsOEzOSXq9Po1cGuzM@jgAT*5JPQT$lz%s*N^I}QV*rWVcrp9QKv2E8%0B|a?b`$?#xZI2meVYb9=xZbMB4buqVpwf7MJ}>P`n!Qe6gN&NP zIlEhpD=B(0v%FlIfJ*ZyzgUTqH4R2750lDXJ3z|%qDX*)Io9nGL20ZMt%ALs_9ggb z#I)vpbMxKS$7Xs&%lGqiEpnRzEO%oi*-L(gNXk-)W?#A??%`9-hANmUTDC;ENyJtIK+ZGD%G-zP@ zg)5DJ`H^BS-#>i%#W~>f>+-wgb1MxgIEHEpCaLJeDR%~dkC}PB^#s$YgTccUMd9J$ zeQZbLe~$Hq_`X3oeP8xs98MzWtYuJpNRQ?0`ul2~P!d~U%QhZ08AB41gzWjVJ`m^K zdR>d=SAaEJxUOj$t9^gv1)pEyP1+5afeLM4LtWln#S-$<0n*%X;6TrGuSsncLMWQ3t=Pm5(UUP$vhCn&W>OpWU{Wl)gHPO~I$ za+1)P58Rz$*^)8c)M6{7x#Bw~m)g|Yw0{<4zdn*E8z>vIC?W64O4oC#cjn&KZz$TV z%RaRK9J#wW^&5>*ZU7QnF}OKZ;VNCz=P*5$BWOItzc$c+$d(&d<5Qy))~^Ydpb}H2 zT-fhdQPF9Jk%kAg%gN%(=qqIp-=Uk(&zO!6s1ox;5S!%Hl_KMz;o}AFkH%`tM9>;l zO=cpu#>sB~S{SCF7$1(#4@zOV-8q z=*ziusJ&OyVEGt$_yzwxnU@-(vLad_j$P5AOt3Wc;OKn+_{QX(>YeIX+aXrnw9I9> z@hH@#U%#PeYbWbMkB*LGG7)hZk=3xtZV)0!ky^7?45JjK_9vp1vmbY#cpg3_=7b8FHQL8HSymWKwu2rOM1y^-K2ImgYR3^zv$$$xFFp9dd|*g3 zKqKZ6jHVcNY58B|^`{bTYXX3f066=At z<|l5p#yA>nw;A{_epiCmb?cRwsq3!yt?MnXXS=h^*Wf`fJ}56kai5R;cA@z9v6Rs! zCP2|38nXPGWZnj{_@ArMjiPaMQT|C*nq!CMLr%s|6~(R!K2v|6JQjfNg=VUwJZJW2 z*}KxU{dd`g(pQ3{qJ8j7D6T!+QOKC#%f#X79YDr+LS~da<3~;?CwiP9XDE;+TbE{k zOb<&AapEOE`@>L-21muPpzh}?Bhns~)f@i;c1dJ)W~Ui>bp|;4-`^@$8>O zmt_w=O+{AZ5=C&4oGq+G$vunGghA+pv`_0s9lhU>inv4dvpDEL)tfdu!o zmd0dPQkv}7y(wi`f=i?Z2jY5~={a;Ht?RzDYryHT{Ui{N>sh{js)O=r1TDFADNWw7 zS_-ZBM15(cM9v>0+kF^oZ3q%8H%{|Q>V={kfP2sda>Lv zv2iy9{4-agSUSTXZT?qWi-X#2?2CDI6<70ScZ5zxif~kyzmT|ineVs2y4SKYm z=`?t{nswIN<`>YESmEMd#3_0O9l8M9QucotXGI?OAfF%uAp0N-Am;vUBpV85v~b55 zN6&ci{F|7}QwTFx4aAMaJ)GY@`-b!0-uP5LdOOU+7=`K}3yd z`HO8r0#D`tvd5#!iW2+6VK@khvtLc&O|q3~3n6ToCmaD>pmg~TP|eu|wW zHLJM`B)gNWWvM-pD*7{7%fA{{!w6s|KfuLKhU=LBVts`tq2V( zizfQ7S|@^u6t3wJhYnpnKf53#Xt)1sM`_-VhgqOe0Nt5O$0uHqb+?@DJgcQrle2Z_ zs|7zzp11L2i?RZcWfLJKbFW5g#|3#%$$ca5^rcl1;}c4MORLRi`ankHDmZ5RvtH0u zCP(OSO6$0pa88jD;?<@x{4sx~^0<)GdT0E!b>z4D+=qB2sEdsYBAoSGW15Nj zeJGT-gC;)c{!v2~+LTj<%c${{1BJ@@sa`t^OLH(yzl{ragU-UhBkl9dAh}{gVoR3B_nJLc(SHpM)!{ty}exq6i8& z8{%i@mTg|Mi$cl__IMaO>{Tw$J^&~DxfSXD6G>OI_Rgh-hqid)N4u%uBQ^r+G(J0$ z@d@3?K{+!k^(h210d&xYkYN?i ztcKiULsp(psfNsIqC<@$%$|7lhjS%xVAq2T-mvo*yXW>csp2gGwy%dcgrcuy#FIIT zZfF@$4q$m`B=DQ!iDBSLuvDQMf1em685dZEhuj;scJv+l-kiU8pgck-{>A8eq&_&- zV6AvJ@IVC`(eh{qEy7nSBa1p%S!_+3RoM1_4sZ0)geM?Vl9J)DIdXk__9PUx`GR); ze#q;}L%%qBbLz(6;Pzh7bjUPoPR2tQt1m+Hh%-=CLr0k_@9hqA5FqGynDcw!r9*== zGs9r-!=Of;%AlxWW2Mb!D1wh$en%Ol!ryCJV2cYoR*~qs3rsI471HrPSLM)RS~hzohuc@2kl+HcwgjGq&wRx5QZZ}B7Coj&eA{crnP5wC)3APqqdpA z6V}NpIkDI-&!C%x5M?WSGd~F$S#0wu!Kz`# zsDCV$th_Dk!F~zcE51}tgO9t}{1q3IuY6Q)ryb8 zo@evwJeJCMDZ=xZW4r3sXCsf;(AtZC?7M-!oFdCiUBf+gBvt<=G1|A?&MRXxLj-*9 z%jmhxb*Q`CHa{@z4-j|Nggm!jvGSA!1pwdcD{?z~NJZ4C;nixE4@}Hs+3}=nVknCZ z&9SVcf!{zD&&$KqWwyd7v4tZ8eHVq#r*uI%&bz_!C33%`#Q+N~&ohx1Mw**jrLCq} zb(0s4<|XqUINy0p%%_V**>fd$UXO>xtfB_ArH6#{6%(2nSwh)nE|%{_DHShY#{E)c zldZBONsY9?#j>0VX>aF+5u&0dYfMC+hYixr)r3P_6?=%}GmQzCXRbKZ0Pe_M3j0O9 zU}=mwbw*mo#JQx9>MY`$z*3PQw^WMFifH_%tl=2mE|;!}$jVf;I`IVwQX%bKY6l`r zlyJGCTa2bAc1Aj{$PJDjrHUPLgvnfv=3$5%vd1h$9Z)rE!h_vT2^Eyr3Ic){C`9N{4W;v|B3=g$i&F;-%CYff4Cn~p|(kmOr*gBRwzjrZ0=IflOvd*W97K{eF5e_R*AU z@pkp)t*!z1_+*~5{gZQjwiW8salJoHsaU?gcl33;cepRH1?2oYj(L8c$aucCwf+A3 zI9e_lv2D5jvh&6|e`mM-esilD>3Gkv+5WsAk=x$h@_BpR-36TAxBIqtb$Gwnb^P=B z68619^gYd4zPvoQ=J)E%-tO^ydm6as{r-&d_3~72dGWwYOaoLuKIY9lu3YZ6HyBlQ43R13zJa`oly(hQ41Sl2NhxmQ(^~0zf0B`DAoG&3esu?4D>SJ z!0~|2{6}Gw`7V-&Wad8#0mps!JMK3;ZumTi*^o2;L3fb(R+tt$&dh%lrW@`rc(`Z&qtNGggUbUs z^B;vV$Gc1(ikbf<0BU^h1>(-Gvnj~W$2{t@D=GfhK>rWpJmPWa&A_{^`)B_ApSpY< zQZq%z^Ny!&5857dyeZlLGk2Mu_p)p=S$yT^lqHpUYy3Ck5*1! zA1|#}Il3_hfEi(ctkCt0a%H#Eoy-$iy_y0a?G5&WNF8@snMb5xN$;p~t zmXMi+fnLnq!O@A3nTeJC$NYcb{1b98as2l)+LDfS!a7_07heyE%JXi#rl&|}yu{_} zIKBN|)MYErmdusOqd$qgN$XswWBhRRwfLrOrw>pp2xWL;Vr7eBb1-3;kDzP8oS9#t z0rY;nyR$uf{C<4GFBg{iiF6x;;?9cT48}SN-|@0l1cbgaX-^f%PT6A zG>Ovi`~nF$K_()lX_no8fzmkSibBOo;$)l!!?U>5Y zc8TAHXXAF}l~HWSX@TcxlQ4&%f{=xn^9xaRSmMiA3JMIk{+yJip=*du6%-ViC=M9s zV>XGO4>H-6b7rBGl;su-##N(qE~WqalaPz=?_eREjtt!|HP19iC`B7rOUh21^y@1U z1zM&bIWYZ8qFxt2e=oxj= zziccuip%&YewLEe+(C>;SrKR`n<6QINaE~V~Gal_xjk$s4Opg!#P=dgn$rE9%^I86ZQSmqiuq$P9v$= z-&$(KdgGWV0r^8^$uDCwPnRSGDngl4hNX z_)A5{1KT=nVu6MfS)RHTV6VmEX=xKD<@+m-hw8wNO82RsnsTgyQM~U$1cy|MkZCgq zj!3w|L(pxq<{O}D>e&@5I`O$eT)|B@4umsM`o(NvcIXTT}+21NT9t zfmxGAv+Ju@G>y6eFN2_yNQc9@gOpw2QOh+URHqOY0-eeS<4(+t6Z}GEsfTL@!bX2f z%+=2tgwAe-C`A1DbpXGkYvD=x2^tgKII-npKPLM8)=40u(28RA@WmZfrxYeF!l z0mRzRsxr~8sFfVL=e|g_&-*X)9i<2!nECm&=Y{p+xNYPKRUVn;s!qKRLLU|C31KYA64Mk{ZXz3HzzaGDmXfl~`TZkr5 zjhX_p-kM^2Q-rX4Wetcb`xU^*fU%REs7u9BtmTPU<)JTgeMmUof(dO2TRVi&1<2;Z zfn3gta6u81P{pkqf!@$&!JdVorr|UP1qTGQa9I?Wbp_(;fH87eu68E5;Bxhu8wcR+ zFqz2AP!^JM;XK{yZQ9 zbIqTwn=8b6!v_45YD5BMOrsR^V;e&J-3Nl&Xe%IGzzV^#10Dzr4?0cc3_}70j7`bG zo*Nf81uFtEuVD&)Fl4@#c~nq;5xrK^I1pAx9;6zMWhW`i>h}sEhkC*I zEIW;vQE32QB~2sT>Tk6575sP#9?h&P4Kj1&%z3!R$5Py5g3T1Am+-LP9iJs-TWTcAMDa|~EwPu>sy zF%gKBV2usFO1A&05}_YOjxQ0}o?-ZsJhX~+BGO005_2xgIusN-dB>{M%(pd;jTVU+ zCtXcrna0jjdB}jX54`tEBj+SSDpCwb*3+*;{v>CnlQueFRomw2Fy=q8z)80)lySB<_E!&cYZ+jB7$b%MMH zsb@QZNtWAGXMiFi!kZ;a#k8M9;!uDdABq_;|9bs7`CM{PqG3Oms{an`D&ZI+U?_3t z&+=+1$G=jzG`P!uQJ)Tf-sa8FmgcLxJAC5z+<0OF(>G!WQv+*6~r|aTmh% zdOttvh>+=~EdAI7@8^Sj-vr;oK@EG6vVhz42}A1N^bQl;OkwzG5Eo1i=m*-9vMT@{ z>ri3s_|2A*;7YGsKNhmL44={2PQsQQw102s#hUf;vA@J0j%D@*H*&zp;eyi!LoXlq zD*Q%vKqVcc{mL(1{mo*&CXp_eG7)Y>S(KtnqJ63?xw%0wn1WP&z}t`JOS3D92mQRa zYXMpfNSOeXW;INa$v{kx>HN;fOkh?}%~qNeM(K7GHgI?nAEw@X6MhnP%6U4`^>*Ks(``4JvTXzza_vZ+ z&!Q{-XwB_xT*AP@P~L9M{Z`kJE*j90ws&GouiqD_8)=hbPIau3JvE3pe^&wDJHNMZ zW^SuNKdihs6)xTkNhC;Oc@8;<_`Uq}oBh*}QY~ULyTBW9&b$QF{ImvA;hdhxu*$2qb;{~ zD(GS~iHd7TE^|C%zE#j$$l;%Z1s{=dXDDcRq|@|}mEP`Dr;TwwwsaiECFi2CA9lUz zSEYJU!G36^QdMz2^<9@!zLeSZWq12w`P=AAV9E&4RceBGerGbK+xa@0P{T`jd;b?( z&b8+k^pvsrnz*AS(MwMJ!S?C*asvBOr;0Ec596o}udJflfc@^;^2)!1)r_%q3+EJi z@`lXYUF?~hVCd(f$5)i_vJZE4L zD9z&%IYo#ArYFxImzQ&F>KTxLQzAH_iI(Lvon8uHt3{^h*JZ{`nx-qypgYaDH56oPcd@#9J*<4=jS?N`0 zXVh5lYRs#hm8#h*W-cm9?$63!(vh~d>BG4(RoJAEB5;6$cFq7%uB=XHT%0Ly^;tj9oW!_Y;i=uUAI>eU8|w7iF?# zeE}J7U4Iw#lq_b8yG0h)SSe5<|2ideM*N64)2uA(A$72)!rSknTC$~}j>y&pJDw_| zOWWBp;0)FGfjtK{Y??jMz?g>l4&a@jI%;goVwwU()-h(YA4MCzfvp!FeAdBye8r*> z=bcsGIz0%vB`Nq5?;nc*8+Q|-d?P0iphqa-KCb~Gi`EHiTHHTJe)ToR>oLaCg>V}Y z_v&n1z8gR#W9;2RA(p~4EeHO+5c$f$8C%V#wQ(b1b<0!hqy07SMY_3e z=zV{{M1d}%DM!$N+k{tTP^@>YBLT~%Rutvg4}6`a#i=fBLFO568*uCRRIFVyVKH`h zn5i>a{{B~G*~(F?)|K!6lU1V@W9i`d`^~n60_{9^AviHiqKLO}t13K(wZY%YXPOTw zs6(J#CN{~kxlCOG4;c`ds>x??=%7@YJalwBUv#tL{k7T_{}`-3qvi;NHt`V-rClSL z0<4XC?yO@wRc+onY0BIljQ{ztS@B51c7J*xUj2$@UuTdLPTgFt)P2l5CFi#BL1WRq zx$cF>{yom_yGdegacFhRK>u%W)gTU_LcP602*11&LiW0bK5LoNZ)E9EyJQh?WZit{ zjT*am*O|@>6ecCXXMke?qVv?>rO{R)iwcwz)JdlPkUthTIAuyYF=gGY?|w@CQv#Kr z@GkneniBU4{~O9pchh!y#*?(Xwsb)vkz!1>aD}N;uGpMLNsx)wq-DY(nI4nVlpmY7 z=IUx3KI;;Bh%Y0xG&F3yOT=2_VP<*g(K#M-PaXB4AXaPv$$;tY^dxh9CFHVNiPvy| zvzc>7h?h(5y!}B+v^3rA(&SsLiWN+GxWNYwDcmme$)qh`EQ?1(xIx&9_`$h{&R|-zN@r$19F6(v& zh8$f|d`*TxzIa`aXKe2sL=Cl^k2|m4_p*a2uP6A?S(3fmt5!-J>hxN5r_Ie?CHUT} zfA8!qKMH_K-`rFmwX4tV2ni~*^~wk#&Sn_zH>w>>-KWK@*6^W_xW4k2qXj)*7&cKF zWV&)H(4=7MS1j=WreTN$=k7#zgAIyTwtL>3w5DxV-`FVT^>aNBf{h8s_@59ER;I9} zmIf7No~2ZV6_bvmN1{hFakup4Gm@U$aM*mcHxDN6e0ARICVk7+slfY1l zMq;q*Apcm(t=<+!nbyaZoIRDx&Qx`oX?phYZdINtY%1h36EAj6_ubMGL>(s&6vShj z1tbiOITa|--GN1`vM91xWb$JA zo@Phvtge=pp&{{S=a+R={rWi1T0Q;7xEYqevXiymLHI8f3icIiHO$Tx-Ecn~y0?o8 zdFe!*{$iu~xTrnYW4vGLa6286n0+1DY{KjA?c8ytHrZqd;DIdy+j`f`D1W)zlnq$2 zOMLTg=->_BnL&kuwyDc`{+*u7Z60xEb4a({b+L1~3aAMd-#XfKzFw1AO33ny!f-smGGx#JpmLYR`_i$R;n*Rx=t#rq*?pQ zmD1Z$D=qUt(MRd|gmGI~TloT67R%rD2*yyS)GQ+^Y~3K?5|=Vwia7+4hyC7b_x#^x z(Jm2H#hTIntDzHq2S?lxj|*`X=nIdGZyap7^{`Ec(Po!i6a23!Q=LYXv5~R*=pV+* zebGg6!u`pi(oZ4eH?4xK=@#F~)!D8X`BWxvwAFbtLK`Yi4sJ)Ho6W@YjJ3O^O~nVz zg)LgKW~z44<)B5e7Rz25{x<)@epOmFpXmy5CshqT+tRq)?bZRA%B|=-o~^Odf@6w>m%4$;hf^0FTXg&-X|&cW@Go%>1K+|CE%)h*Om8)LsXK7b z?^-Cw6@qh~iW#+*u|39a?*<9 zlSLaP`luI=JaZU1Ys|qLLdP|KKsjPOPJNkKLKM9C1v~B!Gu~^fa3kw*(nmuz2Yu+H z_~z6m1*PVSzh+|%UlA_?TnjyCgZM8qhgmO$YBfwVRp!)G9J_hImMW~#%{?no8piVw zvQ+VfQq$XzvH4xd6fL8j)>eoz&z!ER7S$3=S{j~{R{Qt8d^Jo9etgZQ*gR8SlaO96cOcY#y06=4K!D}S)Yg*_rb>~~lwkMz`C0y^&asDRnesTE=UplOdYD!l zg6mP%lF-qq+SXZ)Ut2Fi<+<|W(9vdui-BmgEu$ONX()I=T_WD-FM%eTXft%=qi}GZ z|I56#l6F{}F9rQJc!~KarNQFp>uc%l8o+OX?(ub7i;!`jml_*%K8hCOG~y7|6}oXP zDl!o3FHNUlX{GjKEWXtMK zJLya`Yh|0Iu=?kjxvLbv9hJze3SzM6$3qhyJ#XkbK7I9-ZM&5_Yj$Qs3mVtZp1zI` zsZ35oiO~mb4oc19;nk4~sV6F;VNCFRvTP0a>aL1C$o=yd{}MJmSq%Yti0o!FWM`BZt$TGWBBUroF*meyppoAH#>sy}#=( zSPjyDQ;MYqoQD84&|s>)Jd*<%$VIrw+JEDPwhXNAmK%QVHwzX>PRIhB2Mr}7U}o`u z+NltMKGa`})|zf3Rx2ZHui4L|3Zx5T9T~NF`-D(7F~OtJ!4fe+Na6_`=sRwLl#u#} zkg?(*sh^Jkx$Jf|ak590-*~UVkPFZ}_d6*omTc}i)$CU@>meP~E%S1^Mygwf5fpNm zIrzOw*d*4=zAY`#kZQ+kOLBBGTTL_~=Dxql3R&xAk5)?Wxz4BOU}}&$`MP92>tJ+$ z$jS(LN#8ml1hs4+qCvx%$P1x~<&SySprIxc;_rDIMtTZ~xDfQIiW}U(HltOldk;^d z2`Lt%fP8fsUfpDYB*;IP?MJT;uXm&F1#qJI>t)pA0U{o_yT=E((laZU^T|#7)42Px z3fPkK>3kD+dliy1Tufz&KSffmfwCePP0et~_|8JA7rfC8_YQBikUrW4R}NdHaC9!6 zT;Pk#;3dW&i9ccGVqEcAh3p?u&Ukzf=98ch$+M0%ij2kr!9HuFMdIa?-9CelEV< z(fBj~<3=GSLyHIhG=!I%qQn8{i+#v#xpz_1>Knad5^ae~O^1<_jsuz{`L(Y{gi2O*52-%9J z;DO?clpLDx2s&xzK>U~sKU;!VkI1w3BOsYDaGXBKH{wr=e|6lRQpSTf@ z=(rpxV!o6diVn62hB3|Le{D2(aryh^?J)I;^o9Wv1?wkyDBXIvEWuBfl+*wEXnof1 z0mBVp`(!qlO~47wHDt;Zi`zAe!E%p{e{eB^b?jW20uvYuQcereaDIUmRB?*r8Ym;% z`m8WRm$EYA;L4B2Pu~NDkO$##zZ)Oef>e=Qf}vpNK}SFsF2bJiJSY?TV2Eq?J0Bz1 zHhs_LgC`Uy#E~h{AyIy!IP6b1jy7A5Ba$0}QOF1B8D;hA3qmv(X(SIWpv7&ECD8b& zxm{s_PbUvlYO&8mJdm?zB@M*U)SUXC_BHe%6!Z4mh+=&WMMUByEa3A){7Li2LqH6} z&LyRgIM+vO|0k!e0O`*+y{zLU+;_WvxMMdRz4eHvi*z4@?eCLnf`OdJm^1hSLT+bcXecg|H?sqx8 z`ANErNnb6%4myT;1k5O0VWn?s+q>e>rGEP94r_4wN?-kShnPiAlG0ji!1>qOSicWi zSthUin%mz^XWcp7Kph-$m9&OUMo+YzlRl|Wgi!a$i!k3g@|(p^3)fhh{IuTk5e^$m zDokd>iK8Y+n@pzy%bxu4Ni4n2nJ8L%o$18)PjvjRp90_QakQBucdqpc*E!j!Rg0p7 z&sBA&9A;-O{p8-_>jBL1s;9NdVvNO!y>2PBN4J?UYQmV0rc>)1oYFt#>YqBbYSC)) zJkunHvkAF{$}Nnkr7$ZVxa^zgHoi%#yG8detvasm^&Sn6--w@f^;^$U9lRp@R=v{f z{lwS9XAU&qJtAy<=CtGH9f!hrIu@AGppws(Yrd*;MR`WkI%A%$*>R9|?BLnDz;BLfKx?x?4P!`$;Vk~UEXIG^S0@D z*#7O{?QhkimmhU&pExn+zNuur-VyOlPk-eCZVrz1Ug?^*q374gE?tgrdy^mC9nZxTnYQ=TWDqQI5^^(aBnH!%yN`L$%;b7>dgXN~h42;{J)_C{h(Z|wmb6vyNIF=du zw0l7C?U$7&yzsx9aB#zy9V3bj$SQr}!^@bf*UR+{zZaU8ed|Mjc+fdJ-kP zL>{2tZS0f2d25Mi7sBdL@fYgy_r;4Q9nQI$d$`;2*5PBayq9$tao|MW>C`zLwr_jc zC*zz&pP-q!=Ph45MlE0ct-buZ|CblF&TVi?ZXM_JmJUAdnEK}Gx%RnfLlbRw*xkF5 z9Xna*^ZZHsfY^Gy&Yrw{=yLEq6F4R^nA-!Xg8y9pmZ^m^>Lb@@q~ z;zY7Gu-C|gw%_(lk!Ie?I#u~usT0o08!~erJ#hN=uyy)bNWBrgmcBgq z>68EdQAGw!pZlm!%$-lor;I#!xWn;x`T2z(HS2WeuPYd6PWaclyMnjH=t~-W?Dcoh zSW(|Uy7#hXNmZgr6KP8@qGrpmJZCFvs$eTn0?*O}rK*f-WA&dM=KuY*G2MMs4YyI$ z*j|Jc%@h9i-FlH$j1}W=?;A8k)i?dqvI*|jRTExU2QTO%*FO5@(>d!^8`h@w>`c#g zmO0y=ZQA&xESr@u-MmMum8ER=>}dU=(^cinyh&B_4y(;}jC1$9EX>T=e}4b@sQ9d? zJ9qMy4Lv_R&GOF5ce@)8_UN3jWXTBYjm|G!E1R9#@p_ivfO^@(j$>=4^UJsc5~{5(~sAu zhHsf4)@OF#4e<$n!j*v=e0_6XWkyd?E{BH=+!*E==KXF@fbX@k zJzF+g-(g0DnsND4HY)1t-@dd9zE*qBDATq^A;o(gH*K>GDVf=-*R{eM=fsoB&3vwU zm2*_WvnBcB!J}#0=D3P|ubqFwU#l`>^sRn_t`+USyw0wPxz=K3pw9w@uYZ3w|n)T7A@Jzwsw(;Nn!+FyKw8I&KIi9m@p!u zdGGS`k6BkQJwK@tQN(V-y@*P^OI15c@Rn&~qwa?AWhNvoj3`ld^d*rfJI0}UsdY&< z5!8}mO_E9zg=S3r7EyEBgs6KX_L*-PwW(iOyi+2HjbNuu96(fUeDr-p(GKH!-K)Bw z*xqCQ5lwCu9dvwng#FD@+;Oi6#|{%5?-pKAq(V}w*EJK(cHXP9pt$|<_OI(F7CL{t zLu~nF;{)yn#hPhH=MZ(4jXHUcjJ2pcdZJjf!}tub{MqqbKbNy(Ik9kJx$t8LUzbm; z@aova*M*0bh)=5aT4+Ab{$B7$v%}-V`&AlN^3HLodlA>8-me>cDdKt@|2L;2Cf>PQ zp?isuNs-+Pk38o3noAfH_u4*T0{hx>Sh4t{Cu^*{U|#sX?Ze)s5@!voSESWc&*D$! zSx-#4P^w|zT(_dLHgq;KGd*kN+-ZO3B1QOO0c|b>7Cz_JeEcx8?G|rsHZC_`-FecQ zS)TRgwX8Y5yIGKhWb<>w%9Pg*j|d47XHiY7cJvib9j(FF0*`0xxeycG4WcN(>P-?!9k#I{INDxRIo83SdQZC6uhiV4pbF;yge_XZ_AjV5C!i;{C*rhbQD8X`(H1jztqgi zx}6w?Hxyb?1YxowS^YI^1Yv_WC%Q#M{5(m2{}=`m)s+A^& zM5*>Z`spme+WUCKT3J(s9c70<1)FRz8r26c$rGb~9_{Vh%f4Gsm_KgPDMs>DW!&fA zj)kjeX0( z(W(#LFR6lN6Zj!nfuQj^GW<{!!*cj{Hw8b~PW#)p!tnH$09rZG1W%D1D-tF`phO=3 z@P;>O9HC%@96^Z%dl~8bQ4F?VJ4us-MiV#&=a>ln9D+2lcpRo+KTF^vA^q(Y$$~4= zilASS-~_SYH_PKrI7z=c03r!imPLg$$+!hAnG{B32o3uMPGJRBkbl4XpGHjLt_62D z>0`vG2?3*^Sr#M1CW2yFmZnLPqk+%wdqnI}8O9`-IFrE8CYGZ(hLS0Q5lpIyrc|1w zF&0*5mc+?6z`cuo^X>7Ps(1&22Tnly|S z$dd4mAII}JUc{Wh7BEs1Oq0U#f47idxAB#NYP0&c00q)M}l zic2yw&B+)g#c7BFCXVF?}vEAkAhL#ttGah^&ryrz;Y zMKY?u@+!*+6vjkr3Sx)}wy7z!BvB?_6GW3tOT3875~3^<63++(%Ly1GNihgR5_ZZa zPBt;J9+U)8<7HM+MVV)1!Ne;pLIJ61q^y#Zi4!=)22G+hj+bdxR0Lk-6-JXKNu_wf z!~iOjK&TR&S~PLkC#afBr`Or zND{3Z1FzqeMTBA~+*dWJGQ=Pt&LN0UjBXYxgMh*bj0{V`q*B-`AakggDHEwtDm+%k zBQtmg1X@`}n1#>6LMW0|M3aeUU^EKLlO_ezVN!V*jZ7k}@{FX&h^8hM9u1rni50Pl z(r-?|(g+p6XguIm8Gt~*I0;(P!=whIhV}ArZc-8?m=%m(R*+qg{0JH`KsN$}10YE7 zG)KWGfRm(&0@8>HK1bqgf`fO_unk(m6R0u;I7x~lSz5$!MUtXPjV^E~K_)3on~Jz2 z5gd*2GnxsOr%)Qpaf&_}JVF402*YzMt-^dbgc_NWG(v_Ss0dteWRZl4h^h%98_%ku zD!@h=ULbi|QaGNcDb6J8mW{Z8AcQ$3MLkN8D)L^zZ#}cg-(wT0=!t@WTj<#r+i?o< zBW{rj;>yo`40ce233mT`JSKrL&I0Ox&el}Hc}P$Mu2B$+@f)5_g1eB6EJ!R#tBQhm zmtx$AMXHD-1)Pz3RFQ+FnK)iVmn7T^`+3Akyl?tX$6!R* zPs%19egWD6yV58<#=@m3r66V_BqCb>$iaxm-?R45_>H*oH`k=VRir;&6K5ih>1R`j z*_;65gi*tb`JcIfLO%F$XYJ29|Bo48&-XvG{U3AvubKX5p8uZZ3+{ru18MCi()hvv z7(IMquHZ!`9%cw5fe#8APl7wBDxqjFEd~)sL~4*>HaPzGD-f910+#f1Zh!JLuscOJ z0$4Y}{yw+3H-n^x$d5nZVk{vN3~ZVCcQXKAGRgmd7*Iu^Bu(%g7yzU5C(IRzAZfxj zq+5JqupOhoc0Hf6v>rkc4#0+B8u-p5^2r4mwSZIMV5B)6Fa6%I8h!NQFVBU%q*DhN zI0J_*uv|d(gP-ELf9}`Wh0ZfcUQ|Vm6=AzNa=0^zd+Q_C$DuRFzq>j-hSFVA(60b9 zH6c2Zh{%{UJQ9xt1JpP~AhDZeB+l=Yg-8L?D8*Y26R? zXZkY_|G{d1Faj=KDT7y25=SDkBN__|Ps_j^k&F`vPBDQNm;@vg zQs;~!a=XL|yo8xxISG-DS9F#@i=3pw7c>k`<`H06n3ss{GM)$#9)S*<;NSXYUf>Y4 zkyP{$gG4P-6t9RHLvgqagQTdch~yNYQW0AOT0u|}IhIg)83STei6@YXL`6>*vItX^ zcuf<)OF-@;L=~x7 zA0&7b@&n8Q0Zh+*fC(!F<1l04(t)=gU?{p z$fBYM=x7?4Ye@4Nf(_EW0Aw_o;?N4>6a*SZqZt{YUj*wRK|Da4!Gz#8xR^jFBu}a= zrXI7x>l}r|Fcpl1haG5?0A6X5k<4K}nuy8_{-l8q@f3}xL}CH$0MS7_Dz z6m(L}ksvy}Ac}B60$)T4kIxW{BoN?;CI&1UPb7+%c-^RU)(Ogj_@io=LQrYUBZWAw z7ZRKVB0`gbpqNYw+yyqzz++@g9Z~_v5&|4pfJyvbVSvv3v34diV^FxD zj0Rm`B+Rm==k$LQWn|0+uC2%Hf2aU;PJn}c)Mt9_taGWOuU>oqp?dzGp&{tCt+SLzxC4ge@q25b{AvKx$b~5rq}?DgzEe zgQkNB3SfvNA|C2#l+8FwB@t^#K|-{}mEfF+l&BPSmaKQ2C4@4FJRp>mB4fLWLVm>M zK+Oq}l2NU|ixq~Kk&2K2XjFh2jw2*o5C$%2CJBKz{{kZY(h=OfxLspqY^U_DA~Z;Fnqe8 z9zz0Vp*@JuEC`fTFi{Fb3EYFyR75F+C0{IXS$_O5D57bMP zP|wh)nlMOJ0To2aj%17cPwO$5M=gkQ423i321W45Zn`3YsE?E&E0{cRCrxJcOb-Tu zWTAxibg~S529G4J-tlAL?{>=CY$Fufn`y4iz+HXl?1Ac!h#DDsLN0# zi+CCmAyY(|q@f(ZCnR!A8v#}W^i=#{GLXy0+K5! z6B@|MKh?tpRp?KB@;|AEp%s8^{I#A%xY8pN0Y~}Me%xQLW%)nVox1M$zo=m$r2O?- z2sEe}{!kZ#4gRQMLA{|@|GTOfKJ=$d{l^^oGlLfB)&+GIR3ykO7{&Kl21`Ng1KY(P zUL-(536wmL$p1W^f(q^b=t%U6@4s5#{u9snS2cx1MM4pmfR3)-fYtIcXrlye{D6wF!8V|`4$}5TDLxaPis@3}?lI}zrVkZb8j8uXi#+ww> z>5>dyEFia0NEmQeNq`uLpbYveLE}?UF@l5=NM1M%dL<)bu?6TK2r|O51UH95A?mV# z-ZKEphYmthNT&jWQXjY&%9Kd5&UnGzJ8 zp(8-Z_#cm<=;;~fAZvj}LIOnMgsyAik%f?U6b)62h87I!2T_EpK{A1`h$x`np+LjZ zr3n-s6e>?(f%L~B!%>LnpzetH5HKVRUoTShItliQ;*!N)o%BNzLm2`F0R0$3HY5T{ zHsL(7}x;PEM|g4etFpS2np#Ql{{<0QJ5qoK3Zc)1wjVV zvIs!}>M0002)l^bhUpcNXu#C5168k{?ew}0LkB}bIYdA!hNy#r96<^7imDfBC`)y% zRYh$GG7bAZK=U2RY4zJS$?xpaPL#T3COh3b;CyHyU!M2u&6#lmP>lVJGO6 zz=TB9Mo3ps_>oFj&@bdANX`;aIQbAzhT{Yl}+7i_+TnvJsu6%QN2o6*WC&M{Npg@ZzK|p4MzDg-@B$*O*xd|l!0|@ne zrguyA->~gJRa3}{B-jwjI4IpPRtm}xv=6A9FblZt|6A3R-mOGD!ymmvsn<>g|NUM~ z{oJE>D}UMhKc}kv@77b2289c~1KkZ!n?Rz0E5VBN8V&pbW)0&6Aw=Z_jz@#iKs^DK zgz$-A08+2FBno<3aC}5x1QaOv@DIHOfJzF@Qgm2UiPamX9QtJnk_M=%M#%^sh&T-T zh$g52$OsUAC{n|5=)|C6LSsyT1jBOhLd0`WLezL5rXa!y91zeDX)yrwob+N2{cn&% zRY4*H#X>{?^@5i|D+j}eHic}Wg6boZfSE(3#A$kQr@O75%?dIgc(MRV2DF?-meBV} zAoH>+$>{Op`DBC#y`cprYBHf};t=S0EK&dshDT~pI8d+X!-L3*NI-+uqhEwP2i*oK z8iJ+3K(SOolp*dz@I$P`M~GM|0vZ8mOad|hgRT?Wknnw(lT0W9A)c5JZLu~PdIhg2 zC{Fcgh#nV8ngaO@@rNY9kWt8@R-w?Z*Mk)j6ZjVhG-5WoUr-FubCVE3QCaETc2Emc zA!x-S@Gw~W0J#pGA><)6yacg8+!h5iVNsXhZXC`e!C&=m3$hjRH5yn5g$Tw7g`7;9 z^jZmjK~&PS6S6C)1;-1RcRh#l8d4I1J34-7JVKU5ZUN7MK*k}J(unJjrBw)2>}@?8Z`(8#E_^VIOu7RlNc})Jxoh9R&PLe)sW$kM`f8q%T(ttP(?Z13bsO` z*ua!PHGr|o;3p8PQ4oS-m~lA zVWeYS&HuiL69_Lv(m^*EiGc*)g9VCu;+BvQ(SAbzTSEnn zbPt!(%VKa5y>{euxRGgKa^TsJPr)rH1%(@uD^P*r0Xz7mo?_thdRq<>`cH-pH`W~) zn{}P;$2WZX_Z_|O70lmMSpS9k=4F2bd5un^f0 z;q|NnB^j{<;Se-XUwMKBTgWrWA^Q3yM1PQaeJJ>#i#dpZD*6y0tP~y;cR&e&1P4(M z;SCbB3~G%23=gk{f&pnnZ#Sa1fn^Zr`Cx?uafmt`!6L9<8izCz|fr;9;^6_HmFBM}j?00gF~uYCZMC!n!GXw+Ly zP)-0fBq4MXAkSf03Casd`;gtCKQQQ4!btVJrdJOl8e|~z$YcnpprJ^|JUl=*K@(yG zP(=R~iVc`Mni8;P1zHhS4QRM9hX{n*Ah08(BdG&)6h=tWCX{I?w2-Hem|%Z+E?5-& z4=qeyujZgE>6ITMjRxk+f=QtF39*aA1i?D7-T{R#3=s*8#3z_NzUecE!WGZ2V~Nm> z*oCsRfG6w8UyoHt{n+w9K`Z~StUH7(^Eay=_0|xg0OTIT^FMcS5vKIM%HQlkZo@hH zdXB%I10JpSJ_}X>>RoC0Ujg&}-nYON^>uz&t?_r~Vs(!m2rx~m28N|~E>#)sOvA~L z#Go)^g^jLx!^+_oP%~+mBD$%%FCpK9H&SRLqn8cxf;&imTEPaA1KJAGNrCmF(FyHK z=dt=7kwRfYDl`$KGRTBbr?H3+i;Q4?`hXy~>uRf_M{^b}Egs*XBA~hz&_RV9{qL%( zg7uxyzx6e9NILqm4VXBzeVx97bD~QCRSM6jMvr(@YA!Kl0i(rHBi+Tgo2Ct{VUj#H(p%EbIqT`Q(1F;$D5IssH zN$@CyCBy{8IxJ3NKpGTC?)uVPqya9(`oJtIQ+d zLuQ9SU!W;LA3zkr!YV8$#KR(mB1|D3LSIBnL?56|S0xZGC~G9zC*Ws*2h0(@3M4O_ z2w6yPwStK2LJ!)tdL>lQ3?`7U5fkw+FnWEp11PBgf(c0tISzDHUlf5D4T6daLP5_1 zp%sRO<#3>jm_?w2_6xYH3<(U8QfH>%9$38#r-N#RAqhdb)b!3;YSKYdweI3RtrWO&?Ruq9Q>{S6^g`t~2`0XaK;# z@Hkj-09J^#1W4O(HoZ*1ynwNwuEAndXe|QxE3Gd{z&dB7VYIX1Yw$pn>{wui)CIbO z+2v3X7U((njRiJXdx3fk4Rz!_)HdiIL2c5Pw}8#ai2nGEo-LLYpnZduI|N27oI|sP z$Erk?MtQ0)#Dt@PGoW3DmuUCYEmJ&;4( zL&A|T8+7JHcXDyTUNbdJ377ht(L9R*>Ysj& zsk^t-UzMZnePg6({pmb0>Vm)YXSE{n{88aCk+P~k#E)a~DU7nBc|m_x7yQ__Y#AQg zi@;a>=Wp*NMn?w4_9E@RZ~5`t-@bzy77!h1CAhdmMMtV)sF|6Sej)d8GkthJw*5X( z{p$al1O3a0e%zV-<<|Cou~sd;TA5i5u(IlG<$+IsHwfxag8*2*(V_Mot$55+WK^^j zE8s&&v>Ive86rlj?y4M)Is9=y6T|=htg%aW`(}n^5@o+uIkfp0@x-o2E75AkoRxu> zicijPv2eS0dWy(wE7Et$<8>dVuX;G}mP^037E>NxtYq_BkxC~jj|r^r=5u00;ndkx z%dYlxsAN^Vopr0_HCMWM%_7bH``jNNUNWQn*9NhrZ`5zvq*C|2Lx)}Y^v0r}Lx7&Ky#TRI06Pcd26MtkcH^J&|r*OUwO6 zd}&$X@TLo)+k2gTy*B4cV4aUq;U^Do=rwn1Uz>$qC2QSz{OIn{yrq@amdcttAf@`( zcBiU+JooxWw|uK&E8NMXRBmO1`kvdHzTUE7z-YVi79E>@+PS=W>5lf0TO-}Z{TlKW{=4n-@G~LuZ(dJ^iw&#v+ z>DM{=s9lZGiwmDE_0inxvK!486-Rp%{=B>?U&HmRO<{)&pPW-Kk0v!K*8ZEf>Fnx{ zS2O2do4Mlc_7mF=T&OZ|l2_3?&VAg%OC{EdpExQuaN~_~eEh01fioVw2`aw+{wOW> z@aXzC3-=A__2kIVYnx6Ta+7w9r`VU>hnp&|uWbIf@QFNIu~Yrl z?~((Hx@;To^!nz6j!7Atoo7^Gn%%eT=HL9)%lUgwyn%} zpMC7!X@5UyPySSww3Zizz3=aJ`Eqgdnab_X&h=d~`|fyQ#=OO?bCz9N_bTmBIqu~& z>#q;X4gNa#e7_ZZv!T__m8pI*B_{TI&%SJExmUN+G7o>caOoXae;?84Z>(I<{q%>c z`Gki@{|I7j!?bXCxxUlKzO8#NYnD_cnlzEN1S4v;49j!2qNWPA0wwS)O;D=Js5VyC z6w8vVNK>{P$&j`TFVVIVtEjdlMbQjNbG*PyHvaaVBGrLbB+Cj6`8}?7*Q09NFh$iv z31!7#7>HK*i^E^~I7rgpzFRL6dl-L2;UTIOEs+1ge1Xh3*q1 zL0lbOy~S*%s8Y#PeQc$aev;BJZLeq7<7MS-Mb^BHUGZ4Su-YV!Ca<~m-{W?fsAe;! zdZGCh%EkT_zNlz1GCDR=)yyc07#3hO&-$_KWv7!q;`{Eoq+AmU73nmNj z6r>zIc(=kOLc#;=y9TL))JP!wBX{9Ce8Ev}a%8w3;eqG(i@E#y0>y&Q|H={!@ryJ(RpcwDwkx#@D)PNW_=|lYuJ`KI+wzsJ75h<@Qh{rj&R&deV&V_-;2vscA?IhP;#6=Qx9j}4a zSJiso_Qmv`hpxx^e!RY6BE92i&dlVEZWgk1nO`AUQb9BJQ&2#vdqYFPhGjK|e z{7a>L=E_rwmYeaA_h9k1Ui{n)m;=2`9N-?@Q z`&Zv^p@jVOIgi<}1C_V5b`r`okJ%9V>2b}Zb8e=xneB65Zhvi=I=kfQeW6+HXNXS{ z63)L~mNb3#Vuz~%z6rwKoaRq`)1plC{jbj4H*DRumrFjaO=6oz-5R%OTw5oLx1-{y z%!?EH-i$t*n0@)IYs#L((?0KU8sBTlrA3QcO%4w}npClb!{#xKN1LS=N*uWOd8vxK z#`P;)V!^Xn3(MCds%CuCX1=&;)%a-a;1#`h=M{S%-PL#8r0(w-^JO0fN6nn;+@p>% zfZ5peLC0sptl<^`cgKu<_wHT2QmI|XKCk`ySg$gpE;p0oPP@<86nwu==`ItRng_Mq zJf`#JF)?}Nl5UgRpN&!*H@$EmXv(f)Zab*1CnLQslsI^}%eNh`zut`A(YNc@BOY5X zC3bzwgz^y=*h4jY6rR+hYmNKI*V!dIe{7n$)bw^;2VvLN;CqDCvr@{5vWcHw)Mcyr z*ry!7+HZc^%TXaEhgIxd!>`8r$A@wY`_;|2oW5ert#^SA6?cs8WHoT6wtwoaaUHBI zR@9$YeVdb0r`Z#mc`vuHnd@@QX_2XBrvaYf{SUnxe^xx<=GZ&QvFtso=5uqE0~%ZD zkoLQCL*gn(eNYi4RRL7Q3TFw@Rey4|A;ek$AAO z#@$u<4!gI#ta>-Zv2Bmy1F0vGYufvS4ru3*re1KfIX%s{Ez`%bO+c+$XBMqI{>-}g zjG7%kJ4b)+$E^(>xao1L+?jRmPZ-qtO4Cj4du_G+{OJ0d{auRhzCESskx!FXmVaeA zy_{>3Q(M!y49g43ZXvhi>!#}#%|E?fesq5L#C?08g*?tX*XHTkbNlAlR(UXQWb}LA zS5poI9C`ow&HI?4?QiaOTw+=EQ5Uz8JK7aFeq<+hGm{HRz-g5iP=5<0>5>MZE zib-kKI?Vb_hkIu`zOt0MPWVljTE%no;&m>$M~c&3S5)h$eHlHuxnH#8W4HaT-^j$i zTi4urQRrfZ+ssWvUT!F!}-6v z`_S{_@}JJXGX9=;JG0cAxJ$I}v-Cv=I)C_5iJk#Pp&2 zr2J!>OZ3Sr5twYd{p`J77Gs^S-y9Lqf2IG&vY)q|mMc7Zc3{)x389Uyj7(a!Be-x- zlObtUKhKw??6HR{&RsLH_xoGz0%L~v1K`*A&X_SJS3&adKAIS+^?Itr=!nyOwvv?aG0x%_8n^o0inB>QoOi^UkB| zPqCK`?EC`=c;(p^cp7V}=X>ap7-e-ozn59b(mKl9)*Q!G8=^~d> z(@uq*BO>MtFv96T{dUCcHEin)c#?$I+re7nHt#daR2y6l4JHTzgNXZ ze(_kZjkq|HvPs>%J-VmM#VGITYu#OnY^iFw>=J*ZF75iOb$hi+X&f)GYgu zJ0D-}+SY#9x=eS*PO22!%^&YlO=Ab<#a$mY9g&aFbuW%msc-V=Dt9Rb@Z2Pk45%KxS zinj-UYb3m@w0Qf9+jUlSqc=3EdG^kko9oUzOI~t0m8kxk3qiJMe>mZ=DSk)9-Q$O} zurVz%8@gIGIW%qF&JAkgp24BY?6tWcDlFdl_}QN1A&YwrV6OP}svGCMr*vH9eJdV~ zsCTSn!;XD>?w;{9<A%KOhLCpiA= zsx{W@7G-42$(eKDZmCiwx@@mE=;(x-qY?wpy*8`3Yuemm))yP~tT?LLNurIqT8eC= zslg}CytSayU*|me7|@ohO1myDv~{{);nO9n+<7;1hvm12)gHcGV$q)-xPM=tq6drj zJ5jp(_QpOBJCyHaA=hbG^VBf^_B#Tb6)w}Lt-G7Kc{8h0HA*KPTNGZsMeVq4A3s)a zy0CVg>eX__mK=R6w>f|EU2xZaqZZ7_t2g`0Ij(PL1Jn8j<1MP!s_;DdMPR+4QD)7X zo^5Jf`$4$F_Rfv-y&IZYPxUC(ruj#wIMG0TH}~87EUOa}j?e7(HL`3)@rWw;oPVLtE3Yi_da{Q z&zmw~iSxtF2Ynnb?2MfD)$N_DlX(rHeRhpLW?rd{l&sdPNA-1k$k6VYuWujT|AGFvuXu;|i&6@Yt5Rj`3zv+Q2bS3t_whW( z5bM5mm}oa)MSpRt<%~6h)55DHPA|ImbDfPTnWf&UpVk*=E#unVth}a9qvdx?z35Rd z4lUecsGY4PANtLY2WKx9+x^;<731Ti4s~n&*8?J{@{1pgZgR(4LGxo3#5clwv!%Rf2#TE;KWP8OIiru*H!o|Uki zLREORF){9dL&&*4$G`616t}PI&R!vPqQ)1$%Jpd-|7_^C+L`66&E4L=*QV~?)N=3X zY@?1{>P!e(*7KeZoj-qmO7+(}2K3)Oc-QbORe30?L>ua%>8>J|SH;SjSvivhTd~A| zed7lArY_M-eW$jwaLW0uT%&R)+>&l46?ydN(GZ&!8RG!UaX)tJM2n6~GA>*@nsoHSg;Rw}tvoS!x?62u>-lzJfs#+l4-O5Q z6^*J~*|lh=B~v#{o;+L3-&s1jM(#k@$?tcNov2gHh^WB*8*jJu$n^H->Q`{S+&iq+ z_5&eTug6?Tw@qwa_MvNg`|TBn))^QwWXtnsUUBgqOZORKK63h%#*?@O)YENGoIXk_rhBLHT2FY)7SR4h^Tbo;GK614?XHJIVS901OK{D2bp#AZhES5 z@Uvw@D`yRo-d0FHalP@@9y5~v&l&{>hLbuv?_PjZDwR!0> z+UVQ0x}BZ>Wc$^D!$NmdUeJA;!>-hePdGmOEj%GJ~bDM)f>J#eB zHPQ9td+YO!CNA6Dd)A0SlRqyT|7~8c;tft5*>qyx`*p)y7hLabT6NY$UEPpyC~Aln zcXDFMspD2((&CmJ$g<5{Vn6uS&StNgc^x}evsAlOAqTo?^@)q zoF3D=KYhd{^>Tc@O?mGhpZ40}y=LKp8a1j{bF9Hve_eFWZwW+$2P3O?Evi|mM@yRD zEm?Y7p&Y-(qnl4Uf3ki`{kM-lKUmv-{B|3c-1q4(;$JP=-f_YmOWU#JSo4gRCl>E+ z7WHAWvG?jvxP8*5#uqW`Oh%P2UmVW_KTexdg>-Uy!0t_Iy=I@BFP43a)-=u1b>A?L6!Z6vQ6o2Qr2}t$ zvb~jYdW&nikIl75?>FNmWB)l8`)hWzSm)pS=%R}G($jg5vbzmC&o1??d?hAy zcJkTtRc`eiW^WU5M;@F(XCB%Y`Y6nmiClfk~NoQ~#Rceyil zO|adP&oA~JAN+LVnTb98zr>u?TtB}*6*Dn1qI|CrLjn(FcD2lNn!di>?)L4wHuO5u zF!#ykZn<@z9(ma(G56A?XC@EFKHEmTP5xY_{o6CS6I)gTqg{FD7|%BjMvA@!YOwmeK)8f8kmeab5LTahD2eAC))aelRAWREI# z&i6L$x%@6X;Q6wv4STF=UuIXU+i7O5v3c{44o-b>t55pZX_=STl{j+k>cU!wnmm~D zcIwNc9-^yj^Wg3gUST>jeBAp`?yhdjh;0ZjBU7Je7Sz+X7xPQBsbb% zWA?JK*^C+WT+G~#&1hU=o@REe?u?YGjm-}dN-fSd8FpPtmp2pWoW#-xzo4 z{-dv-E7hFV+^gILra3`epl6kQ6W60**%LM0`=>ip4Ld)CI&!hYt7Bik{MM^W>-^~I z5o0YTZQDkWlOL`a-wd(8LD8)AxbYKfk2thw+5X_nx1-kiC)^5cx;LOlW}m(^-Dz^` zen}R6yryoNeCb8cdG;O72=B$L-t*2xEvU;k+}EatSGTTY)#!yUTqeKp%uJYQ7H8RI zb=gJjoX3ocCJnz!?!}Z*=7azCI zX*t#P^tU62Zhj3N{2;Us-FNWjukDw19aq9~$1hE&s#z!Q z3PvQ^b1U-xTYE0xdTNs!Uw%tJ$B*nkaaP{I4TCxl^r`i%_U1I}tDEmH=zS=1_|zSZ z#x5DWdr9j@TZMsZOAj6R)pz}8i@}F8PJCUNU&i<3d@{W1yMu>qu8i2de|Wkw_T*XN z5a$w?cyPP;Xlp>%GPT(9j<+wh%S^vuJ^X0a{rQc~R6D%Lf6tKA4Q04@_I4KrwdpwP zbESLReFHx{9~WmEd7#RHq`JNBYb06bExm7k+F|+NFXYL+U(}hFuet^P_S^NFska9* zejkQR>u`OFS9*4A%e0$4a?_JHcDXlu-Ni*Y?LK6$%FLTl+abiNVv~Bi`nKwoJ>`7v zCWk%uZSyzD7V}5$-o#aVwEJP;%^n%UgE!xt`5-9e^MK$bGgt3vbau{X#{v1()~Fxe zdhK3k5mv`%@mGTPeeV=}&Y_S)$Bu4)=a0;P;*T6n{E-YD2)+-Jl{y@i|9in1=VnD7nUwqpHgV$$(OXCM5waM{x(J^fbRT{u6)I>@TL z`Qxfpt?lhI+81uusOXw^zvV=gt5WWvo6p%K^N2b>UDWNAd@XV{`o$T-|zPlgrSHzJm|74x*WuM|9fo#Rrm4 z_9bT}A3E>wIP$7;esjIbVK3eX?df%YW6v`YZ!=~#>z0sMri|;js2x?Boqf9BVR2B$ zz>U7ibll#l86%?3EU^quf0vf+(c0tbSguThy2`uTi=d?q-+ucNeeA)vfTq(QTPsA$ zu(oZ(7N>WAb0a%F#)&6Yp5X#Hx)qmWZy<-LCL zbn=?=<*Kk5wQT*QPQcT)xm#LnXm=<#u0qy%En|1+Z<K?x~{(rW^DW3Sf@88|4!}m7a&sNm$UgG2$ z8zIWUYP6N41_XsU*MD{JNPVjy#kqbr){F3pXr%@QwHXqr`VQ&nCl3jh1*N{LOF1*A zScllqh)^`PtYSk$!lE2vo$HHOgrGX$v%cBBzE!~?(ZSC3X*<%EBgpzV&&tXvQqdfI z+&zDshi}gH1EZrO9PI4}4H{%Oh_(xl46r8!L9iz%dy2Bf5w=l-!=lAl+pwqx-!Jmx zGVW@W92pd$uduMvFDpvnG11QTaqEIHMf`H@uqeBN@!84Yq4wB;#Tm5y&x_%5*yPYD zGF*v~)kqija5*L_C?L$r-D@C8IO)g#Yp4DY`p@@M+&#Ohkx>|c3u(vwIPzcHz8~vk zuMh5*!4?4VpFM*j{|-+?Ok_v_IErkqhNz)xSacK~gZ%X|6xl(>>Wk>`$RGD87^!}H zUv+?${qGx{?EmISCv4N#wTRI!VnjqpkSrFgUBS~A9R6e1fB%_aIln*DALb=ijKBjC zzdjI-b!eqOk%|>KstZL>CR>8GrAa@EcAzK+ifl#@4g@CYPe=YfP5O4Pa3x3^{L2*> zTY~f>Ob!&`K%?c&{eFdCj{L(F3dRr~=@%Xz;^GyAMr%~K7M--ks#|!ZV%5P9{P|x4 z_;J`D&j0Cn|IrwJ^ot9Q{XYV?m)Ac79vb>5%)PuEbSKbltgX9COiYmC;OW_tHle|9 z+sZ_6whZCX%C@DaiMJ&@7&n>`TADm5_W}_9cVM~|znuF|sC;)f zgcw*m2J|yf>EC`2c36nyTz?Qk*1}@^KCwJ=(>%`EuHt|?kL-GQ@d*Stu{@{NGoxD zY@H2l&-C)@9=vqTpui0$%!1{V9{q#cpNg`2 Date: Thu, 2 Apr 2026 12:54:12 -0700 Subject: [PATCH 2/5] fix: settlement overrides for upto in typescript sdk (#1913) --- .../core/src/http/x402HTTPResourceServer.ts | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/typescript/packages/core/src/http/x402HTTPResourceServer.ts b/typescript/packages/core/src/http/x402HTTPResourceServer.ts index 7f621a8572..0cd074ea81 100644 --- a/typescript/packages/core/src/http/x402HTTPResourceServer.ts +++ b/typescript/packages/core/src/http/x402HTTPResourceServer.ts @@ -600,13 +600,17 @@ export class x402HTTPResourceServer { try { // Resolve overrides: explicit param takes precedence, fall back to response header let resolvedOverrides = settlementOverrides; - if (!resolvedOverrides && transportContext?.responseHeaders?.[SETTLEMENT_OVERRIDES_HEADER]) { - try { - resolvedOverrides = JSON.parse( - transportContext.responseHeaders[SETTLEMENT_OVERRIDES_HEADER], - ); - } catch { - // Ignore malformed header + if (!resolvedOverrides && transportContext?.responseHeaders) { + const overridesKey = SETTLEMENT_OVERRIDES_HEADER.toLowerCase(); + const rawValue = Object.entries(transportContext.responseHeaders).find( + ([key]) => key.toLowerCase() === overridesKey, + )?.[1]; + if (rawValue) { + try { + resolvedOverrides = JSON.parse(rawValue); + } catch { + // Ignore malformed header + } } } From 2250caec830f553caeb7ee8f8997803139f9dda1 Mon Sep 17 00:00:00 2001 From: Carson Roscoe Date: Thu, 2 Apr 2026 12:59:07 -0700 Subject: [PATCH 3/5] feat: refactor coinbase/x402 references to x402-foundation/x402 (#1912) * feat: refactor coinbase/x402 references to x402-foundation/x402 * fix: format * chore: changeset fragments for typescript, python and go --- CONTRIBUTING.md | 2 +- README.md | 8 ++-- docs/advanced-concepts/lifecycle-hooks.mdx | 10 ++-- docs/core-concepts/client-server.md | 2 +- docs/core-concepts/facilitator.md | 2 +- .../network-and-token-support.mdx | 6 +-- docs/docs.json | 2 +- docs/extensions/bazaar.mdx | 18 +++---- docs/extensions/eip2612-gas-sponsoring.mdx | 4 +- .../erc20-approval-gas-sponsoring.mdx | 4 +- docs/extensions/offer-receipt.mdx | 8 ++-- docs/extensions/overview.mdx | 6 +-- docs/extensions/payment-identifier.mdx | 38 +++++++-------- docs/extensions/sign-in-with-x.mdx | 2 +- docs/faq.md | 6 +-- .../getting-started/quickstart-for-buyers.mdx | 38 +++++++-------- .../quickstart-for-sellers.mdx | 48 +++++++++---------- docs/guides/mcp-server-with-x402.md | 6 +-- docs/introduction.md | 2 +- e2e/clients/go-http/README.md | 20 ++++---- e2e/clients/go-http/go.mod | 6 +-- e2e/clients/go-http/main.go | 18 +++---- e2e/clients/mcp-go/go.mod | 6 +-- e2e/clients/mcp-go/main.go | 8 ++-- e2e/facilitators/go/README.md | 20 ++++---- e2e/facilitators/go/bazaar.go | 4 +- e2e/facilitators/go/go.mod | 6 +-- e2e/facilitators/go/main.go | 26 +++++----- e2e/legacy/servers/gin/go.mod | 6 +-- e2e/legacy/servers/gin/main.go | 4 +- e2e/servers/echo/README.md | 24 +++++----- e2e/servers/echo/go.mod | 6 +-- e2e/servers/echo/main.go | 20 ++++---- e2e/servers/gin/README.md | 24 +++++----- e2e/servers/gin/go.mod | 6 +-- e2e/servers/gin/main.go | 20 ++++---- e2e/servers/mcp-go/go.mod | 6 +-- e2e/servers/mcp-go/main.go | 10 ++-- e2e/servers/nethttp/README.md | 24 +++++----- e2e/servers/nethttp/go.mod | 6 +-- e2e/servers/nethttp/main.go | 20 ++++---- examples/go/clients/advanced/README.md | 8 ++-- examples/go/clients/advanced/all_networks.go | 12 ++--- .../go/clients/advanced/custom_transport.go | 9 ++-- .../go/clients/advanced/error_recovery.go | 9 ++-- examples/go/clients/advanced/go.mod | 6 +-- examples/go/clients/advanced/hooks.go | 9 ++-- .../advanced/multi_network_priority.go | 17 ++++--- examples/go/clients/custom/README.md | 6 +-- examples/go/clients/custom/go.mod | 6 +-- examples/go/clients/custom/main.go | 11 ++--- examples/go/clients/http/README.md | 8 ++-- examples/go/clients/http/builder_pattern.go | 11 ++--- examples/go/clients/http/go.mod | 6 +-- examples/go/clients/http/main.go | 3 +- .../http/mechanism_helper_registration.go | 11 ++--- examples/go/clients/http/utils.go | 5 +- examples/go/clients/mcp-chatbot/go.mod | 6 +-- examples/go/clients/mcp-chatbot/main.go | 8 ++-- examples/go/clients/mcp/advanced.go | 8 ++-- examples/go/clients/mcp/go.mod | 6 +-- examples/go/clients/mcp/simple.go | 8 ++-- .../go/clients/payment-identifier/README.md | 2 +- examples/go/clients/payment-identifier/go.mod | 6 +-- .../go/clients/payment-identifier/main.go | 16 +++---- examples/go/facilitator/advanced/README.md | 8 ++-- .../go/facilitator/advanced/all_networks.go | 6 +-- examples/go/facilitator/advanced/bazaar.go | 10 ++-- examples/go/facilitator/advanced/go.mod | 6 +-- .../advanced/payment-identifier.go | 8 ++-- examples/go/facilitator/advanced/signer.go | 4 +- examples/go/facilitator/basic/README.md | 6 +-- examples/go/facilitator/basic/go.mod | 6 +-- examples/go/facilitator/basic/main.go | 15 +++--- examples/go/facilitator/basic/signer.go | 6 +-- examples/go/servers/advanced/all_networks.go | 10 ++-- examples/go/servers/advanced/bazaar.go | 15 +++--- .../advanced/custom-money-definition.go | 11 ++--- .../go/servers/advanced/dynamic-pay-to.go | 11 ++--- examples/go/servers/advanced/dynamic-price.go | 15 +++--- .../advanced/eip2612-gas-sponsoring.go | 10 ++-- examples/go/servers/advanced/go.mod | 6 +-- examples/go/servers/advanced/hooks.go | 10 ++-- examples/go/servers/bazaar/go.mod | 6 +-- examples/go/servers/bazaar/main.go | 12 ++--- examples/go/servers/custom/go.mod | 6 +-- examples/go/servers/custom/main.go | 9 ++-- examples/go/servers/echo/go.mod | 6 +-- examples/go/servers/echo/main.go | 10 ++-- examples/go/servers/gin/go.mod | 6 +-- examples/go/servers/gin/main.go | 13 +++-- examples/go/servers/mcp/advanced.go | 8 ++-- examples/go/servers/mcp/existing-server.go | 8 ++-- examples/go/servers/mcp/go.mod | 6 +-- examples/go/servers/mcp/simple.go | 8 ++-- examples/go/servers/nethttp/go.mod | 6 +-- examples/go/servers/nethttp/main.go | 10 ++-- .../go/servers/payment-identifier/README.md | 2 +- examples/go/servers/payment-identifier/go.mod | 6 +-- .../go/servers/payment-identifier/main.go | 10 ++-- examples/go/servers/upto/go.mod | 6 +-- examples/go/servers/upto/main.go | 8 ++-- examples/typescript/legacy/agent/package.json | 4 +- .../browser-wallet-example/README.md | 8 ++-- .../browser-wallet-example/client/src/App.tsx | 12 ++--- .../migrate-to-x402-foundation.yaml | 3 ++ go/.changeset/facilitator-response-errors.md | 2 +- .../go-erc20-approval-gas-sponsoring.md | 2 +- go/CLIENT.md | 18 +++---- go/CONTRIBUTING.md | 12 ++--- go/FACILITATOR.md | 8 ++-- go/Makefile | 2 +- go/README.md | 4 +- go/SERVER.md | 20 ++++---- go/client.go | 2 +- go/client_test.go | 2 +- go/extensions/README.md | 8 ++-- go/extensions/bazaar/bazaar_test.go | 8 ++-- go/extensions/bazaar/doc.go | 8 ++-- go/extensions/bazaar/facilitator.go | 8 ++-- go/extensions/bazaar/facilitator_client.go | 2 +- .../bazaar/facilitator_client_test.go | 2 +- go/extensions/bazaar/resource_service.go | 2 +- go/extensions/bazaar/server.go | 4 +- go/extensions/bazaar/types.go | 2 +- go/extensions/eip2612gassponsor/types.go | 2 +- .../resolve_signer_test.go | 2 +- .../erc20approvalgassponsor/types.go | 4 +- .../paymentidentifier/facilitator.go | 4 +- .../paymentidentifier_test.go | 6 +-- go/extensions/paymentidentifier/schema.go | 2 +- go/extensions/paymentidentifier/types.go | 2 +- go/extensions/types/types.go | 2 +- go/extensions/v1/facilitator.go | 2 +- go/facilitator.go | 2 +- go/facilitator_hooks_test.go | 2 +- go/facilitator_test.go | 2 +- go/go.mod | 2 +- go/http/client.go | 4 +- go/http/client_test.go | 4 +- go/http/dynamic_test.go | 2 +- go/http/echo/README.md | 20 ++++---- go/http/echo/builder.go | 4 +- go/http/echo/middleware.go | 6 +-- go/http/echo/middleware_test.go | 6 +-- go/http/facilitator_client.go | 4 +- go/http/facilitator_client_test.go | 2 +- go/http/gin/README.md | 22 ++++----- go/http/gin/builder.go | 4 +- go/http/gin/middleware.go | 6 +-- go/http/gin/middleware_test.go | 6 +-- go/http/http.go | 2 +- go/http/nethttp/builder.go | 4 +- go/http/nethttp/context.go | 2 +- go/http/nethttp/middleware.go | 6 +-- go/http/nethttp/middleware_test.go | 6 +-- go/http/paywall.go | 2 +- go/http/paywall_test.go | 2 +- go/http/server.go | 6 +-- go/http/server_extensions_test.go | 12 ++--- go/http/server_test.go | 4 +- go/interfaces.go | 2 +- go/legacy/README.md | 4 +- go/legacy/bin/proxy_demo.go | 4 +- go/legacy/examples/mainnet/mainnet.go | 4 +- go/legacy/examples/server/resource.go | 4 +- go/legacy/go.mod | 2 +- go/legacy/pkg/coinbasefacilitator/cdp.go | 2 +- .../pkg/coinbasefacilitator/facilitator.go | 2 +- .../facilitatorclient/facilitatorclient.go | 2 +- .../facilitatorclient_test.go | 4 +- go/legacy/pkg/gin/middleware.go | 4 +- go/legacy/pkg/gin/middleware_test.go | 4 +- go/mcp/CHANGELOG.md | 2 +- go/mcp/README.md | 6 +-- go/mcp/client.go | 4 +- go/mcp/client_test.go | 4 +- go/mcp/doc.go | 8 ++-- go/mcp/server.go | 4 +- go/mcp/server_test.go | 4 +- go/mcp/types.go | 4 +- go/mcp/utils.go | 4 +- go/mcp/utils_test.go | 4 +- go/mechanisms/evm/README.md | 6 +-- go/mechanisms/evm/eip2612.go | 2 +- go/mechanisms/evm/exact/client/eip2612.go | 4 +- .../evm/exact/client/erc20_approval.go | 4 +- go/mechanisms/evm/exact/client/permit2.go | 4 +- go/mechanisms/evm/exact/client/rpc.go | 2 +- go/mechanisms/evm/exact/client/rpc_test.go | 2 +- go/mechanisms/evm/exact/client/scheme.go | 8 ++-- .../evm/exact/facilitator/eip3009.go | 6 +-- .../evm/exact/facilitator/eip3009_helpers.go | 2 +- .../evm/exact/facilitator/erc20_approval.go | 4 +- go/mechanisms/evm/exact/facilitator/errors.go | 2 +- .../evm/exact/facilitator/permit2.go | 10 ++-- .../exact/facilitator/permit2_eip2612_test.go | 4 +- .../exact/facilitator/permit2_erc20_test.go | 4 +- .../evm/exact/facilitator/permit2_helpers.go | 4 +- go/mechanisms/evm/exact/facilitator/scheme.go | 6 +-- go/mechanisms/evm/exact/server/scheme.go | 6 +-- .../exact/server/server_money_parser_test.go | 2 +- go/mechanisms/evm/exact/v1/README.md | 4 +- go/mechanisms/evm/exact/v1/client/scheme.go | 6 +-- .../evm/exact/v1/facilitator/scheme.go | 10 ++-- go/mechanisms/evm/upto/client/permit2.go | 4 +- go/mechanisms/evm/upto/client/rpc.go | 2 +- go/mechanisms/evm/upto/client/rpc_test.go | 2 +- go/mechanisms/evm/upto/client/scheme.go | 10 ++-- go/mechanisms/evm/upto/facilitator/errors.go | 2 +- go/mechanisms/evm/upto/facilitator/permit2.go | 12 ++--- .../evm/upto/facilitator/permit2_helpers.go | 4 +- .../evm/upto/facilitator/permit2_test.go | 8 ++-- go/mechanisms/evm/upto/facilitator/scheme.go | 6 +-- go/mechanisms/evm/upto/server/scheme.go | 6 +-- .../upto/server/server_money_parser_test.go | 2 +- go/mechanisms/evm/v1/network.go | 2 +- go/mechanisms/evm/v1/utils.go | 2 +- go/mechanisms/svm/README.md | 8 ++-- go/mechanisms/svm/constants.go | 2 +- .../svm/exact/client/duplicate_tx_test.go | 4 +- go/mechanisms/svm/exact/client/scheme.go | 4 +- .../exact/facilitator/duplicate_tx_test.go | 2 +- go/mechanisms/svm/exact/facilitator/scheme.go | 8 ++-- go/mechanisms/svm/exact/server/scheme.go | 6 +-- .../exact/server/server_money_parser_test.go | 2 +- go/mechanisms/svm/exact/v1/README.md | 12 ++--- go/mechanisms/svm/exact/v1/client/scheme.go | 4 +- .../exact/v1/facilitator/duplicate_tx_test.go | 2 +- .../svm/exact/v1/facilitator/scheme.go | 8 ++-- go/server.go | 2 +- go/server_hooks_test.go | 2 +- go/server_test.go | 2 +- go/signers/README.md | 4 +- go/signers/evm/README.md | 10 ++-- go/signers/evm/client.go | 2 +- go/signers/evm/client_test.go | 2 +- go/signers/svm/README.md | 10 ++-- go/signers/svm/client.go | 2 +- go/test/integration/core_test.go | 6 +-- go/test/integration/evm_test.go | 20 ++++---- go/test/integration/http_test.go | 8 ++-- go/test/integration/mcp_evm_test.go | 12 ++--- go/test/integration/svm_test.go | 14 +++--- go/test/mocks/cash/cash.go | 4 +- go/test/unit/evm_client_facilitator_test.go | 10 ++-- go/test/unit/evm_eip712_test.go | 2 +- go/test/unit/evm_test.go | 10 ++-- go/test/unit/evm_types_test.go | 2 +- go/test/unit/evm_utils_test.go | 2 +- go/test/unit/evm_v1_utils_test.go | 2 +- go/test/unit/http_test.go | 6 +-- go/test/unit/permit2_fixtures_test.go | 2 +- go/test/unit/svm_test.go | 6 +-- go/types.go | 2 +- java/README.md | 24 +++++----- java/pom.xml | 2 +- java/spotbugs-exclude.xml | 6 +-- .../x402/client/FacilitatorClient.java | 4 +- .../x402/client/HttpFacilitatorClient.java | 6 +-- .../coinbase => org}/x402/client/Kind.java | 2 +- .../x402/client/SettlementResponse.java | 2 +- .../x402/client/VerificationResponse.java | 2 +- .../x402/client/X402HttpClient.java | 8 ++-- .../x402/crypto/CryptoSignException.java | 2 +- .../x402/crypto/CryptoSigner.java | 2 +- .../x402/model/Authorization.java | 2 +- .../x402/model/ExactSchemePayload.java | 2 +- .../x402/model/PaymentPayload.java | 4 +- .../x402/model/PaymentRequiredResponse.java | 2 +- .../x402/model/PaymentRequirements.java | 2 +- .../x402/model/SettlementResponseHeader.java | 2 +- .../x402/server/PaymentFilter.java | 20 ++++---- .../{com/coinbase => org}/x402/util/Json.java | 2 +- .../client/HttpFacilitatorClientTest.java | 4 +- .../x402/client/X402HttpClientTest.java | 6 +-- .../integration/FilterIntegrationTest.java | 16 +++---- .../x402/model/PaymentPayloadTest.java | 2 +- .../x402/server/PaymentFilterTest.java | 16 +++---- python/legacy/README.md | 2 +- python/legacy/pyproject.toml | 2 +- python/x402/CHANGELOG.md | 34 ++++++------- python/x402/README.md | 2 +- python/x402/changelog.d/123.bugfix.md | 1 + python/x402/pyproject.toml | 8 ++-- specs/x402-specification-v1.md | 2 +- specs/x402-specification-v2.md | 2 +- .../.changeset/migrate-to-x402-foundation.md | 18 +++++++ typescript/packages/core/README.md | 4 +- typescript/packages/core/package.json | 4 +- typescript/packages/extensions/package.json | 4 +- typescript/packages/http/axios/package.json | 4 +- typescript/packages/http/express/package.json | 4 +- typescript/packages/http/fastify/package.json | 4 +- typescript/packages/http/fetch/package.json | 4 +- typescript/packages/http/hono/package.json | 4 +- typescript/packages/http/next/package.json | 4 +- typescript/packages/http/paywall/package.json | 4 +- .../packages/legacy/x402-axios/package.json | 4 +- .../packages/legacy/x402-express/package.json | 4 +- .../packages/legacy/x402-fetch/package.json | 4 +- .../packages/legacy/x402-hono/package.json | 4 +- .../packages/legacy/x402-next/package.json | 4 +- typescript/packages/legacy/x402/README.md | 6 +-- typescript/packages/legacy/x402/package.json | 4 +- typescript/packages/mcp/package.json | 4 +- .../packages/mechanisms/aptos/package.json | 2 +- .../packages/mechanisms/evm/package.json | 4 +- .../packages/mechanisms/stellar/package.json | 4 +- .../packages/mechanisms/svm/package.json | 4 +- .../packages/mechanisms/svm/src/constants.ts | 2 +- .../svm/src/exact/facilitator/scheme.ts | 2 +- .../svm/src/exact/v1/facilitator/scheme.ts | 2 +- typescript/site/README.md | 6 +-- typescript/site/app/components/Footer.tsx | 2 +- .../axios-fetch-clients/metadata.json | 2 +- .../partners-data/mcp-example/metadata.json | 2 +- .../partners-data/node-servers/metadata.json | 2 +- .../partners-data/x402-examples/metadata.json | 2 +- .../site/app/writing/x402-v2-launch/page.tsx | 2 +- 320 files changed, 1051 insertions(+), 1045 deletions(-) create mode 100644 go/.changes/unreleased/migrate-to-x402-foundation.yaml rename java/src/main/java/{com/coinbase => org}/x402/client/FacilitatorClient.java (95%) rename java/src/main/java/{com/coinbase => org}/x402/client/HttpFacilitatorClient.java (97%) rename java/src/main/java/{com/coinbase => org}/x402/client/Kind.java (95%) rename java/src/main/java/{com/coinbase => org}/x402/client/SettlementResponse.java (92%) rename java/src/main/java/{com/coinbase => org}/x402/client/VerificationResponse.java (89%) rename java/src/main/java/{com/coinbase => org}/x402/client/X402HttpClient.java (94%) rename java/src/main/java/{com/coinbase => org}/x402/crypto/CryptoSignException.java (94%) rename java/src/main/java/{com/coinbase => org}/x402/crypto/CryptoSigner.java (97%) rename java/src/main/java/{com/coinbase => org}/x402/model/Authorization.java (96%) rename java/src/main/java/{com/coinbase => org}/x402/model/ExactSchemePayload.java (93%) rename java/src/main/java/{com/coinbase => org}/x402/model/PaymentPayload.java (93%) rename java/src/main/java/{com/coinbase => org}/x402/model/PaymentRequiredResponse.java (89%) rename java/src/main/java/{com/coinbase => org}/x402/model/PaymentRequirements.java (95%) rename java/src/main/java/{com/coinbase => org}/x402/model/SettlementResponseHeader.java (97%) rename java/src/main/java/{com/coinbase => org}/x402/server/PaymentFilter.java (95%) rename java/src/main/java/{com/coinbase => org}/x402/util/Json.java (95%) rename java/src/test/java/{com/coinbase => org}/x402/client/HttpFacilitatorClientTest.java (98%) rename java/src/test/java/{com/coinbase => org}/x402/client/X402HttpClientTest.java (95%) rename java/src/test/java/{com/coinbase => org}/x402/integration/FilterIntegrationTest.java (86%) rename java/src/test/java/{com/coinbase => org}/x402/model/PaymentPayloadTest.java (96%) rename java/src/test/java/{com/coinbase => org}/x402/server/PaymentFilterTest.java (98%) create mode 100644 python/x402/changelog.d/123.bugfix.md create mode 100644 typescript/.changeset/migrate-to-x402-foundation.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 683297dae1..578b61e1f1 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -168,7 +168,7 @@ After spec approval, implement in a **single SDK** (TypeScript, Python OR Go). | SDK | Interfaces | |-----|------------| | TypeScript (`@x402/core`) | `SchemeNetworkClient`, `SchemeNetworkServer`, `SchemeNetworkFacilitator` | -| Go (`github.com/coinbase/x402/go`) | `ClientScheme`, `ServerScheme`, `FacilitatorScheme` | +| Go (`github.com/x402-foundation/x402/go`) | `ClientScheme`, `ServerScheme`, `FacilitatorScheme` | | Python (`x402`) | `SchemeNetworkClient`, `SchemeNetworkServer`, `SchemeNetworkFacilitator` | **Required tests:** diff --git a/README.md b/README.md index efcdc0790a..f97a542479 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ pip install x402 ### Go ```shell -go get github.com/coinbase/x402/go +go get github.com/x402-foundation/x402/go ``` @@ -50,7 +50,7 @@ go get github.com/coinbase/x402/go - **Open standard:** x402 is an open standard, freely accessible and usable by anyone. It will never force reliance on a single party. - **HTTP / Transport Native:** x402 is meant to seamlessly complement existing data transportation. It should whenever possible not mandate additional requests outside the scope of a typical client / server flow. -- **Network, token, and currency agnostic:** we welcome contributions that add support for new networks (both crypto and fiat), signing standards, or schemes, so long as they meet our acceptance criteria laid out in [CONTRIBUTING.md](https://github.com/coinbase/x402/blob/main/CONTRIBUTING.md). x402 may extend support to fiat based networks, but will never deprioritize onchain payments in favor of fiat payments. +- **Network, token, and currency agnostic:** we welcome contributions that add support for new networks (both crypto and fiat), signing standards, or schemes, so long as they meet our acceptance criteria laid out in [CONTRIBUTING.md](https://github.com/x402-foundation/x402/blob/main/CONTRIBUTING.md). x402 may extend support to fiat based networks, but will never deprioritize onchain payments in favor of fiat payments. - **Backwards Compatible:** x402 will not deprecate support for any existing networks unless such removal is deemed necessary for the security of the standard. Whenever possible, x402 will aim for backwards compatibility for non-major version changes. - **Trust minimizing:** all payment schemes must not allow for the facilitator or resource server to move funds, other than in accordance with client intentions - **Easy to use:** It is the goal of the x402 community to improve ease of use relative to other forms of payment on the Internet. This means abstracting as many details of crypto as possible away from the client and resource server, and into the facilitator. This means the client/server should not need to think about gas, rpc, etc. @@ -64,9 +64,9 @@ The x402 ecosystem is growing! Check out our [ecosystem page](https://x402.org/e - Ecosystem infrastructure and tooling - Learning and community resources -Want to add your project to the ecosystem? See our [demo site README](https://github.com/coinbase/x402/tree/main/typescript/site#adding-your-project-to-the-ecosystem) for detailed instructions on how to submit your project. +Want to add your project to the ecosystem? See our [demo site README](https://github.com/x402-foundation/x402/tree/main/typescript/site#adding-your-project-to-the-ecosystem) for detailed instructions on how to submit your project. -**Roadmap:** see [ROADMAP.md](https://github.com/coinbase/x402/blob/main/ROADMAP.md) +**Roadmap:** see [ROADMAP.md](https://github.com/x402-foundation/x402/blob/main/ROADMAP.md) **Documentation:** see [docs/](./docs/) for the GitBook documentation source diff --git a/docs/advanced-concepts/lifecycle-hooks.mdx b/docs/advanced-concepts/lifecycle-hooks.mdx index c37bab531e..d61994a8e4 100644 --- a/docs/advanced-concepts/lifecycle-hooks.mdx +++ b/docs/advanced-concepts/lifecycle-hooks.mdx @@ -70,7 +70,7 @@ Register hooks on the core resource server for verification and settlement lifec ```go - import x402 "github.com/coinbase/x402/go" + import x402 "github.com/x402-foundation/x402/go" server := x402.Newx402ResourceServer(facilitatorClient) @@ -121,8 +121,8 @@ Register hooks for HTTP-specific request handling before payment processing. Use ```go import ( "context" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" ) // Create resource server @@ -210,7 +210,7 @@ Register hooks on the core client for payment payload creation lifecycle events. ```go - import x402 "github.com/coinbase/x402/go" + import x402 "github.com/x402-foundation/x402/go" client := x402.Newx402Client() @@ -342,7 +342,7 @@ Register hooks on the facilitator for verification and settlement lifecycle even ```go - import x402 "github.com/coinbase/x402/go" + import x402 "github.com/x402-foundation/x402/go" facilitator := x402.Newx402Facilitator() diff --git a/docs/core-concepts/client-server.md b/docs/core-concepts/client-server.md index 83c3478a13..2a8082297f 100644 --- a/docs/core-concepts/client-server.md +++ b/docs/core-concepts/client-server.md @@ -59,7 +59,7 @@ To mitigate this, servers that settle Solana payments themselves **must** mainta 3. If the key is not present, insert it into the cache and proceed with settlement. 4. Evict entries older than 120 seconds (approximately twice the Solana blockhash lifetime). -If you are using a facilitator, the x402 SVM libraries already include built-in duplicate settlement protection via a `SettlementCache`. See the [Exact SVM Scheme Specification](https://github.com/coinbase/x402/blob/main/specs/schemes/exact/scheme_exact_svm.md) for full details. +If you are using a facilitator, the x402 SVM libraries already include built-in duplicate settlement protection via a `SettlementCache`. See the [Exact SVM Scheme Specification](https://github.com/x402-foundation/x402/blob/main/specs/schemes/exact/scheme_exact_svm.md) for full details. ### Communication Flow diff --git a/docs/core-concepts/facilitator.md b/docs/core-concepts/facilitator.md index 4c96cba36f..4b862cfb15 100644 --- a/docs/core-concepts/facilitator.md +++ b/docs/core-concepts/facilitator.md @@ -59,7 +59,7 @@ To mitigate this, the x402 SVM mechanism packages include a built-in `Settlement This protection is enabled by default when using the standard SVM facilitator registration helpers in TypeScript and Python. In Go, a shared `SettlementCache` instance should be passed to both V1 and V2 SVM facilitator schemes during registration. -**If you are a merchant settling payments directly (without a facilitator), you must implement equivalent duplicate detection yourself.** See the [Exact SVM Scheme Specification](https://github.com/coinbase/x402/blob/main/specs/schemes/exact/scheme_exact_svm.md) for the full specification. +**If you are a merchant settling payments directly (without a facilitator), you must implement equivalent duplicate detection yourself.** See the [Exact SVM Scheme Specification](https://github.com/x402-foundation/x402/blob/main/specs/schemes/exact/scheme_exact_svm.md) for the full specification. ### Summary diff --git a/docs/core-concepts/network-and-token-support.mdx b/docs/core-concepts/network-and-token-support.mdx index ffab259f2a..99650067a7 100644 --- a/docs/core-concepts/network-and-token-support.mdx +++ b/docs/core-concepts/network-and-token-support.mdx @@ -185,8 +185,8 @@ In V2, networks are supported through the registration pattern using CAIP-2 iden ```go import ( - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) facilitatorClient := x402http.NewHTTPFacilitatorClient(&x402http.FacilitatorConfig{ @@ -262,7 +262,7 @@ The x402 ecosystem is actively expanding network support. Planned additions incl For help with network integration: * Join the [x402 Discord community](https://discord.gg/cdp) -* Check the [x402 GitHub repository](https://github.com/coinbase/x402) +* Check the [x402 GitHub repository](https://github.com/x402-foundation/x402) ### Summary diff --git a/docs/docs.json b/docs/docs.json index 90d8e39cb0..f7f945fa8c 100644 --- a/docs/docs.json +++ b/docs/docs.json @@ -23,7 +23,7 @@ { "anchor": "GitHub", "icon": "github", - "href": "https://github.com/coinbase/x402" + "href": "https://github.com/x402-foundation/x402" }, { "anchor": "Discord", diff --git a/docs/extensions/bazaar.mdx b/docs/extensions/bazaar.mdx index e84dbf09bd..5f40262ea0 100644 --- a/docs/extensions/bazaar.mdx +++ b/docs/extensions/bazaar.mdx @@ -177,8 +177,8 @@ Fetch the list of available x402 services using the facilitator client: "context" "fmt" - "github.com/coinbase/x402/go/extensions/bazaar" - x402http "github.com/coinbase/x402/go/http" + "github.com/x402-foundation/x402/go/extensions/bazaar" + x402http "github.com/x402-foundation/x402/go/http" ) func main() { @@ -466,12 +466,12 @@ To enhance your listing with descriptions and schemas, include them when setting package main import ( - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/bazaar" - "github.com/coinbase/x402/go/extensions/types" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/bazaar" + "github.com/x402-foundation/x402/go/extensions/types" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" "github.com/gin-gonic/gin" ) @@ -553,7 +553,7 @@ The x402 Bazaar is rapidly evolving, and your feedback helps us prioritize featu ### Support -* **GitHub**: [github.com/coinbase/x402](https://github.com/coinbase/x402) +* **GitHub**: [github.com/x402-foundation/x402](https://github.com/x402-foundation/x402) * **Discord**: [Join #x402 channel](https://discord.com/invite/cdp) ### FAQ diff --git a/docs/extensions/eip2612-gas-sponsoring.mdx b/docs/extensions/eip2612-gas-sponsoring.mdx index 7d90ad8a9d..0218a3728f 100644 --- a/docs/extensions/eip2612-gas-sponsoring.mdx +++ b/docs/extensions/eip2612-gas-sponsoring.mdx @@ -47,7 +47,7 @@ Advertise support for this extension in your route configuration: ```go import ( - "github.com/coinbase/x402/go/extensions/eip2612gassponsor" + "github.com/x402-foundation/x402/go/extensions/eip2612gassponsor" ) extensions := eip2612gassponsor.DeclareEip2612GasSponsoringExtension() @@ -97,7 +97,7 @@ The `ExactEvmScheme` handles EIP-2612 gas sponsoring automatically. When the ser ```go import ( - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" ) scheme := evm.NewExactEvmScheme(signer) diff --git a/docs/extensions/erc20-approval-gas-sponsoring.mdx b/docs/extensions/erc20-approval-gas-sponsoring.mdx index 63ddbfadcd..8666d8b7ca 100644 --- a/docs/extensions/erc20-approval-gas-sponsoring.mdx +++ b/docs/extensions/erc20-approval-gas-sponsoring.mdx @@ -52,7 +52,7 @@ Advertise support for this extension in your route configuration: ```go import ( - "github.com/coinbase/x402/go/extensions/erc20approvalgassponsor" + "github.com/x402-foundation/x402/go/extensions/erc20approvalgassponsor" ) extensions := erc20approvalgassponsor.DeclareExtension() @@ -105,7 +105,7 @@ The `ExactEvmScheme` handles ERC-20 approval gas sponsoring automatically as a f ```go import ( - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" ) scheme := evm.NewExactEvmScheme(signer) diff --git a/docs/extensions/offer-receipt.mdx b/docs/extensions/offer-receipt.mdx index b7d116e837..3845d26794 100644 --- a/docs/extensions/offer-receipt.mdx +++ b/docs/extensions/offer-receipt.mdx @@ -413,12 +413,12 @@ Ecosystem partners (see the [Infrastructure & Tooling category](https://www.x402 Complete working examples are available in the x402 repository: -- [Server Example (Express.js)](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/offer-receipt) — Resource server with offer-receipt enabled, showing both EIP-712 and JWS configurations -- [Client Example](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/offer-receipt) — Complete client flow: offer extraction, payment, receipt capture, and verification +- [Server Example (Express.js)](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/offer-receipt) — Resource server with offer-receipt enabled, showing both EIP-712 and JWS configurations +- [Client Example](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/offer-receipt) — Complete client flow: offer extraction, payment, receipt capture, and verification ## Further Reading - [Extensions Overview](./overview) — How the x402 extension system works -- [Offer & Receipt Extension Specification](https://github.com/coinbase/x402/blob/main/specs/extensions/extension-offer-and-receipt.md) — Full protocol spec with payload schemas, EIP-712 types, verification rules, and wire format examples -- [@x402/extensions package](https://github.com/coinbase/x402/tree/main/typescript/packages/extensions/src/offer-receipt) — TypeScript implementation source +- [Offer & Receipt Extension Specification](https://github.com/x402-foundation/x402/blob/main/specs/extensions/extension-offer-and-receipt.md) — Full protocol spec with payload schemas, EIP-712 types, verification rules, and wire format examples +- [@x402/extensions package](https://github.com/x402-foundation/x402/tree/main/typescript/packages/extensions/src/offer-receipt) — TypeScript implementation source - [SDK Features](/sdk-features) — Extension support across TypeScript, Go, and Python diff --git a/docs/extensions/overview.mdx b/docs/extensions/overview.mdx index a6f7ea9454..d47ba60b30 100644 --- a/docs/extensions/overview.mdx +++ b/docs/extensions/overview.mdx @@ -124,7 +124,7 @@ To create your own extension: 3. **Implement the hooks you need** — `enrichDeclaration`, `enrichPaymentRequiredResponse`, `enrichSettlementResponse` 4. **Create a declare function** — a helper that returns the route-level configuration for your extension 5. **Register it** on the `x402ResourceServer` via `registerExtension` -6. **Submit a pull request** to [coinbase/x402](https://github.com/coinbase/x402) — extensions must be reviewed and approved by the x402 maintainers before they are included in the SDK +6. **Submit a pull request** to [x402-foundation/x402](https://github.com/x402-foundation/x402) — extensions must be reviewed and approved by the x402 maintainers before they are included in the SDK Here's a minimal example: @@ -156,5 +156,5 @@ The data returned from each hook is included in the response under `extensions[" ## Further Reading - [x402 SDK Features](/sdk-features) — Extension support across TypeScript, Go, and Python -- [Extension Specs](https://github.com/coinbase/x402/tree/main/specs/extensions) — Protocol-level extension specifications -- [@x402/extensions package](https://github.com/coinbase/x402/tree/main/typescript/packages/extensions) — TypeScript implementation source +- [Extension Specs](https://github.com/x402-foundation/x402/tree/main/specs/extensions) — Protocol-level extension specifications +- [@x402/extensions package](https://github.com/x402-foundation/x402/tree/main/typescript/packages/extensions) — TypeScript implementation source diff --git a/docs/extensions/payment-identifier.mdx b/docs/extensions/payment-identifier.mdx index e5ea85f00e..b62ef06188 100644 --- a/docs/extensions/payment-identifier.mdx +++ b/docs/extensions/payment-identifier.mdx @@ -135,7 +135,7 @@ async with x402HttpxClient(client) as http: Use the `GeneratePaymentID()` utility to create a unique identifier: ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" // Generate with default prefix "pay_" paymentID := paymentidentifier.GeneratePaymentID("") @@ -152,8 +152,8 @@ Hook into the payment flow to add the payment ID before payload creation: ```go import ( - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/paymentidentifier" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/paymentidentifier" ) client := x402.Newx402Client() @@ -412,8 +412,8 @@ Declare the payment-identifier extension in your route configuration: ```go import ( - x402http "github.com/coinbase/x402/go/http" - "github.com/coinbase/x402/go/extensions/paymentidentifier" + x402http "github.com/x402-foundation/x402/go/http" + "github.com/x402-foundation/x402/go/extensions/paymentidentifier" ) // Optional or required payment identifier (pick one) @@ -442,7 +442,7 @@ routes := x402http.RoutesConfig{ Use the `ExtractPaymentIdentifier()` utility to get the payment ID from the payload: ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" // In your handler payload := c.MustGet("x402_payload").(x402.PaymentPayload) @@ -705,7 +705,7 @@ from x402.extensions.payment_identifier import ( Generates a cryptographically secure unique payment identifier. ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" // Generate with default prefix "pay_" paymentID := paymentidentifier.GeneratePaymentID("") @@ -721,7 +721,7 @@ paymentID = paymentidentifier.GeneratePaymentID("order_") Adds a payment identifier to the extensions object. Only modifies extensions if the server declared support for the extension. Pass an empty string to auto-generate an ID. ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" extensions := make(map[string]interface{}) err := paymentidentifier.AppendPaymentIdentifierToExtensions(extensions, "pay_custom_id_1234567890abcdef") @@ -733,7 +733,7 @@ err := paymentidentifier.AppendPaymentIdentifierToExtensions(extensions, "pay_cu Validates a payment identifier format. ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" valid := paymentidentifier.IsValidPaymentID("pay_7d5d747be160e280504c099d984bcfe0") // true valid = paymentidentifier.IsValidPaymentID("invalid") // false (too short) @@ -746,7 +746,7 @@ valid = paymentidentifier.IsValidPaymentID("invalid") // false (too short) Creates a payment-identifier extension declaration for resource servers. ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" // Optional payment ID extension := paymentidentifier.DeclarePaymentIdentifierExtension(false) @@ -760,7 +760,7 @@ extensionRequired := paymentidentifier.DeclarePaymentIdentifierExtension(true) Extracts the payment identifier from a payment payload. ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" paymentID, err := paymentidentifier.ExtractPaymentIdentifier(payload, true) if err != nil { @@ -776,7 +776,7 @@ if paymentID != "" { Validates the payment identifier extension object structure and ID format. ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" extension := payload.Extensions[paymentidentifier.PAYMENT_IDENTIFIER] result := paymentidentifier.ValidatePaymentIdentifier(extension) @@ -789,7 +789,7 @@ if !result.Valid { ### Constants ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" const ( PAYMENT_IDENTIFIER = "payment-identifier" @@ -808,16 +808,16 @@ var PAYMENT_ID_PATTERN = regexp.MustCompile(`^[a-zA-Z0-9_-]+$`) Full working examples are available in the x402 repository: **TypeScript:** -- [TypeScript Client Example](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/payment-identifier) -- [TypeScript Server Example](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/payment-identifier) +- [TypeScript Client Example](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/payment-identifier) +- [TypeScript Server Example](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/payment-identifier) **Python:** -- [Python Client Example](https://github.com/coinbase/x402/tree/main/examples/python/clients/payment-identifier) -- [Python Server Example](https://github.com/coinbase/x402/tree/main/examples/python/servers/payment-identifier) +- [Python Client Example](https://github.com/x402-foundation/x402/tree/main/examples/python/clients/payment-identifier) +- [Python Server Example](https://github.com/x402-foundation/x402/tree/main/examples/python/servers/payment-identifier) **Go:** -- [Go Client Example](https://github.com/coinbase/x402/tree/main/examples/go/clients/payment-identifier) -- [Go Server Example](https://github.com/coinbase/x402/tree/main/examples/go/servers/payment-identifier) +- [Go Client Example](https://github.com/x402-foundation/x402/tree/main/examples/go/clients/payment-identifier) +- [Go Server Example](https://github.com/x402-foundation/x402/tree/main/examples/go/servers/payment-identifier) ## FAQ diff --git a/docs/extensions/sign-in-with-x.mdx b/docs/extensions/sign-in-with-x.mdx index 0344207164..01957a43e9 100644 --- a/docs/extensions/sign-in-with-x.mdx +++ b/docs/extensions/sign-in-with-x.mdx @@ -437,5 +437,5 @@ The package includes `InMemorySIWxStorage` for development. For production, impl - [CAIP-122 Specification](https://chainagnostic.org/CAIPs/caip-122) - Sign-In-With-X standard - [EIP-4361 (SIWE)](https://eips.ethereum.org/EIPS/eip-4361) - Sign-In With Ethereum - [Sign-In With Solana](https://github.com/phantom/sign-in-with-solana) -- [x402 Core Package](https://github.com/coinbase/x402/tree/main/typescript/packages/core) +- [x402 Core Package](https://github.com/x402-foundation/x402/tree/main/typescript/packages/core) - [Lifecycle Hooks](/advanced-concepts/lifecycle-hooks) - Custom payment flow logic diff --git a/docs/faq.md b/docs/faq.md index 83c80990f8..1a1d6ef988 100644 --- a/docs/faq.md +++ b/docs/faq.md @@ -27,7 +27,7 @@ No. Any web API or content provider—crypto or web2—can integrate x402 if it Typescript, Python, and Go are reference implementations, but x402 is an **open protocol**. -Nothing prevents you from implementing the spec in Rust, Java, or other languages. If you're interested in building support for your favorite language, please [open an issue](https://github.com/coinbase/x402/issues) and let us know, we'd be happy to help! +Nothing prevents you from implementing the spec in Rust, Java, or other languages. If you're interested in building support for your favorite language, please [open an issue](https://github.com/x402-foundation/x402/issues) and let us know, we'd be happy to help! ### Facilitators @@ -111,7 +111,7 @@ Yes. Programmatic wallets (e.g., **CDP Wallet API**, **viem**, **ethers‑v6** H #### Is there a formal spec or whitepaper? -* **Spec:** [GitHub Specification](https://github.com/coinbase/x402/tree/main/specs) +* **Spec:** [GitHub Specification](https://github.com/x402-foundation/x402/tree/main/specs) * [**Whitepaper**](https://www.x402.org/x402-whitepaper.pdf) #### How will x402 evolve? @@ -144,4 +144,4 @@ We acknowledge that the repo is primarily under Coinbase ownership today. This i ### Still have questions? • Reach out in the [Discord channel](https://discord.gg/invite/cdp)\ -• Open a GitHub Discussion or Issue in the [x402 repo](https://github.com/coinbase/x402) +• Open a GitHub Discussion or Issue in the [x402 repo](https://github.com/x402-foundation/x402) diff --git a/docs/getting-started/quickstart-for-buyers.mdx b/docs/getting-started/quickstart-for-buyers.mdx index 003524dc8a..d6c40e0bc7 100644 --- a/docs/getting-started/quickstart-for-buyers.mdx +++ b/docs/getting-started/quickstart-for-buyers.mdx @@ -12,7 +12,7 @@ Before you begin, ensure you have: * A service that requires payment via x402 **Note**\ -There are pre-configured [examples available in the x402 repo](https://github.com/coinbase/x402/tree/main/examples), including examples for [fetch](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/fetch), [Axios](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/axios), [Go](https://github.com/coinbase/x402/tree/main/examples/go/clients), and [MCP](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/mcp). +There are pre-configured [examples available in the x402 repo](https://github.com/x402-foundation/x402/tree/main/examples), including examples for [fetch](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/fetch), [Axios](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/axios), [Go](https://github.com/x402-foundation/x402/tree/main/examples/go/clients), and [MCP](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/mcp). ### 1. Install Dependencies @@ -41,7 +41,7 @@ There are pre-configured [examples available in the x402 repo](https://github.co Add the x402 Go module to your project: ```bash - go get github.com/coinbase/x402/go + go get github.com/x402-foundation/x402/go ``` @@ -82,7 +82,7 @@ There are pre-configured [examples available in the x402 repo](https://github.co ```go import ( - evmsigners "github.com/coinbase/x402/go/signers/evm" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) // Load private key from environment @@ -156,7 +156,7 @@ const stellarSigner = createEd25519Signer( - **@x402/fetch** extends the native `fetch` API to handle 402 responses and payment headers for you. [Full example here](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/fetch) + **@x402/fetch** extends the native `fetch` API to handle 402 responses and payment headers for you. [Full example here](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/fetch) ```typescript import { wrapFetchWithPayment } from "@x402/fetch"; @@ -193,7 +193,7 @@ const stellarSigner = createEd25519Signer( ``` - **@x402/axios** adds a payment interceptor to Axios, so your requests are retried with payment headers automatically. [Full example here](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/axios) + **@x402/axios** adds a payment interceptor to Axios, so your requests are retried with payment headers automatically. [Full example here](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/axios) ```typescript import { x402Client, wrapAxiosWithPayment, x402HTTPClient } from "@x402/axios"; @@ -227,7 +227,7 @@ const stellarSigner = createEd25519Signer( ``` - [Full example here](https://github.com/coinbase/x402/tree/main/examples/go/clients/http) + [Full example here](https://github.com/x402-foundation/x402/tree/main/examples/go/clients/http) ```go package main @@ -240,10 +240,10 @@ const stellarSigner = createEd25519Signer( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) func main() { @@ -290,7 +290,7 @@ const stellarSigner = createEd25519Signer( **httpx** provides async HTTP client support with automatic 402 payment handling. - [Full HTTPX example](https://github.com/coinbase/x402/tree/main/examples/python/clients/httpx) | [Full Requests example](https://github.com/coinbase/x402/tree/main/examples/python/clients/requests) + [Full HTTPX example](https://github.com/x402-foundation/x402/tree/main/examples/python/clients/httpx) | [Full Requests example](https://github.com/x402-foundation/x402/tree/main/examples/python/clients/requests) ```python import asyncio @@ -330,7 +330,7 @@ const stellarSigner = createEd25519Signer( **requests** provides sync HTTP client support with automatic 402 payment handling. - [Full Requests example](https://github.com/coinbase/x402/tree/main/examples/python/clients/requests) + [Full Requests example](https://github.com/x402-foundation/x402/tree/main/examples/python/clients/requests) ```python import os @@ -418,12 +418,12 @@ You can register multiple payment schemes to handle different networks: ```go import ( - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" - svmsigners "github.com/coinbase/x402/go/signers/svm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" + svmsigners "github.com/x402-foundation/x402/go/signers/svm" ) // Create signers @@ -549,6 +549,6 @@ try { * [@x402/fetch on npm](https://www.npmjs.com/package/@x402/fetch) * [@x402/axios on npm](https://www.npmjs.com/package/@x402/axios) * [@x402/evm on npm](https://www.npmjs.com/package/@x402/evm) -* [x402 Go module](https://github.com/coinbase/x402/tree/main/go) +* [x402 Go module](https://github.com/x402-foundation/x402/tree/main/go) For questions or support, join our [Discord](https://discord.gg/cdp). diff --git a/docs/getting-started/quickstart-for-sellers.mdx b/docs/getting-started/quickstart-for-sellers.mdx index 789d6097e8..275ad0964e 100644 --- a/docs/getting-started/quickstart-for-sellers.mdx +++ b/docs/getting-started/quickstart-for-sellers.mdx @@ -14,7 +14,7 @@ Before you begin, ensure you have: * An existing API or server **Note**\ -There are pre-configured examples available in the x402 repo for both [Node.js](https://github.com/coinbase/x402/tree/main/examples/typescript/servers) and [Go](https://github.com/coinbase/x402/tree/main/examples/go/servers). There is also an [advanced example](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/advanced) that shows how to use the x402 SDKs to build a more complex payment flow. +There are pre-configured examples available in the x402 repo for both [Node.js](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers) and [Go](https://github.com/x402-foundation/x402/tree/main/examples/go/servers). There is also an [advanced example](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/advanced) that shows how to use the x402 SDKs to build a more complex payment flow. ### 1. Install Dependencies @@ -51,7 +51,7 @@ There are pre-configured examples available in the x402 repo for both [Node.js]( Add the x402 Go module to your project: ```bash - go get github.com/coinbase/x402/go + go get github.com/x402-foundation/x402/go ``` @@ -87,7 +87,7 @@ Integrate the payment middleware into your application. You will need to provide - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/express). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/express). ```typescript import express from "express"; @@ -150,7 +150,7 @@ Integrate the payment middleware into your application. You will need to provide ``` - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/typescript/fullstack/next). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/typescript/fullstack/next). Next.js offers two approaches: `paymentProxy` for protecting page routes (or multiple routes at once), and `withX402` for wrapping individual API route handlers. The key difference is that `withX402` only settles payment after a successful response (status \< 400), making it the recommended approach for API routes. @@ -248,7 +248,7 @@ Integrate the payment middleware into your application. You will need to provide ``` - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/hono). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/hono). ```typescript import { Hono } from "hono"; @@ -307,7 +307,7 @@ Integrate the payment middleware into your application. You will need to provide ``` - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/fastify). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/fastify). ```typescript import Fastify from "fastify"; @@ -364,7 +364,7 @@ Integrate the payment middleware into your application. You will need to provide ``` - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/go/servers/gin). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/go/servers/gin). ```go package main @@ -373,11 +373,11 @@ Integrate the payment middleware into your application. You will need to provide "net/http" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" "github.com/gin-gonic/gin" ) @@ -437,7 +437,7 @@ Integrate the payment middleware into your application. You will need to provide ``` - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/go/servers/nethttp). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/go/servers/nethttp). ```go package main @@ -447,11 +447,11 @@ Integrate the payment middleware into your application. You will need to provide "net/http" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - nethttpmw "github.com/coinbase/x402/go/http/nethttp" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + nethttpmw "github.com/x402-foundation/x402/go/http/nethttp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) func main() { @@ -516,7 +516,7 @@ Integrate the payment middleware into your application. You will need to provide ``` - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/python/servers/fastapi). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/python/servers/fastapi). ```python from typing import Any @@ -591,7 +591,7 @@ Integrate the payment middleware into your application. You will need to provide ``` - Full example in the repo [here](https://github.com/coinbase/x402/tree/main/examples/python/servers/flask). + Full example in the repo [here](https://github.com/x402-foundation/x402/tree/main/examples/python/servers/flask). ```python from flask import Flask, jsonify @@ -726,7 +726,7 @@ Learn more about the discovery layer in the [Bazaar documentation](/extensions/b ### 5. Error Handling -* If you run into trouble, check out the examples in the [repo](https://github.com/coinbase/x402/tree/main/examples) for more context and full code. +* If you run into trouble, check out the examples in the [repo](https://github.com/x402-foundation/x402/tree/main/examples) for more context and full code. * Run `npm install` or `go mod tidy` to install dependencies --- @@ -842,8 +842,8 @@ For multi-network support, register both EVM and SVM schemes: ```go import ( - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) r.Use(ginmw.X402Payment(ginmw.Config{ @@ -900,7 +900,7 @@ See [Network Support](/core-concepts/network-and-token-support) for the full lis ### Next Steps -* Check out the [Advanced Example](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/advanced) for a more complex payment flow +* Check out the [Advanced Example](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/advanced) for a more complex payment flow * Explore [Advanced Concepts](/advanced-concepts/lifecycle-hooks) like lifecycle hooks for custom logic before/after verification/settlement * Explore [Extensions](/extensions/bazaar) like Bazaar for service discovery * Get started as a [buyer](/getting-started/quickstart-for-buyers) diff --git a/docs/guides/mcp-server-with-x402.md b/docs/guides/mcp-server-with-x402.md index 871fe64785..76e9af0072 100644 --- a/docs/guides/mcp-server-with-x402.md +++ b/docs/guides/mcp-server-with-x402.md @@ -19,7 +19,7 @@ This lets you (or your agent) access paid APIs programmatically, with no manual * Node.js v20+ (install via [nvm](https://github.com/nvm-sh/nvm)) * pnpm v10 (install via [pnpm.io/installation](https://pnpm.io/installation)) -* An x402-compatible server to connect to (for this demo, we'll use the [sample express server with weather data](https://github.com/coinbase/x402/tree/main/examples/typescript/servers/express) from the x402 repo, or any external x402 API) +* An x402-compatible server to connect to (for this demo, we'll use the [sample express server with weather data](https://github.com/x402-foundation/x402/tree/main/examples/typescript/servers/express) from the x402 repo, or any external x402 API) * An Ethereum wallet with USDC (on Base Sepolia or Base Mainnet) and/or a Solana wallet with USDC (on Devnet or Mainnet) * [Claude Desktop with MCP support](https://claude.ai/download) @@ -31,7 +31,7 @@ This lets you (or your agent) access paid APIs programmatically, with no manual ```bash # Clone the x402 repository -git clone https://github.com/coinbase/x402.git +git clone https://github.com/x402-foundation/x402.git cd x402/examples/typescript # Install dependencies and build packages @@ -306,7 +306,7 @@ The example uses these x402 v2 packages: ### Next Steps -* [See the full example in the repo](https://github.com/coinbase/x402/tree/main/examples/typescript/clients/mcp) +* [See the full example in the repo](https://github.com/x402-foundation/x402/tree/main/examples/typescript/clients/mcp) * Try integrating with your own x402-compatible APIs * Extend the MCP server with more tools or custom logic as needed * [Learn about building x402 servers](/getting-started/quickstart-for-sellers) diff --git a/docs/introduction.md b/docs/introduction.md index 86d16a34c1..1882c1a0e6 100644 --- a/docs/introduction.md +++ b/docs/introduction.md @@ -9,7 +9,7 @@ x402 is the open payment standard that enables services to charge for access to With x402, any web service can require payment before serving a response, using crypto-native payments for speed, privacy, and efficiency. -**Want to contribute to our docs?** [The GitBook repo is open to PRs! ](https://github.com/coinbase/x402) Our only ask is that you keep these docs as a neutral resource, with no branded content other than linking out to other resources where appropriate. +**Want to contribute to our docs?** [The GitBook repo is open to PRs! ](https://github.com/x402-foundation/x402) Our only ask is that you keep these docs as a neutral resource, with no branded content other than linking out to other resources where appropriate. **Note about the docs:** These docs are the credibly neutral source of truth for x402, as x402 is a completely open standard under the Apache-2.0 license. Coinbase Developer Platform is currently sponsoring [AI-powered docs for users here](https://docs.cdp.coinbase.com/x402/welcome), as we migrate to our own AI-powered solution on the main x402.org domain. diff --git a/e2e/clients/go-http/README.md b/e2e/clients/go-http/README.md index 9d4d019f2c..6e06ed6ed8 100644 --- a/e2e/clients/go-http/README.md +++ b/e2e/clients/go-http/README.md @@ -24,12 +24,12 @@ This client demonstrates and tests the Go x402 HTTP client with both EVM and SVM ```go import ( - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - "github.com/coinbase/x402/go/mechanisms/evm" - evmv1 "github.com/coinbase/x402/go/mechanisms/evm/exact/v1" - "github.com/coinbase/x402/go/mechanisms/svm" - svmv1 "github.com/coinbase/x402/go/mechanisms/svm/exact/v1" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + "github.com/x402-foundation/x402/go/mechanisms/evm" + evmv1 "github.com/x402-foundation/x402/go/mechanisms/evm/exact/v1" + "github.com/x402-foundation/x402/go/mechanisms/svm" + svmv1 "github.com/x402-foundation/x402/go/mechanisms/svm/exact/v1" ) // Create x402 client with direct registration @@ -135,9 +135,9 @@ export SVM_PRIVATE_KEY="..." ## Dependencies -- `github.com/coinbase/x402/go` - Core x402 protocol -- `github.com/coinbase/x402/go/http` - HTTP integration -- `github.com/coinbase/x402/go/mechanisms/evm` - EVM mechanisms -- `github.com/coinbase/x402/go/mechanisms/svm` - SVM mechanisms +- `github.com/x402-foundation/x402/go` - Core x402 protocol +- `github.com/x402-foundation/x402/go/http` - HTTP integration +- `github.com/x402-foundation/x402/go/mechanisms/evm` - EVM mechanisms +- `github.com/x402-foundation/x402/go/mechanisms/svm` - SVM mechanisms - `github.com/ethereum/go-ethereum` - Ethereum Go library - `github.com/gagliardetto/solana-go` - Solana Go library diff --git a/e2e/clients/go-http/go.mod b/e2e/clients/go-http/go.mod index be39d8a56e..30bd6b4e3f 100644 --- a/e2e/clients/go-http/go.mod +++ b/e2e/clients/go-http/go.mod @@ -1,11 +1,11 @@ -module github.com/coinbase/x402-go/e2e/clients/go-http +module github.com/x402-foundation/x402-go/e2e/clients/go-http go 1.24.0 toolchain go1.24.1 require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/ethereum/go-ethereum v1.16.7 ) @@ -61,4 +61,4 @@ require ( golang.org/x/time v0.14.0 // indirect ) -replace github.com/coinbase/x402/go => ../../../go +replace github.com/x402-foundation/x402/go => ../../../go diff --git a/e2e/clients/go-http/main.go b/e2e/clients/go-http/main.go index 96ef06ab3f..4538abb24b 100644 --- a/e2e/clients/go-http/main.go +++ b/e2e/clients/go-http/main.go @@ -10,15 +10,15 @@ import ( "github.com/ethereum/go-ethereum/ethclient" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - exactevm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - exactevmv1 "github.com/coinbase/x402/go/mechanisms/evm/exact/v1/client" - uptoevm "github.com/coinbase/x402/go/mechanisms/evm/upto/client" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/client" - svmv1 "github.com/coinbase/x402/go/mechanisms/svm/exact/v1/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" - svmsigners "github.com/coinbase/x402/go/signers/svm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + exactevm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + exactevmv1 "github.com/x402-foundation/x402/go/mechanisms/evm/exact/v1/client" + uptoevm "github.com/x402-foundation/x402/go/mechanisms/evm/upto/client" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/client" + svmv1 "github.com/x402-foundation/x402/go/mechanisms/svm/exact/v1/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" + svmsigners "github.com/x402-foundation/x402/go/signers/svm" ) // Result structure for e2e test output diff --git a/e2e/clients/mcp-go/go.mod b/e2e/clients/mcp-go/go.mod index 3899ac9b0c..19ed2a14f5 100644 --- a/e2e/clients/mcp-go/go.mod +++ b/e2e/clients/mcp-go/go.mod @@ -1,11 +1,11 @@ -module github.com/coinbase/x402/e2e/clients/mcp-go +module github.com/x402-foundation/x402/e2e/clients/mcp-go go 1.24.0 toolchain go1.24.1 require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/modelcontextprotocol/go-sdk v1.3.0 ) @@ -37,4 +37,4 @@ require ( golang.org/x/sys v0.39.0 // indirect ) -replace github.com/coinbase/x402/go => ../../../go +replace github.com/x402-foundation/x402/go => ../../../go diff --git a/e2e/clients/mcp-go/main.go b/e2e/clients/mcp-go/main.go index 4befd7e31d..ba3dfded98 100644 --- a/e2e/clients/mcp-go/main.go +++ b/e2e/clients/mcp-go/main.go @@ -6,11 +6,11 @@ import ( "fmt" "os" - x402 "github.com/coinbase/x402/go" - mcp402 "github.com/coinbase/x402/go/mcp" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" "github.com/modelcontextprotocol/go-sdk/mcp" + x402 "github.com/x402-foundation/x402/go" + mcp402 "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) // Result structure for e2e test output diff --git a/e2e/facilitators/go/README.md b/e2e/facilitators/go/README.md index 40212e4122..62b0964214 100644 --- a/e2e/facilitators/go/README.md +++ b/e2e/facilitators/go/README.md @@ -83,12 +83,12 @@ facilitator := x402.Newx402Facilitator() ```go import ( - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/mechanisms/evm" - evmv1 "github.com/coinbase/x402/go/mechanisms/evm/exact/v1" - "github.com/coinbase/x402/go/mechanisms/svm" - svmv1 "github.com/coinbase/x402/go/mechanisms/svm/exact/v1" - "github.com/coinbase/x402/go/extensions/bazaar" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/mechanisms/evm" + evmv1 "github.com/x402-foundation/x402/go/mechanisms/evm/exact/v1" + "github.com/x402-foundation/x402/go/mechanisms/svm" + svmv1 "github.com/x402-foundation/x402/go/mechanisms/svm/exact/v1" + "github.com/x402-foundation/x402/go/extensions/bazaar" ) // Create facilitator @@ -258,9 +258,9 @@ export PORT=4024 ## Dependencies -- `github.com/coinbase/x402/go` - Core facilitator -- `github.com/coinbase/x402/go/mechanisms/evm` - EVM mechanisms -- `github.com/coinbase/x402/go/mechanisms/svm` - SVM mechanisms -- `github.com/coinbase/x402/go/extensions/bazaar` - Bazaar extension +- `github.com/x402-foundation/x402/go` - Core facilitator +- `github.com/x402-foundation/x402/go/mechanisms/evm` - EVM mechanisms +- `github.com/x402-foundation/x402/go/mechanisms/svm` - SVM mechanisms +- `github.com/x402-foundation/x402/go/extensions/bazaar` - Bazaar extension - `github.com/ethereum/go-ethereum` - Ethereum client - `github.com/gagliardetto/solana-go` - Solana client diff --git a/e2e/facilitators/go/bazaar.go b/e2e/facilitators/go/bazaar.go index 45d9e762b7..a288c98110 100644 --- a/e2e/facilitators/go/bazaar.go +++ b/e2e/facilitators/go/bazaar.go @@ -5,8 +5,8 @@ import ( "sync" "time" - x402 "github.com/coinbase/x402/go" - exttypes "github.com/coinbase/x402/go/extensions/types" + x402 "github.com/x402-foundation/x402/go" + exttypes "github.com/x402-foundation/x402/go/extensions/types" ) type DiscoveredResource struct { diff --git a/e2e/facilitators/go/go.mod b/e2e/facilitators/go/go.mod index 439612494a..6328c72791 100644 --- a/e2e/facilitators/go/go.mod +++ b/e2e/facilitators/go/go.mod @@ -1,11 +1,11 @@ -module github.com/coinbase/x402-go/e2e/facilitators/go +module github.com/x402-foundation/x402-go/e2e/facilitators/go go 1.24.0 toolchain go1.24.1 require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/ethereum/go-ethereum v1.16.7 github.com/gagliardetto/solana-go v1.14.0 github.com/gin-gonic/gin v1.11.0 @@ -88,4 +88,4 @@ require ( google.golang.org/protobuf v1.36.9 // indirect ) -replace github.com/coinbase/x402/go => ../../../go +replace github.com/x402-foundation/x402/go => ../../../go diff --git a/e2e/facilitators/go/main.go b/e2e/facilitators/go/main.go index b9d7ad2f59..56f1975dd8 100644 --- a/e2e/facilitators/go/main.go +++ b/e2e/facilitators/go/main.go @@ -16,19 +16,6 @@ import ( "sync" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/bazaar" - "github.com/coinbase/x402/go/extensions/eip2612gassponsor" - "github.com/coinbase/x402/go/extensions/erc20approvalgassponsor" - exttypes "github.com/coinbase/x402/go/extensions/types" - evmmech "github.com/coinbase/x402/go/mechanisms/evm" - exactevm "github.com/coinbase/x402/go/mechanisms/evm/exact/facilitator" - exactevmv1 "github.com/coinbase/x402/go/mechanisms/evm/exact/v1/facilitator" - uptoevm "github.com/coinbase/x402/go/mechanisms/evm/upto/facilitator" - svmmech "github.com/coinbase/x402/go/mechanisms/svm" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/facilitator" - svmv1 "github.com/coinbase/x402/go/mechanisms/svm/exact/v1/facilitator" - x402types "github.com/coinbase/x402/go/types" "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" @@ -41,6 +28,19 @@ import ( solana "github.com/gagliardetto/solana-go" "github.com/gagliardetto/solana-go/rpc" "github.com/gin-gonic/gin" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/bazaar" + "github.com/x402-foundation/x402/go/extensions/eip2612gassponsor" + "github.com/x402-foundation/x402/go/extensions/erc20approvalgassponsor" + exttypes "github.com/x402-foundation/x402/go/extensions/types" + evmmech "github.com/x402-foundation/x402/go/mechanisms/evm" + exactevm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/facilitator" + exactevmv1 "github.com/x402-foundation/x402/go/mechanisms/evm/exact/v1/facilitator" + uptoevm "github.com/x402-foundation/x402/go/mechanisms/evm/upto/facilitator" + svmmech "github.com/x402-foundation/x402/go/mechanisms/svm" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/facilitator" + svmv1 "github.com/x402-foundation/x402/go/mechanisms/svm/exact/v1/facilitator" + x402types "github.com/x402-foundation/x402/go/types" ) const ( diff --git a/e2e/legacy/servers/gin/go.mod b/e2e/legacy/servers/gin/go.mod index 5c21953dec..4e1f3d0b5b 100644 --- a/e2e/legacy/servers/gin/go.mod +++ b/e2e/legacy/servers/gin/go.mod @@ -1,9 +1,9 @@ -module github.com/coinbase/x402/e2e/servers/gin +module github.com/x402-foundation/x402/e2e/servers/gin go 1.23.3 require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/gin-gonic/gin v1.10.0 github.com/joho/godotenv v1.5.1 ) @@ -39,4 +39,4 @@ require ( gopkg.in/yaml.v3 v3.0.1 // indirect ) -replace github.com/coinbase/x402/go => ../../../../go/legacy +replace github.com/x402-foundation/x402/go => ../../../../go/legacy diff --git a/e2e/legacy/servers/gin/main.go b/e2e/legacy/servers/gin/main.go index a3630f0221..a7ae87a3c5 100644 --- a/e2e/legacy/servers/gin/main.go +++ b/e2e/legacy/servers/gin/main.go @@ -9,10 +9,10 @@ import ( "syscall" "time" - x402gin "github.com/coinbase/x402/go/pkg/gin" - "github.com/coinbase/x402/go/pkg/types" "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402gin "github.com/x402-foundation/x402/go/pkg/gin" + "github.com/x402-foundation/x402/go/pkg/types" ) var shutdownRequested bool diff --git a/e2e/servers/echo/README.md b/e2e/servers/echo/README.md index 0a1fae0ee0..c8a30c6e73 100644 --- a/e2e/servers/echo/README.md +++ b/e2e/servers/echo/README.md @@ -22,12 +22,12 @@ This server demonstrates and tests the x402 Echo middleware with both EVM and SV ```go import ( - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - echomw "github.com/coinbase/x402/go/http/echo" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" - "github.com/coinbase/x402/go/extensions/bazaar" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + echomw "github.com/x402-foundation/x402/go/http/echo" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" + "github.com/x402-foundation/x402/go/extensions/bazaar" "github.com/labstack/echo/v4" ) @@ -173,12 +173,12 @@ Content-Type: application/json ## Dependencies -- `github.com/coinbase/x402/go` - Core x402 -- `github.com/coinbase/x402/go/http` - HTTP integration -- `github.com/coinbase/x402/go/http/echo` - Echo middleware -- `github.com/coinbase/x402/go/mechanisms/evm` - EVM server -- `github.com/coinbase/x402/go/mechanisms/svm` - SVM server -- `github.com/coinbase/x402/go/extensions/bazaar` - Discovery extension +- `github.com/x402-foundation/x402/go` - Core x402 +- `github.com/x402-foundation/x402/go/http` - HTTP integration +- `github.com/x402-foundation/x402/go/http/echo` - Echo middleware +- `github.com/x402-foundation/x402/go/mechanisms/evm` - EVM server +- `github.com/x402-foundation/x402/go/mechanisms/svm` - SVM server +- `github.com/x402-foundation/x402/go/extensions/bazaar` - Discovery extension - `github.com/labstack/echo/v4` - HTTP framework ## Implementation Highlights diff --git a/e2e/servers/echo/go.mod b/e2e/servers/echo/go.mod index dc75cd9323..30f0d55232 100644 --- a/e2e/servers/echo/go.mod +++ b/e2e/servers/echo/go.mod @@ -1,11 +1,11 @@ -module github.com/coinbase/x402/e2e/servers/echo +module github.com/x402-foundation/x402/e2e/servers/echo go 1.24.0 toolchain go1.24.1 require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/joho/godotenv v1.5.1 github.com/labstack/echo/v4 v4.15.1 ) @@ -70,4 +70,4 @@ require ( golang.org/x/time v0.14.0 // indirect ) -replace github.com/coinbase/x402/go => ../../../go +replace github.com/x402-foundation/x402/go => ../../../go diff --git a/e2e/servers/echo/main.go b/e2e/servers/echo/main.go index 0269f74880..a93d2431f7 100644 --- a/e2e/servers/echo/main.go +++ b/e2e/servers/echo/main.go @@ -8,18 +8,18 @@ import ( "syscall" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/bazaar" - "github.com/coinbase/x402/go/extensions/eip2612gassponsor" - "github.com/coinbase/x402/go/extensions/erc20approvalgassponsor" - "github.com/coinbase/x402/go/extensions/types" - x402http "github.com/coinbase/x402/go/http" - echomw "github.com/coinbase/x402/go/http/echo" - exactevm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - uptoevm "github.com/coinbase/x402/go/mechanisms/evm/upto/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" "github.com/joho/godotenv" "github.com/labstack/echo/v4" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/bazaar" + "github.com/x402-foundation/x402/go/extensions/eip2612gassponsor" + "github.com/x402-foundation/x402/go/extensions/erc20approvalgassponsor" + "github.com/x402-foundation/x402/go/extensions/types" + x402http "github.com/x402-foundation/x402/go/http" + echomw "github.com/x402-foundation/x402/go/http/echo" + exactevm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + uptoevm "github.com/x402-foundation/x402/go/mechanisms/evm/upto/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) var shutdownRequested bool diff --git a/e2e/servers/gin/README.md b/e2e/servers/gin/README.md index efdacab907..643d5e2fe7 100644 --- a/e2e/servers/gin/README.md +++ b/e2e/servers/gin/README.md @@ -23,12 +23,12 @@ This server demonstrates and tests the x402 Gin middleware with both EVM and SVM ```go import ( ginfw "github.com/gin-gonic/gin" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" - "github.com/coinbase/x402/go/extensions/bazaar" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" + "github.com/x402-foundation/x402/go/extensions/bazaar" ) // Create Gin router @@ -173,12 +173,12 @@ Content-Type: application/json ## Dependencies -- `github.com/coinbase/x402/go` - Core x402 -- `github.com/coinbase/x402/go/http` - HTTP integration -- `github.com/coinbase/x402/go/http/gin` - Gin middleware -- `github.com/coinbase/x402/go/mechanisms/evm` - EVM server -- `github.com/coinbase/x402/go/mechanisms/svm` - SVM server -- `github.com/coinbase/x402/go/extensions/bazaar` - Discovery extension +- `github.com/x402-foundation/x402/go` - Core x402 +- `github.com/x402-foundation/x402/go/http` - HTTP integration +- `github.com/x402-foundation/x402/go/http/gin` - Gin middleware +- `github.com/x402-foundation/x402/go/mechanisms/evm` - EVM server +- `github.com/x402-foundation/x402/go/mechanisms/svm` - SVM server +- `github.com/x402-foundation/x402/go/extensions/bazaar` - Discovery extension - `github.com/gin-gonic/gin` - HTTP framework ## Implementation Highlights diff --git a/e2e/servers/gin/go.mod b/e2e/servers/gin/go.mod index 393edfdb4f..a19f4cc267 100644 --- a/e2e/servers/gin/go.mod +++ b/e2e/servers/gin/go.mod @@ -1,11 +1,11 @@ -module github.com/coinbase/x402/e2e/servers/gin +module github.com/x402-foundation/x402/e2e/servers/gin go 1.24.0 toolchain go1.24.1 require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/gin-gonic/gin v1.11.0 github.com/joho/godotenv v1.5.1 ) @@ -88,4 +88,4 @@ require ( google.golang.org/protobuf v1.36.9 // indirect ) -replace github.com/coinbase/x402/go => ../../../go +replace github.com/x402-foundation/x402/go => ../../../go diff --git a/e2e/servers/gin/main.go b/e2e/servers/gin/main.go index a52a7bc234..bd0dc52e63 100644 --- a/e2e/servers/gin/main.go +++ b/e2e/servers/gin/main.go @@ -8,18 +8,18 @@ import ( "syscall" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/bazaar" - "github.com/coinbase/x402/go/extensions/eip2612gassponsor" - "github.com/coinbase/x402/go/extensions/erc20approvalgassponsor" - "github.com/coinbase/x402/go/extensions/types" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - exactevm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - uptoevm "github.com/coinbase/x402/go/mechanisms/evm/upto/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/bazaar" + "github.com/x402-foundation/x402/go/extensions/eip2612gassponsor" + "github.com/x402-foundation/x402/go/extensions/erc20approvalgassponsor" + "github.com/x402-foundation/x402/go/extensions/types" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + exactevm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + uptoevm "github.com/x402-foundation/x402/go/mechanisms/evm/upto/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) var shutdownRequested bool diff --git a/e2e/servers/mcp-go/go.mod b/e2e/servers/mcp-go/go.mod index 9fc72ccfb4..8825482a4f 100644 --- a/e2e/servers/mcp-go/go.mod +++ b/e2e/servers/mcp-go/go.mod @@ -1,11 +1,11 @@ -module github.com/coinbase/x402/e2e/servers/mcp-go +module github.com/x402-foundation/x402/e2e/servers/mcp-go go 1.24.0 toolchain go1.24.1 require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/modelcontextprotocol/go-sdk v1.3.0 ) @@ -29,4 +29,4 @@ require ( golang.org/x/sys v0.39.0 // indirect ) -replace github.com/coinbase/x402/go => ../../../go +replace github.com/x402-foundation/x402/go => ../../../go diff --git a/e2e/servers/mcp-go/main.go b/e2e/servers/mcp-go/main.go index 4f05392672..311c8b9b16 100644 --- a/e2e/servers/mcp-go/main.go +++ b/e2e/servers/mcp-go/main.go @@ -9,12 +9,12 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - mcp402 "github.com/coinbase/x402/go/mcp" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - "github.com/coinbase/x402/go/types" "github.com/modelcontextprotocol/go-sdk/mcp" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + mcp402 "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + "github.com/x402-foundation/x402/go/types" ) // getWeatherData simulates fetching weather data for a city. diff --git a/e2e/servers/nethttp/README.md b/e2e/servers/nethttp/README.md index a5b9e3667f..3ae45a673c 100644 --- a/e2e/servers/nethttp/README.md +++ b/e2e/servers/nethttp/README.md @@ -23,12 +23,12 @@ This server demonstrates and tests the x402 net/http middleware with both EVM an ```go import ( "net/http" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - nethttpmw "github.com/coinbase/x402/go/http/nethttp" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" - "github.com/coinbase/x402/go/extensions/bazaar" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + nethttpmw "github.com/x402-foundation/x402/go/http/nethttp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" + "github.com/x402-foundation/x402/go/extensions/bazaar" ) // Create ServeMux @@ -175,12 +175,12 @@ Content-Type: application/json ## Dependencies -- `github.com/coinbase/x402/go` - Core x402 -- `github.com/coinbase/x402/go/http` - HTTP integration -- `github.com/coinbase/x402/go/http/nethttp` - net/http middleware -- `github.com/coinbase/x402/go/mechanisms/evm` - EVM server -- `github.com/coinbase/x402/go/mechanisms/svm` - SVM server -- `github.com/coinbase/x402/go/extensions/bazaar` - Discovery extension +- `github.com/x402-foundation/x402/go` - Core x402 +- `github.com/x402-foundation/x402/go/http` - HTTP integration +- `github.com/x402-foundation/x402/go/http/nethttp` - net/http middleware +- `github.com/x402-foundation/x402/go/mechanisms/evm` - EVM server +- `github.com/x402-foundation/x402/go/mechanisms/svm` - SVM server +- `github.com/x402-foundation/x402/go/extensions/bazaar` - Discovery extension ## Implementation Highlights diff --git a/e2e/servers/nethttp/go.mod b/e2e/servers/nethttp/go.mod index acc801d29a..b1664e19c2 100644 --- a/e2e/servers/nethttp/go.mod +++ b/e2e/servers/nethttp/go.mod @@ -1,11 +1,11 @@ -module github.com/coinbase/x402/e2e/servers/nethttp +module github.com/x402-foundation/x402/e2e/servers/nethttp go 1.24.0 toolchain go1.24.1 require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/joho/godotenv v1.5.1 ) @@ -64,4 +64,4 @@ require ( golang.org/x/time v0.14.0 // indirect ) -replace github.com/coinbase/x402/go => ../../../go +replace github.com/x402-foundation/x402/go => ../../../go diff --git a/e2e/servers/nethttp/main.go b/e2e/servers/nethttp/main.go index f3d13206e4..745b287a55 100644 --- a/e2e/servers/nethttp/main.go +++ b/e2e/servers/nethttp/main.go @@ -9,17 +9,17 @@ import ( "syscall" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/bazaar" - "github.com/coinbase/x402/go/extensions/eip2612gassponsor" - "github.com/coinbase/x402/go/extensions/erc20approvalgassponsor" - "github.com/coinbase/x402/go/extensions/types" - x402http "github.com/coinbase/x402/go/http" - nethttpmw "github.com/coinbase/x402/go/http/nethttp" - exactevm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - uptoevm "github.com/coinbase/x402/go/mechanisms/evm/upto/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/bazaar" + "github.com/x402-foundation/x402/go/extensions/eip2612gassponsor" + "github.com/x402-foundation/x402/go/extensions/erc20approvalgassponsor" + "github.com/x402-foundation/x402/go/extensions/types" + x402http "github.com/x402-foundation/x402/go/http" + nethttpmw "github.com/x402-foundation/x402/go/http/nethttp" + exactevm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + uptoevm "github.com/x402-foundation/x402/go/mechanisms/evm/upto/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) var shutdownRequested bool diff --git a/examples/go/clients/advanced/README.md b/examples/go/clients/advanced/README.md index 43f3967788..0ff8248a4d 100644 --- a/examples/go/clients/advanced/README.md +++ b/examples/go/clients/advanced/README.md @@ -61,10 +61,10 @@ Register custom logic at different payment stages for observability and control: ```go import ( - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) signer, _ := evmsigners.NewClientSignerFromPrivateKey(os.Getenv("EVM_PRIVATE_KEY")) diff --git a/examples/go/clients/advanced/all_networks.go b/examples/go/clients/advanced/all_networks.go index 229b102536..5006fc309f 100644 --- a/examples/go/clients/advanced/all_networks.go +++ b/examples/go/clients/advanced/all_networks.go @@ -8,12 +8,12 @@ import ( "net/http" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" - svmsigners "github.com/coinbase/x402/go/signers/svm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" + svmsigners "github.com/x402-foundation/x402/go/signers/svm" ) /** diff --git a/examples/go/clients/advanced/custom_transport.go b/examples/go/clients/advanced/custom_transport.go index 2206722bdd..c75b7b10a8 100644 --- a/examples/go/clients/advanced/custom_transport.go +++ b/examples/go/clients/advanced/custom_transport.go @@ -6,10 +6,10 @@ import ( "net/http" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) /** @@ -141,4 +141,3 @@ func runCustomTransportExample(ctx context.Context, evmPrivateKey, url string) e printPaymentDetails(resp.Header) return nil } - diff --git a/examples/go/clients/advanced/error_recovery.go b/examples/go/clients/advanced/error_recovery.go index 8b65d2599e..8ef21dc6a4 100644 --- a/examples/go/clients/advanced/error_recovery.go +++ b/examples/go/clients/advanced/error_recovery.go @@ -5,10 +5,10 @@ import ( "fmt" "net/http" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) /** @@ -166,4 +166,3 @@ func contains(msg string, keywords ...string) bool { } return false } - diff --git a/examples/go/clients/advanced/go.mod b/examples/go/clients/advanced/go.mod index bd19708d9e..eb9e870b32 100644 --- a/examples/go/clients/advanced/go.mod +++ b/examples/go/clients/advanced/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/clients/advanced +module github.com/x402-foundation/x402/examples/go/clients/advanced go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/clients/advanced/hooks.go b/examples/go/clients/advanced/hooks.go index 0a3bad969e..4e3d43d3a0 100644 --- a/examples/go/clients/advanced/hooks.go +++ b/examples/go/clients/advanced/hooks.go @@ -5,10 +5,10 @@ import ( "fmt" "net/http" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) /** @@ -113,4 +113,3 @@ func runHooksExample(ctx context.Context, evmPrivateKey, url string) error { printPaymentDetails(resp.Header) return nil } - diff --git a/examples/go/clients/advanced/multi_network_priority.go b/examples/go/clients/advanced/multi_network_priority.go index be2145585f..583e823bfe 100644 --- a/examples/go/clients/advanced/multi_network_priority.go +++ b/examples/go/clients/advanced/multi_network_priority.go @@ -5,10 +5,10 @@ import ( "fmt" "net/http" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) /** @@ -33,9 +33,9 @@ func runMultiNetworkPriorityExample(ctx context.Context, evmPrivateKey, url stri // In a real scenario, you might have different signers for different networks // For demo purposes, we'll use the same signer but show the pattern - mainnetSigner := primarySigner // Would be different in production - testnetSigner := primarySigner // Would be different in production - baseSigner := primarySigner // Would be different in production + mainnetSigner := primarySigner // Would be different in production + testnetSigner := primarySigner // Would be different in production + baseSigner := primarySigner // Would be different in production fmt.Println("📝 Registering networks with priority:") fmt.Println(" 1. Specific networks (highest priority)") @@ -64,7 +64,7 @@ func runMultiNetworkPriorityExample(ctx context.Context, evmPrivateKey, url stri client.OnBeforePaymentCreation(func(ctx x402.PaymentCreationContext) (*x402.BeforePaymentCreationHookResult, error) { fmt.Printf("💰 Creating payment for network: %s\n", ctx.SelectedRequirements.GetNetwork()) fmt.Printf(" Scheme: %s\n", ctx.SelectedRequirements.GetScheme()) - + // Show which signer would be used based on network var signerType string switch ctx.SelectedRequirements.GetNetwork() { @@ -117,4 +117,3 @@ func runMultiNetworkPriorityExample(ctx context.Context, evmPrivateKey, url stri printPaymentDetails(resp.Header) return nil } - diff --git a/examples/go/clients/custom/README.md b/examples/go/clients/custom/README.md index 0e1b8f060c..f84bb69982 100644 --- a/examples/go/clients/custom/README.md +++ b/examples/go/clients/custom/README.md @@ -73,9 +73,9 @@ go run . ```go import ( - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) evmSigner, _ := evmsigners.NewClientSignerFromPrivateKey(os.Getenv("EVM_PRIVATE_KEY")) diff --git a/examples/go/clients/custom/go.mod b/examples/go/clients/custom/go.mod index f02b539d57..0df1bea0f6 100644 --- a/examples/go/clients/custom/go.mod +++ b/examples/go/clients/custom/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/clients/custom +module github.com/x402-foundation/x402/examples/go/clients/custom go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/clients/custom/main.go b/examples/go/clients/custom/main.go index fa1e0dd370..70a71fefc5 100644 --- a/examples/go/clients/custom/main.go +++ b/examples/go/clients/custom/main.go @@ -11,11 +11,11 @@ import ( "strings" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/types" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" + "github.com/x402-foundation/x402/go/types" ) /** @@ -241,7 +241,7 @@ func makeRequestWithPayment(ctx context.Context, x402Client *x402.X402Client, ur // Encode payment as base64 and add to header encodedPayment := base64.StdEncoding.EncodeToString(payloadBytes) - + // Create new request with payment header retryReq, err := http.NewRequestWithContext(ctx, "GET", url, nil) if err != nil { @@ -399,4 +399,3 @@ func extractSettlementResponse(headerValue string) (x402.SettleResponse, error) return settleResp, nil } - diff --git a/examples/go/clients/http/README.md b/examples/go/clients/http/README.md index a4d065771c..02f0ae8d28 100644 --- a/examples/go/clients/http/README.md +++ b/examples/go/clients/http/README.md @@ -54,10 +54,10 @@ go run . mechanism-helper-registration ```go import ( - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) // Create signer diff --git a/examples/go/clients/http/builder_pattern.go b/examples/go/clients/http/builder_pattern.go index 1256006bdc..e456925848 100644 --- a/examples/go/clients/http/builder_pattern.go +++ b/examples/go/clients/http/builder_pattern.go @@ -1,11 +1,11 @@ package main import ( - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" - svmsigners "github.com/coinbase/x402/go/signers/svm" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" + svmsigners "github.com/x402-foundation/x402/go/signers/svm" ) /** @@ -53,4 +53,3 @@ func createBuilderPatternClient(evmPrivateKey, svmPrivateKey string) (*x402.X402 return client, nil } - diff --git a/examples/go/clients/http/go.mod b/examples/go/clients/http/go.mod index 3136c3064e..b2c98c3be6 100644 --- a/examples/go/clients/http/go.mod +++ b/examples/go/clients/http/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/clients/http +module github.com/x402-foundation/x402/examples/go/clients/http go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/clients/http/main.go b/examples/go/clients/http/main.go index 5adbbad5f1..59074c6e47 100644 --- a/examples/go/clients/http/main.go +++ b/examples/go/clients/http/main.go @@ -8,8 +8,8 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" ) /** @@ -135,4 +135,3 @@ func makeRequest(client *x402.X402Client, url string) error { return nil } - diff --git a/examples/go/clients/http/mechanism_helper_registration.go b/examples/go/clients/http/mechanism_helper_registration.go index d2fa8cee9c..db0331087c 100644 --- a/examples/go/clients/http/mechanism_helper_registration.go +++ b/examples/go/clients/http/mechanism_helper_registration.go @@ -1,11 +1,11 @@ package main import ( - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" - svmsigners "github.com/coinbase/x402/go/signers/svm" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" + svmsigners "github.com/x402-foundation/x402/go/signers/svm" ) /** @@ -53,4 +53,3 @@ func createMechanismHelperRegistrationClient(evmPrivateKey, svmPrivateKey string return client, nil } - diff --git a/examples/go/clients/http/utils.go b/examples/go/clients/http/utils.go index 6a004f8ae1..1adb2afe2e 100644 --- a/examples/go/clients/http/utils.go +++ b/examples/go/clients/http/utils.go @@ -5,8 +5,8 @@ import ( "encoding/json" "net/http" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" ) // wrapHTTPClient wraps a standard HTTP client with x402 payment handling @@ -45,4 +45,3 @@ func extractPaymentResponse(headers http.Header) (*x402.SettleResponse, error) { return &settleResp, nil } - diff --git a/examples/go/clients/mcp-chatbot/go.mod b/examples/go/clients/mcp-chatbot/go.mod index 07a9305197..618f0db44a 100644 --- a/examples/go/clients/mcp-chatbot/go.mod +++ b/examples/go/clients/mcp-chatbot/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/clients/mcp-chatbot +module github.com/x402-foundation/x402/examples/go/clients/mcp-chatbot go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/joho/godotenv v1.5.1 github.com/modelcontextprotocol/go-sdk v1.3.0 github.com/sashabaranov/go-openai v1.38.1 diff --git a/examples/go/clients/mcp-chatbot/main.go b/examples/go/clients/mcp-chatbot/main.go index 4ecfaa5322..416208d1f4 100644 --- a/examples/go/clients/mcp-chatbot/main.go +++ b/examples/go/clients/mcp-chatbot/main.go @@ -21,13 +21,13 @@ import ( "os" "strings" - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - "github.com/coinbase/x402/go/mcp" - evmsigners "github.com/coinbase/x402/go/signers/evm" "github.com/joho/godotenv" mcpsdk "github.com/modelcontextprotocol/go-sdk/mcp" openai "github.com/sashabaranov/go-openai" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) // ============================================================================ diff --git a/examples/go/clients/mcp/advanced.go b/examples/go/clients/mcp/advanced.go index 5855bc0583..d3cb188371 100644 --- a/examples/go/clients/mcp/advanced.go +++ b/examples/go/clients/mcp/advanced.go @@ -5,12 +5,12 @@ import ( "fmt" "os" - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" - "github.com/coinbase/x402/go/mcp" "github.com/joho/godotenv" mcpsdk "github.com/modelcontextprotocol/go-sdk/mcp" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) // MCP Client with x402 Payment Support - Advanced Example diff --git a/examples/go/clients/mcp/go.mod b/examples/go/clients/mcp/go.mod index 3f605472d7..f07a1a6fff 100644 --- a/examples/go/clients/mcp/go.mod +++ b/examples/go/clients/mcp/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/clients/mcp +module github.com/x402-foundation/x402/examples/go/clients/mcp go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/joho/godotenv v1.5.1 github.com/modelcontextprotocol/go-sdk v1.3.0 ) diff --git a/examples/go/clients/mcp/simple.go b/examples/go/clients/mcp/simple.go index 1fc19d0530..da04824941 100644 --- a/examples/go/clients/mcp/simple.go +++ b/examples/go/clients/mcp/simple.go @@ -5,12 +5,12 @@ import ( "fmt" "os" - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" - "github.com/coinbase/x402/go/mcp" "github.com/joho/godotenv" mcpsdk "github.com/modelcontextprotocol/go-sdk/mcp" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) // MCP Client with x402 Payment Support - Simple Example diff --git a/examples/go/clients/payment-identifier/README.md b/examples/go/clients/payment-identifier/README.md index 3bd5851360..5a224dab8b 100644 --- a/examples/go/clients/payment-identifier/README.md +++ b/examples/go/clients/payment-identifier/README.md @@ -48,7 +48,7 @@ go run main.go ### Generating a Payment ID ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" // Generate with default prefix "pay_" id := paymentidentifier.GeneratePaymentID("") diff --git a/examples/go/clients/payment-identifier/go.mod b/examples/go/clients/payment-identifier/go.mod index 41a8179505..39203cdb21 100644 --- a/examples/go/clients/payment-identifier/go.mod +++ b/examples/go/clients/payment-identifier/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/clients/payment-identifier +module github.com/x402-foundation/x402/examples/go/clients/payment-identifier go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/clients/payment-identifier/main.go b/examples/go/clients/payment-identifier/main.go index 5cc78af831..e69d7b5cb9 100644 --- a/examples/go/clients/payment-identifier/main.go +++ b/examples/go/clients/payment-identifier/main.go @@ -11,12 +11,12 @@ import ( "strings" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/paymentidentifier" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/client" - evmsigners "github.com/coinbase/x402/go/signers/evm" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/paymentidentifier" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/client" + evmsigners "github.com/x402-foundation/x402/go/signers/evm" ) /** @@ -44,9 +44,9 @@ import ( // It then caches the resulting PAYMENT-SIGNATURE header so that subsequent // requests replay the exact same signed payload — a true retry. type PaymentIdentifierTransport struct { - Inner http.RoundTripper - PaymentID string - cachedPaymentHeader string // PAYMENT-SIGNATURE from the first successful attempt + Inner http.RoundTripper + PaymentID string + cachedPaymentHeader string // PAYMENT-SIGNATURE from the first successful attempt } func (t *PaymentIdentifierTransport) RoundTrip(req *http.Request) (*http.Response, error) { diff --git a/examples/go/facilitator/advanced/README.md b/examples/go/facilitator/advanced/README.md index a0633b6679..76ada96923 100644 --- a/examples/go/facilitator/advanced/README.md +++ b/examples/go/facilitator/advanced/README.md @@ -238,9 +238,9 @@ Register additional schemes for other networks: ```go import ( - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/facilitator" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/facilitator" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/facilitator" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/facilitator" ) facilitator := x402.Newx402Facilitator() @@ -260,7 +260,7 @@ facilitator.Register([]x402.Network{"solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"}, Extract and validate payment identifiers for deduplication: ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" // In verification hook, extract and track payment ID facilitator.OnAfterVerify(func(ctx x402.FacilitatorVerifyResultContext) error { diff --git a/examples/go/facilitator/advanced/all_networks.go b/examples/go/facilitator/advanced/all_networks.go index 6b658c2ab8..053401935f 100644 --- a/examples/go/facilitator/advanced/all_networks.go +++ b/examples/go/facilitator/advanced/all_networks.go @@ -7,10 +7,10 @@ import ( "net/http" "time" - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/facilitator" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/facilitator" "github.com/gin-gonic/gin" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/facilitator" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/facilitator" ) /** diff --git a/examples/go/facilitator/advanced/bazaar.go b/examples/go/facilitator/advanced/bazaar.go index afd1c8524f..98bcf1b871 100644 --- a/examples/go/facilitator/advanced/bazaar.go +++ b/examples/go/facilitator/advanced/bazaar.go @@ -8,12 +8,12 @@ import ( "sync" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/bazaar" - exttypes "github.com/coinbase/x402/go/extensions/types" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/facilitator" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/facilitator" "github.com/gin-gonic/gin" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/bazaar" + exttypes "github.com/x402-foundation/x402/go/extensions/types" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/facilitator" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/facilitator" ) /** diff --git a/examples/go/facilitator/advanced/go.mod b/examples/go/facilitator/advanced/go.mod index 9c32300874..b966128d20 100644 --- a/examples/go/facilitator/advanced/go.mod +++ b/examples/go/facilitator/advanced/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/facilitator +module github.com/x402-foundation/x402/examples/go/facilitator go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/ethereum/go-ethereum v1.16.7 github.com/gagliardetto/solana-go v1.14.0 github.com/gin-gonic/gin v1.11.0 diff --git a/examples/go/facilitator/advanced/payment-identifier.go b/examples/go/facilitator/advanced/payment-identifier.go index 13bea06836..d3dae551c0 100644 --- a/examples/go/facilitator/advanced/payment-identifier.go +++ b/examples/go/facilitator/advanced/payment-identifier.go @@ -8,11 +8,11 @@ import ( "sync" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/paymentidentifier" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/facilitator" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/facilitator" "github.com/gin-gonic/gin" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/paymentidentifier" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/facilitator" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/facilitator" ) /** diff --git a/examples/go/facilitator/advanced/signer.go b/examples/go/facilitator/advanced/signer.go index eac33b0a58..7fdc1885da 100644 --- a/examples/go/facilitator/advanced/signer.go +++ b/examples/go/facilitator/advanced/signer.go @@ -9,8 +9,6 @@ import ( "strings" "time" - evmmech "github.com/coinbase/x402/go/mechanisms/evm" - svmmech "github.com/coinbase/x402/go/mechanisms/svm" "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" @@ -21,6 +19,8 @@ import ( "github.com/ethereum/go-ethereum/signer/core/apitypes" solana "github.com/gagliardetto/solana-go" "github.com/gagliardetto/solana-go/rpc" + evmmech "github.com/x402-foundation/x402/go/mechanisms/evm" + svmmech "github.com/x402-foundation/x402/go/mechanisms/svm" ) const ( diff --git a/examples/go/facilitator/basic/README.md b/examples/go/facilitator/basic/README.md index 9bdae3db57..24617d5b1f 100644 --- a/examples/go/facilitator/basic/README.md +++ b/examples/go/facilitator/basic/README.md @@ -235,9 +235,9 @@ Register additional schemes for other networks: ```go import ( - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/facilitator" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/facilitator" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/facilitator" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/facilitator" ) facilitator := x402.Newx402Facilitator() diff --git a/examples/go/facilitator/basic/go.mod b/examples/go/facilitator/basic/go.mod index 450c76d2cf..2004fb3aa8 100644 --- a/examples/go/facilitator/basic/go.mod +++ b/examples/go/facilitator/basic/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/facilitator +module github.com/x402-foundation/x402/examples/go/facilitator go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/ethereum/go-ethereum v1.16.7 github.com/gagliardetto/solana-go v1.14.0 github.com/gin-gonic/gin v1.11.0 diff --git a/examples/go/facilitator/basic/main.go b/examples/go/facilitator/basic/main.go index c9ead5daa9..cb8f714767 100644 --- a/examples/go/facilitator/basic/main.go +++ b/examples/go/facilitator/basic/main.go @@ -8,14 +8,14 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/facilitator" - evmv1 "github.com/coinbase/x402/go/mechanisms/evm/exact/v1/facilitator" - svmmech "github.com/coinbase/x402/go/mechanisms/svm" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/facilitator" - svmv1 "github.com/coinbase/x402/go/mechanisms/svm/exact/v1/facilitator" "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/facilitator" + evmv1 "github.com/x402-foundation/x402/go/mechanisms/evm/exact/v1/facilitator" + svmmech "github.com/x402-foundation/x402/go/mechanisms/svm" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/facilitator" + svmv1 "github.com/x402-foundation/x402/go/mechanisms/svm/exact/v1/facilitator" ) const ( @@ -48,7 +48,7 @@ func main() { } facilitator := x402.Newx402Facilitator() - + // Register V2 EVM scheme with smart wallet deployment enabled evmConfig := &evm.ExactEvmSchemeConfig{ DeployERC4337WithEIP6492: true, @@ -166,4 +166,3 @@ func main() { os.Exit(1) } } - diff --git a/examples/go/facilitator/basic/signer.go b/examples/go/facilitator/basic/signer.go index 442da10515..e46bcebfb1 100644 --- a/examples/go/facilitator/basic/signer.go +++ b/examples/go/facilitator/basic/signer.go @@ -9,8 +9,6 @@ import ( "strings" "time" - evmmech "github.com/coinbase/x402/go/mechanisms/evm" - svmmech "github.com/coinbase/x402/go/mechanisms/svm" "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/accounts/abi" "github.com/ethereum/go-ethereum/common" @@ -21,6 +19,8 @@ import ( "github.com/ethereum/go-ethereum/signer/core/apitypes" solana "github.com/gagliardetto/solana-go" "github.com/gagliardetto/solana-go/rpc" + evmmech "github.com/x402-foundation/x402/go/mechanisms/evm" + svmmech "github.com/x402-foundation/x402/go/mechanisms/svm" ) const ( @@ -214,7 +214,7 @@ func (s *facilitatorEvmSigner) ReadContract( if err != nil { return nil, fmt.Errorf("failed to call contract: %w", err) } - + if len(methodObj.Outputs) == 0 { return nil, nil } diff --git a/examples/go/servers/advanced/all_networks.go b/examples/go/servers/advanced/all_networks.go index 24de2fcc43..fb3501baa1 100644 --- a/examples/go/servers/advanced/all_networks.go +++ b/examples/go/servers/advanced/all_networks.go @@ -6,13 +6,13 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) /** diff --git a/examples/go/servers/advanced/bazaar.go b/examples/go/servers/advanced/bazaar.go index 22976f042d..4e0288c136 100644 --- a/examples/go/servers/advanced/bazaar.go +++ b/examples/go/servers/advanced/bazaar.go @@ -6,14 +6,14 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/bazaar" - "github.com/coinbase/x402/go/extensions/types" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/bazaar" + "github.com/x402-foundation/x402/go/extensions/types" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const DefaultPort = "4021" @@ -114,7 +114,7 @@ func main() { {Network: evmNetwork, Server: evm.NewExactEvmScheme()}, }, SyncFacilitatorOnStart: true, - Timeout: 30 * time.Second, + Timeout: 30 * time.Second, })) r.GET("/weather", func(c *ginfw.Context) { @@ -145,4 +145,3 @@ func main() { os.Exit(1) } } - diff --git a/examples/go/servers/advanced/custom-money-definition.go b/examples/go/servers/advanced/custom-money-definition.go index 13d5e8973d..163ae29251 100644 --- a/examples/go/servers/advanced/custom-money-definition.go +++ b/examples/go/servers/advanced/custom-money-definition.go @@ -7,12 +7,12 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const DefaultPort = "4021" @@ -108,7 +108,7 @@ func main() { {Network: evmNetwork, Server: evmScheme}, // Use custom scheme }, SyncFacilitatorOnStart: true, - Timeout: 30 * time.Second, + Timeout: 30 * time.Second, })) r.GET("/weather", func(c *ginfw.Context) { @@ -128,4 +128,3 @@ func main() { os.Exit(1) } } - diff --git a/examples/go/servers/advanced/dynamic-pay-to.go b/examples/go/servers/advanced/dynamic-pay-to.go index 849792f593..ec8ea2648b 100644 --- a/examples/go/servers/advanced/dynamic-pay-to.go +++ b/examples/go/servers/advanced/dynamic-pay-to.go @@ -7,12 +7,12 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const DefaultPort = "4021" @@ -110,7 +110,7 @@ func main() { {Network: evmNetwork, Server: evm.NewExactEvmScheme()}, }, SyncFacilitatorOnStart: true, - Timeout: 30 * time.Second, + Timeout: 30 * time.Second, })) r.GET("/weather", func(c *ginfw.Context) { @@ -130,4 +130,3 @@ func main() { os.Exit(1) } } - diff --git a/examples/go/servers/advanced/dynamic-price.go b/examples/go/servers/advanced/dynamic-price.go index 5b6dc89c23..dbe1aaa132 100644 --- a/examples/go/servers/advanced/dynamic-price.go +++ b/examples/go/servers/advanced/dynamic-price.go @@ -7,12 +7,12 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const DefaultPort = "4021" @@ -58,10 +58,10 @@ func main() { dynamicPrice := func(ctx context.Context, reqCtx x402http.HTTPRequestContext) (x402.Price, error) { // In a real implementation, you would extract the tier from query params // or headers using reqCtx.Adapter - + // For this example, we'll demonstrate the concept with a default tier tier := "standard" // default - + // You could extract tier from request like: // if reqCtx.Adapter != nil { // tier = extractQueryParam(reqCtx.Adapter, "tier") @@ -101,7 +101,7 @@ func main() { {Network: evmNetwork, Server: evm.NewExactEvmScheme()}, }, SyncFacilitatorOnStart: true, - Timeout: 30 * time.Second, + Timeout: 30 * time.Second, })) r.GET("/weather", func(c *ginfw.Context) { @@ -141,4 +141,3 @@ func main() { os.Exit(1) } } - diff --git a/examples/go/servers/advanced/eip2612-gas-sponsoring.go b/examples/go/servers/advanced/eip2612-gas-sponsoring.go index dba8157f0c..99ff6436f0 100644 --- a/examples/go/servers/advanced/eip2612-gas-sponsoring.go +++ b/examples/go/servers/advanced/eip2612-gas-sponsoring.go @@ -6,13 +6,13 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/eip2612gassponsor" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/eip2612gassponsor" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const eip2612DefaultPort = "4021" diff --git a/examples/go/servers/advanced/go.mod b/examples/go/servers/advanced/go.mod index 4b2303b641..84e13727a3 100644 --- a/examples/go/servers/advanced/go.mod +++ b/examples/go/servers/advanced/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/gin +module github.com/x402-foundation/x402/examples/go/servers/gin go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/gin-gonic/gin v1.11.0 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/servers/advanced/hooks.go b/examples/go/servers/advanced/hooks.go index 402c9dbf2e..584498b2ac 100644 --- a/examples/go/servers/advanced/hooks.go +++ b/examples/go/servers/advanced/hooks.go @@ -5,12 +5,12 @@ import ( "net/http" "os" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const DefaultPort = "4021" @@ -48,7 +48,7 @@ func main() { // Create EVM scheme server evmScheme := evm.NewExactEvmScheme() - // Create x402 resource server with hooks + // Create x402 resource server with hooks server := x402.Newx402ResourceServer( x402.WithFacilitatorClient(facilitatorClient), ). diff --git a/examples/go/servers/bazaar/go.mod b/examples/go/servers/bazaar/go.mod index 5b5b438c56..1d11fd6b64 100644 --- a/examples/go/servers/bazaar/go.mod +++ b/examples/go/servers/bazaar/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/bazaar +module github.com/x402-foundation/x402/examples/go/servers/bazaar go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/gin-gonic/gin v1.11.0 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/servers/bazaar/main.go b/examples/go/servers/bazaar/main.go index c6e6c48e0c..32502a724c 100644 --- a/examples/go/servers/bazaar/main.go +++ b/examples/go/servers/bazaar/main.go @@ -6,14 +6,14 @@ import ( "os" "time" - x402http "github.com/coinbase/x402/go/http" - "github.com/coinbase/x402/go/extensions/bazaar" - "github.com/coinbase/x402/go/extensions/types" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + "github.com/x402-foundation/x402/go/extensions/bazaar" + "github.com/x402-foundation/x402/go/extensions/types" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) const ( diff --git a/examples/go/servers/custom/go.mod b/examples/go/servers/custom/go.mod index 1896b9b7ab..a80a79990c 100644 --- a/examples/go/servers/custom/go.mod +++ b/examples/go/servers/custom/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/custom +module github.com/x402-foundation/x402/examples/go/servers/custom go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/gin-gonic/gin v1.11.0 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/servers/custom/main.go b/examples/go/servers/custom/main.go index a217a9aa60..d95fb8437d 100644 --- a/examples/go/servers/custom/main.go +++ b/examples/go/servers/custom/main.go @@ -10,11 +10,11 @@ import ( "sync" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const ( @@ -324,7 +324,7 @@ func main() { // Initialize the server (queries facilitator for supported schemes) ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second) defer cancel() - + if err := x402Server.Initialize(ctx); err != nil { fmt.Printf("⚠️ Warning: failed to initialize x402 server: %v\n", err) } @@ -406,4 +406,3 @@ func main() { os.Exit(1) } } - diff --git a/examples/go/servers/echo/go.mod b/examples/go/servers/echo/go.mod index 4c09ee7ccd..605f8c5ff8 100644 --- a/examples/go/servers/echo/go.mod +++ b/examples/go/servers/echo/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/echo +module github.com/x402-foundation/x402/examples/go/servers/echo go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/joho/godotenv v1.5.1 github.com/labstack/echo/v4 v4.15.1 ) diff --git a/examples/go/servers/echo/main.go b/examples/go/servers/echo/main.go index 9c34a3998e..00bfa8dc92 100644 --- a/examples/go/servers/echo/main.go +++ b/examples/go/servers/echo/main.go @@ -6,13 +6,13 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - echomw "github.com/coinbase/x402/go/http/echo" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" "github.com/joho/godotenv" "github.com/labstack/echo/v4" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + echomw "github.com/x402-foundation/x402/go/http/echo" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) const ( diff --git a/examples/go/servers/gin/go.mod b/examples/go/servers/gin/go.mod index 4b2303b641..84e13727a3 100644 --- a/examples/go/servers/gin/go.mod +++ b/examples/go/servers/gin/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/gin +module github.com/x402-foundation/x402/examples/go/servers/gin go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/gin-gonic/gin v1.11.0 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/servers/gin/main.go b/examples/go/servers/gin/main.go index 046d70c587..c45495f0d2 100644 --- a/examples/go/servers/gin/main.go +++ b/examples/go/servers/gin/main.go @@ -6,13 +6,13 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) const ( @@ -96,7 +96,7 @@ func main() { ginmw.SchemeConfig{Network: "eip155:84532", Server: evm.NewExactEvmScheme()}, ginmw.SchemeConfig{Network: "solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1", Server: svm.NewExactSvmScheme()}, }, - Timeout: 30 * time.Second, + Timeout: 30 * time.Second, })) /** @@ -147,4 +147,3 @@ func main() { os.Exit(1) } } - diff --git a/examples/go/servers/mcp/advanced.go b/examples/go/servers/mcp/advanced.go index 85d985606f..118365ae6e 100644 --- a/examples/go/servers/mcp/advanced.go +++ b/examples/go/servers/mcp/advanced.go @@ -19,12 +19,12 @@ import ( "net/http" "os" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - "github.com/coinbase/x402/go/mcp" "github.com/joho/godotenv" mcpsdk "github.com/modelcontextprotocol/go-sdk/mcp" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) func runAdvanced() error { diff --git a/examples/go/servers/mcp/existing-server.go b/examples/go/servers/mcp/existing-server.go index 077fba5b11..7b90dcd654 100644 --- a/examples/go/servers/mcp/existing-server.go +++ b/examples/go/servers/mcp/existing-server.go @@ -17,12 +17,12 @@ import ( "net/http" "os" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - "github.com/coinbase/x402/go/mcp" "github.com/joho/godotenv" mcpsdk "github.com/modelcontextprotocol/go-sdk/mcp" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) func runExisting() error { diff --git a/examples/go/servers/mcp/go.mod b/examples/go/servers/mcp/go.mod index 797f9c3815..257a6f39bf 100644 --- a/examples/go/servers/mcp/go.mod +++ b/examples/go/servers/mcp/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/mcp +module github.com/x402-foundation/x402/examples/go/servers/mcp go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/joho/godotenv v1.5.1 github.com/modelcontextprotocol/go-sdk v1.3.0 ) diff --git a/examples/go/servers/mcp/simple.go b/examples/go/servers/mcp/simple.go index 820c09a2ad..c5fc5da93d 100644 --- a/examples/go/servers/mcp/simple.go +++ b/examples/go/servers/mcp/simple.go @@ -17,12 +17,12 @@ import ( "net/http" "os" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - "github.com/coinbase/x402/go/mcp" "github.com/joho/godotenv" mcpsdk "github.com/modelcontextprotocol/go-sdk/mcp" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + "github.com/x402-foundation/x402/go/mcp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) func runSimple() error { diff --git a/examples/go/servers/nethttp/go.mod b/examples/go/servers/nethttp/go.mod index cf8d3a11de..6716326d01 100644 --- a/examples/go/servers/nethttp/go.mod +++ b/examples/go/servers/nethttp/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/nethttp +module github.com/x402-foundation/x402/examples/go/servers/nethttp go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0 + github.com/x402-foundation/x402/go v0.0.0 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/servers/nethttp/main.go b/examples/go/servers/nethttp/main.go index 71c683874a..072402cf7e 100644 --- a/examples/go/servers/nethttp/main.go +++ b/examples/go/servers/nethttp/main.go @@ -7,12 +7,12 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - nethttpmw "github.com/coinbase/x402/go/http/nethttp" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" - svm "github.com/coinbase/x402/go/mechanisms/svm/exact/server" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + nethttpmw "github.com/x402-foundation/x402/go/http/nethttp" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" + svm "github.com/x402-foundation/x402/go/mechanisms/svm/exact/server" ) const ( diff --git a/examples/go/servers/payment-identifier/README.md b/examples/go/servers/payment-identifier/README.md index ac285739b9..490ac8d7d2 100644 --- a/examples/go/servers/payment-identifier/README.md +++ b/examples/go/servers/payment-identifier/README.md @@ -48,7 +48,7 @@ go run main.go ### Declaring the Extension ```go -import "github.com/coinbase/x402/go/extensions/paymentidentifier" +import "github.com/x402-foundation/x402/go/extensions/paymentidentifier" // Require payment identifier (clients MUST provide one) paymentIdExtension := paymentidentifier.DeclarePaymentIdentifierExtension(true) diff --git a/examples/go/servers/payment-identifier/go.mod b/examples/go/servers/payment-identifier/go.mod index 3f33b32f5e..73aa915e66 100644 --- a/examples/go/servers/payment-identifier/go.mod +++ b/examples/go/servers/payment-identifier/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/payment-identifier +module github.com/x402-foundation/x402/examples/go/servers/payment-identifier go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/gin-gonic/gin v1.11.0 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/servers/payment-identifier/main.go b/examples/go/servers/payment-identifier/main.go index d581cbc8a3..ac69bfa4ef 100644 --- a/examples/go/servers/payment-identifier/main.go +++ b/examples/go/servers/payment-identifier/main.go @@ -9,13 +9,13 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - "github.com/coinbase/x402/go/extensions/paymentidentifier" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - evm "github.com/coinbase/x402/go/mechanisms/evm/exact/server" "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + "github.com/x402-foundation/x402/go/extensions/paymentidentifier" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + evm "github.com/x402-foundation/x402/go/mechanisms/evm/exact/server" ) const DefaultPort = "4021" diff --git a/examples/go/servers/upto/go.mod b/examples/go/servers/upto/go.mod index dceea77cf5..aeec5bd1b4 100644 --- a/examples/go/servers/upto/go.mod +++ b/examples/go/servers/upto/go.mod @@ -1,13 +1,13 @@ -module github.com/coinbase/x402/examples/go/servers/upto +module github.com/x402-foundation/x402/examples/go/servers/upto go 1.24.0 toolchain go1.24.1 -replace github.com/coinbase/x402/go => ../../../../go +replace github.com/x402-foundation/x402/go => ../../../../go require ( - github.com/coinbase/x402/go v0.0.0-00010101000000-000000000000 + github.com/x402-foundation/x402/go v0.0.0-00010101000000-000000000000 github.com/gin-gonic/gin v1.11.0 github.com/joho/godotenv v1.5.1 ) diff --git a/examples/go/servers/upto/main.go b/examples/go/servers/upto/main.go index 3a2c41f77a..b61fd8a20f 100644 --- a/examples/go/servers/upto/main.go +++ b/examples/go/servers/upto/main.go @@ -7,12 +7,12 @@ import ( "os" "time" - x402 "github.com/coinbase/x402/go" - x402http "github.com/coinbase/x402/go/http" - ginmw "github.com/coinbase/x402/go/http/gin" - uptoevm "github.com/coinbase/x402/go/mechanisms/evm/upto/server" ginfw "github.com/gin-gonic/gin" "github.com/joho/godotenv" + x402 "github.com/x402-foundation/x402/go" + x402http "github.com/x402-foundation/x402/go/http" + ginmw "github.com/x402-foundation/x402/go/http/gin" + uptoevm "github.com/x402-foundation/x402/go/mechanisms/evm/upto/server" ) const DefaultPort = "4021" diff --git a/examples/typescript/legacy/agent/package.json b/examples/typescript/legacy/agent/package.json index b029f380cd..bcd036fb9f 100644 --- a/examples/typescript/legacy/agent/package.json +++ b/examples/typescript/legacy/agent/package.json @@ -10,8 +10,8 @@ }, "keywords": [], "license": "Apache-2.0", - "author": "Coinbase Inc.", - "repository": "https://github.com/coinbase/x402", + "author": "x402 Foundation", + "repository": "https://github.com/x402-foundation/x402", "description": "x402 Payment Protocol", "devDependencies": { "@eslint/js": "^9.24.0", diff --git a/examples/typescript/legacy/fullstack/browser-wallet-example/README.md b/examples/typescript/legacy/fullstack/browser-wallet-example/README.md index 4d1d779f91..8b26a067c2 100644 --- a/examples/typescript/legacy/fullstack/browser-wallet-example/README.md +++ b/examples/typescript/legacy/fullstack/browser-wallet-example/README.md @@ -11,7 +11,7 @@ x402 is a payments protocol for the internet built on HTTP. It enables: - **No fees**, 2 second settlement - **$0.001 minimum** payments -Learn more at [x402.org](https://x402.org) or check out the [GitHub repository](https://github.com/coinbase/x402). +Learn more at [x402.org](https://x402.org) or check out the [GitHub repository](https://github.com/x402-foundation/x402). ## This Template Includes @@ -158,9 +158,9 @@ The UI is intentionally minimal so you can add your own design system. All style Building something with x402? We're here to help! - 📚 **Documentation**: [x402.org](https://x402.org) -- 💻 **Source Code**: [github.com/coinbase/x402](https://github.com/coinbase/x402) +- 💻 **Source Code**: [github.com/x402-foundation/x402](https://github.com/x402-foundation/x402) - 💬 **Community**: [Join our Discord](https://discord.gg/invite/cdp) -- 🐛 **Issues**: [GitHub Issues](https://github.com/coinbase/x402/issues) +- 🐛 **Issues**: [GitHub Issues](https://github.com/x402-foundation/x402/issues) ## Contributing @@ -168,7 +168,7 @@ Found a bug or have an improvement for this template? Please open an issue or su ## License -This template is open source and available under the same license as the x402 protocol. See the [x402 repository](https://github.com/coinbase/x402) for details. +This template is open source and available under the same license as the x402 protocol. See the [x402 repository](https://github.com/x402-foundation/x402) for details. --- diff --git a/examples/typescript/legacy/fullstack/browser-wallet-example/client/src/App.tsx b/examples/typescript/legacy/fullstack/browser-wallet-example/client/src/App.tsx index 435e5608d5..1a7e1ef784 100644 --- a/examples/typescript/legacy/fullstack/browser-wallet-example/client/src/App.tsx +++ b/examples/typescript/legacy/fullstack/browser-wallet-example/client/src/App.tsx @@ -138,9 +138,9 @@ function App() {

{option.name}

{option.price}

{option.description}

- + {option.endpoint === '/api/pay/session' && ( -