madebydanny.uk
-MBD CDN
-A simple, fast CDN powered by Cloudflare R2. Free for Life.
-Are you a developer looking for a CDN with an API? Just send a POST to cdn.madebydanny.uk
-what's been uploaded
-MBD CDN is a content delivery network built by madebydanny.uk - to host and serve media files — images, GIFs, videos, and documents — at fast speeds with global availability.
-Files uploaded here are stored in Cloudflare R2 object storage - and served from Cloudflare's global edge network, which spans over 310 cities worldwide. Your media is delivered - from a server close to whoever is viewing it, minimising latency.
-The platform is designed to be simple and permanent. Files are stored indefinitely once uploaded - and immediately available via a public URL — no sign-up, no expiry, no catch.
-The underlying stack is a Cloudflare Worker with R2 for storage and - D1 for metadata. The whole thing runs at the edge with no cold starts.
-You select a file
-Your file is read locally in the browser and sent directly to the CDN API over HTTPS — straight to the Cloudflare edge, no intermediate servers.
+ +danielmorrisey.com/cdn
+MBD CDN
++ A simple, fast CDN powered by Cloudflare R2 and Workers. Free for Life.. +
+what's been uploaded
+A Worker receives it
-A Cloudflare Worker handles the upload at the edge. It assigns a UUID filename, detects the file type, and streams the body directly into R2 with no cold starts.
+R2 stores it permanently
-The file is written to Cloudflare R2 — S3-compatible storage with zero egress fees and 11 nines of durability. Metadata is logged to D1 to track stats.
+ + + +You get a public URL
-A permanent cdn.madebydanny.uk link is returned instantly. Anyone with it can access the file, served from whichever Cloudflare PoP is closest to them.
310+ Edge Locations
-Files cached and served globally — sub-50ms for most users.
-R2 Object Storage
-Zero egress fees, no expiry. Enterprise-grade durability.
-Zero Cold Starts
-Workers run at the edge — every request is handled immediately.
-Need higher limits? Try the new API!
-your usage today
-In an HTML image tag
Wrap any src to serve AVIF automatically to supporting browsers.
latest from bluesky
Projects
${escapeHtml(record.text || '')}
- view on Bluesky ↗ + view on Bluesky `; if (record.createdAt) { diff --git a/media/images/seo/cdn.png b/media/images/seo/cdn.png new file mode 100644 index 0000000000000000000000000000000000000000..942813c2dbf68d89620902912800b6d0f82aba64 GIT binary patch literal 21811 zcmeAS@N?(olHy`uVBq!ia0y~yU}a!nV0PeOV_;w?$vLo)fq{Xuz$3Dlfq`2Xgc%uT z&5>YWU|=i`a(7}_cTVOd0|Ns~x}&cn1H;CC?mvkj{d^^^5hcO-X(i=}MX3yKnd!NS z^EOUPW?%?e=jq}YQo;D|!U$@M$o1yZ>+Rkl@uKs>JdD%a`gK#ry#a_SXy=-!;BkX?l^K|c;vuk?oZ>4A% zFc{>3niO_jAIy6cb(^lvK7M}NpWhLyCwv2&F3c#vu)sg*aPN#?)@zcUL~XW^oNxSf zyD=!N4ufLtMe__NY3V$k-5s^+e(`huZ(h0obUMgb9gwkd-5p}V8SbefcPH|n6I(3W zymG&GGDwyOB0I5uu}N#$vtwr;%}L(1301PIqwL?Mt0q}WF}#=kjxN?z}7i;;m1 z)R=fNF~Zv4Mfp$s`?;PB49%c|>x)B+{p|FBuD}Iy{0s*cfO2uH*k#+~SNb8Y3?`xy z3=%9LzjP-ZzkkDld6r-sV}m0o@$XW3bbsM?^*3|8z30dLIJ9d5gTsALpvM-xJ+?OK z$^0M3gYH>^sw1P>3=F?q8CV!zG@19;N9BBB@SeG|&=}NuV_~?U4@&A>N1ySj`^EZP z&;uodI#8(}rl91<;_zb1$^#4z`$3L6EwXsWn^&ibK*9S3)Fj=&v+?o!@ArOc9P|R^ z?k~*@91Is0g42b^^}IVi8-hTAy%$tilsvfA8x3mtUFm4JE?m+KGITx2v9cAPe=L9b zXX$FrT_-~l7#2(i1+UrBy!~L;a2twRxXoZwVN=gLPP*%&VPf_$Qsbo~B%>8Y;rM>QNke#ry*C92~``HQ!mZaq6^E{OMGWnL_I>xh1&%nZ2*Z)^Y#QkOwy;B^VY+gX~vJy0!ktaRu4B_dOtohJ$=>y7A%hBRf~J zG>b6)ayOgL$gm5P;Z}6~NIxFmc68%MPmpDzpmH>CwuQOwKf@A`Jz=1{;!$k +L&VoUUmrDz zGDD^dQ4I_Sia^c&Rq0u(i #=3lI5I8X$N;mkbq2jTOpZ4Pd@x%aQ#;{OZ{;5s<3JM#eh{92QP8#;b` z|Hb`Vh~a=2D4a#vzrFLYxA~EtnREIVOY@g6|6*PL+}`l*9t*<;p?~*T7#w_k*#A8| zsDA0< c z;P4*QS8zCU=Z7zo+vP7$Z?Z7-fWld#BYU$O!=V+k_9Z3DFi5C^dWZtgm+$jAkTGkc zARj}I2&fa+@$&TbwagsKS)V2~@I$H#wr8N^E@3-A=7$m^!(vb~jLprZ;bO@>4hIGa zO^`VTObR{oD(=N?W>bKgGh^q31X%|ORdv7mc?=B~LFESX*U7=+!Uk47cUT)PDl;%K zFq; A )sOvwW(%|habN tfdMYp@);bT0mvk?iap0W2j9;Ff8_#4z5*>asjj zQwgo4UQi8qE`JF#!x}#(1%?T&9F6La9$z`SrTTa6%k$sgW&GK-vZHCkESE3R_U2bP z>i$nUcHZyy9cBhlvGM0f$MPQ>(%05$IwiOqw7;=u-H+OuyxY^h_QwB>S9A+@**8;q zzo+r$?U(e|pINrj?a#b9yKZ&V?ccPLouNSd|9WwT6Hz^NT`T*S*)uV0h^kcu&Hpgm z1eKcfn+Hm0?9INe!oZ*)4=REV+?ZC%$-r=;9o*ylb?WPtY|!{oby=P-1A~Jcs3)mt zym@<&y-dZMe=H0PPaHvAKO@Vpsju3ZtIH)=IT#pb3V^zFK5?)78F<#)eXqE+w>FrG z0Wzedobs#a{dESNqfrg(_ixaL3^p;iU4Newwf|ebFoS`R-uXY*zwEDlT<`Js)79#F zb=!aL^%MBs?6tpJeBSouv$g;CTd*@QB$V9Qoc#LPeKm%Jlp`x_UVlDVU{U|_bW-`d z&f?22Cv(StDV?In;IO*~ YegFUO*p~kXbB~t%+^GAy z`)t*^yE|qwFtoLTeEsZm{k)g2O%fK=ZY=cMnU~hX!NMTHX2!_aAZT3tc-aO9XK=|2 zDnJ<-ctEXuw+oO=Eqi0PGYbntTNB6_4L1fUR*u8^N(q*#5)26epr8wMV?316@$vvD zNEyH_kOLh?Tmo*+N9-3fFg7>}fdWpp?!C{hvd3XeZJ?T$XA;P;oL`^5eo+o?Onh-v z Y5n1W^KI(q)J_ibJZ~eQEg~5P>Nr55d!3p;C%U`D6WZ_v4X|XGC zG%!qPgcb=d4h#$r^g!yAt}%-+CRX^y{W4-?-~l;XQV_(C-#L!~+-7Px)6rm10~(9{ z49c6#N(@X6ZAwi0{*=ov1C{>=9@Kv7))!(pu;9 JQ@^jm^6&BbKl-35r{w?p zd>@DUzq{wp@s|I4* %1&}`C<8a6@~^!VFtzo(c7Dgvjv&?-`t(p@XoU6 z&*h{q@(c$IKsgyyb#D2;Fc&lud}-a=**!chslT2a5`X!jI=yS|4n|1QxTAWFvxnoy zaqI2Na-*-AGd 5H*VjgV*!lAG^ g>0Cp3|NE z^Hp*Ga$D=|W_gcus@@*A_Xf38+Cn$~-Z%A5T>7i+wIcG9_X_lXZa!}lWYhL| i23tC};Y5V2>ANl{U|Ge*?_h-$IhNm6ozt->Hkbm%bT;1ct>snW*9k>5-%>@)j znNvdM7lV54esgwJT)!?;^X(#N-14WrJIkMM5BK{YUUjo}^OTAhAHUkjJO2WA^RIrj z{qOB|f38^GLf=QXraZFid#=q;V6F@rA>a1?U~VjT11KWbiW#n2la+IN*Ob|JZ<~wC z3tIWl`M2lCarTEg@?Vd?x$*2PCqu?LDbO%|b=CiKyOXXJ9Vt2Vs$<8UzwNhH9Qb}* zf61JqwZDIrf4ggXboN65<)2AUvVLAX_xH=cANpc{eja(*4Kjekfgxdu>!07xlC8sJ zHmnNf3~&Be9Q<;3{vYRC{~ttva^mA(zRLnP-MI3m!skryzuo$_S2>O(&wlRKb+lt+ zN5lQv$IjUk(;h@THkAIJd}qHQSH+@_GuRkrfkxaXieGLBmtp`7=5D#=6Spg>=84*( zfFlQgbbS3E_vf1P%LDgzzPu~Qn0#f$R*%mYa%#O99^@@!U}jL(cYD7!g(bcw-_omR z&l!`X2NU_vEqkfG`SW~GBWuGfjs}LFo*CD~Uptj 8VF&Q+lphez?)cYHf3@%K!hv zFGrVMwo5h%_j%s)b-&q~y`SgrO0s(J^1Sstqp&N)o-CcKVCinkI zYUh0Qv!!BX%-5a#*M98Xty<%Cr#E(TA2ogXblvL0+EXicZ{$n(v-9%SyRT-~ABn0s zJ(us!>g-tCZ~u;&uD4@bu76%Ed;Z@0JMPVmdoBO(s_^Ii^>63)-@4^%S@&;W`!>_P zz0dVy=hn~Ty`8uFV@=h^lkLy`%Uu8LBK=%qyZJT2HT&lsDgFOMJYMJbPWeawdXC5a zz47$(^2^7)?ksCQZ)f!XxpV&C<=fu1zsmN$vo0cj YJ#eURV*lx|g{-^2R$7S!<T??v8`my z%a5ls7wz7j>y^Jv@cg3+!6vcUdKTq!v%AbIKenx#Y~K6vnR#D)ZF0r)^!wK0Y~Rnh zuKm$*e(Lq~$Geug-_$9!eN-W6{^;>f`&tFrs_I2=&CkD$nGPxvj S8K+lXDwIC`JYwgudj@ZHYI3)IHjwFmcy!(GMqTS^U+?rM@Bbv;FMfV<+NtOM zGQX>P4Q^ko%#S;F;+XY%-Iv?HZ~6Gudq3Nh{?>{;$6x1e=Cu<0b7$7C=f};?Z~I#6 z-Kp{Y(qw+~+Pl10uYaki{TV3zf5nE4Mb>6_>T>%8qSskRhVM0-YnRTLu+xW;Eg|FT z bboPf1<%MzyNiIQ~U(ONqe#HAA=@D< ` zZTYU~$dz-(Q!j>}p2-$7_n)-#E~~4jvt#9U-~1b2&oj;X&bK74w3x+dhIVyzKWkQW z6<2KhC?maW>o>DC+5dMP=~yejr{;U9etv$e&G*N*wi_SaY*V)R_x`#!KYr@hzJ6%p zGp#Cj&HlQn>n|Su5Ych{636PZapkk`uK#$yYscETcFP}ajPI>q`!D*+>E}8OS0ouZ z4g^$X-9M*fcBEs?;rF#MElZ0;+>UfqD2E^GsF?icRdKvNlh2-$U7B+YKdt!lt0Gt~ zK3?{vX#N{9>6?Q2yH@94cx;p8b +IxDX`VTnyi`zRmu%0ei3OpCQ!V8-U%ee+m$rKG>PK_xie7#0Tb}ye z$u@4=u6IvQJkC<-dj4$VEs@tnUS*Z@k8SO*XNY)H7}xVB+h+Rf%Z}pJdyX7GrpV>; zkze=f^@gQ#lb3cReKfs#JF+j2uh91KuIc+~f24%FADgPY&iia!xpU8@+KnG&wB+>* zqaT0WemC=C;qJ%VwtU_t_r{CYVZQ_@xVy|_k4A;$`-|jDtj@oXbazRGahPmiAlr`j zdp~d9eXX(EeB#EkE3=QE*ZU!97`tWWqu$!wsEj%8duFa~?}_-VQ ?w&z z+cKZTb@Pk=*yTMxUH?7t<1)*87TadUMTOTEOFp_$xc60{&N iS)*y8DZsT3y{&nR%}gmIQvSi#u1 @N#{z!j=DOI*R+|OCMC3Cw%qx72dBeFMQnms{dzzUE1pJ)t0)|5+U-t7hc`+ z75D%B^w^b*FW4Cc8WwK7 zam(Z5PmZEc!6jnSKScvqS)I+k{_Xdyy4aRR4%1@CjBRU8XRQ)U*f`heb$-Kit1_R$ zzpro2K6>=Z{TE^GH?|1nd#sK(-hT4PtYyd79qV2ywxR#E_~Q6Sb(-#l-@JM}v~4d{ zFyA{jW!DZ{Zsyz1R|=ord+n;g-t>vZYuURGzn>TR=ECQNyKkS``e)htGw0TqZl6 z;qPO)*86@}%&S(iuMV Bd{Zl*5Z|CKqkII9JeU z_4><&x$GN-^J>>#EsMMSc-z(Y*UOf_lKcDe(QC(R|9^`fe|y!4lOaHefl |$}>P^nlsy`LY_ug&Ulzh}= ztM$ZL$7%aHd?@NW$i_WC1Z+Cu9x31A!DrY=x^W&_qzi;oqHrc!HpQe*% z>5?1%x2?;1;-cR5ZCQIH+2q}E3DK|5*x$ajiS6CHd;8t#Y?^LskIt$NU7M8e6T807 zcXxm1FM9?P>9@P~Z?j9?-9Np&D=_8lUuFmWqd&vtCkuYPEx2AcRiv-~X-?3lpsU&U zPx4*;`upodv!t@!>s60uC2qfJ@4@J>J%U-FVd0f?85?It1-x=i$of9xYq6%=&MQtn zwy#Qr<~%x^WPSPhD&?MIv)}Bx={2XmruOGw!>rYIpH}Sa&eAEW{})v4xZ?VwKgqSn zjFxTPye!Q0l1}>P{-<%T18lFy`nvrKF*nw1F4>)AlCpkT^!DF1FOJWu|EhT@^y8my z!TA0+fA;P+tI=> WZ2Tkm*w)IK6+r=9%vB$II4BVo(W9ecd=E=Op69^a{b z?eA>V)U&gH>Z+aFfA{O>s>Hl0Z|5FA;PvkM4mNMw>*xJrecyJx7E0W1v%NQauP*a~ z?SH1TH7wjRr@_E@L7 d&9?8t;{Ob)=gaghV}P9IcBp~|El &db $nfmd5M<`ur+8TXc6vnLyGi$DGHz zp8Xepc;e$`?lKSEa?Re%e8W$wZu5QPcHO%C^ dl~22h1K0WIyX4F^SNVB%$=(p)1Q7$h<-bZXL8u? z(D19}x89bRKh4TmrOzmEd|ljZzxnc)Yj^lh59+-%IrwjVoqqV&(n8Di-jk;a)}EcW zn!!Me#epGXVT|{?1IgCAHsytW?R{~^$jw5}RBMx*?5pg)(nVJ@rWBQ55|=JqBDe9; z;y*J5S(2l2U8dI^>yEg;n#b@doAmWrKIhjRo0WX}M#{pv+HY_EL_MzGKW*32(1zUO zKK;w?A2aPQP>j;vTe 0*D+#D7k%%feHCujS|-`1MTwut9C*4A&18FQfTI zv+eZMl44jMB`t2h)wg|bK%U-3AC?2JJ{NAhxIia2S?zN0^vyF*Z8#bZ8O_d8ij%2% zHj#CHw|U>jLT4ZL?hKRK)NPLg4X&<_Ki6?6%$obW{QgbrVme~29>-KG=6S#Ik&!o4 z(plE*R-(DwGu)M<>->IDZGHWe?BvrY!ucBnjaDfu-@Y5WeVv?fb>&)i-F2z9|E6AE zn_N|7^KO|`fBP%b%=E*v;#T>y_s1tEPxZT&72|0Tqh-6_A}id2wQBZH!*}ldQk{ zjDGPq1gbJHIr!TCJGzYVy?*knjM&oN9TJMyUxsX2D%QFF{Uzz(>%R q-HKJLw(_q(<>_xMti z+YL!OA4NQ6<4{yeKXNWm!nE?oUgMYT?DJ>*FYb8}tHW?@dDXG1!n<9zU+Z;Vl<4lf z8@tDU`s!Vr7lZyw82Y4XoxhqU{Z41;F7NF>*biv@_F`fXTd|H`{Brp1&ic1KFFJi~ zR=rYwDkdzLv2wkBIoH0=w#}83{ia*m##`swtzLX_)&Bn9WjnKH ze*F~{et!Slx$dj2Dr0n?PP|oH_Tp{l#F<96=3ZaV6`Q|XeAG>C-um2}i)UX)%<+Hv z@lxiJyH}qU@BID4d%k~ZOZNVGr|$;bKeG7p-Llo&O9f_2GdgVNXkZ8kl+O+A%Zm20 z&cBdcekV)db;_)i-SN_|1*d&mn;<+PuY=+9 7%H17k^i9l{=7vovOBN5 ztG#{d$IX{N@0b6My1v*|{ovBs&p)wGeJ%QM{oRCJ*&J?bTFa&Sn_m^{xfyTcawxpL zYT~-v-!s2{-1Pt8#y+Qz-QWNF cT!3VHYD?y1h;`RD)tn=N}})sI~jaiDREM;ou{ z^o7dnd(U+b{V0)X{N(Q@v5ec5v8(*9#{1aL_@6qv|0GD|vx`6b>-^={^>f7OFkQbo zzx*+1?L&_iqX2`}vhK4y?^>ppxqUl2`%M{h>>B^@yK9u2ZY3!$*f;xS(5bWhUhB=2 zf~^G~zx=zqYrd#-$`PrKvq{&2d)Ids_g-{*yQi~n|NZ|L<_3oRoo5%$YhNrKd1q(; zwB0}5uX?R3W!ZFeU8!x%)NCz1wRPp&%NMQdbLn~RWW9a;zP4uzjux-8 +C3|2xS5M(vrLJjW-0#2o_Uw|JxLUdCdD+&uU$d^oUk~4u!T=fK%vyCh?D5&c z)ehqMDv#e=bIN^G`}JYBy#9|Emjm*0e>Ok5UNkGlWl@LaM?vMZM`zQ&p8cNGCu6_+ zflU1WbNi;{UwQog@pI4u$ItV#zpDL>$W;j~%+q!9s@Z4rJ!tpy`?|-Y*4&lYp8qGO zeA%bcs nbyJz0mvE-lBhKP#w{~w y~1Yyx5xcG|Cke=a5gXm2 MzlI;fZ{a-)SaA@Q^YkzbzZ@Qe6{rIT#hn=P8-W_RLdToFA>(9^F*Dm(Z zKU%ti{Xky-lg{6tqLk%Ien++c_ Mqig!mp@0t0@FsRl~zjVHvK(4xoZrPh(f2FP)H|43X znwYop>$jxoPyFI{D^(r;*ezI+Yoq48hfSvL` qJ90&>3ncv)ipX4ekA`nwkI zEA&F+i^Z$ob}f+no_QyYL86pNfx$#D|Hr=H$J)Euc2yMDeR*=e+x+5b!G#J zGo~({8@B7_F|R4tH`GkNf6{N;+!sf;=9Rq(>p!|PFiHOVn<)1^owCcsZyPApmG#th zKR>sD^?<-avvu)5BQ%tsC0#B}zH&2YqTRJS-I?3xwmkiGW9_vDo~u9ZzdX0|seRIs zo!8yBw02B2yi~b!anWgx9akRLTCQi*pT2(g*1#S?kK`jyyxiVT^ENp0Q|H^St#h7h zGVtt%4MT4c$=_F=f7@igqQ@S~9`gfFMNZUp&P_gjG3WG5zVJPP{S)10Ul-q=`0QBz zr6)_{*JqS?SLQyt-oYd2yzcBhuXMedjjQfke18 (=qeg@~^o%ZVGqJ|EF_bVrF1?3!2FO66m8k z=eB8ax?!oY*pGbmXSP>={CZ^-*Bleh&%hv|>&C$3AP-u>Cy<@C_ut&w?mm{DgddM4 z^XuPOy7_+gK1K$H#b>1&7%rq=-TKE%@Qd0xU-9ne)5~&q>(_qX_*=Z^PdDqg t^``4qV^_$lYybcg@L7k(GoPJy0X^#^1HXQ#s2Q%sDIz@ zZ)T@wQde)x$iPtI1X9y&%8=~!VO{R*OUFvHpV`}2zC4|@<^IoO>kr8@Fl>l{&S;#` zJHP#nZ)X4hy#MFy`uPkDC;BxHFdSGVkp1`S ;SN|MPgFmygVrj@cg#b(H$PeX5yO{O3p2MKOkm zvuhYR7*f{D^(0m0tJ{G#QG9zi`E&ienXwkRKS1Mfmw*2+_;>#P-`({YmRonsG>`k| zc56r8yZ_UU{%Tsk_jBOs^}Q3me)%^y^M3Q~cehq7xpPKknc4PTz52F43vPYC5OI0` z?}zcW8y}pXAM+#Bkhe;cU2gaO2<^h}-+qg|S$F5$&yb@pPBovuH*?kBx9`u#e%|qa z-mUG%wVOW{uR7lU`{|LF=ilF&v2>4H;ht9~&d>N|d#_{X+j;y94tgvO3<}l8=5?DN zoEPk{;w(wrm>{C~YUwF9Wx@GMMq87^m1l)I-@7>Z|CLYK$>NW1%vd6IaMdG=kAjBp zPJHwi_lecZjo7Z%o116XwC>-}jb}G!8Vdf2t9 2C-x=1BMBEKTogQ``~>2&5n$_ zBG%0AEIMyrCUg~)PJb9+>lfOx|HjcBQiqaUqI))Vzwf*sel$&0P^ntgO~H&iw@~hK z_`ANPh1T^SKABt1+9w?!-CJMy=GR-E!rVvO%)0B(o>M)t%%Hk0L(81OL0=LSXZlRB zEt`s#+zsxHFe!eVc6;%cTZV;sRdyPpi!VtTu9};6>?av;V(m%)9lb`ccLC@I_C* zJiS@+V{iZau2#b+y?yI=5 5Q|9`sf<=)HTX_r6F|6Big`_?}*KmN41zVw`WUh$k@ zpX pt$>vG(KFLc8{R^ECS6_xeBntsHP{%hOL$$If?WUeezC zo{^z#E+p3<)Nl$4wN!e0cmL1$u89R3kHys{_m&;)IP`h?x^w?6A3X|MwNd-f)r#Eh z4}(gtKTH;$+`VqGxbla(lIksYCO%G=j;~iN4W3h6+VwWu{$Iwyw|UE~s@7Y$<=!gR zF7y@ao^}dUs$QcilCA@%s-R|2_6Sg!gjaIR=KkNn8dD8?ufp;}={sYi(@!T|=`& zm(} QkCq1;rm%boVl?@pJE;e_dDbSl?Br@a-XwV|!LaYyF$L z>bhE9dCRrWzHW?Ru5V(z-WbKW-R4;Ao%<$m-Sh~*_&(o228N<^76pb4tB$ 5_d@SuIPK~TQo*RvL4w^J6~*}H8^#D>|cdNO{0-uqpAw*>#8 zW5>>~y|>J-?Bd%ex28 u&X7R@SXIZ#%%;jgD^m+m(1{MujdlQyol;xcsGeKc>^Tep*Ww?b#j?Y$z^UV8On zQ~id@m)SSp{9|BPPz;(QT^-fKVIwHN{cvoL&+YFIwk4I{d-Y-iN8|eX^!SYjk0fQE zab2T*_ #OM~+m@ zxc&dZp&dIyc69T)JxafJU9YF~&7+8qf=OMuEC+>`+r7_td#J28)a|Y7ot$#x{%6OH zzKSs{i1%S+W5`fE6thOW;?bA6nR~CEb&6VfYwi_HuRu7(L z9eCH){7cnYM+SynheZ+?6tWG2^cF?@+_-z&-KK{^n0oKh8Y&-w*P<6VB7QX z+xIuCd;UqUuQ}^A)$rrf{l5zi_8k&bG+*=fT$}X#m>*aFynj67^xkO<3}2=*fa)$O zhW|D1|7KdQdi^q#Ia*ur@u|#psXE;S5q(NJ` dsRJ0``scTq zww8VW_PeV<(wbrar#p{V%3e>KzI|Vu^}-K-KUx=leEHY<_P%L?0m;deZiHGMO5EL=4y7Wf0xC>dpmammSjf)>p564|D%<^u+$<-`?)|T)zCa z^k4DdipS57uisdCBFI`m{CNy#uc7IVt7;0yTYD{5P24>7#)BnRn>OCf{&{IKzj(Hg z+>PCfZ!Fz$H?Wg|VGU?KUyA;st6!$x{Aqu@ ZgIrVU3XhNIBm5uhjYupGUf=$J8@N?7XJL) zxAH(?&!;`7cSP8~msne|Md zRl$*i*X#aVoV4)cT(_R?$0obk`gMx_ z9DYAfGb!%t93_@x?%IO7{QJv~y|8C!umi2u2vt6GdHeqV-;Z9oKSOQzm8vSie@QI& zy_T)G@Qg-%^3zK8}85tsO*;;SQ` lygvC|`` zB~bL^`7{Xz2A(ER=@T2Y?)!C}f0BRM84fIvVB}!9z$$%xo#*cD`B5Ks-uUqN$jkGW zJA=iA85np@!F;+vJL&Cy1IWHeV@8Gp3qb9h3$E9GGBYIHh+rN)6@z8;BoNT@efq6> zWndURUSc$~Nj{uM=!rMO=#f67#~2NTqnrMGFMH#_#=yXkFk$~!+kJ;P7#JE18No+Q yB{PAm++!>XpmDq&PH^obA>07s8K{Aep-RxPl~q