From 1d09054c4237daaafde93fe79b0577b80c7d6962 Mon Sep 17 00:00:00 2001 From: Caleb Braaten Date: Thu, 4 Apr 2024 14:04:00 -0700 Subject: [PATCH] Add README --- Image_Uploader.jpeg | Bin 0 -> 51194 bytes README.md | 50 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 Image_Uploader.jpeg create mode 100644 README.md diff --git a/Image_Uploader.jpeg b/Image_Uploader.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..3f6db213d43eb702d26bb27c129e459009bc53d7 GIT binary patch literal 51194 zcmeFZ2Urx%mN47|B}kT>lY&GMFpvg8vLwkMAOeyk=Qv0P$p{DtNDxGXA!itJ6j7p* za}G1a0VaIoyEpB9_Wz#UZ}+tlX607uI@WNu1vD=Z60uM`9~$cT4PVNNg3d zbaC^*q9cHXwY)uCe!&4)nA#0HDJ-1$3%2Xu%ZT<#!eChe?y1&XV`jJ>W>FHpPRM^T4JO*?CG2j945L?B8+khUHKL2)m zu|L|&1I~a8;0w3`c7P3F3wQwR*uE~<&r84>3#$N5fF&RV2w>qm*zxWFV!!B&?Tamc zrQcuAy~55(;t)GEt-qdo;t2qC>;OP1^w)D-&j5gI9{}1RE*5SU*unm#;GE*SzYx9i z#}}My^#E`s4TCu{004qp0DzjpU@q%17*r7e;7w!uo?_YoNN~HJ@(8))Dm!SNe1~z1K6eWtBBrIIXJEW>lZW>fpP2aFd-oqm$Ujn0 zR8m$^)zQ_{H^8E2X=VMw#@5c>-NVz%+sD^0G%P$KGAcSIIps}iTKe0J%>07F4@Jcv zOFmUq*VNY4H#9bNc6Imk_Vo`8j*g8_OiumyIlZ*JvbwguvAMMkKRh}D;_2O6%LWBR1dWYEL^X1-g!kxEtiy6 z*+Il5`UFPv-0eFtEw|Xx4frqA{=n?thgit}6J~!w?5}vu0P+Ct9|aE=7w-xl9^RF! zSFq(O;niP-keKj~Lj0#f@<$>2RmlHRFxWwGuw&rk;}c;2D6SD*qxcUO%p8_=$YQ1e z5YKmZDvAHxg$|G45|zWtL1nD76j0cP|!(E$237jerVx=k4U1q0NO5Kgo8W+Lw{p|GElcoXL;*wlQ^xvpfWl?LK|Mq>GZOAO~YnR% zG3{j1JF(Hh62@Hb=KyjG157vBoPtlGGaQ#>Bcgk(&(BRjtx!qVgG>Obpfh&D0@ANh zL-B3%583&uSa>Giy||N1syh+z@cpLT-6?T?$NQ=-5zAJQuE$LMBTKT3$GTdYSH^F- zI&uzC2j6L;7;Hagk0<=RXJG!VhFe9vRdGhsh>Uvnane>4o~_ksFpvffn^y54PDpXRMoI@px?47SSCKd zjSCgxL8|l^mDO@%<$xA3Vg`Rvzv3t}rQOmnb>a~B@VPhH5KGmpqyR78V)z>D+Vxin zm5`IYYpT@}@g*N;jHdbVMb+;p(OZ6VdVV#qT9$F#fO2J+c%e@QXHtw;++psHpvLz} zNz~1KHMItfdjg41862~LR}V!I`fsjx zcoIJ~QLgG?Cn*oRQz1>r6~c>a%#YXYW?QvYwK+XmfO?nNB%Lo|%Jg6$RW+AW*DC1- zux5OhtoVvDJ0sesg&a=4d=?5`ETIMCvm-K==S(`%SUJ;vilH>kpl#uM)89WBt{D|s zC*G2B#)lCNtOtV%2Kj2|){1f+Z>%A=9Gxj<50yJ8l}cW;t=%FIDoj6WxvR@RCk_1xgefl2+0jml`Xc?QvgK{;skn(KbML zz~#t8A{pBM{@NRD1%Ub=T)~*J-@=dZ&O3R>M=5HXvF#!Hi z3&Qh#fDpVN9zK~;Xse`})g_Uvk$yYM*bY3N_>Hq0k?5i^v6Kbi9YIeeQRywD@V--a z1at+=Y`(2C>mwKVeC1Jf{MK@1^|;{iMCbY2m7pxNE-t8E;Ftry7I0 zCv&M}DAC;*fEmr`Gqwbd-IG%KBvf!W*A4>^t{1c&Z~Fy!iEx7&&SM5MQt(#gTVSO6 z*emL6L8-ttJcwEhaLr^XGWIyH^vBjzofX1eTgG=3J+a=wwtsaickkNT`?ZSsH#l7w zpyPUg#j+&$HHbonCF>`Xe69jxQk~FaHE(B665K~Roz>jkBJ={d8mGmh;xrmw>VF_M` z@Q0T!PW7RJj{0&*kOoVeEt>C5?dtB;H<2Rswasc^n)D4BOL{SPIGwYj7}}*3T%eU- z%xfT>3DXPRW)Bc~FoW(~iU8kFCT7!xQ(E*vBPE)g*FC1j^6KJm#<7APnApa_8Th;^ z2#UcS^k^=hBDU8#G6*HRk0ZWI;9a9y2NR>&bJy7!vxm4%9Lu7dPuWDBL|-MkhUB~as0Ve-J5wO>QZW|RfW^Q-un}-Yfk4bE(#-v zn>Me4#F6x~Z8gA3pby@Gt2i~h&C8=<#u^gvG+$vx587$~OJj7x0 zdP#`0#RgLYllf?zo#w*>E@J5<;-g_0Kz&?1Tj)@-WRl;ewozHft#^ky#MattdfUyw z?bzOCw+tTIky~TFM+v{aoW5tdlx?uAG*k1Fb4;vRopZ;$evGp*cfSjta$r?JBsfW> zhULp}?(H^Z^6m#~eQsI~AX8xFU zEjHY-k6?*B+?*V0XO6g8zo+)mfdctpQVP6?Qsj@j{nXBD^lN5Bwpb}Ql@j+Y&MuEQ zM%oxz@`Z| zojiV_!eFn2pih$&!KMS>=sMWDwo{m;SeLw6p7Al-GMT8`KA>b##qGms9~WO@JMFa# z?UjY;scyC!P;f0ugSAf&R?$?T}o{y=QN74AZvGRtlO7ahw^|Ivq3e` z*BHPC1N=N#rXLNW^GWDUT(EajDO%V}%RikK)Y(mXU*D!@!A%MNWWjDQ*ZAg^bq9cz z?H1#}49KTaCM)3JrtIT-8J0k*z!!t_`Y%k>vV2!!^un$m5{36};Dz*)|quI=pwox{X z(VF`LA94+H=2lf+xLd`%Amy&?t}M}-k#7dV4bMSHs^X>Mo`f(cYwZkM43-rl4f5?| zgufM!akaF3gXC4Kv}_j5xC$hGQcPgHPtr~L!+e<<$MW?0xFxCu?6ANbpo%IGcm}sl zODWWp$ttiX7COGfad&5SRiLKA4d;leU@*@}c>6QR!Sa*?QM=3*46a{@#Q;`iGKWSo zEcVm;triv*0-xb_htpzbw4-wL$sbl;54wo7RJ<6_Hf7s|!g70|FpY%i++HF$Ti5ht z8EmTC_~mJnb5u>)-3{H>L@vqGs1E}9Nz188Ml8g5Eg|pwjtt~4nSzFLX^`HRCO#Xd zBXDRWB!K0^z{j2RdFHB#MF*3i*V)R$%z}a~p?=tzzN^M*Jbg2ZBZiZ(2#t`q*SQdn z0cczFFu)a-+%Ds}^w$%4->?cnVWi>2{=KK5H`98tGJ$g~au0}sO0H7EiTex?3G96k z573&bfyO{7+UN#8&1x?G5R;6v=e_ydGQvcyf%E8zXs1}x*MQ-M0qu8-mctmp@-3DZ zgtOH`qgveI@{5pY8Fs{xZe44wO8NWSsN5$xk8W;3isc=d)fuIN-0HqFE#J}IbLvAA zmB9{Hcsk9ecY6E`643Mx^BT29=9}r&ujOe{Gty4y4gQ6pGI9Kcp(f(=q5InytFg0; zL;pYv!PECxPUD;vD#wIs>1&|1!^~O*PnAeNymP*$xP{Npf3JVgXiBi5IVA-))ZS#% z1w!zfr7ud;Zf_rGd=F6JriJ*6KGmqW#v{@@+GZ4{{K(!grB+d8$1LUYfe+J)F!Fl( zX)PSz>=wd#*_qh~WL(uay64;?UDWpeOiOA@{4*SXhAr#zeO2ez&sotOo%`!Z=_Tjs zCzohqrh9u_fiO@HQL*t(CwhJGnl@LDqc}7zN{A)-=LV%jb#dn1Hr-UNV6y7dEW{Rh z&jNz?Gzm7eTu3*4(76C?54>z+tEkICn$8-})Ihj?$}yC)Y@E|Of*P4z>%9U)Pn{a! zkT9?_h}y?tslE$Bxw%li&<(x&U{|>2+7PMGyy93`98Z!IKQrDQA8gT4hiL_C*TUW} zNAS;~(_jSurI`^LE4Ew>5cXZp<~-A?o{aVK8gajoy{cO3>gY+rv`VQ;k;2R5%3<0O z%yT@oIJGAZKU!&PF5c0H64nYw%;SH5pLSr}Jhhl+f_fMxxHfI4|FKeewUNYTx;^~I zbypxbh%7)HA?dITLfle{lDXm|s@nu}dhNSxPHkuAl(x+DI*<>)#jb2`F16FSJ}yru zG}wP?pI}%1@`@?C&rAe9*~k``+bv-poy_E~rdfS{g`+-c{(%tLsX>PP8zwzn+&)Ad zWKF4Km|z(Lgn<_G&puXw5jX{#!9#y*u*NCDg1G^0a zSMF95gT9YtHXdJpUa%)`J7tbu#lsVPD=qw*f3V>FORxuH#(#_O{kMiU+_K~AriR$n z^mVdom?{79d)m0S6wG)Xe7+2jzT9B*s)W9TpH0Ho5#Syuu@o2l$4*mWQ;bi<*^~GM zooAa-REzesDU}RQ5C)Q_vuj70sKoqWkVqR_P_N%v6jmf$AP*V?Q%K!d%8j_~qdJja z0Xv8=-xK!q*x`JgEw|>l_gs+v%`Rn6!=CI&cn9i1ehk3-r+O}Y`V*$vqZz|iy%E($ zi{$=RR-0|m6IJ(Qz|$|yb^2kWm2Z%>j3rAmZb*Y*!#fhTRM27;TlLxAjY~m8MCj5~ z58E|Ea`K%sOKo-4F`XDA!42g{>P+o)LRI*WZ(G!Cu!r_-qo@IGh5xpSgPHj4xBPE! z|NjIS4>S3DXi)BK2nR>jTuZHDOU5bgjSQ(}OAQ81k5Fpe7M#QUF({s)raG%car&JR^> zW+& zHg>f6g2@)Wr8;cc<~1RqxfAY{T;;)6G9gb1!gh8)CvaJ zY}lFD{2ff>w>eDySJUt}Ib8l%)9^PrZ2ni%@b?&*f&bMs{7t&Tf0TxulPA#K-0F@i z)$^uv)dE_1#3r^wRDHp~wtZ3hvSL$1L&e1B8TID+gs)a!WJN;Zp|Q9)J0=ooAM8FD z*Uqi%$;tvG)gqgpB$EA!SA=%OnaV(h@T+-jNv_gwDmn;P`^c_YB%J*?43yBi5*1*> z|JG?=tnu0C{!?!6$Adxe&T1Y#ot@0l2`L3vhmS16Dq{;z8sqSj!#(3Hb;bndMl1|7 zcRCly42IZCXH3HI8gJYtXme1L8$@Jv6Wu~B-7Vg3(=a9h99&@;dKnY!+(`<+Pm2tmKtDcM6oSmY2J1eVk1nX~bt6OmBaW0XjwO z!Qq+Dq5Byo)HqY$|Egx;94B-foYOjici90bk(R413>yPz<1ZF(r-8l z)LQ@OO7OeXum9*S+VC79Guf${Q5T=+sWztNedZEIdyrhXF&Zb_Rq!}_!%^|{Sb|z) zc6gnKn|TELLOs@?=;+D3ebjOrn!(aMXpA4!sC#-Q?ynCUjxTeoFB3aW z=W8ZOJM?`yFy-Ll#-E=b%)8a(S(IYK5+3t1f}?#~MJid-OkHCr+<|2M@VJbYFIly$?3r7VUy0fi?;Wf zS>~qG!;HQTr@r{lgxtVkIsQkc3e-3whCXiBl!Y9foUzuq@^OB_@wR7p@AeigA8f!r zO*@B)4d30D><~B;bRrD5No?vSXJc>gqnXf_WiJ1)L@N5EISn@C`f>^&N+TlXe(!n| z%M3p*PoAE?rslKfn5aapN~7xmxLi^H*S^v~E|@=BAuIO+2}aSe__g{f{p zkg5MH*Z)WM$NMdws}_D0M8?Vi<(5|t`!^}!qPmQdN9lLVJU^?G?BRc6yqkP~_lE9^ zCq&v@miNCp$fK_d$3TzyHlYY9tX{EZ3iu1steC?x0yU!a6!NAy4R}-UI~eBcjsXUnKudQJr5Hf292*u9I+Tmn`$kap z-Ao)Cr;*-cenI15j%0m`0S?O(5RcpVuzrKmd~7Vl;RXgs^}yM!F^B_qTEh*{;ihyL zfFK=&EG_uArnkJYd@oL{Ig1Xi87Uy>vD4gaax-&CHw_!<*^(i+ETfyIzX-|TjNmxL z`AWt={XZsz9`85kQFt59VbDX>76uIP%v2Hss1!g_kt}%u@`&?11a#RXKxHz3Lvf3?-NjR5h4DJA+O^VxYbD%1kE^4z=mS4;wcB6hE^*yL7%VQ5soI_r&VNbd ztjd)mWRLHD-V)jauBwlaQt)5qC`8nE2ho0)vX)AhSWhUN>mUtB))Uh%MWxLf<=q2< z5HmxRDFT{b)U*g*BT`n1dqI(43iK`eQ)6{Vyp-f3^cn(eGCp#eVh588x%N|-O(Sxk ziArjRGLcI;hF1Kloa&V0vibCw!5BN-Ag+e(N}Sr#LU1ji7|LBQMe9;}yC!L7NUAQ) zO#but>9WrA@Qv7aciX*=cChaG>XBfl;{{gR$zji8!vI+rsy?E8vDUUAezbFRdU=w= zwuq~;+gtGLtX$8f0iRV^AC-h8__S>t&3M{qw>0OsK6qyMjlJQO$DGD~2Z!?dJ9^U2 zbVIJ|0-}n^yG(D663M{YsFIUQ$r%hl{ctfgeW@;K*%S6*y<$3k=%nRdX|ebhFE$(A z)5^Jq*vbYf$~41%dZ~>tkR$I&piR%~HqqVO}eO0b2a@Rs}=gF&Q zU-4BCTg6o@%IM?}EKfy?XF;bOy3MHDTH(7*GTBS5wA<5D9gv&-#f=SZMuiQ!TvsN! ziT(G)k1;?O+p9DvsrWUAb$CKlfJUZc!s(0bs}OIJL?fep#UIhm__zk=Gyz-4pI&jz zFb#i4$))+|q5$P78Qz%@m+5k7v7uc`_m_w{i?PCnEB_U2{A=>#nU+t7c7#` zKpw&ux~0jxCa2AEn#iM19I{zE4aF^7KPw4b)r(m^Qm5Unn3<)IQZ$LQo(&&&J`ak5 zv+ZK}*1~nf=vm*rvvl~vg1L{smPd?o7^gX@n!w~M`A5UG(=Vt(x-0PPcv5`+zZk#$@U;sJ1UQ=$?BR5;$Ut#%CUTWWm*G8iv)1DL3N^XX5&-aP!LsKK-{G~hX z%_v@LM~vS8iBHy)`6z`!H}ARbqvpF+iz)Bm!Q_!1=F|K95N1Su4=d3RkO*=O26CIuff+RR!=NKm`H(rhXSJ23l~|*5$04 zwu#z6y=DLAfr4=M*Dm!j^p?u`aZkkJZ|LFWaVO)Pm*ydL5JQgO6$k}lL#HiNf1(`C zF}<}@jEL}$yW54PEcKndKiX?TPe)N<&ZlSXOL%0ZcmLsL(-e{#cWP;_1sim!Q8Bp= z3kuDfcNjI_k?YfK$Woq&NEaTb%FcJ09#NE!`dGX@(uVMyf4kIhtsW)y&yXskMX< zp7?k)&`!^7B+k@)8(#g?duTj>cLykh-NxAj)5(bNbmd;Lo#*-{ma;6Z(<2d|Tew*# z<5HuR)v8iSmnF#^!JB$dh3ni&Pj^XWxy>3L*#n(^E*!f+5^&FY(cgsB?P8`U(R9nr zp~pjVyh>e2SscfgrQqv#o@{R01luYihBqHI=M5$osL|9u?#okQOR%DPSMQ=Mre<}y z&Wlckn8VJC-iJ3@yU98Gv%W_vDe2=!JRzd#_K`ewg^h$EZ3>YJ&G4($%jDPXpwnf7 zrv*}EQ_1#QHq66!6!5j*#|c;%TE2Q7cXhXvb{O#GiG(@`Ga{AhVUuyN(xqLAgx9sE zvk^%9eGLE>=~>K zL8-aZ7swsU0w@C9Jr_ZHBA*$AGY|O(UgkHO2v_k1W*5fkbu^HD?js&-&iY=6dMhPP z7waiZx!J}KCyOp{$Sh=>{IGO+t-)eU=!6L@eD*aU)GNgNmel5QgYsJ6*Fsv-Mz-C( z#gE56#|o|EQc*3IJaJvVi3jM>WK=C4rHsDJ$alfcuPl!W^LkB7klxd;`Ob956ud z&gjSYi;IF?B8SR{71I=U7;ZVMs6+Mzy{(o|AZdI;A{v(S`>1U>E@XkTDk(+42wr6gxC6 zB5772ln!84nVSf5tqeA0SWkLnab+xLDcANbudy`OA*=4U1V#6EWLZ0~p;Jl*SfvZk z3F<@fN0X-p?iZQ{EQbW#VHUfSnOh_55QQHc)8UNnz+NbgNG* zSI_aj$?hfEHJ!rOzwSI6J`4m#{<|h}R9n0!U96nBpZ?K@y!(_@;2X61XN%NiU9~+O zg?*Knem$jh>zBG56%SW|WR2HEibtxk*V8R8pJH<}*Mo3%=nbV4Afsdzm&1IQ*YPPd*<>3A8%^`VJrbf5i*{kP@~{;3)6dHNN308(yYA) z$1|;L+GA-9H)~rdGVl$Ux}RLFPqY1L*t=+PNSr7Oc?)`R5Hrt?Xf8y|7{RY(_rCQ= zpx$QGYfW7hk@vJC{j3$VZgEXQv@mwDsySjYg6nE)S4Zxl-Y?zvnJGC2Q1z4mPK|l< zgNgqeD(Js4`xy_bl4IAwA>lX%*p*%;M@gDar6PtFHxk&E_0D>P!`j5^VMQOxw@x#i z%ACO;NcAVzB?&UhisJN_Csr~!q+TcQ#u8q+KOD#ahGlj5g`>U}4uI_hSL4J=tv_wk zYKtWdfl?h^nf>1$exc(&bh9r;-Ws`r0Y(C`+?1Hq90Me8;w?slY;vQ62oRAls1ibH z`R>?QR}L#&Vqs@GEmNFc2;%8*$zPJ@!91 zO!*4MChdilx0xJMQpt?{h6!WFvkoGMuEx9{I1EfMhdmHNC+8Xl$hnw8Q!_#_z>V+N z3AlHFj~0xvD>M|lBUhUML_rU<3KSE>SyZ{q7L{|qW-`E_q%MKNdDoIPYLZcGOp_(` z>pN#wm8Be`xeZb`yt~7Ba*LC&vt8#>A0wgKGJ>8{Mw{qmI4Lw*Y~Zs8bn{RY(kU_gWqX*wQFAHvhXZ%S*dtNML7Sv>TUH43E;oACEnq9r2aQ!XadINKck4 zO{w*MX0_;Mi&ye*aLs?D+3e3_|2AjBe-nOx#`FJn#QSZT@c$R*4`cuu1%>HyEs{qC z@xthk{GfX5PPzBVYzu0K{(0DPQ27;ho@4$a_XR3rrm^y!)d^%$6|DufwI;okLu&S~ zpsBK*b1#E3n_zDWZl1?KHZ@WZ(mC$LrkFfTTtxEqq543V5#>r)8Ol@`1Bg|#oiSm6 zeMY2PIM*z3%yeB?=KjS8nZ7ImM}=|Js{}N0z7^Kq6^>;ZsSxyXDK@C{isB0lkZGB4 z83#V22~wRlSrdtO@S4r9@s1LIIFdG4F3_ajfZ(rWLO#h? zvQ1C;qm{NS!5xoRwQ~{rx#vdMo_xQ0YTRHudW>Z>*zBNLz4L-o$5~6UIIHh>NqkS) zu}?u(DweS77|31_!PX-vOlQk-3)biT2f?a8U=b-+p)(IZ$6j>-1Gr4B4^JdA3@%QI zds<9!iA~bxS}L#Cnw$5dWWWf%nIiD=qz&82ANR9>2T7B?vI8pyoiSr)LX51;83M8! z%H6iVB)jUJNCd_$y`9(|nS20RERSPDj=sds&L4XjJ}gh{FwX$3C)=P`7Em4LiD$Hk z{+{RR&Liy09~PH>Y{lPoF1e(@05HRlNVEza8q35l7xZS(*O-T}>nRj;#)bh70)r$} ziXW(72AS)$BZsZU^ZR`rqa+eZ-6x7w`F0QT_Fn8J{QQOAz~C;GaOj60r>t0F90YPh zVMh94iC7DDuM#~g#{ss*1=66oF@mFN`i@Sc)3qQ|e#%viW?b}(ic{|iCHWHW8nxs3tNn%;sJYhHrZ3j@q=BUPv#DYD*??xX&88cZ=L?{`|f zyYl1pdG54x=K&*jiwz)bme`_-hAt(sJBYJO?@~Bp!Fg(e_@h}OYIv-K#f)Gqs9ksklMQsDo@3=4|wDeTko59ds^ zTB4(=3trsgbt_I9%poKHND%XM@RUDwdTpCGKZE1%HB$4z;yqI5+-ZVk3-np^NiIq- z4f?4GZH$)bW?MPyu2ACXz8FEL4VnI6`MJKX@m(q2cnkYp0$tXP;%9dp@~g+JM5@W; zRzPv4b;@ddeB}iAu}814$${Bkj4p@obFRcGH)w?=4KAftNs|vH+z7_G<+(9iA?3|@6j25UlS#*FO*W|Mjx?d~QCytY5YkJqjpd1=F*o7YiZ_A;+R zt{!M<1g`YnmPU;n=C!{3sxm&hc}yOXPE_omX(6E6yW+sl3KgE$o_Uur*tXFIo6SrJ zcM>a;bxh_FX5bQ9B7l(`^{FBc$5vC+Z9NGM3pcwzvd99@HfEDS#3*i9dJGp_IAYJ! zTtIo1KN#w3q&b`r5PLb59@k`74$T;Qm7FU2=(!B>a?(h4bYZ&efJkeCg081zn6!`~F z;h#h8#(LqGU#9K}IxOj+&bB`R& zJ%ubJ=7fUgSRz*@+tPEKheMmgi@e3=)oo-IBjKK2cw zQTbrh=ehhkp<0D=|5DP*TnYbZ{ z(Cw}9vj38?WYgrWbh33RBDC-mvUKOdN9`foIR~kKoKM2;Z~_7=>4e|^#piRvF+d^3 zRJ{R7z4$`~>L>L71u1(t{}`WjjPGJ?h+0+#Ew9Cs{asl-JqGTScEC-Y^p%0m_^y}( z(TVyK&$`-r(^2I)U~48>Wf5oKK5+f1!K*fI+j$9WhVua9w1fU&9|zNFWH5L8)(AeX zYoAoix#hA!x7q^J_6uHy{82$eR1Rxaf~Gji@D#nd=w?`t_hCEzLMZQQ$%ikKXZpj9 zEPkO|n-7^OeAp9xAQ3&Tj+I0@1|bX0$0)J~&ja`Ff>dqG`P*~E$6B28KcK4lOdruW zJwx*ra*bVjo+WP%QDNG%rBK`#Nrm_M zI~Xhz>=EU4HRcrCXtsvyTi&E}>{T`*ZJ?G`@~Mxz3jT&NJjo6-y=VvU&c4)3bCRCo zU2A8a`jfLfB~Ub@Q;TKQI8X(B{^^tE{@Qa;a86iGjPEL7I8`|HW2sViM=2+( zNk;y9c!}cERGPQi3N+u`!>P4pul%`!@3S$sUH56$MJ&LH(bK$-49qwu3S(RP8x5LM zBXu?%EAp)13$?s(A_pB%`sy6rx9M3i~AnhIeRXD#c%Hy5udq=k2@)?uOxjA*? z-i1SU(No_jC6{iS`Zcq!ZOj$$8ufA?D{`s0_1Sx5(mD$>tz`77wpN-Fa7P%7b^@0qL1DR|8U}w=X=0krEuSfIzDo0Q<^`` z$5S7k4(>wZ?7N&0`Wu=rrR9o47n(qxf`aVHw6;lVWG*c$pl`ci>LV+9V~%gQ;9AvVo<&V*8fL?kt;NPsJ3YsE>-7hcM0*yl&3c9IUT?^ng_Ig&s#F8*glGfMu%>rJmh$YC(vm=$^Y7 zWr^yW#sZ&%)r(x(q2fME>GIcvBN zQ5e0HGi_%;)u^T0$%GS1p~5u6igK7fab)dfx}REJkhxg@rT=FfHJP4fkYD{bk`kVCJZQ+(ra7?EAYUcJV1C7uZSE}5&YDakHw zA~8pMY8@_pFQ3QXGqRetk|kIq$J>v0Jsx4cPD(f)u%F9+RJ~w|tOIAwUL>4UiCYe9 z&evs{%{6->Yi)!-B0eCsOEtYQ0BfbHY^;pi4|=>{P0pf_$p_9hY08gYw+I~)UW;|n z;MW*YNS-rOGjYim2<}F9M7n8$5~+W-JoqT8ST*~=x6L^{A^p1nR;h%HWgc@7ma+B? z4gJt~;uA5GatT^L-hSHj`f=REmF@=$OY+wfx`{s&Z)!V8ywguou6LiUFkB2i+N%-}mzITfN)-YC*#N4H3N)qTD^RUV1x-cVNCeU%xNS z$+ts`G{t9agGgH^otLUAs?xPv8}G-^Kb!?mKOnG={}44Z`wq|C7$JZ9bnNAxC7it5 zE^YnUjE+WKVC7X7d1azImTg@%Y|C70(p051lN*tIWc+%T%OGL|UT=_OlY=vnUCKNm zjOCkS9MQ(QdpLf)>${xJCURONEj%~$IJ!20vPGnCEoru(> z+A0`UeELaSTDX<=oklP2E@`(Lu$AN9EAlSK7ZQ(__|fqm$)CwITR8n@i>AiPga3B2 zB2Q(v&sn+V=gXbRK0QVu?G$G#uq?Rx_RQry&qTXuv;8 zepxW_#rIMNq<^+}VV}5#7Jsky{XcyFFVAxMJZGaNp_mZ(DGE7ejbFVhSnZwmp|W9v zp;t7XUo}66(8(fsdR;sXE1nkw4-R(WW2KOILUB>`qO`>?xn$di4w;Yr-c$r;%&o`v zrM;xLw#5L^+7VtGB%iwSfKcfnR1g3Ka)`BmrLcV`d`lt3ZJ@$N!7U@#Xh6i zm-Lpx;@>;ctum@X`Kr-giZ9_;$6b8>H!R5qqC}KbY!DL{IuTB zjWXV@CTnu1j8FBt%GmIEtVC$eJIsTpz&q|Kluw4<#K-VLg73%YcCy}TgLySyt$%*+ z94t_otgCiCaFu7_W%*+P!Im~d@)aA09EH+B%UqZ|XrKFrB3gW+jxH|Adh>)ug zC4?)S_^7=pL#Qb5&gLsu!flb!MPIYR6-l80`Cy6A~;h>{V za}@s6O&*HI8`j^m-v;n+ymtO1#fc@sV8S?V48NLkMdXul$Cpmd&&Ec#tzKC-Bw6Zk z=emiJD4w$sJQx15AgkQuvG#zs$9~}5xK7GX7Ep*3i~F)aTwu^Zquyczq~7hm1}Tw- ze{-J#PzFZR`ssEBcCf89{yKU(JZY6}l{20cWAO_oowPnujRm{?AcxHLC*9*vg$k?; zwaseyw*tPwVdSOa%-WrC+Hi~@Xh7feu6B4!FH?b zu~Z^hVF5Jd;k?^NSEp7>AKXm>SuuWoTNh5TmVAybE=z&aRhA9uIOdLk_0|x%g^8Oo zIEbD?rH@;TscqTISGCuVD;l^76Z3ZJ*fbRZRzZITu?tPClVFw6}fQO$=TYKwz?FtxX z`#*oazrmr4<`IYFA+{a(!`o`)#S0G!S7RQd*DivkTSdlV-S~HI8>-w#!wdI{k56R$ zeARhN{O|1_G|l;X+_9d596Q*Fm6k@6v|sTVXMu8DR_zlP#=rjvI`H$TL_m8p+p;VQ zz;>plw)#&5$M43U$Me706-@^8Ef7=wpA8X~MiZ84%OK9ZiGUwJVw3%H?tc|M*cMHG zLMpI%Z{*a6((wh8ku)?s@^RAC$FG`?M@tx#=4$s)cI#M|Rm&s0mK)wy$7rZdV0dRW zIu~BayjfzOQ*X+&)8m{2MR~X7u zWMOS(5Ovnif^wT_NpWLCZ(gs`Kcin|%?5Z*#HW40z4O$th3NIST`WVh6|pL=5plSz zMh4jp+oB^H*<|9@#J8Fp%w9W!mqr+U)2MPpXTF+^y8d)_6!u;VOgn(&CfK5h;Q9rQ z_BI)g+V7~71IiVz%5eadXHE|mC$e&{Iv9JEvh=2X^WEIFxs;2ZcIhJ^8LE?RNi^VD zpgG}*uARGiIx(XbR>UPR3e$DEkHZzPe~}7!@w^L&pTF7oP29uLX1MvzbCBezSg8%3lVs^#is(dnN~#R_7TPfw5q{ODDsa!9 zwF&25x&M_!+E>o6Ra)Z0v3iNoTL%e~c-AT3QB z84qG{xc3CkxYeX%-f?|Mx>wIIA&X&G69}TI2D64jM!d_n{B+aO_-p#a%GS8cm7f$k z%@T2aq(4F5EWh4uoIdTvo#$vXt#=Rg;|=+e9s$p{lzm?*)D^nOR32f3`|;BzANy~o z6KukKqr#r3dsv?ZSJVWWXThZY$J(nR-ChHKoSelK1|(rQo|eoFxGJh}He&3|a{cE0 zWtl8Z?u1is#$)ksVz2C9sm(fbr?ayM*yQoJvcVYZ$wLA(OQwA%jr}zp7zWRuy(E^j z%F#T5-1`2$cyHUZ?KNbja*Wwo>;~i4@0%%?5Jym%fbV`%fgNpi^jgYZ9NSq01=~|k zkmhK;RMyZ;*QxmPgRaLbi4B_s3V1V_6Kee951FTJL)Ms6YLZd`fI&kE@B)R~6&0Q) zr~BONOD4iw6Oaf7_m?L)>~T35c}W>J#zJ;W#PVy$(B$SaxxN=Fmofno&9J_%X18ww z;2HgrfHQ>xVJ=m?{CfS)5P%?dqt*Km!K7K!q;8{s-Q29^Sy`hSr(Q3eixznU1Hn`* zF&q+_OLKh9nP7`HhihDBAn@6ORidi0JTXZuCF=Xz-uq0Vv-;3(@@byVCe|#m99ARe zLMfi%HP_h;rgaR^rjvVMFr=@yq22jLGjGVpJzJudHM0Ka4hA4^VOiSpOo%z#O-m%* zd0AfIb&V}eyhGN9{-qV_n;ZWj-Dv~@Y6l1P+%zYjZjFz$dTQKviOiESutlpq%WT=Hlz>MRz!x?KY668sn3(<4Vrg;-@e=e>YiuIedOZI!oq#|Iczak z^DW+mfzvesk21daLnL%DN5~=eY)vDk#(V_>0O)G)i_qMkT}xQ&NQtH#1{fuDm~rTa z{yN#Wqxvk1o8HEwy+aFnTcAgS4>utrlGJ-U=4oa zG+iO{5CLE2DnS$pl2HX@-@Hx#?Ah>bvTh0u#ktUT&qB?Z3_K;zPfS%0beq~U4~=dH z7F=sm6mXHgW1ku%^7eVQ-{_|cXjk!~uTJU=7I^~(9IUiUP=>q@AMVZI4q}>cI<<4F z6k#BvVlc^R#TD7f!I5mZ5`96Gni^Bl!A#*7YEEg;5+DYDN7bIgG*QGa;cCC{R^FOF zu-SzW?O@~WAZFUBB3Yj7ng~k325k#BoKzuAq263S`6aQw#zgf4luHT*cqm?AG~I^` zaR%>%p|}?*6nBS|QoN7?#kIH;cXucjT#AHJtZ0h6OK^&&xVr|I z!2jfVXWn}qqAhMTYl@WWV;jSHXtblA~Y7w z6ncOf=a5Nq3C7H!|1!T!O(r*&eYWfiGE@zY$Dn-X#UUdsD7%cP;=(r z!JEe zOThv7CDNlWaTizK3q7hDyKx5h&i0CyNxSYrxWF!5fG8Zo)$8;ythBkL&AxP-*P{vJ zj5;Q(aHUk+V!GGSrpFfNfu!64FBB@Z1vxa;TvWXhK%cKnxCnpn_!H8AQ}+Kn7W0a{ zJ#3T$3tWzA)4fR0YzNQ(cwhti=e4brVY~Y2Fcl)-bub&+b{`KiB;pJN$k0!<+rLLd z4740HBBGLwj#nO z)jytpH)=9pTqvogA`d-{%;Wz4rq%^7nxjySjIC&JF@0e>CQ-BtyU4c*l?eRiaelt% zIpJ$*_}tta@(lF7(Me`0?P{X~d@FP&&FQ{BL#hUc$hwD=kV&9Glw-V z2V=w`+ua5Sv4OhY*4I8~z>vDtKFV#DEUSBb$9h|&tH?^Zt zSWgG?b#NZmsJ?5%Rji#skFyt_B~ZY^GI(fQ_N5PWjEC-N+IJTIE&im)Gphy5G#wFj zE`OBVtu%0SMuFN$ph7#3c7@s7NRfX4!T#w?SUP0ws~!@|os%2^yYqRk0)gIvi(_X& zQD5|`={{!;f`vXwYkl+poD-nOSu=J#M_~6o5>;_u?p0|rnGic;K%=?^=UPn?Lmw&f9q8#Z~bn2g>CA|-x#4|{Jx4s6pVc@b?P zObM>m78ao{jWl5IH5#+#0H;2O0_Aj(UygPAX!vZK=8(dO1HMpdwAPR?n2i4oRsVXJ znpmV{x>%2^tJ@;fu>>(@Jybka-$M$aa zTsXxz`rVj8l|Q&pCW`T^`#@8{Hy@pe5WD!jlqNI^4*vz50gxe0{M zwJg1=Pv9~uESb>KSFr*YOUO^7bFN$2DiB-0ev0q61R-?#JJ6Jl95z%&D9=racWf=Jo7x6T9ZY1 zhu@cr4s8a%J50E^n%CA!1LsKj#`tIE-khWE({WivIMiQ(bf91ZgR?QE$s$FL7DWuo@F+a}Z64tIg z!}urP^vqz%By~XY2l}f$Lq{5~uF8U_WXHF9^dE}iN=b2M3}YXLS6$&}&AqmbzRNM9 z)oE#|)^Tpf{{ZGH+CO<`eEQDqk&&3XuKk{bO*%LU^@E&ss^wDO@kysF8Epa^;u6*<_i?R=oV@l~ zLLBr7{dQ%FENk|dN0;XLMrwJ|;X}XNJ#sbI#W$hXiO$xQQ%9V3B!iOfeZY^vH(YB0 z_<_NbCR_&Lyi>OZ3IaW_{JZaxuM9q3-|*FG^z|FjkXnA}#-x*>OCt?{LdPBJsc#D@ zW3>5N=(KwLJ9+nfy{foRd!A_8!E9B6gXn#(l65aro-X9-vk^i=2Ehjlmj|o|l~2}D zoc<&^`qG9!J0hBIo!0HMqu+dn%v1PR_p<#hp><;%gw2G`jw~VHCOO2;AG}wI|BJ(H z@XD#`Y}D8MiW+7BA%jcnWXRc}Tt0u91xWlIn^n10}C%@)_dJNrPG3 zAmJ8?ssY-X*$;MVX$q&zPxi=(!r^NFsW_JA?W;9yaTX^92s8F>7>7Sq;uFC#$>4;xl zEn4RaJA(SD)%#mKbNfFjr6OJZtg2zxdQ;n-4jNcZ@jbCpwcnTMDk>Ox*Sto9?=jTH zlM?!l0*EWIYdbe|plzLICge+R@;3<4KI;8QXPNmyVf1Zp1aBVboqz;ElFcxp~ zgp=blPa81Dd|u;Fz>LCv(tkga`23Tc@eA>Ss7flZfs@k#ED5sK(HxQcywVtc8r1oO z?RI1KojIwOT7?7i1J?J$9K6$JBL0a9%vMiGzViMxGxYDUZc5%Mwbr-a zmw0LtIw^Jw<4~xHbV=1J=+}x${DtB0wDRBm3|A%O;R196p9RUTdSBN$ihLkkAG1d4 zm-?deAQJSg!a=0cln3JRRY}F(P?h$M_LSjBYQI6Nq*biyddhEWbWOY9LfljPGdEPG z8kq(~t@W=PDw{Kvd3XbEKcSvr1&8m77Fqwfdtx1Y9bEeSz3Q^br=Kw#`-GV&Um+Ox zNi)b6pV;N$9a6c4tmb2iceb8H%8xhK#?P66#e|=WbRwQw=142zq|{MeYYeDDr9xNyVbWei?e)%U*j{-+EcDt4M)*Cn<&W zGG8=PGG!s?DH-m(`UiD=lk z@1*3>Dxo;H+_YrpCj9fp$Eix3wO=jx64n;S|M-SJAKKqHPD2!IyvY_W5&|duY?JQ^ zdRry=#}I2kw{%>@gIW!Q@PNK}noWatOeKe>tCoyn2Ofc))m#bl@BP%@3jLHoRV4QM zS-B4MPKQr8vxk)q`IJJK(jGHiH6u*cTTe&U!L16WXi^{wSl+^tcWnQS^k<3VW4&PO zCxIirU_nh#{q;y;UseYS+HS~>n)I_DKU z+3k{RB4JmR)O`d;y;3-?VRglv0wyyto#1=B-TD-w^q?j<$LWNXwIFVd0%f%(>{eDI%6yP^GADpW==)d zUr~b@}@2n!&;oCUiRK zdGmeUY~L6WT?|2wRrc)o!(A{}Ur66}@%%iD&QPH>`uUy<*q7MXN}Fhr6wYC0OEa#W~xhv-=%(tQTqtdW$7S=j zFh#U$H&{Wcb(WHoaq6d{$j2mzo~#33HRYY>mUZ<`%iGNy1C3d_D!rVI{Yq)_$@#yX zcpW4idE%AdzIDn+0Xz?ODhZnO$b#QepqP7ng0i1G*QuG{%fZ8SMr7OYI5~;MG!_C zHCHR@De_(&O=~TrP7OeFF-$K%^ID(Fr5==2aPcJ1;dF-GIj))rDs33K>bh9};)7wa zP=nUG)}GRmS6Jcs8RU*Zs4RNCcREa2r&Jx71|A(Qe&(v-n)YzgadD4)%v)=0xFtMW zS@=^cLmpY@9@ij3Vjvp2OF;=UbTMu==6DcRhSS$VdxrjQ4XqpDC(Qiqv0o@pTDi~T zkuds;5@0_3AIYcxPC)%XUg`fcyt=1mAi8CTGKyZ!pXK|^H>wZ_k8B5Ah72+(iRY>Hsc=RYkE5>=Y15CGRKK z+JWwHbw@eA4(H($LtfZ3z6o{X0qTf7tt{_v#g9Nue<-{Gn+*N< z(FKokf!?nd60+1{BmDAev&>fvZdyS$@ucermZ%sJfq3KPFNtl{)fW|7j6DNC_~jXR zgAF7y#qhheE-D3JHSuiLdyWQq>C2f;T2Ga~ynE3q_E ztMW`yCDOOOe^p2lrxEIPt0a>2!~wf=?pO4h&Y_*Y9Hc+r09g>A9o`*X3nrA^Bec6T3Gc*pU!{(AI`v?yJa%Ay!O13K zm@F?Z>;J1loS4uh=2Tk3)`U<}pkTiH$Apu8rMwnXFzp1V!#T3cB5YhM8(bj8(ct~- z!j&#SQXo+25tUNhFebk3tnvpUnBBTP=O$Ip%Xj@zXJ}WMWrLYZ$p`ohgnF9gHlHBB zN~%Y)QQGM{O~n+mt0Ini6ssNHy1Zvd99o>tE)47*l>mx-J3pI9{IXS)@|qRn3`6J- zlJ2&@@|Ie+5xnCXj7HT;pRPE8tWBBmrJLOvkL?{fMWcc$5Dxp=M znzvvw!u13?{qu-6?Vb=t|6H)vuiTc`$YdGaGF|bUGSQ;&%Wu)O%>+$Da3#V|7eQij zmT+sqooxzZ9}8m&JCCEm^XQTa=$7;W4y=Bg^Br$3wEsPLBTiOi({RJqjhJ(pf5jv8BXlV(sr;Twc_E{V^iCC0BFr zLH9oLMseEda{j0u{vh2X?XHBu*CNlFScY@wmy`!jAerr;l`%6u)k(H7)foLkotg#{ z;|e9Dcxbl#85NDOTe?Oipyc?$CPFj5+E*{tA{X zkXRSm_$9vdrSVY;NFT9t+nV`YU7Y35l$p)`-BjMDX!VGNRiqR=|E&Br5_S}e6ZS~M z1{T&{85Ri1g|X5#(E{Hr-j<#mM`o1%u!+TcM#DEQ{R1)Mbyb04ji7StJvtY*I!T;K zJ^lXu45cva9U8(CM>jp+zyiyn6*-5pck^#UIEX2Tr43&t@*O4^rxC}u&ok|xU6E=X zzikJ-Yi&w@5#Erc-BNGYVpyZlIlWgE;sif&Qg2r?J*yW)aG=P zEj|tIW^R3Su8ea5hr3GMVN00Yh84=%4V9M3vGkB+EeBeA(t5E;S|5Tp>wN^?d%R#H z$lEb67~Fcyjiun$ibnsLhJ_e&*-q6z#Z&w;*cOM43YQHX*S07u{n^)>>ic!8&lm zaDp(?6O(f3F(}+?;_j-MtzAI{LU+_4Bq_TQ%VB@kp!kOA)E@@8cbS>1Z=X82Hu>s3 zD+Bbhp`iN#{@I)A5x9n zKqy^WJnpz=J+SS{I^=ONH8)RgW-+6;X{vDMI7=932Av?lZNJ}5ohzc}n^hdZ*J4{? zvzvZ5t2KZOYHu%iJx*(}&r-Y17iXDDIM+O4%VY5RY{~6>?a{j%s+?NlHC`uXt5f=( zTjD+s4n0~Y?tPH-=Z@fO0KTw^;dSNZ{6gyouZ711js=}N2H{?yPz%MVru0Hycs)D{ z7@cdoiaM&Z%l~^6#Q(t1hvG7JJO*5T5C%<3a?mTapTUw31L+m4jct^#QwO})NX2L# zww|>5bgJz==@<0f8x8~*?ouAN_ar>_Z{aEW^GhouTMGjgflahgrBYbF6h03fQNue; zp5;bd!?Q^hhYM;UPS^3;YqCwW(Km&O!HT#A5XFJb2+ZIg zY?2;qH+kzgt^7TAd;Yn%UrfQR0YTq4W}so+Fd034%>NGMtQv2!%WzBYF7IWEvZ(Mv z`G3aTmkGXB)yIWR%#^=v9ZK%Sg9|7)IZ>-{RuG{aVU#5dph*VF=w-G2R{b@0Z4{5^ z9Zw}>sYk~9QmKB()P(xm6>G34^-KQ6#idnIjo0r>o0P&h^Vl6M_6`IXPZ(&!-EKe} z#tkMQ9iF6Xe~ySc7QL&XHn_~>G{vVO=?c3c83_gk< zOvl#&c+MqjWsjmUAokB0W=g*!7a2Lf{T1tF3auzLRV;`_=cZ90hWFxMgQp5X-JHm0wc2D1P=!V1XDiBIE-`?TMP z8Pysa$$8)H5}4Mq8;?+`D!B*f6f6hnNPQ$QH^7(n<*!9Pf_@a$rc2mBH#wwocE5TN z@g|dhp>eIjHWvA*9I+|tzJyWMNUGiDrZjh@itEEISRVF5l`=*qc!-gh04|TE`wT6Z zVLkXuC>kBK=r-d$f~zaILZ1{lj{f01$>NlA6uqz}+4Qq~T;SufbJZz7veaZ;Qg7`^ z0NeL3_Ob2tgUa@GhyERXu_cYYd}V(0jpb?yk}z+@@Mke(Wn(^x+sr0QaWhS}RAX{9 zRB_3=tcAY@5~0Wx%1(v!Rd;a^D!raew%bE#px5kY<@P3ITL`?Qku7iEVcT>$`qo!V zgs+JvKv^Pbsi;uXk^R++erd7>gk^nN?)Gwjop6Tpa!uDKoH)!huD`~t~IGs%6 zJ$berMnVDRO?Cot#40?;4Th;xE9>M`)Vo_2p#a15(43|P(e=cZS~T0N*G5Y=Ok@VS zDjg?H>|uFo_B?0}kMgG3x#^1=*h9XoostzI@}AwM$##pLZ>F{0qX#IM-v$I2tOs>v zn~-?t);++bb)E^oQ;zQgD{aPEJj(ef#MEK>MMR+4gOxu0_yXbpyAAFpa~gsS{e=%u zdSdI|U|*uT(4T6iv$je|b6W%t-NzeOaSvyL!E5t^^fDv3&DwmEmdxOsroJcJd;3#1 zvpZJvIL#Mb`iw0(I3Z6aa0M0&7S6O_+!Q9Nx&;26V^*MG@+|}BZ(B^*Wi{EAIOrA>?Iz94Z3GI+& zQ5eQ=lCs`1sVeHK8S0Kl0u1$8?xU^7sTI(Q14jn-jh)y5Hq-PKjN%k2@Wu9*ZLDAM zk^)D8poVq2HtqQOz~)2=>%JkR{7sSNuL=>OD0v`<{9H~RZZz+SEbNifH zchp&<;~lN&!$fpOtwC`{zJb~GCv#8d=h3wZ8P(FeF}+!b{i`pX-itlZWfplQFMh`O zQ;osw)kU)ztm;YRZ8bMxK~~*nz*|GyDnbO&^w~n(xTRcm5m7W$at)Vi^Ui*CZIC9; z&`5XyeM($525P8n6kuR8g)V_5+^?aiFj=@O*Rwg5Tp22*&@HmT_2173aKn}y0RYim z^p;LSeOv8^ls@=`WeG(L)!V!tXoUw!LLmxvd(b=dT-T4NecqIPCc#13c0$l2}u z0;eguiM#rO-tFOtg$#4bED_r*#Q?ia>>nTKEQmxd_Hkf`7AK#n48>ElzCk3SZLR{= z5MypD{MBdMZD*^+uNj&72g2ior7a~|!*cR8j|V)gDPZ4g3ph1AXxZc+0|;5C>*AG9 zwpNWtc22Nen2+9pK3vUIERj7AeqFm*7CeG=4no(jYzhR1X@zVho z1+{M={cg(8P?hMwl<=+?*V0uLk2QPCh}_?MZ`Y|sJ+I^aC-ak&;7aRxkTl#P-vaofH%$6 z{yp5F*k;=rV~_hr(?ngaWZsVNCtY{n%=HtBGwxL;aJe z-Y3%DaMNKW%n~yI$5s0hy=`MMUG@OS?xRGPG2_ft_8h#D%fC`uTbMsn+GAyEK+)54 z$VQlWn8g1mD$P{tJ*Y|UYPUMK5Uu- z+u4;jN`~RiD+ZyT8m69qrQ=A}Y?k$fFJ2(oALJk<*3@z~3pJg2oa%rHras0CdQ2zN znDS(|`gh|1D5Op0%)GyYB5|-sqLPnr%!g9KEP-`54ZxlM+0hk)Jz+!Wic-z~n1`wc zo_|icqx@sz?9Vh*bEsZVn}frigvl*MvQ@8pcRQX|7i&1!NYAY=*N-3&dXQ0|KEv83 zXS3<~xa7E_NuzQOqr2V;e@Ehn_L<}K?DEbu>FO^he}S?f`~&HQ&N2RaqfH%@V(|l} z{XYQWhvY;URTRrk2t>}|e2C#fhqIIYLzoMN*1dLfCxy2|o6)+1X76vA-4&zWr*CA- zj&B}5er1k+jg?wHJp7uwkMm|kA)rMjHn!oQ9v9{Q}YS4L!i|C&jR z5F16bcX38D$?wrpDz}hwb>em#rAhWX=i49fgqjc(-X3oJtvkhqNm3cU!k&q1=J{fy zYcBAuPeX};vl@UQ!Bibjq@ptfp*_2<-x%}k?Ukmj^E(DBeK)$WPGsFE?ZV7sgFxed&bHZE&Z9-Fn+=G8ELHA)~mbVJ_W; znYS+thsNdCXD!-b0GjsR&kiFFn}jTfMo-kj`Tnb#3RFS9yY*Uc=h$G4l~mfG&Z!(P z_j6`6`xw8Yb{sAzcG|t>2S1bx1ot*1d0}YERWQ zYC>B*1&cyUjgVyl?Qe~!oH40gh?cpXj$@sq>*Y~&p3kl(HN3Np<^TQ zn#wc!%-`p<@rd%Uz?I99(!Nu+mQRv!aNcwHoY~`atok5o!c-0Z*%D>!?uM z&ewPb?>Fwiu+hE&AZ>7+(y=1%SG^8phGq_GXGuR7GpssYeN;Xo7pzXd9R?KPf0=RC4Je8mQOu%Z)~=*_J7|MXY@C^VPT2;{1G(BBfs7Yli{SOX_Nyk`9!?V%i`7RR zOnwID)cVGz7Q*whGzsX6oA!cx-5afG_PGkVFjITt*(8?Q~q;Kj2&l|1t0+<(g8X9^^-L(&_%tM5 zfyGKhmuIQ6Ix5!1IQbG>U|$O5-X-agAS&IJj?mrw=`^ zYjoeH>?FM}H>a)+OBwKiX?Ro83iNmzY&>wqweWl+inxEZHQuD7gDuJ&2NfHT0+CJ{ z*bBELt8kSo;DKwxp1mNT{7xW0nG&(2Lo2X~{&q-rnm#PYqGYT9Nifm_p_#oLvdq&< zTv_~3q`y4*&GIWmiQ&zZ7rFqrH^uN-ht-VGNOr8jPjXQ-@cUn;WvzkxxMK91{q}Z< zrA3?c>l^*Bq8XJY{>DMZuaW9QPl!ue0b_xx+atZjTqfmz0NUSA6De*`hsZ?0Ms;Ph z%8kqHKLCTQt$8i|jJ~ku zs{Pc#4gU4g9d>+~OM>rE(g{xqj{v#n0Z6EpEb4WfVp!7n^TU{LYfC5FombUYxP`Xm zn%X9LP&d+_(I?T-yul#}U(FhSOf7u0pjW@VE^o1dP^mM@2b$N1TvZ*6PmMpjFxdq> zuH<;_o>jHDGm(0_&XvCv8H{WFpdy+wngFv&FB)ac=b}&|JQ4?({ywnr%NXsD3#tiVfs|I{N7VOLYz3{rwue z1pncU-IX;FxB4JFC#gVunyyXH&bB{v0Qxcmmo4`f?yQMa{K~UFL%b-Fm|IBnxC99} zvsY5mA3N~-mnrXVeI@(A?+C1Q>T%slN7cwG?}sFl1G@?JQTaWm`4-l&YtLH)yx989 zv#M_u;%l)KGBi4M@DQo_VYo9&fBW$7(ck{V!!Dt?k3W!Vfqeit~9R3$i%U=Ky)*Eyde|w{@%Y`!ROB)xD(cd|&5g8JXCcfp$ z%+K&=?^?UF&L5;RH!(pah6ZOO`D{1*Bm&@6A6AS;U?kw3g-tYLJv6qYe)e#~V3mnD z2$p}CI>_Er!ghF%eK{iHx-`J4*f#y#*w|<=u@{fcB3;kowK@?A@n~N#fRZ)DIOME# zojf6s_cjzr=uQ36uVIyH$?&&jU7enYnM(A#*W|c;1bPjLF=N3&w*LUEo#qv~O)!oe zJhE>$=i02a;uccg&Z8wd*c=meY(%hp%)FrIN-kT`zoTsMQFuWuWx0raz&v1f1=e^S z0IWpE$0m3d)3yU&B6i9*OuiZO zp0$q!*G{`Xuh5@TP%?+O31&Eto-k`sOOBW^{-xj#JQE{8zb^_j$=qO{E!)*Y?QrXp zLvI#mP=)#W|JJ&Y{`j+l*KQ020(k?z@9z`#qKVc#8!yR9{(q|0;4PRY9D-;)`-D8Cji$W+0*+c+GVmD2vja3%iYmuR z`Pz+KolkA4{a>5}qUg8%X9w9A$kw=|J zVSjva?@n}!YNx(d$VL$R!xAf|I=KS^wYu&bX*tG5XzXS^7H+g-$J#+Ej zr$Woe6!(s+$tM#Eqgh*%dh^}e!$C8$^wRp9RZ1gb2cw|hC!n7;c{mmB4+3tLDMHhs z0Gj6)C*qBrAmuZh6UWyvIOfeyW9e^{n40dIOuZL>zZwvjpnxhg-QE~w@|U&omAQ!^W#hz z6J5p)iIBXQU`SdO+Tb1F=82d&`8vmwOD364bARp%+P$pG_tz=E-86nMZrQORH5idi z{D#edwg`Om-N%przLbqsqm0H(n7KJEd2`rRh2+RJaVcNAJku?UFSC1F|7Z+)!eNbU zlPkWB+&&W04fi6VUHmTM|Ksd0P0c?59|b9xixCLPJV(W~42$wNqF%P;^S?gt>b8!h zm25`a2K|r(=l1&$eygWe#ZXfPzL%xF>Lwm>4ZM}P`Q%3r@1&?4BiERgv@KS!_5R@H zS?EZ67I625--p2htVjtIiHa$@vOd~AyZl$$oU@nP7``x>?7?-)QhRw}R~Sy2gjE^YkxpS>;W9yn-P*gPaJ68S=(OC>Pn3mJ>L zcM_Pb+zme#3s4WyKO_FjelW71kUirY7qc3N66=ARadqo*JD4YwC(dPQSv&APDjf)SF8k3{xjSIJAP!F`Gj$i%TDf2s^3 z%ac_Ubwic*Ve7X6KBOu}2*;E{!A2_IJYl)dt}y1L#d!r&F-hyGHU$m1W4%g>BobQpC)aq)&1O5>6!u0x^!K1AZx?UNwh z;D@-T2_YyZ-w^JWGojXDLXoX&Yprj{sCO+%&feC;47%A^0*Gx;ysg0 z`1s^;tX9PCZK-}EUb?2G>(^T3wyUZ^t$XTNSW7LF7>5>;w1;J($C)ySV8!~&AIadq z@?8q;3hH>9a5nJJ>-yNxO}8_O5J<=#aV&$;_ksnEQS^(bCFUfx8j=N>?n~fq{f9S2 z*uy?oHV+bN;{8QIc~>|4e20(~uvRLUdt8#YKL!4c#1S`xMx> zvcEOFyPxU~BXfln7&L8tMtsXJxsC#ScSqCUXP@eZeb%(|qo(>-4dL zZ+NVgYI-p4AK%ey*frSa+nn9n_iFDfEWExL430{@v~pX@Q@)7y7pbhTfI2u%<8Ngo zq>JsRod9tk6lC&LJHpi3>LYQcw)x54J=b`Ko9Gudz`l$kS}q!WC&+ap$b1;|-Y}|e zY&x=vj3SDh4HE{Yr8SB4qw)! zb-}zkVtZlyl^@&PC%!fEuWUCArtt0h<>j%*B{)2pvWlCwFln(|BBxqRmsie_=2b?I9*PAIu))M##W>fT1X(30q>C>tKgYHOXQP$;|l;J-v9s??P>H_iO*k z(+FHSP)+ygtKLMN`WHp1N35-ieBbUn0eT5M?{M21YIp|_V@K1bp;x{|!CNs8{?x%6 zXQjChqjb^;c2MI&&K9-}*Q7?U(&a3=Uu%$QDB`^vTDQOST04z~#rUHYFAYANe9bs= zd))Bq0$`>e=;2l~F>zgyo-b)e_o)|_$ZLZX?tO!LNs6axB#E}T z93Sh9s%0EQh}>p!Jgg*ZY0|}*la(qDP$)9XH_P)Z7B#itb0ay1c*k9^XkjKBv7`&R z&15zud!zz8P8VmNhghu~N!7oaRsZK>GOPnLLGzB%eJqe>Gc;W3Ezuv^sB}om?RKN= z$c$s(x;%0*nXL?BSgnitCPemF)WNR%B83M-`T4C=FWIMkGNt4pz{2=S)vC|p zax^r%sy=%$AW=pn`;GK{GDtdnlkOJ1w!q#?+MFkkZI@P^aJmzIS;@9;6y#f5BSqml zna3h!xqRr- z0H0X&BFE5(-n6B)aklgDeg<(E4;Ln4v@GI&A2IKn9M7$x*m5r|(oj!v@ob1PlC+B#6SX-33*UeowDnks>ZTzAbc&nc z-0J;)GuZm0y?l$op&3K6wCgAuQxiu{VgN@?Yc+ZAsNc{W;oXhVqQWoC+yd6cvx*nd zaxp?xxmMKz3GF$}*fTj#nN?59uObjH?k^h;d_P+&Y^2to2NmV*fDhFWYANNqSRL9< zoDS|3%rv{UTu6y#O!uM9WR75Xn-*nnZmI(e`w8NJ04IJDlg(nAxr*y)D!yIRV&Iv zI`^?7b%O9#Kofx%`k=9lpMMwf^yZ!r?2{fQgM5K<{;v@jvIyF& z1!M830e*P}sf1rpAfmB5+ei(^(Vv<4MOgYdjYyL|LrFp#G)`@k_#wi_y)dP<D(OZFodsS=WaS#)zF{4iUXH69#Z+ z2>p163W`r*=jAN*%Wb=nLK{XO$uWHDfpYU695Vu>DoQ5{(oz%hv17*R+h&J?P)X!o ztC*~xw!L&WX_Ttv>p9c+26r{w-nN!B!k?rOLwy#MjK<ox70Eb&q8nC0(F6VR|Bd$5yd7&zzJS?AGsh zl6Drg-T*#ksS3laI3Rf}@EF`|(u)la=px-4E{h=oXsHKd1JF#wa$Ka?FN@?~dIp%F z01LddC>fzY_Pi|kB>EB>iS&pqa zm*By&Ik#)c5lMclVqm2?oU&Sa37zsYhQGEipDFn9hc=9jT1^8*JCBh4_G25KMj=X!5u6} zxh8~XJ=KTNIZyMiG93u9?QEW^>qPOL>5yLuaX45ENI2-cYVrliY9QEbfhLZ$@&pmt6w5S1>;| zv?}-eWjxw&!-_5qpd9ea8~EwwGBuF8PI>TsPu#efuE53JVdH%6V=C%K_v#Q2$}`uo zY(%qwNYa2mT}uCeQ~%U8`k-NRj#6i6+>DmG+S_U|8oa?QYB}zMNZ**xOB&ne<)d3A zAk?{!z&QiQL2`7GgM;-m>Tay$mnhF9aJ5Kia7)tn5>_`PUNfB&DC)!P8&z&pv&+#} z_+U5STS-}%b=>m^lf0ja-k^?4OAVCb$Vw~zwj)OXoG4~bQQoc*#ki~z`%`>R`v(S( zX%vuv9vehz?4e=&!p@2W5+{H350xrQ|IRp^f5tB!lc78LF{$z~G$*00;BL+?Lbzd; zl+)6qwZ;1S)q|kY&eJ#$x9AD=R9`aP{gpLdG$w!GAr7)i2#;t%sVYoAP|f*RXYdwn zyy2UFDPaF5YX85TbMrsvrT-aQ@@q$y6GS1(U1&YcSokx%Yulgvr=ho3Z=x;vTM`gS z1|CyL>_9Z<1S4ZDJJ~`78jHMQRap%C!Hio<_A=@%NDBDBDaxeCfWR5;`@rl6W#nhS z%;ln#e*LA)F4VVqyb|B(^h&Mwz&6dI$ng%ueqUae(%NCK*ijqGOzg z)hFE8dNC!iYthTWa8s0)Ls_GCrMIQFr4{(xz;J5jf34@{aixT+=XQUt6jdxrmUdnm zr8-Nn=@i=|{=IeQ)c**kXXoYjRQLbwzW?{*O5ot+86GzFWBPx#@BjTU_O+;Vw#xBi9GFWS$yi=y!J48`LHQF7uET_2JS)rDx3GI z);(hHORTrLyj6bNy(cAKmG)-<2j!ade|B%RGZc;Y|KSc? zHoKE+Gf?oLl>O!>z|&N@>(6`xCcAq1-xEyzCB;+j9g{fqd9`GD`cv1dmu^-RNtfo& zdX?buHH7`w#0Y^{(d4IdWO~BioPGaCNa5}bh94WBF45k?|3>Et@OV|=kxiGGKdb_7 zsb#5|u}WEZp7i+9KgmANe?a;7 zt^C5gm$f83*Xq;>y~UxZ=_Ohw{dWqV^B-9;~zh4v7hesdkav4fm9IO5q@yb7@uJrf5`ybq#POP#s zc(76(7~sITxZ|`+{)f^zPx}u$fV?Yv|1;c|I(+N+&YLPXf0QPdDa@?aD~wyeY)_i) zIz}GLU*WIQ|5zsfTP^=D8kqUk%{u;%mSx{`+=i{hs>AW%$%S3 z>CbxWHw7woX=l%Gt~>Mg&W&?MRoBxaH#v1_EP)SJAP-!S$YvkF3k~7r@*+G}I?+Ln znKoM%G3y^X_=Vgs9lgS=OJh)6VK%^Ng!w;>r@IH(f5hYuW*U#*6XS+~R>Mr=!I^>f zA2Ieb)8RsAV%#y1YM4jc2f%va!rwnbpxmNmIvH&rjJ6Lz>1(uo01AUEqvgS9`v8~@ r=rCqE$m^Za_5r9o7;PVnwhu>Backend: GET / + Backend->>Frontend: Return index.html + Frontend->>Backend: Request /images + Backend->>DB: Get all image details + DB->>Backend: Return IDs and File Extensions + Backend->Frontend: Return Image 'URIs' + Note over Frontend: Append tags w/ URIs to Document + Frontend->>Backend: Browser: Load Images + Note right of Frontend: /images/:id + Backend->>DB: Get Image + DB->>Backend: Return Base64 Image and MIME type + Note over Backend: Parse Base64 Image into Buffer + Backend->>Frontend: Return Buffer with MIME Type + Note over Frontend: Load image into document +``` + +### Write (Image upload) + +```mermaid +sequenceDiagram + autonumber + Frontend->>Backend: Post image to /upload + Note over Backend: Parse image to Base64 + Backend->>DB: Save Base64 and MIME type + DB->>Backend: Return image ID + Backend->>Frontend: Return redirect to / +``` + +## Usage + +To run this project, you will need to have [Bun installed](https://bun.sh/docs/installation). You can then git clone and run `bun run dev` in the project root. This will start `index.ts` and listen on port 8080. You can then navigate to `localhost:8080` in your browser to see the project in action. That's right, no need to install any other dependancies! (A SQLite database will be created in the project root when you start the server.)