From 0c4a493c5683afd64519463cccfcbd2ddb6d6604 Mon Sep 17 00:00:00 2001 From: Justin Carlson Date: Wed, 24 May 2023 09:16:37 -0400 Subject: [PATCH] Add support for uploading avatars (#767) * Add uploading configured avatar images * Add avatar assets * Update docs and sample config * Add changelog * Fix sample config * Add removing avatars when none configured --- Dockerfile | 1 + assets/feeds_avatar.png | Bin 0 -> 12858 bytes assets/figma_avatar.png | Bin 0 -> 8548 bytes assets/github_avatar.png | Bin 0 -> 18873 bytes assets/gitlab_avatar.png | Bin 0 -> 14673 bytes assets/jira_avatar.png | Bin 0 -> 12453 bytes assets/src/feeds_avatar.svg | 67 +++++++++++++++++ assets/src/figma_avatar.svg | 88 ++++++++++++++++++++++ assets/src/github_avatar.svg | 57 ++++++++++++++ assets/src/gitlab_avatar.svg | 74 +++++++++++++++++++ assets/src/jira_avatar.svg | 90 ++++++++++++++++++++++ assets/src/webhooks_avatar.svg | 79 ++++++++++++++++++++ assets/webhooks_avatar.png | Bin 0 -> 26118 bytes changelog.d/767.feature | 1 + config.sample.yml | 2 +- docs/advanced/service_bots.md | 2 +- src/Managers/BotUsersManager.ts | 127 +++++++++++++++++++++++++++++--- src/config/Defaults.ts | 2 +- 18 files changed, 575 insertions(+), 15 deletions(-) create mode 100644 assets/feeds_avatar.png create mode 100644 assets/figma_avatar.png create mode 100644 assets/github_avatar.png create mode 100644 assets/gitlab_avatar.png create mode 100644 assets/jira_avatar.png create mode 100644 assets/src/feeds_avatar.svg create mode 100644 assets/src/figma_avatar.svg create mode 100644 assets/src/github_avatar.svg create mode 100644 assets/src/gitlab_avatar.svg create mode 100644 assets/src/jira_avatar.svg create mode 100644 assets/src/webhooks_avatar.svg create mode 100644 assets/webhooks_avatar.png create mode 100644 changelog.d/767.feature diff --git a/Dockerfile b/Dockerfile index 4adf3274..252b4dd4 100644 --- a/Dockerfile +++ b/Dockerfile @@ -42,6 +42,7 @@ RUN yarn --network-timeout 600000 --production --pure-lockfile && yarn cache cle COPY --from=builder /src/lib ./ COPY --from=builder /src/public ./public +COPY --from=builder /src/assets ./assets VOLUME /data EXPOSE 9993 diff --git a/assets/feeds_avatar.png b/assets/feeds_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..64350aed81755a0996eec7506ee92a001d671f22 GIT binary patch literal 12858 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 literal 0 HcmV?d00001 diff --git a/assets/figma_avatar.png b/assets/figma_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..8dc64435a92b77dd44f45915f7837f91a12dfb24 GIT binary patch literal 8548 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 literal 0 HcmV?d00001 diff --git a/assets/github_avatar.png b/assets/github_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..3da737b3ef110fde86f71967c0c6a59b5980f0c6 GIT binary patch literal 18873 zcmeHv_dnHt`2NcYmA&^tMr11@glsAyGi1*)BbyV6jDwK9sU$KgE1N_aDN)%9M`dTn z_kQ*MeE)~f51$|2kLvB5*Xud&`?{~|y4}~))ube2BSR2`Qd>*S06{SDR}6BD6#m%o z|FjE#9QV{RyM-XXWYPbKyo7t^@;4lwAX$;l@EOu}KF+@}5u_Qo++;?R^eA6&h=hcQmZW5h zM{5~N5FARPb5%L6&Rv|On6Y(a`}$qJ;`iUfdUww!a4j_j_BY7h>dy?>{PNBEY*rsP z4-b!JRT7o5nwnZh0tqfUS}V#FiH?r;iT=NT{4ZUDn=qZp>syjQg zsN|mSsBtPdMoFn|=p)tM!HcBRa^>NkJP|~ceJ)YV%*-H25^a)}RMzy|A{h%JZ!Rw@ zFHeMIXLHzicu*srzP^zW5l0lxk4+P%k5g0o`3D5FfBZg|?c(%EOk@i$VHS3RBb5c#C@Pc5xH2 z?VX+G?RPTF`@td8i;Fzi^oRZ z78qI;=^gK*3=M5w`O_DvQ2$r2*z*K~r~wPf+FnP0zpfl-l2{c&;}8xf)}kpCE8{-a z{)b)0i?HTkalGzPy49*doCfdy`VaMja1y;rYoZj9>lBe>Ot`!}aSGB19|fMvc0}CO z63IPxg^5hO=6;>aJ{QF4G?3H%_b7FVU1`kY$47fp#3IRl^cJe@R0|qa^KoFY#dfqV zWaNlGsk*xQw0Emf_PJYBkNdN`2p^qjIcZN|FJ6V0#xRP8uff-BBfXzklwzs_1GKw& z45XQmLaCU9gzlb?PM+IuB{>dfi7PBysFF|V%ROA$-kVoV)nU|YG`{@li7`okfB#TY zv|%I(PLMHIAtZ)ZGhw#1twT0&pBgTzj%J|=OZ-_u^G8w>rRGP6%Zx7EpXri~!Yzox z-F=Xln7A@yaxiTt>+@Z(VzTZO_Wn?-jEU~2r)EcdU0YbNQ`bn;JZy=$15Zgx(mM6$ zboW~ZRfTkmDNr6y!mBY&O-O9C7I_J>yj6PaxY5ouZ+mqbr_G zBxRu>HLNfsY6`lo`8Uwl+Rly_d;cwuDWdg>q`Yk{wTy<1?IbqJ=l#S4XJ4jNdv}PE^1=SWkXQ83T@sw(?1!Q-iJ%G0vu~9d zH9Ok+H*ek?EY?3l!8S-uLjE0wks<_h_8-WNv~8OyF?}^-(%HH4=1Q-Fon6Em%Aa-% zk0TPrJviaLr(m7qsImIL#j`a0_epRJ z0zyJ$!l8dDZ_SIV_^aLZ;VAT}si{%jdsQy+BuvTv-5f7AYC#DWMiRnG<;@>L?{iwB zllQc)W^-Ua6a_H{kJVCJSX#p4h^&dYBV`Y|kH;Nu%8$Kf6vRfpbyZLplU$i?UieTh z9H${Bs8$V6GPJg)IjMWVd6b$f6|a)w62mMUqi;p2S`x!pT$G5fLK34ZS3KXFSF*&W zRVW7szxLtaq5ZS?`ORoj$Mnyvi*jTH8gj(pX=kU}&4~tV@?+iZkBKxe^BK6bgJqgB z6boA?vU74uW)tz1h~A@m&s91N`~e%0$#ZSZ69ycU7Uv}0-)ns;x4a6EA|^-7EH7OW zaqQ2Gh>T5Zx7SI*s}?(7W|!%#`@lQ(*{Tt)J~qA_$0b8n?>(1@S7C!o#pE|NWfQlv zYpxKyp(RI_w0Q2EoUQd?!r=VhiOQ+Oqes zh{zspojvV*zg6p?xW?4dc+il3wA8!dVUk&m1m!ZOK3F_bnD4#xODFeFJ1IK$WpuM1 zsAUviE@Rpbe1EKhU6~b*B!P(|m@6;j9Om&rb~0Y2SiZTrex)NtThOW^&WFL^6ceJ8 zmeaUp`zd{OtRhV-@q@G4VJMfaa!d1=Mf6Y{32x~7&iXuy^li+m-=qB4$mr`&ua(d} zx||z*^Gh%cAqIxoY;`A>* zF!1OIK(f1(w~KZC{NyAyk|FvQvOw9m^-J|}MU(%!fIpu`4227z-2dq&nti|i(p zyfd+#`R)=taiv%?NB&jEh@D2evy_hJiAXr_2(Bk3`u^nQuIkjX;v$-)R4M<*Vxijy z^14)fhzLT=Eq9VsRgoS4_b3&7gGX4{vYL3VKbL6vnOR9uq68C?Lk>y2r z>iT+D`#B}vu+T7qAYXJc;`?her*UEQC9}tYn%pf&!E(Mo<6CrdAL3QQO%b2PU-jh9 zll4c#-6xaqDr%Va_KwwwC@#CL+>jxCtz+aksvHGhw&jp*$@cbkba?p?wu0BbFppMx z#riPNwPNzmL?v)`?1k*j!k)rTX%Ss|q(;Fd&GgQs0$!342V?jSxrjx|p2gPA4pup- z9YSaDpDri==YG@#!4z#6hi!Mo`R!k^v|3tPuxx5%XZ@9xAaGrgBXz(qA=uFdH-UR0 z(qt!-Ve@HAl_wRKZAJ&L6x$`HdQsutl<&HUDsm}4kO||_c^N>?WH*%JGPSJgHhT+OczGu()oS)@oeo& zcKC55jOJc;%Zf~3*kD5JK21^=Yy8>m&^5Ie&Y#uf$jo3tHHa;m?r|=MzWot$|E=py zH#f=qxV$yMq5zggl7p-U?2A&~VP0gbsnKI<5LdLK#teu#A?}CDY zg-_)&m`%|!;j)UdsHMFs@@jomg;_x** z$AqMw&g$EC{Uo~|FjI^^y&z~ST+(_)&t2@1tq3CYXZF3>=xg6b9}1qKs*g_nHlr*0 z7M_<%Oc6upZ<{&keZ%#zzqgkrV!539AK)(#VEa!CT*-Np#@k)(MW1B*KJyG$*~qhG z`~{cJTEvh~LgE;b2o!XXRBT39O= zHtlgK^Ympo(h>|gu07|xAJNsYZEZPHTK%Wx+ka$kj@GHmkv5UcBZ8yJkFR`a2w~n| zAFv|`s;Rlm0DO^d5mR5aRfkuemc``jolHI+5f$8)r9@k5aPy`JDK+c8mFQzIWC|uE zGIRg0Pqu>ZHT2;P>A3&43CbEwhniZAT(I|4wHLYX%wVK#w;v}oDYLgI7NBGxX`m8 zd`N$RQ3N5gJ)5=q0e8g{Vn0F9Skh)p5E2i$qT+-ETm0e9q^+&3*Wp13@njgTHJ=-f z7amt;LhJcQZf15il8)Zt(u6|2{xfHN2H|TgB;BPA2#0oVtJd&7=~StI_j&F^unu47%1<`ZJ~by3-}R$R3t&56^r_ znTps7wArpK7?NDzhvhs*L80<<(-PK!7uzMIxb*F)suDJRdiHK)Tt2Mv!{rgF#Y*CeBrO(V!M*n1O?Z6d)Gzh$siBnHtWoM6_q~?6{rqA39&^4Yy@6oBmNv^)k zvl@+`MW^TIZ>-MBxPM@(btk#DU#F9JKIrVtZ*?boy17&8O%aBvD6X(KzXHgM?MyG1 zKIp2liT90?;!+9??=!Ep8}|6=Ilp9CmK(d#)5TBz^_BbmO*iu*wN+c=^CQpd$tC_i z&MOb3(nbM79N}t--2x{$t`hEBLD2G+&1rre&8kfCD9Q_YTY*l!^(dNLSkV_TuP5uq zANFh|oa#W!l!PVA!3tmDx;p!wlv@*U3@I~Tyid8Mov}ME>fOBg{AX3e#LPdDafsj+UK0i!d+XTXwyiOws>2v+M8^s))8k z!u-gZ9fGW^cy=$jW&Oi2>a}$=iTUT&nOzR%@&IusWho)>xP<53ajgY^{}V@UF}I^h97+;46yuh}_o`|i75MO7i|fl_W`dU8|_bSSEH7$SbQ z=SK3>xRehopsph___@;mi?_vVA2YdoOO=Ryb=7Rk@P6V%OK;it86)l%CC5v7F(t8c zg}A}H>eY(OX(BAEKjuekZwSM&J9V~RTvRAUTmXCGYWk)7DB@yX@3nt5M6_Xlcqd}C z@et<|cj;E~`#oP5aos-`BQrsmApn8o2?ON}&J692of z$>`{W1WiMqjl;wF^aU0*bxkzyXFMFf1`+JqS&x|Mj(hFh-R5$-nJFUr6jW4H4e4dx zgf&JHt9rKO&7rx|Z*@AgaT$Dyikz3tUv>PJ-!&^)`o0?R)N*MZEnr-FrT*d8-orC& z@o$sPvwP3Iz4Pl!P20P7^w)E9S2i~8`WcI(bi?p4quKR|m7JU$8z-l<>GgY>YTSzf z426Y-G@P_|oCZ{A*M70)DpIxqw7+{-p#%O<@L!>6YujRcnTHm4lD9vZJh9Mj8W?Ka z@Hb(;bq{In8)n?Q?H2j?vD|ZZ*A80TrRtkqLYCwEHBJMMzGf+{@Ej(5JXv(>@#c15 zd+{an=WQJw*qyaG_0YrDZ_~uZz4vx`ocgoTNU5l($V1OGZee*CHo5x=h?XuO3as{h z4;3MC^GYn71<2JFag;hK-TAMPxTQt4^$ITGLz(7?%&T1EtU`6NpO28cnrc&z^PFtP z7HEg`eeUog8Qgr|S=prA?gNWK5X^XF+_z{dfU^S-m#1o!gyz1Kd=1sH6ky({5y6V=aQX_i$X3og$ zbKa)E(jSCcHj&zOUrE6yxd2J=%H6_lwXb90G6&IHVx|7dnTf*EcseSx);S znNqH}Y2NOcwN#wc-}Q<> z7d1a9;1Sa=!#74Cl{;Pb*i268nZ#>0zAA@+Y@wopnG>}Lw{jd%wXm>w5O$>vv!h?7 zaxO*mDw~5&no8(lFceGVGA@6<6Rx6Ytv|0N`lHjp%zk8SkM6x2rY)S!oM#MtllKjH z6?ia=Po2YzT1Wcw&R=CNJE3DsR9U^HxX%Iz@dTFlWBIiz7DnlPvX8&z{Z@ycc*zDV zN_o$3sz!P{=obW^`&4SFdPa3X$L@57C;yZX{?H54eXvdcST`>+xrkShYxj7AkE=L# z;Hi+&^9ZON2rL;w9=T(q^}Z46C#wyHOp#{`TSuZ+ApaNJMa#YjWA^^>X)}J%UPnz! zEBa)Z@6!uDK2kF?v%Xces*p#A_7}9tHA18*nu69|D&Lr{D^7)CE_my&4}paT_OaS& zJqZG?MiHgQL3nm{wvX5P(fn`vB^fR6hx^)H=-_?!A0N6wR(^m#!4q_rYq%v)y_m1w zn^1$?jf}Db)HNh26-&}e1~kaZyX>7I$xi>EbrZ=X{s5;wA?$_s4;+MPm>xafq0Wee zPkr_n3vcvW*6yZRU#zZCOYst`5F4WH1V*775Os;2Gk}apem*|y{{6@yNwpG(VOgF) z`KGYP4=c7A0WuZaIa9$W%FSv|^pU4K$Cu&5%4y6ZCdicy4H=k3rv-5(Rfwscg$2jl zdviXlYIa0KkqN@zTW`9nDz1f%?X{opt(S0RXt9uX-Ao-WN z0QQ5O`6?d@^{Iv}wTE2>e^r1qeOPYFk5xV6U-Am6`4Y$fuFkZp<-xbg$mpS{$GnPHBb>8r}SB2QO7HJ+@L)kSX$uQqTFZTI@ zz4jGTWWsaty&2qzS|17{JEFI^A1xIcD1SoH6~MGhas2r4A<1Z|Sz0SeUAkJbeikO2 z4~hgACqHX<>+vO@qTLE#zSzw@L~(vuEc1b7(B|}Xhb9aqmV`U!_U|vTz{(IR_h6L+n=`ScqIBipZHucDTuxB!JWk0l9=aWUDzQJGe)QFD`i$<`dbss#|RQ` zECkQl@1YUFj_Qq$h*FS92;6vH+|T19_b zxH@OMg9WzSPyn{0gM&iD=uB202a#4J)K@pZyt0(Lw+PRpjmk7w9@`;@u^9d~wx&t@ ztXuN(r;N6y9+n9w<-ff`i|3FR!>URHj6I3Hqcu#$HSH((vf_Fpo;=J7b`MxNmr9p+ zXP1;yNddjgDj0gMSm1B?@l=O6lhwUlI}h~HbN`4u&8LK!HezpL`|O3 z&=8J z&gIQTSUlft7H(fSojiaUO`cn(!KwkYNSB^HYCn*B8D+vKxi(o{N1mO)sv70qySpN( zEL4fS?t(on;eFEIdE8F_)g>1Ki(00&)K}}TDIS3Eg|X^J+hl9ss^D|eMHagy48!B-|uPNdu6g0$@G#E0sej4sGGM@LU!$ zs+PSMDyJuR&y^TxD-bB)VoNdM7&s2siBY=P?n!u4)A`U{8#3TLfdX;)d~|tpCKx9r z>%BouI2Q8;lNioB7R@_M`seUiBspUWY>f+P1W|G`>pvJQ__VbfIb}zrMWm!qdi9wz z?M6Tg+)y6Nw-5WG622M`w(|sNn3)Bzs#T`Q1Fv;s?(k)$M0|n2MiK4Rlb3Pj<>gR- zk1q^XQ2yhsR9E2$dCiH;d+|q+aI;2H0gakZ2AubW4?K}2b~J>3ATF&vJjAi8t9XuC zEq8BtY#VjoH;C~u7mnUG@cs42t)<2tqH7KW+^RCE7 zdRxBsiA?ZKZpEx*=6~~B+3ul-5gEPEvVqin6^i_(_BU@xLzMhYWx~n8;hfumzkK)kIhJ(sfbNv(NI$k-&iZu!%GU!@CY%ZAHZybO%J3@t8#iM6 zvEN{7g$#gu3-vp8VFd}Wkaa;@xsZfxi2S=!ab;SUEna+K(IX<1G;@Gx06E1COoLs~H`z@H)?5|&Opc`qyyrd*p zD4v)+1|ZudnL+0zoahnwHTGqwrwk*?Ae zK)nlkFKmCxQEJY1`_q8m9`9jjXld^QT0-|OOE?YvU?Rsk(*-Ms(-|~tzcPF%yc)z2 zAROVDr!;S0mxzABBS7BD4%Bf8Z}i6yqGQJ?;ULOF#o+1H!vk{`>HPTdDy;O~wXXx1 zmADRN4`4Hs@ycpU-Wvk- zTINje@&^0%Yyt^#VqlwN!Ix^23KHPk@L#`w!wTyPhV54&o;+`}&`{1xlSJ}mUH&iW z^*u90mLdhVh{tW(Z})OG@mox*O+Ft>e8ZtBjY|v~F^RjT_r;lz3QYQ45Q+e#* zEEcrau&}^FI5y*Bg#g2bzCuMM99@ij|Io*itv^98oSA`B)E!Hb^lHU%>*T?<9g#AJ z60yfrSGblr9i4wp5SAPvN0f-Qr`A>A{ZA&c{C_(UDO*@%qc8pUshOReP^@McjB+gJ zE*d7$*T4SKbe|Vg0RSN?-+^vNrwNV>*mo*)mMfw-zJGczHxKy?Olmb)q#e`BwEgJq zTdi~u&{@>%PjCze(Q^@1BCXbmy7>wxlkW@j(Ya{(o7TabC0Aw!FxEHTT|WJw{e&vd z@9607TRXnDZ;x?Z*doDkg%_`eUns^V?JKt2VdtwtTAjZ~ai0PqKNa1vwe-n(8P8aI zCS5Jj=VV ziT(G(JCMS>e=LZT&4gL|kH?UR?e+k<}hA^n72)ULr@L?mY1O^VJu&FNMeiQvo+sPgx)^#yBIE~}_x)sEfZ&Tm0w|}Oi{zZeXH_>!oEZ?AcWbe0$!*{{<$7{WdI*~a2_lif%u4k6GVb-M>FX`$R4$p zCU>FX=;7XpB_thF^x+r~ZGa9i%Yg{Qgv2ufN;Id=fmLFOT)7yt7wTko}F+1=!O8d@K-R=+SqP=OA~p z#{=%EYT{8?W!n`4$Cm=4hw)!C6pgr{)%gu&R;}oPZlT0Ru?`KMmMmP;6lW zBqM9ub7DwbuL~ms{>%9>jMFs*pG@lmDP`DB7$kOGG=Tv{!nkxa^%wx9coK8_asurQ zDi54t9^`O;odw`;D!zb>g9y#{CJe&uGDHS92y3Y@@MEpLMlD`yVyQ7JY=>L`NKn!Y z)&A|Cz&RA31$`V=*hf@Oj;-u7$VdfboSaKh)CwFV0S=qbYH*C68n{(7W9 zuAF%(Z?y(ar{%R5_UBYoa-oWi_jd4i3&WDP-T*%j2|N2iRqxPh1ozfYlik8(W>!fKRXTQ6DA==Se+Hvb{sNT=LX?X#h|Q%Gu z@T>{{NE?-6XTRkM)yagTyh1`cP&N-gH-Q>_24bW7aBu3=OuJ?AX(3?AA%4BF61W0d zuR-x1HD}?-QLbs!@TPA#0LG0}VI#E86G1${mzQu&`su~)!MlLbz=M!@BZIza?jRy+ zVbz@rNL3N6I{o6O3KDsFd6+>rCXtMCaRd-O>xT~?7QTf^^jmGCb`c)pqm!Cj6I}n< zL!^on=iN)lpzMErwU+9irOjCbd@6y>Bg|2F4shS_Eq?vOzA!X<{$Q<^8&V9EO&8%1 zK!ysBy~q@rFCqfBnd{FX@r@A=uwC%YbXq+gEa`6a-(E=aVYpms^_=Rz2!Mf?ymXx~ zlnbAOlOD%$h7-I|xGy&!g7wJdtouaF*50P3ni>e#eJ)=LGkl1LCDH?aTuudWWcYj> z0n^KnzEo*wQv(R@wZXIDQhoNPr=vi+e@zlwQsn%gF^e6~HF5Nxw)qrNxuLhGr*hG~ zKR`l$J~(pp1B~f^Ode(a``gC@H8dv2;P?Ed-0TEBafI4i-%gF<`m8HV&Fal)C{wmoKIKP zY#8`IbkgXZt^li%ut#4}&q zjDDDgE;g`VTbU`j$Xq8r34z!0t$0iMsLz3}@=Ahzs zJ&xEz#Q<=dbcEi~nmGf}L zncYpUxY#tYi`^%3j@JcJMnqAlM)jZfUuXXO>hi^j{f~er2|hrBWWI0~#zw5zV)VeH zx6&5Wq*tX9K#(og2j?Li-;SA*cV7FD*1e92H}5spdW45HzlNIyaq~!E^VW$21up}+ zH|$VJ=$G0CfS|>p9?PJC|Mg{RX^Ben=uw5xHHNL_Nz?=C1t1S>0i@KNiYfS;k|jD! z-FwTMD!?;X-?$-+jgsPqYmfzN1pK(?x^cb_M<584MwLF(77&HIFo{GhT(Wl)NP~H> zvxi^4eJeWD3>mD^G^wj^c(j{G-h7CJ?FV4K-Tu{{CvXtnQ+$xIIbl{)X!*@}VYFFv z?MEND>k9wB%`P@JoVA?jqs4UC|kyYI~^qzmZi-^6RA=?3%5^O_>31;GUM za?(ZQK*t&u-|Ks;do0%oP{+S_FK;DAHo(dG#%h-csWms$;!!TY3hU5mV7&OmjaB5T5_ZhMbabK zhRd$~7)7m;`<*?buRRI?Z`uP|Onq(QfEXAI8>F#lrn7!|OE5m6Rt99bNYrtx zcHdUe;0cY4fB^!&=5MvjQ;UDt>--6)`?Jp{!1X$D@}#jGo0&FPY*+e5?Ecd(BFDgN z0Pfm5J@yaq;n$?g?B+H~-#+LH%f4CT+B(3WCkmzi~faM z76g?J?GAoryiMY59PYOPShTZ8Fs<{?81667$j#+kS??p6v_LK3$0sf7r{=TBQA0SW zu_$DqWh8)9T^A(I;@hy zp&;<#jj!Bh+OIR&bAZ!amOyiDnn1XpRg3ZZy-P_DL~uYMz$GPzr1j)lJzbnekx~Cu z2uAqb}Y$n~*Uw3e>L-hE&YUn-dIRBLsAOYK(HQUGd-v z_05|p>)ozrv#RXB=)7?LNDG#{ny&%(f=|UpAQhOwLH^Ze|J|X|?#s%lHk64qyz7_`jq>Az9 zw-RD+@UUSsA7e0TMoEe8dkacf|*9~(3?+p-?z80 zyIikXM9%M~#|Jwh%jZj$NyF~|;5kA^!S+goUx}UG$=)mhnFinK2ARpCfFi~yP_cWsbfu1v+3H@8pHz0nx@{KaTfZmgW~Mx+Zl4!^O39)!pUx?c4uMq%0}N z(d+r=@5KcYCfudd*VN-T!P^9emvHrjFV*T-Ek#zpHaf`=j%5y)Tn$<(e&U7N7XAz~ z1Ev63F&XWrSms=;KL@(rk#Db-Uo1$rV3jmJcGT^x@1f2u5WU}h`NF#Vsf-sJ@oXW& zFX#lw^#6UEp7Pfu^Ox!!t!}NCUi2rYf#DLltpG^x(vEw$Bl9uW4=<{Gi2H8zE7|q+ zCY_g81d0MIQ0jgm>OfyWf*@h0Bb=;L1~0D+w|`{j=+O)Y=fjD$>Hj7pXml^K}H zg}Z+$GY68`Ob^&|iO?}1&l);0+z^$SRY|E6@ky=#bUL#GVnqTk0iu4NdCu}o^4tqU z$CL_{dha3Hx8Wd&(fo6+7hDuUR06kt-Gh{aE>YLJho}nAbp8<>)rX?FQBX&lZ`5V< zSxe*_bdkZDc7SeDe`^macXHH4(%?rB!K&7pBEW-=TJMkQ!}UtVKM+FGjl-q_KmnjV zV&?}m;7*B#{(5il1gMa}Kv3&b$$os=3n*ZQM7cU%Yt`ZW-A#+^@H+|PDGM#>EE1yD z2Ffg278d)}*@nhOyPoj+reeyRq#E#qg&RCev?lYjdaUaJ#=0ApajKjubufd9)_SMZ>58Ma%!&g)uZQvUpMJD2b-b&RMJmP)N{wOJs+vL zW(q#_`JRON7RhLAOv!^o4ju~IPA{6&*6k{2M!YbV6)Yat*zOrG??@ zZK9H!(8;j6+Ij`TG8r0N;%|gS{;O#OkH01pN`WQ5lr3Q_rx63v1&S63EFM3Ayh7!v zBwl&gVE^@zV@`~}pOl)+cH_VIS+)7|8&*1AW-BmH(}ffC!h4wQpM{x}keK=E)90ex z@y2|>1mJQe0jsi%_x8M?nM(bcfjl5(xSaMuK;%Er3QFK5bU{DYeRp~>~AJVN}$k0QcjhnF*_beQ9_gk6Ew7`8McndFgy08Q=#mI zp!VquI?0>cZ|$AN=*=R^KL}#)T(?7W|HsEXCc4dqrKI332m6&-9Bb(qNx1t2S?55_ zJj4_1H2J08^*`yf&}j$ksSY@h83{wBM*@9*ihwB-?5JVkLp;&aaN!BSOV zOH$D1omngs*DKd?Ah2lbT)NabZ-ws!&lfadP^GtF@)?H9jN78cmHv6(!4?mw=**)l z`oGp**i27v`%gVSMoyguT|C`Hhy#?~GT__9@Xp&m0e2HwfWN=>YPi|k#UK1wer*&P z9}PJw7|5t<(DF}sYM6%B9FtiU=C&DHf@}DoCf>8 zlp7har=r-%)5;lsR5~w7mp^rZ{$FCp_Y>u6ny>nSG##5q-mq0# zT2!f~O&X})`vQwg4n^h?>J>ZKjp zxX&igYPjEC9wPnDdhUvNAKGN(x3|%;LmqZfQ~M>T97Q+gshlTYNh_Q`53PjZmJPuq zK$)Nb@JH{%H_#%H1gMfAXwMHXWMV4P6v=6WBWB^ndmfDiM&pRI>6BchrG$EWai2cY5`<>d@JVMME5b z?aHd8fIvp*th|`^d}=KffhrM4YZXcb?M3R<3*$h_7g-80As115_}u<}k!>2Qz&jhF z!TagyrW;%e#F}`{H2eb_l)8ng6{PSx?U7_W5N5t_4FDN z97aMq?P$#nt-y!#%jYYd=19^h@g0ImS_!DD`w3z`d$z(}WO9+2qb@!C{&nSG9^p%l~C$5a8vNSUod%8=V<78zr+)5`+1J-BOZ-oKr;O?K6063)Z_S^9!?cXwxz+`Yla$EVe;U!pc~x05f^ zta<32^NTiUB`dhq4I|g0xsliZ(ruiMd~W~!R>;TuEh;3d1B#Z}>Mh%s;TH;sp}!X( zJ6mFYJ`dW|m=FxuKVtaF9XsB=y9(s9=MB4aB33SG(0(KQ@V(}^+)JptFqH@ml7BN} zX!NzaG_+U>VIu{N{12~W@kEl_j4%EWw0sI=tidrRWH$`8vp@Y2J2;io0QFnM^TM9# zW6FyFIqAzDiq91qZGhUd!3AY_y7VnMaQ6#f)fr8Z@1AtliyMm{DAyeaaAjrCQD(rx zgak&w-Jc@*D-p8DCoAWzJ(#kh`GfmXN{lJb0DssL+5^A{ z1vINI|4DDUe3psB!?;=pPv0K3S=A3 z#Y_Rk`5U)SMIyy(vljZS{!EpDox+paL0 z#U~`lIQC`ZA@{d`yqYy2@@GZZu=Iu8VLSXj0ALZ{gx4$aI^j8B89HDXi58}@(J9^h5w+Azu)PXXkZHU^%1bSV?aEBGctvy&o5yM8bc;(zk$rICp*FM=k+FDb`a11Xij_5%GcxK+j0Uf`j zFae$J6Il4o1zuo$Z-)zt^3A}@X+eL6vkl9&@=s?m;De(EsM7WP9aEuC=>updw-(0Y z7Odd+1hhS*Y_WkRoAlj|E1-$o_bINO;Xuy0osrt8Akb{U@eaA1f zwK>NeZQ-e_6AbboVnWX8gkh#2IHOmjtx0}6I}er2!Lvbf3r;Xq1oK#EWcOV?LefeT0N2mV)`o2G)kQTj#)02K^11Ljn z3(mkpB{2WRI5N5YtfA~s+GOZ#KM}Xl_SVeTl3PbbpsVv@TDcn9mo75;?TfbNpeSS| z!ZGB!$oMy41U8n2EvtBq)U<8jOJ28pyCCkYv^Acu0y$IUdIP3yi!1s^Pwz-wr++|T zOztF9rj~NPt&Oi&lXY0%yM|;uJSKi}`ZtI)u@6N$AYD4`?ri-Ur2t9g%-`3<0GtZ+ z*Ux5zPC${1x+M!hn#ms3dZT34D z`_dDxYBs+Pcy^nU=QwOvUkq3^b3SQyv=~t=6Q`N6Wv&YoB7eZ% z*;)L1@-h6{5y&g?pUX3gbj#T)XK&;b^TO{nFsG$W8g2690#O$a{mr32zpg>gY^%(y z#_C9c%6MG>dC?nuHwgI#`+LBt!Yv8-r*5!IPYDMXn}bOX;ZzL1+q6fGww(K~OcC+$ z@J>%nA>voAply-9KR+3a>qZ9pLKg=Wr(!q`cjH*VCPh_Mm8Y+ldWFR~{U_F;Qa4wq zpkL_(HdzZ?U@#&oFL4C8Q!M;K1s4>kbn41kcFhknjtQn_83wck!>1I TnP3S&Bd_qz99Ywfi^>$BG0glcIhks@i45CoB`D9h_W5FC7j zLsu??KYJb{C*aRjC*{X35VRq3@dI<_`VKxoG_DGdTy-5^xVk@k^&E0{cfV)z($2-= znbY%oj<2lV|COMHAZAEKURKW|4foqK&DikS(%JI#lP8Y0uZy3&W1Wb*8_4%Qw69f$ zqV{dYoq)HNyu7mkF;`WR)dOK6tVAkTUYIWR^}M%~ivQ=zRh8Du_7xB9AICX#$8kTN zJ~WyB_@v56$Gy~DbXQ5`(S0K?Y>~^RWXope`J>lNJ^FPSV#^sW5*88HA;>ArQ5-0| zB6(pXSvL4J%l!X8{=fADdYsIE?_W0uUEg`58pdYBKe|tz(~`1|svxd)=!@(NCYpNH zo|x`lrZQ~)=B5Yn{DYg!?|4UQJMH~G`?q)ky%>ke4%!!e?+JD&+$_I2^HhQA-QDUm zl+7O+iwN956~)fWHyBP1W{Ny#7=}*{)p-0;g8NSkPiD66ckg~qBWn#6{5xLKt=5d~ zV0d4!znRqUl@~01L|oK(Kx(29{4oa-xtk(Uct+UFEb<$EU462fnCV-pD0R$Ab%Pt{ z#1FB@)Bh?DZ8=sOeOdp)0Mq=ce_ik-g@AqP+W56Qh6)8K1!+pkCSByQnIYPw!CNI`f!S`+7hB&TW0iZS1<|7%FggRq zPR(;?r(!!^rg@t4X2-;dX3j5_OvzifgEXbftnP`JbqAa=cuHcNl;_RP-l_8VJqAxF zWMNJbHupa+ANr~NsqGX$`TV5|p1$Lrgr*kH%PGG$E1GXQoI!BQXe+37+k1U>oMW`t z$3@l4gj-p^{rl17m1H6ef#8boF^iiEwW=Z5nQa`c!#(-~Fh^z#gq@_^g;u|Z_n7s;$+|hLht`M`Hn8qD&Vt(qE3u_i$Z@ z-hH1oe&)2ZtXXQd2)KV@e_->&re9NWd9>>XNaQwFqo~$Tf2@4C-X(mlsiDD-p_MgX z+Yr}LW748A|C5di_v`2WIx_a zS^n7MEGNU1+)WF5)i3{{Xv}PMcm3ymep1Nwfv?48Fd?&H$%vJh-OJBp?*@W-c}>{F zYVpml#^w9%r-ujl&oUXw2D*{lbY7U>6?v1Ni@pCxuBh1SaBF5aS$_ZF`i3!GS7?WW zFemom<4^a8p<^XjSEa}1Uz^P9)1>!GNl~~-xoMx7mQlV(3aoRT6^d6JqrZ%+momzj)_@%HMeQ~pA({BdVmP<4kO#LH!Kv~ee%SbxT~2}iv`ft1nEH!QGNxkuV! z?%x|~F)Cazf6FKzwi6DIkyClCv!77%Rr9L^TZ|BH*=negti^eXt$kplih;;P2G;dq za^G-&X*ScwTnOS7z@GFbzaUa24a%bY>9LMR zNt5Y^UcULFF$#UBn>zRnfm#dtc$@orPg=gak+}YYU{)#`%XK*-{QHs20d5of(~O{$ z`y6xK^)iB)ea;sIjzc_-nq6VLt*XL#9{W-BFHF zQO#!?wWNhSGJaZ+=g;l+uNIZ{_e&CYf{3cmy`MK3JX&kft85S~7GT=_y_~?ZR%fq_ zd!?YxgkYYx9WzV+#J;}%zAS0ZRl4HJo{q2F=ge~gr*rRDe^Ica^>@p99+EL=&6jc4 zT0q!;q>c;Q9HOV9_$)^4M3_0&IUt%FQpd@_1s38RC6*3dlq>HhgYErpWaBi8JPE+& zr({6p-QrhKTe|Y+v`~!RfHf?p%9k9DU~ZUuRI@(pxi#Q=hxoAAa|Q>dFi@Dv)H_

UM%_qyDGshf*me)^CxBj_0|a|4(fwK-F8;vhU3#b>pB?rS@ZNy1V4Q~mghvz0u^!cn{Y zY}|}eFEfV_%<)CVnB@1wD?@&G&Oz?|2yy~bY3&Je>N@W=ls`#PY4^Zo`Wn*W$7&?( zi#AHVYpG0&OG=??V2R@VjR1unIaxDS!=m|OX#J&SSgCHjKk!?B;52nDyu)#6QnIWYh>EZ2ml_{8q< zXvz@{Uk64k5s4a~#clU>8-w9uu=M1Wi_atlc^N#X34xNZsvvmG^&hqDBVJoCr}#dz zt&3;Fh7*?=c&mM6Qo@0bd^KxBza#}+KbCBUlBp}ba=LwJ_0)3v-&cm(P!)5Oe#1d$ zt*)!dJ52?m{G3{6hreSzV`VKy`4bfkM8hBw{7?GU(>*@lACSxOU+Ad5r{bV0^xcO| z3*v80B(`f~XY3wjQ)>MYCr3O|Zx@cEmW=H@Q{DL&9`kDZTeYpo$FByAV@gDEdNZ!R ze?th-*3-V>+38dEovkWbkWSg>6D59aOL4`4dR}>?uxQPE9$!(}r(bT!v`Yx)Mcd-v zC;!widdHZNb*1NuVV7|49XeOAYimrZp>!;aj}>6be1-!PFHn%D?#xGxi`}w<_1I(- z`s-A@XGw}+ZZ8@$ejy%6r9qn5cD3xC5!n@0VWf;|4f(nAZvGDdJqq4#lTk3&w-=k% z7i@Ba5ywV@?k`uT_?+lb{s~2;W~{o!lTpt?_=;w_Y@r3Yv!(t1mk}1(TBGab0R1{; zVal9_KhK%Sdtk9Q%g6{!+D#`qQ`axvMupW%rwq(Lu*y1aH3`e~?QkP`s-a%};e`9| z#=P_0Ka|mh`zu7X7PHhG5T{_xT9q*qUVxiTJH0d@);aRY{Vu_^T8l@W{r;=+Fy;3m z1`Ys2baUZWM9k|R;srGjp5iiQ@l#O4RbYZ-E?m5{paF}w!EYvn`_ z&M5tv-bmEMP@_e4T(=w$(0IKceJ6fAD&Q+H@<$^q3Oo+_kZfK z5UFRMJlrsG=2!R3CqlGVS)axOfG7YXSs6VPs;y9h50!du;x-mUNlQaEb?f(^P4T5E z!756;`l3aStWv3s6edUSZ!xBqp}paczyn}6Kye%@MSG^L+g6#+La$|2Y>JaV=kozF zrQ*4G@Gu8-W7Kh?HRVv?X)3AE%h#v&uX7D|0~%19za7LCU)%{HEBvy?SPaCRMLK$& z8_`2W{oXDeMPp9nA4B0!ReYXGtNqS)&qc0|H~*lVHnr&i&kkTTtLe08TP2cSbYJ~B2w z0leLzv#aD}Y5jTjpc~07y9nOuAe%uG3mj2vAp&&xGJ^Iy8&KdE!Y(lgPes9$;{ZwF zoZSA1qfY4{`T=N@SFa#lk>l)a=BK%vH-`fIFiT}_Uxn=V9bky8PFrE)9823Fw}{^2 z8P{}FC$OTI;O=iTqHi`po@1H=?NNt3bya+|;!o>71HhdACP*-C1x$4eEH{%cgBnkU zT%n4l4oI@KGU+$ve?ZzDc%)Mv zMDzamn_7znus`<04mYbAzFtN7GZvP8GG?=%h>Cqe|253iE?Qz+#?kOwrR~`HxEqok zI474^J%0F!J@W0#Vn^ez&6JYg&N+W8z*gd{58Z?|KY^rOF!J&#E%dv6n$R@b zcz9nyJOk)m#{rqNeUWau32LD~@zH?nq^Xi=6nbtt)LPWH1NO>`9OOp%zvR7YN8tYB zVc@C;>I9wM)%Yd@6JOB+KewxhtZM+XzI~B?$15NH@>!>f`2QwmpX6aH@So>Xlv3OO z{)eOlq^SUI)VO{F?Amsi>~C4vO2xt;Y*e_sj^V4#e&pC>lz$o)1d2LpGU`vs$-^-& z(fS#;h+iKd*GGV<(c>*>=xVZtJv1kt1E9Af{QmDVYR!_#F|R$Cf_UA91-vyywC>aP z;=#K`#mPoEL8J_E4dW-xKL%vyDsN6AB`SjY3mre3=8t}4`05F)F52$`9AN>8$a+&$ z?4iZVJ^lcd-sa6IIZjhi%>gl(8$BHTY33k)ne1Z0L9q!Yi4fRNrLFsI3BD};Pn8sm zqy7Z!i8<-0QDq|s5-btVG@;(dzCENqe{z*|()G^R431sFByx{VGo>UxMShx-OpsD1 zawS7#5rK+(q(1x&W+>m2@INWZG64|bnW`^tB#koj{qL!8=82jhBE_;mu_bz2FcLsz zB*{&4H&8|;*o-)IwqB#jS)1f?DCj~AP)C)#r;N8=#`tlOr{yIW-t8{dv+tC-oMI4u zOh`bdRXr*=pQ7!a7v3;N*%Nnt?!di2+R@~rtQ}9e-j!lKpds}4SN3<&@@fXw;X+N9 zZ<82krD;v*m-liQoR_$JL3UL50_q`=0)TdRn=)9Ct@L{3XMA6Kpr-*gLi!CEM1f0z zK$Jul<}W!qx^b2FCd&UYC;?jlG)+Xop#C{231RS6wkO=*_gA=8G@SQZuOv)HZ0qjN z4Q=Sf2R{~K0whCwfxpc*=>W;(VaW(kbNKHSmMsNrOk_d5S|7bbXx(3eq6Kn#H2?Gc ze<6EG3wlxbdFd6|Im};>FSN+6tRnrk3kM|dEW$SJ0RqD6n!HZ=HsL1l0G1p8S`(rn zw2%(RWRpps_sbdv7F{6O+K+)^OeL};1yKGrfX<5^5kop9wa;q)Q@rrMf%87Bu`37b zW8Vou^dVrK8lHjen<5KKW(y|3n9q_gCrcq)1>Z(Xmw+Mw5E)1$^yeFQE+5-sASMG# z4#pPq)G)vx-iI3`B9bWocwX&7Krum40jcZ0?xXq-_gd42G_sqWOXJ>90!)VTIYF%v z$t^q{73&4wm@Tn^x)}3e8c}d3`1bT~+h5MrIBLkBrpR$3%Y$G##itVqo{Z`zsi@e4 zwR)OAmt6fsBM|N+(NXBd?Z^mq6>*YX5xa$Kbrv){tG+=Zg^kS%y{r@&=37e%gEZJU zlzn$2mbg^~bta2`zMiRO;H;6bC{*gyA@uTK^}Nr!F)DX!)-u{s3tl`#t}`xDKzGsa zrlbc|i4^msuv%W{4?hW282g$%cHlJmOl423%;I9*5;p1(cZkRQCDwU9SjcZJn0wHr z^XPCSd2b|n2PIVc4FOqQQou?))uZ7@@6#QB2_>A(E$H&cQ|<&SdQtL%O09G78s-sTIYx@-`n^-AkC$@=E?Bo6YAbbp<0 z3)y9?5l@m+@Y4{rBHE>}j^l-n;~ZDKT;>H1&3IPBB|jM$XhBitZ0vg0l2eJ-{Vlff z%LY_;D)q!?i)&|eQ3p#W&>)wr>{_Pdh;Uq?*2dZXwaDN6qjEc!m-f%+INMRJ+D3Ng z`WaTsR`pEEZ>~{r<5Lb$vNICFM3AK!cE;LL<#hV~$HD%jmXVCh)+X+u>EQ(^#4Ja* z9P1&aEh6?d}4PD`z_OrA8G65^nwOoeQH zwoQ46ovpL)6k!_>Sj(KrkhU|BeE4^Nq)7V`lq**`U~OH}^g_B1-txh+)8JUmU@|HW z$$8RbXIQ_jRLi2S1{@AFsa$kkleUL;N=F<8y}YuwsZ?J4Rr=G>W3Qx4stAz@ME`yv z-WHK?lK10WUi<6tNOguSG0k;okS@oK$C(T@1r_{A*(^yrjT89z_By^Z2Jpo!#;7OEPV?x2IJ zI61)hY_w)6maj4hmUF~_J;or_VaohdOdlCO*qtoV=m(qYv->>6CB})c%P~M={kwTz zv~#{7RLaP?1g02)1ysNS{F?@Qr4{r*{ADG|{egJ4!{Z_i51n&WN&ktR+<@cI%bj^y zF@*PTge!l$y}i(8C!Uj?O%DIyRCzAoc<9?bvuEi)pw`zxVL!UCitWvK%r?^>CEZ$< z+(05TZ}t~t8}Xa$wHAANA8tpMD+~JA-kv#jhi1Wo(;6jP|Dg%hH9L<(9mT5S06qFC ziaCvD{QmQ@Ou8Vix!`&BqqDCseUD&c`oR%5nhTqJ%ZukiHY*suh%H}}*%>*jWqCw} znmi?r$au%W@!4AdGX4iO+4J_eQEhwva5Cy?`tAUf+@yKon#5Z%573^n-s}}a{snIu zd{`@S@=$({H2xU(zVjww+vA}DObg1+$6dkx6douX$+R|aC^zVHqlMUY8F^D%M6_FP z%(5>8kxpGNu|P6kbzoO+${Lh1d^&wQ{=Hnhf8(} zBtUe;Fqc^sxocBOhbL*XW6r-$Ofumy3DlY}$DlH5`iFXdcLghd8-5E8Z~e%(Fyk9M z(}E|Z9ylf&(QlW^sT43z45^QW4Qn&<(mwf;gc)<*EP%SKhBsdB64`vQQNIeYyY88u zBbxCIeMhWdkzAVLDOq>h^#L>H6-h1Bdzs1lk5cV0w0a#i)nNDT$zSCV-N6bnN0$D3yt7&JU1I7g7!9&^3cy|J-@Y~!I7~^(ZOOt` z?_k|)ZU4BW^|*3;THx0yCp3-MwO4ZbIhg!oeCO?ZrnGtDgr`&Whq}-L_ak%hz+u%h zoIX4cHl^Y}&9SdG&y{kyx{vOOt$5&Tl>hKR6~h-#Sy|dAH|(s_%;dW204yL#jtc@? z@QYwaE#s#uwuZ(kNVQZ+BIy!OC>fq6La#b_lv%r@Ku%^0)*<^}D>8U7s96iZ~l;aw8 z&CJE&Q8|EoH1lhR%FWuB>M~-sqAg_^tr`ZJ!8ees zHa-g3U$kF#t(2WV%h{%?L`v`{s5tBBRqRlKJ`s@S=)U42_jnO(HieLaOCE+fUnR^^ zTas@PO2U-}KnBqF;9_dWOuV;OYNfxx*t9P^g032s_F!Udf{$WyRX>KNhY+O*6H#5o zF~$B7$nb2B6ZE^-eoG~eM_U4H&!^QMTSe%dEP~n~7LD@H@!0J|Q7M9wg_u5tA{or} zq}TZL%tEj&2J=$B9kHW$V-g59)|jodOIwM<#0oLZKd5!#$pOoZ=!f=7vh3-{y8vRz z5VMFdN5a3jD=QV|q0gTrXEb|;Tx01`btyQCiUtcQhVs98#h}qRR(Jp$IE-uFfB87A zYq$Q>{IMVZLQ8`F9ZwYED^f#x*ezn@PpKctQi(8d@I4#NtJGAUh1WtDCX7;V5%Byx zzTp6h>Z< zrh^$2)TZCIOYeD2cW4LT1XuD4UlrlE^ML0m5VInUnckT|`G9~QU)LK&`}$~Pe^`Iv zKL~XSB6NVdBE~3#kHn2hmjb&VV#Rgk_LRyXk;-j`Ur`(moDf7kba5A8wb<|9KmHP2 z-7VgPgT@RV0%aDICbRkmgSI%j@6bQD4)*iS!N{z z%P0rLKFec@b+Qfu=UA2I3bf)Z2G9THi74SBRi5XfOe8+Stfo30DeT-V|M*{VZLv+4 zT9#J$Op>CenxJFsGgaoC;EsrnckL07c+pnIHNeFrk*zA1tO$W^ZOJ(53QH$Jpkig< z?H1ivUlDcB7>XD-z}PAUsCV4c z31!ltS4GJI4QqMLJEBQM*v6mx$r?F{>B4R9i`bG$FFJ}}wGTsH)AO3gR57qzNG=e* zGl3959d#!_X8hP~V^NE%?02HCPub*v(rq8ECY;~hRodN?o)dyta zQ13LfS0h_MZ}$Z#QL~)R6(|mAly^Wrs7fa8yGu*&z_j))gVcIg?`SZ|KBNnUY$ZYU z`{fvIT=UPV7%4f-c#_>6Bb_mv>K=@=YWd+7q5c6B!K>~B>6Et(WEr}&){gXgYgQhG zQ(?Y}7F-j#R|l*j3WhqHLEK$b#T<{$briT}K+i%4)OHpepRRN@xJTRkOC3&+(JqpGg{NMLPy3rH2$Lq zXVIQvo$8|0ls13Jb^i&Dce(CWBbPc2K;jesS~%h;u5v)dg^Tn(+Uay|T7S@tw+e;x zs^z)+JSx3KmfBj02s-#0pnkR2lu+?w9GUYVlm|oq#O_D|eYSH9TBJ90A(t5S4edSY z>5|rH2PN4sp?nF3@jqOD9Qe62c>1J;v}bth*yzpTj?nmHG0$r^CZggVM?k#+(yzjL z-($eG&NY5MXuT2fs9magP$OUKU5DW}pX2%5-Y0&UJOokmOIbu~nV16Ac+h5*nWV9K zRbJlhD?#sZ7u0Zo9Pb=G4vfDNVwU?osSJd`F6ak6CBqr6yEtlnAqVf&c3lqf6cs@$D?FB+V;ZIM?wWD`yfwLuJ zU5)Fz5~zP^0K=TlmS<7hsX>*U%{&+MGP*52D;JQmmC$$wr|S26gJb@bkTa$JIbr%h zR-xP@8ZSP-Q%d$+_Gq9s=nTY|BXId+XTD$i3HK$^L-wSOrB)jR8#;7 zf2gZdUHN2yz0^%D8h$`~W0}S^0`DR_cS|l3$BnvveVKo8w5^-2R=(Y zf5mNfE(w~ae7cgkOPS3N+dW!v99SmYpO@By{c9W zs2?BFACdo9cUN-;YwnT+Uf`uvBX*m3Pr*T|%%WzFKyW1~X}ryIP9)6PdY;)P zTHh7so!rEjmtnj8V{=9{uBRrrp*|RuuF;PJTc9 zyjpeO*E8{}{P#*grSO*v+2Ea?HRv~3F45{h0w9_i>~8svTN zc{kV69hKZSCdRBv{Mv$dx5mcUwt5l$uu) zILajlB-HUktOwy)l#!ZQL9^x=3;AgtxVF%4By4)i1TTt^wG>D4m+6CA;j5ufoIbpn zhm=QSL^yg1zQm^D!|Hfyk%+-rfN4a)DO{37gIZ~Mqh|Zhms8p?&MK}Rs!!L(rPsrK z0e({NbQ&v6OHkcAx{2uN2YZ(toB;>k(VoW;Vv*5h&r~6o`=2(q5?Zw{D}tuo94DsN zq<%}k$Y;rH;ukv+IB;%DfW-3j?HuVX0sZ_zqcYdixI2t)+N}d_5!8nG^CelGGQvtF zYjc?AQ%N=R?e+c`N-uHj1nbw&PLUj2k$^*gS~J2&~rM<&w{eQL$(j*ZX@ObDQBjHZK!5v1;ba~wT++r)(EqY( zH5nBs3hrZE(uIq}vdEpA{`tn_PO0{XMg8jR5m0~}DHFxZ>VH#}f|EYsJ5T0Brkz84 zSi|_0e+F#GkIf2)#HGx|kz#M*F#_O?e>oBwGh+jTs`0zTtPY9D60z5&3*^O4Fu8M2 zaO%&Qf9coH2+72Lp`9fWRlD1qKI6LB?+$JHB*)7)5zL**6i%9P%B6m0iH2@&WGyv) zy3Td6oxj^?z;ke$V>vEV5?6hRRve^>B!v&`n+iHks_s%lKW=qPpsD7|8YOh@AQkoS z3oYGdC%31x2Nl4bHeS{k$G$GzZTjwV*TZ@H2b@02=+Oo*nnxo>u4O0Z3sX8;9~lrP ziZCbT^?artWBg+(z}86PmHS|tiH3Uz7QZH!u=PC^s?180a_5+AV6eS7((5gJmOB5^ z4hvG!CP?p*{W1&vLyw(WT7*4KjHmXq=CGSSA-6D{;8xt|(a)QD^}DA#9z|U7sUHgF zL>2uqf77!`G^%EGoN^Qc-gFbu`b_<*Wwc7}i+0^b`}iUgFC$G)^k2Z&)Tnoe5v|Tk zt)@cv#5D6d$fmTND6~0J7ImCMad$dz;F22IbN%(<*qcQ(zu{7|W1h6mFK&tVsZIb;OB+=ncJ9XCF}cM7>#0R3|&m zB+-Q%0N9HE0L{KlrdUZAiJNQBQ0>`0jwLztLT2#qq)@Dg1>^Y`P>}jHUHI=&Ta_=x z3CF;ui#f6i%)<}0-92p655)FOwn#ZS#>w6!S|fN_2SuGXI880}jGl>yGW;>+ z^iWm5>I%$ECPhLof;a;{+0+0ID{UzrYN8?+#uOLEJ*85$wiQEQZ{a)+!0~ob13B)` z7U^-A6BY!cE`0b!ZvHZM&z5B%@nR)(cKNUp&%~8$fz_X~p{E+X0Zq0(i@xYlkbUF4 zobR-UOCbAFhoV7!~F6cN}+hNj^(-oC6awf%Z~gyVB0+&`mxJwZm` zK<|V+&TuwoQ zN5~M#M6>ToUBONT1#M(G5+vyV`1{P{xPX5ldin#@8rD(QoYlrK)3d>0HL|miZi9-L z(wM8Y))@khs7<$gN4*mQaOP3`C}+S69}gZ(#*QX}QtgLDMi_DRYc4zTV?v6mqhC3W z!wH3e3@#M#StLR~1ZQK5xpDHgq(?=Kx6NDzJbz5GQMq$b>cX|1WxcyFKVD5~gR3Ht z&Mh4HN^PefC3ntwlOb*|S?^zac2TlmeC%x$l&k1^NQ&bONJwWLB$1>tb67}nVE^Kp z{3wiZTQ5z0thBVLav-yK?;QaoPUcX!e}c+zfP>)?#A zW!mG!4AUDX<^WkAp+~*Ee~+UUnhtsN@j){yxS#-=Y>0UjbmWE3$3pZ|Jt|JeRC8ZE zE^1Vb8{6;s&}lR!N#(x(Vm_}E~Ij@~Z|G5#sa8#jygQq&fr1>U~h$by*TX$gA@RDbK`r|)h~1AHCM zo3lyp3$hPolkkkDLsUzu`QO4=QX`-gs+lJ3ZDFah*35|nnQB%lzn{9itxuRhXYYqx zM%aEz6O*}ajQg|#`W)ZTkU+9>4+-%*u<61(luH8(_~p($Zn4y4?CJdyZ{iH7a1B$< z{PgIYTJF3H$i4b-Jb)>iJ=kP)2iE5;2x{gHdp67;Wnb;a81F<2v$n=azj_Pz|0Ob= zAj7qXN^?Mw7$JkzFVL_;&t8I%*{PyEecId$#NNRDjYYjwTdA>&r|1^3XBJGo5jN!% z95^AI*;(FK&0~RuX!;Kja}w>$xl0OeM%QM-o@w)Pu2VTr`6dGzvr#U%&dM&Mstv_F z`9Wlt@M}*6;mZwZl&nfIbJJQlI%C&#O548-_-;)7b!KW3pjkWj!Sh?%4tni}#&GTLkKzY58~W7EVvloRI-n^JXKq&h`1T7&dZ=Di{9hcp-wCQ?m6==FdK}o3C1t^$sir$zI<~r=`ngG`_A5T(^nr<%TNEs zarlEf?;_kO9!7uin6y4Pf-So8pUta#>ldnz zM+K6Ft-nD|Z)+moU8v3s4yszOvBuI$ANf*!C9RFmB5FIjt1snLskZ^}5gf!pPV}Yk z&t<2-n#G%`+ADpzo7|=Q>SVKM?;Ysdz;r_4pnFucd@IN>qx`{)?36Yyk#>$|P~G{P zz~|+aU<7V30>4V`2`iH}XS2eb{P@VVuZidug7*$ut~Lh(+YHLb)@*MsNFE69gsWf8 zjSZD#EyySz;=%L-{XlP~mE>CkqZWRCmugQF(8L`1{i;A=0uz<#-YysboX$fp&?Uvr z-68sWf2-0jiSaLBLK{K9T-zTsQlRP)qeDUuW^Hqk>gdYEQ*+Jjac{lz#BiWIKTy6` z7Qav$HikDuoV}jXPNNu8+nG74LpL5hyck;n1}zoo>&|;K>HKIIaHC+C@5@6sZF=uq z?zniruZ{ugYSd{#GksS7(MH}QU;A|-NhR0%NLcTD<+aZ-5ku=0Xi#>WQkbjx;1IRP z$2zFuT+OjrW2V2oxC!`P7s%*?Hhn5WJf4}zFBY}&3lGL0HZpA z!9;OwzBIJKBjIl|!n-o)+HT02zRd-HNd)n@v z&UPZ`B_O(h`v;%rpOhHQ5d4wt?4a_0Tlh&UZ|1Z7^cDqhk#Pc6Kf#_lsi1!{j znf65Mf%`LYNNo$_yqU&F(_J>ee;UC52Gm03^;%!PaQ$Y$-Pd{K)r8(W%U?i%GY~)$ zpc_Gl<#7{uo8|mVaR$sy8`bFMgNv}}2me&_F6E8*=*hV!dQZ|qTvbzk|2h@sOnj%) za54%m0*>^-A)+o^5&6bNUv%?=KBr%HVnjg7v0MFW&;K3;2EMWvS5;!=HuGA|EIeY8 z26WjUT#A(Wo*as^H93%?LVG(Xt^Rwl)7%N~@j;*jfrGLTVor=mO*(U@vbAI7$zjrF z3GzxrGaVUna!hCt%_6`6VL^2mv(M`T3s&~3%vXI=1f=tZ)}?L1@bg&^DEHJQO1G*G zi?t@K#J_+1wl9m=#9JZMOrHS(&})SrKQ$NfJ94I4UkCZKIg{j=5ROW4D1bRpfVt(` zrtZD_d#@e+ZT!{d}A znefeFe=ZmE{hwW&O4Qn`4f&H?tHZ~;5)2oU;xbIf zfE==1!YruyjpQd&V;C+`mnixVV18;NaYNeHkW z_Z_IbQF*K=H`FMw*mC56ZpIttK4^C{hd{9fL9MdQIPiaLS%)0px5&S62=agP|3Ch} d^}`AQzH-`bxD=*H0~P^NQP7Ytd+;>ye*qro^k@J8 literal 0 HcmV?d00001 diff --git a/assets/jira_avatar.png b/assets/jira_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..3eb5521822a123f7628989ced728560839ea0b71 GIT binary patch literal 12453 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 literal 0 HcmV?d00001 diff --git a/assets/src/feeds_avatar.svg b/assets/src/feeds_avatar.svg new file mode 100644 index 00000000..2df89ecb --- /dev/null +++ b/assets/src/feeds_avatar.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + diff --git a/assets/src/figma_avatar.svg b/assets/src/figma_avatar.svg new file mode 100644 index 00000000..104a181b --- /dev/null +++ b/assets/src/figma_avatar.svg @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/src/github_avatar.svg b/assets/src/github_avatar.svg new file mode 100644 index 00000000..64f54b36 --- /dev/null +++ b/assets/src/github_avatar.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + diff --git a/assets/src/gitlab_avatar.svg b/assets/src/gitlab_avatar.svg new file mode 100644 index 00000000..c9682f63 --- /dev/null +++ b/assets/src/gitlab_avatar.svg @@ -0,0 +1,74 @@ + + + + + + + + + + + diff --git a/assets/src/jira_avatar.svg b/assets/src/jira_avatar.svg new file mode 100644 index 00000000..da9bfc17 --- /dev/null +++ b/assets/src/jira_avatar.svg @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + diff --git a/assets/src/webhooks_avatar.svg b/assets/src/webhooks_avatar.svg new file mode 100644 index 00000000..c41d74d4 --- /dev/null +++ b/assets/src/webhooks_avatar.svg @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + + + + + + diff --git a/assets/webhooks_avatar.png b/assets/webhooks_avatar.png new file mode 100644 index 0000000000000000000000000000000000000000..71286e6aa0dc825b44a138f8e6376f3af707d160 GIT binary patch literal 26118 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 { + log.debug(`Ensuring profile for ${botUser.userId} is updated`); + + let profile: { + avatar_url?: string, + displayname?: string, + }; + try { + profile = await botUser.intent.underlyingClient.getUserProfile(botUser.userId); + } catch (e) { + log.error(`Failed to get user profile for ${botUser.userId}:`, e); + profile = {}; + } + + // Update display name if necessary + if (botUser.displayname && profile.displayname !== botUser.displayname) { try { - profile = await botUser.intent.underlyingClient.getUserProfile(botUser.userId); - } catch { - profile = {} - } - if (botUser.avatar && profile.avatar_url !== botUser.avatar) { - log.info(`Setting avatar for "${botUser.userId}" to ${botUser.avatar}`); - await botUser.intent.underlyingClient.setAvatarUrl(botUser.avatar); - } - if (botUser.displayname && profile.displayname !== botUser.displayname) { - log.info(`Setting displayname for "${botUser.userId}" to ${botUser.displayname}`); await botUser.intent.underlyingClient.setDisplayName(botUser.displayname); + log.info(`Updated displayname for "${botUser.userId}" to ${botUser.displayname}`); + } catch (e) { + log.error(`Failed to set displayname for ${botUser.userId}:`, e); } } + + if (!botUser.avatar) { + // Unset any avatar + if (profile.avatar_url) { + await botUser.intent.underlyingClient.setAvatarUrl(''); + log.info(`Removed avatar for "${botUser.userId}"`); + } + + return; + } + + if (botUser.avatar.startsWith("mxc://")) { + // Configured avatar is a Matrix content URL + if (profile.avatar_url === botUser.avatar) { + // Avatar is current, no need to update + log.debug(`Avatar for ${botUser.userId} is already updated`); + return; + } + + try { + await botUser.intent.underlyingClient.setAvatarUrl(botUser.avatar); + log.info(`Updated avatar for ${botUser.userId} to ${botUser.avatar}`); + } catch (e) { + log.error(`Failed to set avatar for ${botUser.userId}:`, e); + } + + return; + } + + // Otherwise assume configured avatar is a file path + let avatarImage: { + image: Buffer, + contentType: string, + }; + try { + const contentType = mime.getType(botUser.avatar); + if (!contentType) { + throw new Error("Could not determine content type"); + } + // File path + avatarImage = { + image: await fs.readFile(botUser.avatar), + contentType, + }; + } catch (e) { + log.error(`Failed to load avatar at ${botUser.avatar}:`, e); + return; + } + + // Determine if an avatar update is needed + if (profile.avatar_url) { + try { + const res = await axios.get( + botUser.intent.underlyingClient.mxcToHttp(profile.avatar_url), + { responseType: "arraybuffer" }, + ); + const currentAvatarImage = { + image: Buffer.from(res.data), + contentType: res.headers["content-type"], + }; + if ( + currentAvatarImage.image.equals(avatarImage.image) + && currentAvatarImage.contentType === avatarImage.contentType + ) { + // Avatar is current, no need to update + log.debug(`Avatar for ${botUser.userId} is already updated`); + return; + } + } catch (e) { + log.error(`Failed to get current avatar image for ${botUser.userId}:`, e); + } + } + + // Update the avatar + try { + const uploadedAvatarMxcUrl = await botUser.intent.underlyingClient.uploadContent( + avatarImage.image, + avatarImage.contentType, + ); + await botUser.intent.underlyingClient.setAvatarUrl(uploadedAvatarMxcUrl); + log.info(`Updated avatar for ${botUser.userId} to ${uploadedAvatarMxcUrl}`); + } catch (e) { + log.error(`Failed to set avatar for ${botUser.userId}:`, e); + } } private async getJoinedRooms(): Promise { diff --git a/src/config/Defaults.ts b/src/config/Defaults.ts index 09a3d2ae..cb1f4692 100644 --- a/src/config/Defaults.ts +++ b/src/config/Defaults.ts @@ -53,7 +53,7 @@ export const DefaultConfigRoot: BridgeConfigRoot = { { localpart: "feeds", displayname: "Feeds", - avatar: "mxc://half-shot.uk/2876e89ccade4cb615e210c458e2a7a6883fe17d", + avatar: "./assets/feeds_avatar.png", prefix: "!feeds", service: "feeds", },