From 2c3d691f27260d7a096c5e84b36cd1cf7bdde500 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A5=D0=B0=D0=BB=D0=B8=D0=BC=D0=BE=D0=B2=20=D0=A0=D1=83?= =?UTF-8?q?=D1=81=D1=82=D0=B0=D0=BC?= Date: Mon, 20 Apr 2026 22:28:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5=20=D1=87=D0=B0=D1=82=D0=B0=20=D0=B8=D0=B7=20=D0=BA=D1=8D?= =?UTF-8?q?=D1=88=D0=B0=20=D0=BF=D1=80=D0=B8=20=D1=83=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BD=D0=B0=20=D0=B1=D1=8D=D0=BA?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../8.5/executionHistory/executionHistory.bin | Bin 8881188 -> 8881188 bytes .../executionHistory/executionHistory.lock | Bin 17 -> 17 bytes .../.gradle/8.5/fileHashes/fileHashes.bin | Bin 738922 -> 739272 bytes .../.gradle/8.5/fileHashes/fileHashes.lock | Bin 17 -> 17 bytes .../8.5/fileHashes/resourceHashesCache.bin | Bin 724266 -> 726850 bytes .../buildOutputCleanup.lock | Bin 17 -> 17 bytes .../buildOutputCleanup/outputFiles.bin | Bin 1239245 -> 1239461 bytes .../chats/data/remote/signalr/ChatEvent.kt | 1 + .../data/remote/signalr/ChatHubClient.kt | 5 ++ .../data/repository/ChatRepositoryImpl.kt | 12 +++++ .../data/signalr/MessageSignalRHandler.kt | 45 ++++++++---------- client-mobile/chats/di/ChatModule.kt | 5 +- 12 files changed, 42 insertions(+), 26 deletions(-) diff --git a/client-mobile/.gradle/8.5/executionHistory/executionHistory.bin b/client-mobile/.gradle/8.5/executionHistory/executionHistory.bin index 829e6cb7379510c5071bd4f17d68109a0d12e59e..4ae171ba4e889c1bde42b4eaf70ba9f14cd14aff 100644 GIT binary patch delta 48861 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 delta 46334 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]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ξhxN9?94n{$Nfuvp7v|!KlSwh z48XDju=N_0zZe}@8m-w=Ii;J!5n)Z2$0M({G>UuZgw7i0vfx~rtti&0HC6MI((h@p z=6&mSn<@hmdgYfL8ufd9L%DAwxWs7ovy}#JltO%#rb7Pq^XuTKUE^AAFKl?Fs;u%d z$!ypRrCFK@HjBIDo^A4R-1*ZZ^BdW9-zFAg!&hcox~ao4VZaK_pYX+6@er_D!)tjY z3?Lu~64&rOlsipQb!#*?X>JM3I0c(?H60mL3b#b)3K-{cTDk*x60|r60@q-Jq~~dx z8*B+o7sKuv-aJw!9Ldw{)fMeV@F$5vlN*|=*x8wq#}VX%!nT|&dfI8tiqyR=Wxd)z zqe4X`!mHbwPVEDe#!(GhGFRvi2iX6H=={kAx{a=OlpmT9Td%|E#iz+CZXbB?;Zh~< zj*0NO6%M_xcNi8m6B^xN5fcKOpjVaVX)H#nQ2(yxVHTI_K;!oLJx%=jOp>^uvk#15 z=Z|}!X#sFw^Yovk;KS_V$uQy}Zvq=Q@{o6Z2P!yyI7={ir1?W<G}4REv%HNl}Faurp6~~e(ZZ}3b`iweX@lFH!TgBhC)|Z-A&8i5{29- zfNwO6=>aHgWri#Pl5Ur0P7LL6)b~06eKX*{VFWc03bXMvW5@GwW~ z9o~h)fRE=roG(9?aJ$0=lXY4(ther?L5tlFFJ2=AZ_@gq z143Ql{vB>`1y%3JDz0ZbEEc3;a0TLl$KSeWC49U~|C9bs8uRLjl9 z3EgY8f>}$2P>WdCX^j@}fBd*Rlm~N!p5L_cu^dU`;Gskt*ERL5hF*4k{M3|J7wth3 zVXjnrs@q>O?UbPzceqfDr7`o;zJ+~X3}IN%N52evYO`^_l{p9KbNAF{H!eh9%TT=E zKrDUf?C%%Cma`j1tfiwF8G#Zhs1QKu4%9XA0X6#)MQ$%`HkIHV6!sH0Ru_mUdTJu4 zq&Lq>D23Hs37ZGry}6w%h$jF;r}$9@;Y@FB9^3B$hJ87M4R{cMkKhSVQMWtTm+K9q zbLf|ZEu&b6Z9kr7P3O>lgbk!~=y`;NKyE*7U^-kNppXSxSlQ7-eTgG{K!2_TV-ls< z_=$wsumd*qg9#f3XGo+i9&+I|U=+vx_FnTv#}*rgB!Xe{KMgW+%=TzuOR zmJT(iv3HCiEDsVE@;uCh3|;iT&mtL{FMyh_HTl$Eh-ghj@!-U95$9a^J7O3TF{f^H zGQOO!<$NnF9ABi(ryfUkFG3-trfV;g$UkiOQfHDGH)Lq<-LXS1pE>w_ad%vb7uvdy z)xS}As=@1lBl5?uo9RFEdurHH?Sy|rRslVhX^)nVkA9uKbXbdNiY+G>&MLY2UR>il z!66JS$!A@Qy>AjZS-ENbM#+HG$w$Q0>B6gJ+M6WuojnR?ywFK_={R=&)wj+EG2+KO zxu|5=T7p%7Bum=@s+McBx5eWGy%pNC{tFU#pXWPs(vTnge)~FkMtMferj~~B64AOR zq;A`*T(^GhfZ{Ww2iQS)a&mMW=Fl=bS38mXtRDo)cJ4BxS; z#Fduc1oGe*9{Kve;}f(q4N*%95*1PEI@ph?n4x`8O+YXx-*bu*R0J%e{b}xd-cb8! zhPyymAlpe}{Nw{qi=cx$SHc#9_Xn=Y1L6r-1f>MzvzdXJT}8gI!$&Tk!%uXC(2v^T z%zcZY1L9kCJTVV0unSqnUpcmpu8w*VmI!6+B54d^;jri{*X|7m2?&6f1SGSINX&3D z_z_SD^9T^nQ!BnP{rK_KC!FllWrdXt1$;16fFCtou}X%iQPWqH$^IT@8uzlmpkjBO zY%eu%dK2^)zUjy;;IT~h30r?GnCRj0G?JK0o-|fKv^Dd>(%}V0>I8p%nTr9U!NMX- z8NW8zUGTJ$J!6i|3UVs?Su^wK+=pAUOyL^O?p4B8BI9v0x~oE^wT$^aIEVP!%9sy` z?gT-0Ca)sSzfRg3S?}&kb%7P%L1?_8!ZqD}Tud#<5)g5Z=6kXRORi7uAXG z4!-bUA5qnsC$kXt{2;T(+QzQ)U>@%>Be@8;q%sBAf%>I#vOB~Q-~qnfHLc)ustnEH ztXi3hkKv;ehL^7#r*$k~#JursD>^tC0qgx$c*CZ#I;ZB3!+?@vQ^LYiKZ%@EvDC9uWXxP3Tmx1c}GPYtxfXhO3 zJyZ*1xDNbXngx7WAY@(H-fO z&Ps`xDxKveX%tj1=D=U2;~60rD-NVnr3;9mp$M^8;$1)VQzc7ysu|a4T zMDE}<*#`0nmUSw16+(g6~dQvJAHX;?CP2Dwg0kkE{2|rsF0e^(ibm z$=uH4OeAf%0LNvAagY0ZZWzFmi5a(*$T#nltd?y;+#t4s=O&%S*}{=B984~83if+; zlQj4eFIplMO`k3&EJY&n`p~YsoLKzTEc`lbEwS`rcOlpaOaXTSrn8Gb_@@0bS1}d} zk&Km%?i~Ax7Xzy?6^SuK)T0SSd4-E)(RC*kVPo);47ORy6&c?Vc)*lnIEhyMB1>m` zLcAP%L&l=lqWUJzP|+D97l&@hdSed?f{8b=`VQXUeV1db4r1wG+UgdwhtIGiw^$Jf zK#w2EsIdv<&2$#n`f8X7Nw;J=Y>Hk5iz<16m%~8{P`!)!1Dv=X-iqa4IT9(RtBnn1q9zxa4jWG4RCYW?Wx@1#nGTzUn!zbdMIa1565tDVIyx-U)RSf# z4_%#x^%0#;C7RxlYsJflY$v*&unuszA=ferY6uufebrsTxr51Hiz3VqY))fftq?KH zmUzH|-yUJ>E zun?k0(~w4QIk7myGY_;;OPDX{TXQ`L;7-6yh$6rl3JEBnK2&YZO~g_EQYty7qQ+Jc z)`d7z2rDFPH(~j3PRT7TgKq?sfQt>MjHJkFybV`5kE)~;F)Twn>K}4yh$>>)3?E6d zfGTXJtxj9O|FOQ)SHR$~FLMloc)JJ=&2_r42`@yz7ZRs*P^Y*6;4u=rob2n&4UHf} z;@MI%61j>`ThM3NN!Vlv?SU@+1HyVjoioqAJ2<&;z!Sm=aHc6>s|#1s10(~m#w!WK zbKkD0#H1}x`zicjXEa=#o_wVHl%jSFQ>P z%ck2smkApP&s@d)vX5j43*2-DOWFS$%TVi8I%qxUp<^yw?WSYPcC``Uz{+dUgIOYs z4a!gftAV@u!}%*PSk()KVteV_W4j=02=C9$G@--Ht^IlR&ZFw>Oi}tuB;wK}-gRoB zL-$ooy>*x)>m#)G)|uFfK@_?wi{V9$0Srl^J5AUs_#DISj0M$R%w?ZxoM{L<-p2by zgkdOQ8lPqclX<+_#J&x2i&A$%)q0%8jHm0cql&ZavN0tIDAq=movddq)2}_{G`Vq%Uq{6opof>xTA-X{9 zzLK6f7^Ujqh4c~$l|r8mbUaeI$?ob_<$s$a8i{DK6Z8D>wjN<6us@ZTVHQ*qUhtqb))ze##+Kl(tGYK0{Sa*golV?ce9Fno=#TN=)>1ES5;vEQOYw(!ZFQ91`r>6tYzY}H@ zrKaUiRJ)Zd?rCM&s9AG|&>w~$Nm;snmsPc;I#G!INykzXHyUH8FgElZz0wOThd8Cx zD6y+lA@(;G?7-~3h}lKXGDfhwsPj(i|2OMaH+1wn$eWFCdOpl?{rUAB?ACgHTBjrW zy+iq>7E7~Ro%8d5p4@&{vnEf@SKh#q^1U#GU6)$HLK9t9v;C?3<}?c&Kq6NDa;Qwg zwtPWYI*msgQ=W!b{Mqfl!Gz)SF^2s>SOR-hrhq+!DcKljZMlx_Rw&H4f-$fipV)#A zVe>MV<|-h85Zu4A6R7QkdC)>}m#|2vn1gvTH|I(=Koq;C*qg9qy0kcpF#PL8>}|y+ z!n(1W{|dNCmXh!!TrxME!cKwVMq8S_@Aee=@7-a$2 zG|**xGco?8Hy=DDIKM_V&}C0$;;3egXlco7z%2&B9+W}hMRXvgVadr3^p>(6VWRgk zhOj7ho0&fpaxv4jg0n;ofxAdWMZI9NE0)Mn&K2#Ul`)L45IU?}PS_~eBvu$+M>nZkHRK8k*_8mMH;%oNRKQ{)=h1=kA;N}$Ne@hWMcDA{6WE?j6kNU;Wnc(l zxRNqgHI=X)kf-3fgWw_oePA1VJJZOD%i<&CA*gmBVQI9VN+N6(Ig~pHD}b|BT$3+* z;Guv9jhF(TVDc>csJ3NLNfn3+$)OzaJ%k-`-!RYT4G& zM}#K#vbw%?QZvC~R3VpiZFIQ1MQzkBoyTJqUvnPt-TWbz+Gfiv55XkPe$C0|_d~nC zKkz&A@^(S51O2^r_FQt)^v#xMtuW9hX71;vC>!5Aw|35Ezqm`~ArZ-Ut>RPDu!*%b z>z$5#c-;Q>BD*s`FIXU^rhsY{el@{BC@8$>eCg+xkC#Nq2f7xCsh&{w3j6Vq316o) z-BuH0q%*R(_tvW4#8gLiy+$D)uWJ(4DB{-L-qE*Td^ow-T}(~o!%uGbVEc$AB{RB? zzSg7O%G}KcV(K=&vy?A6ac)og1^d&Ecj_gY)YOxSsrGzxFYj{s^f;GOQ`=-ltiM0u zt6@^^V0bZR%ow&G84nim9{s_DtSvuxk0XDf z!_n4!QdmTnOy3aJjvigMXv5R+u{gVaF`Tf`ge@d23QCz1e}J&*z~8;RAk3bQYi#Ve zmT)-u45!1vg!!`ftGJ>OreqT{n+~(!JOSsj?KzJJ(~$=>@H!bwFZb`*HbZWF^vk8O=O=&3Pqr6R6TvqQQ|DQn z-*~yvGq1RZNruV*uiEda$#JaSqhevo4|seYeC_8Vzw<__>eA5U@jpJqYbboajD#h$L2CqNyBwF|BN&_P?buNVB2SVjKC+lC9J$?{g?bFORXX;OQM!_|wK;1Je+8#y2 zAC~X0EW0C{Y`*eXC|>RtQ}=nG=KG0p8|9mS$=%oQ)aN;&L)Ds7c(g~})n!DF(69)P zmsZ+ETPz;F{Vr?W9c5+PJJ0&@%B#USV^dn0PAX~oJy(NRs{HC~coFNrW8#c^E0P}% zO#7bdo`}8ld3{eimm<%jtt+m+8`SvtR&^@%@j+g~f$rE#ZMxfTY?U)%eL(B;uODrsRMRgc1c@P`TQUv)0l2l1PCHa&Gu|I6MbJoeNzkbqAw-C=@DimqW- zdClmP$JRaUYtUlAZC``u9-{kJY@K;)qeA}t=LrQLhL<@suu0q0uC^9qC~Q#T5j)#f z%a_|slx$J-h}b-MeD&+@KdV#M(4P6qVZNlOc+gw!Iis@l#v<*Bh1)U=RUKl)X$5ck zvwKU>@d)SL2!oE`kSz1PIsd}(TYkaTfs%;{5pzYWnLIQsZ@eYt?7g%GX9tFPHFJEs zE?7)WrcUEK0{QLFL%jn}xo^I)KKp97h^6B7rsDbh#7FKC z-qCc>m3{X-tbGTyt%#T*$`0jkjcmTm+BcwQzkvp(KXe;3r1>pNF?9)L-Jm{yPNKX# zZ~ip1s`(j)TdwZ7`Q@z0G=i86oAEO?>vgqzd=e77+_b6DTlsi4zL(~eFp!w=Rw{lu zMcymmbBCcO9X@v-Fd}k)*Tv$&d2tc@Qi=lJ9Odn`nSE780WFSkES+Ms!wIuv$8gML zDWnka0VLygw2-WbpM82kL~kOxQee>LI9Ioh|1A+1OjscMf&=sxHlNB$*ydmfl*Y6DJ1Yq!w0Q@Qv0rM%g z>;9QrnomkKDV!OFM69YC5V-}bs*tcO@jDuX;deAXa}#m=n9}WwF25<*MB1>YE%Fn0Wr!ql%&>aqM3 zfPHU$#fsf}qwzl$Z*>J1i5}}O#S}%4moPrx`{2MnPhTowOuo0kPJ=P|-V%Z}^w^cA zs5v0f)layjtdGJzK*bXmqp8gDacGVIT+3TTzzy^7|W8~N9qPOf_s zg0`M~TB@5ROc0%);vQgO#Oo!BeLn!792@cai)Qbitsu)tkL_E!)3fpul!n*7O>w95 zo-n)=Wy}?922W!>bBVq%%vi5N$N0n?lPy7m^mu2{?}Hb_<$A95B@N4LKQw^IkGe)M z#Y2w`1u?LT-#KI_6Kj!(22&}3cZING_Kt?NojX`}=RgDuB47dk*d(m!&c#+h{~YYv z=Lrh|t5y<4wkJ<=2Dv8}T>||Hm`pFy#Pkq~E}bTBM>g>@iwpS?4A}SJO2)DiEWGK7 z80I{M20}y1`7$Dk6G=mQFa4&6UR(UzR(kCCv5e2r!f-FWx$G9vDEjMJYt}Q(Nh85{ z1~Z6&CjuCA78T**!Y){(&){qm*$sdE>*Z=JZUYyZDCo}AW1pMF$0vid1&7(vPp(nv_2y=s_cX4Ce zVv{I>pBuv+Jz;&=F$t@eK(HyrfqH%{=dxLj$JH!#r6=k zo0Xz?D1D7_%WhuBG4u@SHexse-Kb#rjey&GSvmsP`gm}Vgf2Au8BK?bl^7=q-lvBL2Wo0#`mFJieOya0 z%ux&f$JF7)ey$vk6!|wPUlW!IFIhaS*?wLhS6Q92Y6_rF>&+)}Dik0YYsiKdp&p*f zvd7+Tt~Onln3<8|DMYJax|!rh-%{@$QxrLtL2GC#~SQScKLcdX<*v5 zP2v(elgI7;Me45d8O?(usuupx#4vkj2d~Sb|CuR#J;0aoq)=#cNDt4{3D^#65A&kU zOuDDQ+JFarT>z;McFE1J6B5L+l197CbM z$5BbR~C!VboTj9g<#;JpT<5mB(8>{SGv8IKAZm|$j7@&m^)$Sy?I&*bJ4ni zyS=87{7&~9qxKoS-!(SZdWGvrlWfYkParrI;-A-C*S~*VWzfJ4?Y76ZSmCPpQLL>< z%C;Uv=i#5wyWXMO+?vi02QG8bx7b;>ZnnrYmj~Yd11jXRf3>c0yYs?m=Yq6~<9eU@qYm=PS)-K delta 33801 zcmeIb2UwKJvM}rfW(WczBIBSAm|X*6&WH(RP((3{ilVL&F*`Geh!}7Uh*&BnR$U_s zrq`^P!x}KIq9SHj5fKwA%U50X;yJs=yWhFrz5ny4JI}LjS9f)Fb*|JeXBXD`{ij+f z(TRq>n|9>2`R&T&a&-zar(C>uvRE<2s%@>R{#uNF){ykG!a1`2+k)1ba9TH8YM@(uW(`M>FddZmUp2VzPtBeA^sZvj{p3n zM#J_UXV1-P@Y;Td<)gXGrSaTG&{M>WU$Vh2V1`knK4K3dTQkypS#87A9+>~ z-b&>hUvaC8$}i(0>}aFa$9LcAD}eYlTRrLj>HL52I;+y}Dz|OOAUnT|dxE86#k8X# zwW-1x);cIk{UcY?2z+X3o#86xB89u~!a*TOWrCX{CGJ5dPTYscqC{#@LXo4;LxH10 zaC9GBO2{>QIdL1pCu{W(UxLbS!`7ngdz{DsM<=TB8~9)XnaW^R?Tiq&SnUi8oQSCm zFc;YB;i!|s!D*UYPbS~)S~Q)aCDMN56PH~4Tv?2KSxM=h7Dw5CXTC|Y26Fbo@4j zREA&IK6>6``<%Ah9(MRmlXZWvJRCk$U*QFc_BPIj!gJ@>?yfsyOV0%vF_EQTzxWeU zv0;$a+Qu1z>ndCt_+@mYn#J@3@c)0=A$?kW*>Gw{l;`+&1GaoPs>NlCTNP`-#=0~t z{#>;qgm1NV*3G)uuFsJsrt{@oA{vcMPx?v5_6NIqifLV|t-jO#_M9=d7C*VC+&(UO zfn3^^NtA5%udN4p6(sC^>{a!4yPOTx^P)%oxrXf#DWjeuQi(&|AA%dwnD&Q-oEQjc zn80xz$mE+sNJH$geIvzG%pAm-B_M01#u?T%qKO#<2OANQ!H_K{Btv6`vprVW!4--@ zZh0GLDWIJqp}4Kz0~~t%Dg42sj*YXf@#Km-D`ZdK+A?^2#chS9-!QiiHb7iYTz0`7 zlrGSrtD>&T@4;qB?Wx2ajR{2$h2D@Wx%KQ2`nLYv`P=LNP~bU4uDOmIZ3RB{ko7NJ z6?m>Z*g{owmSgAR>&%V49do>jkHd)L=j1Bk)R->A(c#X1-}|TPO&S||y{@8(Tsjsa z`zZ9f>xa+xEw#)$J+!c4k7IeYtI4H5G3CxTp3J`1W3Tg|q2uaa8#uC}T)Kcum)>yc zQUBi5ukp%d!K2P}E-9Cef%|Ka^4znf7I-|^A7eGQ-rSMzd*j(Gmdk^&5FR8(_Q66X zqAi#I2cj{rzA$5e4r~N<38Obt8eARwP_8knsMm6{(ELbM$L5J&rr*eFbLH2FvNGCCUgI{sX^Ad} ztN>cxT*=Vt;rmy$#teBpypdz?nB!M($dzU=H^m^SA};R%U2uOq?M?ebZtT+B-%e~% z{knXgv!UnCe!cKorqwi^NAIWG2bY-RkGQqipFZonU-fQs=`pw1`?c<{6xl{e;{Ob_gobVkLTur~NNy3--)psWM z{4?2NknVet*}>Ge|5LK#c^iZ_84{T01&r^Im^clLR|{LrV*!XEo?WnAvvYp9Gqndkar%L{d{g$;-+ z7SwyP`t$R#a_K}aeVM*{-;09eTeqgR-*Th5T^YGlro1Ej^7aE$_j}Zsb+T#vu|c=w z(#7D>L+NJFOpDu-wdjS_uhp$5j!DUq3nws_He(@eh_$opssp7P+0|NDE7Z4xYvw** z8EJCSoXBU-$TXiB*WdadY<}-dK>gXZoMf~W;MP;A*Uda)JMgoO{j7H#y6CFMcw+-J zh-<#hm@E7=P*Dd*WNp#3CGpUd8!~c&^_}ZU%bwRCv2n~com_Jj1P)W`dA_=a(0s`i zCV08@`}F$llVel%OT&8P7hNYSd9J(uIf7vFS>qK@VJ$DhX4P|0kiag{+7+S zoF%JAbXs>zcXZjeX637a2^;jE-*(%dJ28KEgi536*kg22`%D-wl9DLgyp5jT=y{(x z^JWyrL>;~pW%nl}ABKpssRWrQXXwHd%IMnR%03x&|@_<1P2BJC|Dh47nw(oxx$a5NO|b zlPV8aoUNzwdzS@oRtoCx9z%syig;VUSHrl561>)<8gq4(xcuJbLg&?l_Ews{TG83s zP-=l`)S`92Kk_NFvd)z&A-KB~tG2dZTc0Xh2b1{Z-se^^U8CqdX@RGYC0D(*eD$A@ ziWOT0?i*1%Fa~&m-$un0MUHf0qav!Z)bFC=t+mxuM7Rj;Cu=;Uem50m?WINUm97eD z;bVnL1vft{qonAs%3jLI<;i`6PB}^4wQI^JcG&&870rp!h^mPA6&DiMU)Jp}_cvU; zbh2Sy=O24JJ=WNJ!&}vVbb$-%pSaVxjS$2x;r6dp z?!&}bQ_422@_N}0o{fLM`{za+a2NcQt?`%E1iv_`-Ed{mqqC*e-NTD&fbk`+(Abn> zje9ugPdipVweR7o;VIurBSh&9KcCHMAMMs8h5H^%yQiR$Mg~8@4pG`BXyui{=h;=4 zuDSU8nh_m&Ym3q>EcLsWbaU_6AMS4~z9P`((!)BMBFe}i{)(T*fBrInUTZ(qsP*ws z*YZt&PE~Gf6D`;H2qP7^KnJ|SrEN66qw2+qL(*eh?{S#f;9I5xcJ8l4*LC$DwR*z9 zWlq+mKNP>xg2ff1@dISMLMBgcdtdrR_6zsa(4K?**EYsQ`fUb~lwG5LrPnaWsX^^n z`yu%|-<97uW=WJ>;~gY5vexUGEcNU0L&WK+12+xr6J7spK@mL&&&C1Uxx4?+UzVL% z@}|1m*{}oUTFa#$py_;#Ug!K{y9up|W#&8dd{}RBsnV(6N?&=~>LX|F>D8s--NC(z z54ftlIDN&SqEdM{zB8PWx7{DD+TOojkfSuFbX3dFf2oo1uYJ=rt1lgQ-KW{H<8AZn zjhyDnHN=oN#Q#c6``0R0kCk~jD`k;G&*Z6Vo2v()ibeyNkC^!D2U*8aRLQR~^;71@ z>%PY=`S15;b(A^rS3%SZtzOsSMA_GVE6aRs5qGy;P{TQRBM1`y8W8pgLyH=R{7Pl{ zJs9!Z!`{aeZGS5&9vXf*a6(g;z38QlqZ4GPQ zRG+``zMu5|{O>2*s^cfiSdNV41R?#coTW!Oid-v|(Z31YdXLJv(Z2poa^ug4;V4l0Rx$jijY+T1-qUdl~aj;sP}#S(HPK>WrXkQkD~NH)*p=lzAUbM zSAYCg`d$6e7*OwT^hePy2?^hbd{=)o2DJEF=9~X5^Bw<|c`p6F{%8ykmJ9s-o&G48 zllwrlJmHAHG8CsHkf)K9$ZrrTkuET+6CreE#=4bSKO?QJ|F~+E;Tw!2|KZsib`kBtHCAyAZ_s`xal%<>)=n{IGa-mNO(rl;l61H6n% zH&^|++*uKy)Nutv7OOs50>2fKWn$~LTbb*c_u63Cn0=zzD_3!G8f;qB_pw8$5+X9qzu|ii?97Td!|E}U_ z3~0x#|3h&U8>1UHwzol*@G*1R;nt1}t{eEvpfGzN5G%HP!) zi>Aylb+T34A4b)$X??-JiHEr(>sH3jZ<*EC5SL@+tXuyjsZqO_!?~kYugY-jKVq=V zTr2Q$R_pyH^lP?Z#I*N@k5_8He&u&omNbe;6cY#9U#`~gDvP2!@>1i)rF*YS=;-nJ zWuL3Qd56a?{i)KoW@!RYS;QkS0If{@#1Rem^PqiKbui&=%A~** zi%0ieW%66;ca=$FK%YOe^L=F!yU9cLZ!43cS$W|z?}lmXOMN*1O4>B}K<4_-6QVp5mpUkJuzYUEXziRs{TjDcqAQo+w58q5;W_BXXoc<7iu4_`P0hzbGs~>H?2Qv zNJOGP59E#?&-V^*I52N`>y;lPYevmLjkK3Ny=$v9@_hwP%}87Uk>K3X|Vb@QfH`~VQhb8DO+QZ zd^{^zmJj!57OK(RNe)WzEF8rh#EkNp!k8(M}F1D-oeY`6Co& zYxUBOP^HP<(D?-X&^iej8Z+7tt7&?&Q)6iI*-onMi71FxycCw_<+*sRrS zhvs&Tx9;2Z^Pfunwyd-?to~&~rf?* z1xr?U?yj_;Vn{Vo#J;bs-dfZy)Ow)|h0F!2rP4vOa)Ux;46O!f)5Oe#)*<4>Tp|1w z3gs1d z34znaS_`cY5&g7!_s_kLxH`CPF7!-|^m*Dh+C%WX%@``rghyRCJY6j0(1tKKk_gm* zgPib$Y);e!!*nY0LfT4CoiWsl8Ft<&#t2oOI>nJ}d1={nWk(k&KS8+^Ig!aQ5PMi|8^w4}4(Kro9AE3T6hM_~Ez8=;xbQo&Q zA|i)j04MfATv1Nv-9+{{Oy|T&*vW}Q@R$>6FmJXBM`dstk4o`l|2!%lQt%#StbxH}YVu4O?TF{pf8#NXR>&d)*;1tZ ze{dpWt=`h`ugY=%V_N$k)7t--)_4n(H50Y$|6|h{RAp)Ad$P^{Gt6#P;YYO!RrVkf zvGo6z5e{CcNk;pRgfW!vmeSc*3@!KRIf|AFSQw(LD>-Uar_^XCL))F5>i^JowPO)bAw$A$*ra8reN^jumt)R83FM& z4f>w!h}nCku5DFq>tO1CD=?BNaia}h@Bd$tZ?HRFkQGHj)Zd9M==EaZ_|G!)ze+Qh zGr|kPqXoqvmZafuv}+=ca(F!<3t#pt#aSa)?)bauNn>K!dfX)Odp`F+lg+d@niB zb?NEDiCfp1lR`ME%V`Sh={+UBv@#|=LpsyyAZUxj@4oro!Fm=d{$9fa3F zhsc)d?sfW(nzX{>c;AQnHrA{zBh7)#57^l)ul*X`JN!hIk+5ig`>h}2;2X}+?)PG^>FiA zpEJj#YUMEIgt*$xT-l-<@vr^Zx%_xBo&U6zXZ=gZj4g2k{Y%tyC4^+6-z?$aIG>;u zvAySSjk_`9i1EEl4?}Cjuf%ug-SM9N`_*=rUgdY$GJ47K+&glORIvMm+<&@!bm6Jw zn{BFC8*a~78;VyV@n?b-qO{)Ivx8E1*Qk}%(sh^T+B0ZHr_#MVT-97nXU;j5U;6&o z>!t6jU7Y@{Zjz`wpD^)uO=kH>*aLmS$lGnZ# z();1bxsGrxHZZywqTJw`b70LIY+hTS!h6pYEd>^+cA?A6bP@{lkiLgPE!Y|Z<LYay%Gdv0(Db=E>B~VKx zh*)aD07{q=APy7AHpX&@p9Yc+p=IWtN@gLh1M0+%YJ%2-cNVheLy-9v^i~r?hhS_Q zTqqkDX&!i3A=kGUsQ_{a2?rCi1^Y?xW-qcg+Da`3%gC+Tb3Dfy$~3bv4yVi`7AHHM zF}E^iNm>DtN~5+x+ndD}9Ic7$Jn-R!KRob3`tz-c{(7$E0U`HMX+4UWxU%oS>)Ob0 zE~A`b6lciIM3jm)gpvu(Y}9D|vQ&UIHq^jONT-BlAsFjm2g}*gn9P8YRnhzrz|cz= z{X33O6hgK}GsaPhA6ga9;E?WOlwokeRuDA5gw#N!<7!8Awt=S|Wj}%tN|=ISWewyq znaV92A!-UPnM}qG=1w{l7wuRQxSe5Sw}m#CN#oqNI59p6!j0I@M#{EmAgeucc$=Y$ zkjqE|p~OR6LM`k?UCYmG3JD{~v=Yqsu<0a*&O?hIklZzfhQmvHYGo9ZbD+dH2;js@ zh~h*~$gPV*bkTwM`UUC$GEhj6Wf6Gp#s%i(D3^H@V%cDZ=0K~T5K3TZ9Phm|3{8ei zM{4c>IF+D8OYpEDrQi}Y@A8p`9v_U0f`yogBmN4)8>6uzjZtEF)Pf<-1yS+{1-C=) zLUcq|c2YZ{bctplu{fl8V_;J_W@4qUFxQ28 zoW>J-gR(6LA)B*jgP}B)uZO_Wc%tq;YzzK_rdG~=ccNjjo5#`0PUr0srtJ=aiMYvD zm8J&Qab`6N4uH#;iR|u&xX#Fv!j+%|2%CYkS&yOqU}%Ru9KujEM7UDZuV4o!CJVs= zyJ|WHIahHJ)zS$fc#C_7BFO;=;URz~b@5Ykt8s*4>Ih?++3Dc~SMY?eIyiOjxojS< zp{iwwBLMF*q78E)gj2#)2x$Y5{9!Cd@++9Ufj4*#RWd8Vy9##0LoY~}FThJrJSDpk zgxqcWjMExJkjV_I^wfnFaG4U8J)m%-Gjlpqwqlc5CpTi}XQma&&`P+1(JqimkU2xp z!qb=_iykgF$5vg+QoRUB5|L@X1es4jNEkv>39@X5xU$q@6t^fF;qGB6c2I;t;ZF_W zF*ucu<%rw>aLdL4_dy6z4ls&}kJRyuG8i(eVH+C=GXDyP%TYf^LJlSH(())TTD914 zZMmPL%Tog;u=wElv<4w;Kt4t7_<~L+6w3;Dfdp{A%Yd7Krsx@TqJ(KF`22uMTe01mF6DB6AE5yTivM-W=I;2xF5M@ zPrmM}dk~#%Vvh-~@a)LNxtY(|=pPjJ-=hd&f6PqY6~zYJdby0U7HldI`GL@k5_qJH z=A3u1hI4L0Iwp|9T&7T(mtDDvYF|5}NxqM4LLt`;rGpt2)#w?r>||68I6cD5T@{JV zB)CwK8uNhyPRs+(N|ZAKLMUOW%z{L6B~b(WGe*b(nFN{hc!fJvCTbI*dSy}9{2UbZ zandJpb`<1H#Bth4ki{B8JdnU`E=z)3s$%*P?4RLMYEeZ{GCzXXXK>!b5JJ{vnYsjD z;7NpHk^o;_;T^$H61=P;nzrocZQH0SadZj-s#0$bK@=s-H{n4wq)Verr3Dt<`QSit|=u9;=>Z^Dr2KGhgP;hm%k2uZIv-kt8 z=gLfa2Ol`uKhT0g8D0FWDc&3mHK=>CSEMmt;enWmBXAiUU*NilCdef3qCEszs)C^d z4(~HAdkcj%)bTh>vH>TMx5ti}#O#k0-vC(zS@tsIT#L#EFw~AA;M;#PL+g2^ZYBs% zD-@h@cuhgP=Iv|K@W~spKXdMlnK&TjSqu$l6j`Wt;AOXtP)z6HU~M9Y-e@78Xg#TB z3K%?T;EO?^r?|z;Z-g9#B9du4?5IOEjzAVB?2P7*Jd~qxJuSi5-P&GiR4DKsIdUHf z4)7xWFj!FhaR27wnvcUwMDd3@PY~qP?VoJ%rb# z)|W!7GPrsUbM{zRa{(7Z4nnw=P@fY&S8mLs9yPXyr>Yx6dtqcfLC2g4t0-Yn!DULA zFodQ)@v(?B80b`=>W_pdA)iMggiVM?V)(Ox@V4k=Ol6eQV0R6y06uM zcpd|B4Uojt21F1a4q!IYN?}@fTI2gExQC^f`Q=ZUjtxbo`N_9TF^WEvS){9Bb&)w9 zGjV7KLh4w&K{qgjG5Te&;adzXXUL`zVU7{wD;Csx9_Z1OZPCW}O~B(G0c1v&#^q;! z>0A-OtuYc+H6}6yi2;2Bof;Fpix5c(^Lt3e1a1oq8xTJgq)o@0s{kt^?XW*(dNvW% z%$MR7^YH9v;4W-!f(^wplrA7_$Wja(9Z~fENZBYqQvi7Nro>H{fJCPz!+1_igbht; z{YJsPFE~jRn-SthXx5CVm6lLtyQV>gWcgZFQi59(-e~ys5H_|DA)JR7%yV_#-)W2z z$v0#kK{yN)d0x4VsBTdTNbs{A!YESobC335wkP@biLOT~tCV|gZtQOIZI9bn!{tkjn{aHrNVrV)q zc<1)i<=#-EJrS4$QLS+NCsVd1iTA-~Mp_GLgk*jOd6>YlIl*IN!y34^FVWh~r%O0P zVPw04bqvKo!CJhAZWNW#iK^{D+**lED@Mr<0x4nYBl@R@RalOVp*2kW?8znom${M~ z5=0b5M_OM{gyQoKw?{q9#DRSRj@=Mt2tlS@3;~xth8-QL-;pA$OKecID2ZQPzAI|^ z5nWj}!(}4q4!}$tYYV%_;|RrquRFxgk!=Gf808RT_!0S$U~ia|__e3N8Mud~ zI9j%xX~!=o90RDzIB*bpmk&bN@)}0bKw1?%i^elbG|USimZPAA2Ohe&DBH41*iXdd zYz2=lB7w?Ei7z;nqq`90BfPTLFw~Q+E$Ij$EAsVg&+VuJslsPLM-L4MGM|A?fz)aO zL~`Q1SVdw<_k~BCmvcRAaT)mBl4@j2NQNi%LXP5FX$%ZH**H(mf*YgXg9g-q)OO!E<%WMk5Qa? zT~-VdD0mJEdl_^m$TSZ|2T^OOu!a)mvyhGn8u!5|}Iq_|@i!0=^O!0&(>}1WvwTB>PdIz38MC0a@5JCx5`@@FdrJKy1i9X`3e`cP&tXW}Op#H;qfn2Bw;Kyn{sG=U(~UI7Un z20$hy&_?almvUl3F%%Jl`w}y&p+!H077~Oik>gNY6=?`zXrLZ z^&z6VXy;tK*Gdcvqg=}oNWxsCAX_m?^GTGArMTDkG1(H_Z9^~-Y67t?xK#rQLT>?? z$)dT;1c|}aNDn^QpD~gh6moVjc=f09?hyD4*IYz@A{jw8TiC(S8gYE-A&a4@u<$*O zvhx6ei3dWB0Yu<91asmrGJyL1W-2%J5E{GaCJ!{z5akXlM%!7!YmORVUu zBgi80F1o>G@sK@GP(ty|5JCxnKuq8syw1a758)?qHLMCD%G1Cj5xKt1&@r%c#r`P< z(e$8!T>Q{>yctj3dYFkECV+7ev3j2ETEN+@VFzc2Ko%z~5EY4wx7J{)HXObz!wocm zq0`KB97DY!X9bp>U}z#6o!%2<{sP;@I8_ZLDv82yBE~5e!a1>-$Ko)S<8tW19G79y zFNZ3bwNUdk&b-GELBf*AYIHY(@Q5QOV+caUtxFV6n#5&ke7L{hGIUQ5r85wnRpO_) z4o(Fq-FF^J(tQ%Nbizg=hZ3J=Sg;HUr7{%4&?ACSE2A=(VT3uE?RLHdq0?c&FzVlK zh@%9mn~tq;M($xbu51IheG<|(;G+}AAF0#3IMbCcULVdB&MN%XlJ70d#KY}8Tz-$c zZv#Uw;P8*s*ciy+#E;-Hocf3ndE%$u1WqdK)E3$^n{3G$X-APW7D zaFifZ9@tmFEttzt3_}%16C>lG*=Qmd3!^z<1h02E<@>q3IizDY&R7*5vp&3s%8jAg zY0zK{)kc+|0al8_Y~)F{+Tv?BaqR9QTofvj({aw8aLsT&7F@%K->TplMs#|JF%x_I z88@fmn=+ZvP)!k6Stdc|r|^+*O%mg}@VaR;R(;m6#W&MLoyAB<*IO?e5$*S-CbO#@< zmMO`q-6)m=lET$>4U_h^s-wM{Gh;=yUcMi{R6?(oFwjOeBXa6$JaAUy)SunYU+7_8 z-KTMGft7Ndd2wF4Of!}H(RUL)m6hs_S9kDG8E4u+#1izzJ-S=lVU6E~BQGcQiQT;T z=3=fiLjgOMsHc_pLhph5#r%&WSL(XfTC_xdq!&#Zyb3jjQtDFDfCTk^4KB>-;I>kX zwmBC%Q36$p$dy8eGN65ftu9r3Yx|Vx+!3XbtYgx#)#`T5aaGO(@g`8JkfC0VUNZA>vLom|4H(^Bx@!CC zO8<7BE+kw)RZ6WV2|&tgaHr4kR-N6{38 z$1d&FSC7ahizgQrg7|9-1bSyDN*rL-vAFbgq}31himB5161Le2>8r^~Uj|!x2Vt4WRJ|ocvn@0~ zh$ev{1fi`ht~w4Z5M);4b`$+Hr%PE&tlHq4OS~GYuCT&If|80yqLt`lBKthnB#OB( z$@-)g6v-%k>{@H(B0WvC`hZbQCU5Y0glA&@2GOqhcgg7&t6W@GrnxLS7&cj<`O_2w zIrbPJyJwS?2=%sc;J(V*!w59**S;{OoL8-!GsFfi3X%c+9fG0)i~ZShzbzkSPVSFyI^BGUijTeMFQXK76hl^n7F` zjDyJt=wZ$yV&rE64luBsL_g`(BP;Pz)wD%=@WQG)D!ND(U5OhtQQJenR1jhD)JkDJNC-51Z1`n`v?KQ$~ zZ@v!p9SC6xcyl5V!Z{Jf%kFRoqMOU!G33Sb&5k>Sp3mkKBhj;Q5L`(-Dbq7vWdd^eS$3L)jo@>V7h;4Obo%(~!hoB>cxGaoUeaU5n`4N6tM(bdru&e2%Nz24` z6Q5H|9Exk_`f|kb%kTw{;&`cPR>+WeoV7GjgZGQ^D_9Z*0b{-hgZOSHoF!D#2ns)h z{wrl3MZl7@Xr)F7ba((RTC4GdzH52t1SBq}-caHIihT}Ano}5g>93JjT>!)_Q#re? z-gWiE?6Os-Ub(mZNJj(Om}!}4Amf2x$=?d>voxO4@Lx0)@y7FS2@CIPM2vKEsq#Hd zlGu?9Nfr74^DCf)P-v}nf#+K7XIu&1;AD%=X3P>&x4*Z9V0BEHa^W=^-lU#(TCd^= zPLt-jYDKu8IYaVs)4oIz07p>-KSIayqIpYo2q}+Dp}m2#lPMeB@FGZ8$}F!Hk`6Wy z;Gq>#AGVAse`#SwEgiOJpiyP5(1jH|AaclDbY*P=ak<0@Zw7i-s)@D`5}&UDZFPbq zNE1f8CJdP&u(}{*@?}EBS%O~0rAMSa)wPjAc00$Gfim8L2JR0pZ>=XRYpKPzQw*I# zW==7UG88K#Ik(c1+%f~aI%D&Xe5vDcB)Ef12V!Op8>4&)GAo48BnIUeU`!%%W!cLV zt;p6T-Rq#eP!@{^!qy>#Hw5lc!r~^O$@P(7bR@kz1V=N`pGGq(`IxnBY>>eVOzu4k zO;#~l7isTIZB0HApTy8A$)qaaH46#&Wwe2gvnabQn2Qntt<-LCc9vFrpte0^&cZLg z^wKOnS#WQjuHUod*rS7&Tk(lt`~pt1ML&%B+;B-q?TtED@NB`HF(2&a{1@xCI~?v@ zI;UAsK-W5lf@&X~CZ9wHpv4>-pi~H>1j=_wl<;p3DJgi?XV1}!YpDfz#iD!>I9H2@ z{Xdntz}LB2amf*aSRX%f4=_$mxN#$5wIVuKb~rVl@szS+X>lT%a1F{FP3DVUA{01Z z@Z#SLvVWq)-<6}2kE&rHJh_D~BZL!&0)+S(*f*wFK$BYt>5lj{v3d(|vmi6_*)}NL2Mxz$(9a>rG!6@)&lSZ;7 ztf7P@9@06X1k|-KNOTu5vyN_PDPWg2N{bWzm1*~+uY^e12ecDWQwSOY^G*xd@}#H| z^jU(F+M}qx{uvuOaWNsI?ud9XXS8`j)9?p#y5I)Gw$NZEF3>P=x=Q?o2*Da15?4jn zEZllAJB}_`h?$5R$qIEEp_sE6$BrFZd5khm1T*ll)PfTjmQodulDXH2#8ODYY+Md# z5EDN+o-Z3qF;jM;+wvJ=xGt)om`zc5fdrv+9W@2#Ec&{Z!gc1r*b{heX5G-v$D7i8 z3Boh9!Uwm2$ycZY=}pldaU?_A9yd$@jJ%7(cQ`{#5<_AP=Cfzn?Ve~4zrm!qC%V81 z6zee?d27lPOG2ElowF2qPfM}IE-){X`nw$tQv&^UIh-?A@_3+)QeoA>TovQuMd;Si zM>G;X#5v?Lgh#B10`2}7Pn5=wwZqkh_EYXCqIM59x2*G9_bRR-=$Bv_muYG6h(uZu zueG10i!Zd({ylsN@uyhna+)9feag#Qsl!X2iy1n#zAQeYGtd4V^<^si_j|u1MrS}c zWn<4MZt5^+<1H7{H#qATVuVDgmC?0A5EzGte+7__V5F&=uyc36~hO&X7 zXoApePg>+2E=z%nR0ZXD3P&uXr7FF^OKUB5ldNl_7gQLc5`@!sw2YvFVT`$yFvas)ZJ{R~ zcCfS-#!w`P)G^O8t`(boSAGh zjc}(14)c)gKnN$|GEW40jfJr%i%`tAkWV!+@|Ff{vWInDz<|Ugv#0yYKi{3v=%KfB=*r835P*Q^r%IN$8E5@9ab{8 zvwkF$pT-d4N6n04H)OIOEkd+1h+k8-xo2V~1`6-z%qrF#Xj0N>jRLIswp86{J+d0o ziebA{>Uiqv8bEs^iqQ;xfiL5!9rS$fM=pIQ5K@G2Ok-dWL3o{FXoWamWTz&^B#G}j z+@n&<2FTio$Cu+oYjil^RA7{_=wAVNOd`s%{cQ9kqC8L7m)v0OB*7%!H4-BwK%y7Q zdaB8U^b5F6rn=qvmD4cJj)zFjj*wC(TPNc8AqPs zK+MFNR&c2#9;eX+VH7b%ZS7%b72nd&81sl!7;T*^Tp6;{RsK?q@S~x1c zz}PK#mgFM}LPx-91@SeBji13Q2#u!ha?8OtdEZ{{i-WWv#Nl zg))HYymWAlb-o9tmXbR|N>8)yF03`Z`H66wv()5yj?|pU&?bI_vyq`OaP+Kb359!H z<(NPp0zMAIh^2G1Q{~qyCFg)wn)uk$Iobr9AnLq0ZV(4+oP(o3P{d2-w@Wbz_}ugiJ7xN1zlR3WqQgC-5U= zPRHqd&Cpifp6(^7tPRKVbY*B7Lo*q|7o8<>sqAHFve@!sDH%9cLho$jqBNS&-Du+m z{s>@^UHrmTdYDE4#9y; ze*9RUAoPop5Hpm^wu+!+(Oy+Zp#&aG$|p?c`d5Jgw( zVLCzRf+a;_CzqXv^KL|GiFm7_htg${0REjK7BV|9bQcDewb2`X&aIRax7m2f*k_sb z&DN)I!o(?2^u2G4p2iDNS23i_){OGaB63>!)UNb0?oAOAjH!U{xZ5At@MPcQA3Kay z-+UE0zZ^!45Q)#QR+RRs`TF?vnN=>hOzAb%rNTZBx%3OXDTmG9z8&uI+|F7(u|bFS z?ob;YN?ex*Ps3jYbWb!d{U2Wm^HV=r`@@5kn?2^OFKYe^{8|x9 zx8E?`TC`q!sk|~Z+Ew|}p(4uC9~EtcY=`3Bt14okF;Tv%P0Ifa=6~a0>iYHGzxP?y zO*Pi_Pp?%!&Uc-oA*)6?I2&g)#w@>BeqG1Z5ic`TQ%Bb8HE=Y0QyzLxBeiSMgd z&)m0M<_eWnVFS>m-tIhVOSifcn%^vR*kJcSj_*QOFqQf=J?UwfSjTY4uHw3`AusXq z3-wn?N1pE5L5I63Rr|NT-z~A`_WW}8T#C}7;2Dlrrz7GdhmXEv$d8{;R{4SNmIwW` zZqN$>JjU`k5F?f#jCJ23Wc))6&F1$kuNkti6UV&f#8ZTMw8gr@cIbaMD5>Y>F{_1K6u z&fON2T8bZ@!zsa1uI-A(0=2U=tDcR!%KgLGGV^`%U3}LjsBMzl#?O#ZyD+LD0eq&Z zon2=a#NI8xAb8lwH1og|-{(b0bn{5Ijcg7n-TPjz+3UvP61j~}|K{8M?hSSu`sE?# z;%AMI1BGyz-^3YoWw}%f0TwK+vbpg#kH|e| zzYOT4nZ05zhEItViGg)d7CQB;VC+ovm2Zn}@iu6Z+biYc)6(oWwa?0ER`5eh8LeMS zq}JwQ{nxXXk6yCdF@N!ufcHDTp?T`?F9<9+I_T8y4OW$|e(9Ifd&DBAZ>7gX-Qu~s z8a>yWbcs!aKSH&V{3v~o<3cKZ|ejY&A-<+VKXTd6Ri>XuhJ=Zk+{Wl$BD((j@s zIK22)TD}$5Jza5h@vu^kp2^J`9(QlBeEK)8x`@&f4?c~qUg4#)r{*^g;3i9P;NC$!4y+u6Kq z_&j^&l*n9^6b~ZgEuV@?l=DLSt7v**GTI|tg z@7>9}7W?rriUzazdzl~Yy68kCjZsV!i61>(CS41a4<70GDB|(>C zxEBX>zHq2QZt$WxfepG_eQYhCJr;X14(s|gdswbfm6x+CKdaGt%;U_yObKl|LQT~5 z3DX-l|886`=Vtfa>nmJ}l}iouircTrfSCdAm+p*xV%qR)?khDKp~UH8k(DO(Cfv_| zi9oi0G2*;ZH+-m#&5!2xdlHOX!~8o-F3Y8hLz9nA>hSz+;;%iPR>xR%K@Z;!iV$O6 zitF!Rbd!2LQV&kqJ@HyMbmmZL3~2>A*KxtlGh*`_Y<_vRZN{wwZ{<>yYtR9td*3wZ z&f;u-AcUIgo+38L zjB}SWA!G~%4)L>Llq-~JKKG|gWygtQG&F0N8%tSW#!02tb4wDEnZIM5YK@f)Dzx+a7kjQu0 z=&OzJJ!5vU(+AD$RjmI{yw0)oph{51 zL^dZnfI&?;9Uzbs9YquV(q*;nFctpAH796dZHw#%#lk8|{HL10;0YViL9UHKO=7YW3`{s2CXwxtxdQV&PlbZe>jbgQvS zX@}nSfW1PI>QTZKM(5i&z*uivvHRut5L-Tde#T5}W*Zyvt`me)h)-gWFfNqxttgQV zT_|DNL0^f4m941S1@KG61$~L3E#Ov7p~rGK7h~}=Ic1<`Ya;Sa__XxUA0ga*atu`&=6n%n%6p;=KY4oB+O{tKWhh(pL|UrQ z0WI}vV>?5{6E)+%J+*S9pp1~?B+(!yd@zBA=VrX{OR%?g{v<-{C<6NN$r?i)z_N)d zb&zZ(+lr6H;=__I8)Z85r>*{b$n#s~#>{F*ctEY9my*83S97x%4NGKu&4BR7nfgjbNuP1KXLt~uB50365gqzRI z9m9{V3a5REy@D?clA#qjVXvrwFUJgz@qGVY8b^d z^`D57%+NX4?pe`1dW9-ow6}; zf4?Zl1WrD>4UC0M-2wl6Ek<}l@Bv$N8x-Z1<1Y~}I3QCo6;=LkBZm?EL>$dz^fvx2 zL3j-22;*0!gQ8&!2EaF7Vw8YCR4|9K@henoF&jsy8}|V{wBoCRj(*-)XI7o z$f`LeitxoOe&Iy8ag?nmtXm8 znES5HL3tD+1n+oV9hX^Xdt6K=@-hh%IDN8ET#b+HcZ{Zl;wP}uKSN>#bdy@1uuV1N z_!I(uYZKpJdfUy$?*;us#wE!zrJWsi7e53;65T_B&{0KDsrI5wJkW1%*YbY>VRU}e diff --git a/client-mobile/.gradle/8.5/fileHashes/fileHashes.lock b/client-mobile/.gradle/8.5/fileHashes/fileHashes.lock index ee68a6b8d1d9ddec7de22af64aba2bcfcad759bd..518b6e41d652ffaa26d57b4927441c77e6c18608 100644 GIT binary patch literal 17 WcmZSH&R@;(a=)o00|>BoCIbK~PXsgo literal 17 WcmZSH&R@;(a=)o00|>A-8UX++4g>oD diff --git a/client-mobile/.gradle/8.5/fileHashes/resourceHashesCache.bin b/client-mobile/.gradle/8.5/fileHashes/resourceHashesCache.bin index ca6615888b40cedb3aea2266a7b5190e79bb9ee2..539ffe1a54538cc04d3fb67a2af4a0ccbade1beb 100644 GIT binary patch delta 2895 zcmZXWeOydw8^^oPoHOU8X6~70CMCrTNztRoOIT`=(hEYXSe9rjFCj@HmDStIrdfMR zE8AxCXla`!&s8W{Qnq$QSb5LeZdl4{sTI%Uoc(;BXZL(QXa4wJzw38h_dVCSKX=LA z5#N`ND08<)q;ZV3Qi)GULu~m(g<0QYuBbJ>=Tt~yTPo3Ww*IUD@hanGmwW=PGZwl! z_o5ll7rrNTk#41 z`0lJXF~LQm$M;a}+6-Zc8 zLHH6lp}Yvtg#v+E*1-P%5G&QFlV5V1o}ZT8NI-U@B#%b#fpd$bnNe8&`8KKRdT*Pc z#~0!Gb;%(Lf9W)_=#SOaqW4h9X_E}c=o~!lkoa4nSul|%Z7lG#mKn}9Z|@2!wLAE! z$TF&QqYf4DA%7tB1$W8|D zvGTf{R_rHG)nVA^Lnce`No85>t`dnrHR15okIW$P`)WG0_cysnOJL1x@-$5u%;=RD zVf8!)5x|F%b!y}SA4ZdrGCXcaLN)zH)T_LqdJEYoN4`+_DfuuL=^%Xw6)(Z#)i&SW z88kp}m0jXrIZ_6^zA4tX;g=+W! z^+Fa;?Y73{uM)HB2YxOlj|EK`RYeYMVEds1M!6_5p66pN=GPuzx{jg3C8TqUD#+Y)_kZIsC|i#bdnd1Zp)8e0226ekk6c%~kLw zze@i6UFkH~4BB+1*sg*kM-ofx&D>g*sX8*tS}N`bE`!gH(P1Vxd_J67@Ct#-^ z^9q^HwH*PBX;wK&(}XkqbHt<@eBfd-8NwGb*W{?xpdGIg8st5r$pL5#|1^>5#527z zs(9&RAw_;4u54qnDFyrIsZSctPIVHnZ-@)7A#J zcQFkd-s(_vsXBSL5Ro|>4Ug6$UY^gSz%6&CRs&@QCUdyyAewlSX;))1VrtU){8B-U zUx4j%#&m=f$+sW+b!EOl)tlh>OJ*X0It|)Es=jG*g*X{&p+JuCi5+X8apkh>4>$Ju zh|QGpy;)==>~UZlNIWvEI4in_6hc-T`4u^&2V^<348pk`_kONEa83wWs$u7FHcW=9 z4B7>1$PQo^A>;tR1+rQaC-*+K;_F`6&xNgg9m z^$Ccu;93d%NvY@RxKMF2HBb5GAj$*heY!TlJ7lBS2>}t9yM~AX$e>lI`{qUt*BrPK z7aRMCucsw76zqx-l*;D64p7)JmrJJ}*zK>U?Z&K1W>FPxk= zdY%x%Qs@okoMd=?Ovmo94KoF*(ScnA*N*VLwNJWMY#Az0)lX34MQA0w{c7$9)Mn7S zn!bg1C#~t|QXpvC!KIEw97G)D@=T-g%-?>Jr}$kceT+BVJfz@O&Dkgko4)n*6TX83 z54coE{?2ql?q>5=ed}sdYuNrLviYxVvzM8w+K)E<*qB~r->dMu8a&6Y=if8?uiV<- z-F6ON7)z3~8gdz5k-KBt z9BW=%#j0>+)cxf?dnYqN-ESwsc8+g*#HmJQ6y8=pa}#bnDn9G5yb6; zj!Wdf2*tggkH2}eFQ@In0LruB?(*?`PAxms=#XlUHdog>R>$4gwAbx8VE=33CW<<@MyrHAu(c$2KDl&6=m}PHHc@{c6iOm|jweN=WHxI8U!-JjWGf$_* OcE!K^`NQRXivI$ktFm1H delta 1235 zcmY+Ee@vBC9LD!O?|JWe&&zMQ7w#qe@uDRDAg@fDKiWi7gA`J+%uA9{DYV2~rbJD# zL@+h4m>tmEa=K|Wk#~fT>0F>WLD6u|60?jJB{rP5r9i{27jf1dC2InVbw=Tz<3 zn%!gTCU}X}PxQvb)aQ+=;`NbFR5F^5tqtZo1RqSlt3Ga0!(Ez%)>P_>#D%BGFws4m zDs|ed?tCd$;N)C7=%F;co=+uS^pwzaPED$9u+a%uDJ|bc7K%J;g4t7KOB8?*-(N%o2Bch$YE2Ws9FU!%8ST+l{LoGV3_Z*P&i^MSWx1` z4mN{R3p!8BE2M6nk%us+ifM5U!*jLF=R)aMES=%%QI_v^NXFd|W#z&148ikSwVMh`&+_!&2i#gdi0Fakfn z&re0tc=ckEOh)Y%-d;sRQ87Y)S5v+e{Sewy^j?mxRJ}chCG@G8eX<|L>AHIn^%Oag{Cs$vsm1ni;$ZB;ZWji-|D?t=; zgoX%*bVHKJkEcxAYK~UU`D5z4UtKd%JV#^?rx`d~BmxYRSBZEH1*?S-x9d+{d~}O= z)~SVUwZ%NLh~_+vFl(R4WAro*>=z*y4%dj%2-W>O1##t==p}R>7Xd+wZR^+r8FM+| z*S8B_6n?uYN+PM+wu%S+Z{YZFqb7_d;(EMM&9N=fNMXt;Q3gCiji5&jsU*MZo?uKt zXpixYM>!O?v2~8oOU~}gvW&tAwJ47lV_mLsEs~mSYhLWb@hW{KPjq6xz0L@sXT4Fb z@0@(iha+W1g|RcxaTO!C8_j0@@mtGD740!TV2NMYR>31N9Gf+SI@|bYjN>!)C!@=) znp*i%eD;^&6!z~PBaJmNBBddh!zt6q69gxie7xU#E4c{*t5Z_xaOBh;z zlu;gt_0rivB9?8C9b652jd`(llZ@7Jvw)>A+}I|);fUHTUtui4wymX}0mcRR)|UN| z&ckYIl&iv2?p~IGnpPQf;qCqG7ed+Fm{X3~OU#ro zH7=d`akRj!Bb=SiyqfxSg?Ww&ZR?QdzhXoaI?BvV<4B^Q!K{ApF=fUxZI}VN^~W(fw<}L2_)UbL<2?ZgXu_v-lkB@5+X*>8M_C5=flJQInVDo3(NIG@9TYW zaNEF-O*Xh+OuEGLvkk5XyK=|0X~tD2bc;}icWR-@4-au=4!mYL`E}6YvFAhS4Xj;< zWr0j~rP`-YmFBCP$B}%76FLav?VlhN!UgmJ7b=$V&F-bGc_nlMi%PiP0AU))k{Y^` zB_2##xz#Vs=ZVNe5t(Znd^h9hQ1X{CxSubSpe!(D=NST{0H^F?%@OFN|C+_UB=Vwq zrm>_^Y2Z9+_8B*OyN*p3TgDZQAU;Y< zV|$=IW*yMw9!%1KZB+=Xyx;}O?hq~wYdX1L)ZIs2Hc$sbCOt#Okcqh0p&7Fo^4CDV z*NqN|BXx@AHYN^oc0e<47}1jI;pT}%+@VaY#|gdRIghCga*xoZ73lzeGH7H#HuoZj zt{*vn*CFF9vL#MK&O~M=MVb(0xp**orIl8#34Jtklv4*P%MA=8R+gLkUsI>RfA|kD CZR217 delta 473 zcmYMuO=uHg5C&l9+s$UPKiMCUT0(0>$tlDHy@|yf3KpxFi;$pT#Di1=?X8-Fq!nDX zheo1&*g(M$p$5c+1m9BxPwK&<2=R{w!6GVHLMfCQ1V2IO;TdLzVR#?Dn|%Ftve2UR zC>4+yrCUSzouqk%9DZss7{TphbYhMc@%|;{_hPC`FJw%7rGq+M5C_gG#Sl8P%BD&Wc)V&xc&=(@F+8VSSfF#5H~hyftcUz74jb9w)ipEX zm1BNE6#{~Wa!e0iqB3e+7wL~Y)(0KB-w0m`@YH2(8@-yGr)E99Ox$j;+|xCAg!oL0 z{VZiCd|q-@M{?C@m~>bYPrzZ%bb~*LdQSe2@1IG1ZGlZNWi2>Mpnc0>RL-;{X5v diff --git a/client-mobile/chats/data/remote/signalr/ChatEvent.kt b/client-mobile/chats/data/remote/signalr/ChatEvent.kt index 5c82b99..c3d4aa9 100644 --- a/client-mobile/chats/data/remote/signalr/ChatEvent.kt +++ b/client-mobile/chats/data/remote/signalr/ChatEvent.kt @@ -7,6 +7,7 @@ sealed class ChatEvent { data class NewMessage(val message: MessageDto) : ChatEvent() data class MessageEdited(val messageId: String, val chatId: String, val content: String) : ChatEvent() data class MessageDeleted(val messageId: String, val chatId: String) : ChatEvent() + data class ChatDeleted(val chatId: String) : ChatEvent() data class MessagesRead(val chatId: String, val userId: String, val lastReadSequenceId: Int) : ChatEvent() data class UserTyping(val chatId: String, val userId: String) : ChatEvent() data class UserStoppedTyping(val chatId: String, val userId: String) : ChatEvent() diff --git a/client-mobile/chats/data/remote/signalr/ChatHubClient.kt b/client-mobile/chats/data/remote/signalr/ChatHubClient.kt index d4c9d20..25ed94a 100644 --- a/client-mobile/chats/data/remote/signalr/ChatHubClient.kt +++ b/client-mobile/chats/data/remote/signalr/ChatHubClient.kt @@ -136,6 +136,11 @@ class ChatHubClient @Inject constructor() { _events.tryEmit(ChatEvent.MessageDeleted(messageId, chatId)) }, String::class.java, String::class.java) + conn.on("chat_deleted", { chatId: String -> + Log.d("ChatHubClient", ">>> chat_deleted event: $chatId") + _events.tryEmit(ChatEvent.ChatDeleted(chatId)) + }, String::class.java) + conn.on("messages_read", { data: MessagesReadEvent -> Log.d("ChatHubClient", ">>> messages_read event: ${data.effectiveChatId}") _events.tryEmit(ChatEvent.MessagesRead( diff --git a/client-mobile/chats/data/repository/ChatRepositoryImpl.kt b/client-mobile/chats/data/repository/ChatRepositoryImpl.kt index 970fa50..4342a6a 100644 --- a/client-mobile/chats/data/repository/ChatRepositoryImpl.kt +++ b/client-mobile/chats/data/repository/ChatRepositoryImpl.kt @@ -83,6 +83,18 @@ class ChatRepositoryImpl @Inject constructor( } } android.util.Log.d(TAG, "Cached ${entities.size} chats with messages") + + // Проверяем удалённые чаты - если чата нет в списке от сервера, удаляем из БД + val serverChatIds = chats.map { it.id }.toSet() + val localChats = chatDao.getAllChats() + localChats.forEach { localChat -> + if (localChat.id !in serverChatIds) { + android.util.Log.d(TAG, "Chat ${localChat.id} was deleted on server, removing from local DB") + chatDao.deleteChat(localChat.id) + messageDao.clearChat(localChat.id) + } + } + chats } catch (e: Exception) { android.util.Log.d(TAG, "Network load failed, using cache") diff --git a/client-mobile/chats/data/signalr/MessageSignalRHandler.kt b/client-mobile/chats/data/signalr/MessageSignalRHandler.kt index 8c5da95..9671cc0 100644 --- a/client-mobile/chats/data/signalr/MessageSignalRHandler.kt +++ b/client-mobile/chats/data/signalr/MessageSignalRHandler.kt @@ -8,6 +8,7 @@ import chats.data.remote.signalr.MessagesReadEvent import chats.data.remote.signalr.ReactionEvent import chats.data.repository.toEntity import com.google.gson.Gson +import core.database.data.ChatDao import core.database.data.MessageDao import core.database.data.MessageEntity import core.database.data.SyncStatus @@ -18,22 +19,11 @@ import kotlinx.coroutines.flow.collectLatest import javax.inject.Inject import javax.inject.Singleton -/** - * Обработчик SignalR событий для обновления локального кэша - * - * Обрабатывает события: - * - new_message: новое сообщение в чате - * - message_edited: сообщение отредактировано - * - message_deleted: сообщение удалено - * - messages_read: сообщения прочитаны - * - reaction_added/removed: реакция добавлена/удалена - * - * Все изменения сразу записываются в Room, UI обновляется через Flow - */ @Singleton class MessageSignalRHandler @Inject constructor( private val hubClient: ChatHubClient, - private val dao: MessageDao, + private val messageDao: MessageDao, + private val chatDao: ChatDao, private val serverConfig: ServerConfig, private val tokenManager: TokenManager ) { @@ -78,6 +68,7 @@ class MessageSignalRHandler @Inject constructor( is ChatEvent.NewMessage -> handleNewMessage(event.message) is ChatEvent.MessageEdited -> handleMessageEdited(event.messageId, event.chatId, event.content) is ChatEvent.MessageDeleted -> handleMessageDeleted(event.messageId, event.chatId) + is ChatEvent.ChatDeleted -> handleChatDeleted(event.chatId) is ChatEvent.MessagesRead -> handleMessagesRead(event.chatId, event.lastReadSequenceId) is ChatEvent.ReactionUpdated -> handleReactionUpdated( event.messageId, @@ -91,6 +82,12 @@ class MessageSignalRHandler @Inject constructor( } } + private suspend fun handleChatDeleted(chatId: String) { + Log.d(TAG, "Chat deleted: $chatId, removing from local database") + chatDao.deleteChat(chatId) + Log.d(TAG, "Successfully removed chat $chatId from local database") + } + private suspend fun handleNewMessage(dto: MessageDto) { Log.d(TAG, "New message received: ${dto.id} in chat ${dto.chatId}") @@ -99,7 +96,7 @@ class MessageSignalRHandler @Inject constructor( syncStatus = SyncStatus.SYNCED ) - val existing = dao.getMessageById(dto.id) + val existing = messageDao.getMessageById(dto.id) if (existing != null && existing.syncStatus == SyncStatus.SYNCING) { val syncedEntity = entity.copy( syncStatus = SyncStatus.SYNCED, @@ -107,10 +104,10 @@ class MessageSignalRHandler @Inject constructor( isEditedLocally = false, editedContent = null ) - dao.insertMessage(syncedEntity) + messageDao.insertMessage(syncedEntity) Log.d(TAG, "Merged local message with server response: ${dto.id}") } else { - dao.insertMessage(entity) + messageDao.insertMessage(entity) Log.d(TAG, "Saved new message: ${dto.id}") } } @@ -118,7 +115,7 @@ class MessageSignalRHandler @Inject constructor( private suspend fun handleMessageEdited(messageId: String, chatId: String, content: String) { Log.d(TAG, "Message edited: $messageId") - val existing = dao.getMessageById(messageId) + val existing = messageDao.getMessageById(messageId) if (existing != null) { if (existing.isEditedLocally) { Log.d(TAG, "Message is being edited locally, skipping server update: $messageId") @@ -129,7 +126,7 @@ class MessageSignalRHandler @Inject constructor( content = content, lastUpdated = System.currentTimeMillis() ) - dao.insertMessage(updated) + messageDao.insertMessage(updated) Log.d(TAG, "Updated edited message: $messageId") } else { Log.w(TAG, "Edited message not found in cache: $messageId") @@ -139,12 +136,12 @@ class MessageSignalRHandler @Inject constructor( private suspend fun handleMessageDeleted(messageId: String, chatId: String) { Log.d(TAG, "Message deleted: $messageId") - val existing = dao.getMessageById(messageId) + val existing = messageDao.getMessageById(messageId) if (existing?.isDeletedLocally == true) { - dao.deleteMessage(messageId) + messageDao.deleteMessage(messageId) Log.d(TAG, "Completed local deletion: $messageId") } else { - dao.deleteMessage(messageId) + messageDao.deleteMessage(messageId) Log.d(TAG, "Removed deleted message from cache: $messageId") } } @@ -156,13 +153,13 @@ class MessageSignalRHandler @Inject constructor( } Log.d(TAG, "Messages read in chat $chatId up to sequenceId $lastReadSequenceId") - dao.markMessagesAsRead(chatId, lastReadSequenceId) + messageDao.markMessagesAsRead(chatId, lastReadSequenceId) } private suspend fun handleReactionUpdated(messageId: String, emoji: String, isRemoved: Boolean) { Log.d(TAG, "Reaction ${if (isRemoved) "removed" else "added"}: $emoji on message $messageId") - val existing = dao.getMessageById(messageId) + val existing = messageDao.getMessageById(messageId) if (existing != null) { val reactions = gson.fromJson>(existing.reactionsJson, Map::class.java) ?: emptyMap() val updatedReactions = reactions.toMutableMap() @@ -182,7 +179,7 @@ class MessageSignalRHandler @Inject constructor( reactionsJson = gson.toJson(updatedReactions), lastUpdated = System.currentTimeMillis() ) - dao.insertMessage(updated) + messageDao.insertMessage(updated) Log.d(TAG, "Updated reactions for message: $messageId") } } diff --git a/client-mobile/chats/di/ChatModule.kt b/client-mobile/chats/di/ChatModule.kt index 25e6cb7..b82c74a 100644 --- a/client-mobile/chats/di/ChatModule.kt +++ b/client-mobile/chats/di/ChatModule.kt @@ -33,11 +33,12 @@ object ChatModule { @Singleton fun provideMessageSignalRHandler( hubClient: ChatHubClient, - dao: MessageDao, + messageDao: MessageDao, + chatDao: ChatDao, serverConfig: ServerConfig, tokenManager: TokenManager ): MessageSignalRHandler { - return MessageSignalRHandler(hubClient, dao, serverConfig, tokenManager) + return MessageSignalRHandler(hubClient, messageDao, chatDao, serverConfig, tokenManager) } @Provides