From 493fb9cee800358ade90120c37c9e3c3096467e0 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 13 Aug 2026 10:04:21 +0000 Subject: [PATCH 01/24] core: limit the number of messages in a batch (#7364) --- src/Simplex/Chat/Messages/Batch.hs | 10 +++++----- src/Simplex/Chat/Protocol.hs | 13 ++++++++++++- tests/MessageBatching.hs | 9 +++++++++ tests/ProtocolTests.hs | 21 +++++++++++++++++++++ 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/Simplex/Chat/Messages/Batch.hs b/src/Simplex/Chat/Messages/Batch.hs index 9c0ed521c7..1f9ae0b9ea 100644 --- a/src/Simplex/Chat/Messages/Batch.hs +++ b/src/Simplex/Chat/Messages/Batch.hs @@ -63,7 +63,7 @@ batchMessages mode maxLen = addBatch . foldr addToBatch ([], [], [], 0, 0) addToBatch :: Either ChatError SndMessage -> ([Either ChatError MsgBatch], [ByteString], [SndMessage], Int, Int) -> ([Either ChatError MsgBatch], [ByteString], [SndMessage], Int, Int) addToBatch (Left err) acc = (Left err : addBatch acc, [], [], 0, 0) -- step over original error addToBatch (Right msg@SndMessage {msgBody, signedMsg_}) acc@(batches, bodies, msgs, len, n) - | batchLen mode len' n' <= maxLen = (batches, body : bodies, msg : msgs, len', n') + | n' <= maxBatchElementCount && batchLen mode len' n' <= maxLen = (batches, body : bodies, msg : msgs, len', n') | msgLen <= maxLen = (addBatch acc, [body], [msg], msgLen, 1) | otherwise = (errLarge msg : addBatch acc, [], [], 0, 0) where @@ -90,7 +90,7 @@ batchDeliveryTasks1 _vr maxLen = toResult . foldl' addToBatch ([], [], [], 0, 0) | msgLen + 4 > maxLen = (msgBodies, accepted, task : large, len, n) -- fits: include in batch -- batch overhead: '=' + count (2) + 2-byte length prefix per element - | len' + (n + 1) * 2 + 2 <= maxLen = (msgBody : msgBodies, task : accepted, large, len', n + 1) + | n + 1 <= maxBatchElementCount && len' + (n + 1) * 2 + 2 <= maxLen = (msgBody : msgBodies, task : accepted, large, len', n + 1) -- doesn't fit: stop adding further messages | otherwise = (msgBodies, accepted, large, len, n) where @@ -112,7 +112,7 @@ batchElements maxLen = finish . foldl' addToBatch ([], [], 0, 0, 0) where addToBatch (batches, elems, len, n, dropped) el | elLen + 4 > maxLen = (batches, elems, len, n, dropped + 1) - | len + elLen + (n + 1) * 2 + 2 <= maxLen = (batches, el : elems, len + elLen, n + 1, dropped) + | n + 1 <= maxBatchElementCount && len + elLen + (n + 1) * 2 + 2 <= maxLen = (batches, el : elems, len + elLen, n + 1, dropped) | otherwise = (closeBatch elems : batches, [el], elLen, 1, dropped) where elLen = B.length el @@ -182,7 +182,7 @@ batchProfilesWithBody maxLen body labeled = initState = (initLen, initCount, [], [], []) step (totalLen, count, acceptedPairs, overflow, large) (s, e) | B.length e + 4 > maxLen = (totalLen, count, acceptedPairs, overflow, s : large) - | count >= 255 = full + | count >= maxBatchElementCount = full | candidateLen <= maxLen = (candidateLen, count + 1, (s, e) : acceptedPairs, overflow, large) | otherwise = full where @@ -215,7 +215,7 @@ batchProfiles maxLen = addToBatch (s, e) acc@(batches, elems, members, len, n, large) | B.length e + 4 > maxLen = (batches, elems, members, len, n, s : large) -- batch overhead: '=' + count (2) + 2-byte length prefix per element - | n + 1 <= 255 && len + B.length e + (n + 1) * 2 + 2 <= maxLen = + | n + 1 <= maxBatchElementCount && len + B.length e + (n + 1) * 2 + 2 <= maxLen = (batches, e : elems, s : members, len + B.length e, n + 1, large) -- doesn't fit current — flush and start new with this element alone | otherwise = diff --git a/src/Simplex/Chat/Protocol.hs b/src/Simplex/Chat/Protocol.hs index 8d9c8ecfcc..15550d34e4 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -1,3 +1,4 @@ +{-# LANGUAGE BangPatterns #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveAnyClass #-} {-# LANGUAGE DerivingStrategies #-} @@ -909,6 +910,10 @@ maxCompressedMsgLength = 13380 maxDecompressedMsgLength :: Int maxDecompressedMsgLength = 65536 +-- Applies to all batch formats; 255 is the maximum for the 1-byte count in the binary batch format. +maxBatchElementCount :: Int +maxBatchElementCount = 255 + -- Defensive entry-count bound for the roster blob parser (rosterBlobP) and the -- promotion cap over the promoted (member/moderator/admin) set. maxGroupRosterSize :: Int @@ -953,10 +958,16 @@ encodeChatMessage maxSize msg = do parseChatMessages :: ByteString -> [Either String AParsedMsg] parseChatMessages "" = [Left "empty string"] -parseChatMessages msg = case B.head msg of +parseChatMessages msg = checkBatchLimit $ case B.head msg of 'X' -> decodeCompressed (B.tail msg) c -> parseUncompressed c msg where + checkBatchLimit ms + | ms `lengthLE` maxBatchElementCount = ms + | otherwise = [Left "too many messages in batch"] + lengthLE :: [a] -> Int -> Bool + [] `lengthLE` !n = n >= 0 + (_ : xs) `lengthLE` !n = n > 0 && xs `lengthLE` (n - 1) parseUncompressed c s = case c of '[' -> case J.eitherDecodeStrict' s of Right v -> map (fmap plainMsg . parseItem) v diff --git a/tests/MessageBatching.hs b/tests/MessageBatching.hs index 00cbbd757b..01515fb6a3 100644 --- a/tests/MessageBatching.hs +++ b/tests/MessageBatching.hs @@ -33,6 +33,7 @@ import Simplex.Chat.Protocol GrpMsgForward (GrpMsgForward), MsgContent (MCText), VerifiedMsg (VMUnsigned), + maxBatchElementCount, maxEncodedMsgLength, mcSimple, ) @@ -45,6 +46,7 @@ batchingTests = describe "message batching tests" $ do testBatchingCorrectness testBinaryBatchingCorrectness it "image x.msg.new and x.msg.file.descr should fit into single batch" testImageFitsSingleBatch + it "splits a batch that exceeds the element count limit" testBatchElementCountLimit it "does not create a relay delivery body when every task is oversized" testRelayBatchAllLarge it "classifies a task that fits raw but not as a framed singleton as large" testRelayBatchSingletonOverflow @@ -150,6 +152,13 @@ testImageFitsSingleBatch = do runBatcherTest' BMJson maxEncodedMsgLength [msg xMsgNewStr, msg descrStr] [] [batched] +-- elements are far below maxEncodedMsgLength, so only the element count guard can split this +testBatchElementCountLimit :: IO () +testBatchElementCountLimit = + runBatcherTest' BMJson maxEncodedMsgLength (replicate (maxBatchElementCount + 1) "a") [] ["a", batched] + where + batched = "[" <> B.intercalate "," (replicate maxBatchElementCount "a") <> "]" + testRelayBatchAllLarge :: IO () testRelayBatchAllLarge = do let task1 = deliveryTask 1 "one" diff --git a/tests/ProtocolTests.hs b/tests/ProtocolTests.hs index 63dbea549f..e241ddf15b 100644 --- a/tests/ProtocolTests.hs +++ b/tests/ProtocolTests.hs @@ -9,6 +9,9 @@ module ProtocolTests where import qualified Data.Aeson as J import Data.ByteString.Char8 (ByteString) +import qualified Data.ByteString.Char8 as B +import Data.List (isInfixOf) +import qualified Data.List.NonEmpty as L import Data.Time.Clock.System (SystemTime (..), systemToUTCTime) import Simplex.Chat.Library.Internal (decodeLinkUserData, encodeShortLinkData) import Simplex.Chat.Protocol @@ -16,8 +19,10 @@ import Simplex.Chat.Types import Simplex.Chat.Types.Preferences import Simplex.Chat.Types.Shared import Simplex.Messaging.Agent.Protocol +import Simplex.Messaging.Compression (compress1) import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Crypto.Ratchet +import Simplex.Messaging.Encoding (smpEncode) import Simplex.Messaging.Protocol (EntityId (..), supportedSMPClientVRange) import Simplex.Messaging.ServiceScheme import Simplex.Messaging.Version @@ -27,6 +32,22 @@ protocolTests :: Spec protocolTests = do decodeChatMessageTest shortLinkDataTests + batchLimitTests + +batchLimitTests :: Spec +batchLimitTests = describe "Chat message batch limits" $ do + it "parses a JSON batch at the element count limit" $ + length (parseChatMessages $ jsonBatch maxBatchElementCount) `shouldBe` maxBatchElementCount + it "rejects a JSON batch above the element count limit" $ + batchError (jsonBatch $ maxBatchElementCount + 1) `shouldSatisfy` isInfixOf "too many messages in batch" + it "rejects compressed blocks that together exceed the element count limit" $ + batchError (compressedBatch 2 maxBatchElementCount) `shouldSatisfy` isInfixOf "too many messages in batch" + where + jsonBatch n = "[" <> B.intercalate "," (replicate n "{}") <> "]" + compressedBatch k n = markCompressedBatch . smpEncode . L.fromList $ replicate k (compress1 $ jsonBatch n) + batchError s = case parseChatMessages s of + [Left e] -> e + rs -> "expected a single error, got " <> show (length rs) <> " results" srv :: SMPServer srv = SMPServer "smp.simplex.im" "5223" (C.KeyHash "\215m\248\251") From 6fcfbd54c5183404f54a88d5a0fe927e5e44d762 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 13 Aug 2026 11:56:22 +0000 Subject: [PATCH 02/24] core: enforce allowRemoteCommand on the host (#7370) --- src/Simplex/Chat/Controller.hs | 5 +++++ src/Simplex/Chat/Core.hs | 2 +- src/Simplex/Chat/Library/Commands.hs | 25 +++++++++++++++---------- src/Simplex/Chat/Mobile.hs | 2 +- src/Simplex/Chat/Remote.hs | 2 +- src/Simplex/Chat/Terminal/Input.hs | 2 +- src/Simplex/Chat/Terminal/Output.hs | 2 +- 7 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index e8392b8c42..6cf5453fd8 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -695,6 +695,11 @@ planResolveModeP = "never" -> pure PRMNever _ -> fail "bad PlanResolveMode" +data CommandSource + = CSLocal -- entered on this device + | CSRemoteHost RemoteHostId -- forwarded to a paired remote host + | CSRemoteCtrl -- received from a paired remote controller + allowRemoteCommand :: ChatCommand -> Bool -- XXX: consider using Relay/Block/ForceLocal allowRemoteCommand = \case StartChat {} -> False diff --git a/src/Simplex/Chat/Core.hs b/src/Simplex/Chat/Core.hs index c382a6dc8e..f5f7f581df 100644 --- a/src/Simplex/Chat/Core.hs +++ b/src/Simplex/Chat/Core.hs @@ -97,7 +97,7 @@ runSimplexChat ChatConfig {testView} ChatOpts {coreOptions = CoreChatOpts {chatR waitEither_ a1 a2 sendChatCmdStr :: ChatController -> String -> IO (Either ChatError ChatResponse) -sendChatCmdStr cc s = runReaderT (execChatCommand Nothing (encodeUtf8 $ T.pack s) 0) cc +sendChatCmdStr cc s = runReaderT (execChatCommand CSLocal (encodeUtf8 $ T.pack s) 0) cc sendChatCmd :: ChatController -> ChatCommand -> IO (Either ChatError ChatResponse) sendChatCmd cc cmd = runReaderT (execChatCommand' cmd 0) cc diff --git a/src/Simplex/Chat/Library/Commands.hs b/src/Simplex/Chat/Library/Commands.hs index 8a41e7c655..336474880f 100644 --- a/src/Simplex/Chat/Library/Commands.hs +++ b/src/Simplex/Chat/Library/Commands.hs @@ -378,19 +378,24 @@ useServers as opDomains uss = xftp' = useServerCfgs SPXFTP as opDomains $ concatMap (servers' SPXFTP) uss in (smp', xftp') -execChatCommand :: Maybe RemoteHostId -> ByteString -> Int -> CM' (Either ChatError ChatResponse) -execChatCommand rh s retryNum = +execChatCommand :: CommandSource -> ByteString -> Int -> CM' (Either ChatError ChatResponse) +execChatCommand src s retryNum = case parseChatCommand s of Left e -> pure $ chatCmdError e - Right cmd -> case rh of - Just rhId + Right cmd -> case src of + CSRemoteHost rhId | allowRemoteCommand cmd -> execRemoteCommand rhId cmd s retryNum | otherwise -> pure $ Left $ ChatErrorRemoteHost (RHId rhId) $ RHELocalCommand - _ -> do - cc@ChatController {config = ChatConfig {chatHooks}} <- ask - case preCmdHook chatHooks of - Just hook -> liftIO (hook cc cmd) >>= either pure (`execChatCommand'` retryNum) - Nothing -> execChatCommand' cmd retryNum + CSRemoteCtrl + | allowRemoteCommand cmd -> execLocal cmd + | otherwise -> pure $ Left $ ChatErrorRemoteCtrl $ RCEProtocolError $ RPEInvalidBody "prohibited command" + CSLocal -> execLocal cmd + where + execLocal cmd = do + cc@ChatController {config = ChatConfig {chatHooks}} <- ask + case preCmdHook chatHooks of + Just hook -> liftIO (hook cc cmd) >>= either pure (`execChatCommand'` retryNum) + Nothing -> execChatCommand' cmd retryNum execChatCommand' :: ChatCommand -> Int -> CM' (Either ChatError ChatResponse) execChatCommand' cmd retryNum = handleCommandError $ do @@ -3603,7 +3608,7 @@ processChatCommand cxt nm = \case ConfirmRemoteCtrl rcId -> withUser_ $ do (rc, ctrlAppInfo) <- confirmRemoteCtrl rcId pure CRRemoteCtrlConnecting {remoteCtrl_ = Just rc, ctrlAppInfo, appVersion = currentAppVersion} - VerifyRemoteCtrlSession sessId -> withUser_ $ verifyRemoteCtrlSession (execChatCommand Nothing) sessId + VerifyRemoteCtrlSession sessId -> withUser_ $ verifyRemoteCtrlSession (execChatCommand CSRemoteCtrl) sessId StopRemoteCtrl -> withUser_ $ stopRemoteCtrl >> ok_ ListRemoteCtrls -> withUser_ $ CRRemoteCtrlList <$> listRemoteCtrls DeleteRemoteCtrl rc -> withUser_ $ deleteRemoteCtrl rc >> ok_ diff --git a/src/Simplex/Chat/Mobile.hs b/src/Simplex/Chat/Mobile.hs index fbf2a226e1..09af069ef7 100644 --- a/src/Simplex/Chat/Mobile.hs +++ b/src/Simplex/Chat/Mobile.hs @@ -352,7 +352,7 @@ chatSendCmd cc cmd = chatSendRemoteCmdRetry cc Nothing cmd 0 {-# INLINE chatSendCmd #-} chatSendRemoteCmdRetry :: ChatController -> Maybe RemoteHostId -> B.ByteString -> Int -> IO JSONByteString -chatSendRemoteCmdRetry cc rh s retryNum = J.encode . eitherToResult rh <$> runReaderT (execChatCommand rh s retryNum) cc +chatSendRemoteCmdRetry cc rh s retryNum = J.encode . eitherToResult rh <$> runReaderT (execChatCommand (maybe CSLocal CSRemoteHost rh) s retryNum) cc chatRecvMsg :: ChatController -> IO JSONByteString chatRecvMsg ChatController {outputQ} = J.encode . uncurry eitherToResult <$> readChatResponse diff --git a/src/Simplex/Chat/Remote.hs b/src/Simplex/Chat/Remote.hs index 0e23cc795c..991218367a 100644 --- a/src/Simplex/Chat/Remote.hs +++ b/src/Simplex/Chat/Remote.hs @@ -553,7 +553,7 @@ liftRC = liftError (ChatErrorRemoteCtrl . RCEProtocolError) handleSend :: (ByteString -> Int -> CM' (Either ChatError ChatResponse)) -> Text -> Int -> CM' RemoteResponse handleSend execCC command retryNum = do logDebug $ "Send: " <> tshow command - -- execCC checks for remote-allowed commands + -- execCC is execChatCommand CSRemoteCtrl, which checks allowRemoteCommand -- convert errors thrown in execCC into error responses to prevent aborting the protocol wrapper RRChatResponse . eitherToResult <$> execCC (encodeUtf8 command) retryNum diff --git a/src/Simplex/Chat/Terminal/Input.hs b/src/Simplex/Chat/Terminal/Input.hs index e0ee10aff9..746b1e137f 100644 --- a/src/Simplex/Chat/Terminal/Input.hs +++ b/src/Simplex/Chat/Terminal/Input.hs @@ -62,7 +62,7 @@ runInputLoop ct@ChatTerminal {termState, liveMessageState} cc = forever $ do cmd = parseChatCommand bs rh' = if either (const False) allowRemoteCommand cmd then rh else Nothing unless (isMessage cmd) $ echo s - r <- execChatCommand rh' bs 0 `runReaderT` cc + r <- execChatCommand (maybe CSLocal CSRemoteHost rh') bs 0 `runReaderT` cc case r of Right r' -> processResp cmd rh r' Left _ -> when (isMessage cmd) $ echo s diff --git a/src/Simplex/Chat/Terminal/Output.hs b/src/Simplex/Chat/Terminal/Output.hs index 03f644e641..63a3d5cc70 100644 --- a/src/Simplex/Chat/Terminal/Output.hs +++ b/src/Simplex/Chat/Terminal/Output.hs @@ -167,7 +167,7 @@ runTerminalOutput ct cc@ChatController {outputQ, showLiveItems, logFilePath} Cha _ -> pure () logResponse path s = withFile path AppendMode $ \h -> mapM_ (hPutStrLn h . unStyle) s getRemoteUser rhId = - runReaderT (execChatCommand (Just rhId) "/user" 0) cc >>= \case + runReaderT (execChatCommand (CSRemoteHost rhId) "/user" 0) cc >>= \case Right CRActiveUser {user} -> updateRemoteUser ct user rhId cr -> logError $ "Unexpected reply while getting remote user: " <> tshow cr removeRemoteUser rhId = atomically $ TM.delete rhId (currentRemoteUsers ct) From e2a3f6317aa2a28e664fd6591a9d299904abaea3 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 16 Aug 2026 13:14:07 +0100 Subject: [PATCH 03/24] website: add links --- README.md | 2 +- docs/LINKS.md | 30 ++++++++++++++++++ .../images/itsfoss-simplex-crowdfunding.webp | Bin 0 -> 12598 bytes .../links/images/simplex-web3-summit-talk.jpg | Bin 0 -> 191029 bytes website/src/index.html | 2 +- 5 files changed, 32 insertions(+), 2 deletions(-) create mode 100644 docs/links/images/itsfoss-simplex-crowdfunding.webp create mode 100644 docs/links/images/simplex-web3-summit-talk.jpg diff --git a/README.md b/README.md index 5583fad0b5..903b10185c 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ SimpleX logo -Invest in SimpleX Chat. [Learn more on Wefunder](https://wefunder.com/simplexchat). +Invest in SimpleX Chat. [Learn more on Wefunder](https://wefunder.com/simplex.chat?utm_source=github). # SimpleX - the first messaging platform that has no user identifiers of any kind - 100% private by design! diff --git a/docs/LINKS.md b/docs/LINKS.md index b45c9fb5c4..c1eb1e6f2b 100644 --- a/docs/LINKS.md +++ b/docs/LINKS.md @@ -1,5 +1,19 @@ # Links to Community Publications +## SimpleX Chat Wants Its 400K+ Users to Become Investors Too + +It's FOSS + +Article + +Image: itsfoss-simplex-crowdfunding.webp + +Language: English + +Date: Aug 14, 2026 + +https://itsfoss.com/news/simplex-chat-investment-drive/ + ## SimpleX Chat: Private Monero Communities — and Now a Chance to Invest Monerica @@ -16,6 +30,22 @@ Date: Aug 10, 2026 https://blog.monerica.com/articles/simplex-chat-private-monero-communities +## Web3 Summit Talk: "SimpleX Community Credits: Making Privacy Profitable" + +SimpleX Chat + +Conference talk, Video + +Alain Brenzikofer presents our design for Community Credits at Web3 Summit – a payment solution for private infrastructure payments on SimpleX network. See the whitepaper at: https://simplex.chat/credits/whitepaper.pdf + +Image: simplex-web3-summit-talk.jpg + +Language: English + +Date: Jul 2026 + +https://www.youtube.com/watch?v=UhW8AuoRgxg + ## SimpleX Chat: Product Showcase - Removing User Identifiers From Messaging Help Net Security diff --git a/docs/links/images/itsfoss-simplex-crowdfunding.webp b/docs/links/images/itsfoss-simplex-crowdfunding.webp new file mode 100644 index 0000000000000000000000000000000000000000..e4b52d65ec3bf5084f47e47d11a830b6fc51ebbe GIT binary patch literal 12598 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 Y?!8T|8AwC|_|qwt!mRZh@yY-I0HtniKL7v# literal 0 HcmV?d00001 diff --git a/docs/links/images/simplex-web3-summit-talk.jpg b/docs/links/images/simplex-web3-summit-talk.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e4edf5e2212b5290469fd94ba591ea635a75b926 GIT binary patch literal 191029 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 "index-hero-h1" | i18n({}, lang) | safe }}

{{ "index-hero-h2" | i18n({}, lang) | safe }}

{{ "index-hero-p1" | i18n({}, lang) | safe }}

-

{{ "index-hero-invest" | i18n({}, lang) | safe }} {{ "index-hero-invest-cta" | i18n({}, lang) | safe }}

+

{{ "index-hero-invest" | i18n({}, lang) | safe }} {{ "index-hero-invest-cta" | i18n({}, lang) | safe }}

zZ}UAAABK2cLOGwfzOm4W^nqRTO^>c|0?j1$xIup$Kn-@UV*0Ve%cd;XA4?zm**{Uf zwE_9V5f(6%^@&zpEo?q(g zHWQ(7E;W{picWcXRuL>NAt)jM3&z@u`wB*gLO(HLS8RlS=e|t+TjBwk`ObY_#;S0k z7z^^n{m7-VLO_*`~TF)`Ty3DJ(om}F7o4aYA6abYSn*WnhY=6~KeC2$2Qk9gC<$=4{oc^2Ee zlIT|Ra51uy?iFQyK7Gl`R1%o-l03943;&5d=UiHWd~f0W{kQHgy7}4tAa55?woL4f zt)gZj{Z6Q6W6_SfQdoycl~^o2g`Z|R?n+m;3igD5)bb;)>3zc`=42K^(u9dFFVODS zf-yrz_)cDcaP{I{N*$g>;VwxUJTLt>*wR!J2#eed{{Bkw#=2Lu?5D$pmZB4Rl8#uC zcIONnHc#gD+O7H0eCnfb^29HOR_L)SVtmm;h;uu-o4Rkin^W_Lky`{&*yzrYj`p#0 zWJMrn-%q6lW>4XcPxJ^27C)qy?bhiM1&RNs_@=Q4aYeWd6*o&|vw=L7WPW`m@!Mot zfKP8C1-Q`?zfr+umfL_{c-kw~G74zp2)5&+0Y}r>TE*SpvnGnO;7ZlBOT14Am!eu9 zq8xLu>s!}LgVFc3sAi0dG&QdbD=7ia8Ltcc*PkelLA9lo!0JWt_h!8s@9B<$37)!+h1;L^der*Gl1O%5U!dl7*YB^JK8wMf#)##IVn0 zG?M+l9W0;-IOh~P=&1vIUZ2uZ?zfpSEiJt9>b@Cb zT)d0y7hx08_pJKOYWK!Q4yyrjxPsQFO)o)h0gQPGVLiS^>P#sNX%+0x54uq}0JV+)E;Yh=%#ExfP3-Y73T|qhpB3d_Vg`);nmO-0`A4 z!4YPT7un00D-6XGZd`ef~YLW_v)fpY$QH1V=)>rifZ#*b(zQQx}qbWC} zqRzuWR+4o;FSH^c#{Qn!!OIRMToxnphPYL%Gcq(%YlkYFv!D|xTLr~D1|piY?MnC8mhcT(!iH6G)!W@U z*4h>3xM4O|D>p^W^|`q)G3?URYLg?5T7Rxjsk~BFuHwm%dn@tCR;i?pyY8z^_{)CJ z>DE#SHJDpoSJ!a^4riYn5%fT9-yDrxd|BSV|t5Y4J0gMGem-ImO(H)or~Xyix(N zJ@uwcpdjF;w{0vo=@{j1>3wxZ?qrK{r7CE0g!|V1vw>)>=emERCc0MxI)^|F+ETyQ zSdw|pWFq}a$n}`POeG8TOzX^aIhnQ&VfKeHxCFT|tvX zRX%$v%02U>S8F0H0Ni%l9Z7JWy)Wp}~AEADh;^euvQ%7BO(s<^*^ zOM)C%nx~#vItF9rGlgwj>enYx&k4t!ZWuY*E)R}u=v*_w)?@k2QkbQ73&{;MtPurC z2kfCehJOQ7U`XQS_Pi?GVczCh+M9#1yuLMCpP7r>RP*edNfL{Wm_zn9=}#Z!uCcE) zWKeXHKa|&R6)kV6UW4Q~em|zv>j`{UW~$*IpNStlK~tXY**jA%{ve(b-2Q|<@QS^D z`1o6#Piqh`;M1^Kx3|%N9N5M=29=LcoYh}yVX!dWpzI>R?081|eEyi?M?#oyAe9SB zbt9b0H23AY!1)&Ri0QGsz2IHxay_7y$Zqn#s(F0%%}f@EXhmhSY=p>CU++AqwQ85- zF>R}dXe>6oxO&RyorReR2J8)II+>uRJQ3U9b4w5XUVINEHRne0Rg7h~Nbe5%sofzHz*G23h+Q8;Huf-Z%J} zaF`v2lvyam89=MFc)QIT`)0pcyP;gSrIJM3;=6LW({$V>qxdQwQ-SNlwnO1m)EgmY zK_YzzCco#bmP{yJm6|w?*R%yodHnKv`SvbH(*wM}-D%>iccnta*40x-S=jZ^=E|$DM;Raw$7T#Z6|u-& zf4DKw)zaG=g$*KF2|3J1FqGpPsl_GE@W4^L1~bhW^Xc^DI#d1R+PD%0AM9KyzkbSBsh?kr5P0mz93I#g*EyYHpR* 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 literal 0 HcmV?d00001 diff --git a/assets/multiplatform/resources/MR/images/crowdfunding_2@2x.jpg b/assets/multiplatform/resources/MR/images/crowdfunding_2@2x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..48bfe6caa7a19157bbce8a8a59dd160b2eadb7be GIT binary patch literal 65112 zcmeFZWn5cLw>}))3Ir`s+yjN;?izvz*WwV|wNTuOI}|4Yf|ueBr8q54(c)U%T550Z z=bZC@KEL1Z*}pw|GO}i7?Y(B!teGo+zx>?-03j-BDgZPzGyoWN0sd|i|4|NvIRF5f zngA{U0Dud?K_dlVph9S<3xGxg!1_-Z0I)%O_W#1pXq^9>2OX7%AAs@!*r?kZo$SA5 z<6r>H|1BGcdj8{3HU2~Of1WBZM>lH#04EJ~qvA061O)ig(f%ilhK>O!{l9pAKE6`4 z|I#f*|3A8zO{EzB7sd#HWB+d+6tREZza03N1OIa1Uk?1sfqyyhF9-hRz`q>$mjnND z;9m~>%YlD6@Lvx6T>~fr&{5_9G_-$w^nV;C#y>t5CME_ZHWoJae{LK+Tx=XX9Bgb{ z0$e=&e;g|GgaH4^KR^B<@;^nO@Nuwl{*&eZm-lx7K!S_bgKmt0#tc9wLBk+H z`#TJvN7)N7F;Ff0e@#XQpkd%(V&h`r;iJ+WfdDjArRW%_IDGskgy=Z`SPn3;ut{)m znMnEZ$mGeHbtwd_y&}?Q@mVtFD4!}oGqcLxHP2HC3MuN@ct;LyvvP3?GqUydkBTn8ykhrJRt1~b`?aDfqC*3q2%}o^--ckInudjqgNuhs)+9kS3mqLB z3l9qu7ZV$0KSAXu!N9~~!Y1XH*G(rQxAvOFVTMLzlnriQQV8hjzhhDG_Q4et5mi*m zyb_8WLN$%u#RRG1OhD%%NLncqu_z85ysc28UI$(}$_Vsevt46M~WAXXx^D+vuuJ%<@zhBtX7MIvkul z8$M5KITGB3BXO$lifOom@ucOr)H`en9eV@7Bx=pb%vD@qh~fZ)?-f9SPj{dW;Bys+ zNkR-zszi_By5-a1)~=4u4yH1}3$KI*tD@t)+p}Sdfbt1ELBk6##gR$7{Aw;XxJ4fZ zY$ihkJ1&uP>R_^?XYpQ^*)CC{Xq1^kDAI|ChQaWtukCe8@SMd$uYYLgCDBsJr3FTg z8HY1QMG-Iw!z&n{ds>mFY4dHRSw&zv0HO!xv z(up-@ljbO?#7VQ7D-C&wNz22JQ9G8xl}qzxwrAyzT4jPtgj(CNM->PNZeppOTwKOt zM&&UoM5E!AR_jM*CMm}3_JH4|rr83|VdMqs zf+J$6cF1Ych-I1pB%6SEl`MjKp`Xt72Xif))?ib4%vZS5TV=|eeRhH8-^tug1KtL7 zwG+4ZK1ZxResrFDSv#p=mccX8>MJxvkg7H<@I~DvNE4x4bxBE?g-}*A!k2j~w&o#H zY3a&Cpaz*MODk2u<*UeQ`{>SdeByRt>|#7${o6X@`t3`#VU3ty#4A8rvh#S~7gbBr zt}(lSiE&H@52Mq;e$~pPoBp^tx1hioqw=8yC*3ho%sNHcUcI#mDtu zDKPa~#laE(L=1<>Ne`oErpSdelc8x4g$%`>#BpJ6DU4}gaq5)$6wmx42Les1JxtsG z#3{g$@AJYanH2z;R7HsnJ9-jOi5cyj5smQ*lN@&n)r%~AdD_%IYL3EJ%uoS- z5)hWS_|Jd7J9~lAY9QloIyO1(Am1c-L_fC76;6Qc>914y2jsDSrVP#2|4XCd7(!J5gSG8zmZ- zsG)-~D&9!|ErJCHh^fG5FC>sztR%$=mm5mDDjdQr0Sj|T#bb;HqBGIxlqn?Y25zN! zGmVXn$(o}Zj69(+NKpz&0QS&QX~o=L<>hmIW@a=bW?7;mI7Z3Xv>n1i=l5^%)cj&l zv2gdBFU8mUZQGTmMz)Jb7iJ5IkyWQ>pYluh)>7DD^y){dU|c$x^B{3{nfxlG$&lLU zfa3Y{2A(5mt&XBIx>@lSveBi`R3sTW2fmAf#Cku`GrQRIFZssp)>`z@nU2e$GJzvM z1Fp-uPS~wiEd_Qk=aGvYJci~p6Dt7U#{kiOgj5wj-;`XNbZqqpQoekzj*#c-S6*T~zjS6Z_)eOcd9z8WrKeI!$d7xqc9BtH5Q58+xX9+O=0 zrtjYDB(!QO!RH@#TYf0ba`hLJA5V%nZ&Y{l;u4rwH1KFjz$2wU!jrZ*E5uXZNwCzd zhIY8IwEKO4a7R|SZwTeokSFw|WP=c?1uYK>bER+)M;4NcKK(7p&uq4gOcys8 zESsBwA2c8i(eH7&Kb366U!!R1K@C8C^UO0CCwQj*GxnLrB{|SQy#tdz12K<*-n^%?d&-~wZNb9Z9QP8|L^n1@H ztv}Bd9U}rGdNtfCK|c{ZI%UFzzl&zsum4K6N4do(?B`3v-Lod1ujxy-t;fp9Pi&CV zX@MEPnRYoe*PM7iqAfqhYf?Cp*+z_rC3cpg24JkA4)(-}NRFZ4PBbX0+33NInFSp7 zNEoEB?2NRA=^EaO5;yn+t8c$)R|`h)XLn!gFHF}9n$|8FyKYVY6jX<>nTTUzVFAgD z5v;}OE#FeF6NHyaI*xgo0&|@9WtQ@bYlPJ;K5(ey!KY>&>7dY=l8iiP(?k|L@&q4( z9+{|Lm|kA_#`bx;Fac&nomrjmz;12(PPN5a?nzW1yFl^XJtj~^iD_^O-C#bgEQyw( zoH+ew=7XxK8D^H%9g!9ISS&V@OG|nOhxUNUP^2slG7-v@n5NxP8dgELlyrOdpjq3+GBVgqpvGi!UqC- zc`$*0&5>@BQ^e#w-XoZ}If*c0fJ7llm$qrcO>cVmvtF7q*ZM_Mk6mrW#!O3`d%FIp zd=fv+X(Kp-7W2;=Ncts66i6}*Y(+1F>aTnrVTi$f!H=_{m%!kPo(89{8z2FNSE95? zTv8$>iJTQGX!zsQtI{i#tJj;c^RG0HC5>hud#k4rV$)4k1<2L$f_(O%t%M{gb4)vi zfK-2RS`M7HeP2ni@_xx$AxjsQEpVE+eb`d#2*>_PfxD;@-D9rn3`F^;xY>TX+ za_Iyh(5FzAc;+WO1J$SxC>oEhG%>Bw_c=rL04HXEl)_lF6-rS}#|>9`qCyL%lUHP* z9W1l9WsE{i;(1T17gnel?_(kF2NU$saQH`mCSJi;b5`2l@HCsj*4P|(0C*hEYeU3Arh1z*DwhaGJS|`9>sfC=Dp&7_Z8=r2$t)+Jn zsv@Hrm>M{JvFj=Wn)_)n$0J+Ou#{e{i$J#Z?027$p1Ul_xW6j9_Tv#p4qU~^Gb{e5J;ahDH2yMFXpj6i9Rq|2FULzg2bstUzbzQ@Q*RYx5UOa3vQI{_P36tweX9#qRhSrW;`74GqJU!P#9SC#c;QS!9UG!#|oE1*<^UYriMC zIw5tTv_rgYnK5GNcX=2YeD=f*O!7!3^8ui0AUYXZR#{GQ^?&qxdWo!O~18zi;d}UoZ|@Kz}v`hK|=j;{n6ZCyf+}UWUp)VTjqUp-x z*>4T6&PxO1kI&wZ3>}k>+EPkA_)Y{Nz9R1$ zS43L-O&T{u2`6GECzjdZnTHell>!KXpVfJ$c!q|wUYPK``0Yj_20Hcb5Az=LA$}z@ z_?m}IJce(PI*$EzTveT1dqa_hieF#@H&lG88r$T_8Ajg-Qf!n?v>(g~s&dwAkAA7*u$ zn=8(&S>mK?R;08ik|DiQef_@t^Zbn9zdx9go-jbfo-khm=&!1yZ zfe%iH7)w*~Q`=T9`r7X&rppaeXVeosRs6M?!okuamd5YDiCn+>s7cW#W}nSxj`e;> zvD%{#Go;Hpbm}`#;G8+xYNz{xk#l*KK~A2x)=T8d+u+LPZ!I@?yVHbevrzfH<`bMA z{%03R{aV9=Y}tNjl%Gj&DcSQgnOkzO3)OCu)cD3`U-}>2%96F*l32Pye*?Ig`5nS{ zwuU??22Rnmn+ePEWqm+%lPQ(Eh$tSC`aE9VbCUZac63abI*!(PeZh1pI^JYVk(>0! zg5`)H&*y@F%2KRP;F;0-{gUw-@8SihJ8jv;+mE2UZJ*u-VhDj6DDUw}m*JYF)Nidw zgN`9)hFV|}d$$YEMOlnS>`<9rKL)U)OF(gjg^%8KPTlZI2I;3yA}>8w3y+`$xS6>y zWi&Q>cg(98k|hh0|A)2R(hJ66A*N``wC zC?bG~u$hn89bwy<*lqSe`^x7RZ7X{{qRUKFwcizguSmiFv$M+@!F$rY{J#KOG16>_ zT!az-Oh#H?+XP=Ad-)~TRr2cQqR71N8t+NN@uXXqL6|$z#Yh*NSC~_fTX5{PVvpy` zX62P)tH}bBrE17@SahJ^va@5)n{r#p_5`q|$mVB;r zDnt`f{AyqR)@Ki)>`~38%2E$!2sM5~JUXxKM+T$kYAb#`OC(Eyp5Bl}nT&DB>4){-Qw`o^_tD$DiTVhf{%46C9K&7_3a4H7=-H+V;g2+iHZ zE?6ySZ#e_ct##$h-`4ad>*x4exJBj+WP52MS(-Raf$%@KrM4|$uX;rN+OFo$VlLR% z%N7o39BSd@0Xfff>3Dmgn$jOrBc6Y%=Qv_e3Z>t8*av<~JXi^xO2+D}H6WDl=1C}U z<6SIhuQc{f=NFnN(0i{9Vk*v2SSZ`C53`0SsNk{W|DyaQcF`Mp`E@;es>Up1Vv)dr zvah&P0G&+gHo|-Z6G-N~f>eV=hjFT!c^Ehil;GdIKSwuRU;V{c+X)kaPx ziUMcf`gpoqb*YGL5#svRb+L9S+q4Lp4-+#R%M6W~L@Iehq>%%7-}t04VVfBA9FOAL z7kUdkz3x}5h^M0lz>_4*HsP3sZlPH3y=KQcjB{3t=Cs zu6bf9T~$tc_IhJ+A)@#b_47})nqO>TEk9OpzX}e9Hm@z63Po(R!CHL`h5HsN)+y>m z%N7pzPIHCeb)WTzqj-Z7-Iht~IJ1FXpW&X`v4*{{Y=V(D0T03(^(`O?ECtU3*5A+* zds01?wK*T&b~?hwjl*@0_@imJOR_IAyWGAmlO~)2LU#^t9OigN4v@KA`_$&G5(Wa_ z(!R(8vfvp$pKK4?MtWH8-8!_%EJod4=pKm@wE5>uWtnP>uM;>}mvUgdEb?W|4gGM! zQoEgXnY*&l`Ptv~^AwK0OS@xH3E^aB%}IR-0FbczB}B?-z5AJ7%bMQa*J@Z>nN9;G zn+2h!tU?{XSgbiqHIuWwGoCK(*4A!b#Vd2+Og;bK+v7D|qZLL;)BQd(P8zbRbrT}1 z>)Bp<&C}VeV%e-e-{|boUww0Z`C-&;lddf$cy!I4>m5kD<79fF23BWCA=WArs|W%? zGbB{yXkP^-zZ~(O>}bUqS~laU)hhV5ckzwi2bN=vrEcc^`Mtn7U@vV=UDnR;r-Rw= zD$RO9ZHxXuG-jo-4CzyqcZ;lUQJ*ND{gC+Czus`!LZ*8@J$16La8W(mSjh_W@xz1p zFTUVKVi)qHGPR)NFBpt*6kmOoklhjQBZ#{Wcks_PTeq;W)zYi;>yq>@*npdgqP=^*hx+8`k>egYaggj{VtLt8(VdN9ioE zSa*|(@u>K})>ye!#M}5WxMMMCevEE$jsiq}&G{IaecmhS$-v9&B!0Mx-*G4UQSo*6 z%@tPNnTL{SjNIBjg2TK<&&kJ6bu~jVQu$+Rem+8^owguUGb1*maz=1Y01D}P{h|5x zYISz{3x9>=WUHg_3pGc_O4j0qj83dp_N+FdBNMIQkJZ@W`8BBSFAj1-Z(M8sNmf&8AFtiZ_}<$EK!P}K%b+O=NihvZ`H;n zR9l>;y;9Fux!(xDgZ2vz?bIwfwHob7-5+O5K<&QDatlA-$zsczi=?F05{xWHunp$> zSS$1auN2ovrdHvr(oL#cbVydHBOq^-|!4mj}^)*hUyfA6qeZ$V~m& z+YgGm#|19-I(h;p?&9I|+Oo_a1~YXE^3AmB(U!^67P@h92()!sL25VdsU)cs{n)*; zW(BtW^=6gMcL^`EHBK{|Pu(7j80oG{!k~5n^JAe=6Zt`03L^lP>gS%t5pEycR_%KT z;#@7+mlw|}ugS4A<{h|mrkV{q#qW!>vpSf)i6(H=M(^y4wup_8Jdm_i8G1K5x)*4fQOS#*Q(Q6f@-2Qx z&RY5?+tgoxx@5r5ieN=v-r~74C;zqwmEQ$TU9U$~KavGWI(#+2pIg(~uO;VZ_R;3_ z>(4|&o1LAVq<&2l`hxB$OU+@pbeCegJt2~TUtc68%k1>^s0Z*@JqXe;uv7}4oHaW2 zv9Th#U#dIgtQzC2PN+e(TdGN0?i$5FB-1amcx?1s{{nz-h&2)W>`#(ksGdncO$tp7 zx9!^xOpd(35Bd%1F(iZHqa+WqL90=fs{}0}2agMG^d&uYk918tyaWmfjPsv9LC4fz zw9$B}DZEwWf@a}SDUhpL(|KRri--xop>|#Fdk^MKl@N~oa7-_m%K~0P1{oJb3&Z6$ z-oJKqxVw7mYF2iYeI;yhRV`t*qw8TR%GTVp&!E0il8cZw(S>PY!|i`%V~L*skatH0 zd4@O3_=d7xMlGh2oAu3hd}AP!29{JTRF7u|f9Y|whkx;Jm@k6)TioxPLkXtI%jAa< zbZS1Bq=hA^54_=lpmPF^3u*JU^Ais@ibk^}X<^0r-?}-uNcI{<<&kv88~hjK$UwU= zzfn@p@{B^VwUUg_9ls}?5#7ixZDfGG!`6Eq5sw>e3g7eg)vWomUU1h1B%3nA>7!XG$3{q8+B6fWczdAn{77LQZc@Oq~3 z7}T+r(dp=R@VmRdAY<=D|1DR&q}E$EMr1-Pyx6N9M~4Mu3N1@hQFZ#EwuP}{-9ZTP zG546>bLm-hSZr!JhwkUyz(@slOyoxwg}#&42_Hzbh~V_7v7((a=!-hw+&@2oF+55% z{0004NPqv%zol08AhUO?=wCo)FNWoCG&3$vBSC&B=MB@E0##1*qAz8YmRwadZu#eA zw*+6^6|hRAEk*EP%~+j}yEhuv@*WFUIfa>9+11f#C&(r@z6t9vI{O{1@yW!0gAUye z>h>c+oE5rHS)TLcPQ{*0OGA7vbeKF6+86r>HF##YC}l6DbT8hM&r|xny1}Mi<1KPx z%z)z*+WeJs7IPxfxWw66AN$ZAPlxNX?h!u77>ZA5za_mBRQBgtE>Y#t!8xb!DrWDf zUiPa+wxfnAY4vI~#1ehR+g!OD-J1?34g}0thfZ!Je}}1I?vL;$NF=+vrIxF%6NJR~ zd#8|Jl>U5bs%c^JJ(&T=+wtdotCn6SMj%DGS}b|~^_uORi~f3B!|CJ}7d#4E*)ClF zz8lG0(zTk%D6Tf7uo|Gvdo6Eq1I_pRq(@#f+b&E;TGUOXuj|u<35K4Vv+Nir9L&kC z;FeFJfwE0a=FY{DpGJpo{Wzpb4*014QE!;oRfcC7JMAc^d8wq8v-NF|{)S{uW{w^O znB%ZIH=b1 zd*P3+)&zGJq3`;qcLr`I&&oq#2r#q|K0Ukt74mAH@mnpYsTotx&lC!f8l-6_i(J+3 z)G_5*m)Z8Ss*t^mcgLADF-X^6*-Gu^roST!y19ZnS7O40r`{{abUZsb(esf`9fC;EljT?HIMiU`2HB}*>`YD^Sl2wN0poDwkx!f{W$ow-+K80=@Hkxn#oDh z2d4s0qG`l|PR#Sm5^>foQd_##28xvJHc?R_6D=1?I^7!FNIB^}v{o3>@?`FySHhh) z)&)-xTaN$2s5ss9byh&vZ$QrGbWxu~D2-*KmUq4D3bwbQ+GA2FW@-EL1Yz|yTD)JY z^d?-G6y$fx_1oz`YfFg)oyz%Wdb^D%w~YDBYA6HbsCPt#Ly@4xd2pJehei4xH53_@n206DiW9jzgQ}) zv=I>8dVd@6ieBaq7ft`mj{D4NVSEaa@Dql7gxPxmp$Rr>A__|T!Y~-V{(KFd)bo0E zJT8!eSIVnRBE)&Oo)q{@HK5yC)Wg{iz1BtN9Oj>==v1iRvSz8j16|QG4ypq7w5UUV zj15SGjxGSNDeK?4Y7O+>s`|JuR4+XK9@y|t_R%|P_*ABqV5i>A^+=7i0Hje!Yse@G zf=RPJnUi4(nSU4Xuv6yl(w8;E0Y8g%p`50S{SDC@&#M;XmPtV(+CQtBrHGMcsNpFD zH`T#?D6_cNP#a+a<1I%5Z=>j+VeZL>*jB}!)lxXu)yB<-)aL5@M7I=gKC9U5R~NKO zXn+5Q`t=k#ODehU&N^mP$pCX9bKDymJE2p4!<$Txw({LpjRi;lTZ zjG;Oi;XuR-(4&t4dZi`KFM+=Rxb4>Kee~n=a<|tXV;47Hoz#fb@tmb9XvJ6sn>uy*MV{LNmn`GrmFhQZav4==VYfU$S`;KG2#p^5z404YInwOfA-`$tX*Tl$L-c_( z-1slm#=z|2C6Kn8Y6p%Evfh*&F+TGd+>+yD)OQB5av|gkQ=6&9?N-EXD+K7PPk$yk* zB#Qpny2ZaU+r8ni;d(#W9`Z_S!yznHCoBQlFd?*|l`G41A=2lqU zHfB{``N0#9@u97*e3SU>gZ?RIbCQamOie%x6Um9*xL!!nd?^X`glcMF^y4wsAjxl682qztQ( z?8IZFUqjAb-SPyfo>=8mAhoJ~0qK_ys4>_#rK~uRS$zJ(YVWQEvYXj5@4LrrC8wcs znWq7}izo$e84I^g{elBNgLy5H=3aHnSGnsIyonr%97smQ7fZpl?X}onuNWJq)z_qV zMNQ%J!q5oq5`XVE{H$#buRe>l&peVEL`$Rw+S#QSGcWwgZyUQDtFUKfSYz+fX1I;D z&2nHdBbs?wUv6{gH~yL8Q7|X>du6-XU!!hhC0A@7HeYjQnR-!WLy76m(fp}{Mxl#3LAq;M|e?|U(3|Q6i*Aww7g=BRlT&69t1P3j!^5}j`fc1 z&S+2Y{f3l~Fz?$+Lus_mxOp#)9~ynXqF!KQ{#u_{4I0iZguX&L0CDl@l+qCRs)Ok3 zPeqd~w%vH0CfUQH!Y1;=aj!q5g6Lj48itJ>@^qYic3lnX=1z4j<`BKRs`SozDA5RO zb%P+BGmru&3Qs1;KTHaIYF%iNSjByKYZz>hKGlygs3II-S;U?gnJwDdRj~C`>wSz= zYkYW9JFxGB9M-wl(mT!Wr23`NdG1L$njn3MZ`{UE$mjMO3JAVOg$JmMPM9vD6p=**~_UvJ# zL>1%Jpi~%7&uv$+f+gfru%Va{Rf^q05%DE|+9Fq2iqoIwb00$vZf6Irx6*ccN89=N z<1s=1yI@JNt779kqO<-{^bDKm~i63Mr zh$Ye|p5T=zUVVaINVT%6ZncHb9Y#6RV64@(D)js=CzXz)fJ=aBby#b*zK45qSua9WFt`;iR6Dtna2domqEXLrW$6xFC+&q&=G#40y?qtMuiw z)z9u6LATEe-c+<3&K%@tW}@~RcIQsh)dj+TLSGA59Q(~KwCqDTs#U4}=ia%>c<6EESY=j^RqK?S15xviz-u69z!5UE68- zgJI8!#%_|18~&4N)0#?B@|^;EEDKzm$kyU4)?g$oHBrRjFF?w#$J7tH8(_Bxdn>SB z#=|QMX{)kB&iUpPa$QsBS5LEc3JSE8W{|1`>nl3Rk=(@%f0e(Gp8kem=qspYpUv-S zx?ELPp2W)hH!AaP#^m}1gHR};J!2!27tuvjUkH^g{ zCgw{U{)RNG=j4$$##c`;jnt2N7byEZ#UrO`$I;7GFEscR+Ie8WZCo~{ZU9G6-<$4> zpEtuPO5ienOF}L9oxcAv7Hu1og7VNk90kj024Cg6cQOglNE0sY0kZQU;iLB> zPoFmnem33hFdV#m)3q~H-wiUi(Bb6)1Z6+VOI1-C`)1DaqLEWqRHOQEt^&$2XT2t6 zo9etMD!V({^Yi5}^Jy(CXPZj{rrC?M&wr+zKrIZJ*4?YrnLIktW1C}8*M45xC>{_g zmQr-}<4Sd1YxB-lqeah-W>Qk2q;@UE=;UJ79#P_5x_&zDkT-gW(sN7KYS9=;&9!G~ zLn`QLwO)o{N|f~Abx9O=QuiA-%)T^J>e?sGUF49A2{<;bJft-mo`63p$p8ypzy2Qk zy#jVOUppae>Yryuev+)|E}|axQ8C*AS}^gxFnbEmyYVY~w|wI8pA9}EEF;kijUiqAjzbzV%+whI-ghqlMeo6Z-BR&(i2 z*t36mTUoW&2@B7f=oIJDY5)9op|InRcRM!p3lz%V&o#{}-oqoqNi0^3(E9^Pzc64_2 zd1&1y$^p?fpY>d z5FJdrdntxI92cV=JQ0+d&yX>c&0*h_M9%+bO?~Sx;7<)ircgBpR+QbwfOu+n`>bZ9 zn`sEOzOeYLdd{_Bwcxxcu(Ljqn!ZU+4VHTS9FIyYrA~?0lUfs>oD<<uO!jxTl_ z->DWUKbGoiN!bjQrv{=<)DGL04P}xdEEG|jrO>ER5(9T_+cnKi@@e|lJ~RxF9{To` z&>G2X>inFk8hTE>G8x6{&$@1yhq9tc%J9sn@hEJphEUNszBH9fE0l!-Jpuk`tuU8h zL6H6qHu5>MOjISe?Evw+TyO7Ighrz|?ZGJTs~q0YO`7R~E+?KE`NIn+Xy^O~nL~D+o0p`5 z1}OB;WUaf^SA@B|i`sf=(n@7@-8gFuX@kaVqEDdSq~9hd^b+NyqR~l;gMFw&%2$XM z11c14fFXQpFE7evjXokcY z9>4k2k6;fvQ?A*tFdp}Aiw)%b?tFHBm$hK_!d+9}Md(NPZwdEr_0tBKoJZo2HD_!4 zQg|V-JW?JINzC6In71laq&lM}iNEzl)7G=u4{|NFW|M4YQ+UU}Ahh$g6f_rsd9OZAeLyL3qh!ZYguZnnNxm1)G^BZD#7#OKj{pi z!R|$#t1*rKb9f94%XiAv(>ikk_%*8y!}s~kiBcOJu3g+3ZP~gIWi5D2r=YY1sdrYd zz+=wI95EA}1>-eYv90$~J^t+U7;Nt#^R(~noO`W*AVQD4W~$n+x#bWsTui=}Fn;WX z#igZ%JLP(8NX%yyHJ0R2YjW3RB$n%zFZkJ+DJ|liS2o7=Ybns#X|)AtEouEx=OS;B zw>EI0k`?OnrMar9cJQl4hm7ep2OYM#~x3lWg8>t!$-MiMLwWiUQYlrM`%^ zH90&5)L#RH1CkoC!pM6X^QZksdE}HH2m2)-!D)`E;>iF85(aGoOoenqE+guT;imEXFumL+Cexhe4j+ts(B=$k@%QA_*x1PTamhcJZzJZENU)u(R*d)R~X2x9e0VXRbr0wjRPlSw%^T?W$z`M<~P2$e~-H!#C*X zb%6jgSGT?dwrX%~ufF?%jg6B;e!H2Ti>K(p548zO_-(Xrcpyf6&mijTc_gtdQRx27 zutaTq{LfKG!fr_tKH+Y_ZW9-Qci&Sp+>N`L?o-cau+pX4Qy5S0%N(<7vd?Ucm~jl* zUaj5Xd=eA!v_vc$tM>!`LCp)FI@>JJ%U0(ND5DJU>$=SIit}B8iZ1z~F1{6v^eGL6 z;a+(iXrs&oDTQ*+y4!V*G*z901#Gj1nwD@};+^f;3ujClI*+He!#JQrqD$e>h{yM?Kf#p>;z5Y)YGb} zd^IYj_Jcw%H#^T@d~Y%SP$Z*&Y~pEvTiHxv%EGPPC@9*xZfPk(%1T>U^_<{?w(Ya} zh4E0^b@mOX2kB{UmKPi^42#~rRgAZeL5{pdt4b?mbJ3-BEcSU?TPO4rVtqf?QqRi6 z4Q7%{0;*OIt7M>!C+PHCQGbQjtF$(FF?FMf6P?q;w*rRt3H|~GZid>S?xT(BZyd8I zIUHWT&_tc*FRGmEYW7w`jjn`GinmyCj|iX4@KCH7mQ2D7BVpMzbL|L9#Cu4&8e7g} z;;7!6(VpGJfr%wZ3btDE2$tF?Gg0f={zrbTdR6fXE7mm02;Jn$Ij|GvJ=WN!(Au}Q zd+zrMkJBHmr5t$%99zmboyLJVR7xFujHN zgAKn>m|;V2YSPS)*Pn!Az6u3fDD@q;s`nl7v81R9E1qi)&09U|?tU6}dcVR+k@&M3 zFRYiVYLCMKKt=B|mm*Tt1ORj{$Zb)r_zyNsmwcPBbgOSZ!s>_h>bQ!^>SkKIf0|~b zjTRTU&bdx64wmTh`NX^i#bKxBI_Ce-b$_)Wfurx`NN7u2Ntx4}7uHr?%*UqNo*LUQ z`eOQHd$)SKdsfhyigP1}zVorayQ@ror+!<0Ko|7VgOgAMa5UN>K+L!N5IZs|tm;|s z-u7p$p1!Kubz#q$(1Lh+8gV-{9y|QL7ZfO(^FecWWAKO?C$G0Vo`Qv=Iw1VCy`Gt? zo2jzB=lfrVfC3;OBVqz zlL@ZhV5HXtJ&P<@>gdbdl3g7lDmtR=nad9E=!b7sU_?_V-qfmn5Vwl>=f9&d~sRY#cQx3Oqj1j z6}tQ;Wm1nT^V&O6_wZ+aesl}YcO;lW$=5&qXfw-+E`hC50#v2%V)(V{@XOIHO)y)Y zYe`{47Fu>8x}kS@5bMY!LBu$Jz|-Yr{SVv*KH*;o5-{?WwX(U~*^&Xp0IaFi?ycSJ z{Dy)zf;Er1EoT1C-O>UMTzcMQWKi6qz(VBcYPMh71~ipRS4$s7E_7|1XZvG_CArJ} z_NsDSO;Il!3rNvlV``$EdAOhp@z$-9UJ<75ycg0_nC(YuTVAI88<}tt&MnJ?@kyKr zL&zo>PsZwV6X!YsH!l$+0h&5otl|9FT_K^~K|tiAA>6Hb)Nau$9VM*V2xhj9sdhwI zbJ3s7XU0_F(?_c;CskoHgO2v-e^;cseAV2Z=2ICGsTUWMH%B;rXAIOg&b2ivdg@?! zdXpqYm+R0dD=o{lIylB`YJJzD5=x#S6W@FH!F`pZlZUflX4-QeNf0|*q~BcWB*-?B zXY{@!ml|UnN}d+O#EO|FJ;R^E5CRr>wQQQ?uzpclfwO5IQIV>J+l!a2FAyG}p3Z|8GUqtDBg_|3R4l9t z5@%aJpTWnkH>ZAV{0fB)6-mWbPdb=Mc5p%G^vQ|k4oGk=VvDdia|Ud1+Brm9X!Rq!1WmEI83a>P^04i9W%zJddRT0cuP zy3U4I?NXp$GH0P^NVnkZwh36%sVIi4l!5k?eKXvsG3Wby{xFqibuvCslV>d_r4{I+@58}^0CA)8u@qA)> zye(W`-7s~?UgVRo2m(JWjz0w64%@psemJyW8!ybQIX808xtoP%+6i)-1hunOtvdO; zYO2?_L$I}g2=b&$ObdR}nYugruS!O%#&KHQw++ka7_CVWLk_yWlm{g$#==@h!0O)C z?~bmjPNF2e{x@wQVKJ73$QE;=+$zU4g;?^O19sGOhAt+JB~D8_T+q2a_-;CADMyr| z_NRA+Q6tPAjC>R8?CwU)1hr>3zHPfU`?Uh`I=@Nrc^U?OEL$kNX0%AOapv9L;BjPA$_UHcWQl}adn(yA`uJER+Z*L##{)8~JZUKteUIl^TL4;{ zn|Gu$dV?up>#8xYamnOlDSGr3G};7h?>P10`luTFYHIN1Z-)pXbq>b~@v|s+x7iFNRO* z7Y5N!@>Nbco9a)-8*z#;W)R^}13spp;9eQt0yagVp-Ww#A?KNMnf0HYMP|xoedVK! zqH*`%!6;)le6_WGdFtPr1iNUZH5r%7s=6;Z@jy3+zI#dyp6HrJ{#uqu(ADMU5KlI8 zH6vd6Gj-^EN7v-ULqDC@sNVF^#-{LgvbF%04bo(Sgf8RaK^HvvGrWBw-oz&*De*EQ zlpYn5&yFhZeNz^La`E_fhp+A`6Ul`O&UATJaz5>AxWD|+Z7=z;3*J~XeRh%>xQJ|N z%(Qc?5!7?5&)4SH`XR@6W0lfcZ^Bqu+v7pgSr)9;@TjRXQ)KxL!M&7hsGIK`gYUKs zo&VO{wls(5re=(%rTv4^C zou~Jgfk)d}wcD~2WwOGDHLWbYGkj@iwX-lDzRyKR+`${L%QV{|rO(VN*&qfUt#V?v zU$BDlZod;LzBWltuk*5jCZvJaYgH{HWMWn=>zGd@FI*JUa~R_|PfbUP{_?7rNsLXV^s6N(u>s$NXI8nBL5M@boCci6?lZNz^7FqcT3LtponK z1G%vToqp~8a3<3{6e{(OVK4q4{3m=5g|R}!z51n8M*XT<}+;a zCuk@nE0i%Q6osY~kH7(jopen72l^+?PNIe(J57i}_34ipvjBAgtW@a)m{xhDBvGKH zLLZ`R$M`_f)QFgL&Ov2#_+z|ptrXQir?%y?ZHTDVs91@tpyiqWU<=8R9Mp7M#52ss z6dV}LluGQ8d0U0?PS)$iGndUweB=qEa88|sVH747jzR_UOApe90xwHZ7(9Jm795ts z4+zUxHtBK>vbj1qJql!s!oukT#DJTfQILeKcnS`>Qd|uzF=<yU5YCW;hD9EjC^di)RK zWIbQ)Gc!6K_buOvRuB+{LCi;?cu#1p46QlAC=%0_eQX>pYJme(VAN$Z_c_MS&Kl;|cIO@zvu>`bb^y4J`x ziqPL#BPQlSq-3-$75|vf2C|0djmT7#l|#Bon^34x=DhqXv=ui|_b2X;9^N@!LUYb; z-Wf&_`93R^2hg2Wfp1k6(?OdpJWMT&)wi7Ca_rK*Jr_@1pEWc&(-gIDxRje`K?F}7 z+C@Ip=34L!mv+FXTlsR*eI*xjlXOEGgE5STKZ~xnipRmi2i(dU zAi*Duk#v9LzDST~d6#76GnPOT@W3UjkLD~arX!t1#iY7Pg3Ib3g-N9gEJq1EI3^w~ z#?#t63SFrJ+fadAl8VvO2gvmQv2@mPO@8nHpGYeq4bm`Dx?^;X9wj3Lr3M1hB`6KP zksjS_z(^$}mF^lPDUvcklvF~0x1aCtzdg3Iv$K0U*E#39Ua#l<>@dOjoi-0B-U6*V zJg%rkLc~eNT?jZ!x$yZ_hsS|7Amjr=a;>MxLl_=$G`WHbp6Vvx5&t&@k(_44dw7h% z*@}>iw=&?3#eMcT=o@`-1tHVFpB-cMYnPlIKZ=SYSPlpoiHwG*jcs+b)kfbZjI11G z1DJuYB%`oW*CI&t2k_5)O$D((p?G#5m0X3-nm!K9Vj7&Gp}l#=g=`eQ0Aqimi|D_( zrEJ4z9Krh`CMB1AyF@J(6qWqv-$bkU1nHNSSZAdHT&#h7t6CH=g{wZWN+R{Rj>>ub z!n&L`aA~NrNojeR<2|Pl5Ou;Qzcs zh`f7`lUmi}LnQ6@ibNIkDgykBe!_=AXmsj3+*N0ZQ~*OW_Fe&HxsRdlFV_cMR=I%34ls;pz`s?huIaa%I_xL zdlA-awl`OeW0=m{`>$I$dI+bMEtM2wu#Z`^Y=d&1zMk-&koNazRYV7G-S)PZv0`R$to8D$* zbxpNwvYuBc&GP!v^N!NNSs^JAy)XA*^$7>%)nZnKAKG(G!4k6)|9Ou@2fM-VI-Y@= z9k{rWxD+2YQ^6GajJwUR<(wY2j91<5A53^^&1BldUrUQNb#jwj>;DW}wn2D+87kzl zv*N4oRd#J*>caTfXb!N=rUF`%*jv|S*S|3N#CPaKTiTT(Mr-h526I+xhh2MA^=9Bh z-{CSz{kpk8O>M)=p5&(Pu0o;c2gk2h@5txuIS6 z@080Hx?QP%;y>jfm$$pRn*F7UhH1D^gs0qaF+Y2M&2h~ff7ehZLk;sV4xAb1HAXM_*fTsW=#Nexw2`W5H*B7*3N(A9ArL^2cE9bA<(A`LN89!-d!7`Jfv(t0 zfKcV&oc(bAEbg`G-AAcuS;{)$ln5Vd29m&IwrCX^1-2GSFfVIP#2m8;Y5IppO|^vs zg8#aSX;Sw2h-Hg@S`x(k7sL%kQV&rQM9}L55r~^DfBfG|4A#1b$fDC|6{L6S0bzRT z_?@RMoj+jbEukDwP|C#Y2K$qCP*k=#9C@Az{U5j~BGv*9-XY1$ZA?K;Mbok8z2jN{kx6 zJA97!j|dV0L}4ZpU{f-7M{ySj$0m2@l(K0-ve%om22Dr@0V1N=>?eF&b1qxovsqxd zq*6fqW?*}+x_$SG2Q-a7zusWE85=Uh&{JW!PiPfP)^Vglx16Ki5`@eY*Hq_leO-@0gAj zX(}+L#}EE-7r3hv8LTLCNr_CN<`h&kcDNY+f;2Q*MuY!_ZbKl>CiZT16Rk06y8Fr# zdE(sRGB$Hpe$B%NhhuL-u={#mop?D8Ly`A{6gT+!5bn_VxqONsr@7~zo;I3v^eX9~ z?7IlDHqPeT+G^FhAD?vabf^qJ@gfvr=i6ixLwgAX_7hfh?`?;rQmqVe9VL1`ryZ8U zf;m$R_4#P3DN9~Za|(|LEnAKj~_WP}&tjo89g8bU*ILLYC& zjcvz4f(gWOEBeul$it@vmT9L{dw|TJDaXB5Zr@Tp0p=tA!aFtl60g(5r@%A8$>Ln8 z=62}`);f2_^Lv#YA>7@VJM;FdVjFBiI!|(}&7*uLBqODn-{UJ84a&h}dgWQOb4^(1 zQcK28h#G49?VZf=9Rc5Euo(#~k|FSVONW%K#18YEq1eRhC|UP=fqGNx-R2#mxoS)9 z*(Q-RzaD==cN+he2wox1?P^l>dma!245NqY>IYpM?!VLLbVqxxN9$wF=j8c0@^dj= z!u>ZX&^wvztg+@Z(dQ-I(KQv3O_f(Y=GSEh0blASH*#ME)!qu=nEO8AsSZbyPPxK- z#E!|sIO6%wV*ej|QJFSEmj# zgc>*(X|wkL=aoIk*A50e;KLdozDUQGQ31nAbgbqCd-N5igVdzt&F2Z`Gd8m0f%rvp zpD*5ojx-F|usy@Q)}3lEyYG{pIPie42bqRUd`il$o`0DD>z0d2C7r`qXp3%aa^VL? z;j>QTtFfCU$T9vq5r`t>9_VBw$gzCgxWn~664==N?@R=?ihy~4?o;KC4Am4Qr0fM8 zrBE#eVg@SeJFt?TLP(3FZhQa0KcVB&Cy(lQw_aN$I6zsB=# zoc6PaQ2tBDq{1V{83p zfhiB0IbWn1Qehcl6?uSe86s~zOT&_wMumSJ=0&hwOZXBuK} z@MFfSpZ#F@48YGiAgDD2;hP zU0U~g6-yb?YXmcYtwpjd6=jN%mqKM})mtJ?C14h{ZIH+L$PALxLN^OruUcXp2SigS zMO7L#R`>LyDr`c3 zqR{1H-^gAJ7-+wz=a+G>VWX)Qhm@<O-?zE>97dyAT+}VSlSI<6^l5VT_t`Byqnz;JyZ(OPT zd8IR+%w)TsJGa8mK$837&L8h&#NFCr-Lqq6A+6V@Oxyba+ThBbxTl}J^ZrvR4PGMd zmaAB*G~aJrQTt56LTxOEIOp``ECrthMfBRqTc2W#znqMW(lWZBQg`eTABRvJHkv4t z1{J!m1L5PU3{3rSw`Hx;4?%|_*mrxnUTdvn~tA}|$n z(wZz6Mxg(@L<<)@Oj)YQTMdw}5)2m1zsW*Mu1+Xeix?O*Qp71xp*}y6BT{*np6Tta zuS{jcIy&kS>?-UeU=1{G=I1c&y zACxs=NrcA4kpI9}dt)C?$V^`U7xaL^g8i$bS{`*I?5UZE(t9R3Bi*yu5w#ByKwuIC z1BvtPu;_w)=${a>u5aZtJH z<(p#vltgad+jI8sWc&||<*-2UQsvV>ZkhE9>JcDlYdq_J+qRFVQA%ink=qW8RXyV& zW6s30z8No{tI#!+h2L|3(dA8a;2r%YMwdr0B5aE z6a6al<32;;^_U0dbhJWI_q#25Q-Bo4e{F2v|LMu>wzY6`$jTX=;z$J|sg_J%@ikp! z$|&6v7y#n|Bl+cEDvC(w1Ff1PnHO-AlF*R#&X(OrT?Vbfv{rM1=zY?HK2IL4#Iv*f zYkvf5jN!2Sfq`zVDW9;jL#KQ*Rr*qfH9^jW%_ z_0wsA9q6~|wT{ON9?%BmAI)m>O{o3j$-^r?P@l z_S$$5U!-j83}5{Pd3rqYpbM`tI+#GWuJB}q&Z`YTe^e}|J)h^f`tvGBGPbW8ce`MY z4A~W{%7ZM&_yF5#T(kT0t5WLXVH7%#qy3ry`V$u&# ztLVg)KM)kaq`=_%%NaE32B{jPgWV?YaS}UmGsS36gCVNxw zO0xRWO(}%P6_@js;HwZ2J!J+_hUK|H399{xMM^!kD%V#f2igAqnlCfEOtj?yB$=t* z4A$X%cB-TPDj#=AMg92>(``i4(L01DfpmAa2e!WzQJJ2Xp%FthlZJG9WZ)O7XG_*Z zq`qz){xnpi1fp`5XxKo0^aVsS|3t{|<3%!7DCx-E@7i>2ZN}UEty``AG-j^@BXNS55O@eY9b_)q?EK{(e_qA=W$3>eE8AO+d^_6?Xbsp{SHu5Vdjf z_MV^ozTS#w)N06xF_KyY=Gcx9C+a*`ohL*)eL5Em)*-sFE8C}9UT9t$5_Ah8(l z5Vv~a5_`bwNK#%!?dH^bgFQAe)eE=ins$s?$?^gV6a1jv3$x-US-nsJ7Eu7}Aq5I5 zEzpj(UgJi@9;hUK0!!sp&i)LUs2>LwnN^fEn6j+Hq(-CQ3ZV6t;lRbjqaCt(mZ5+CfjybYr; zwiTlg40t2dwUuLgZF{Zq!K2DwDGuSt$!$tb{>{-i1Xj|JSB-AwAGD26-o<{;QK2CeOxY>pxf~sp??Yt{9P!@q2_#hquD} zCFA`14QFr4jpN{f%W2?@*}gS6*7voBFX6i6e@`w#i?8|D3#(_3S2p7+GLPJlp(|+t zc5W>~Ow9%ku@5y8+wYz}8r9b;5_5+Zkz`*s;60mP)%wrP=sy-;ANilfOdh_owQXzd zvo&Orc^%)l9U@+q)u&)A8;_5Rwb6l`Xl4FMv>c^&4k-3LT43n z1^Jzp>dV%r>)*52udE^6w$+a_W8T(e-7mn4FlqGCt%`vzR82NiID!R^ltv#u4nnoq z*q^oR5kZojPI1Ia#aG&sVfL$4okkUYY#z%BB}_TmHPh#w%bm^ME8TsCsL`dgrWX}o zG6S3)np)2Kk~12xR5BIoxXkHv#q#$6eCgfuO;6G86N1+mMmbpMxrF zy0Hg_Ve=H-WI31|dyUS~6{3%7@3V7g;n{mTL?5HYv{6JH=OZp&+KlPv2gcz3^rRB} zERY;D?h92_tr^jq|GxC9m%lgr3(8=-#frSbJfR00u)`fF-2>kcDW^r1ZU(=cvyU#k3G)_UhQ4Ai_@n}MdxQ&Z&lTiJg>0(Ymro{y-`knLqn@Yw8u62rVjEr=|% zzdR@}kq^3PRW>A}C3zRNpQQ{1#r*&}eO9V4C6b%M$2!PXNri_bk(iaebhf#bm7Ew) z?Vl||-{aWw`B3riYi}_}vQOhe9n}*?YEDHzb~8^*-o5R5^3r61FHRe1FoO>I9u!5& z(sNxZX*eO++57A2snPRnAfWB5O@1V>H(fUp$>pw|&SnoMWYCAKD%N8o^~ZaZSLT!w zKT-Zj^m7T`In|&`KOom(8Rr1vBSw#ia>Ci-M^@qH4xVz>4iTiD~rpC@;X-;$RRWnM)~&dT?UI10IGXih+QPp?&ZDNIc(jwb;A( zedpAt$qx58BpFnGurMaWR(CVfl*57j?Wrw;D&y3Hed{Qieu|%qw_Fc8EDn^rE#7~a z_=Koi@YC8^C9j{iO>Y%~!}qET$Hw^gGVhS68%P)0_z%&6dCTjP6G>}%Ur+6aq!L!HjmWiTQM^EeMZp~!zap2hUy-M-oc$%Eq3pR+Ufz+p7HS{_RH35k0XvG>`e~&5>YD z&l(Q)?vx5p_R9IaU}Ril(F0ucgo3K1%VX)&$_x@R(}r!d-(L`{P6kzgY!iUZ`5AP_ z!8JzrxEBr#6i@YXJP0;osHk*^$gh7kHXhb8w_Uo3G)`F5xcU>A>JPgO2<1LSyOTHk z&N_XZX0z-<&As)hWp(QlwIhTWq4N%x|*(`mG>qZ}awDRkK3Fj@xC<{J4 zQu`0>&luwKgk0YYRlXcH(sDIT)QAyEDJ-Q=6Hf(&bk|vTDw@A_f^=<;Jase7{%l@A zH!XOIN5#kF#P@Bf$1T-siq#UbJgz5 zMQY}#b7BdWL#@XhW=IM8CXN>aA%dDp4m{nIhds_7i!yWFatvbyC)pRZD zO1nSzLSj!P4be~p16RL`GK-|m(sr5mC>R-aGau5J9il&b65{;f>^v$gZbm3P9y%T367%o~l20m$C|r0ncS zft&65IIQoD)2ERfHO1Z(B;f+8_-yrs@Y+l1K$(h_&&{nI0ebu3nj=!rhMn7B#8X~O zV|(S?EP1o=8Z3oLBcoxuxm9#)-LWrbfqEx{pqk}OmSLQy*gh~jp|Q(CcXtCIO|Rtt zNqw7;NH?UE`kxQH-lU3r0X3SR73}17cf>;jD2VX>F5c$BZrQseddGh~5bIg0Vtf=i zJ?VQsbT25*E$#^OA(tltR{nBSxIl6(Uo|CWPih>A`3CQnf{Q zG=gQICNRC|m-H&CL;l+SdMYE4Bjd(wbM&FkuNv)%P(t{(@B*1&+}&=EDSxx|+Esuo zf!(FBdj9IoatM>o8Cm=}8~8E3b^n(Hb5@T>c{h%)u#jz$TxB$Q(O=M4Tf%FBwV!rB za63(=Y%i}aLKZvd?RvHR2cISXQjquy3L1x{`X6%Lu9hob2DtqBnSH({`Db+PFX+xM zk=V}Izo5`;nbWv$mQSf*b!lSRK14OZn`Fa``7L#mQ<){6ygQV`A9LN~Vu&Gpp{2oR zSLNzc%fUMI(MyLW{U;CeM$*qCy&+3MH|Zh^sW_8krVAv3cFG&O?>~}2x-}cJWm?*5 zTHwJ?Ek5^Kt33}&X_SS`oJODDi9l+rxPrZmJRx+=)$%49zr|NV;)jOkdZ#iSmvp|J z(Bu~)Idow(;$hqA>G?y-ZnVcn4b9M>Elm=3A~<*I`Bt`${mi;lId2L5D%oX739K=U zLwu^nuhyeTir)(Ni97xqguHZFdNO%M@*yeGG_7=WCfhSl5T5Cs(=U~{>p%`_>ePj0 z(%iwBOtM!Ixk<8Fth2NQYDbcK*FaZPd&a5Ef{bPN5*diClo_BQ8M5DeC&_C>Nl30Dj>w6LQnTL> zi)`UpKcqc^#W+oujkk>YC#7>fPazUoWSkd!mw|AY@Hl<%&m4C{tJ%-UO>c!-**w;GsQ_Jfd7MJS@6Isdv&87=Rtn0H-=Jvk!YlVNk>o z9)Jti!JhVrasNxDfi%hpm;fn;sMRDbKCxoF6Tl4zHWY=7>RgPm(Dyx&|LE+|clkwi zIKJ`(m4m{fNq~1?7fSOzvpdAFy&F^VVY;!n6x!4Z=$H{ritvwwpqxq}O$(~h6p9ItvDHia<%{a0(qp^o$AL#Yzpw&%7yg%( zHS2R%3cgv6H67+}3{2)_Plv-6%qqa;?RYj00($&<|BY47(CVaj`520Jx4P|OmUDU0 zfvoSJ@Vqdog)`4v)F4jCCzQZD%cga7O9-%MHJX=1hr5vdEX(vL41v84v^*@4JAuro zBdf68CMf|H_G9CcS=OhF{`}T@`^KX*cZk@Brrx?}l|OIvx#~dWTDFntVWz9Er8`Al z5A1|an6H=Hm@So~mn%mg;%GTObg3hHA0ewMIwF%DaKc`5jTEa3Bh3fU{W%Q6%}>vRLvZjX^Xf{Rk0bJ2PR zd+z@8vsL04%$#B`D21fZeR*yJDR4^ryN+|B8bva-N9s;+o{mvwsF&*Sl@Bcr49{P( ztU;RWcNur3yIcQP0Ywk46o{LeMi?Q5AY{R?q$E@fYia6iq|Wc0>X7}e+7$RzndL0O zYD;H&2#KMRSmbC<1R$S+(}IA`_z1kQQnT{8-J?`k>LgNY>yvQs_W<;z^MK$?X66APNN)>#ZaDN5*gK~{~t(Qnqi z2&-JEn@32n_|SY5IOwKIPbrS!mt2wp&Y|C|w_h@84+@Cu%JFhvift|ICZ-v1|67vH+AX#@-Jw9ss4J< zfyw1Iv*Qom``_e$E`Ge)lQ|Q7zZi2n!^j{TwavP!#!slE{bC}#r|FY^R8*vcN@`RT zDScJ$eSraC=2KQ4l!$3egE=b6I-!On+Sl(|yMZwH;LqOW)%CO4?q^Gh@N>Kb|LF>k z(6sFFBYCvIcGFpYug}V1Em%-3u97_^{KG|{R50DV3PN?QfGjZW@V_ywf^^M2) zYya384pV-Qk^T}5R4qP6*zp`>QH*>Ry_PEz+JS)^dEg$-VkHD?XR-^-Cd9JxGW}}h za0rS&{(MRi;g^Ggqx5m>ldcDafb3AEh`O1cCnYzrK0C*(hC5V2oeQ0Dw!Rrtau8aKWG!O|9jI}}YdjbT1QG?spY;0Na%~zn*LlvTAgSz2 zWw|N;l{pwR0Rido(J~&rD~+3u@rXrGTzq-IYOrFD#tXpFE6OdH@EN5#PV+x)qQDfs zN|omPAaOKmt4POH6=CROuLB5_RYegdM4TKrHU{qY)E-g31wD5H#ca_Rz6>REsBJ!t zk+8<=l4U^MJYozfZvW8pfYeUqb~=heT6+?xq;p-S6Rt$HJY~nx4q3W}H=%C6(f|vK z6IkVkeZ&}f&- zpz7?`8&P!T_Bi9d`3Y!^|Ml_{KmD8015j|Y4-I?Y#MYkLumy^%0$;UdBOZGi_NJp( zKxLZ&SmYawyJcD5c_+rDPzWSYod*B@LBy@cAuzl*+o`C=>h-~f$xd~niVi40jaZr~ zYOtut-J{eE?tJ-`mN)}g#CrnbU-pMzk%@2zisEw;K#^209OmRZG#qpx@qm`M=bAH> zBMv`l8fs|I{!il4yz!KqNHKnh2taZ--?G{K6G%$&LP{d|Wkpr?QtzXH^R-GvEX;=^ zt>%S&32-+Y;yeGhb{5t@W`+6w(?U~)aTugLn{G8k@U!97{7FqDaM0PLrK(zkoDWZk zpveV=YA%T8*y=zr?W1MZmXHJSAC0vJs?9h$&2taa14*~0yfh@#z`}r2d4>Sm&~pUoSAt_CVK_g@OWQE%K_Qa~6ML zbP4Hmj@U8Nw=K#1R{KzFG4<<^?=;pnyN3et1U?rVFJ+r9EzYe~!9Z>MnHU-l`!5M7 zv^1KTk;t`?#<0L1jp>b+ln$ve^TX5XQb40V#hgo6mJ*Lws*)`wrMWW27H>Nc=3|46 zUa)VEWCTrw%SvX&Bhz?DXTI~b&6%ZQgEk+jYAEZpR@cnw7Ft3R=5%V_Y`y8MLUsenW|)RK7)+QAHH@f`rPNt{b?R%k4YiliIZE)cE43Ax7__8eHGi+@qY4>VBaU0 zmv;-`3S6LnuV&bWlI+SRq(3I)Ri)}B#An$E z78LZ?#zboRHszF^y;HFEAC{3>jwv59e9D-T+1mo zPQLdAX9dbax_7e0?p(0Umfq2}3BF?o(@Hh%cDhT`y2qquQ#0IfqDFc84WcO^c#^e1 zs%kQEipo%6n!{cZw3YkQ?Ror`w{}GtHY?_2Oh}BJc5ZLWTR<}{l)Ozug%KcfWjoeC z{bb_%){62lbTyhpKz5Q!+@7lO$5mN|qS{%vb4a`YqW8n{xdS~7A!|enSxIS~*^aw! z^WJWIShvG+2;E^HS(9<*lFq(bgmt#A8Bf_ce(#J{O0}t3_GMk8T4WMYJ&58lS4J8V zkN7)r&x4aM8vY;sLrbP_OOLdEt*#9j`dZNkE_}aLX%;->{94ppxu%zvW^?ut{Txqa4)4bR-JykoctXi{iTby@z@C(0_J zZoN;xm^I~Dyp$5i<@oT1=cm8hRS0fgFl2IpNeDP;%bArguGA1nwv7b4P|va-P=kbu zCqdfnzEhUd{v`&oh`GoG;#GF}dvuNbgGowkKY zcU2pA@X#>&j%2!i-H*&ay`D=py@~qG^}$gzd;FR1xLn1wS`_nJC_HRi36TY=kf z!=kQ$gRqe9Hb3+-;VM`xu5!5#bp_!NGMf)GXst~^42_AW)6;s|X;R2inHk3@HO268 zQ%9snWaAbsFKOLbv?*oOzGups*9wq{xC(R08C;ve**17SCW-uvW3qHjKBj&$ME`53 zz~Q^H*D~79ytW*^<6`44y)$>6fuo(_mlMrQQ!$Ncv4KUZ!c;9p<>LmW-6L@=wOUTQ zo}sZ?`Kzl3;y%?y`RW||apu#re1cql;x@@pAjyuDg(nT0H6|B?PUD9vXKao(F%oWn`Kid|QA@6#7jz1?;Bg$0_a1CN(5 zMO%6|&m3Z?YgR*CatpMkeyj`&g1B>7qms1>`Y^rTaPk7S1?lXxi@qh4HOap)%{PT`k!9cqR!CdE48w@ z>}+Rqw6f@?aWpr^9sZ7rh&%n87(?dHgxA^`qjmXw?a17I<2d*?Q;ZUV;=L#~7S^(= z$`9AsrqmIWck50y#VlXlO^dpCsQF9zM!qDxud?q(`3Ekc_P_GwE?3y1X3-0sc|>FU zK}Myi%LCEA{Sij>w`s`xk>VuV3{!9R-L5nZE8M@4>y6UIum_O;1>JWTKtoxRUy<7j zTmKnqDecz&Yo@j*pl!xY@oB#dnDxV`sg8hX8N`=@Zf?Zkc1ue*2iq#bOn}!Y`D5MHsD>0l$4Z z8=!Untl0F(2cHz3Hw4)5sMB04e@NH99Jl>)aya$nPo>>VVAA=1G9Y*Vek~Y|x%wL2 zVSkdORLQ7M5xm|ByInc3&AFzyDmIr2An>-yx#hdm=&(z;E@2FK7xvliy*@45KoF1H z_oI{Tp?x)qwY7l|_d}adAcRrmQEbaxf5zM5k2o%<{$#r7Hc0;@cc}8<&3}OkF({8v zL(R#XxG_s}Py1o31>73MUv4vh$EE$TYqtjsboZk5C2Z}!TAUJhP+p9`>)Pq9}&E8|80VHHiKjpyM=LSk@had zUOwapinrleo2y}B0cU^tyW6+2!bb|Z3YR}v-gQ=t(Pxak;#uZ9Xj}Mz*~KE(k9CsB zmV-rK*Z5@CjbEqz zf=YR1;Is%x^4?09)$C_o*d6~OJvZWHTc4!3`FcgWB={J2&GEwC^2_1BTY3JL+LF2g zQjH{Yg>}B9tTaO6I_AujT#O7ygoKNx4l`Ld}nO__FA7akYk(^WdzV zb<@OoZcFfj)yo(^#iZ9P&|nLrjv3K!vWmS`rtX981_E`c{d+OBY^1gUGX@;9f{U8| z?Q?-Pep|+#dR?P2o~h#V&6c)30~YDq4SFZo7=BmDrX5{VCrz&Uwad>xX6N6IkGR{O zeq1^Ee4FJ?n6LLZ<0>FmO1#~pOe@phR6o-;pCrK3ev(FCNRLGK0x0rN>=jLIij~`idz(*XxdpMr5|&R5px>)BUUNl0O8xv#sIC?t zp$q!m2i?Px2#mbWQO@N`nxV0zMW;SD4F+~H%|+7>Hr&a-oN>LN!9b-uT?@)Wb!W?I z#W?r_t$mt#(1m<_!qN$`3zQ9MrgI=!?tr(EbALf2aBsGsgddB!rePszFe7gkg8sNP z`f}JGbXU(y_s@nMM}I*M;SV3$v`cP5{hrRxzqL=RGo7q_BH4mDX}a>um>WAyo}7TT z1jrDts%b~?yX_1#@yl;Wj2Dlwv=sIrk#Oq z7Hjb9c?GTgnHVbzf_>xCYD2dy?&+>NUFgeAG_Q*j97+D2o;lI~B z+g>3nn~QpVu;Z>m*FOM1coAA>br8HDLfUyvTRmCAKFVCEANg7LscMsKL!VoiaF&gS zt!hR}<>x9^#>E28Zyzd`rMix^-Zf!=bd-Bq#~FF#SP`yz2DsVlPnH&$nc6KGX61xp zh8}uopp6uEgo-=KZCCS-T^HKi(RuD`)+w{Pp|~~~<2>vEy`K3CT{p#*6S5XJ8u>md zBT|J%Cw@1lX8D+wCjRjT^Ic6zli*m28szUjw+6qw{^O9)qWW(Exks0pk|(f^YK5?8 zuxj(r@-ihyp}BSlMY%r< zTSHEpxu>z<`N+k0J;43lmJ^6W_?H}Fk1)S2GZV}?3}t77PmPPQ{2?I(5==cKn~mDb_! zW!_g>Wd7%-H=onKo;9=IG>{;do8vvwvW+8ez~mrg*!;bOjj2fB({z~&D5gC7Uu&mR zUrB?fJ7of|y9=D><#&^h0`(-jFw5jI%k6PeR$Wz6w0g2fCYS*Mz&Y7&A&(S{Rx*#p z(wN1OkWhLY^l$ksr#@aOe2+7H`}nMYZ?$O@lQ|%tWto@#LFo4^G`lD(05Nb!NPMi< z;4DKrnm?sw#5Asw{PoP+*w48_RWgKCCiQOP+dF+|>7xV*5$V{w9;2`a(y`9e)30C7 zU&BXxE+KPg5#vG9BC)YKk8^cfg*Ym3v|;;@RtqprdTw?&>(s5ijMdWStLB z&ZG)SE7Ff-n&afcDVq0XPPNxg+rSB`avANXj}io;nCh#v7BI@vC)hSR0?rcUJxS`` zta+Xc2O9^+OFaIgo}jb?!i>r9k;rGRru5u{(ZfsMXW$uTE7kd$4k_E?tF!tXo|)V; zb62y%F|sW=kMCCF+bT>f-!DHrdT5(#STTS2Uqf#vxb8o?pQWSkMURBb$3(>DT6n0+ z%Ne~B;+DP9_WZ&xU@Br(a65X5h4GfEHR!r$#hu6$) zI=92e?##Ny)Qrzhz+cGE4b5Y+BnKYT;XscG5!yXGlHDx09du}IYj@%N^N+b6VJ{Ugt(-LD>SWz#}#c%EUA4tbzeg#6q84QG$QMpH9~{}H_e`O7p}Ntl{bAEFIppqap44-Xi?`vcNnfPi)ZDTzr&M-d z1GkWLl>VBRAGY{7*UEb_?V(3aT0>L01ZL%3YpYz_ZQGwOq1L5(ICMe{Q-q6oxm8;Q zOIC}Z*_ijpqB8>byd`HOc*I)(b*&d>(DFxK4Xb+*5cM^y#;l<1=+wl+z`gBE8D1+y zin408ZfFW-s-{jO*2$*%{hP5L(<~=^wQB0gp<@m8pG!kkmJ8hq|ER$V3DqJBR=}7* zTUeL<+M?9FW&HwcRscX_v_wql8W|e#3xWA9)tA&5^;}gDO?R;Q^jXI4$@Sg7zXh14 zD{rZODt`elm0pLg3zxgrzOK04)E#;@8pKQB~J<72Vs}Qd~pR)oG=PWrewQnukm+!1T>CLmeI#tDb;YVbdpQ zG~G(fnRHarFKB)B0-KuF`$!{3%3izD1QqQ(vG5 zJh*CSOPODQR{4qVB2eB-Zw$>f6tnzB# zhcmI5kYCQLUO4}A+ZmRvCvbl!T(iM)IqI_?lZV{J9`AaV9<>CFI{iN8$~v7`O>uL^ z!i;ogr{-L9zUj7YB^0`%ncSkM)&(&|e{ShVQxzFw@JZs99NsNk?5U98*nMB)-~FOL zJMZ=2%>1>p<%B_`=YL_>8b88kyQXx$l@}U)8!TF$oUrkuuWH1!yU{pTQCyo_nD=w* zHcl^RoN%u~GqyZVPUzl6czl-`bnbF@7cO6hi&Qc(Ldy}7z1-_%ZvIm;f|kI&pZ}AX zlHk~;OdwSEYU%T8&$=1v9mOMtxh*^L7a8BPfKVa zmefu3@SNeQdlY+MYef`>7*5%c-O#Mu_y1@*>#(T4FWe6uA|(hS&5%k90@6J+Lw86c zT>{dLbaxL!gLEt1J%E(bICLZVy~p3Z_n&#@fiwH;Jp*g@Uh7?-xBjloE*0tT(BVTi zn54lcYF3^rU0^^G{b`m7PQ(^01Mzwvm z_1(#?fQqp7{9r*@Z6Tjz?7f$lagME)oQll{11I&P>k~o9-oEx@{f>gRoufyo=4`fk zd;Hr%M)dd7vl7mfkzMR3gt=EscfRn~L#zDZ$N^rND~|6H$?x<@?fh1PTv*dH*Gl8MVwo_V7|?~u7~UOLCq zQcC4amgo1GML(rsfuzW9E2I1^0gm^9$I5GEJ}mF|M_a}1CWZ->x`$k_8YA9QrT@)Y_33ICq^hx# zE&j81#p}GRF<&7vRFn!Cf|bXQ2y$dbf4R_5aFHs1filRH)ClOX%GvqFCt%DQ)kVig zzUrPZH^UnY*|4&k0nh#XvQh`)3&ehyY(+(pQL0BHXnCi!v*ne3a3njpvNGqc!*e;W z6;YAlfozBbaU`<;#ODYsB?75|E#-EbR% zat`f)MF&6Cb1JwTE08iRePuC(bggPL81<#Iob%^?y-+lYqY>NkAuXNaM&cW63m_)a9dg(X`TiT39Ni<jXA6<#D}5_SYF^(Jr$8^m*7QQa6tx)&zvoUL2jPY`67?Zbeo_G&e+;}L3*K*`f6N|gx) z%(N(qV;wtP;OK}Kg++|y-S-$ZTCf>=Ac!1C{s-E+C@L457wKNWf!}S}a;|n#nc)in zM;JE_-ANg*I@}- zKJ=a6!uj6)Rx!R)5iyR$E5+9nXPjwm&D<_QN9&oS?d^%|0b5alZ~n@e)9Zwn(@6mZ zP6AMoy5}ddT=y?T|ADZqzLz4PE*^)pi8ZQQPmU7-${7bjA0IQ?pU_T?;oEZeOF&sA zM@+JVuAlI8U{nJlKbxpp*h*CG^MrpF*ET8y_*@Ij#F@}=;i0}RxIns!`|#OVs#sb3 zi&`?$0hd+&QW&y7r^!{_wKA;+spy6;!aNi7Mo{nwMYU;_xMZv3;TMC`O6qQx^t7Vn zwKvkEO|785C6$>rQ(Iv!ZGNXQjFsgRD>@jQav3OxDXiFM^V*>6IBKl@YNmo+vQj5Q zvwwShYsy2p7Q`weYNHSi8b+fbddbd{u3V^L`N!SPo*3$?LOisda=VHsH!ajRk+82I=ofkz$!P&$NxUwX z8)^}4XC6=ucc=9Ekq}AZ%!`XrunI>ZQUoX;c zw5^QWsT`d{p1)&H7FuQa~u4=WI3F-ixb%h&{LSHA}mx7K&4f(C;e6J={c zbnvFE>pU%vN1?0Bka|K;@OfcGq{~v|J-0Q(|HG>?lId1Z&Nh z04t7Rm+8dzwd@-8Prk{vZ&Wo#QSem{D*nKV9Brpb(kmUYr`LG8e`OH@0N4 zB`B^2-b+Oh`F&^vs85E%vOtOQ`mWoiWb}9xbG!M*L#N_pb#0BOgF?A{Sp%JR>D+PV z`%-Y}nn@a>W1_IPbWMLqL9KwK_y_tKuDwgPUs8vyC*E<((&1udZTrN_$ekIM%=WLb z0;Rc9c-?#oVLq;4Ud_I?!J2}O;f7MKl{6rrZkw} zhEwF(sPgG$8dji18w6fiI$pJ+Px`3u_AhErvf7;5t+F4mHp9uv=O})A>6B^F{7hOj zB>3jT?#jy(eIC;*sV8q>Sp|mKs}1W%lMyqP6pBrmDy8X7d*t}HwMoHcR!2)Y*QD*LlQ`3Qfer8?_ZslyZ8M{yXT zt2tabo3_H)*zUeHVwg3R5p0$1z#e89oGckaDSAUNtI0vqyJl{CSotM6zf&7>T!|HO8lSFh^^4<;|H?`jT({1{ZnJ5p`KlUvG78bHEYh*G zoyP)`F)F5~XpW7*zaNgWL%1$~IMX#J)r8T>tK6?2X~Bja?XTPG{=8E>Uukid)y`$D zJa6X{w9>Y*vGPdy_DNgMM5%FgQBLDWeJFcTUzbCPP*SBICZ?iF&zTsb>27zZU0$or zLinuZ!SY=zEBJeT$G%#n#hgryxq1m+MYyk}a3iB)6!rKlUdwLO`43#$Mn9hjyR5N& zlDuMFtyj1r+LD(gU2mMrm_oSbl~dnC8SB@H_i_7fB{jcItF|ZkqMGOb_B_p79*k-8 z{|Rl>KeAGJYWzdWCcSz)UaS>8o)hKL-&oVUK#{2ti3?&W@p=`X&)?PXzL>;->@!Ih zS-XS7_m%9Ga-+0dlI0f;-yQUMn-LR&9^6Wb{$El>_8X>@7;9M>OG~A~a1>5o8v@M@ zWFC$oI*n5bobUgT$+p-C&({hH+Ng|iG%+xWsJwVl#eV>Cfg-V8WGoqAI0tG9@>~ur zHlLHz$1#{0FK=|cm`i+=+P+FQRlID>UB9Am^bE3{=fLq~uJG4TdFu_`*Y!pu{lbw{ zt?d;)iaVHha=(8+do;3oDX3s1`B-PGb-Vv5+X7-AL!A7%5YD$J1#{eW`z}~HiE2l2|QdYq? z$d8F9=OppY5$dMnkz9SpS5A6YT@3fB{j^xoNcN>-hbPJ;Ejt6wSq3k>Ue-?;Z4V;X zr3|Kj!)bE)UcF|yCLekHZ8>%S3O!}f#@!%J+s-vdvR&RUEeE=^7ykwSb9~}!>&6q+ z1UP?R{U~wGeq-A5i4b4v=f!uyc2iyM6@DY0U2(AnIT*xlQ%XvNfsLW<)akrpISOB+ z+uSjIKl;Qv+43hGR@&U~HPm=2M`lv(L@iaSb#eUFPA)n zY2U?0`~ZzjO@2Fww0ZG8jJ;C(so@tzr^CHUJj`dpsNqRFqdc53CM7V9B`d?@3jH07 zY*>em0gY;Fm!lAR?d$s44jI1eK4#gX_&Vs@u>qaVgb0O}=$iRj1+RX>tyM9!?3H6? zn$=4hb+-v;rQ3)*`1{uS>sV=cks z5&c{_b3`u?A4jUHT;3R)A%q&?LKe#2MEiJAtv_OIe8E@gcvhpnnw|~&b8rnnoYm8l z4BXrp-1CNw+{SU^?e1ck|`fNdE46K=m>d;!*EG(8w(}Fh@}7bP;An9 zVyoyC$uC+;Aaxl6n~+?EB(aU_5!UU_;(k2K*qt$!7PqYQo%UdG{BG@cHB3 zOIHYY>2hQR((^}ar^?xN)pM)4@4=fVFIK9BCMp+xtyFTR|GCU!Xd#{9P;I|l9WiW- z))wm*_gfdifm{;J8BpnvicVcWt79HqtdEA1r2U zbhIDImfP>b?B-OwldkN0khmHVEp>CV;H9By&6Q}N@lA-JH~i$?*pybI_nvcnN(qOL zo7_#qr}3~rs)r^uLhzFw-GAhxys;DZhWO z)phycW>l6M(gOe>t_UH*Ly1JsR#Bkf?Z-?fbc2=5XCW$^&~R!Lt-VulRuO;|z(!AazrG1K?eKja*BpsFR$XbNy z-!yjh@y1ePeemGMFW2MODm#Olt;Ym`GY*E59kzV^@5soLyg0g{@&G0%oj2g zMP@mLldGcEACD-_ag7S%ucK5FPnuT@)~wZm(xuMpiBsjk3jKQja_pZpIL&;B;(=mqOvR%57YsT{Y;n*MF)n)JRh zvb_Sv9wF)>+Fv|2n=StrE7IlS>MDe45&ztyMCXu{dPbf`2|zo^U-h2HGM?{jU&tH? zh1ut&6?-;kEKCJ`5IOkHH|0zr*L=Xea-&}F|i7haxEb#f$GBYs+P5b~i=-Tpp26f55}6)vGv8YThDz{lE}!dj;w? zJcm8fyRfs@d%ge$GIC2{HBM(G)k&xB-f703~h ztLbp9CoaEShZYeP1ap&l{uuOF+5pPLe2@G^aaahMjXDf#qr9nyU;kI>)-M}l^uJ~x z=sDx#p&892O`%an0b$h_vy`MVulx8447N)qQ8nj_^n(t9tf2m_40Spc|37M7n$tUK zcz2O-!gG!GNH_+U#xn9P@ItyQtfhEzk@G!vHI|4qt|U!_l3M+?cHS+740HCE{LF{Hci;?G;wk& z1q<*NwG+`7{UkCzwx94hPK7N#q5jTnhj})hbL!D3_>bOIML|(D=De63nYNyuI{$7o zu>?g^x&a@;^_c7acUm2pziJkm-53;dSL5o2R}^bnH(8P}Rjgb+zciz`D2nLhG^C(|L zz`%<2vxLU3AIqOX%vdf^B=a^V)B>bVDGe60>31z(V zmGWYgtyy(!ylA}h0kZsI%FPYCHISun14j=QP?9e66h$P6+Xv>y5LqDAOy~E0j%x$g z)Rk_XumIBy6W^RxI@RS$N>nI&&?Uo0VMpLc5CflEQuF0`*#LAB-Z?vHVD`2Z<+ef` z$#5%{CeoWwv&s6#>Y{4t#n+6aPhxM84-XY_sPQL3kE7lBCc3LxtBlz@A%YBQmY;7D z4>xr0CE|*`!i@mu_}5kV!$!M(WKHD~Ma4~q=&uZZO3Do#j70np*^>ScR)^)e_a7+g zKTr+XwUn-CSy=$FSd8WV`|si2?B8vEKGE*BBrHoziP^=7$qx$NZ^^z6s+<3*DHcsL zNOS!ksBWkP5G_gl9q@QF)hC>CuP}6m#n-vDxOLe_0=}90Sxg~zEum|DLyGbrXf&XP zaPfd(OYA}Ii5nwz1CSG)YaG2H=%-vbo6h-2`GpRhk(oivcHEYxWhc@bnfJsJKpwDi zH!#U9^6w==xxY8^6#R-m{td}mizfDG*as+SN!(LEKSC((&1wGL0Q2a5>^^k5^IBpG zAkS4fIh|q*u+j4e*5DYrMfrFdEKa_663cQh@iivj@zsBzBAP+MMc>z3{~O*&E7sB!n{x%kQxdTl@##R6~E>#+Due0x`H zdBMFSa4)ukimd`0`7WNWtpwV=8V_ zNOIQ%S$zM$2rxFclkO9@ zk^a^U+udV2Fjt2#iu9uqn>%0YGn1>nSo6mCs=YI(tN#6~M`E~1!@p4yinUZ~^({7- zZ1Nv7`UES}MhzI#N*7#?OSoemOa6Cd;rDu)O^hSMD@xvN(VwfwABw8I0md=;IU`|Jks)PLz?b6v zfF!||0g7#9UMEcvu-U4Z->)QM&c+WF3c8s~@eO#*$xnu!R5X25UQz1JV%_Tm?t8-! zqc;lQvb6vD*?+sS{Wj?Palq9oYnrOb{VCRI!eU%;F8dnBat=obt*YNCAc|k+jny>i z`tCL6X%x2k4z5%fTwut7I)6$ZeqTw;MSCclRR{^Kq?&Z0R_<|cgOhfc=wyLk^PiP! zt*KGLrtb_gXmpYeGVd6WUtEVx*5{7`C&rzr&eFTd`r2QA73x!FuQm2WTy*4^K2;t_ zk|qAQ+(O1F%%6~i>iINi*EhCEmYyh3H3(a9ux(env{{q!#~+Q4ylW)l(Z8)=(?`)| zg=}#zwJP3x1mX-v)IIP7V3iXlM${dk%6$=rRJ+{mYl{q`zk{!fV&PswPMlq&~ zZxD*c@x0E49^SS%I82(C+lL28+tSx)jQ0AGIP%mbL8Ni{Cmq&8xz7FrpNxi=dFP4i z0qC-pBHNcenyd>SsqgwY;~s3zeDuU{wCEFR7ge`=wB;r#=->A#wM&htXDVpp=CO5GuLunATSxx~ZHT;}7 zP4%U$j`$oLR|#g;2P$V*_O59fjZy5Ml~Re%YBO;|=^`fhq4oV;EV{>WEmI%K$t(PR z9@hl+#Lyj~k>IkhF#pg@7P_?Y?)e)}%(x%uJFf=kmUY6Bd0FOnmafY!sg&zWv}E#* z-!fi-KtFj>^9z^zDpwRb;Eu{<2`N=8P37^TTXlB4gL)B61l}X>>k8lAl0Sn$945Ch zKxS84I#(fHEtE~F2CTD<_S$KGeZImQkrzC@`BbIwU%k?E#W&AG!&gp%Yd%iw;6@Q{ z2q$6-;J>)eU#7xF`fSM9$!oC&Ldkv<C=!JHQ#A?=W&*ivC8Gco|^ z!~rv@{UE5@aD0lP@Xp=(Tml5}J18)dywZ?Lm7_>&)6-V|4+PWt>ZM*zYJ10{tF*eB zi!+ogaMDmEoYF{6H&9uQhOIhzbnyBUpm_W%SN+M@uJw#8eEG_8ujBZ>#mQ&O(6+csvfBoR-#dqZWN2J)(?!z<3HuXZDN9i{9ZPtOD%l6X0=ZHph z0rj9+ZCOm(-+~Ttw`(1==}I^TC9dHISE4;LYlr%L6F`5EqUMd1$=p)AL%D)oXSt9E z@rv|Mm)pCL8kQzz_9Lv4)=;uvz1irfyz^($j&J&;EIMit+x8sYHXW%QnIz%1ww2uO z^I&c8GIU`@geRGuxrB8fZwb7;hf1U#w)t|*E(M85KaBltKn6xmP90vR4F?jn>G){ZbOBrDl5 z+t&stsU+xn#CDO1l$YZV4v4h{1WJq{#vf>TOgf7Al%~~ZX3LRQznc1MbG4J{O~VDL zZTqc;olVqI=0NNA=$EEy6kHLMH)=Rka;zjd*kk*aj%0|dkP&da<{nQOCvoO$p>&up z#8++yOp%|uDiXesL19Onzalz-K6-o?cLsTwuedAc@ElbPgGxHUko?jrN19dCAsNVB7R6ne2g3v zeLT+=<&++aF?$z!@B4P~6#1y@-){1tZ~fQ(smeTzrX3%vm{Rqf5wqzwObynSGdiAM zzU^NnzQZ4V?8eM@X?E#fLL#6?ooGb)i8(8mbzP7JgF5m9WFi1R9ucg}6zU66{`WKn zFkNJ!g8cF>A|*f>kz{>G_jHl@L`73haBlSMiIw+(CjiQ<(1C(MIui$sLkEl_3Mq7X z>dyjp?S}F5p{(zOw-v?#L1p}W)W)o{8|ln-o?YL_svwIDQ>5<*@Ecs8$-0r1h?HS zsQ8SpNCIUs^_`ugQ87~8@A(ohMRQ^sUyKjG`bcMVfdjV2Is}05s_*=mP1Tv=rGL#fF327_=qR=M8mASYpFY&u|;WwQq*0vfYhmcVnRt4mv;RQ-s{4abc`UG`FeQ8e zO`}P-;xh)S4I;rOwDI4~n6J#GXOP~T>Hx+=NIw=S})m1-|RxZbAj+v@4#R9d(=ytIw)eX!nnGa&Cz)1l+zn3SWu12neLTivt zrmJE=ew9#huEYQoPDy@sfwe)&u*vzE&)e}l!hED%>y6oxeP)J=E0GA)3*={RY)Df+ ze8L6A##NJN#*mx-@^R;v$N+Mz%xidBypXu@mQ;dxUf?& ztX5=%LSrogU-}TY701L+wj2F?Ny* z|4URU*|Ad7DejKQth53_S(JfunduEtQ5Wuel31Z?eB0q*Fk$;q?Bml5&y{S2@LbtL z+8)*NbnV9D=OdmiRFxM1$zA=&VN(O6vSY5og~X_#NB9UYE>=qx4CIU5TeGa)HKlsX zw%c67yyFtY`JN?$I1w2r*Kuvm`;Q;nSLiLka1y$_q^~2}s>&JFg&XJ_Kxn64As1&|H>8xBK&L)4Iyog*z zj3xLCVB$uEb9bPwpEz;W8a|(p6OIW7jAhGFhR5l7xIs8rT&7`oAtcfqY{jS+q|(z3F&-V(v+EEbZqL_}6@5;(Jsd(`>T#P#@cRnihz8HsFL zTmgn@74&gkUT_J06o1U{i$>R7mu_1&4TUxfVe z?SV;s3m^0z60MtgY0X7g5(M?$B-VuV5UQ(LGiFYNWRWr>WY#wBpN^;g105eOUM@$g za2y4m)tsOl{8J~C9SE6!l;wzc>N_>g-PR>|nC}h90^|u2{TLu~y5q`x`J7;Ze%zS_ z(TrPVpkHFVFX11sS29$>!T6?^Pb$?pUO}Q~iQgQp+)!SL z8rKo$1zKgL>#LppL1C1}Ac-NCc0&02XWGqdAB{4Swtoo?tzg`?$oM$s5U!SxLWeVi z12_gtUK4^IL67_e_RkcC!|+t-HW>hPusVqXB{Amb@Gv47Fbir`-ZTU_#rLZdYXU&# z+Oq*_trV`^UBzEF%z$2v# z29Y#UfXj5-is7G25DxBjIkZ+uLfUjM5k1u{M!Z5A03;9Jbo5DuAmiJC|LI3<=StGi5( zu!WYVhLda8*duw;O8{;5))?RjUskLXjnJ9syO;V1W z$FYj`Pf5ppDj{FDw+dsnGnjojA?$CS%e2}cw@H|g^VmAILbe!TiG070%MRDPBU&P4WaHX=nF@GxVOl$&!#u z%EP%Y2om`ZG>69p#J0RzpO+0Hfq-R{O9)2%8n_>n_gEyG!aXu{XDY9oGYl;>h2wHP zN=w_Rh^)Jyhb6E2h*!?!fPVupfaH_=5A@r{B9+mwU)Q)7Hz6iQJaN_(aJrJDr9OM<^^PQ=rpn^uVX)}N zCOvvV56o7lBj&{cNa7igl%-6B8L6cJJd014&X}gH3?U>9Z3Uq$>Z*iBlvfr~th5(+ zsq5E~^_p-DLIJ^kLLEZpU$5lD@?3y8!bq(1$Ncms)_q5(8z4U_1>{HSnS&@_`}+PS z*Bk>KaXrX9u_-&D$&C0%UXKUnt7o&Fv0MafpCSK&c7Vio1#g@Zi(wqjU7_6Q6tT|! z7T!BreW9oC@@jIT!6Yn^Di|6GqqO*{gl8Le?By=To*Tvbcgb2!OkJ=RQSD+y#rFR| zl5S~tR)mf2l?=>qVLT%0vd&w#>!zkUy^g!B6olLf*f35-D68TRr0q)&?=0`OuK>@E zQM(UMu)lE65$00c+k@qwMZ;>xSUbs=uF&iyatQrYAUMpZI7Lt7omSNMiVP0_4VBpvXaxYu1O)%~Ug=W!rC5yKYYm|v79 z;&KjY+XyZn(sm|H98nhy#LKUz>2&)YWn8a>>|Ud(tF8#L+CT_?bAo=g>s>PIzfu_| z2y`@jYkf1xL}O{GL)Zm(P&^S16!CpDP&FU(^HwBiD0frq)5Q^m4Qctwco|%&oG#vs zc2?H6HpnR4w&1}8JQso>9Dzs=ZcCvX_hNgNuhx$@vYcn zQf(XRSM0Fr4{x;9O6jUV`0I3E%)Xjv4scVnXo+5|s`4cyi4Kc?%aLYPC;YgDPfOa@ z742R|O}7bVVW#X40$B8Kcr$Tj=i@~GB!^uPO7Pd?^FE`q^rbDwQlq}P=t0XfizCT9 z{c(8;kh}gDKJ15wYA<>SRav<~Km=~C`+W6RoCs6rcHa>PrB=EY(Wpm4`yg&fAmUe=6@{ZDr9Mt@FdZ?ugDgMATVW zk5fGtSZHg*6#TeSQL z>YtgF9{sSA>$U6lRhaw&%eZn@Xqd>7Hj~d>K6kSbG;LP3hy+4iDj5B>xl*XhZLMtP zDBc#P9j4OBT#hXJ?e%(GXuD4Y+ppY;JYCmL>lr%T8+G;3cuVa4j+fe%3|7#R%0^rx zHkT}4&8}VEu{|16gkQPd z6d2Cydk8wvjXV=w^{-U(c6-$VSj9?Yu7O02kg1ubKew9*F3(iW2`kl&YjQ8hON0n!pg%9 zldl_L3)I(jnU>ARlA7yk0_bv_M^Z{2mG&R3mYR=Go}+bJTU-`7J{8#+eN$?-qN<){ zO>G-Vn2?tzr1p4TjScOEYVEYAg5j_$&LA+IqrI(*fs zigYCN>U!5*-YwFKTxs%YjJ*CCE6Ges*1#R zZw-395-VZg+*zJ_DB3%hdibsfkh~15h%&eS7kXH22{Oy_AexMJk1`yP2(Q*L!Shoj3`yc2NPSDLsqI?r^cTaQ%Q_eS1N9Pg(~LVk(EI<*GsqHFvLx2Q5gkLE3`^8Ot%15TnDGfzdy&1D97jaS+_P57- zmx#EixRjI-g`7&phB1%zyy9>{A69zn6m+EpSBC)3JNbT@S{S}#(+P( zz@`uVweENMYA!;W+s!%CuG00p7W!q{G;&3&9H{-@MDB=F6ZeZgN_n|t_hh4wpHM$+ zyKTQ>dOFVZXXsq^7M%T%MR$U*IOgCz2v0mQqPQ59jnSKb*O&MA*TT*TogY2IL9y|& zXgDA7Y_y=c9C1BsbnU5F)816g-aO|3Pp349mLyJGQ=sY?nxY!pf9$KxPRs2$e(ea8 zN@yuN9M*SNs1x_Y6ZY9xlr+!cMjJ@JMq#B= zfX2Hj)cb-yG)MiBF~q;AHcabU3PS&Z{yYiOSI+f9nSX9BPHjJpXBq6h+)HUBh=Lxg zyV9-g>llWLwSq~YivFk`ol59RfH3#W#U&TBiI<@#OX|+Cda0p;%2iCvsCz;lr4G3h z!Bbf&l*2k1M|mcQ>+CihEO{!VS|ttGFN31=ehq8D^dcgY>gdG_OtDh|KU%up#5rQ; z!el~;=6XzYmgbi_%_Jc>!(tW!q6K}ZBw~551hFtNU;4x(z@;*ey@N&C1MfFMF3XG# zy`PygP+z{Ui!Gb(uA%L=y{E|8%zzY4> zk_mv*A1#f1d?kDV{6E9B(QA46w|gBrsPF(NSp}694|BDY>boPj-SCImA$r;?^h{X ziW%(`^UlV#WbK;b5vV1pnnP({{W;H6vlh>mJho&U6gNT+8o5<)Y2M+udZ*}U$e%l* zQ8j1HGX8;4tGZq1!@J=8e6AuCPHR>ZG+YRE;v^r{58It$m&Kgv-1DFAcI@-oKGoc; z&dY8MQ*+ETXj49res@M&{fLa$?yRhOU}AiR!b^%E^A#aZ`{~BP=Js5aXkN)w4HxMO zkK)uOSn<=n7EH+_mp`af)G`0A@gQXaBdsoaP!$2810_(c&LNx`hWC&N$pDF@d zqa4DUX~h>QO~k6pW`#21>cqeN5HS4i&7}N{)VB%wWz^GHAUA?%8Fe6a7PZ1Cv`!f! ziwC85|57A0%;bNiBqNKs{LqC_<*|}6^3}{)qQr#23Qu|TEY3x=^6JWoIpm)SJ1_9@ zOz`O)1KjRxo3>*<)UU<_}n3e7UGDK?MzE9S^*4_>bimNVBmLP0hBhs8&Gk3pR3N{HF`p10f! z_5Lw(;A7qaw!a8g>%+$;^*sk4`+_3#<4T@Hs0VY%VUd>3(kLGC&L~%iB)+IBj;3=Ns_O zmkFcrr$2$z zRg7CDKVg`BdnprPz^KD{Ba0up%p%;F={~nUQwjLev|G_x!6sK)*Drt39}r`pu%vhA z^Mdkv>^s^EI{zX;#UsieXDMz%zpDmXI7DBHC?r+?@sEWOdY6Mc?|gX(SlJ zqM89#tqY{ry5?Ec#Jiclx6mWnS{l@nUBSDH4n8#PTJXL~{jWJPDi>@hc+I;GQO(z| z)&_CEk73@F)vnbdKcjGulZa`~!`=W16q&oW;>q$A{chnstad3ZeI$f39OvO7_sxezT_m3S1IHcUi8Cz=_*Q=W z&izt{&zkNd`F+295)=r(AD^cOkux8~gmQ8dW9vBxk#PCX{0q-#XEB;A@C5&#xp3a& zJX3i+JB`?{tZ;$e82MClZpk_~!?1*g1US0+^CqH$pZ%;lN))PPfppfs zBuIc9y(Jn>k9&1=-5;gx`|o7AggxDmkscP)|LQW>!B1E+2d^sL7FS$B1&G^x5BF$qR zuI=7e^(1anyZeIBh&kHCt09GDNV}H(+{ED(-}2PAmh<8i=Wi_VJHPW`=hR#8qxs1X z1OC%RnRteS7~2$jwPuq8V{ti;+8nj{cvXys&4e z>K#io!#+dn-9`^qBdXgfIj#2~Jxe4pKH%=>k|X^Ee~$=5yHcq@gR*+D!gZEM2{^Pa zErr&PnR+qW(=nU`(NaZ6fgpP8dz~!1%BE+g%cU9JI~?;Bnw+-RQ4q%!OL|S3Qp?#C znhVq|NaKV3JF7yz9pfx+52yj#P^0{WqAJQ2oW1gR-1V~2i>g)*X4&!8w|Ld`KK+#j zMQ^z#!oy6=;F@DrAySOI>gvRq&yTG}{VRmIg?|T8Vo=XstjpQg**m|2HlvOe51}r9OAL19Rg%6p%yju{)fh6WWj=HQkjL3? zJsUp1D)&9s{FLot$I3jSDx=*KdG)Wanr|UnV-N|H=RrRlXupn{R5Ka}9xrcc)InR`rXwXmrZv=IILc+1g%(mBgpk zzUpUx`^cJ>&Rhi?^VVr3;*1e%jtjX?IhxnC`xCCMsg$L8<$av=KmXF}<)!_&>k)&* zQnh?!jd;Y_6pZ;G>umUDvQXaM#Vf}wkQ#r2jdHadScWWU{7r;y0;|96(y+pqWz4Uh$me$J| zKysa$U=i_X%T;+#2z_La7y(J^t^Rx?2v>D>d8I6by(x^~BuW_Tcgy(t;b#{*3pJ1y z<9yyHE{~@3CA3%Cbz7K|A#H!@IpxQVF&?5X$^PZhbFd>;0(dZm~Rih~1b}L0QQ1 zbLNuAPVxZ=l7YrTWu?a$d2fmxmU_8i(R}<_Qz7-^evEWp^6z;0+!j~oVvyvdWZrW& zkP9J9oZ57@NCd$1R-KsVvSCtEO4E6tTuYa0`?sPpTKb~$FF^fU(@~^EzoEajA0jOJ zsh9T?iZ;ttTTe;pcJMs3$_)=6pF2Jjb@Un)*gBIBaqS3ufTd~Ix5-oSNr5)i#4Zb8 zGx<~xg3rBEkl{eJ!;(nw+r(uy9^i`uibqpQNu4*1#XF*gBmo=B`m21-H1`Kha-o_X}jaFH|hKDEJ*1y(e{@r*KW|z0| z?r&pu@LChX2ETjQ1#fa(7*R>U3MMRA{*7;Xs(|@poJcg+sUxNmX;=DW;iXCOj~ z%~^v*zAnBi158!pwRP_9?jGI+R~}by$d9J|xeWs>O93sy)ADKY#5Gqn|w8$WB+sf{ntw3APRt z?VZHFXs0{=pQ^q)oXt0SKenJ+irPCRl-he!Bx=PDirORgR%+BNYQ?I(gV5HdlvZt3 zvBlmiw6$8Q{iUDp_xs21pZB_w>w5B@=XuWa=Dg?J=f0bN&Mqlxm*Lip?@!o0E*%Ej z|K45o9=MWW`)pqb*FCA3h!W)a4u7zqyW0`JN!gu=EZ_{_hz^M{!Ykuq8u<44MSrXu zHNAH|d0P6U>fmYGhk|J|{D}qQPyaVR05ql3t@az%<{^4BXW4%N`FPO(jyuG=xW(wc zY^a=&%etf}1y4usZ?%uVecP2Bn)U}lt;*)a%B1w$-a+X)MMI)1Kf#Tuo=mSzR;(+g=WYs(O?apYwdv12c5 z>S{~doSp~zJh0wCtCG02G#D-E~M; zHHT0o*Zx8ktBp1*b!Cqp0Jl%W^Qrt99vpw=(*A04PUyzpPeO!^+(E9=N#-v=jO;JK z^|FC>_F4yQ(OT$h^-bK{0kUNhRTCln`a`$cHl7KFb|%M+Kmw{}`iVV zLk?crv9n_r_)=P}l=VO0XRJ37-*7RlcDEJ#B6FTZ2VWgTkX-Cg_Ush5uF{pqJtfAA zVVyYCqN{xgXvFTtjKLAX;U^aOrIBWdIotk#PR_m{=>{m`I+l2FIe%KoaAQne!mihd z@6f<|34bWNGis{}?~B2Gh3GtPhphbt?Cjfc?CLzXzAO0#v2%r6`EYiPr<9%T3-5^j z<=K}vZp)Ea z-+-SVKJ`C(8N{@ya`>V0;f;sEpts?FHq#^LrNBRLU+70SGCsSwFSZyY`l02WE|zy~ zPslsG{<$U7gQN05?REHFOAaj~j@i#QUC|N$O*STaWAJy^P3BtN?95?qVYR*w15cRn za!^C8>7N6C;tNWpiNhgpIb29I=b{HKPhWTzi7H~&~N*uJZ^+{ zswR2BK!!^(DV+~#0ZdG=BG zho}g*|D3UW{^PV$4aDu+}J+Dmuq~dM9uQ_!I zO7#y!V>c$w)5zHWZ>>}($DZK>Gt`lMpNq;>3@P$-6_;|(qQ8{wEfI?TH$le5z^!n9 zU;OjU@y3B*@P8L74abDx82-;-3B2;R^cGIq_es92+4bU0uxQJzA&$R*%$eui#dDD| zf5?8-{@YjQy`J<4y~ZoAZ*W2eqkf%_{a(fM#T|E)mjd4?N8beVBJ_R1GIEM$e*y1q zf-MH$sQ>x5HuQyyf)yV!>i)d`%@CPPgt5&ilO=sX)N*T(^=^3!-uQ1Hp3nwXw@(h@ z{&y%xo45XdkBFuZ8fUM6m^`0)9zDt8O%taGndq?2+g*C)>1G~Xp8JC@)Zq8PqioxID;n-+OL^!f+cW9 zKDO73%4S~_iEJ9_e3tH>O5C*mte=sPhwA^LSlw6db5T#v_0K4-(EKUY*gjo+$x(Mx z+Bg@@Vzy-JbFDw~=e^|BcN;I;;=F&`=nxpU@3kfP9N(67ZJL13LWU0fl&WiQu3N@1 z_b9Om{dv!E@xW8?FF^hLc}L@1{(}#KaBxCXgL;}3symt* z_ytC{$5Q)8H(m)vyywN)`#?4?O6oQb+|M_9R{EZc|2r-NIN%g;l)CW`QvcdC4oMRD za`)3G<+iL}XAJ#=H>WhEz_Tqq7dsS9ZI* z;;L){-krn1OJhB4=&J=bKOLWBflV!8Fs5Nprj3&oD4WvTaI@8<(Ofn-Le1ghV{eh{ zzSS|k0${Fo}_3a~Rq>yy&zAL|DvXg{tfRwbfUIb*d?;4~;rA@aWtZI-ra6P!ZiOmFq0 z1|qqEP#=TOd)+=-+F(I)5iaANOaQK-K6?K#R)j&2Tr1%BSF&&}+iWOE7D0y;#eG9rjCq!(-Wz}d2vD>9elkxhHv!{e_Vfs z#K$8+2)S6*@)2P-v_;)`*%P?#i{HDfJ`Nxtt8Z8aV3<>b*UMNkF|x(FV=rbA=wNd6 ztFC+Gpf+dwlTQ_5!FRz?QZ91}g#@5OsN&UCEeKSZfckblXFQkX$4OnDUD!oUT;;(O zi~Ew~+u+~PSq<-I@X4`2NQ-mj97_m494;dh#74#;r?AZYooaq%{angk(_c9t(0bB; z6g2bfC8U;K?#hz5y^5})@-7#EwrnIP5_klRZ7Q$&`nAw7=XO}ZPTp!p`xVXgaoTy!jeOQ2wN%>1CvYR&B(|f_%4QC6%`ur4!M=p1YSBo& zKRIy>v+i*?oAAaKG$SaZL$Z{{xto+K-eUy~q3pq26tuXSXu@TF2woSZ&p%}&z68zb zR&Y(7zr~)@}^Z}rKu7}lk>cP zO#PTq{4M_w7?VX*6m_W?)u~IFyHxbTwD~FQ)OR@$EvXwK8Rz)2&VE4v)>J_pTT=A) zfu+*7Uhg8Gm=7Px$V57`K5J$d?#*8s1^WfYA|;w1k9UbN0Z*-AS1LH<-B;U@ds-)2 z%YYowS5>^M2_=#m#I!JS%@CFAk}JdHvsayjl3}kb{i`Ns+-)?3!&YE=N8KRj9fTW8 zjdwT94FdFaMPyZ!kYXw_rzYEI?6gXI4mC6@>|m=hpelz% z_++VNCzq(&()MzD{6jJhr@ePBrq}*N57c;P^zv#HP-#8y=&bLSf)s&+X|kr?(mf3Y z87e=E}Oa2}xn7tV&fUA}IO zm`x*hPHu}qxo6qMhMc6?8)g}#;{Bo6j8*DMsbHL#rQdaYt4ChakVWP2tWyr|F27o* z>4t?XrQayD-6)m|uyr@>>1e)5k|c!4cnAIBMRHO4rRs}vynClGFD=DIJ)ysTI@5ff zy;N)LWf^{eD+TMJDo-t{BwtDST9t!+D$c2D*l#ngZ3d~u1Qk8rr)uS`6Q@~KTr*+$Qp`Q1qyEdFod=FLlD3 zyYkXxv8lt+A7sIKyOWKWD4F0wC0fh=_Gt(ETPR_(Q171AK*wv!g@J-e!O9==RIoF(PiY+yrQ>sH#06%UXrsGqllgcs?{MSylsWPxHVt&iO8g;wc3vPxd%D($K8vcr`2 z8Vi@>7MQU3f|^NJV{6)!5fAR^uV0A9Ov*bz_%uO3!UNre^xxt`HmIZ*{FF z4|8n%cLPiVU=vL+q;<={?(`ymp9Y8`AJGq*g_Ws5vyuhB7O)z6GnLZ06{ZLr>1&2Y zt6p=P&LX{4lC;#HJ!%DYgq<^6wk5g%g-A9TceeGksTSmszHHC&ig#xI zAaw1UJ3|2b%wLrccaAQEjtp6ZVM$fgLZ78))PJ|H1}a2dsuO*SW;8ewr*K!-ARaXK z8|z?(`iwy{iu%b1ph^0o0>*%?ey&F%AHxVp3AMivyXG4;hN_}lC>zo%gO)1YoCZ2= zT8{@DU;EsDZQ@97`L6B|stSiS(;7_|hrRa%8?u##1#)wZiKt1eu@h?s?s`eOSr>d4+;&bn_ebzWk{&s-WuCX!_^6?Ik-Al2qqjbGuk!(dYnahV3y==Q@>8ybgRvF+-HZ&&EEfg z9IJCDnm%4Fm@|1mc<#OGg;_UqB`m(BaCq?&t(NpPuv)J|x90J?NdxV$;Q)Skz5pi~ zi~`6R;L91HqoLV9C)Snd_j;wlCu)x~UNgew>N}le;zq#wC2H|!ccbf{lLv0yS9xuY zG@iqzgi8^Q?|&sr>?l+h>O(tUBis!36&}3`cmMNpzo-NrY8c_>$erV7^_onX#EKpIQJ$GMw8&&SsFh=yPF zaRJ{Yx8Tc0uc;iRBMn0Sc z8BJbMXT}uts_5E}27-qsNJ${zEk^Ap;Sn|bgj{z-@&v~C>3J)*)FNjzYctZq`k|_1 z2}3Z^p-7l7Pge|OG`H~`0X@CvleFlbTyhCu#&bVv6~*-gMjTLJf|Q%~?gJuxyoQqH zV_VBND2?JLOJAWRTc-d%Vj^Z`G=M_*L`3h<05zL}-0$a_=ipG4IpK$3{dO-@A}UNR z_*dzV&Ip%Bmdt`2=+vk*SVb!Zr)viKvxi=Gr zJ!e%jZBFiJl=0QG8_gm|jj^x#{$dQK2HGQ?1ZxFLn4mv@q$YcoWfoW3j?1D@rrX=q zK`Ds+(`wo*w@kn3VFxg|ft?#9TPF#EfB<1pKGXqpF$_25>upUh)jcnt%xNNJ&08K0 zw|sfBvxU|*7NFn%OjqolR~Qfxx~i&1=}E%d3ZoG5E4an-?c<_n!T~}Yjynk0wRrC; z0lAVuj)%ChLElQ{`(vNzWV{$_ulNP=0wcJ1Mh^^`V2Q~mj%JS$ucEgejaR6$<>3WV z<#YJ8( zgMW+!u3K9NZRmqq?gb*@s1xghm-)}N>ZSyYrVrF#o*p#S>vF+-wH*O@Wk-W*8XfD- zOkkh@dyBlCrFF$#Pd@HKt-tUQsv_t?O2nt?{Ig-J7r$RO$_sBS9~?ddd38crK>`PW zRN^qpszuLuFL_;ajBcOh3`HRYyhF&$=}DedUbRf#aKs1Dgp{?bP1g>8RDm;D`yGUR z3ptl?WmwRXsxKP2R~Yq9gxf&25bJXTeWN z^HY}b2JXO!nD%>KsD<78SWnZ0s@HZU&Dk1@phzP`O__1sDqqcA7T)-1vv?fm;}+GH zbB6rsrNdLNQOtS%2LViRh@)rYsGBR81j?J4YVSICoAOq%`}tph@$_g>v2z&f`x+Mngmf}SS) zooBFF<46(?ghdL=yx3(VQI}yIynm8<;57K%X7T)7l=C;1PDpr$`O}Yg<-!V|B;pD$ zpO5bCL%SSOzt1rvt1cLtTygG@bLezdgJllAK?; zxu+Gp&rSr4QGF)>@_ksE9IT9cw#FmJlirfYOyVFAA9V9s9h?Rz>g3R)B5U!IAN-En ztv&UlBvOlHI>AItY@6~Z6VbYFmZ8fD^9vJ`EWC~*W?kl}h5XMgsHBx@{f0!(<$Q0a z21s6LMy0Njre{8D9?XgC{ap4`YJ|6MTES&17+aMxE&bLTw}@Lj#@;_W#8W5M=I<0d zxo5;xi@P`!8_hvJuJ1J35!DX}4p_*GnG;VdDZpz?OsJhr8TfOTx7L-t5;-q6YI$z& z*L>kd-F&d$qmuI@W{9i57|f+;dmgl#TX`1qQQk3>CIs6yn+I#5fcnl9RYFq7V!Gm|9p^hNy`+RQmOf+(hA%O{ zRIPga#pH-(u_J8S+0mda$FD3juO~;-ZRmAnP6K6SZl$ZeghTj3NgX zWN#7Vhhp()1$l-#Ld()0wYq%NEyV>u;xR_tpBmAhg(^to#Z(#f4FtLxZ|MXa+Q#1ui$sT3uECBS|B_lh9A9aS=w^`5|eE{y7YH zfD}J4NdK+0hmFK+SogRSsi!lWjb}PNPrLNn-8=+-bU1A1=QK*V-BoRdGTiPyszJ~m zpK~$#$gtV3q-K6ix&0<^y~=-?cZ%2~mO10_3*>jVO@6H|iQGY{G&F}DG`UccY1ze+`Y z;IkNyd#2f6#VYwhJRAA|6+mXM!bc|PJ71+5V%w386NYhb48rf5{nDeuil8NAD3V9D zpzMqOaBL-&F{l=XRu*U!1%rL4?_`i~r6)&Ig|tf5oNW4Ct)gbBmxJ!P?}xXQ&>fJ_ z=Lo@Ig7OA zJzI@kS!=lU%rrQuzYh$KG{M@PRWT(m9x z{#W4jY-Q!_^^b>c^!w6*)=3d1N4@#AW2MasKh$6Rf`DBCQpvpbQDfw;g~dke8I(yE z6L#(_>d|IpYh{rKVo?*%5*$=tUoFT>FKy#swXt9 zQ!H8Q-)S5gZK@3hGs)k@Zr@dV4-;l1>~xClGs3V{m7Hxj6huVSegdxvS- z4#@;V&88MW{JaURCljPMNe9BU*6>NoHm`l1xN~%eS%;GgbDL#Vi>%Ds=yfN!9XYEv zfKhwRhlRB6r!7L+41LX=W17*;e{L;bk`Jm5fnUYKs;y|JH%GSFYFc*-B`^~Lx9N+@ z@b8{Tx30sP#UkN7if~4sG1XDo-GkWA({x9Tdg$(vv14Iu-HgPbzVzTj7zRr_P8mGw z`B{6kZY$B^KE8@3MK81Q>Ro{Z{cNTGi-AuK*Y}oY*U#(& z;q{KZr|=Xmklg5SLBljGT{v$ri%=x81mhiDrcHzr{s6R2Sdk-fL1c$P1u{%iQhYkR zEsqR6uU=$rxP1XZe8cw#3U7}+7DQ{bw;&z1>;bp+AFuY8y}&XG-a7oWU{x08oM~lbL^*RXR9*eXy>j#n+8m+4#oBI z#pGpMS*LV+R}SetWCy1Y){vW)2Qmkh>`sxt=Xtb+(!^cKgiPlNSGVY^gTm4K@)V z)Ra{~6sc+FD3w^tjHgo~5Vif4 zUiFRJ4#qJ>7(Qs0?{^Dc_6#}i^xcJ(JM!$!uFNsI3@I~a`7`dk@Xkc5_LD25X8Dt} zL&4FhhnInz?xdL`o7|JLOnrYel3T$gXpCK~CjRKMC z-qRGnr^izyrNupTv6nAy*!HEX3>MkEW$z!l34jq`;)1AYvM;h0GrWwcqUTFZt=+t|o_mfPL zTVlT{9&?XFn2w7vGRN?%ZD5{kcv#N;JxzR3^C$KSSn-+zTXFufCFR3`F?#ON%ylmD zOru49SR;o(YOhuSDySIteqnb+;cFUgL3zcjzx-i{c&Btogb_&ETF80V5?PpCxrd9G zRR586Eew5wlEg68pnA`ePb(=y++BIlGsN}$?CDEz!?mb4;ddJ>k;{_RZq~A<6=(G` z6cFY~Zvj1P-(%1~`q6;bh>;zH$)ma?Ia=g#sN@96P0W&9xpYm7AmN6@NXq0j2(>>Y z-TjCm3+FsWeeKum&~;Sn-A*_Xs_tl&#TZ?#k+S^B>E`-p`C;JNR`_TQBL7fYvO~WE zsMbt;=ZQsDv-=?^I=ZD>l;? znW^m50LiS6XaxH7kp8(yN@DwCe3O4eF5z7QqmNN)eV2X|WX5GC9t4`CeqG}m;dNUIZY#bzT18*ZH zwKy^!k?(Z>LruV-ePoA+-SZZ=tKvaqk;E}8K&1me8Vwb^j$!HZKjJj0ns!8~8io|$ zzRk_sG^G%}ToGTNSFHpZYa3Lo$-U|^F)RFurc^xf6tcUycS`KmXix-X&HR8enHYQ* z2Axhbv&jqrIjb*s0y4}ORuLHzO~%aw?JSAnyo@wXW%Vt{#5RlIfy30?38qw_iQqJv zJ=?HqVAK{PvC2puD_wt>)%*{n8j<{YR7&pK^7q$?BkB6zO}Uz-X(w#rUxB zPcHt)@4UMmoGv&KJUFb{uO0h6hENS8!W$^!YGziUfpm@`&71;gLi=JlO%*xuUHclU zD&KQCwa+6pDvTb2Tnrm;xPgG4EL&MZ zmP$otOs>J#5}Fu_C~QN!g?!#uOJ#4kkCCV6%V6xg7K?k9$`W#srVBs8ZG>2uKAzP> zAz`Wf^xm4_20nMwaF{~mI_o&DU$>82uz*(y)nynC$DvM8vX(#G)KeO)-S^ob6hbvW z3{1u%Ub`Bl8iQdoWEolL3)&W9XF%F*rqs{&L9?z9rb?TI*U-;R>GRbJ34{f#>bZY`hF^AVlFL3UR9NPfYLm~ zkPn})q~(uFB%i3KzyOA#NhlZ{`4m2Vj5gGw0EYh=x&v6#(2)hIR;po0tIssCVq2#0Jwf94Q~sh`E$scd+nztXGOh%Lz!gK!?+q#3GrZIWnojAiKbydCU1i`*a=RNN5pD{i<&d=aUcz@C}L zjqfbymQhdriYFP+rsj-}V!e4InqpoMSP020b_5GL#-h1G`Z(`?;WQLd_Y1vzigWgA z%ifR_s2?k&9&fu}+ccr{o+Ly!BQEp1WvahaR;qDj1@&Y8-~AB=S}&b`NIN$M-Jg6| zS5>GrRVUS1?AVIP(*ot!yw8f|e(Iy+^Lb2&xF`!riV0tfYz(Ed54T5W?Bd=mI;BZc KWqkO%@c#h+;`A~A literal 0 HcmV?d00001 diff --git a/assets/multiplatform/resources/MR/images/crowdfunding_2@3x.jpg b/assets/multiplatform/resources/MR/images/crowdfunding_2@3x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2bab828717889e29be05b60cb201b912ba453224 GIT binary patch literal 109721 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�M=92T;on};m;Xg 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ΠtMP9FZvaIOn(+{9m^>%{XI=1bHAa8 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 literal 0 HcmV?d00001 diff --git a/assets/multiplatform/resources/MR/images/crowdfunding_3@2x.jpg b/assets/multiplatform/resources/MR/images/crowdfunding_3@2x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..704cae87101c8b3bd16c084952e7922417cc841a GIT binary patch literal 70004 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

qm?7ZOJFwtKm+v4n*K@7ltp6kaG=UsOr~tbCm;Z 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 literal 0 HcmV?d00001 diff --git a/assets/multiplatform/resources/MR/images/crowdfunding_3@3x.jpg b/assets/multiplatform/resources/MR/images/crowdfunding_3@3x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d7c1f4e088d882f4e70208ad0b5668ba6acb0d2f GIT binary patch literal 124613 zcmeEuWn5cL(|2$w?ocE^aCdi2@ZeIUI25;HEiNriaEIVhC=LaRQ`{+9ptzP|1xk6+ z>we_@`hLGoerL~~oZZ>wpPAV?GdnzeecA*NK$OAC03;+NfGXkxc-q4Mqx9O*4gk>5 z0I&l9089V|5)l9eQA0v}07z5-w14UVz)Pg(|66xLV*T$n$cQ$407MBuN1UF>#Q)bf z+7W>I-+f;ru73~2h<~a6=c?>z?_vc2U?d?<#CNE?{QP{$NdKuLA)^2a|L1!?Ufx2a z|D#)o{6BP2>kCo-r;aiSNB{3O2x9*p|03`&0{zfr&*# z&qpkWO`=0e#$e@T)5>`<)j)?5-pI`W41HZ71Djke29zYCF{nsslnBD&~ zJ;eBk;W01~PgMv3NGOO~3{)&+bR<+HG=%R1nGo@qo)4W!E}57_2WsU}#1PsrgTXH# zD6iYQ^@CK1j1lzG^CE?bSyuk~* zJv4*g@17oeYV7hpE!O1+u1(1_{^@-?_&i9t3qP0_=EN44?>H{YrxX3QJWnLL;#w2KkXgq6$(^{ro6qjws0Q#3@vE4I&cgOJFQ;lr$uK zUV+KzKwS?H&ngt72~1Qc--4-F5#ug*#DE#03dIxOqhy~N!vcsN(KFYgCQN@0Utxz_ zPWPiE6cZ9f+CcQjcCpj!i(+GDcrB}uFe<_bSYvD|C`eV=W^258XUtS}2tmxbLGE9) zQP4>U0_6~W2x1MyDgF)stVU%(Mmk3&NLBU3e{ESa&{rwhWyzo)mW`?RVWeMKR0HF~ zYkd|P*{Cp3q-@n@G%H38h{>{#LB5_>MKy-Ok^`zNzQ+Kf_Loa=E!m5SQK!&BC6L1| zLzIe1wnnUBm<*auQ5A@bn*Mk(CNP#>n-^9>)6qAWRHYdZO0f`@jwvCB%7MmfJY{5w zm{A+7I%5105R}h8aexUQDWb zNieNQm|YJ=8TCTIc1i%>uVK-);y^Q!mD&n`+a$hYVxLmYOd(aTI4Hu__L^luqv_~J zNzP17DYP;~g`_5wG$~7N5wg!9CJm%OkS9`1vkVIpnC`0-Jwg>EWDkurBiIF8kAvi} zdlf0ekOi=efW?>?!>C~F+c16LeqrQ$dWhuk1Tl7RM7 zf>A%fpMnFDBd9=7_m}(I8(Cnw7gY{BR281&iJ=empYx8&TA2?QgYW|4kUXa9}ruv7cVq#f#nSU zCLGU1)a&Mlm6z_E)?POMW@J;GA7Z%U)d39C3EyB(Gl9`{srQ0UYz_LuE>POLT8}oS zoA>rtecM*IGrUdog~0ku&;wH^QEY|Un&2EwdQ}hXOGxkG3g*?rz-_4Xdk^w8z4XmG zyH!}Fkkja_y_o}nof=-Z_Vy2Dz2_b+m-p$jl7)%N<4#cr8|a2KUxS0cQ*oYsiAL~j zpB$Zn1qZr*(ie;5ce91)ID%lxvYIeb_F)BFqDWwp7Y-&P97GTU;<9sMpW^ZIMI@oXBzqO1Scb!f zU~E!2)MH+;RMC%yzL+HUnr2fEJChzcCK{D?2pCpLhz7ig4Fe*CXQX$4U=fQ7@4k%{Dzd`d<-BMsO&B94e&#pBwgG z7(xtCA%#}*DfnZUav12GA#rgODfHU>)nTA8e4`jhFO)>Z8V8{cB0_>1KsJ?pn&M?- zGzff6kOeBadof$Jywy!1(59c2Y2vlCD2pAwn|NHpw9BN3hRi&&L zMldlx$=4%<5=ycY?9oY2w-?PnIcIzQ4J*+6_s%Mv$RnPza9<)-VbW~qA(`&Dly%YFlJ0`-IQ)s zi{z+x+t6Zhf0dOn!~Qbjfl@{97=*ln(rge4(@2M=C=^wmL7zizWSr0las# z&$OxW<*iptW;O8r%g=*sIyCqWuTzuNiE1%0c)u75>ZLtceGH0Ya{6aw;Ny*vx2dL~ z?@;n!(?O>fW1mMTRVB;)CVu^dC{Uzhu^jLUF(}q-O^jtRLxnejIjM?FQ4O$Y;>0x- z%G-5_NSpsQ)$We@>$-<$kG4C-k ziXss#EDvPQR73DwU%joWHY4`kCLqBye;8HXAp)v;yo--2M_G-o@2)^%=^YtSK@?-z^NN!o#vnJO=r6l6u`?b;AG{<+ zCv{h>AlxU!CPgd>F$|>02uh$GeFRU&GLVL|hJ*xA03+lJtr(J2jEFvp`z!Rp0vSll zFc=wtaNRmg(~PxSfq8g@K{(Kgyj!6+0A$(Aer6XasUgtEkU_tU%f*Lhvr{4?o1b z*f*nCZ{!D(|08(Vp%GP@;xR@a=~Xc*Vi}O@p>jwR2bKt-La?GD1Wth2ivR%ucmPGD zkO2+qUR*5q-}sRYI#4an?>16}=D&b*1uQKtp08I})_yCs zZs47P8`DAPd|W2z^)(s}$Kt~8iYf9cixh((x}zv(;gpQc1z_t}+2zI=&3=q!*HS`R z!E%^&A|hvboE)OG3`r56J|EvGJyX5Zvuj)CDr_lp5|0J?5@-Rz+T)NfXX|)-ExJUh z;fpf3t)8a0@yL+lrs@btfz8JGT)XgPVO@c?#(v5s>pxa4dAN8PEpZ7r9Vw=V^-@zw7 z;*kmS6w}K|<0;5a>C*1JG#At}>XgSzauoD4PPqFkOZB#|YA|Z{_1HDzH zmcY0ebjj^{)f20}&=_C@GbHA47Y|daxGkwzLY_ezhb0V19XBwb$dMF=bYO)I3D~2> zgoH*^TC`A+l#F9We4xRMkY(S~?M0|}L5CvMDIF{_MK-ZxLK=kdB*`j^Q_xeVg^`4Z zXNvhJ$i;*Z;VTd+J0&Rt2b|sF=%`!*wiepOY2Q1(Nj7di#4atKFg_d$T^{%pZSYV_ z0^;4)9gFHc5=gP;^Tld=U*a1mI=4Pz4#N)SuJ)To{e3N+QjXJ!M{cIVVY|Tgx)14> zVt&JXd#}ecb@9AwgF*2u!4ZM8dB?ByGhMBv#~s;lc|`kun@+8Bf0ua5R$yY83UCsMgS}eyux4xA=Fk)oHsAR zGz%jQD+~)y#vvh{rDQdkBnYd^3t=X85&hPu>!fx2h4D8Zs)t^Y^*E-HcXc+sBTIcm z1xdXuLce2%(L;gb1d5;4|6@gSK;Skz6bOY0p3)&wtVRWeA@fZmEDUypw#6{J3EBII zOo$D~XLVpeEK1$e3NVyKf;ewJ5TsBCJzyIXu`tExk&uKhl2b@2%20LI+OdGK zh*c|wJv2ftQIt2Z7iq#o;);P3{LfnecBpru3%39g(}szK2#!)idR-sC0$LAt*+Vo z3yx9)4hwkaPVcqgVqhgFqc$eJ<5c>-IKl+Wi2a8d%J+w?xj&9l=+@=qZ$DjGe=8n- zLi~jDGJnVwo&dEuiNR3|l`2+sG#Ud07n!_1FSnO)eYrm??%s1=)cx?-dhemTq@J@p zSjia)4?E?RVL$TZOKQo5L{Cv&Z@)cw96hirSnwnKct2rMsZ?Cw-tm~MZ&9N$3W0lZ z-Km6N`(vuI>#Cty0h3BC!#lW#YvjY#UWa;Mei*CnbN?o^9isgmAt$3_FjEx(Ql?Q+uD|6!KnG%@LN%7U4Gr{9rNxq z{!Oe8))OF*7Iu}We|YQrjjPtV-Rafn=zPtx_yWY!$_n>m+9>^gu8tH@@{f6~dKEX9 zSG5x+6p={C^;47RZ+--ml@S|1e1KnGYZdS9gs$D5;%;`M2cab$}lfX1~BBPc|Rw+2fvHGRTev&6E#eSJMcQ52!V!5rypy1p`+#Gw#?*13JoA zRBE`gG<2`CrU6rbu(Jl)R36nq1>6>_^W`6fa=>++ZRJXnL{#4kdVU$Gyo}>!$axmB zEogc#-}mVfcbf?V%`&J=aJ{c55w8Jqv=g=Lcl|FBXc<#@iXEG~GJsL&MOx0D{`0Znp8x0?*oZ#!F(7ha@SyE$5v01UC zVo5t#24Ko}?N^EFNjGrZxP|nY$v(1){j#?&#UD@OD0;=!?1>cgk{DAvNZ*iL6gC6z z6Cf<%+WBFASwp6AeO;Z3mttAmMmY;`2V0ZBOYV_qFVnL@ z{L^wn0?7k;VobMR)m!0LY>BBOt$>lqnkALPPbaMDOL%0M>On=$)FUns+Ie_p{>wB^ zQB3JRUh65_)Y729+eff+tEnMvm0l(B@5zw`+AcJ7O)If;?x}=6y+k0qu)KU(VKwmn zJ62zgKHLR&Nb7~}N7p}2yOos!c10XeEB3wxE{XB&l%P+_dD>t`HmQW$U)tsTUYB)l@21DqcW9kZ ztX#K}lUJ@@L4Md+yTvmqkr1hBn0Ww)Re0+;oX<)CFNA87-sWcWJgOyUSRU#ZHMy2+ zD}+;HN@8-UQ3hH>M~leIuP@>A?BUJye4S0atzvBZDAh1$CTUQxO)%55-l2M%5wNkZYPheSIWWamWij&K`-r^ zPVWESnw0A_hnw3kiO7qk!7V4-pd~(70fs;G>aM=ovIrY^7m-5WxC9HsuaBd+)N5 z3@a6ZwTIk=whl?o?R^8ymL5f0S}xn3B}|qtaJIL1#FY|RH8EK2O#WmVyreg#mtq{> z`pUG&^zItzL~qisO*Xaoz@VdCIa=MzEo`-bcS!Dze%5eVqk4CjZ@-lKRa?rj@Vn(4 z&DF<%{fZ4|Sg;7wvQ`ptE1Ju7cXMfrr0__FW6LPvBolp+(s94o2-}zE? zo!7fc6r=62@~GLa%YTyMDXF_%+2rqSgtDEeq-A-oa4&vKa@dwaHS6UULlYfMhgN*z z3R9!l$75*-utg9R2xcN1q1yjedt!d)7@bp!Fny#E&7V%8vC&_9>cXK{?8wg zty&g^8$x>bRT8%445rh2{c@IV!)n}enVjweG+eyjC?~?oy=F!P45!A zEc6!Z(;&cc>1?}7s<;&*bTEHKu7@U_v|f>ob;TjgeIThZY{m7=aVD_IIq$FfO>OWc zr+t@`k3m3QWK%uCOwCG|Vy*d!uI>6L{(H4vZMoaWn)%D?${DSe^VZU2F5dAoe?k`N zh*CB~@n{C~KE1Rp4vd^E389V0EpNxOv1ZT5hT~L{js;>3j@0>VSS8XjI2}&w(W;ZA z!f%kIEO*2h8oTNDRpY_M6_BAwU_+p;D%02Ma?ZM@Eo9uUzf$DDf+YL+HOXuBLo4CF zi0yCB*7tC#YVCQA-ZQGB?n)xENVT;w%|_vHF72w?!dSsJ?XOTMwdAO_6jADh%2>0= z>dImZKY->t5@q;2?vV)XYIoUA1r%=SW9W$9S_g)O~nURt@`^UqDE(8UA%RPlJ5BdEhq6eABQrFsqF_FibO6c+O8L@~vjT>L26~ zL&>I<(ey|XS{u;}vXu@S!ptkmGV$0~M~k`BLI$Hb0wjUy@mzYP((s>YW8JeaUM27N z>+wr9lqa0*ZeX>&NCAb14Ix z)PPl2=q>Y{DsAKOuK2 zw!zOV$1C(zCN|YRIiUAtf*oJOuXL>F_tnwD&sr_Pr{R1AvZgIY&0VL~nwer)Q=85G zhl==@0V^^MxgWkY@-34(Cvusr)Cr>mkb3FW3Zf<4~@lC#|BF3TRZ(-kFyy9Bc z`8;;zM%w)icig_uT&9Z;5XO(E(js}S-y(KMa2QN)($*>zQ)i5BJ3r^6J*5Fhnn-1j zT_V}~Gf%Hl{&h&nJ?8sX)sl4GtZ+dOd!xW;jV5!B+cz)%%CzkCg1sHZS~)f>NZ8U3 zl&_GKPiSFyy3KwKBo2oLdPfapPXIWvlo$f#>a;B;ivLfePJp;n_M! zS%J}z!x)rM(VDbs6w(g;J_RUkG8@^osv%6mhSjYFq1ZLx7T4@ehb%tY(_oynez;Hz z5(}9h&jTz3U_z-?_jDluKPHfT8puzZ@+R}r*~Mrr;Oa()YT0eJm5qH&VNojhunIoh zi;|P)dCnCyGMt^mNO;qHoS5*Z*u}u2CTi7xNECXOewM zK`g7R!5k3x)JaS%5IjKc$}P~m+SJ)gvv6jBuIi;1a!`iIZ#CB;Vw0Tg*IJ|p0|d%) z7(0L6dHow`+50sT@3;2l=1;xmP4ed4$Jc!9=xX$HAqA!`5(&$FyiC8C0u4Zh~2k&f4{gDDxb90VMK*oen0q8)-39ji#+TFxHtMjS*@<^S>nS9mC~Qps<-d#8D~cf**!J+XdQpydT$TI zt)!UpC7-bu}B4d*Lsui=k7MV zLt}BH#eD0Q)XSVCJ2<3rnJU=Twz*~ebAE=(yL>&+rDrAhd|6op)o?WB4G-%Nia%Hu z_7}wV#=VmON@B{p4=T|Xa|14e0WVRL3&NoAgh&PH@qwYxUu_;--!@`BXclTYW?!tB z3tzV@)u{=AOLXm4)QDpA#dZ2%Xu_&!&L$oCM|@qUA_WE2jtgD-RT^A(Syia-=XgGJ zCU6@!v#ERsrMwY%E;=;v!g7)9R^NP<0}G%Y7dpj5DlD4EadgebOJHPq|Dl;q{Nf4l z1-s`VRp<$z-FDA+`GM|tQuPy{UBKe{S)!CIZC<|hb_c2S_#KacB*j}L5rlie-1^)x z=IWF?t!)LmLQ+h`Pb83#yo+Mf8I!tVesmH)GPUZu_`I>Ix&m7lA3aU5zP~~tXoptY zplN4w6D33w)uwc!omR{Yvd7%asIhx(?z^gc%%5W7%ps&vGKw_U>-ee?ZJRGlZ+l+# zcv1SWWtGDtaa+(8*I*XDVo5GJh{@&nL6Icvl*w^mLD02C~Q5{ zqadF_a?)|1u#P=fM#ymEdZEhiDotL=Q6Dn8Kxdq5d-LU_r5wux7`Nq83G%~$yX8dV zJpr1&$JDLwHs_C(Q|X&%+Rt;3xh%CWsTE*hvtl1k&d$oOnq%;5;*q2eC_;2ENO-=+Zx<|jSAzGe)5Em+my2Uu zr0`0~=u$Jop>6*w?Y(pbq8j+mx;GA>$k$-QUI_ZL_oz0g74cfjLbQ^v{5I;1ZLbOei5{QN)PoScD*=w}MLaj;U7s*{-E24DCrkT!*mC~|g)3Qm10)JEIzyZO-Y2=TQ zwAEGvyDl{$s(avHs(Mz#zQPaaEiS9j1G6JL%+TesXU#A674Ed0&=g65Fu zsJrwKuNQt+%Q_F4Xx1|*oTJc}kA!;a|C~*_gJQ1&f9B#ON~-AH^PB9~tjyUQ{T^y? zS{U|j*Q$Z)06U}VPnI(vUtd=M+e${U0J(kx&fj7p4+pc`A$2piVYMdW?&~M#?XM$*q^(5l3j$~g@#fE;S4X)NUu;1f zyNMCsOrAgQNZ;)pjEJS8*e0KGIezvIw*pl)Q@jvPoQkyy?6-k$X%8UtQ8|n9A_A@D zv>vF|pOg;`1Q4ESEZ)BXS}^vtHe$1ZYVUv~Dk3h5*fD_J#sE=`K?Ed;5b;zRuN6$- zDV7ZyA+{MNfj5ff97SX-1pF_6&6e`rk0GNKcL8E7&8hDEFCKopm;tU!A{ zLJ%Sp_O}7i2R%gityMRrZH*vS2OSYVqIiJ*N9xSmq41rSM0iQH`e^Zr~!#V>F)6%&zrYtRix||KUppqShDwZ=8 zgljW?_*ji8Ncr6=x#}e!;%v?ef(OvP4dtr&a3wjX=X}o}Z zo;)3yE{E~8=y~XNvvIrcSTF10y0q0IJNK&aZl(AqSS6-6Z!CPrmx4$UlD5`fX$R1VCMp?!6{{QJpQ&%|R8eqcjZct9e)2FWf@mOX9iLGvrA=Kp1fD$EFn_C$BIF!B3z|8-RqIVZ4=aURe9Bn9*{8!3C+rM zwX)!raMzx@Shin56*|W$buR-l*VA_e(JKeM!UxHc_0q3%x&t*GMVQcSPb%%|2ePTp z<91KPm!AN3ze-4&osFcZf|=$alUeh=(^WfzWRB2AeGa=c0TIw;EJ`l_Z7oQY2n^Py zU}8ayqgdHXht@jbWvzO@CtCB2S4t}a7srErilafc;jBM0pR zq3_1TJZpD>QjXfMP)eLHl4OA#?iPAty{jw3gAV00YwHRf_+8(NGdPcSD^^PA&rH4s z!J?{aF2&eYf9m{RPQ7Tu_{bkU>%H#QM&)RCvbRzZD&(p0u-TsD@=CFC^o>f2nc2enCp zL@C$A{%f%kZVR$ny!_H;LU&qx4i;Rns9v;GA;d1*p2;4%AJIkW+8o)eobF!A z4wfnPe*zG`r81R^hn`KDIGR)sI9)Hkc$t)4Gh@EMlA&J?sll*g^PICP;#@Wc&>7kY z^UK~0m$~rQyKsT#?#Z%@yyr)CTt>~Br879cepbMtXO+EERb^QLOMC3K24!n;HFGm9 zrG2RKg;v4XeM_iD4+XI4g-iqomTH;k6)5p|KZeQC$cG#;rha@K?jh;>bNj<$peMDT zz1&%3W2}x(S1GfItk;z(NAgv%aIHGbsX$}J<&lSrd)6d9gy4!SL>m^(3kv}N zya7lQbAw)SEvurjE|u{Nt-|L%Gj&w9{am`m2FLhcYTM1V%f6}Xsd4njSEC|@L31DD zUMVR3vijk$rkSVfPvK$dlhjt7J|%gYJ_jwO1!LUK$3#VAl?)B{Ou-v zy_mRKPROdz^QB`gn5y;xI4dWgt5i()$bON?)WMtjXb23j$DlruKDJ|h$tir3)?tu^ zY%}s>WB=Tgv~nA-FaT1!PVe)!xHia;xmL=4&NzCp$~ztsuLpC;j|slnGxknQ<3D|~ z$Y(z*MzL*gN_Wg0{{(>UxM)S#F88PEa0PDMY<(+Qc&40p7MCZzpPgUY$;o2j(n{lq zbwTTu)2}wlLNWYKV#iuPKY8gO+u(;xZk5QRZu0Esv*&)TLPzgxQ~FQx$h zCpc;1Hgd0@dF62h>xXmhL%bj)Uy8Og`|LJtajZCrB*u~k<#17k0MM$DBRq7uT!Re`tC7BKa2UP zvm+JfeA056z&uL#N^X7ce349Du}OHX=P0H?>F_>YrDU3of1Vwe*+f}hBchRsiFMS} zHYx=GA&3YeKxEV+&GHr`{#ks*<+=6f?bHQ%H`N_4oUUXSZitDr_f@SzeZ1Y!b9M!q z$Ya?=uh200!r`XDF{;amms-+X%!#~icYmeB%MPKsV2@FKN%3epUrSH{W-S|TDRy7lHYrlX@cYjW z8@ayW4&mLjET6TSr3nQ%YW<i^Smq5n)PU#@pVDf0DgQI9XK^ zvGtqSVgh&7QntgiLH2vlnVPu`A1%g((Ryl+QZ7|p>n%$rSprRAzN+lzvJM(+EhqC2 z7J_50q3SlB68hB>OzBBUSf5#{=4D0YJxhH7`N@~3B_#oT_kHyeyF-$S4}2>O4CGF| z^BSpscsfr2=LsH?$4@gY-~s0QIU088;Z?SVfk~q?Q#7xQNpRWTiVH>?E*C^T=(7u7 z^O?wMYI~I#IoDW+#y4bZeWj0sdV+j+apU#*{wUk*j%}@c1~OuVzEn`z zyG}^%-g!c1PVQf(M(0|wxoYaMzDZMqD7>R9$xz{RCm5Q{Dy8kem39m8eo3BXI(CH{xz?H>!|w)7NZZ^vMB+MeP? zdkjsc=l)ym23>9%+S3p3j@s&kZEX&H*g0k^uPK>F7mwfOuz|>_Sy^cM!5B^UCSB|= z>S0$alf^i`(p_33Pk_8Qkxd!9A7_g$njKAafh%5addEHyknyhqOE}--gtuoVvtk7~ zMI(N_8`Gp`scJXCFhgniQiuJUZO4{6KYw|>ZVacecF8;^8$uAmucv4J8G!5=XkFvv zqT!NJ5-(|Cy5OTg87<3zsvIPEnU;g=%5W^}&{gPfUv+uggWG?&w=MG4@61B(#3`*n zqm7+&q13Ul+Icv=0Jlg>Dm_+~Js52!eBD^ei#GOF$w%v35VH^VZMF4c_4B~WDfP`K zK)#fs>AOFq6idz5b+mDLITfT*0vRh2>u>A|bYF-Gw5;Pf*%|mu7k>LGk>4VzmzJ+r zfx~(;0?bQ1Psjonxi2pqarHp-A|mo*mnc(`pCU#HAOb1RB@1pzqFF!=W zD$0kGVYa$>jmh(`b3;)d$UGLM6jy~$(WeT*D~qL6CK(z@8EQm=M}b(jvA!w1FnX*$ zXc9UAS@Qf|v=Vze-gOt4>|ii*xOzt=MMnEI?k!kE$jSOuvDU{$WDG0;_Lksym#o*6 zDf07gOR*Z)wR#*ErO#eH3vjJfYd%aBbZ)35d-lG(zV(x@-8^h3svUMj);+@X=?WBQ zvz0M?t}V<_;@#E$ZAE}3VA(r1V?i~$T<=k{h+%cIaZXs^>y3(^d=y!PQYQ` zG?nx9Me2&c_{A-Y$@(?Vy1`!<<@5#>F3fo2^H>^s-+EiDiU|k^Jly5fhsfxAiD#7L|I&DZOzv zS)C_ezTg~t-**-Xw@|By6SdkVOVNrFOTY+A;-OKKYOQ2p>&J>>$Ul@ zHy(>i;YX8P!|R&C@6>zfX&sFT^HJ@K;ux;Ny_tJz*97X?-@gQZsT||3X7q}+i_&Xh zf;FiVNZuLw4`ZH3eV^RKgRi-Mou8KKA?P3<92zY(%B)SeU^{hPXRj$HqK|1}KBCVR#&r5s{qfnP=_QL)l~pnLdfs{;_GO$6f8b@3 z#DBi{$>x_i9gm2Nu*X1*NSy$T69?&L^ldAC72@{z?{HkB9ErHRN@ zp>O5O!#Ay8AJQ5QJ~r*2--&&Z$cr`TBNme4*s3H}Vk{S5aW8dx>#Wh@G@fckt=OPlb}q{pKJN_0$6zX}O2wA-z-cQ8+ct4& zg4eRZDxFXy+a*x0oO%?{Gw%PP;CoT_V(wm|*=79PE#3#2hBo=k_iKac)yumMA?Fe1$*50s;i4+77@n=LZuh6fp1 z`&=?XGE|*%Pk_%qo&a}m5{!B0D0YW0V@$Na|Ad#n8!B(xmxV#+OD?bjQHKs*3%uGM zT9F>&?D66{w5zKgismx^#DVoHU|@b=%xa$Bj3$UV2l^Zm7(`TKtC+`iFI!NYRh9R4 zy6ODFn(x5vl_hSg;{gTA1{Yo76TqR7vZZ6YODd(mqIp1Qg7`Zwp)|Av6F&U1l@zb= zH)J4D^;q8(S9mMgq-5G|&1QpKgF9Swo6NsU-^tTz-d?OPqD>CLhBR?bJ>iK&!Cmgl zA2x0`Dji(&Q^)ibc7oj&(qW0i#DX}HQSH!lyuJkFMHumb-}RK7Xhx0Z1S>S zbeJ{)06!^I%SpKN+mh$y0pW&oN-hwmE{`vw!nAJY(MssY*ZbycjfilIy^xgf zTB()G-N%!U_H=Sme+V6c56Zy}@f+`37Q7KoU?2WJ>rAIg85Me*B`j*q$^6qMHf3en zt>)RPQhB&VtdLGP*Xtus{)fbs~K`ru-%5!zFT)3OM z^=cIXWuHM_aaR3GkX5ADt3bco@z5Go(A)3#H5p7z7xz+PV}6W%Z%^IYye03%FvKSD zr>H9RBEsHI5?(wxWzB+DULHQZx4yj`!!lU+Bv)+SLVC0I#Uxz zt!%5KU8!>-bKg=ygty<;x+K0O-NY@|hSX~_Nr0NJuQ6w+5Ef&(@1BWagQ7cjm`_ z285nhee;=?x1-F=Bt@r2_0tlEr6vrr(|lii)w2I=*j>tKTDB6?@}x7+a##?aaV zZElcvVD~{J91n%w{ykZ;SLnoXnx>_M{aV)e(2?k#{m=62g6kf(KLV-oobF_3l1AP! zY{t^9dZS(CYgv;Goo51MJ|=ftKDFNL&#^tOjECHd7+Lz$vtHWv-x7>YttA$n&fu(? zvPgU^cmiaZ``KUiatu57{FYzDC?3jnGt>_7og?CwJ;{)WT@Cy>;6eW z5+{~^HepZAL^o!-I4%9PRQ&B(CB;=1JktPX^8NAET=%t;WW)J4capAoHx}qEmaOBz z9CuFHOQ#fCImmc6vT+79<;|c{Sq{jbIObXa4ljq)1_jsZBKnEHRrS5*s+SawSI=Ec z3hFm$_H`<8`u0MqgGidmlL+&iPWWQD3%mPmB_ejjkywGLotWbvdM^KA_X+Tl`3Z1D zPRCk8BM>w^7;u|arV{q^OMj~?jOOdPy@v0DFV~E6Tb;p-2~JI^Q>r7o{|>SQDgDQ| zgtdX&fq>kW+D^~uRvQ;JNGOY1sjjUKk7k)FZ+d2$EhCmo69|Ct&3q=@6|h;2%Usbs z;iMTB0q(2{=M9Xn%j?8>jYFtgc~`tb$4yKwa)W^4G1qKG9j9=Kl(~1l)d#k>j2_eM zo(H}LzWKk5WwocGjxhQhdzUq8&_H2)bVm33r9sEjXK_7=s6cpN|fKLDo4S{7ef0! zz1qN~YsdUvGq(95!^`m@^@G~Z&#X$e^!I8vC|lh>SlSOHOZdBhe}Dlx#hsA0mLk{n zl+@clg`*5|qX_q|hj)jE2YY5_Cg6|lIPA59d^gd%d5?%RW!8Jndo+tWS90xECLv7^ zLFYH~Bv{6!_+ckks}mhfEGyb$l#GwYyq2eJC0CCAOCZ65m%%H6SGUC%^G7Zkcpt8# z7ZaD(8X6PvDi^K|-$|E^>6dNrFMb**?bLk5A&tU6JCWvTUpSV~)??2e)@C2Y&X*rm^Itt3IIThn-S=ETRqUG_F1LeajQs;-r17tgx%x5;3Tbug@ zfbfxTuOMbH|7Ze#x(f<59{j|#J-rl+!Bqy~z>iW9?gks(-)c{7X1nT)uhAyvC`d=0 zy)KpQG9(F-t~yVDt&KpbFniQKP{Y{@pj|gi&Ey5A4_AaqQQ<+_1gj} z{+$AwO7#;W&boetEzf;5Vk?`}<|+kmnJp@&YE>|LGp-{l9aVp+87ji@%Ig!C`;?ym zTl7`;t= z%g|8pO{2#b@ZwQanrF5NR2hz=(emH$Z5Xqxy{F^8aN0 z#$@W@FomI<3?MRkDI*XGDMt*Jv9Si&f3pu1D(ST&2oVu9>^%f!dBwEBZMoiY_P?pq z(u=Z@7q*tb8(t;%L&VPg2xjad`d*ACLn176LZVFG2AR0CndT1xIWlQ86R7YJ%_Wm= zwq~J5ok|A%9s}D-c&*tHstvhL=zi)+y#9xo@7rc)k}t%Y^b^)@I1#xLtGC9GIM`k{4i-gVKtk_4;n>m5YxEw{*|h!QJTT|o>qh9)4;^$2;{B9 zY~l}PmD9kP#2mXuE)O^S7ffZK6>Zb>iMR~p{L>%Qx&Dl4(klJRsweRLhE@VZLeCJs z&U2CHwuy#iMzqhR7JK*XXRPhW9p-qovVT#jz_aa(O#IbnF(Z;+Q<=#bc_ZG z2`TCBuF)Yi8jYmfh7`lAkM1hv2PCwQ5HTYNnyp!Tnj3kjyUgu-s0`57ad>{gu^W?{Rz~}p8 zdhMq?kI~Y_qZvypM@dyvANy?5mhUz~KLnUckWS!i%YN6)&d|^NvjR*~LvQQ%2Sb_8 z2HB=+RkFgv+SXvYw|M2$1UdW%Cg3{fMPf)fH{IvxZ(F|?qqqB980da|Cz6lTVhnqE z!$f?P*X%W0-fd5{eHZL@&9>1x{^Jz0fjM^Kc?}||Nu6ccGj#e2N0}p*4+w{=`8e8y zzMEs!b3K_o0=S7b+yZb_yH$y+{rOfHMA|z}kLRwx%fq<*J=Zf495e5}YqdgC+&f0? z)dCU4i2zOtX_sa|zQ4hTLZ(TxrSZSipN~f@UbPUZHDoN-Iq5YPxhR5Vba*wvZs18T;Ak6)_zE7EZC=74w!_2J6t zQ$yvacb%GUFB?}y^Q$-7GIPs?v@0d!eZr8IY7XqNqb?IUBbqkr$~g6ucwz(Qv%07i z*wv7^!6JPhbzV8swA*qJQfLOqROg)21RDejXB7#W;7oJD1V^xmgTjd5mz}&@aRPB2 z`=3mq5#Utc++YAe@bOSHKyV_N@GL;$FJH{cKAlVPdytFa%35-q!zXqWIQTEBmxV=nS8S@(UXWmhILza1Xcr zl=)5shWW64Z%8Rdmaj##V%L@k+56I!``BKPIyopau?+^OmaK4T;%3wwOHN_yXXKF8 z-qir=IEcg5OZ9BsNI`wU0^lSE?uZQAupX2Lycn(u)|5|7l*4J^J=7-Z-mfw5-=c^) z<8pW8G3nSI@&t&=A8R$koitt30~_1Fe^*X}SUOe27M!qFs+FNGCo0UyY3%~$t!yjV zq)DrKE>Po`H@MCPsuY_1flv9Gj2Z8iOi0RSN4lcdCT97m_&p^4>I@YymFiTu=NEsL z{Ua|$js3z*LB^AU`BV4rq8aGvf(T5mag7r4Nq&Bk9&<((UL_aL_!RsuO-|UZZt_sGQI*xgV==%GW@$eaZu9tR z+m=(DD%t*4?<_{93T%u2PMQifTpl3;wc)TXd;%TN@%-Ap?>04<*Tq*TPr^xK0^Vu4!k{p7L zK_>HFkQ_s9$ZzG%FL*@pXnF`6MSsn&(XIv;>ZzylPfah86$=X~aGu!QD8jo&=ajm; zIH*=U+Ux|wwb*bS)J15paV<<#tfDJf!O6L|pDHyH=n>{2q0 zSi?}w?~1EXUkCGMbChi(497g73CAz0vc0RnsUV~X;IdbI%ogUQ|@Tbx; zGK!F&6ZfhS1-a#dWr;hZ@CFfr6T`)}^GT|9@^SJdb((M>FK>jmrx8Bl%P*|rXZN;u zY{lXlZZm>)RRP37scc^%1-*3nvpk4?_lzcnjm3 z=CfFphZ?e!Td)2Z-*da+a8U(6!5u*lySAAP_<-^;zHRY9m;PL(&VsT} zxvJvG5BfDml`XzQqCZ;jZ#Z&v$VI2RQD1GP&A1qvO=h2n+t8u%AVZxpV_b)yI4p(Z zE>~8cxUFsR(=?}$aFSmgdsb}pUHc`Rho!^7qLex=ZuYNokO=zB6wxX&8h6$1n1r7u zNae~z&MYSY?W1e(eWMfP+MfkH~Ait~_op#EmL7ynvfV}(BS37F! z24m*ntDuCBx!B|?hAUAs_cxRgXaLTL75>*1TD%?CxPNQsq^Se8HGY{&W+u|K8 zeOCrOgW9x*IH^pabDFM>UJe5t%%Tzt*~z$Z%OY##n9*Z|C9<0Pm;DC(d(O&v?w>^% zY5nPNyJuHlrfu!yDz}<=;YyN2WkwTo@*ly3#qVCIi3sF%6q9l_HUFk9{^Sg|oqO~p zOq4viW2_QZg-sCo1Sl%)GLjr$5R8|vlKe)6wyW=?3_6eL86VcY39z#6tuyJ&q4t@q z7&o=3;3OdtGQ>Gd5&Qqf2jbWcn^Qi~hvUEY=Z~1TP7l+$b9!&>!U`S88`Sa&Cdasc zeOR;(sl1v2>W6ah<{NqB`}Y%&a$sU+$XbbL-hSxQz>nP$C3Dl8o)!;Imp0$2xEMe_ zW;H2iDpyY6?8^RXYGpB+&CHEj8!34qbmW0Am%@*q?|H}S-aI1B;Lk|e-m^WukT-P- zEIy<5O&O8WtCq`jbX}{nsiBMzW{r16T{>|vNNVMirpAk51agAEVZov>moF4|xC&_f z>QH^2x73{okEda?_Vp4$xVMSsD~;7Zxj4x%hk2NQVsA&GMKg|^imMpy>QjE%BbZ8ieZNSqGTDBs$p3`XGs_sUpKCO3(3BZzX>A*7qV`7m zd=G+;In8J%Kl2Q$l2W1>Esw);b~X+m>E_Bzja}4I4BnFo@HsFwF#1S(YZoKPqEk0~`m%)bYgX@se4#hxynD_grF{L>5?I{_8i zPSkbtn%~RFDBF5$XIyt8TsZ!l3E-)CR$LbYaAZ642mFIToMhrd&POKmiK@lf7ayDe zE3w9IkNRR+Vqe3^TUzdtN)!8Y@gE=yQt1wMQ3c|sp!lSg;>vlk@-U8hEOkLDzrUVC zE({nT-#GTW4*eF@!&;IoVdW+^6T8JZBTqw^(XBWbHda>fL|YH~m+H(9idU6@ zBb2pN*TRV(<4=8^KPUDZ@EGRbe@v~LB&wOTI&zw(Fe zVb~mE7s=yF#+75wK!o9z&`E>2LYN8Q<)bUvKBT9wR`Do^ahd}v3 z35?LlwZ6XrYO(W2dcQ#de^I?M^SdCDw-JD+2%ch+xhA$Kltq)aXBO zY2fc>u~om1d7P!jhO}bI7c1I;4`f8*Pv{D+3b>S0jh;bOUn5H~o}KvVmR%||t`aWP zaM8$TsOy;=wzij?>h_iiMR*bhzl#^3<2vIS#vP!vWxfW-C+w+|BGS`RZTV-a;D{_$ z1@&TgdD(8&yFh^7(B*fa$Eb~=;k^H~p78rU*}I;@lLo1Z>rBSj*HRG7-~{^2&1C;_ z$2pGra_qwh9Hb4|2Quy^W{cl166i~w{Z`Z14*rULJVZd$$b?u|zVvB;ZaV_c>_!Vl z3^diN+jAXbyz6&X+VL#AX>2((bQ)WXv}j{_eO}T8K)s&)l1KUN3lFSjc-|ID*Jt?b zX1NsR@NWmeU-D0M%*1zm!i7Yf2ZvuVq*!c(lgBzvpJ!a9G;-I_Z43$nR+-+k91EPA zdYueV*`5tQwNkE}^hZ6?_%l+Ceri1H03RZ)6^wp(P*ppY^vnD8?QeR4FV5cPc%7I) z0hcjbFfKcBnfmePMW_D&iZ)RxMKg);c0T@Zt&t%!KTR_IyzU&i71+K3SU3R8&ra(3 zc9E||v*emux~2vBH^RQzEQG&AZJ(RGka$|(3-n-6i+foyD9zj%Q+WBVlw&=6? zm8>mmYW02e)x%+S8;|W?kCpvPGsyxwRc2u%2}o;+nfc{hBJe!=#RvD_4AEXU%jVQ_ zidt0)9C1CS(qQ`=$%)E_4e?x{& zCf-mSiVP#Gto`L!rnGG_({NK2CdsRU;BD-^?g%&V>s?%NI;`piPJ*p(BRU} zfZ|>*MWr|G9tvfSpH*ZhH+GtouZ&U(Q(=Q_l8Y~eYlD+!ccVAJ-W^-cQt>L!$@;iH zE?&Ro45Yba#+T8ZsYjGrIv`)LQX}J|X{=bdE_nMer+P>eXm$~JUf@Im2!?)ahyofO z6@(X3M)$P?PuV9tlu1ev_q{PEqagaD8As&X_K1Qc!v6=b3VJr6$QsTNnEfe&LH?UI z5g2#u9a=yh5=rsMBYmPM{*^bB35S^3nsZNwI9*^7jWa@*)NpJVi8+606<SEdK{Y4Cq5G}N?g;Z(ma$#){N{nm*##y^TSJnRS#6WBHr6k zn-pE#t018NW`+ew%ns$^Tm11&qQkM(lKn|*>!7R*xT)rx1Ihc!N+Y<*Y5E~?Ewzj_ zMc{qBovq>%&XZ$X_x*1>Y*}|qH}S>U>_jemeCd~29NqhoO`c1)cQ@;-iO1DK+kE4=_-`Ll|LX`FUdt;s9UcDN=SAvK_SWuJRyXf z#0r&&ms{DBr%nsSY1;W8Ow~{c=!)y~Dr}1P#)N+PvK#%lhe+{3jECp-Z#nNbPS&asrI2hWHwl)ITc z&b7Ag4p2I^B2|mP9>*B@2TVKIECy&pJwia3N3R5S*de>YnIeyhNl#> zUwRB5@6z6qq?ng{JkYPT*U>55S|nijaRt8NFA_0j=Amwu>O3@^Z}d;dzkjRbp99nC zEzIE%klY!W-V!Z+l}5t?8cEfJ%!;1U>~Ucc&rqW2ffROP*EFWv%zK)4BMV`OrxAsa z@oZ)izd%LwsHFJSAA8t(l1n50!(;iAkbInOe8Z}zaw#as6>4QTNnAI9s*W$_s&$X| z={M5y81H2d#_l7qBAp9RdDroir2g&m0UhMmk!(e{5?`^5%1h^mz~8ncQ`$i6=CEwhFDS5w)>7Jy$;@3}_{D`ot0=BRI7;Ki2n)uY`HrrA#A$`nM>F@kR8Fb}$TzE4L+d4$QNnFU zWF%Q2%QpXfqnp!ht&~*DTt_`lpk-QOh?%0`A;6ux>PA~)$uh}>de4aJOXxC&doJc$ zow2?kd*+u08uIBOhK*=?voKIcv>n?tax2c$j{9Rlz54JGt#Xs0S106K46UFq`~>RG1&I!ANl+#-GR*Y6P(lfW?vZ4Sm(tgexnd=$IB zKm-n+i!Jc4p4`y6%DH1!dct%@%*t6Fv=(`Fddit>*!aBgJTKb{ls2Ac3?XbQ{`y`E z8!H-K93+!UvDUIY8YM}b9@E>a@VD~aIsL}u@P|_Wk!Gu4tbx*?CFK8Lt8_yawX`q1 z>sj2NgiOh;JqraF0Ea@cO6btcQ;d8wSu~n41Pn3@`VzqiO=k#V2>B5b2_z=A_D91> z#l!Q2;weCiL@#rH%Imx+$B`mKV(?w}DWb_^Xf$6L8gvSzvppro)%uTMh^C|V{0AhI zEhKo{K=TZ1EX_^Ny;M)sd{YMBO4&^BG`LB|r#V(Sy14(o4WyvsMBTmJ06g*FWblmk zD)!-(lqkOrnd5wwS~fY#(p|vtIQ}Mt-5(Be)a7LO2e1SC^HEa=NsvD%#TibK+N^X| zQ{fJId-|rrjYSA+9`BRCNUK#Nh8ww?9rgxIb79TELqxyWK4wyh4##lBBH*BT-MM@) zS+X_RWjFl9k`0IVrwUc4-TYBzim~x_Ijg2nyLxoV)IvCB;552_lPDST#>`MI#4`-^ zYpUnRvxxryes~4J(XxqhVFv|7>AZ>0QkY9#6O&Y0PK$p1*Rq+Rnde;1BM`0Je!Aa{~4glNM&WEHiDRsswh;86Nt%)2o>;( zx68uO1k6-4JWvmhUkZKRYZeOvIY2bpT2(^#ES)o`=9wkB_k?z3HKV_${3>VK3mlw+ zFi>kp0YhBlS#7in8u3ZwhDXjf*Vk8qhX#j|;L;X;Q$1otFLR0&?^1}@8$A|U&!5{H zS>tMS*QA*i9v|on+G<~%;7*nnST4kh*6wq zNbSn9=Zw_HfcPtL!dQs#v%&Ch8uHE_T=hIusM@Wso(oN^pku`xj)=cT!CE}~Yv}?n zBYTo(KUfZ@$!dYaCXzgDO{v(=8oAi9B|paXq@}gI|DS73N#*t71iEO$JYy7c;E_Gkp4!Lu&g_X_MV86 zeWl><1eUR(3l`-|BGU+!+eX+V&M762db;SSfl|HN$=$R)V2pCp-4qZSl_-x|s zPC7bdt6*$w_sv3tJ!(liTkNqtJ;p^^xNzYbGe;Hgg_gM#&|!9QBnM zWjfY-B(o%A1uSYV{beBqxT?%$*#M@n!-Zqv{>ocUhgJ3!sU$bug^@KSo-gj8@iC6Z z7u9BnR2}dWO405y7ys9aF(LM9c9@s7HP~oV>4Av(gy(eD3azzaaU;sU0Yb7Edd+&> z%y|;k^}Gvf>d6Kjt)b>?O@ZJFEi$SWx`~;AH}?7-COy4_>a3bUqo4eb?Z!ViObQ)D z>9rI%KTe?vj=3PW<~FlOGZW-{#T1#YumN%j_@o}JJCsncEJ!M0{OXmbugxmH(0$Fi zP|r%cQ3_zZSv3#O$Cz%!B_*UK(62%j2SwGEaAo2o@bSLy@42nRN@d!1hv zGmSOk5iz#0l*5J?IB2U>{6R!mJSY?fe_U)pLOe=pJ{951mTsX%?_vTAQW0n$^ zkYTlGb(1FWsY9iC>~P9T~eYu zTWAEGDGUIK|5hn!A{9+UPLY!G7MEGDdk0DO*$PDL15T~$gz##ssW}?6+hBN&qYVwh z?vaCSf-2;o)G#A$x`wxjAaBj^FF!##03BcTgzw)^;2?IrHs!>dIOAX!(S#z{RC&!#kE`!*cz^ZB2x-{8VFNN^$gu*n}EW-fYV2B!7vJ zg5$8jg_C=QVFa;8tGd7Ko^h6UX{v#9 zL;ggxxq{8$Q%KNSlKfZq4E=87);kn;UR;&KrNvspMCh@uXI`m9S$$HeZp1E2sw0PC zFQ1ajjO>%1e46AvnG${eCuha6-_{$J&L&noMn%g2V$m1BoJJt87SiVKIlCsmp4AtH z?k!&jSW5^sd!AP})4qo5Hx zy2B-6Rca5%n6KshR_bWaY6RKkxL9i`B;V5KY1mRrNpa(7Ob#A%ewn`1;un!2W027M>*O3DOVY`X6rOLeMv;!n4;76JfjR2mjesqfsnKG1cLtUc6lT7x zsw(C(4MA2XELWE&^(4~jNbu}q{k6gzw79_=$Z6?jy!#y>OtZ)17L;pjomJ{}!li-{ zqtg8kAP>C#`>W-m;nQlGa^BfMv!6kRW4p>+WXLYr96x!ndSUTJ1{iX0i5(Izm9Jbf z@!`$jk)Hh#c`869LZD*U&(mS42WvR)-ZaVMA0XUw*t6N0b$YRL#EAUVI8a~J$I@wB z@YxWLU=KN>UcxP8e?;u*dUI6M>FlWV-!+dlRC@~hlB=CwlGanRke7i?-@c`3Wnb-a zU`o4GjN(k^EUaqPYm^+Xolq3N*T+zohieL|aMHaP{f-aJ%z%_bYA)F?lV7-5V7Md& zUISqRKL^)7k4wupok=~Ez5=LJ4@<(;#!H{b()BM}Bf+kreu?@)PiVyvSzN&%-Pb`A zCv6QX7J_*%O4!0#>~;GbPqS&k*@9?cLen9ebNe{5YtGVg@6*d#^4*g1Mz@g>UABNk zQ%y$;-X%zd=FJb$yX{RIO%mFuGrb+h@oA}Ps0Xrlq_2tbWmH<`=WS6~d5CbShWO?a zWg(fS+!qf?TY0eY^IA9GXx)y}-=bH$%k(pxSSFp0V53B@G2CKcVdR zXKa5me?|qpeph#9|D&zA<4>VoYUrw}TH=Twe(OjfiH=V1sn}>dsY^0DeF$&WjS*IR zl>^FCy*mTo%P)kX?6NP7JKtAxC;}IJ4BpPXI?YY!7UJ^AGMmmyHf-x`iF&pah;-&e~>4SKAWhlam;}zCc*o(Q9 zEO?5v%e`eWqut+SP|Uk~wITVtcr`Kx68E-9fiI{9w(a2H4VgK3xxd@qWP*-`PODR^d1iCX-l`hAr3`4Zp^=ou_4~qfLnp*zn#msc z)dM17EZfda_R}JH);_2+FPP7E14%W<`;%J1u$JJTpp2!~1@lx#WER83e0(EOTQ7FV|?3OvQnTt?aFR(kuAS@Ba64D-63j&VC3 ziClABB_I0AOe%Hya9bt4hu0bB&+YCPmmmp7CV*XOQ16CiRVWbjdorSt6Ry#zw2`(-*hrnl@{6MUl&JuhCJq4vP;% z(7G$LxZhnop#g4UlU=(-pC7js=%R&XqV^6Rqf4b9Qe%=`3bqJ!m&oU(mS>xn)o;Bu zIg@OvuRQ(#Clp(qzFc&y}U2}7Hh4O7tKabk>Zw}J!9R%H ztB{B}lgh4ck*6?!_!A~MAric@p})6QkRJ4GD!9OCq4`}$KHa*Psbxzjj8Ml*&*?Md zgtPBYa!56>{i|Ay)#Zfc)B(hn^Tfo=yvNx)5cgmQrULf5v_1Kb*Q&l~n51*#A>T&k zIE<_`FidD6`Lf-i<&)t#RltvKtZ~7xb`oeO2YjvWVeL5y#x-kXkuZV=bJcgo+NjW zL!%5bz>%dZF8$oC{0*ziX&8}hJHj;jpRH#s#X;Z{=5gU1_PLIZcA#y9C-pN08`UQq zAQf2v03h*%7PI%IwYW#UNr4fSq1jxq-K@X`Z2pWoRRK@Q%Ezpc8}dx+fwk3}X#GC( z@ z=1R7QkWCYF#n>SbwyYsgjrTs2|QpF;B_6Z_Q68-gojU_<~SM zNq);dNw85r<)U9=Fnf^yY$e6UIiaYb&jch#j8y8~}YIoW<9!oE}5v$D{q-C^~j@i3%Lh7YDsk*nBV zp((D_#1F?}FD=6xf_b=|iCp8_U&)?!cv+*kkv- za%h=)gdvr>^kt%tmDz=k=)z%ZOSii!UC~LRO|7@t$BUUIq2Tc>Ubm?Ry2=-d+(~r_vvSV&DKbyu+vN*SovAVD_F!9o_ zsmP?s$t%;f(wpa5D`k;2W59k&p~9~fHkAl3i>ucL7x6jCC~2CMBh==fb9w6Zn|94& z+Z0b4C6TyJRuRO&(cFWcHD5OlEMM6(2_a84Yu-+zDEtui@u@lq*3FK0I<%_a<#~o* z6Xl03uj<+5#myXQv4%Q0fpVw@$6CSN9W7+v`~A4j+`+N5eB)AIv{_Ha_~jA;YscZ5DXT ze*Ar^ceB47b2J^{FGqXd&eG6g0HXoldNzdgDt?h_rSs+{|9BTV&4Vc7rU5PvI|lX7 zJ*S3nN2sAR-g4^t$4SQ8io?nCSLPbF#|j39L3O|A60YYLHwoLA#!3c1CA7p6w-5Ww zwXfxtfNj&*TA}cdW9oY*H;Lcz7lT~EbTGDl*v_>UzyhwQQrOvhCZKt<-prNd_9|pQ zN*-~#I}fxq5Ku@aH&VHosD>5DPzOn#O*wRaCcnrL*EpoqKN59GACYjQb8Qp#XB{2k zaSJ=nDm!^^t?Q8o6y%(9y&5X@V)UPL z#+V6m_#HuCn`yXWi)SE^lMkFr&jtrHq(x_P(+>Y$-Tgk-$lsmxV=U}_UZzt)hOu?% znZw&U65(xy<3Zw0^d(fhxLi$Ni8w1|UFof6XyLZ!!lnIIN2(6g6K*$}!O|N0MHMzl z#3ubA39anaTlUNDd2aKu*|I4dD=Y#(cO~wi$uRPxzUu>&;hPOG!pOAYZI%F-yIgHj zlLu+(6DPeM!J=C<*(|`#n`cMkkX(62abH@h`ExKUr}j+K?GIt|vet~0Lhk3Oa*u_b zYrOfiZ1CZ=*eeXxyfhquI2G6wHik`v_iFFyN)FW^p+?uLK%ohstDs zZqv?h4&ZoDn95n?CAU`-ml{L$oFskdfgE3aQ&Z)08*8v!k>HKU<% z+e^=3Rm0MZWX3Hi7Ra%i6c|ETEKFMH10Voi#1K2rF4G1?v7Q|->{Z*(T}$1RYwDlb z2U$dnRBNThuXD-Gn}IkDIJHNNGg;Lliam!iM2(#Nyu`pMhP3n60$-&9QDJ#B+#X?8+ z>8I(xCf{Orb_DT1JB>HrUlsAF{D_*>hy8M$J(w#ek7{TVFFtm?xHzDlYo=l3py!Cj zyZY?-xHAkp+nw@TIqcsAs;6nC>ZWP6A5QWg&)rVd*y>cD)v%-ydHY_#yR$a{LdS=c zPS15c%zcGU5fl2X>Ggt}Bx6Hb86H48M-SHn@5AP#GY@BpdD{_ezUMGM}9Hv=3IW=;sa4FfeRjsL6&0ed{wW4-Q0DTx2 zpA>fa(}d6olIAUx7Cnz)TBN03M45=xMA)TZoWMEcIP;p1s>g+qb-B71Bu08NpnSr9 zs?r%5B^0Pu>RG|ct@IgJS?jS5(0gZW+LmNuCKED_Ly|fJck5W%Q{CUgmL&lU4e&ZN zJN;2_fjMn~OU(~h9z=j8rnm*Gmx8{YmLs}9fYWQ z4h@BKQ8v504qh||8&e}l=fykDL=~MrqH=7C)8_;!m@|y3!$bciDEwDRPk8FH@dJzf zfB6aMBqmVtepzVLYdkqxbn*LtsYXQ3AHt`#c)#TFVG+sJ0~I+Fato=@xeEpyyq~`W z(NhMIxa#8sF>tYAePorM>JkjMsKtCrj*h262hAbTp>CKIVd3FAc+{bw7mWN!Pv-m78uh`Ig0b2&I295D9 z6KLJ4;S)4(#0DqXT&CEmfvZU8s%vGnBzHO|C$o;iNBJl%RSpuAdek$`55S5a?O0ha zSLjzM)Zlvv9;8xZvVpq%d6$(_qLXGbIw2tdLtBs_{HFr_`Vxuf{LjG4Tr4(Vey~nH zSPsi~B=y?GFCl+auH#4rX|otd__;>H6y=~aP$GvUYj<@{%=dkJLfzp*v3L>S>PK6@7x0rKBKYjbA57JU=w%gwqUu0ms8N`$^KNxTgw z63Ppztb27OzrL=-^batRu-`C)SvoxQOSn^?vq#IS`bgrOG_JvU7@*@X$^3cxK!q7| zLGs>5ZeQ}9<9u9`kBH`DtPq0asc^uCKeu6>@hMKa(T`>R?_;0f76C?WGHb9wTMR;* zqt3*C0KSP7|3UYFPU_fctl%}tl*zUCd;VOdYA0Dc($8x}jM`|0mj}XiMV?f;UR$#Z ze%(c8lNvq|;C(*vbV?pCDPc@m!{^!2YT_?*WXazqf=c*3)%eV~UV^d^FnL8#aHQZJ zj@C50mWL$>59-RdbQ|m4wc5tziIV@0xaGWrX&SqeH3PlZ>l{7cEQhX|@xP4Zfj8`f zxt*zwQ97ayPIwT=e${eR|DQ^omXQ9tvu`!jfH(JlK*Qw!O(`|O2JoiH-^0z&6BT{RIB)({T-r`F4X1O7_7763+?Ya1I5K3?TmKPJ%p15|z#!R)qnNXtceVlwfSxqm93&)RC> za}m?Xa41-|)u)EF>Qu8;=#`*;@jAa+-jZ7etg9@zJx&|{cfByeEnh;{%f`=S zQ88fndxd`c`pn_EJ);k#AqDMEW#2||v;70ewOrB{T`hA?zV!7>)3Wa~JN@h+9=t58 z4;&m$xHX^k$PGA=qKG@R)x3WeCm>ELb6#Y`Ir%q$_^*VHn=l*e`+$dle*nw6C_kvo z#qYNo4LCevsNWyI_tJTGG9(w|vcH;*VPMXrWwgem)GsTo9i37s)DJT@_y^F@zcZg$ zFQ%T27{AJQ`v>^ILGM+<`$#`{T^i8+2USREMz&o5<=_0?KIeUqj zLgt3TQe?&YKftAO>R8+(O7pMgotW-Fz|HKAG^2$|k*CV8?a1FDvdQ}a^Y?3s$mCq6 znIqL1?8LpZTN0~v-kp~6Mry;|EXw*w)G(0|4Zj1;e~D=ug`ZJ zar@5x0~Cp@ARc=LW}B+IXrUs?4Kq_oCZQ~XO-*s*^xiCssV=KZ{k3dJrtdmB31dk? z;=!?f9x*IG1GdvXoN59sZi?C?)lD+7i5;o+j!V#GdROond+Sls8^SQHlsCzu(VJX= zQUE7^l)Gud-;t|rO*UGT!#wyOpxrbTY|FnFdzB+?xb;jeiKl}EMBXho>XOSfk=5YW?h(-_$Df(4z6rD<<##%|m1Bqy*QQD!(O{LSjd_Y!WWhr_b>p z8|>Z_KmG&E(zK#7Du7whCgLeZE|dzcJ?4XM+1Y`mtGz%KS8|tW=9ukYUokK0gvvs; z$&HpUM=$m6Rf>^5$%h{eU>Tm5hiB*X{ObwEf5gx-&-rkIX}i(s@b2}_2{+WceRQcZ z7Ip~MjTdfuLvSaB@CJ!$(ClYFI8OgN^tXREeBJZRRezLhkur@ zx)w!SqXtQxRGB$A$@`a78Lp?@>1A#@Tqp31VS=SLP+8CNHqWCA#8nRP_bBuLKEh+m zZ`(s-j})W-Or97LHbiY24aR^)fbAzy>&FFO5OAr z&+c)*uZ4LV)$+re^B25AFe3Bnys-fyISxg0k zPfcPP^3sOYe?%%#$hIP5H4o-+gC~ctU0yrZiRaQ&DVTD8)LyU_;&IhIixq$7ipF%D zk$9WB`&ae=Ps)DSXNBo)!c6IPVi`R+U2Z#dYRGAd@7p>*>ZMn`HZ7?Sn8*&uz${fv zT}*s6d;YU)nfthJ+j~n>s{+!1_>;WZ;vwGg5Yo;+le-6z-2ZcLIa5r~`ErZvs!)o4 z#mA^L%`rp6X1>>YXbd?!X9>1qSBhsDOK|EzXA4?{e0bs6%~TdA=NqlPRN>BhEK9SY zP;oa=H1_iZz)d9_+n;@Z%}*s{|9rZAOEPM0+_byNu}v4+3}4Bb9nMJE8J|u1nH!IF zYlM}O|B0LZ%byD2zLdWel08lmFskt$Yd`rYo5j7|_xU==+QZH%5_BiaE9Bee1$ah2 z!-F;g)RD?GWlb1!w3Ky&BEvB~xfXgW`ru#gHXYwlkp^)9Jm5^GF>~WwjaTEK;-nCw zN>8QIt8?A$tlKxbZW2|OwuQ8^-G;nX1+2ek9MR}si?Gy4=35cvZ zZ3U&v+v!9!Ylhz`s4*>2LPFJ4!a%d*qoY$42U4P2-}?v6ba8z#?m8VUMpa3_MVafK z?$hIf+or-SI}CSpkdgQ{mJ%o(!vn@Gn@h-Pz+W`3(|v!k_b+9Oqp6{}u8%7zox zFZdY}%3@p-@;8SG@Q1-%LWHG%GfI5*PIHg&*6r`2t|0wD!!R>1^BZ}f2@FuxxNX17smj8F$q=ME zS$%%5Ai+_8CEN@`t`&&+uU-3?&$yFwB)5j`TC96uD7nk*!AlD7puKzMlTVgml~hhD){Zxs{ zjYOgi#s7Yjo;4xS*hr`)FbTDUjZ4bUe9IpiiiiO%?iYH%P_=K3&aS^9E5`6%WYTKU zoT|NDq~X9B;;;eAP@6AP$AaY!RJ<-ldZNNDfAn0slZo#>Sn0B!w#`0`@k5Q5_U5D* zX(Xn_BZufDc-)E+RhC>(SKOz<53W8+f8Meq%+rM4>YU**0(Y?6wSXZ*0^AyjDr<4}K2?*O9JmEDBq>Zq=LqSyrAD z0v%^}dC=Q0VEZ&^Yw5~Y8Z=p2v9dl>RpoNA;nc8Zs`la{Kg#;B72TEwXDtxb~@>V)nWN-;-kd~vUOPglN7lif{9Cwa#slv}0F zW8gPw(UQ1kGJ4J8L0FU5c{1vIISHZa(La3E?r0qh(gqJlE|5}oN5r_A`rSNfqhmnX znoRT6;R!)4J-)DKWsI1_XZ}!i>U$GPg8akybEW$*w`*vaepKx$)Ma4_O<3B|rhk<5 z(8twyjeh%X&uXz~3hJ+{LDdSg-}V!ywz3_%fhWSZVvY5Y zQJNgQP~NKD0!=zg_3mfP(hFDw4lcQpcjH|gRS`P)#uQbWrm`B3ai`%sV@ZpY^6(M_ z6mFSSl^ol6Oq)?f*F%+7@hkhjdWn}xRJYwWkKRu{^=5F zRJyxM8YKiadccsBhJhdhMuSKQD9uK9kCbjyx??b6gwhR43aFoZet(bO>&$ z&e_?{^?qNk*YibJO(2IsA#k8*95%Uy7q3v7-@@8XxexMZE^QX95{7L&^BfG1Oxnt; zM5B|V9?!3AFc0hudjF>5Q}#-&TqdTibzEm%d&*?8aMF=2jsEE_!=>m=>{{+^y{r+Q zwa4IC$;@8au8>L<$?ERrwt2PY00F1*D};u#T>0X8Upw%i`f?z;;Ht%rEj5Q%RtpH3 zuBaqB8#YYU&TZL(@*LPc_HM1jjW*J5kBx-HjU+3Eu#WSVwD=tCm313+h-=!5 zSQ9Y`O?9t5A8`FB*b`14{uT1(9w7H&UqL2E*QxwqPSVF&ZM#iSl*gDZ>q~eswh&8v zTAExcC;q5_z3}t6-nbs-ABiym=yK_0x098C}OW&N&%j(AQik9UZ3a>TX`G zG|{bPd`j=0r)nqi>=#?eHh02`|AuDFdFTly7}x;`o?c#P+ARi#d`O+Ejiz47V&5u- zCfq=4HX|E*j@IsIz2#jQS!lLt>A-AF$;_2TR$g*_sW)-+$lSI~hhmgB?vo@br>IRi zo2A8)h@K{0UAaRPL7VPo2+4^xaM7dIlva$luChytuES`#kP z>gVNv@x9L)H{nQFdk_xG}DDN5Os<$ z{;_1$0D%Nt35>}{bSJ%>2?gs%*RC9Tzk>Khp*gdB4zu5KVWdRpy12)izK@l1yQC%C zz5K&&aNV#ka^m4v72OYgKv8cL5%iqhpqo-f9%@1F4(@xUyRzz=0KNM>y&Tl}tKs4+ z5goB08bR?vWp39tDJH$%n>IP<9cJeI-pU z4tj#%X8n}>)n$r3R`&_;U#_h;UX%b1GcD;$_DXEGSJrqID|^ru%p^O?Mc*X|)INct@9o}A89v*>C zd1i9ms|XDMt{RWHZD|BIHojaVxt74C8{1x1b1=b19&@X8APDdj`cfie11OCmsWi&T z1;59ENRFug1xsLu!EcU>9R(R)$Afp zsU<{2}fJDC>n_FHh2<_OMKE#Yf!yvD2X+Hv>NUdkSVyOcHaDf?C>&of4vl zTIzxOL3<^Onjfv2E1z9Nql+qLZKo2)9ajr~48cC7~hexAwLMJQsm_4!j zYzWdn0fZC-WGCyEc`Q4L8{Vmz)K6f59pNkrn^JUCL9tvGh?BLRu6^S`^01N?M;N0) zKp;c3i~8OZyY9avIbQ46-6n0gNXEP%&>=!0q$UUDYgVRCqVq5v^&DCz#0`^|n{c)_ zO-jWEbZ9DCc2zU>@N|t^Q*$-YV};HBHr!&-rFWqKl(Ixyb6t$w?}3C4jr4NBgkG{W zw46x?0=j+9Jiy0?&ycA8&ylsS>#kt6x#=S$q>V@GfAFNM*OOXN>s#LQb+gGweyiQ; z91Q`MWa`GWr1+$?B9)JJpC6NjzhuGta=`F{z_G2Py}3$o2I?L|^#Oi>_B)6-zbC$xVjyn%thMLLB|tmT9>2W?>8ZLJz-toignH{H>15WWou)+*OLK`L=oL8KI1cctby?t5xkh|)9K*C zK+hkM%xV>=5)0WCiQ?u;q*LIq1m9jf|GGauOY_-Vn~66Q7mZ*CsQqdzbb zjcS~ZN=@DZg0&gsmG3p(qVZ{S)tbAzK2@VEm0D(L6zNUN^qc%`ctS#@8U(O)Io(6) zV!htqc|9)>|9xhaN`N8Iz-$H>J)!TI(0_ zd_z}BlsN-G4eQpQ3`y)U@IJ!+Zw;y)?k;SbmF@>@4J#Xm3c>_Vsm=o#iC|;+sh}AC!wk6T;=5koL zVlXxzdE)?!7TLXR?tb$Jl`lm{jXjnDvepJogP_&zgIyX2*>>k~-BGV!vq-?G3j?f2 zv4UsF=5>)P2QhoubE+^dmR*Fy=}n@OUh&ZJ5xPXPgM8hWJc+i5Q*Fs9p$sfDZJWu4 z)4Ao=rM|K-A-$|%)|RK7Q8WiXOHdXETW423iw~Hitl#MD_GOUM-cL?JspRiA6D_Vi zeP?YM)KfKgE?wOUN0J_l*(dWdV$(I92yH9mwNJ@?!hVbz4v~933_7i!%SgS=nxFP` z50H456YkhRX~)dyciX@6Qjl@F%pxTKEGWbHpt-`S`gB|X-rUCIRY{Zs*d4c}X#Xma zk<>Ub{s58fMDcW!jM-x#ng_x~Kovx#%AO?W%2_XZT7TrbNGa+M0U`u_Ejz#B+7cax zGXF_+zZ#bbIe^)8l+(-a>7;>LS3Go$A2oWH@fsZmXcX`+z=LU7%$@Fp8JRdN-Fyt& zocz%T2Zo{}sC}ALQQ`mZZ`Wlh6O+u%+#ik4qM&HdOvitz+u?VbOS-G7QjObRWAkTA z7kFe{_4>?nMR?Blz;Dg>)F#Hj_}%hBMC0+A>UW9F36<_z^j6_$pO!|rf|l0VN@QI! zloAbL0WBnW^_He-m+`87R4?w~kCT5ix(fq5fB=P{0YXOdN=TMeE-}0hx^nE-iB8OF zcbMbVxyl#nzgpyPYcp16kUAwkq4|R-MT#ZOSg$LTd;;&Row79Fp?g8~!r`G>1>ZUs zf|WBFo@l~Oz`>3~WB{XO`Hl#D@{-G#l**a39O}FyZr0 zrpC(j*2XTA@+r#}LfzS;`NvEeTcj3&)()aP0Arm#QUIG{R7xbXdrUp)q{zk~Y_S?6 zQ|sRXQrk&Yr*|X#^1E^8(UyydEmq`AnPi^AvQ~ zT*F%s?FKLY!-3o-1wMnhzOT2+_7{@gfMW1LdM4Y;+}936AS(##0KG6pKR%96DEv-| z34qD_!&fc4vtmA<^B(>y=!1J>{P>7=x764V#G6coO#>6;AU}7wnl~;J4jEZoV)b=_ ztDq&!-%8O(`^Uv1+MQfsu>Kp}KUsKlO`{s=jIlOVqNk+cnj}xei!{^|*SK=t#=f#Qa6ff>oXl=uzg(o5KuWhlTh;Gz z{X=Ov?DkYX0a%SXeCo6(v*5Yc3}0~$4Zsm~vxbQD7TtZ0Xxc4S&=fWfrPC8}D~%CS zobLFR`hf7Y4hEDUSGw0G4||Svat^JsC*12*4j;SvN_#Rh$~iiWsYbsqXR$NAKP%^P zXdRM!bs`kgBj~tqntqR7zE(HYY3&i`tuofzQ(=o6gEy}S{qiUi;KmD#op6-nP$y9L zkLJJDV%^={Ja4GB-kDO;ck)Cz2#Cu>5Ze!k+<56NzrU{|zGB=jnfG8q**(eXtd(h< zORK^msDdC$+r$frX=w9Tx z=1OW^yZG!vGbZFMWg-7eyO--mN|FGP@;JDT$-x{ue$tma4JwbiG&jz;q@;?jLnhE) z4IREBt#8P`WK~Yc%%rD&f|sR#2jRp$m9J^eOqVqsVXxBXubQybs0`5~qiqQ(X*{nKNerrd*9!-yk}zES z5rI9E$_Lg=-eSb$nf|Ux=1W1RMk(h5WI6&%4|Q zigRQW$EX^90U=^XGnO*4?Yz@ob1dWmbZXm^L8U1X*u)d|E!M#I5%Q1yGtAJFZfBy< zOAVV!us7l*u>u`U{!i|;X(5ljL{<38oyJgdkQIk0uP7oQoh7|F=B}a z;96rHXbn2<*XipqYAYF@KW6eB4XWn-Xy5nTpO*4?_294kP4bA*fpkh0J>^Dpd4f{w zO)EyZuPhS5M<0y@VQAJWs0LE262cO0=C5kLiO)@C}6gezYF@(!d_+(YMGdowh56V?Zj76ru#Wuj=4 zoyUPUy4`U$miErGaM(QG@)V1<*%(Mgdz>ZQ%ND~%IUacqXyQ3+Gd*+~7g_VyNvIv= zuB2)Z9EUs{zrc^?_Ysay458r?wN0$OMte|jJfE%i($O#BQ1Ozom>2I>SuejA2oE+| zX{J(Th5CMt`d2RrVXL8kRT2*<$dTk_BRyc+hziRo1%1VRa)zz%KnUA@U&9kp8d73T zF5fCueF}0dxSXMxYji}gnrZhx7byn_>*S4~$HUrsc_sgUh^ZQq)nWI21Uptc^THRb zA*ruv%m3tnOqH0I=98T~&Q0_$?Te8(VAIS^96RfK?l^Esag<=%_#W;UrM6==Cy%%t z2XQymAUj`SG}co}WP~-$^8VwaP5>CHiHyjaZ)36W)HA{FSV@39-ecl!Y?R+WjZt-= zmmGV9%1EzTEWDbU>Us44_@}lhOZ}zW&!fftBCvHGZJGJLy?wi5Wg0eYkdH@PPCf?M zQG_M0GGKkJ_SAxWMdGuHm0&zd2OPN*`pCpj2ZqX=cBB!p;$I@9NO8FRqB|?;9mT=K z#+e$`5)x#H@W}b+6cl!NvHwhh1bk#fyh6mp;-fY}Pa>$Y8L+&IPikQDYL3)meR2~z z4LKECECB$lR$IQ{-HaDns==e-k9}h?2V>Eb=U9p)OOzZqSWPt*3z49z#j-QWNw_3H zruk9*5n8Sh9O9;NMl2hfrIpm=bQ)xHUlhM!A*|Hg9CC)oy5ih^ABs}D{Ux{siA<4T z4P7uP)-7+EzgGhwgZC4re5(=UXa2#0PZz^J?cs?IgD zp6?0P^d1*g`|rGv5tnk~q|B>vkc}i4bAW1Y;$qdjR2kx;0P+Xqbo3ZL82B7(1m`gX zmIiau6f3CzvnvY{>QaTnFJp+6vA%C4HJQGKE;WH5A?JGvsecY+C-_|GYB`%gW#1}6J=t?_{E zRJFyUs8?U45a6$4uQBq{2p#}FHI)z{&Q@g%@aw)EcH2=9j89pE<2`WLfd+eb2|zqA z#r7TiO|e%I)&Px_p|K~TjsLYGw87L=Ao72MOs(c(*+6w;iF^2~YE;I1SaisbG6L*+ zF<9Y==Z{!~otjx%{PWViWWIeZ&$oL8*HcFR(bz zGo{q!3ULqsr>$+MV;;muK8e&^Eub-Lx6*~`6>Q>rE1NaLi0nb&0n--U7rYg^p6yxm zEpmn<&_xsG{X!5;6b`Y3Q2b<@7(0HAJH}b%L4XBuLtSRFd}^4E_b32_TH?wA;>s(J zCibqB?@CwrE+Fi$P-O7SfoO{3$`u6R^az6!Z_tZxM0NrIzARja@6{FJM{~{g4sD4i zvgiRtaPwn5{}k(49hVmZei!ggry|Xi?7Uk2dB<5f7Z+t{%f)D`2@{DvO(BJsz6163 zpUyu69xJxjr}+?Tv~hN)%&UM5>n_V~-`!{dMV0d8vn25<-Db={N0?J6!%zA#cv^h! z^A&qX+7qXY{I@vBR*g@4Cr%@^3&fN@^KT=b2=FyVxqb5Nk4^vRapseHwRiPF^P}_r zou{=-PfPi?(lIMIrZVv11h7`}1GM9P?5kMRnx+=#yHl=|HB4M@Pq{^o-}(#m=i5Je zaJ1#vV&S@izw(>8vdTH{tM@ZXKv3BVMcJr#VR3P>2?&^|LYiN5!W|H>^NgVL%MS0Yj`&C{s%Zg9o#f&m0V|x*DnPwH2T3#U1)rT8Gm8KZgc?;N{(~RSBjDYd) zUZG}}o%O5qo>v3FY(7DlNC7o_D)DhAOefZ+dOz{(M&S7-y`M#`D@BDBs+F)sv+cmy z#_2!;8qnEf9@%f{fGJfUW~fs7W`( z8-3VaJttiyba7Jb2~CG?w$Eu?$iaR1GO_b-srca~VAE>ipDk1WJbX)8mVy6pT(Zaf z4SXyv?%ov|`{VJrHUr%-B?6MtH!e;*k(2yLJ&K{%Xzhmw} zwZ%!srJg|v!`f|?S3yl2qd>t!TDwSvP17GH>Bgyey`)C^K1<(2X}cF58kBpb)qZ3h zic}nLg}L~2>J(>JR4~ehnebWE9kzJ8rMSol85r00NQr(4ojLs4FYqu~Ezw(_>l0{G z`vKr=K?YWb!EI;h{VBezO#AX?+RN>CnU+zt56$_F2cxEiAJ9X3LRmr>X~JHmHv>wJ zj`kMdLTGVQR299sk8ACO^nC5kW2!j1KzBSqg?@CNEHS5(IY0@V!|;YXn(DjHT^^lh ztMxar5kg?<$=>f6m|PDNDBPnod(Vl#Iv;w^c831F>iGUi(>^f#D24IM>SG$^IS-1K z`Yy+wI%H>E+1iO=)rz^E8rX6OBy`HDvwBHT#2>u6JSbMxH(y%lgCHMfoc9<#+uUFM zbKkryqQB~Rc&V~fXv|#i>XD_EAJ$@(RbK37Uuz~+R`gu}4Q~-0qgnQ71dz$m2v@c1 z8`Woy?-rVO=cz3#pLOI3%;klCx}Nhj;mhf4;RGS2+{c^P%RU|XUZ)<9Vr5nfR7K%h zeac*)a9J8j6RejlX4@Yct@ZY|1p6)!x8J?HWpe|a25B@>MckjGI8-v_fRE*gO zDXDQ(hg!=Qa>>>!(7BUS zv&*oN^jRkTvln=nqPbnS{hR{#Jl70wr!s8zq7JLXFOBool+g)Y->d#X+7R$*IN)Tq zM-#bv)2~=v2@#&Ec?lkfM_bhEz~P>622&BC+He^y{Gz1jDDJ{sdK&u|d0OPLGi=aV z3D?^=n$|l6cYGubVyjMTnz2x^b5o``IArxQ4;D1crPk!@A^SAzo5J$*QlM4ySe1>s z4^6dhcCMRKYK9Ux{ZLY#j>4NO@9?9Q>Fe6$gTF;HvU;#XmbFUs-9w9C1?3N=yiY2M%(W2AAbSjU*gm<-Y23%u<%JWB|q49(#2f|mAS^xlFYoM)hh+=+Ww z8?e~+wRg>VHDRklN%b&@1u!%I^Bz3e>geiw11a-v^yux(gN&xnxACllrk{i0Pg6Cu z<%iKDKJVDIn15v+BNAG-yPGqUWEv73Z!6Ua--YYC$Cz9_d#f1ntvBgJ2-vm=Y=k@p zuV%nrJyyvDaaT1;&Apx~Dw{-EWqDY$fRf=gsqp5qkZn-4 zN0F~{8}S4Yg~RT;EIOm&Y4^@arJ2XmXw8bJ%mvk^dq!d+!Vzj}xzIkEcd0~xQw?`i zOfA#qCTT&_K7>V_CAHmoq$NrS*RL8j)aq|*{#jFi?S z=Da%-y7C5p#I2h?v+;i`?=^M6+GxVBlUF!{Jkeg29(530N(13*G=GKJ{dGof5|(5X zWN^|e^2u-1d9i_Eo3>ujdM%Q;3bpg&dgFRJvWfzdEAibJD+m@V3{I7#Bf&1fFb{rJ zRquAYhXvhq<#oxoJ&aur8n4N4SVWhYwtEJDGY|nvEk>(>&0BTomU(l@$HZ6cHl}_6 z{QDrv^Cp#>h`c{gUX(|}Dx+zDfpz+z+voapbWAy>rTQBE)S^YF)by@L7KDI9y@%{y z7P$gPa3N4KL+&T(OXvW?QkNf@h)~mID)8vp8tQ;G$CLFd=49F^|HTRtWD2OZu>KH~ zYqxN4641mmtlF=^eL12uT$nh-qUm5JqxW!8q~~WJrZ%aDX{=o)$ogLMS8nO&Ku~Gf zVe=rPck;POhY7o)=w@o_H%V_Sbc3E^MUy4Uw)O=a(>Eu{H=i_XU#)8#PL2e|9_&z% zC~KI}AiRe<`)Yyz;g~*L7s8ej3_`=|G-~Dh**MzrR9MwHrzsz{!bz=r#b3oN?0|en z_C=M2(+-!bS<-ZpN`p(|;NSH2rxnmN7WkD=33tBKHid3NmuN1(;eK1BqCAUos<+gK z{Ff_B*g-sub%A_g@Ig=;!3Vprw=BJ@Gmlr;%9DzP4{iU$QF)7%7H&tbhf0ku_NM(# ziL5cUEI`$D%l{q!QEu0}OcgNs+vt9CZYI{IZA)l|LqWz^N0RF zoYMbrxVgaDZ|6KiutVJYHFEvs)$4d?m3J)y>juv*3$TY$CVPjS?*RU4=ciP?XYp3V zZnql{%T^va_(pCwsp9Pa?ntYL(b;F~-@BsRWXvuP|6{RPLp zZ{laR28)N^F2z7{}%9!Dv{CupzcM;C|2;N zqL!`FK6DmBN_^b#b5}9Ol~LLC$Rn)HWWKXzAiCvw1<&Zgg0s3@;GlPFzBh#eA?q4; zqI;H+!_jD|9F2|rYZq|@a0L$8;z-S>egBNNaUXg)d-<;U^0=mfudxi|Z-Ek+bHz#3 z#ee8Z14!+7_pQ7=GRgNK>pvWym_^#(HbFZ{zg=|yoU&QLY#I-&{q?U-ONyK2Wy`3UiRDkL?m9N!-ETJ$)H*jL0Z!4}j*fcS> zzu_W&-p|KD$g;J)Ojl--k`{kiq9A;NQYk~>2=X_#R_xHc^Y3;K;vpA73X1evHGTr` z`6j`BSM{$RnSmRm@w4EVMJoTjx@TxXmowM9t;)+4O;`^2Kngag^l7gOJsN-Pn|%a!sO1*J10<}E%A_vA_c!f)yAiTV3;&w{lUaj=gs zT-F$0jX_F|5}8_*KhL!h`i!-h&jXbe0LG%tC$ekYTQFGwF68}c_pfTmDTSc7$CS%r;OV)+*c->rM5fn8#0u!CA1bpxHJkRgm{@)7nI zBaSOE75vz3h4wD6<5P22SsYlTGtf!wf*=(KD)9veCf-GNHf^P4;Ct}aJG-Ec`^}tH z!Wx%DG|%k;v0#XTc%0wCnpoaX@A9( zz0Hn z{3x}wx%YNjfaQ179H)v%ePJt0f!kW=$NDxI09}sro;6`s5FU+9ZWi!U8D8Be12LPZ zf%Zl5iXC}kb-rauiR7(f;ioX+fw1v4*xQQpmmBel(65722N+8oSkbmA*I_b>+(m)> z{8h-CX{%2AGTno1fw;Txf5k++*$xt!frl=Y-Nlaa{hg@I=M+k$?6EHou_lKrLM%`cYIX)%zgBS0=oXjm zm|yvoji2ojEAQOF_A~G(WnWObA8Ur7y&7I_33z|_Pys^P<$-YmT5=VjQROW7)9~$z zJvKi%^iffl_gr9Bk4(>%N*9;Uh%wdg6DUZ&v_ZPHZ%(kzB$bqa`DRFAuhe0-9!tU+ z9*$&c_nbKPn=uL~g5YR6l{HdCSHwzOJjhD)cs1wOXEO_17vEEwZWMf4`e^9FW=ULC zL4)~wrjTopQO#3uqa{hF@WFX&Uk7hl9PURVVyNSO3&L92(hXXls)E|`E1I24*G0>e!O;|jSn0!X|Miw* z;<$YeKKWe0`s=&MZL^baMMqT^ z1BtuE`V2;~{naA#Dec&p5yLOyW!xHH%sBovRR4$C-5bHudGTU7rA`hAH0X8e*$EPh zNw|*Pw+~PN7Hlikwpc-sJ&HGigoDE?IL6aL)%TQaVU5Rg8Md-MQL1k&GWMym8?FPK zq|2BwCwtg#0#cz#)gD&kijwFrarM5}%U{Mhr?ft_mIx z;Y@Ig;Rbx!IYEi8PE&=JdEgyYytKHj5(T-Vs}#`+JT#zac|{o`y9ydiKS??yj4OBS z$s3NBWMFwvvBIWS!VS4ws>jX2eY(d%aP)4bXJD6ip%b#ceFM_UxAsGx+Zx;JZu?;R zZsIwBOrA;qd-!hTVJoBPM-AP#&tMa>5BiCnSMukxlwYAAKC5o=9-Ey7gf+chLzAha z$%1f5;n^lRwRhvsef!R#DY?FJDH|>g3Z59=)@Xy7q3ln*o~El0jdE(H0#apUg!y&H zCIWh;t5BNM8?_wx0xYD|p8MEpq2KwYv@Yi;zottBIx!NrW5{npI##pYoy8qAcQV?% zVOJ9wEyldW!|`0}bY6waQUrCyfirUq=k=!l;x{rM&9Dw=>K6p%p(=>AOD+shYW?%Q#*#cMNMEeH8l;*4IL8>T+q1 zS|x|0ziOLWnK>;2bDgra%Mfvcdb$c@78zh^It2OGR%p}9DMN0CAUA+lx)GKC1lq&T*hroznpT7M=p_pyexk0VFKK6;= zMe+7u_Q(0hE62M_LfOwNP8h~}-41m-k9@*f_{=i{y0?#;7vr{cI;P5~H!5*R^~JTL zR&K~eGEWMOc4d-ueK*Tb(9b+346D%hAC4+b%LTo~LQsfM@ zkF2RT&&oR22BeHyg#h`^W~%}KfIDaHnP;Un(o~*J>O_~YIei%tEiDf&#;`JMTWmbd z`dlrg*&YIF6Y5p|VJSOq`k=K!w_<&s$--0DlvQIcL6$>|>u^6aGnBBUg4F%fDJb9j zqo~E&ocxgao_w`PCpmjsuHT+~oqOpj`_l)-odsHG#m9iduqF>vGf?wBLZ`1pQL9j2 z;Khqu!QeAN8*AH2I9S0IM1)kL-tB( zAgz}8i-6h(pkZMhhz9T^si4Hlyp^*4ZuG@Wg5V;(iO`L7=UVH7>+Rn)c`hlRsRw|Q zDr1bH16=Yz(^V=-O%C}sO#rb7Y&`KTJ;jm6p8Q+P-Ccjbv5UotCuFVZEo4nA4G5W> zJC?tDG53r^Sr@LOCw2I@Mf8vb+QO0Em)atflfj4NRWvs9b=PUR(Gg-4sPVJP`|7^9 zt*l?GRmq*c%dr1^gacqG08IU)mRcH(pThRh#vixD(hfD2-s-+vq;2`Ahl5`V?G}L; zLx@<_wnh~Sc*?be(6vS(fyy|E$dzgO(2t&xMgn)Lr3%9mQhxKLE_^&ERb};t6;tIl zrp@g~)f)XIKW0Y?ODl8b@H)Ifg%U)I!TwRna(fwUYhqWFu6~Y$=a)W_Lw&xopc6gk zCg1hXQn00qU1xN?+1Xf`nti?!C(3E|h!V+bO#jO`SV3Sas!n zqdU0Zl+Va_3{(~X@kx8oaJaL_bfeUrZ;FSZqdM2}Z9(%L>t9Q(B&3RBK^|P>cNodhyIb*=s}>HNzImB2RwlP71tnyLC8x$Ril#C zUKfUqgu9^#>aFalO2e>7{YH3^U9MHFp$%VjNf?vuU6r9yf51Uwz0}OPrB^#i{k_T) zhaS-#Yeg$TGL?xyi@UNaT1kH{P=fRpEZeTU+zw7J!X4!Vc*&3DJk%+uL$g*}D?JpQ zM2=X~+yq*x$Pbkpc$CezUEgo>@uJ&1lL2T>1@nN#Hqk8;;8=rGUl^VUQd6-~_{jMLOQCq@~{b7(zq7qc3}NOp(C zUT#hO%-rY^sU=poT8*znmN)b7*6}x$e-N}<%}1VQx}(**zY!nbs&)D}Gj(niefn-e zWWG%l*RiNE6sYBPw?IjHk_cJPaHB|@lO94ErJ^ldD-H>5KKq;S9irnj;yI$Hdk+iL zA#C<=0e04&yJ4wCy#$XEC#KdJx|7=UI>oa;P`YheOPAp681`0F#mW}_tPXMC+tThsH~268CRsd zNKEjYDSJnobZiJ1M5E!D`E}R;3mkO$P+CB(*Wt#J5PCpKd(@bwfzIecgGz{ z-mOVUN~~f^+0;2TM4G#c4*;2&XmazIP}-FrnOl$d|? zsARrO$k^BS=@I={uhnIZ%J3C0UOsP4n~RZCycdMaS3iX*n7Uz0zLz<0y4CnvBv6jl2apDt2HPfkwQRA|;NnXtwnY&I8+~!E z_ychD^y+moj(R^V)Jf@af+@1I(kWg>#2orX8+=>S1-mwh;V_%DXboSb&y zNGzr&vaHp!b`e$u^JWa6?_Y?P)I=e5P2E7pO071Tx)D#Vq9hSTflybVzJg1$$jVYU zOMPO=c9mzMdHrHxH&?4zn}}`O4RM7j#_3N66-sX0U zr67q~jF1x$^qe~_O~5QgA^~nA(ydhYkh1fJM`N{2#d)|iP>yxr~0l=Q2&G|&jD zvd5N$q|bMaNZH|cvMp9R*_)ac%-za{yNi{fh2U4uNtBaZzjp`ExGMf0<;wMkZe_RS9&YNGNxd=`3mKo z;Rtf9g=F3EUlNtgX0Xsm9*OAiptL^x90flY{5r&ISZ&xYQ<~BzHBX7=oekcV6G@KH zav(<#`V!YSD&Skl6}=XFv*3|cX@Trulun>E+`o`fhq%e6L3|`{RqustxMzo2SYbL}sNV9j*XlT57AXj$bU;R6OI0~0GVl|!f#nus4}Qkl zX|a4;6hO7oGHMY@78IIItA7RYIUAR3-R^rw5b%Kjj}(W>?q9oQRWd*o5&BSXIXYEb z>$w%P!L_>QN$=vC?^H{%^JLHNqJYz9gJOMM{l#6wtptHA0JqeUn6N;FBz^#{(m+%) z)*xiqDhBl!>*_@61;Fj6TdE-CR*CZhY2Fu?V-e|aPQU?SGjEz?ivY(%qOsgv=G^`o zyM1?!(>w=#@c zNd!x^j$}!4#azk>^+c+~%%71BP{rRREN5wXzz5`&s?{pL_|{5HD>C$B(ud5*Zz>}( zB=~H8GJFRQf>ene1hSWVr;cdm7`xx4Y3diC@@o=g|&Wq4iw@A8juI z*FpL!<8Z#Mc$|3y-I$oX&&DR$Mrl~pYJAa4sp@iocI)SpWadoJ$gP^eAS<+f{O>JV zajc{=2oW%Ubagm@Di=glO`PvKm#-O(S|+vw;XWr4*DdOAveCttL4;qcvY{qLqib{< z%IaaEi6#>b`CC_l$3XgMoYGv|h_DowPuFw@|KU_ZecFfAZ_lhg{AwYSSq4nITivb^ z#QBnnW10U$?}9XE#dO-D7fR7Q`A6X@i{+)uySh!UHY^$t-h6^P0I)b|;)|w)GtW16jGu*SgKg0aM}9S9D88K> zb1Q^ta!pp?sCOVQqskzK;|(yikfi_Zr-jpUYuC+1FNz7aw}jwdwJkws#fvRdcDP@t zbO1E?F{BJh zkST-IlIx@5bH9!#m+aoqxm$o?g2l`-*3Rv6+Qw9mBE0BGf5qEVdfrm;p+SQphk3Fh?NGXEPS1B(qF;f(|zR(c5s?Nx(ySIZW zMB4_uq3@-6&cKJi6}xND_SqHnt(0MS(JR<%@j4*L>km}Yze#Vb__%W^S>t$1%Eyk^ zB8Pn}B9)CF8yW1ThR8^UmolftF>WB&5tI+diE_Hu-lB7sAN4m0GiJNfXT!WfFFdKz zF$D-M+3GUKC?`2>BT^w?EV1{Zi)S6bWXYjSG`ckrpxys-d^MWUgYefcjw?di~e5$2$;D)Ky zY__))dJ5DLf$2>VbajSB`THAy;qfrbux}a_loY}jO~wb6RwQk?wX3PGb37wpfIGJ$Y zO1fc?Kc!b-P%l0p6wCvmg>DbtpOm{LJa&S3*F?qat$PR(_8~-?pDwctxN-0Bvma)U zcPb0z`Om=K91fyA^fH?ZQmk$A;{+!a%zaYXACnKX2*Dql?+}y{jisl+qw%C_o!(hl zuaKPuLz*)o(71EGtL#N=Sb+G=2`)Q%+Pj}al|9U-ijQxo;S1MYom=cZdaX!2q;@;x z9GU)NP#=g|8G|MV8cCwkm(AYefn)GGK%kl{Hny;5E19#k)2u8Z3Tu+GCLdE%{gvmq zbahW&jOEU#I%lw>P^E-X?TZSxCXH=)wBuvNmCl5*iZo9R@!vb9!TqM~ottE3(@*77 z74!cTJ52m-KYCmy)b|%%cG?EDs1N*TZy)-8??q6PLA|#4(dV(HybLXgj0b$lbnwL2 z+`|0f{%^is#DyXUpShTGq$=CDy?_-ah6J8(v8Mi6vL0){QqF+HBSdH2hM@y$okO1XFxN>2;Y|M7otsdWA zJ-xBYD^1f{7x0u2J~iB46hU zN&muYDMF>8J39N?<<%i3IM}+Aqx%78(#SWI>l3hutwy}mIvF!44p}!n!!^|BCTf4dgb%U0Gs-) zu8lnv22h93x!=e29(NxV>g*bQ`R{EbBi?pyKj!Y>+rO!Ql3dWM#MfE6qxZkb`a>`O zlmk{}2sPsG?7<#Qt(e1yp!K>*!Q+at1!~?SHzBXq`wxN!U-dyX`CFBvx*?+cEo9N6e?RS1 zA)G6Cqu)>0=!>68vU!P-c?n&9$xRNq$lMR*UM-JV3G%~ITgTr8)6WyUb`YgzZp8tc>C^qg2=$&TiV2)y)(R0~(Hf5Z-rDoG z%X>eqqXMFf4%K%OV*p%rZ1fs03-KEo>3eAtxI8%_^*wy(ciD0HICNN{V(-u=QBPla zG`#K6|6%Gq!`Xfx_kC@(O081VrYNzh_MWW~J0gfxt(71)HLGT+P3%p?RwIe6R_z^> z*tK_Swbl0h%jf%l@_(2kIqo}o^2$A~>pXR2IW+3kw!{=mJc8*?A2>Xa0lQSpmduZ- zJwupWCK^d@EP2N?gN2_T=H_V?1tEmYLbOv=%ZVle|AQoF*+aR+JBj_xG4S8HIDN6Q z14PcggnxADynP3xd>2l4G;BHKNwNX(?9XK1CdT21cmV7)lqE}Ts9IL_P9FmUBk(07 z0iVh5g13{L&hpOtBXes~u!}Ae&lb!^!~OW#X;)P$Nu~aqzxnU1q?E7fW*o;g)68>` z#MJwr=3asYS$D4vS^X%7MYmQ~Zng3z=8)4eq~7HtW%z8G;jc&piS`QOBw(!G|KIao z7{R0o*9SMj?G@@AF_6+;h3zK&K$nTS=y-o@Wc@^{*@N+Z$-YqQIdfbScLQqji!Lno zkHok2l^g!jHc`F$P9u6R&`$Lm`;*!M5GM0QZJ@)G`Kf7_eUW0%;YmE2y$0AV1A#t$ z7_)lc6WAlG*upP6K|_NMrVG;JvpWf6U6rv*H zn(|R-;xhmk=TiUp06aJ+EZ5qfsi^UJbu4&`>=mBF*vm-Jy&b9k=tH_ zP!-eQU-EBO^DKld!b&!d=jHryU!ny4>Q`whh#1zKMA0fsVW-BgZ~Te>Rdn7$7{6h? zO8C7E*HKW`BlJ@Qz@et}B0+lHb0FAU{m~mQa&iH3rNCEzQeyweOOvbMn6;z~A$_8& zCO-x;9GE?1SNNjdWZ%*#S%Hv=$EYgbp9FdJ+!_0igf!Iex5<(vRmot4YvQFKkB_YL zH*xK=sXJfzU;ggi<9y|Q#p!S$|EnES$HrkfP}tQbH!0L&pD^4J zAo|)$v?nzfh$IC2`b#5Zc+~B*6uSFhJ%Ab+-~%`4QM@nhrwt4CS0L{tx*|JX+J_Mz zh~sG!Z*c`zt^G-9wZ1Zq5PLVOQ2+>~EKzW2rOl`GT3dZ!MSrT(xZX2nhH7B;h`IHn z{MQ+w=v<@LWcqb&@YAPI;bub_aY!?n7)ZgX-sEw;ud9}i!CCS0PWUwT#_XC9ctTfc zixHW(uzQBzAFTr_j?KQwG;z?V`fFm3QA|TK(r;m8?2MZ*VU};?k&G>}%6vJX^9*BPkl1-OzTQ?6fa>pb2j4NkFE=*b$}3ie70ZwOrH@p=14`GL7q zLbLmwkX-a~26_Qo>g7DnWQuJ%6`ZbGIT!D0P%zT_CTLh6YnFGG2L+X-JG>A}LDG40 zGQrx7m-7#6mhQq1qt|f2o|(Wu2?oS4Q>S@3D{wVCHS=s{8-Qi;T*M1I+;_hBP69&l zVK|{|g^B&%Fcxlx9G1<7`aV_LUy2-dt?scaV`8(RBj@7dU8lU*=X|E^YisDcpeGKgZA^(LBSdoX!#G3Kmu7VDY5zx>lo4eO|MPx}=gp zF$En~9n$``*k1&;MgQ_zIC57-EwsYua}{t*pKq9n&9kv|T|P4Xc6|d7AE3&wsAXYr zEo1lkxb&sNTMJu8b;%^iF$;3TyhhI?L^EqFA_4myg+h<4WB@2E6TOP~NT^Ly?@t6B zhTQ1R?AL0ic3&m}lWTd9=&=Kqoo!AaK%n5xoE&mvV@_c#nQra*NZ6j9pJ}e&QecGh zO#R_gjF3qwWPi+XMiBII2M#ygB4hC-8y8d$fB$oxp;|14@lO!XdP-{*-vk0J@-F`) zU9GN(XCU7f851eFl@4ne_J~>ts$MUxTOcj9C4C#Vy#?$VmYpzo zUZ~+`(n)ojaPO;B+Z$Kp$JC9fT1dwslV)-q!n!JbISTUHL3k2)x2Cx@1JtY-$q=r2 z|3Ka?f}{XpQ`!(lO8V1|=T5z_hKo|$t-dL(&y`Gx2?}Jw8I2eP_n@v-YZo6vJ7liT zP2u_&JLq#V@Trc>A!MzM|Gmk-b}@ozCH7NM29(01V)y7%*3q%1kJoCvxMsglvK@q!Dkq;A%!{lGIHLX(? z!A6wtA10CMbvv7v4vZpxPuD@8qZdM>_RpDWZGo4LNr7XqKm9W-Op-N)vVO*VlVR4k zf`=aLc@(daTq0}#nC8}P)}wNpTm6`VVYNtCnA@~^PVMR}-P4jk_)#4b=a5SOJQ0Zr zAoDPveOnEePyFAL=c`-*@{?qxn1@eFBV>Z_|HwBs*lNgakpEo^nRFHM>6>27Te8Bg z9`c*mcC%OIs!=r@ejJ}^O&@zFytQ*_@bcW-+lxf8fxQEtv5)2JH?fu~SzEljU4xxy zdlDn(zHkJq5MS@&N#i8tvGX_K#nn;rH$O$HZzhSAlXoC5t)l0T=}fQxAu3b z7HHmbf2P&pU*qJeux?3v;u!L7|FsOMHQD@er)$CMo@MHks=k(TjPiDs;1Y;n0!p1V zarP`E*EYUeU=_(JiI$CbZ}GDjc;}fLy>jo9QO#dsw5`_8GDEUf$b1`}S0U%BGn&D- zmQJVEFGfHOC?Pps?+qJ}B$RV&-(e>krb`YJ4^uX#9k~Q_PCn${1w24gB)(-Xd|9JJ zM~J>buq%GG=7jp)c<3xh3Yi>u$!yIYz+jnWxGYHZ0j|VsIkGS3 zYM6S@AX;zz3o`AMt~yCL70wvGsGbXS%*x37Zu4C?PMgZ>!eUaDcwD|AQVhIB&OF&e z5-@moYJB?m+FNvmu8p}$l926Z-G5BIs~4m4gYxE`{YdMKTss>;PN%0w_QO6rlOoL7 zsn6nPH4{zHfa+THsD-(k4}rCAletTuq07Zmp#4I6Wg2og%fztwc6^v=XUEB&G6&Gy zBX}_SW7u}*{bYD*K}YN!!;DuOLsy*t1N2XRslK?D>h}YJvA=|HD%_`XUU3zHgY5@C zt=|GaYxSP}Q4aME!}BmD9RGwhD+PhAUgLo0uxsEihi zPd;?u<)}33nH>CQUe~zOEGelPE``@Q{w~DT?(xAnDf4d)SBvDN7r}LN0fwOdI;GHV z>{^|szR%)o)LL7aZFfSs)v1qTQcxsJaI4$)8O8)6FinHOv<=inyw^ilx%9ZM+PtQ`!LUJy*FIsaaLh>wS- zSzGmwxGg|TDS=Wag7>_OD$b`vkZfj-Ztg~NZ| z>t*-?Lt()OhM!fr^6YPJ#iOtyx}ecy>!%Z#%Jf(>N46|4DAEvaf$3;MwiwNTDDZ*E zhp9nnoZ6AqEo9sAB9+q+npYpzKgAVeWO5jru7|PgQ~TF+F5SLYZmlgNf3qv3`JQA8 zNnzWGPRL5V!W1E`DnkiblS#pKb6;w1b6|Q$S(c>ttEJO&S639+t!qUxHs~4j#Inf< zfDCGc;w0P}j50iRtndW=#wY+nNKn_A`vEi!`G((-l=p8kryoB682CO+KG@jtpl%&u z;cybJV%kg?jDF7|!vDOl+P}>km6_P@o=>&HaQ@7u6E2hlh)uCs2y`q1x%qAF`kZW(kKvD7V+D0V zuaV|@qqTJq(+NX{X8^@2wcRaaUdpWo8S>J={A!u5m_;Tp{@$r)xE@7wQduqkWidg%4LL7^@a)9zy|x`a`xr18C2$qoL zT~T)=G5mb@O&0I1yj#rrqgA@_52Q|+DfwEjEbcD1|LN&*X@axD=R_tvzD+@u+KW>! zV+BQj!KFs$V_%A>7@|QIRr=(}a1@{D2)2Zl!aM!_jQFXiA9hO`GoW*Pv&af+!z50& zH%CJ!vNLC|`Iw*>G#^^g1G|{*TUKR#kup{$A}crfirQjd8tEK5=Mx@P#$w?P5_zD$ zW=AIp^~loIYZ@zkKXK5AW5m#bOCT75R2?z1YqHY$)po*-W4-nM>+9A%dQ27jLlB~3 zOb00Nlz2?ag)IOTpMi@?7f9B>2xhuhoZnfTOc8fVjqupT^HMfJE4!q%I*+XuA*V1Y z{ginTmlz0+8L!|JnkBt zK5O%RKgc}~SI|yJ2(5ocES-qT2++vL+D43N5|630CqX~Onud{yP1nHxQS({wLN|p{d9}CR{qLfStb8EXR9EsJ!sCC8eyuhXL20d`pbWZ zm#;OwX^bVrjT^%yaJQ5z>{gu9fHnBaCRh!7Tjc2A_{{^XrX_^5vNs3`^QZ z>(c9;7@i_VAY*(K0K-plCu`7SN?NE&Ms)Ua!Kf}j{?K<8gb$iu$@f~p=flzw*Ht5+ z?;G=}D1H*X^KFrpdV!T&Ku9CQWURRo8B;xVmYS9#=_UbR9 z9)A6DH`es2Vf&AF$M65$-`PFV^9Ue{HC*Zb@AWR(k)C%wPw@Y)<{~;4bUo=-=9pgR z0`S)J5KD(yXUoJf69-!ey_As$DqETcS77%gRqIpMcmGOgLg2yne1u^l5iOBtIXc(hD)ze%2O3{iyg4GNsU5fX<4o|7pL22wt!z@n-A$+_8Bp#gAD}ER84{$gnY8$+e*V` zHfbT;!vSS?!+?+Osr}#~Bc+wjZ&Wf4`iPjV%YU+5kZKCAZv2{g?Rc4tP7$729^u>3 zSoa#8@R8GUKnwDuS7;bZRUa)L^<&6=~N#Zt&e8O@wpZCPWVc9Am{!>=7@{*MEFL+$?~ z5hA5k?x%WVA#Yu|)OZYi{kcgHIX7d^Rx!80BaGIi+dsgWC5g6P6|{`Gdc$%P8(VUm z-E>_obFpkWEdX)ypq1=^&_tBVt=4|odylhpJ{#RIi3iexd9GYCs$lix)@?d4$b0C? zxOL_e#`442AKAKf==D0c%fE5>ybbKF&nJOSx%*~}RBh<_zRfUZzoe_dLWVQ9_$AiP zC|~_-xA)bFkXk9WU0s(uqWddmMpMJl{Sif}5aBcTHRNbt_dBdI4hVq^;8cv^v7sZo zBICx6`RW{k%y&eHFkDVPNyWJLR|-$hC0w7tt+!fY=pMxogD%gYM4sSu&o0=f&joAtYYsgoQ*aPc;0nyO*va5@u-*YR5 ztp;`moJoRDmHBXfK8q0Ks3syg_|41TOT#DL+Cn97k!OZq9e>x2eA&ZMIhyUBw3((> zGV8?oPW&n5&Iao#4vFxrr!pS=Fbw`y^^ zM2^su{S`>{qBlk%=!a(UT6(f2&x$%eX5dw^ zr$8gD>B=;T_wr?1b&{w}G1vYrZaTx}GWpC^Gai_mU|*Gh4%z6q;e%C{k_%= zLr^sw#wT9UhMAU-Fp_XLst5&~mHo9ZBXi;)k&HkZxOFSQFWa{StxOA=NByA%d7z&0Y@9%Lx;lAi zv}Rn)B){p-@>D{OeN7)hXQ(q-bE;%!jXp87Y3Qg@FR^u!G~U^?_P{ z-1e_g_2skpcAX`pBp7P+eHyVeLqP%EvEn3=zhdk4x}BdzZs5tDtIJx==C^s(5@&SY z;UiJY$fc&~4gLuj68JZT1)eb{=487AMWh%l1mF=-=kHh0tQn<~>nM znHhWLkxH)uxj>+&8V`37jva>ZQxkD2<~7B=)4QYPb8g=pq-BErTEQ}xf2yPx zIT3-tqCvCX2FhrS8ouCS7gy;L8ZjNYdvckO%*R-A7d)Y}mHYFH@J6X#q?x<0=?3?3 zSwT8yN2iJ#6==5VdWBs)_1)bDz76o%DwzS;i|gB`vzSI|j#`;&Wu(Mqh`OrP;MQpX zSVQ8CY<4CCgZTTrOEn-cq=3$INx^p7aIp)6;14l-_DBg-(&hY!ckZuxxA?HS;5CDG zg&w0~Mn+EHs}@al@DKXDE$YV24OGr?PhsL4g`dsBQF;WXyML-zr}Mp^fJz+YI%ms8 zKHrC}Iyst*Ua8>-=A>F)D5z-z%eM?mQEpyNcjtMsVqI?tcz)fD4=Gq+g>wqy`cb?Y+fS$X z9`GfkqjZr?;Uf;kR2($?b==z}$Yz@GB?Z!LZ_Mp$TDP;E<(SJihU^&Y4nK^xLwNlR z-r^!fveBu=4_<(zA66>p5bcGQzKMjKQnSl&+%uDuGJ|HzP-v3yNN&2x2O|pg6_fh* zk$2kVu_PCXx3Kk5M{{t0{S{xWgel(<2@715ZWz?(0c_0y|5z?mmW1TRU}98rRaRuLtBNCu)o#md;lDV}gyY|=COq4|maFgi z@F(fWdvywR^$#ue^Z6B5)GUPa!@0l#cJPc^Eja0|w8~P*v+LISp0KZsa{s*d-*t|M zQiiWQA0c^7a||G&3X+>~SW$|N23L6o}EK_%AdMZv?jRjeM0RvY)S zZH63VyQ^nse7duK+eTgC@$LI^lcQ9m>LV@SPaIu8IcJH+-m*7WgWrfkt1tANM(%M8!VN4{*bBVN? z78#!XKY|(Z;k41`-HH#OfJlRbGJqVrLNBeBC*32Ehh5^M=UG{Lk9A0O)H{maLl1qb z$-1?PD6A)+JiO^A-W-11hOK`fGQ3Ei+~<1#fco0HmVlYl|2y?I_}B!x9|(<>>>S-W z?s5{5u9iq_bTSp_&ns)6;BGj}1?5>N-42^f`TIwbxC>fJsUbv6jT0}cF<#*2f~)dr zn5mFWSX^-XSSuHYX!>o`-Fg9NGD@fqnh{xG#8ZeEjH!z|S^bH<^y>Coy|O-s=_&y< zx|)~vy;4jajb}6Yzz3irZ0s;O4}f?5lIve*-Vu$OwD{#WsS*hpjmb4%i$LVCgpbw7 z%FgG~voE`u`aQXWM@KRmQ9{{pUaxpwdr$P#XXam2K~APEaHBmL)d>aJN%&r;$DGn% z7a4j&wSBJl@^*W-=}xO=jLY7gFXZ_0(-N~ch#prS^!d7NW->z?J>}i>b z^WLDPEN72(*|$!+TP?~5IH78?AQnv1);#auZ==T?^*%D(Cqbd|@R!%94s~K?F#WBy zoI=2Lyy-N%$);Lk!9#i7?f|7>3sVv0=3^HA8t2}cjH%eR2T4z?9-4|~>Z_?)ZIPk? z##_wWJrg2;4K19TXt$`6c@AF0uw9hUXISofSg_N1iWBtqzSu>k0+-zde2G9-onE74 zGHyBJjSQ{ZAsH5QSDod#?WR>%FHv$LDh9Li|4PU7E$b#5>wLyL`G?YLd%L5{!ZYwC zp(Lbbv+yY@Djsh7(IWiYE zbrdu)Wi)!6mWlLq!#orC`k9-Qb0%r#{aVh)zDz`5vC;fe{zP@ULj8pti~fHk2bi*= zz>ZSo2g(%>cy+5Yk79R8e^F2Wkh+Q52|L6P+z<4kepOuEU2$KkwG>%datV~vt}vV? zXp^Vrdfqn*xx-9aMr#=SihRGabMeDy z^}%7YLSRpaPj>&(0z-%OR)!=Y+FTYbXu##oKOo>*lV1IJEB=hYxYYd4>9>^5lp8sA zK@V54y}*ok4fCcMQ$CCuEawb(N4{WXAqbib{Y*l_E@ZI&7n2iOHGBFWNhnL^bN88N zg`qwP&+@tp0~b>3y(@bZms4keU^Y<3!^t6XB{@Uk*X6L=$KUI+Y4jn2rfy5Sr<94= z!jf$*wWsZ%U1ERlLbNkj;#BjxYDU;vpy;>_-mX=rYqF!r_aqb><&6{nNx|PoqMMqs zJKJ?&iQHsr>3TBeR;Yd{9#t+K0Tpt!HDfiSN?!q@xsGN>F5`mi;A-F5RI&jGHpvV; zsNhY+B9TRQNR$GGE@vv%6(0;VsCHI6HiW?Daw{dk1i$q{P0#}?K$1ph_mL8sI{syCZKtqC1QxLeoQ_P&(l~ z>=AmD{O&Vm8?(L<9Z}}CZWbK!5>0V%?sB(-Ari$u!1bu?@vr6+ zVTCV*t~KA8BfJafsH?1|jgRq-p41)V<~YZ3t3Q`O4;@iRpm{Q(BGc2^zu!5$`8Gq6 z@YaGz+@9$A#gnBe-IcbBntbGe!D1%+y_PK`JW5J%$RWEG_T`IZP~QkR00@4hW@wYI zP`NC9tk1KAXaGsBj<)*W2|Qq@%5a&R28&*d5eDl=+*W0 ztD7Z=#9Q_!HBV9owC1SVb^R8?Y4?Y9NPumy3D&z+AGa8|(8;P{d^~P9$GGQjpUdL# zOfMV#Z0_S|X1Xu6K%IH~MsK=&c=|7a4;$%J&?jkr!V?44nr;2CSdi5(gu!CEOUhI1s?Z-F*-eBPAl^X zPNarS`{K3>yxn{zVH9dwJqr<>3v>%TuZQ)~%~T>0FC{4Dd2@Y(tC02;VVPu!*tGGm z5}uBlRfb$!+=UicQuDm9h*riSPl=dQBpK#Gg~A z+(>?l&WPSWnoq^=V91P5V1F5Fzz2-_z>^NWKfQVvt(l(LQI$nD4%j3iZMK5PcPiPR z=m*|vZ{VWyVN>OZQft9w-O<_DIJdHN%eiiqew#Osm8*fGxP3uxZrzs1Usbt`1aWG- z(6h-BDBPPW)lz-NfSCfIW;BTCeiLeI z+m40&GLEba&SJjd%X4}vuMqnsdOL!%%tFgHm2qC2pT%tM?^;AI*Cws!a+$tzy+O=?Pigq?odEh$edUr z%x{_goU*Zb8zs{GGg4^aE?F))S`FV98=J^t@03JOkvH=618@JJ6S>83_wj_m(WE0w zO6zZjmYn9}Y}ZZ&L$t#9MzKusAJFv)( zOU8DewqLeo`6Qi*obaX`V^sS3RzzMrZD2et5B)LXZje^dT+K*+5X859*Tq0ohviGb ztZ2SrpdWArTsrLA8sNyd@Wg`eKJY!;zkOPOj&q9%UF_tgQoDZQHO$K@cK89UT; z$uvjBr?UY!n^kU;?v?>~C}Zj}OJUIno>;W7ZeFqQ8pHl@2r(!W{4w(tw7LV0oBXUE zMpiswy+q)f)>U?bmRB6qc^|I4{6#qbQpIQPyT~w9Kj-oFj4T}UiX&KvO!jeNd*|C1 z$B3huTH)E;z+JqMI=WQSM0@t;$5@A%Vg1msfZZ1+Ny1y-2j_S1)Eg(ZM&r@N&Ma#0 zGmHxn0W~F<2Km6Z!3zc+i6w{DP5n-RkbfKXRZ5foI;KbE@Jt2@dGuVJA#T`J?x!LHtacf8ges!b~Jm{2Y}&A@fYy}E1-@Ov|#XJ|Wka0*<-r~EU3jin z{(4)pI5^C?#qlA|+Q!vidl?k{E(q~X6e((rd2c4jG?tuBibk5>V*p-!zPgt?#pU_% z`^FCog69hwz{b+2xTb-i07B@Ja$2`lUEgjGBP_leSYipE&cmeg3Id_C8jSMtU>OXR#yw|h{CtO7hLC; z@VfGuAndUMVjA)Ck^Liq%#|$QaF(APAMQ~ixVZGpB!y6FIU6!!@LPvLXGwEs%YN%& zQ7Xo1tD9%oKfT=pVyRaAGwKYq;eT#uJE*Ko7L(Xe(DtBY-f`InI6K8IC(*TTkxmX( zVqF0wUkp}@eRb=8_&GhQI-RnD*Xb)yofIx+BK9zJSA=TKV8v{pDFjNFpp7Bk>EZxG zRkMU_dO%8n8_{u)`TZVHnOco2ZT7LHMR?N+E!%x&%68=k_p2t5gQ~%d%pm_a1J68y zjPM8mRHcpe$y8I#5~lZWL&>F*GTb39>S>ZVHvgr18BSwttStkgrroP!2o9GEIQ{P6 z&iMhcd7MD9c+xm?As?4;2j?rj-|BSCSUsnMoX>R|hLQVmdQugahky1QJEu=MdiXUb zs)x*pB`VMg>9Z18tlE4E+^<>9F>yIy>qk~w<(s@8v<`g>#UxN3?LnpTh64^ z?>KpKhP{+d^IBuE^IvMdrCMga^wL)}N;yY%P(*G(8p${8^KG3gzI5nYnMJir2bY#p zqxezE7X`zdF&E1;ba{@qIcsaeoQvOv^tHpj-&TI9;ac0X{wH&dLf3paE{8Iq)jNlt zm0uQle+q#ZqOjC-MbFnBer+#Zi~e)rAA)nJu54SE^qNHCDMA!x|D#MhYX?huIb+?;O?gBPJVbNFS!qAzxi8J^7?9Hf;2qLbGa0 z?SM<^9+3(!7riqy^x+A^Sd~3kX)Tp_33`85DP>+(_``S)f8l-#+mSD6u;+Nk?~On` z)+6>E3~JxjIm!w0RtJJOV2dm8HarFD_eo~V03++=w^n31bm(;~ly%gU-X}fFAVsDb zcMCMH=+;fn)Giz}9xo6BRFB5>fjXIV9KPk?vKT8MMLI2*m^gT|OhnebOsQKk^m6V( zP0y;hTZ46SOyT;kLS00}mU2BP!*6XHbN!;FNq;-B31|?p*cffQ$#sR+3mlA#zUp>| z=-Nv`Q6gG%XiKFJATq(vH)M3p9Mh-LPygi}A6T^XVc0(fDPk#e?7nwUged9S?Bf zI9|tM=MveEv!QDw*OQ-6zBSfUrMIkZ!l8 zV1+k@`SZW?P&hy6j6;ujdXzk2u*j-SXLMY?=yvu=s`o6(7jmJ@tRF%=Ln$AwTWW8P zT*L^ibvW;kjI#vpJ|m~NUx=Y2M$UwdO9K(jT44jE+W~Ty@QgV^|NFgcSCZ*uj?HdM zaBSR)hmo6wMJx`@uVj<;+4XI`h|3mCu_$G%1SCc+9(oiMxMY(qq=v|NA7MZ#~fWf4)OEqBKJwsEy0*#wChmQvF@VmG$g^FkFry;7ZrdS_-D z#7-o_qNmiwIkbt`JAswqU zQGEr`IBPlAbe;h$3u2+Qe;SM0|YKpBy3VN~c?Iwvr}cCu&Jr z5@kS)%A?$b{GfTuvz3N|kWF)Sbv*qPeJYvu!Vz&LpU7kC)_hQK>FU-3)7lCu!Cejj zTleR5!;1vxe)|f(>k0TptqQg47bjPK&OJz1lpgthd~rUB_V~nt5Hn2?y5l2c2!pz} zsU6!}(Z$JCf=Pp6WUOgcN};?#NEG@SftKF=@C!zE1U3BZMiK_JB#qon z_vtD)jfgWi^5wS>4ngfPCW7{JbgNBu&DJza%?|8xrZOF^-9{VxbKy|VTQg`IW2!RQ zDRpqbNT^g$qW8pcYHzLX{&?k^gUiE8sRWfOqf7NOedSe*kYwmPUq^oQX9}w(yZdJ| zVQjwMRHenk@h7OzLpwN0m>L%+Iq8*ye9$@2qO+q>%R^D{trsHWySI_=q2oNmfK8UI z;tJd`GNXJ4IlG~F$oJsw`Yj}qjnXf1cuJ({_|U~Kse`@Ec>v>JJX*lh$T-Jd`9iUK zu65{^r!7Gs?fVx_XBzs>{zK&=IQ7)A{Oa22iVX_Zb}AxQzh8THblG6-(3-BR#3N6) zS%}u>USNJK1bvh_vo5PXqnx<#vwbCKbgqpdvn+@IG&I(JX;w;qV$R)h2ZekM&ZWi* z2$Q78W=}H2T~mrb4M=U|hfclLb2H6m=_!&+~76gCZt(!)mrGhKA;NSI}Sw zmaNPWl=KaaG-C{HaX6Cqf-5nSBl>wLu16*ExG#uZt;&@~Zw_R#D*n;$2h@(}z7pn& zHnctFIfP|0uClewf^%^fAN?7lMnP#s2J?kzV>IM&6(uknYPX*H{>

j?$Y_pM}so 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 M&ygbeb^e+CUt>$w^8f$< literal 0 HcmV?d00001 diff --git a/assets/multiplatform/resources/MR/images/crowdfunding_4@2x.jpg b/assets/multiplatform/resources/MR/images/crowdfunding_4@2x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e39e0836cb4b5aad30c59cbaeb27d170a3084b86 GIT binary patch literal 106158 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 yklI}}5t7^fWoq6#De1KYZhAm9s literal 0 HcmV?d00001 diff --git a/assets/multiplatform/resources/MR/images/crowdfunding_4@3x.jpg b/assets/multiplatform/resources/MR/images/crowdfunding_4@3x.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ce9b4a86efaa2cab726969313ac8c1ec1446e1aa GIT binary patch literal 184356 zcmeEtby!r-_y5u=5C0DJ%*1~~u=ox?!?02p)toPY8FfDH!y|K*)Axc{dNCc2Cu0G$GG(We(C z#eeEXI{~o&r|t{%_3wdh@h{c?zA8ICbF~Hl@RHFd`Wd!>kdR;s#((EAFtGqd|NC4} zK%fZYKXi*Q|CcUyLlM^h<|ECO^*uTfW2>gq{zX<$`z`qFmi@?7K{ENW92>gq{ zzX<$`z`qFmi@<*n__G2~0AQlG128cDrkH;ZY^=X24mLIxHZBe>?ms6U0X{As0Uj|a)gwuy4IdlLa!gP$)~i;Qqu^-jBF4Y#f{DET;hgy4qkpu)3hAiVoxL#6qS?> zY<+zF!%|CH-_M+Lim0gS!S(H*d51?trEjK{mJM9cfkYuMBKrryj%{=3<{2>nn3!1q zFMH_b(XFFj>yZI4urRT(u?UC=@G$Yv<U(gvkV}{`iBS^KnAezNabq! z51`C_8Sx~bdro`w(5~!mw|2!#b6((n;inyP9<@{8U{7z^08et7kL2KB0drjo7q8f_ zyj|vv4U%;4dgQ#+vg8-;I<_*WY(JVR>D__&o>(Ytk5c@(DK=fww!U(EVSDhPm^C)g zHP?A~#y;1H8PnJvWOC;ZTirL7wzvB+c$sbkp`#uzdY|DE+uMus*V$h`f0PLNJF zRD$1YRSx|qU|o_2(ND!?QI(yCLz_Q+i^ane)F3BOgy>J~66OJ`*mo2M1yoO{Fowqo zb&1n$izCB;G4iN&TEa^~P4JMy146}$Y<=b!blrh|M(!OAbzDv5I8X1L?38$3&?SGE~LDpc<^n)`~zmOdmOH zbX5;sY@i}1E+KOmzC6p*QD!zapd6th3YVO6V}lf-2#@$%!51ipP4GS)WI$@hi> z55xG8VEmyMF}_?m6fOTyktZWW(~?ga6c>tN4x_vxcpZkmGRJC#34iJbaY^B+zQCVS zph_WlubOTva9*X#__Bn&MmCEEgh(z1rX@zv00Uzpx!B4;1fOJeB6lSQp!$hX?D02| zFk<#FENl?LG{$6LaDyCSs5Rq83>Tw~wd#ZsaZzX>jS?5)pYH4BSjnQh&xS{a?wOTt zyzc-|4p@WDiq9O$Vw9rx{$z#~tR#dlE>I=+mp5RHwor^d7o(!!cR8{u4}HOl*r&Y$ ztnfTvV5d|uek5~0b9lMrdtl8x5J<@!BXJqQN*PX|$~>SXFC>UBhx@m0-r@UX*ffI1 zz$_pcE=eE_^J}3}DK-!+-3uC`Te0NH!6$TO?P&B37)VCPKTtS*|G5H4&sQv?I9sKh zbHpFfI^&+JoVwazy4IJU;ga52J{Qv1=VOPcFDLmXk77>>h(?;!K0MPCfJ^6s+ZY~h z5qSr>&-WI)OiZ<%c(xDn9kd*|q@u<+KDEus5-QZz_?T+3sCp7!LEj%Pof4+-xNdqAEV_SUg%^rQcp8 zP=Cj{iHh?W*1^IaDz1O5m2PDVywIWrV-=s^E3$~7fsHsc2xPio-mZ-EI5bcM0bi$9 zrhDUCl@RNxy&o5sppDcbt_t08z*nrsWnj1=!-gUhSX9IX8sz0*#Ng1BWk&FDoT`){ zF)KczZxn?s4=2`OO$X_!MdPsvYH@Jk39!JS4S^p91-$1J{wj*9yrW%pg(bHUiymf` z9ATuL4ITE#jF;rVptw&pTMY{^Qs9t1K1(&ZL{gFEDH&kLffE>`MO?xnn=-?R9|^($ z9h0t8IZas(0jWkq(ENDVKLz@S0a3K9WNN$7F*;Lj=Mlg>S~YCwYes^Y7%f7U*F*dq!(v3tiYX-c*GyR1>#^Yh6%gU;Ky=5@y|t}> z!5qO#;rNeoiwk_mY6wLuBASvA>V5b+hZ^&M-ED*hdTg0rLnIZs?QA$PJ=cLT8ieI? zc)0k!T)C6vl(8Cr4aMIf!o;8vkRz;6M7E@*GRHFipkba6sTab>n9{`#f}Wpil*>2I z(1AW6jeq|lNGrBb{GcR`hO?gxUz41K#0IUJ#Skq;A^ovk%J*!I(b!}u_=+H0Dp@b# zzX-)S>Eb@>kq_2aWr5ZB2z+vmP(aFFOKmb^ho?}b5ZXoRF!%xwCCD_v;{xmqF<~46 z(@%j|DOoI(D75_DMx&KL_XLwlv3mG#v(=-N5uE6nBB8FphhGWBkBxxx?-91(c%nW?y2o@nU@knOGKeJCjB%xN2JXvBCSP?{f#LB9NsiuYjxE4T5 zr?^0=lt;*L7XFkf-Xx0=;Xkt=TAvBal_4}Nb7;9vp)1EuMYF}jN)b+ok8ML4&!F&& zl~PC$s8})24kQZ?$7W6btDIz@IltSNMQCMHd{2ZU0M0`rfgTkYhfpehO!z)FtA{;W zdkGDb)55bn$@+fHqTDP{u+3F=eoT&hv}#2xSiVA2 zV_V7fVYaop3PcV^Z4Zl0%H|h%sD%x9f%SBSdV%!Ylj`5lj;{HH;5D%hRX(h#oVc>K z+?X9h2C_qtC-r%1tE$tdQ91VI$$+H$m#Ww4;xUntfl+zfBpb`8zQ6Ry;=Z#QQFB&! za?Gyqz#ez$zgNyhRApCbx)rR>H4jpbM3&}PU_cv+D1{(EQiOl&TI5$}C#3rL^A&Z2 z$aoN8Lm9rz{am1dgr$RrWTV?p;Fbv^D{fiL6<^3?{{61dg@JJ7#2PA4s}}^DOwY3e<;1<-=4!Fhdc)o*Ea4+l6X4BW)9Qxbn7A+eq*s?rS{z5WrORP878*c)~m&#<;nV=}W`e`Wh3`_fJ_=BUQ5h8)9jG(xN8fK&xVK9_xI`v!k;D@S_<5E-n~99EwZG@!~Y0Ur4~;i7$1 z0&Jj43XQ;sg|ciU_k@7B1ep#){NPg_T5g>mWig0KEMOkx1@p$%63o5GBQGHoP7=&8q1{iC>EC7$4rL*U*1(zr6jK=Fc%A%BK4eM^KOZJU8Ql zVwikOLi>sLVwo8O`M25HRavnii}?wEo2WID+&~#D9Rp&tG+Db{`C>zoTEZeNoHC=MrKj z;-C1{Y0I1sZ3pB7{Nh5>R(<2#AuEo2T@8q&54!!YXb%|x*gNe9Va(h>N=YV^w93xQ ztpGDd_)On71Wo*|xKJ4bL!T^LR&XO0sxOw|kYSJzYb%vSH62nJ#xmbF79u$YCA+(+ z#=0m-Vcx-%Buftd1K@wD2;>kK&ZLyX2IoNm`#KDx1hi699YIqcdXx{ra`CfrcoqXM ze*=}AM-**?mrv8w{p^dL;BNVbxnAoYJZ8UZ$$_C_m!c_w6Nj82w=u{OM^#`R@iHWI!y#X!1?#N8L1pv_4eldts*jE)bKmMc z@ba7uc<;w*9~bJE3b6CaEo!R`1sf)OzP?TP^!S)0EHeqEIzE%4m#r5deo^=`0;K4_ zBQJY7_2S47_rb0U?%l0Ef1SyuplV=OZh5hW=iTGvO#6>nyqDZX+@bZ)_h}yC&sr*t zxi8E3IvF5c%x5boyL!iXeaB#BV0~~Pry&P72Nsg}s_eVHx-pmyg~5DHwn(Rhnc%KY zOZb4qKrUU}Oiw5^)*fuqU7gO1sU`Vi3*y?^(dP=5A!=$N_7#%+&GmRF-}xN+BGN$Y zs28@e5j1~;b}@XSxPAQXZ5c1aF@eX0sHRriPI-c%EwX(#T!)9MtCw4-Q~_*7p_Igq zkCHKZpQr-ZgP=o-zorm;c70mJl(HlwiVDu^!+Z@zTX?>00jbi{GhCCHGeRulruhT>&&4F?R-x8ENMSZ4f2&R@6NEJWfR#68_k zt+UKzuPV>f@oc56^=eujk*D3m=5X_-dOb0ktmw-V;JaK~+VViZ8-%k^?$qUOmXi@c zz+CK@9H7Sh3x7N$;067`#~hb>^4h1fCx$H?JafurN4``uVB%=|J;wB8-#vwdWQ7%9bxzVrE~1Mcd<3r5r4ZcNBhe|E>?q30Z}ax zOQUm4F3U=B#8ZFKPlh9u&czt3eJ1{hCaeXy`M5M%`$q~}?r+i;SY{{KC=$mxR2U{@ zIwda$m~o~!OnR8Lgax9{Zp%syF6QwxOK3v^h2-VLnZB2YW&Vh0`jA&>Bo+`C^5O(f zd5ax0H=qOq%*-aWfz4F36SM_O=e|U;r|sZs8067_nWId#+Autk>=f}RY~R<9$3gEX zq1|KgS1(j(zU|Y5>szrrmQ&>t|1t1ui^0U$$n^$yt{8zF#7>pkU@E5+9FomS#&uGC zKcFaC%S*WHNeE5asAYdNV9lbsq1O_FUffVs;8LPJci^?Spbo=AP3(dzgY31u)cD(G$UB^=+xctSGuQf=8)41&FhHP zq&>#Z!9-C#nCIfU!LGq1sTuNS#&z~PR`Tqlr|mN zf%(;1?o3F9%FS*WaqzfJqIG8_&gdWgCVfRIfyl^SEsF)KVYfQ#b%uVsb}0)?oclWX zTR5hz_n`>jlkihHu1u5t^W!_Q79u8+w}Z21s+krwwc?vMx-)_4YH1d8bmNG0>cUB) zIQ!^nK|#T>FDV4F+E3j4$)AopeJS~2ZBUh4G^eTQY%HIv+_;h)@LO-xGCM~;c|G`7 zJg?C={5g8?`!CO^?)!LQdQ|s{U1kbSCr_%Oyzc&P zv%R64D|%sdr^Vq5inH3dFo%k$YlHYQm`%C`$&TczGInKVX(=dXuKWpwI}3`fJfEDD zA?7Ek)fo%@MEv$WRv|}<+y2(WtsVvW1ufBEHm9zcQ)4I9u394ra+P{|5~lT`8rl`i#@cN8Jg7@_=DLt8)EIPv4FAsO#du)tftCNWfO71YNDYer{k# zgjH=3bS}9Fe^||R4#&<0lB>6H6ixk>vb9%vMQPr!g+EQpbAiKgK9gh5DgBTE(#d*k z&!GvyAmA!Vz9gWovQz}RX}4Fs>5`{!F_!CT$xkY+UpmkjX#`T zYbz~cKq2CFo_4{@NMje{u(P7_%RTV`YWj`HfizQI*IV6|F%Oezuf^JX*$i{M{?2Om zaZdRX?WfhDkkZY{j?|GqfQ6eQK;m_=Vi^AMDXWacODDf>qa|%%7jmRx*jy;dZ-Vu_ z*#S8}c9cdKlz+{fRArK@rt^)%@oYhoOJz&OVZx(Ln~XNo{&GJ4nS)(e=p)UFA9*9& zQsbxOxZaWYbFSv${F-$v4%6L6xPA9^SnbiV_M5HwDrKcQdmp4Z#P?7AwsO3fyL#=@;aFO88r{W|;HU9D9hkm#e!5t>QDwiTYu~PL|uZxFbPuk2#?sX3Jy%^FN{|nbB(PHD4KV{ ziKAC`E0(c3!kVRkC6rd>>w#bfTQEo}q8ebA7$sFloA>-H3FC@~L9B3V?3=I(35%R6 z1D>yDnq#zs9r7k>a!x8|t{mL7;-|_&w$@WfedpSz_0Q{qousJKEnI=cd-&&&Fi3D? zLl?cuGcQM@&&@?{vW)BBJ-MW%;&L25)(YIsC;m7Ff7^KdG3R=XV{T#QiMgJG*Oiy% z&%hd{MxwTb$sq26cxV^6RW0r=x~O;-aIJ7{d%tIF&o2}r-rCNg$nmk z(d%T4!x`b|lKJws`S+btYI8?rZ?xgAW6~xDi0yY9xqK$-Ky<71={=**XxGUUe*5XeB55KC%jt`n8b`=rBR z_mL@ovs}KZn@A0)6&a1soH#)C3sXjbKE378#CX8@viU?Tjh{k4~f^+Z*Yb+L3wgpCcK@2?i@mCPJqRr{M~L1|wK%V^ameZ`kmw z_2;Ve0`g~5fBgY?JX>o!5+#i}O*MIVx_y>2&lys7^bD15T4MhrAR?A4J+jz^MIj4o zaUB1iyhRPF_DyBa_Vv^cM-w68-*LS^u%_=EoMfBQ&f}y$Il@ZgW+<2GAcEy)(3fPV z!OdmA8-G3|kz#!?e#)=r|Bb`>(5-vzc305gf#{9ifj{v;HOD;UJ8YC5?OR}^os-Q= zKQz=F3p_uW&V74XKRNH*$|zMKqfi8~E*@dVXBfX;cI zAI34qmc)=tS1n42f)DRopIM(o*z?l*)=hQLi$8!j)F(K-oL>`}_C)Y#rV5la->iB< zuiiWH)BP6DL6+TB!;rmdYLGFocAx!hkI}T=`$Aym`_wI5>1` zs55a3gmaUN8mlvXcC}zO<)3q{pL{HX%**w?a|CI6*J`8{R=w3*Y)CL#DcCveGVU?K zJ#GydF+aYx|9mp2S0*8rq48@uV|&CTqotC>a4r)PUSOu8J$qFPvKYiPl{e>7!!W9SoBSD|eN+c3f9~#H_hj zb_XZwHOr4`ri*HDu~yYcx>u%Md0ggZUOXP10cI$X8q>J{(DR>>vnLCVn#~=&j|=s# z)eACWJ9Q2)K2io}(s+Yn~1u=>VAz;`5#YA zWOA%KvV0WCn2`mmyPT>tuhjUkO}lp=`zFM%Ez~OQcJeCCbs}beBq@Ko&TFogS4qAg z%)IjWnB*c5J=d2VYo zJgUqfyN(i-7P$if-ivbB-R!{WyE2M2Li;xrmd+yWYii8J702~rP555}pbanMLrQ9h zFehhLz?l`)INdzZ;!kC!sb#ZBI(%pIs39;gSsJT8TY?LfWWCH_GWG1_hfEN6oz=XedgCz=}`g>3@8qX z7y-V8K!8EA&>sN#eY;V2=@Mu0A@Wcy^JTlM7QAwnuZ6J8S!kShfs>x=h#T~@Eb-9f z^)R~%NiXAxYMrr}?$LuibV*O`fYCaZK8BZJRS6 z@|P``=}_>FDr)CpWnwnbEO#i~i{X(EU2U`n&2+Gs;FYONUAz3I%7p@C`#qmE<>Op*!K4t5eTj~kf&WNW=4W2N*ie3QU{s9~bZ`{9O z^F(g#i2E5+u05FnnFOorouc&LX}T4qZc{ojmxM#EY?)XQ4X|0eP$Y-qPj2RmuA!C} zH5btCDnonZ6BJ$iPtwadu$zHdX8GvjpK?V=-cG+Rri3CpObABIb;q)0yL7du`nxMwAqXkEWrExZ zvtG7QUiaUhif?7KJ`$?;V-r|x`P_rMTnp9=9`ux)q`<`ZDZ81MT6J)2^KG7HKSeW& znUBOMF!JN0u(cD_xd-r;dI@#WA3LJ3;#DerIJZ7~!PoDVo&)Mnl>;bK({V^%D=@DF z0oFer`Le}|rOq6iCcZ0o^qnwC))=G9&feX5)v!gtn7of z>L$7#j%^j6vMY7moK2fVX$?*BKqem4dEt>on`(wWC=gp^()c1Nz4gkYxVI@wdK4_* zxVskFv`zbL2lOba9IH=urdDV>_;{UK#LaJ<+fG~^W`$&jV|@I`3bXb7T}(;4OBUuh zB9}0O9v)Ko-vrjaYcbcU|KzMaGNtA;?_i_lr9ZP$1BrbI&jc3Fg9!m)kTABZv{n-E z&#{&Dh7o7PdcFC#?wPsRL#S)Fr`fEYkhYeFIw*s|H??#tYSqN-L1GmMK$bUj&>lEM z&p%)PO|b3{VB}0?zxlO6?(%Z!AQAN7NrD6g4DoH>`DCmsvP#Nu}<{&^@?s2o1JDnm}I9HQH}^gK9M-Rqao=~`H}6SIh-qWw@orz2|cF=Nz>>jXG) z9a|&)?qMUp%w=gIGLRVQK=#oAd15}$)xIwBu22f&4%CfZ)<4Tk%z+IpaD?*{k`(0R(G0%~*cW7Rk=x0)=gQA6ItfZIi8^Qe6pC^oX^9 zojvEpx325r4O*GX?wV{ruF2p}grD)ia^_FGr)@<&BUmWXO{5$g3U=;*0I0)DoHD6U zOnHPv=wa4&o6Exwe(p3i$2q1a6Q#_m;dL(;_Q_j12WqlFl0G}yW|0ZKkJdiAgzWfX z@K`RIjNe#SB(a~R$w1*qF%|f%z%QcR&bnHZW67{dP@!0UjRrZMj zmstjWsy}z;H4MHqiJBmEt}!m5AKkiH&^QZg<@ul;|5pFIT*v~RM*PqbO{g;dAw%PJ zbt>Y-R9ymwcQq2!@CPuFMz;7ISI}UJs=^M`5|=oh!UrUY4x4wy$>lMDbb4kah`S7W zKe7*G8N`Cu#0~1%q(Y)@a7}75svRae;&Y`tH*rYGSa!VmKd{x2YKx!j6B4oc2O56( z*sQcJ-evDz?ySFrpf9glmu6w%p?g6|e$uXVWmgISwJnCoe zx^&*b11A?v$Waf{t|}6FSwAl^mK0IQL7lvTx2_mcUGr0Zp@A3bn_&CN-U;rkk?V!% zvU|hQW^W`fud_@J0RYJ6PW(ippHB>O>9*M(OLe6rJ03BpndH$;?o*U)+?5Gd$PLsw zto!`|@cyQkBySg0hk^LvX9Qgjq%+-D^wMxhwdaF1ar!P3;Rw-4-g#ef8m5^D&yQ2y z@z3aTk7_Mi&xqn0p~*P|o6cQTyq&7B=%x=&(3!BeWuKR8Tjzo(ofrCD1fTNHftcg`qZMoCI#S4p^!J#`k1 za?3#ePR{Y&?b_aDB494Ct3Yw#V@a`DzP5hoM=w4u-@nxA=0cmPC|H&i%a%zJtj_uS zHvJ=~>nS(`=3wk8RczC1`S}seI<4Q~D$f(CL9H^FLHZmY5%ryyXD34*j)o9b@`4B9 z+>-1b!+--s_dR_)qk2e7zzP211qUzc_G@UKL!c&seRZ51JBxc%wDK2MC23ZQugPV# z%p_K#r>ED*mZR^j&VJ@&jj7vz~+q-}nCF4+-i9`bfPl8n=# z*l70WkHdD*1XoplKyq1S8(=hjxGd=@N#na7lJApik~1io){{@;qx?EMPGfoPryygW zhBs0AMNi@4%fX28Hc|<03_dolbg6cB~ZQa)Xa=@_18+-YMrV5+3Z%_xE3&}A;waB zOZ-8>ujCuHVzm_pS?jhdfF1VuBts?_y8M$m#$eSY13ud(4`1fpG zqXD=fyM}mXulDx0!`~);C){eZ4io+Zux-bCbz6Jztu}qxGBo*}-`n>ZK4GMorc>;Bw@fymt(KL)4e#Q~};vJvq zu1b6lf3ie);?gmbC0!yU^EBF7O54$tw{~oJk^2weMK6ED@*^*(Rj57(I~4*shxKg; zK_H*RDhq=~!`+YLm&AD8F0CU_K5>tC?qGV;N>S7Ycua~VGJ-u4KBJkveC&7r4o8;> z%FxT+yehNG9QM0Q^2~~L*AP2#Q*IfYtbIS%wjj+{-U&98CbV*)ry~Ak?}b#}G#N}$ zik^2n8;I2l>-^lVCy^HQJzN-i@$M`tCc&-!Yp{A(8CYQ`qoa zuBA3XM0%Z>X#GmuI}N+}mb=0` z&UP@N>;;Fpwc5p}v@hu&)ni~m9bvQ|U|dV~@?_YTb^jUI z#3bjMr@PEC-%FrL`@z~Dz~Lg9dFPmmXdx@eHvm*vdV1`s{rwGc3dy3xV!kjsBfnw+ zDcks|COB27R_$SORtlLYYdK+Aa4BENENrQAn-X?ke1uT!pM@;LkWq7(G1#HnDFZfz zN+0x&7xpgQgV`PIr%Fy;2=vm3Nvk;R%7G@{d%&xaACCv84o&_5(n1nnIkmcv<;H#x z3z^0J26Zi^d%()D7ha%LHWV|JqPf6f^3DE%mvvvLZDssI*ONihR}fU&7@l2j$lLmW zqeCURvGPV`KO47q=D|OPGUl3?RP`z|ox(mpjUb11BFK|T{s00cmxbRxVC%Ti59(?5 zrB311shH8kyY>|p+G6tL)A&AENISS`r1$dkkZ0CSFs){zaU1ny#W&>>mI}T%mmB$M zN}8@=Uwg&WzF<6NF&ZVWNIi~wf7=^>ugeIAX?YR5h>bZt=axRkZECYM?foKi^QK&l zQ7_YGtk0u5GtO}SDAktpJSL*=ig=6mb#_#A@7x~%O`Mvzpn<-e9LjFU#z>x9&ca_ z@X6R#!BJWpJyS0`ZVpA=@XT9GO++$s%OGPuCNo#J`I<|6ym#A|FB;PmX>@o{m4CW@QT)2=cU7q3G(_Re7c z$DQNiZLa>W)~q#4l{_4e>L&8i^>)+C-?eb#_?1uYoeBA}pBT*8KR)~7sTZwZc~W23 zzfD%QdsnUb;`kzdaV5yI+LUj3?Lx|NrdEm7;H0Cn{)P9A+HPBVopHPDo_$7t7%3-p z>y_PQC<#sKhWSVG&Dn*UVqdcBnz`hBrCy23D}q||lKeehwppxCnDnhVA@(KuYx8; zJ%`GfN>$wQ>xUFr*$WN<_CzWcwS*nL4mPb!t3N+yUA@Q*f4?8EwR`R2-L^32FIlN? znlaIFT-iQms4-JeX_}75aBjjK@L}tP^;fZNb#_2WaadZx^l7^{oqKaHptGH-T9|}0 z$yM!pqWW0Mww5#!TNwOFiYQSW_PSt+{Tf%a(B@~uCTKwHJfxy*`H}ssFIA?diC2P; zkr(+**nwqCXIlZjPBzGRPcO#Uh#e&ROfXamJfT`U)54?HQm19@lv=+wPne(tNM?kW zH9I|%{zaQfI*!G_$M(#%WyRjz@u$M`eHGO;PGNT0Eur-3Hx0z(?gX+?RRZ<@Y%QrYGxJx2s1d%`j%t>^}bOqsW;ak!N353;$ za?8ixq%69|%Rs9N;vz@_TpQyct*hAr zny%s?r;`=k;sti3Q#ll+nrGJY0Y_g#k-K;RShkC{BBVAdc_AU7yLph&mzM<_EjbJ3 zO#`RZ>WkcPWlNH(f=n=X0Q&0+X5+YC9zaft?QKuM)o&c8x@wxe3}oJ`UnW`-QmCb4 z2I1!(N7qhKV%?w3CIQi6DtuCJ0>ZZ1pJY9lha~ZdEL*Rth7-jH!M6SYx;2|WwURW{ z+I8}oCT_Lu9vW1)Yw90G^s?+~7Q1U9D-dOwuu(X|&NkbYIaF>ePqJnI4KDI57wS)1 zEq2;AR~xXhVBpp3vG}M^@lC4pK96Z_M@#8@iAS%;;;n4STmzp<+BEsozAIbwC660~ zW>;jav{S%;wDm6s`bf``SD9!lVT+%|js}uP6ms8_a-*JQJA^S{NnZNB==Oy7 zILs}64SL$mkt*e^8Qs}KV64ymh`<@D{>F#IDxH}qS^e-OLN-=GhrxT+wSg0FO>R0aRF|dVoTSNWnwxy4 z+!vcH`%k&$S>iw;p!5CA|HiSxK4A zR4wr7JXK@7tFd?G5I-+bTew;tSFK;PDwHkF~;Q87dWo`)(7 zFvM&Owzve`)R&p0SWV}iv{8`%$>Z3OC&|bBVwtqQcqN~T2;tJ$4EK#iL8@D{{rs_F z<#7*Qx!=}u!H%6ropNIBW(%^b#SymY+3QN2_I+q~M2Uw*dRRQ+cSdF=BEwBfH$r4q zGeT_EkpN1Liz&;9_Ee<$pN_fLE%^qiBb&tL`_8U0mgUH{r^6o~ zkJl(nKTR@ehQ-5A-zbM{{ z1i`}Oq*T?!zY-fi-<$0&-?zhhEe%h{5Lv}z?V#;TOjEDDcsiTo>Xywf@pvcSav&ow zL!q{w5|t{H9!7#c<#w@L!2DFYr9NQAvO~l<-&vRY=0=3e6*6ASo1xDIb0l9B%7v=A z2I#3{Z>RTrCbL1m+n$T8O^*8)I=XSe>nEi1OLXk_rzLpht0yHzntr8?v!(Ds#nK`> zQoV|2#ityP_BE`A^jlx_fY( zn4IO>MNqDecgGUB4m=VlOIDeb=pHP5-TI@aHza*k?DMH9ED~O=8s)AgndtPxZ?BvV zZu@^V}7tvs>@>A-|h0`nKu1*@NbuTlh`8L3Wm(h5k5d zL`C89#2Vii{5;Hqx@-fx{6R%e|3xmua4rwW5##Ij%9gb4Tm@-`w~PLq8Oa%DNBuyx z>Jh!tmT#b_*Yfi@Cx<)DS@q;f0fvk!z4CJGWmA~`w4;P)I@TuykKodMhZ7zi?`Nlh z#7f7ywQGY4E=j&h&KeDOR~-B0$0zNo_3{&=_bqFrpiqQNLGdetYC|3!CiPol&)^ zQ0rPr@pPQhveSIwEO!MW)M2`!-6s2R@eA^X$DBTJZh(T5L1;?1#(PXuuGnI<`wb|% zb?KJ(;!8-ShvsKCpHbJF=HMq?r-Y^7HEW-lz%%zbvIyA6-)&JAXIw>;fy~CZmasV# z?S7NzMl7}Mx$=zZ`1v;{b=pIqNFL1^EpW6}+MV(Fay}Fz&7|`edk4YZ$EVhbdlFyT zwUxbn7ZZjD)_2^0x(ydc%U5KVY7rupcJ`MaL;yx9Us<$Pznd3aV(d7XQWHa#UMG-D z^H_^iJ)kY2dtRM?7!CK@J`-0q_jNu(7KYLQFv>qBlDXP&>vRMMRv5Z74uAdhLt9!M z{K;&t_U$chdjoXtOjX#iYSm(xvsG&a`S4VVFIyA^o57Q8*#*Sz_3q&QumA)!UkDD2 z1b=aULof8o4wOGpd4KmNU;RRVVv=Lb!IH5@XrJfv$vDABE!!J@ICAFry0ePPuV8K! zaowDHm0Di}A{A;u@Dkz`6GCIy#%Z>86{h1>d2+6g%6v^eYUO~B_En_hy$=;6X`L_N52t+ppTwv8O3^^HnPe=MMP;nWHHZ`(iUu zr=jOk<%Ip6d={k=anyJNV{&9J3>r?%Uzr1o*2|~1@s4_XA?}`+!cxiOi#UiImNDsF znf)+8SYMNpbeCc`KD_(+s!{Y?q$nVUXQMh4}wbrb;{;W z+>~~4kPpVC3*U;*j81PpV_}G7j^BRO>i^t~RfM{~aBjkUDr&cMz|s}^k^ zI|~5;*wgtVc|;hJB9yJbwDa0l)Gy6j%S=*aE=SZa^yjEqZ?pddt??my+H~2t7YY@T z_+I^d{`F$kO}wZ}AS6%g^k@bCvtYKxF`naP3DThVbCzq_J}p7!h1tm>hD;n}tjdTJ zl}Kvw2*D3V~iJAzI@JKCNBTobRA4M>2huH_77lhM`fk|D%>IY z{EXjO$!+UlM(LDV_OsI`cE1P$T?mIH$z93ep*7ZS-079XL2SjtFX3%zDASFl$X9O5 z>P98Q21n@-pYfiF_d>@)CyxYiEA|8PS#Br+x^_{0L;bo(-6FI1YSeSTe%KucfnR zWG{VFXRfCD%T9&)8~wqJyQ!gnw%;lB(wwHS!yAjahdilXSFN2pKbMSQz3;Jy4v(~9KBo>dN>`v) zpVmvjaE+3NHS=)pHi>{9oiiC06@IgQnq!9ct?+|OGst$eZ}7nLuH6#73OCyH$yEb$ z&t3JgI@f1>GTfK2q9ihvY|Y2mSLCoFQttVDp=+-fSr)zyUw`hIEVghxV)c67}pH0Y%egDuFY_P!(#0zV4Ogpb@ItTXt8re`x4j~0g>3cfFUd(T;wSE$qbk%E zI?N7QnM%Gq?OD$l7PwP8jckC`Z*WS?cUme78<(Hbdu6stDK@1kAeUz@=i?&3z;ZJS zQ1ee!9tw(-f6nm5m+wqQF!L-y0pBWbWNaaf=)ZqFTXrvcvU4Nt+>8zx@##Vga_n|K z-kxAfhdQatQt|yX5GeUX=_CFPUn*pDXJOM_!5;{=%b7qdv`4JOodij z{pbhm-$?r8IPrL{+&;Mb8o4N6rAH>TdLx=Q|A<|TT6RY;t zuDs}wbG?Ogvt+V`dQd*sb=DwNFpt~oibbIj8Vb{v$7LPbDtw=$`aLenm-9=9-ZN)S zX$^JtRaL|VvPy&NNDwlk3hNJyfTU7~s@|qWB$}?Fr&3BHNXrdmzQq-MOk~Jf|< zU)$>P_H)Q_H*Dq6YTa!0s<4woq7ykxIe1T=*6TT|E>!+C_j!Npo;1NFrbKniBc(q8 zW0xn2>F;}bp`|*!w@gGiZM6i=qB7#iUZ%nfC}(r7M%YUw+cr|8ufOvS=ab6(c)2vL zmp>y)bsS+2Mqo}}yk4!3`*F!5lD4_n|9)n(%~^hEbf~`ZFY5g!ao-9LbXl7a z(;ch_tHz@5lPz@qR-$(^d!PJU9L`-3JxVKMF0+)hohTEwoFM2~Pt1MUiErtBk4mblWUN`1eDg36Y; zd(LM}D_SB*9Lh*Lj)AbqP<*aB8Oe6uTG_Ya<@#T{>vCd8&22r>W<)_M1Oy@G%U87> zVaoWUaAi5XHTtxkN6K8De#jdckLSxrC2MVCvs!%liXF~sDOGx(;2zVyw(o;Mj97WY zx&V9jouQ@^jsmRKKqV5 zaQo~x=5vUXQt8vRP`WN+9H$9>qn5Au0kQYxdCS+GDHaw4vXvjfLuhjGI#hL^t5maH zG8)!?E!x{F>_h&j}=wo0qOO1I;w)?X8*jI>_|3jYB%v_JcBGnBu-c2!c_b6EHXI1x1% zHgObz?pKo#@YTE-!)vLub6Bo%9@89eaUWOX32xlz42oNPAF84+493Qwvywc*H-0{6 zMtg5tZL`%le>e;S7kf)X-tSwvTra3{rda+UD^9aH->jQpj(Rc2Lmy#48wgD;5i`AA zUVqhl^(Mr4?xE41;<~0f+~s@nL(tOT2%*)Z6!2a zUt>Lut(YgK-?@1$G&f@rIr}rMQl=1m`8-iMC8@2_DCmwdRenSnTepYZIhH(B)O)JX z4V5cdj{CyT1$%Wh??J)cpW3=yeN=hIwyMf%p%pl!l2JHXDp6R-SrE+*ps_W;!=aT8 z&=oSe@2+=6b}O zA55jmnuF9%gpNc~jAzj4-ixFt${T^K6i?gh?4^-#slCKd&vUg^F;E0xTDae> zxTJ*WFFN4iw>7}sI<*h@cD|_*Q?LA%Y%Qyz3SU{8D!cQow4Dx{=4(yt2#T+LG^D@d ztNMyc=|F#^d!Nl|MLK>kOoxqF>z0BE$3+Tjk>?~; ze8F$v9E@nH&*E_Uo$=l9g1yiV|2lm2^~_#xuzH+s*&`s#0)KEc`ct9NA<&?vBGN4i zJ}9td09s_0xc}xyh(2cY9zccMh?^?41dnNV)?68_*M#QDU2w@M7YRhO4XYYGsRok1 z`1!NcWU~xm-I-~lGDLoUk(PNf^`9J(dYeh&W!{T&3ahR9kl_7})`zNAovcj=SP; zYzzEhlPC}@Ds&O-7%Fn&GVE|K@sr797a$S^>K-XU#{GyYSXR?+tF+)az&s9+(8O1gu`sR zZt!waU;hT?A@Z>?zvdr+t%;UrrY>5v8Rs8hkiRprg*vfIHPoug#7PYZV@-TsFaoO;gDG50Sy?9< zh{FcRw3L%%K-iDicNA5+D6EchKck}|TXiqf?%tjL913tfh27@-tw(RJ*!iJFzuxi` z^i@kkX}6CF2V<4SbM<)V-bv0*d~tetV2?Y0w_+K0rm9UGoLm4Y&dP9UP?ee>$Qu%1 zE>D}e;Gji|=>xp$I>JhVK2ErB;_HyY!Be@uasXzxgc?szL`P*gQtyXqv0z^{D97pY z)?Z;-az=SjWRt@+?6O)f6{I5H-lHih$W5l?=q||{beO14uqiVuE)Ifk< zd3n~?lt^Wcs^xI#g}C7-F?gLAVnvysO14`sKo=(D3SbyeyT)l6V_9a6hq#LySF+ke z4qeTAGGOkjHd=e3=>~hq5(rsvahdY)&+c*=Oc?Q{V z28Pry1f)v%;vXOg6rbs@{p!t2svcg`Y%5Z4XXqcb5i=Y>jH0-Pq6jgB>ku|u^xBDi znw)wyb>@lBlyaFc=EMr|JW)^3*T{1ye+mpHiFAczkCm#MY^wj|3%9juaosN$Q9h#@ z4pU~fzb4GOIjLNFI)rxcAc^qFjl4eF*%bgi@f5?lZN`2KCpFC+w3WHgPAvejI6RnY zqB*Cl6{o|4AD!#_bEn_zYZzz1_TV3m96gjByf)-ZJU}HkF;{f9s_|*|Wy3UmSq)o=^>WoPs$BU2m z9p2OzTBiYR*(gP0e(cl5*!Fks20JNw_{^kKBE9e<;2iafnP;twd)Q266fi(x1u?iV zKrC$SXy5;3WtXwO{Iao4dYWwO;eZ)qT1~<`zpEZKT^yZOc_n5ZKm&SdPXw2YO_HRxvY>p){BZk+6Q4{9s7TP zhywbQNTJFSKhEYj6+K6LkG|RZoK201^re*3D{K$6 z0@7g@nH@X!s&$tnX{;=z*AAH_9xaV%!#@?6&21X z?djli$v8A8#-Y-2-I*=2h%dgO@?!jp8>x@R>Lay*UIhC-H?A)+bPapeniPt$NY+=x z!&p%FIv6TWEboAJj7(IMkFpmIpHmQm^UP3AtD)9S?_r}-9quibfXVD&~5z!hJgop6=j3NBU9PStMi@)*RAqI3k z7T05)Ul{26X}5mZGx6Zt(|)(N|8t0W*wP5CvCoS4A{vM`$&RE$IszY+XC#rcrF)L? zjLHht3aKuXq@*#;p<5uF;!m5^5}QgL{Tt1Kv7ZZ$cX?asYFw)+ji@?N+^5K{c5}5JFeYLXskr{ zQOsYS2B)XE4A7y{>$yTKvv4&zl$qn)Hn%A$&1Q}MKyP}FGJ(?p&rZ+^aSrbxdUG!z zf2_u`7~2oRV_0Q)7pljVN{CL_>+c_%s=p39_3taTpVS~63l1VbB{w23Kh!AXR86v# zX{wJR&$-(;3P&|W?$F8hp(Sy!Z?5rynbz$N0?rw7M$vP^ZbtFREk_I|44EkkA-osP zce*PKA>p*)WSNw9vWU6aq-EqwG5pK?wJzg92`B7?}~MgUmtZ6H1eA(vTRv$D~?zE zh^VnX_=#9;oGn|yB?k&&dqswrC@MHZxcY^@>{W8O6DUdyGWwgvJ04whx*>b>4O?Yg zh9IRz9**28qQ=EPX+M1MzkaYrLVGv4S#pynM-!B!MX(CpM<)MjhIhC2ImDrtH^k?7 zTEpf9_RS<;F6-J2*KjR2*uk;{^@?>^XTR!KwG5RqX=S_2ji@ABCevZ3*w&Zg;A%ls z*jP-(xVr0XjbdvaVa6FQvt@l0Us{w)X3W#lnzl@R^i;lBw0?t$A?=tk=7E%wb<~Gt zeV#7&FP%c)Up9>iN5%g9-obp8`4GwZysqz6>}+dm@vE^@=OMeS?Om3g;H)Z`Wc%Ll z=_8PiF0uuI*{4-9$71?Hk6`RGp_*8i11t}S*&S0%E8gF~?}W2L`KqB|)^ARLdM3rH z0Jx8DHpjVJOiy6Ju7(9qqBO6SZOH_+D!yE+`(-rwhx}By8H(1iQE@1nZ7Zz-n%SHw zv-Id?W+4(OI&1N|l?9uCATR)KVs>#(&o^mG5EJ+AENhC|9p;+W9&>|sQRxwLHXOX! zyFrr}@MkgA_?2mLM?-;2$e#?cfa}r=`JrwX3`a@2TX7W`{z*PW(KpY#T> z{2=5(GE@aE_VSS_s?(q194Rp-&)5oOEznEwASfJe;^pC8t6w9NQ+QX(y~%Kvx@%Sl zB@Ox#Yna#?US{k(kxoFEJ>=z;_w&rB}0g^#&d!D6kXP^61;@!3t`Rp$~ zFPPjeanr%`C>J_Q*KO|&P#LsM`>DrxLDqa_b1|d{W;JXQ z)z&IAPZ$?i*bxmdIE7#hiS8nVgfBepZQc?xslN1}_=%UQ^2`mO9Lu<8Fjw7&y7QQW zhm{z|x#Qn!((@srN!C=lob*}!q^^o6k^a>(%BY$(D zf>o`CNfG*y@U?aWNqz%!5^yv7LxL>$n}%B`$#ShZa&VFSym9Pp8TeCq6F;AFTw0Zy z$V?d?|I|6|DcQ6myDtGdKJz8hk3EqCIg(!)4aqUJCFhEX$oA{zR^L@-wO<&+O>>RS zXxYbPDd78Uw`WzKB!#E#^I-ME2ZAk*Jl9(K6yt zP&HC1^hd~+faDIHC9HO?;o!s*T(LZl?kZWHWjuHhba8KmOloVK^f{E>EmcRHm!{}} z%-T4RZU-X6v~q(`8@6~`^LLsiitbeo<{>X%Nb(i!1Cfs~7v&}Q84b|VRS!DI;dA)V z_7}B0nO+hw_^(8n3Z~@iv9-#say5}?98;Ah$9luoM70ExglqJ|c3Y#&T36$gOeiyZ z5J{DimUjXX5LW}RW&8jT>Da9}m~AMwDeTlpbq?J+9Me{ds{bX4n>-z9X*c-j%6}3Q zh+Ds?CWlu59==#K5&kohMYvBjU~p(Og18xLSYLE=-`TV*L_ z$S+lfLPx7?G$jH@zYFt#lR^T%u{3r^oS+#z3)|5rsZ18`?8skw<(}MXoHw&&WmzUb zU2st9z$?yOTNGHT37!f_4ko))Hs^U(jKu_X8O!eHeIqq==>q`|SIYF#PFUQ8^RDR~ z9KDKIy-LwTj15Q&@yC-^C!|SEJq$XD2Rm+fQbaxGI zf;>sCfdVqNG|@Maw)NWxaLR&f>f_tRdPLUi--Te#P<|Aa0AW*sXhww)hl<_atLU4H zOx@>MvNLghY;S|M8+S+W#SSBBDWRxFuxr|6xt3qEska6#df)O8CQ8gL%s-pfJRYLJo5I z61sR^4H|YzFrzdkFHi*adZl`3&pye+4R$`HYNOtNM*ba2GbL(#(Qvsbb%SwGvdW#C z6VUq_4X{-Pm#Ybhu%hA^mqV|$6cD$=RC#u}O+SD`0wcRR&JJPhmW_`$Pbot0>~eQw zSicxn^ZshWt+dBL50(GY{trME?V^c8NAnNhL0Tyd{}6Zw6h<$PsPNg?4!`*BH%b-t z`JsIU$l1@Eh@@ruSa*CbDlM`rlt`Nwjpw2g-0@0St>4F%hR^6gYV69N^)zc;lEL zJ~AuGKNJ2@yx1sIuKGt##U)AAC_-tp9OfX%$+m;io!PNxkL_0}HA?BX&RkZpa>hfrh7n5ncN13Qq+E z(G&uyP%IR2=_E?2BhDm7p(>n=AV#8hSg18r4&~=*;0MLMlcDV;Mv03kZIe9z>E!_U@hJ-+&j&vpP(JU4$sEFg`F0Odi2R?DSQxVcj{M>?rH7 z$3@4;)a{WUDAYI4Ivok7vZ?O12qN~@ALZXX=r<4GYHTjGHEl>EnST9_sh?1(KOZin zUu4@Umu%>LX+&H9gyXP#w7TKt(joa<-{a?F0U5_1Q_J9dQ1%`US4SwMp|xm;Lzals zMtf@$Rn)S+J=68f@aN2T@D8{9)hlCM%Oqpcv^AA|Hr*HTVY1lA zM8xkT*LCX>WYC_`P%@fi{%;h%2L&^u&`v&{_hbo-*g-oGoZT0wK}DgJ3<21roHjI3 zz1_@zdjhZr|I6coa{zh%Zdd_(3)eesz@+HeR2;v0-+q}OidEJfE<_oPysR6-)Ab#B ze3MHWE!xnbw2%iCJL5=`-gDFk#WD@F418?jmf{VnJd&b$dxSe!C|-4b@fUtpP`isZ6A&QkV zK)2%&H9=X6`iHtbR63MN${tw)_C3D!n9wYN_}nX5eJ%I=yTT=R(bY6i1BEv!zW6bk z4KpT@K<0}rCiBlz#Gg&~o}|z4=#xjfLViR+B2A=CTfUxQSIIQF&_rxo7l?bBdOWWG zafR&{6-!L}*fcP5B34x^-ebTEK9!5I(}X7`qsoAM6oDrv8FM8BIB?uF;n3DvSHh9^`@ zNCka%B#OWdayK^o=;2l`_{vGS6~ljrEfn0-V?S*fCrC@Z*LXwY86w*reyhlWq`MI+ zZ#VkXr|Rf4soFfx`mN>8*Y7|BRG5h=`sPe)PbWKbsr~0VmHFO7K}s;wb{;C|2BD{>fl^dM6>d#USggYMG@)(hol#-B6yygA#P!IZ4yD zqid*dbyAtG(02Jnc|$r=rJ$Z`vPp04k_s5TWh#4>1NDW0Up1*0nb|g@#q(Iu$rq8^ zCIFnXXA?;(D4kvTn5Z1-y^yvDhb->A=4A`Gks4&#qf7@T`H@(kmDXP3NFD#2wJ(677!5B}-hwuH7c;th4d((Xf!{qD#`L zmMsktA@_KPgY}y0QE%2%Vv<0zZ0~1KoiOz-6>P=G%3Y zN8Xa`l}?Lz@|W?6<$h!nIVeThvs61d$=l}AmUS*j1(4w5rpV8A#4#;M z*=;1qK!RmE!S=Rj-Z2r=Dkw9ihT-p)z%^Lp$hmWx^E=YY-sM9BKlgFSedE}3M<3H? z?mKtHuMBSTKv6>tV>eJv?~C2=j%IsPjSqjWzpK(T7K)URsv}IyT90a@aHO z0+Sp$g3>R_n!LkvehG0Z*NS)scd-N(3GNtt)!a5DYM7oIo}+vy_)?(g>lFU#dqxuh z_x)MW`yW5`bS*0o0q}wL03%$cjl|SNf_BGwXj^S#R-5N`MUrYQ$fQs`;?wvaIOrSW zTfQGDhHR3_@l^VhRxCDScQYn)=UfavU3%lZb*qCps~y|J8n|SC$`#(eH;p@zSS^p$cS^+brtZAq121>BY6R%CzP#bR=K@0C}705lO*j z*?o{iiP4$*5um4$mFYy|GE@#|q?;Mc9DvP~_xw$3ZF{XVv`?5P+aeZ}?okRM8NgW3 zb5<55zCF-H;t*GyWqS2~5K)E%4@pVWSTv|AzTIw=YsjcXkgG(vX_|YPO8#Qq9NF1+ z%;By+C;torExG#|xByjDwxS6TPR}2oobC`}%hrf9aFSU5Op9^tLnT)ZTo(tFyvXix zofxMSJ~FKQOFNb`S`zMQWTMfK4BAWaeyhtZUC2zfBkh-zngVqoOI(&HWGnuVARb7c zhgt=Sa?Fvhr^+)_x8SDvRbB8JZsya$VFV0XY$S3}C=v{p`zbT((=mH|t!i~>XP{&2 zp@o+%zYTaS5(|k;gDah7GwL-gy>A8RZ+p4=GX06g>5$Ji6Sl5GB?w+*3-&Pu@Ok032aey z%cgz@qQO&<`!1pZ(gke)`c0#8^ya?&o5=e*2a=h6TS7iSFU8P=d7j_EndD6R5ervL=V_ zpwvHryIl>w8!mz?%eT78*nQj=9j|knw<;f^*8v|3z9IWGEjErht<3Q4ig#;2*W~6R z*`7R|h|t@6kNktH!f`7XkWL~BfvRef?^i-4-HRMjYEFV%992UQbC*kA-%duCZwTJ`2L&wah^K<+fZ-`-t-X(w9 zd%ktkW-r1=Lv_)?gF`|@RyquI5SK^}FrjZ$;*pZ?{{=1Z@ikbXeX)0i6l@Il5aviq zTQqz*%nC z{;^R&U#uM1e~a!8`@u}?Y!M1pG9j#q5T-@7WH_X-i)U%!f)*f%^wYhEme8Ez(ovZx9JUHsMFR-LU>fFY?-Vx?HPa>EXv+--ijakd-* zbM_FX5<+`GzL-PmU3WTpt68M`@u)mi_Lz=So!b}Jt*R(Y{Fo=_=4iH(JJ|SJ6r}T2D0N|)j61&S;OWKX|CdlYTuC_&LRfOv-PltP1 zBO15pKW#;cpcST(jYiD>)>P!pI{tKVj-yYMyh`Jl(_#W*p6 zN8k8P3pG`Gp-o=CcFUJVhx?6V9}1R}ZmlugvUB$m9`XkVRS!f+_L*Y}vY4a{BdeUF zz`x_l%>ofCmW4zj+Muhs@@qrw!b|e_zkwst1C;m9$SP#W^kK*`ZNEJi?qvMucn-Vi z&z`n&t%jBit*3Mw%>9@g4`d?m#aG~suFjYf&KV=L1(cF82$)EPhFF0& zm_+WDX74HCffz?NqTf!r7`)x}wAvf0b_!3{XY>{dH&B54FXP-b{~FqC2)Vue%IYo| zVoeM8aL-p`d_0$Kg^6#-C>?9CWf=cG(#X_IZ)b<6W9b{)M0L4QG{v#5Ge(->7WND+ z&-y?&QrCXe*wq(i7cR*2R}Qz;#?AeTtl-$c|AE_auVxqLq^w|GUqSJw?ly5K zuG&L%mQ;&hEKmLfIJB2Ja5MWrviO#RbboaE4=^opix%U*m2%FnWr~RfC?Y9&8f+Bo>l2a%Np7~o z4%{##E1NEx*b;d$$`ZgUwdFNg56v8E;BVpb$ul}ut2Iq38f`BwE{aE{wLrj4$(a{h zI0OAWTur;EO4An3(tOcosyipKTWxVjeQ|m+^DQi7c36r7KqNAj_kI1PyN?|i-PSn) zGl!k|qIPNXT{KojYrR5yRyiAVQu#9|}+m3lJ=KX*av^f_~WgGBj&CsH1NN(|@x}u?+Jm z<>k&>=Dw>X3rUhTYQQ*&<&?XbKbe@n&xQ=uHF2?MmXAwNC&ae`>&QB3KmBFl{`qZE zTN2&-OwAz#Bl_o`R?NC<(WBHDADf!5>~v|55=dCX5Oiza?5@Kp#Y@#t%W zzJPYXme(VpyD9N$1kZkLS+JD4$bNfX5NMqiob!IF;(|BmTD@1(GK1fxg`m%V^L40> z_fJoD2P`%YJk5j-BU4Tn9MK(kP;Ask0+w|+$_zB%7UBXaZY<=Ft4mPB)aMn_ifZ?U ze$k1SoFpbrBaD2*Mhd=v)Telq6!%JYBjDZ9>wNJ8u2bLv33Y`v#g$=7#wx1-hwOq1 zbf);ZqP3R_;VN1?g{WYOJFh<0GIcQq55$>2J*ZrAjV!x;vf4Opt@MX_ z-qKscbY%0e8r(lH^l(p(aK_p|YTGy&^gy~Diu>``1fhV5&^3$4$O4379nNf@82h}? zwn<&|&Zub4=b1p$6t&UN4#~?=zaWQBq`xy5P`TRU)Wk*sS9Z@izKvQalaaVshtSn{wf#( z!hlPJ>Cc|N$XwsYZWiEorsi*nM61-9fXc?V9Bvn_!0akDwoj7I<*|rGrwGByt$w(OdFWVwofH-Y!ae21?z(p(r07TUnMgH>&H| z3!E-g42@X691Vs`MH~-iR2kRChBKog!?G^<-&`ho<5B%7K7Y^dCl>)?cXb8O$}thg z1^pL>BhK(PIt4=T--+%q#M-?^Kh^uM=@UJ>jV=%rcB_cJrq{06C|J*#V)_Ygm{wWb zQ-r8>qc!${^MH)N1FMWbDE7V`C5N3y9d4&?=@;Je>%RIlt)i$~$J%y#Ir_~%=LH|< z$@yt_<^b|II)=bnbSfu2S z{-ZZu>WPE`aZpeIUQG2fp+O)B95@S9b6hF#;hx!gGw^4MYf*i4Nu5uRi_^t;tcgwF zFYPN%OG}3UA2;G3{4;c?UwwFL1z4|gN<64OG3aK`=;nLK?NewobbX=^fm}&hiJ7?l zk@P>EUcXn3So~1k)ad*X7zaQV+s4Xv)%6_i8)MCom~@Jn@LfljONe;YaTU*dsO-HiU!5O3VB|Q5)2r4Zynn0 zj(B}UehWiQ>zioXCwBPRKFdrf<&0KC>nfpk07pK`&Rlz<5>3MGwV?AYFi^r^v zfJ7chUv*RtoQmUrnr!&;7eETIQeIE?erM1O&BC2)8z)h_sW(r7(#_DCt!{VVyh{Cf z$gw$H-T~Iz^<0vO<(pn1TWYO|eNp^s`*8^Bj*5*o4Rh6%}r@GgBENB6s!Uh-AzDC6zxZ$ zkz41?n?P4L4>4Gmp1?isl-xr?y*Hlge z(1DVxAAi}AO~bMu^;oFS&!tDcay3~*Vwp6%=G&;@@DrqTY z)luxN_@w0=i!u3v53HQPZc0Xl20?#je9}BrXm!Ce%~aQa-GlPJx`a4ziOonp zodV8MXa-D_!FO+(`$o(Qxvc)A6eKDkpH}Sewwq|3s+V*iaM9stqm`D@vt3s^?ZR`3 zBH9$tI~QzRbB-z50A<`~9{qGNkS*@Rw|`6;0~++bA#-r>R$4|eEC-YHY-&F(B@JW9 zFIr@hsVp!Y>qpF%y?bH%Q=}OmzdC09WwDN27{hxNzL)@MvM-*^bO4m|4ggr_v7z*` zk)nJaKhQDF;>e!|cp0Uz9%y|ITB#&A8GX0lYd*0Dz0-uI_{eTr1K8n{cbu6}yt zq`_G@3b)_dX&8ileOD!@!&<%Pmb4#ZJD?lx4u0iPT0GjNyv4<$CY1j@mKe^yKNfae zP3=HP(K_;2UU%zP;f6OEnv&uhhBQ=DAVG?)L_hy#nnivSG3U|DEr3j#kbv~+*E$^ zjbijf74~tlBWhqkf@z*kB^Xqr-bT!vzd~>5lv6gbY2GL!&D1Tn7xM$KX6jiJx_g`kriUV*>s5886qND11h?)Y3-60{DGsIwm-7NmMFqyD3p^% z_7Cvlrz?1eDKV#ei0*TgWMr-Vo2qJHa$|w-Tnj?DB8R$(qD0+JH!3-EkQz4Uqm+MI z$I7LvQ|_}{GOZVjM>q@LVqSD;iLFSMAZKQiOwcVjW@~p#bh!hzWMgIQ7IhTer8X78 z;m9(?Jbs;JvVGF*8@TJVnj5hapQ=W^3T;vXANH7SX9wGhOPjknvCDsenqBF;7vb0B z4N}6sjg?bXT>XdhdX6oKH{}U4E$P8%NoA(+3N9NudTtpltSVo{eVm6p(B@cgb*Wzd ziCnrF(Wg(6aW#$#FL~U_Oy&ut13KTmGM+DYa)0Gt+k|N=xT?H7BWe`Ea@!KsItOq` z@EfMVQ~YXApHcZ^{eip<3#H-I{{!55yjXt1H&QQ4r|l`%6c{&pgNW{Mp3cm6h8PXvsuSTIG22DB??E^(dAW1=6vV9G2}N((oR%NsHwwt=KvO z7t(0kH61Dti`TepC7)DIEt)mJ?M@mg1+uWwl8FJ?hE$%5aJGB_(8zjD`gOWO_u{T{ zCpL;yFF=O{V3JEK5}XZgRajoH1eS*YoH@JKI+<69?`}9cc&w&^ea_FZ{mNO=@N_+) zlcK=zvUFx?#b)Nsb+6lGccJY{s_Gu$FQaxxyQK!1G#?mDFFPg8q_-^%*FQ96)wQ%P zppZQd>|+tr2Hbhtt-8CwP~t|pwAU&}c%I>kC91y-?5jq3wwatT!_y#ia&SgTe<2*prgiF-nDT3q-?7d+fnpJ8f9%226nPiwlY_9o5lL%1vWWP zW21QI*SUO3Z$E8UfQ+#WblX;n-*{1E;Vw?N@)K)Fnfbq$Vc3wvXD=ji)6m}#4 z#FNw}P#6WAUjhKPbzR|H@(G$LHkYl}Ggtf=c~H|1@jaYS#eMhG!BeTMm)ygIebwgL z#m>S&>g+$S`|rMXK(QtsTXt33YL^6Y7h4=@#o?Nrcid$~Ms^<49P=@I0Vkk#S?^8< zpMfcn66f`^m7kgPPpsDWrzKzFLJ1!Amen~_-IHPW4pSx6`o*Z~mV<`(^Sz_PS_OP^ zXpJ)o`AM$d;P@rqX{-=th_{k|9jOa{9$1Ewcu?F z{RvlfTco-Qwd`R12RLik>|CZxe8}vzI95Q9cX(xOR30v8R}s-bVQQ~Mvy*gU1&Ncm zRn6>u05i=v)2Q5Nbj`LDEjoYENqv_5&CjUH@$6e`e=whg;ui(}>f4j^jmK*hJ z2+}!WW<1qKd=+-WZbrajL&J)tmIhu$OvSu`_f;?x^pWTme3R~37+O>n^AxE9I*$9y z#fdX_tAWeQ5r`SF1gXBeL?&F(N0%p&wPSeb)Y-%XDT=!;54^QyKYVdF{51FvK;z;y z)jO~=F4wR4CA?Ye>tW%?*ah=P9VgTRKg;P9{S;NYb`e}}7X6JWgoW2|{4v{v>Tx1$ z%c<~f^D=1m=(Vt7(vnAb5Yopz+|IvAk(;=O)1+KeS^zBelEyd`$;5~QlKHhit*O{- z9YXL1Rf?N}wMo$Ty}#i5<8J$*ym$#>)+~K_?@%<&H~~?v7VcS&mUPB<|2D_6smDS{ z_9U1ETVe>f-_d=FFHV3QDQo%!Fgc<5s(Wm|OWO5eWum3I%eFD*$CQ#p!0CnkWd0)g zWs?v2m%J*kEJ&wGp6c({2L-y8y{N`~2|tP~9|T#Tgbn~Wj94tr*DiVb#@Xflg5pCd zbu8T1w`H$h)$JF+Qy3)wirrLVZr1ge*P%;@%rY9=X!F`5+O7xCi5h@zVCUQ%pw zXOy-2t0cHLUzatu?2&{GacC*~=oYsyf5Uge!uzV6{WM!?kq7&^l6+{$*84gI1G z@6dV;?IxMli9$EVarwk7_6Ox+@x>7;?j2@mL#@p!IS$%$Pd?ebTYE=k`-`5WtMGsu zZU=RvRaig08FFHyazAr!n&%7fG0*|ffBlmd1G#(40lwb%+Q?3~6af4K{IM)3ldyCZ zF}9DB#QtF=<{KL|>e@ExMZb30PV^MDh5CXgM?W7|UXV~~I;u=&xpPGRxC8wmQjvbB z;K+OGL~ZPcX=22k7ZJ}_MFQ;9o~8wA?_Iy!ju)BLm5?3VL)q3Fw6 zw)wfZNxI57%$`hBTK@o?xTW)tQb?5Jz%3X#DVdb~NWAZNYAMANpPMThlP7T=nj&>@ z8TFXe%dwihef^T`8@K(ahO@?BEGZLm5!mzPkM*T(vP%zpe`m)PjCzx%fx8_<%d{hc zUL&Zu7nN!<47kTX4j08w7?fSalNvPS++-%felEJ*J?@gS^;;ysAceVNqc@V&OO9fB zQyu&xWuu6m=Wi90#9_6$z2*sm48FEL*6Y z)63+wx5+byViWn2Vh62y!D`JpmPKG^XA|c_IFx>T^<9XKFGeI`?0UiwIGob|rIz6sWaVq=zh1SA)$*b0%i_#n5O;r)3Zhcs7 ztobW4H{{QVVm?M@O71VIm3X|$^Ap*4D_mq^rE6+6Ud+pry8wP5BJIP%khmG>=k=uf z1zz0G*dzMLN!mK!sTkGV6_^tX)L)0)sVTy6za`7Zi9AV`m(G4wsJ1+(2q<+|_nNV_ zo3JK;u+k@Z|JdG#aZ@V;$K8XO@53ZNW>Q2SwyZqMl(#+%wI50+6P|qa~8IE;7UF2%|2sJ%jGyenZC=x9_A7~ywig_?A*?*ez(Aa4v z5N&x|xLv}<(%oaS*?6+3{EJgR*}r7P;^LUnZnE!q7m|M>?-XF2I{3~&I3S+DKdWuw z#3OdEt?lRX#LPuvsKRyYGDR9GsoKKpQv2V@L)iT4jg+ZOSKl{UVi5zF%^D8feQWCN zrDOc_k7i{$i>9v~TeQ5>3e&T?cv7?|rfA(ck3)O8D?fu zWCN?Qx*UjkN7$75^V!dFfn3`;Sms%CEYn6|th-C7+t1i);*JJ$9sTDkC9!*4olJbD zdGnQG2`qbKOj6_FZy=$>C$zZf-~`_Q{$bI|==L5c*RccUuL8s0A-cS|gEG_HE1cHR zTCJ7fU^lgnZv3>T+GeTJxpp>BgbE+p6^33)Z2cu!l_S|4GG}y zn@AGBB{ZyeYS`Ewzx>I4|Eig~rh)IKc}s^oZ_HtDvweLJOyUwGa;D8gx|t+8vT)h! z85rD2Vvi9n6|DB>!Ut>OrFsWnIOj0(G_o|&--Z)9XTtE3(gW2%`+pnEk|Fg{s~IDU z=h3^CeXm{1@SCku)&*`?lk9>O z2#JS_vXkYG$C6?qJS=~GtAYdHVbHoYy|TY>5|S+QHElRr+XxZa9@rS<=URNdC zF697_xXlSudQ7`OGaDMa-@bB!q#mcca!X~o4O_Vxc#%aXvq361F|=bQ&hUUc()ea? z?(zOe{vStY9oF>s_HmR(2`K>q>6Gr2j?o)ALh0@mnr89fX&bv^K_iz9dut`QrZ8id)&ertxT}tvB%T!)~CTyx@pmx?e6#TW;c&mWyIv&pS@Ku zGxPj6qD+sMb;aE+N!r97B=1h3X7M%)HCgI|MQLYCx5{m4{Rs&d_N(?|$}|U(rORpa zq(piN8EixnwoOOmz4b1bI)dXvo2C6Xb*$TDqGY!8~DZmA)+MlAw77%=t z2fnDwrW&ya2gZKDn=10syuY&2+4}Rhk8N)TR-oOPpL4DuAxI8_DwcfWm>E z_|0~QLV1IGTf2@zgLcRCDRsSC0bQ2))^&h(2pofr$s9-K7<=j2@{X`QvD(OZaE(jZ zNqq3n05N?0b-CuuMChK%41d(};<&&ptTlyfJb=xL_IHx2)BAAk;X0npL&?z-dAjg7 zMP|}Jj3vpkXPVktUreodc$4(Gb%uS!ry$I@B>BNwqwXe=gV8Yx~OYwS7n{l|S+)S)rcYs}gL!sVRP zO9xBeU&+4PzIC;l(l|L(_P@fH;iUQI&W`JkchnK;awhRZK}wBM#2O>-62eW3rgSY zpLwYcz5L5j@cV-GCr+iA`$Pg>3!Y%v`EzhDkgvG1%tNe&1!hXFECtpc?&$ z7DHNrS2|Ryx9?I>A=r99?cR}=5rFHhRU)o6kWwS{YCR`vx0QRD{covfp!Jr~Jo-b{ z52v2FUn_|>VD^oqpF&SxRy=;aR|7QNeQnTpU<*VltdDO3wMW4!K%Gd=l&Uf;3~-n7 zU)l}b)%pxwRMJ7wTPPsXK?i(YuSyxGl3BgL9P&^Zr(Hq+0QwbF$|0x4r>er_y9oqq z0`#Ebo?NZm6ROTpYg!ycYcjaF=p`uqGEEb0@HM?s&8kq1>F|IH=+N%gSqpI^E0+s; zMSzJun*|i!$Os?VK zGQstBywi3IPIg2*#x&%zYkqBdvu5#5 zBx?P+44F1d^*|NbB@*%THnSWt#KU&pZT9O*2w8GZVHh99iml z2)unX`BQUP=>W>X^M=}tr|-ffdtpm;%*--@fYHSIb?mZEqtYKFnJ~DE{nOt*w($as zt&Zxc@m6hZN_-LC@t@-}R+$h;8b9PQ@oGC+1Afx=!ONYz42=KLMe@&XJ_To<$$6h& z?Pk53EbAD9aOor|aqw20*oVLkLc40qOe2?{<4*2&Hpeko0vFeEo90NK$i;!2Q`lx; z2=lzRWary`3FCSxP&<#q`Z8R%#?wHdj7+nx-N;D5&PT7u;O7P_6pSv5QII~inDf{5 zWifQX>Bf}-U5$F#ijT<2y0kAWAJwRW z{Og_r|3Xv#DYmT!R<6f)@w~2o*V#4y*)3(gOO3?JKJRU-S8NWS|F%&tDxze>4kTN(v2c0sf>K&DOoYEgU*}_QzShQhIE7^~9&|`6OKL{~ua? zD^>f+Crveu!`agSTFgaIJ+^MbJq{?19s7daU^lV+&h_hfPx)7urI`ccs3B|=VQ4x1 zdEiWnEBE6T_#feqrSCF_I5@xhXvJkBHzVX=(v}xdVPq=IAXHVth|Vh<1y%(j86^v{ zkTM*spluXdIkuqCO1k{W(f6m2J zADzHt{ixfvK)vPacV6$#l|EDxU)$m8tlknuiF7a*}D|N9u2eP=tZ&wST_&R7wnRwS|&cDiPH3m#-_V1j=+j` zKrRs)u?$`Aji-^9GY1IaNqyoOYT|Wgar@+PHS@^#=}$Q)O&_@3So`WcXZdg5&$>1J zAt9_PXa~ARdv49rab>o+qc6u1nEzm3;=B~48Ewzkf?tl_CZ;elVmv08mJZrk{3x%t ze@P{?ViIkyZ=~%FZ?lAd%9j>A)%wMf_e1Yr_18bDIe+ms*YxC8G@7-JyQj=K=8=JA3D;Sv4^a{k8~|{ybUN>?BBDSENfvFD7k^<{f`sXA}9iqEMWeMzK*f z(Y(XPp9$XLO$DbuABg)iwzjk};g+}g?2Q`-w13Qu)OCl(itTeQIm|m^;$0*YgU!=3 zpi0Et>2EKs`Kmiuqj#fe zoom#lO?;aMzfFYz%c>%OC&P7S^=O!fJP7BZ-E$??WOT;Fw$9;|bb`$|vW)~72=?Y0 zLp$P!Dmf^kWE4x+;naJF;={XpRI6Pc>F;CtrfM*VH$NsdWeX*0F8`a`H%J6(df<^Twj|zr&q8>AhB^VgLPGh_ntl&k#jeD zT^N_&{fG8L>Rq_;_ElpI0yziIv&op!fo1Aj*EBcGahzF{Yv-GDsJW~TxTm^Wx9*cq2Xt2#MHu%Wqn9isuY3MCTKi^=ngN0K zM|?RwH)kVfmdGkMSL{~b_{Tcpr$P0$*84#&!n-ONVc~=$DM#<*u^$ON$4lNjd*U)5 z_mg%1X~e8box5Elzo48g5cfQ8-}H|15G*$DD}u32byHvY;{tw<1MA%*5`0EJ1qD8T zTpf;g@&!=O72;&o3Mu;3|5dfGThbG~N;+2gga8(>;!seWP}Q_el|LBexM2s^7h))+ z*UiuZ9@ZA$9(L`^b-^R{RO)9xE_SQk7+Bsmqi|Cnw<}HvKivU+|7qqW&mHv1r?gj- zEN^IV@-I=cR@lfp9_Tm^l5%2??kHoA4p%#OhOrC@!(bUSU*^GzyBh;8(t9mKi&xkz zhIq!D_9houBfR_WrUF~oG%E5foq^r`~C+YgloR1zxs0d@Fd81R%t!WBW>kIXq7@@&?U ziCCjD`_57VTddP0*6x8$ByYR}wzIO{q+pEET{ETy$t^v4`H681g5mVdXRhV&*d%jRAGETKnu2FW5M#{`|G zD)Kw*U6$)?ZF>GlOK{Je;zfQvy2${cOQb_Z&&h|Mr%+?I+7)}MaJ6bb$r+ugy6DBs zy&B+|tH%f1pWQ_p5%y8vpX8qpmYsY55`K#_Ccp2LekOgkSuKQHb7YFgpBk{aI{@{f zsevK*jO;4tP|0E8dgyW2`8Sv5vz953#Z`9x9hM>%D;nzWs@HFMW*#0B3s#G93)7u! z>Un6W7YuAJ-Nx)itj9!cZIQAR+V+4KuhAFZDf#k zNvIK*1UJ2y#-|>x<#kSzH->iL+f29sx>-Rzm{g{|P8-sy?LMzhyIYB()?VP^9O66# z5GVW|Ib3m~OXAET{12^*>*L2i_k2$wa$%%t*h|_Bg2NNrJdN*Onb-$LlmHua+=1MP zdUl~6|2721nI{9vNSyp9#4p5}@>E=@$JTv9oz3*_;$xvbx)%<%bQ8Kz`d3@vS^0+a z-Szc{^dY78jtP0|Y}4mvwJ4Y3K;w9e%81cX5&pZyc(us|73aZfcC$CYUUb%h-Ye>{ zo#qpwQ`2my5P+5F?4i~ZNoKDf$#&1%tPOqE;t0ayTU5M4jNPuFZqlH;9X=R``|ow5@1RNFn3N_ zU*F>lK9a*dZons?BbIo}w*|3r7P+%{V06$2*LMI$7=);w;HQO1T9+5QMOQEi9~}C!{F^F3v}ejLY)n25UV)3I$hELXTxZE zVOF~bBORe#G<1bXtfdR8Dee^**URH}&Z&x6=mSwn6Wat1uuC`t0)aUg@Q3-!$uJEK z98Wpv|7&PkMMW$B}It@ z11(?2e_HosbCUmw<&9HlSCB zskjmG4e4pnHzNxp$ZKWe&)oD+=~M>3vb6hEe8i8G~F{AWH2zGrmzD5TNlN+JUoL=wH4QsgDnye52e{@BS>AQ3tGfFE7GP z>XAZ%49UK8Ccr!g|MF~OIoduoPqqUfl2uBqj~bHt#J8zA**c`oMSHb=ryu*%;0Je%J=aO;-IPGJ!A0$jg~rpp^f^rIV{`@Z z)X+OJB~z`fn9L81V_{X3Y zFqUa8X3xpT^B3fCwfxK66=M4LZlwx;33<~@M;5OqM_2?F^50u|So%N1*9plBcU0Cr zvec$^9qL=<8=Yz_GX6uWQOm|l8P&&@hy%tab%sd(%_y;~711g~Hmwbfcfi_fpE4Dz zxPtnVrsOouao)q!8q~7+ZkhgAI{4`I&)5XwT|0D;RR*nK3@}4$5#9W@4lcrhh-_Un zYwRg54D`@~Z6&=Tv2PS;-orE+S9P+9S4+js;{i+FPS?iARi?eX9=qNDXrFa5R)uFj zIJdV7E>0d`<<5W$tO7}d-ey%D7HD0l)oQQZDMAhs42R?TYsq9;!=bmm9)$ zJ5DzrIr;c)4mM=}&}9;@HLYq?E1wco<$N9{+DsLC%y#pInzV<$mjj)n#Pf6j0Nai8&7;W1Nj+ z{&kN!R1l0;Yo8l`QC$U_iAx;DTu;MjWit|MELuTUsm}l5#O1p;AN=kmo zIEz`WJZO`VT`jcUnyxiVUzP)qR-%PM=bk^>u8B2GQP|4fahTOCy@-P>KHJqTk%>Mg z@;0{e?}mtuqPCvzr7s?&5K=#XT>QvSU7!S?5yt^fJdeRSg;iXJhaeK1e&jTk5 zGCgJ%Y5BvNtF*z_T^>@dH$584pdQAWoIH#WI=|#F;?HEgY%j6x?O%RJGB3E3>V1;t zl0W^s!5FSM?x|^XyIi+8I1;1WGEY8EI#4e50sxk!7}c`dWu}dm=~`0j$o231wo@RGiOKJ#regHsLrH2{)_jpm!Qi%~ zzkTv~{fu_~A70(SQ=DkKk9))Vn8vSx|H|Kac2F(w3w?S^>G8FG)$h?rPvAAJ)rrhj3V$Iyh^ma(~^BM zHWB|?Xea%twIHd~72A$VV@pG}-va_m;3H1ePQgxGy?4n$ zNjh9-Mc82+KNg{J3+>q5c67J92z<0#NHWU*J$d2_!js@bt3irHZ2o^}*?RAxXm0+^ zi_|gmwb>!AgcG%$}>Wz96PY#zm?+*c|hw5YW4TLXf>7Q~h<{2%opFiNP zU~QAk3wX&C{3)gQ{vP}XbUga5($nZFIN!4B>b-sT8I!F)1 z7*Y18l|FrD<=~LEN{{K4nA%BhHvKI;dAThJBV0bP9w7GBpt2g%U3H?4@H_sigI-Ux ztxYL9tj;p!Ojh|$4j%cJ|2d!|v|4iH&rdw}58|*XC4*L<3#AiDeMI*O|IZD@x{f`5 zs;K>6R!~9L*)-zQg1!eyx&P3j#P1HLC9kOz{zIcRW6y_e;0a#Y*+X=!FUQxIKb%Rf z0lirdj73#I3k1S|pD(cNFwCze2O)!{Dj$SK{RX+4&?f*TI=X{hoA5phwW?A1Gg7$;gv*{hba z(aJ?Y49C_WaW?}&@V^98!HR|#+S$qvm#92B)1noE%0)qJlIjC}*fUMk%|2F`m zde#d((zz$U%(4&KQk+>luv+zOu&&X|_>j!-GAj6bmWyp(LtwV^Wo|{lN6Q7+ghw*Z z_5zf&-3|Gns{LdGz{*seRza-Fl(TBlDIW?xM>ZyK2KODR6%X)w+m8;DH~=I5%1R%`p&vAnSk}XG91tg|!T5_rl8kzShrJ z)t%mU^~IA@>sO7HG@UL+GbYu{6@>PP3>kSGgB)kN)Y&v~rLh#8K1$lp!_xE4krL-h z%ayeA?_A$itfetdrM155GnLz{b-`h&Y#M0#;^C+4uHE3)x)@)s>Fud;nkgZ?T_n@a zHh+QTpc|0T#^pEaJfEUVlC^Ga0=a>N;RW0!-QMMk`pm)Jo(X&Rd|h#XTGaq!oFM?u z_Jj!75e=J@KN*2*2w%Zte&4gD@gA%*@D!0JrPfh2QfG>QY*o*wZ-4gth1s5fhGn9v zk4F82BGIW7b%mg)xMhsvK4?;XyxBr^vRS4) z+P~0!WqB2xvS2m}p5b2xN`DJU3cVg((l|LLUtorx*}Prcpq#MiqV5{3;LFXd$vDMB zKj5Y}l-Il=Bf=v7RzAlfu(^m(L(rtJY8oP)=5ycq$JT>@#dx4wIA-V^h=iMX58{iK zlA0b7Gq&)}BNNvEdXKAAZ2qu_JeT|drj`rE1Ek5~sbXVL?<)(%TK>{dcSsz{EH_pv zK24Fh9tr%ZzqUfyMb1-Y*2LpWYZ{-}#na7DX$Q=VCyW)kH>j2p&{kjS4pi0FK4s43 zim2CnuudZ-CN1)6%cwpWLQhIf5=FUGv#t94f*BKxAte`DrEIq9)HQW^-r6Mtu&l}Z zTo>~NaOCSTMS;7aDgZUrVbzmviHJK-KVL`h5dohy-OhB>$&QA5vdKo*nAqC3U7@9) zTHZ8ZheE3j=UUKqu6XCZvK9R;=Cg5k!!>tf3&@44oPR!^?g&K*L`=kc%ZYAF6G^4wAGkDwy$*b2kdIr@Z_wH&?b=cd)of;6Ugak9-f~wF!pZg3OI}~bXdf-IN=1ADi`#Y(4y&ZQp2mx9k=Dlr1BSeZp)+f`voiWU7WY0{bS`%sdJ7-HPqPw{+Mi-UZFOTUYW2ZZgf8aM#0b+* zS`Fiw)b|_-=H=fLwg_Qj^+LuywJTFkSthSEgnRUC^!5D224d2k;iAP1MW0`j@_q6w zI;DsN@Q}$CP8oMEEs49Gf`AJS__T+PYetoi6c7KHQB`l{I!zMa|E@DUcKaeP0c*m# zkjcUZ{%2-(s9vG0J;0F>sn7{s#P8+#I#R@eRvwT1$pd!{^ zKYbM+5kj0IjRMoPCo2xG`NIXz?7_NenauVWY;RCZTO8@*BUj@>_4RP9yZ~pQ#B^yLFdoui$+gWDbQ2K`g?C& zdu#UK$l6y2cz~2Ll~H}Hy|b$d+?LKjts_(9m%NQf=K1|^Lwub{DI4N)M!Qnk?+p^* zZ4pHkIA|yXQOePAiS#=^KmW^@r}^E-q@3Ye9H1-qlfhMzi&mCavPCF=GQBfG^;Av_ z^sGbcvKdTmM*GC*4cL4e=TfMYo92(oux|=XRw@^GV~*L|%w~s3`RfCMx06!mKJETH z{8iXD$T?rlQ80leJAJmZhr#6x%UUv;zXZFwY>$ebzT8$qm<7Z`MV3aO0j(k;eD3SX zJ^Hm8(=Eovmy=ALyEiGknV3vf6WQ4`eD6^@?f$8JS>J5Qj94;D(P;{&T_GO#0-Uz5 zm+6L_YkM_=B}`rnbSwdDFMdTTq$dEM5&<*5Eo{SY##NL^l}wQ)IqL; zQ3%}Xrj#Cc>{b-L&K|Mn(0BoX!=203Glkp7)yGE_9k$PkhRkucrDi$W`zsPOzxwqG|{7i(iNhByv3%Oyj>Wf$o0&-igw66m1i1pOFVG5iDj}>q>CsoVG7;agPzSWwuF0PO@t; zkB9}Z4$3LZ;GWx-2maIh`|jDN{wv42T`MHm`j|X)*-PGD;wzlJg~~hMQIB=K9HbOP zI<3x|A$l6iVO$?jv#kG3w=_I`UgT_U72%Ne_(}rc0qM`zFx!V|jbpM>Pv(A`H5i3f zSZ?wWBHjvTOCRaaAgbmXyRcdl@V5yQaMeO}8q^#d5VfrZR95$et2fkHKT)N{J8E-L z)fluW+t5gQ$*>s3*VHk7^dNM+f;Y@e3UY67`{}~ai`gPSvxT9_o}$`_@@J}!Xa~p* z$-Ou>CoTFUs@vPAgF%F9d8mUyf!!8HFG_FpQ?5eBi-k(6)UTR1m*a+a4wd3YQT@DT z|DPU+g4%JUyj0d9B7LncM^a&g;z8$}ETS-B0yqjRSh``dqj4yt9Q$B+cuvIFPFe#a z9)Z&57zXVcS)xqa(%1;#>;Dxm%MXcW)Y81hT~eqHCnS9yL;)qWROIM!w?k0SO9rAs z)DM!Zu@5jC9jmkB=*eOzgemKg?#$QQ>28l#6DV1jzv!D3Md38r6##lk(Jcx@5prZI zR-EJPrDn?KQIQNFbPmWHTommvM}q`)8LTMdAwaq-+c$}$N9<bdeb75f0a(XlyQsi3%CjtT?O|6U)R1SJ>1(jkJ} z;^Z)pCZu_*juHLF`d>ZwCMjET22~Xns1FTQs~v&jFOu>G$oDEKz1BxPp(o0q%WJ_v z5*A}skOY+0Zd7=~o{=Kk7ZZiS_PHNLJyiIg@oOkQiV!G=>LL`uk)Br!^-Tl=$^U=q zhU4lNwG%aIhXhcdxPy3w3X~|8U^shPomUhcZ4~NFQT;^}11xzs{TRmZzxweA%Tg5g z@&AVfAo?T7K&y}MH)3mf=~2S%T5Kus+a}T*mAwNLEVHjd0R@@4lIP9ml!Mjc(b{u> z6lJr|DuZ9rO2e;0BPK=B&e5a9rSjImNC9^sT-^NmVuN4hj?0BTa$(3`D9PuXa+I0! zfbxCV$2c6iB=cEySf@G;s(2l*kSLCV_a|y-^`RiEgl4nbMRBTh;j_tXimX^noY`e% zBrW|rRaDY=fnjj(%fk(yrMrJV=gpTj;h7FYJdHtMhpk=eNy3Cl-CM%V{Igflf&ZaSF4r_h-wwGph9s0SEZ$vg-6e__%7JHvJ^vV)1NEarh+_+DqnqFQ)I?O2kNwssSxc zs7mtea>5BsW=VjC^KoSXNWB7Uxol#AU7hVfHYDJ&ah>my)~$LH2!P*0}Xa5DyRR$(55Ib?c1P1(#J^!E+c@rxU&Jf zRP2L@mf8|+(MJlBnpgv#3`tO|TBsCh;2mmalk|!!c)q?lYUp5X^^0Hygq6uMwtxVk zlz=FyT^d%YL3*M}6}=aull;1}ai6#UADkP}I}XKQ&{ZCP--W01I@6!z6$U*~B#?$< z^o;a>kPrILoEdDk8+Zy;Sb8c9#2yUhq)cJ;P#V-bP6*)Vr z+HdZ!FgQNj>H!JnP+>)(Hy0Haaw-YL2P%vr7>IJHsRuC8aZyw$22>1-!Di&+jgWJ* zeuJkO5R=1zq5>1U6A%RS!*|(n5OUNxGO3c&Lse$qr|2lM&IDx$bI_-74S(!81`GF-sgDKu|&@>)svcg>P z1*`YV&^NV`hJN(+U@|LmPe#$n+hw^&Hnrn(Z#sP;70ZC~?P#q4*ViGwQ=b_M>Ow>H_F_F!o!Zu*SFiEWCxFXH(mT=m%#S%4n7!s`PX9c#12 zi=UhoRkY8pFv4(01374>4&n1V7z#cV&z?q?gv^~&*pe{|js27B(ma3XPkm-S#GeJ^ z1#C1x({Bhl4$2wS)yT(fsMWZ+LR8F0DDg!rdoa})aYxvuaK&g|{QAR~|1NX=aEHrP zsefbrpuJA-ghnoR9%&I^bDdqpUhHB0JBs*rX!FkmAOrVy(#X~6EDq~Xm_}uD$RJLs z3~cb^HJ2Z?)&%npXIFGF&Bf?K3OG8Ok3qAMP96LGze9`?2L1lV zl{-=Is-mgBs`cY|s`>aiO0MJ2UK;W>#GQE06TW7%>uve1O1_2vK_%7|J!d-#zb@rKNe;}GM82Jf*Ob4O%PsLTT|ZFJQdW5ORP z2T8rQbd#r5NTO@a$-;$5i?pOC2;|u(9CFb5X z>N5F?Chv6|r%By^ILR0BlHB%LhA< z>DNrAMD<fqNmYGBVUcOe+WIpi-h()64w_upO;N$6v8te>sUY$7JWa3KSdX>-F-YAcNu%SP zbF6L&3`9TVzmmZ)};$*=cwmzyeK!sO=rdv3rg4*fyuKbwMJYY5e!4<8DTkrL_< zQ;DZ#4)_A}E%;v!6mEoaN_0c(jj1&9 z-#+|bz-5!55}@VZx?ScfnGn|}@Ai9Gm0Nwm6e68BD>FR{_~QZ0{;|x(skSDT70R@K zv_}~1GQn0NAfCR|OW4}LjayHF^oa}7dM{(fQhgenTJ~iBX=y{fUPQh1B2OM=PAfaB zVqug)1~a5l?d?Txr}O2Tn4(?2Ak#2Gnl(2gGWTys!LE7miCbWM+N2qmvRS)U5vVrgNOWJaXS8x%n%#}aR@Zi66T!KJkV@&q+~?;_ zVv^nV3r?iIR!hKrT#X5TvxtMBt4bIeP08))eo}@WnpFFA`GsMANaY^9)5nC*snC60 zxEFuRqbDW3PIxZ(!)QbPQ4@R>-_YXT4j8( zqDl6yZ~6CyW}pVdx>h*&)<{Ped866UFDYW8!)XX)$uT3>H3rk57z662zIMZlHQ=4i zw9lGyfsE`ZGOmfXef7;ezc_a`v#cqW=Vg@YS@JMrx^U)MkEZBz*%D>&+fDq5(su## z6NN~ZViAk?1Wlg0U?#35$+Sp}6ui;HpR<|5A(_=sOPXuyyxoQYtn%_TbIzXp0qvH} z>m`6Cu}GoDmj*YLE*fW^c~&z(=9x!>;89#88>(Aat1Jx%CW_dv68{<96nYg^;KQ?B zu5kA|oChVoJoye}%NVY+RIKXN{1tl6Qi{vPdzDb}^L)-wZp<&@rYdFMR;pYKc$5lE z$*yjRWES8*_Gj0je4&chH!>|oc>;3Y(%qUA%&(6e(OJtL0M*%?^_j}2R z>RntZ0-KT(T#E@|RgNyp7gWvQsqWeZBRw-0#V5<`gpPNDR`ltU3zBjAz;C5RTiS|R zttCiueS)imgJOeNLP(#2xMyY)Bh8?aQs7W`4V?W{I&1wNY_*V}K92OpJ}9;~1Zgtp zq3&aU6P4gdUsL< zce-@cWi_Zw%X`T=|Bz~3Y@n!|XYji`KYj4_$L^Z5A_yeIuwpzHy@_~~K=nvB!F{9a0CrU}w^0$9s>8(&0RB4#4coHGev0dpY17Fl-`LWgy7p;@^h?CgFA- zsmcN+ordjaj`0?jy22-5!q>Fqrp?4Jc_knF(m*H8{ox_%Y+@!n znel*nztOMaQvB)8??^P+_)d&{L%VVn6q^UO?*snp=9Gl8a$rV0OP1o^XVL|t?OSHN zp}=;|W9^_>xsXfj=uW-f?{Sst)6h9^SXd_Wc*r0XoQA4`?pB~KuP2x(!Ne7GC8;Sd z^>MIhw6XJ&@bP^vBVsS82)zYrfGsk4YV40$q~hd zYOnsVbZJ_oU(zXsKB>P8T;hB-_f2XymMHJws`Z$GcZoj~f{awFOfgp<#K;5zp_p9> zpJ@kLEWxu?`WG3SpGhzvWxc1R^@punt{r2F>(Y^{PuI>s8wmSjW-F^vYFZKS)%=CJ zAT{9aD8N6&z=T-fZJypFuXr&phUZy$)Rqv)Az!-nQ3ob*@|`E2yR;1D@oh}r&JoJ! zq}IyKvSg8c9* znbJ^awgW}ycpR7d{o*>`KTotcsjq+Q7iBo^Hz0=I#a9|Uq$lN2oL1=>HwHl zRE$1d06|4Bs@>3%ogBJY40l`(kl^T<-pf$YnNMyZsY_xPn_?fK`MJwUEXe027{b^@ zegpX>-p*T<6ffbv!7QW7T~LyWB*JS=A0Vd}qSK>UwI#1&s7%|+N#5rrpGKKXV_ z)l}WW5?8a(+~8pWG?J-M!R6f7Vn|JkCWo_OljmR3mlv13NW(G$>AEZ=I zR5{i!c7MOcui&rhv+>dN;sTg-MoQP8DZii}Od(Ju(Zc8Pq;Nocl*ONshZJJms3ZO8 zNKjK6dZ_vJNe0h9fHrkfTClTz-6qmaWMQh;o~3zR_~1ZW*d1!p61%&&-><80f%BouUx^ZTuJSs07~OOV3N2kT?B5f_YNX_6G3aD3)4Vvznn!FH z$2nDtW!!qjnOb%_FNkg9(m66kzRV8n0&MYu7T(*c=vA#9j7_>{TV+nO6sU+8cfb(i zSHm|8e?^*vvLKU7ODbL;jqQs~@@;^L>h6;)su86X9cQuQGo0)c)PtMG?p?kU1K0`h z_<>unNVLzHO~#p2gNT@uuIpGhAFx7$KRV`lcd>%0V%VRQxMXeir?#AK4*Zu<<&i*; zYiKv+2}ylAHAx)xiz)9?&Jp=FL6M}xU%ou>2}YF`M%xv9>F{c*Bj{^zOJ`*{TlRvo zy@j`EIlIdb1c5~$hcrx4cZB|zSl+)!|@~>^Rldg=TJB&4r8vu(a*^s6aJQuv00Z^g3&Q% zhmX&mNb^`uomE=_aQb8((6tua0>t&W=}`n{E9u5u5p0c&d+-f6p7df z#_|%#5L(y@c3q8{^3idYh)M6fO7`;LQLLAy>k7R0)VY_}c!c|)=o&5v4J4n7QCeQW zN~lr0nJq2T#O(_^ZA@kkZ4Nff-ZgCidGq;NM|Y14e&FwUShGvBH{98Cw%enIBihk4 zJKP9{gu7MFM{W2))!dm~T5vdk`qBI;k#vxx{?WX^J;+Pn&o_k@ETZhkM@f#gh9P&N z(!u2!oj1$%bSs}|J3$tmdh1Jok+MxH?(7a*|)-vNPW zB(=vd=VrtV$#-1i-1(6^gWyL*r?ybX7mqcI)n&0IO$K1wwlmZ>?3)}hb*}w3)&Aj6 z^0of75_wSnd+nxfI>JETkQptRIo_(t`W36tX^Fs{43C26uJVLG8V^^4dyzI_LW4;Y zyL-@p&`$_%Jog^wcXiBycxfy)#AE6$ain1Tl->RyhJvVN-AsB_%Cq{EQ)&dvUI~+gXNmk*%T{J6>hnIrB zijM|HbHS1s>ohh2R~=4JuXj-mlI>&52m97VpH%gU*7VPkUc&$&dkV^ggO=yBpmpK4 zX(YAK{hptJCj2C+Zq-vSUK$qEX2YSovL=6u)&Ymwvzyeyp!ACH3OjAN*VbF+i>C%( zl^&w8qFwqHyh!?46IeWD#kjwHop~WDDn-~f!u{ylN#nYCMf}_oZI*Tw+udoOl{(98 z5Hjp&2H?$uk{`B3)hJg6LkZKj5Jx5vl#q80PsK$zrOX;S-3iD-j-e# zuM|4A2KRnM zfd@#PbQvReCD-`TP1bHNi@lk}hf8#8ZyRrytZnwKDPPgzs4xQBHHpqB1)iA1{P+>v|iD*J~q>4%IgQ0BCBxZk=S^wvA?D=e6Z0 z3MA@owq|@ayx(P%@+SoLKf(5CT9@33P>3_>7L|b1Jk%M$}S>X zfZ`oF$CFL=S+lLfP1=Sv~Q`O6DtJ+GNsCG`K&k2cHrltz8TWBdwp|$cYyd^1HWk^z2fr!4I z4qj=r)dAH6v_a3P@ER!sS4TLf?(XB*mcX?ubk=1eQg*p)QBm|1y!&cgxtx9EFw&e# zNGd{9=Q&PBc|arrOku7N+CRjiX5FD~(|UYBp43V{qF6HZSzS9tw#>A(8Tr7>%MP~l zX-;_=Q9(dRPF8#4F@pUiy}jzbrR-Ae-SxG*+scV#$=WnTPH5u{pweo~a&@()VfAwb z2M3PXI0vgKjIqMYXM2v@=GU$L!CrhrbqfBXRK32ZW!prBzT>pkW*Jnvg2~GX zPlSwt?DdP=Z$g$0EpvCA;taMBxgd@r8MG`>W(x>0W&$l`pL~4S-0uBjjeEa(QRAN`~Gf=UDOoX^qbF8mnG|S zG$~oSV0vPF0+Kve7M@VD3CfQy6hR0uXH^v4N}zCiw?WfD4r78~Lg~oQVlYo&V_rAM z#8XW6Cw=J^ho}|}dbKmGH>kGguTfUQQ6l**4;B9a6+o0_P%Pb2)Tv5^BB@Jp9M3q`3XGe*0zwE5C!8K&TT)eqJt2LkYka=- zbO!i$dv~+6?Mv3QN?I1;*hj0_FLKGF)+7%%w7y~&?Eo^Ey2}W(b|BhSYJ$=ZP(jOq z8jgKxWQ`YYR+5Jl+58n0^zG2%AZIuOsPc^=+_s(WQ-}Wm2i9OqE3z9;EW6-6G zkKS_9Px4JqRi=DIDSo!&ZlEDSU^Ws!8TPQ7g|YU}xamM+T@waLi4Zl-H0KMgS?h>C zG0**`?kiny4nF&x+s)Cc^{M+B*05;vmffi}I8`N0ea}?qahCfapAmUJe8xQfJ)4r( z&Ar|`R+7;DT&~)z-P-LdNx9pi&lW{aMMaKjcd_-*d6m%n%v9VetM3_Z2$wf|t4W00 z(7GXL537X~MsBg;n&fAnWi@wtdJp$C0 zUQtl?y_6v(1w}&~Ylgsh$?PW9lH8ukc#!Ij;H#91gt57FlTp%{#w+s6aVT_4CD)c3 z<>uxoNlL;2QdUZNRWz`cnrt;HwT1b#8O&*!&`IW}dp#EIaT(va;z=3suB!MHrtryLS1bx z1e|op3c<%rh~uZE^`m;#er%45yh_%+Ue?V5efwHYp`f$Ox9So#7lW%@!^;ZEnQ2NW zAObRu@w?kN+V;Qg7i)LD$EkbjzO`y%v0x&4-d)zp8aCl(nCikMiWIJdsU1!~QcPQ0 z4Yg($N~o#dxx_>q^vjl0uN3WZC2iNn4)LSjj^@1UKIJ%AT3WTQx|vtIu4&7fyu{UZ zyEI>!b+)J0hSH^;;VA$CtRqJz>6}zMq%8drnesHQrLTziO z1w7MdqE>uYGJN^WVLuC~E7qkVX#!7NN3}lm0C}!}tYl-)$`FD(jC|vaZ|ffwo!9Z9 z+@}xiv~KFJWZE*b($f>yRN(c&Wzrc#UL$nLbAXwdmtSqLLXuLHEQJgbGVb^_+jd+( zw39(NTiSbYz@S7`9JglBvD1w}q;58dj zl)6A(@Es6xX%i&Jn^X#d35C=otDw(J_RpM8exf-6xeXuO4#e~-y}Qk+@$$O$D)zG} zrmtGDwJP?e)oB+i41lSbc4Y&~EUcg?p(!d?K$NH`gB>r~PUdL4%Gze1ZjysWRW*y^ z*OsZSn6>j6HaIznTnVx%gQo}v_qP6}8cf)OwuvrvCu8;)|}~v$Vpr>UC1Xw`blB&r??7ToW%#HgNJnd{)Yo z2yFOjSF@5j1riPq*hEb?bWaY6>g`t1tIZi$OTIYQi9ZyGt10K2My?+*foD^9*icg+WOyYzd@~BlsdJ< z-Mcc9muZr-FUoigxP#TTsSWd#9;pgQRt`Yw#XCoIikESV#+juyysclKpXq69dR4ig zuh)2~Y%f0?#mM3i@=6_TD@wkyR**sY=e$}g(_=uU*b)hoI&jb|k#kL;HI0nH*OKKn z?GOI|+I4In{SI0`l*`8M=m^IO>p=O9x=Q~5{<5q0Ir_|r2xgV@urAsQj}BdgHj&vapd@}F4=UWeyuw^dO`xg3R-k~AdiN*JBCT@cP{+T| z&njPYyyuwr-fY(oI7V?Ww77lU+W!D8x$7d}lG1CBU8@F1QmFKYC#9)1q`I)=l;doL zIDqRVmA0@CR@N|jl;4}v-F>~s$6oZ8Wm^olt_t3s+SlBz)2bSoJwtvp^1j+0 zP914pN&ti98}DyhHr1t0O&Zg;WGPZ2cE}c=0mq3F# zXfufWR!wU3soWO^_uS=ki+xV|$E1O@r;kq(%B(1lc2zuo=Zq=8oekRd&iK1sd#d6s zwUK{lHndP>Jy!8@hV?<4PP)<>Ly38|h$-jri0SPVI0{0FRtIH6Oexg5wi{B@^;{?g zN%di!6U&t? zNla%hG@FFft<>usv%xQB)v}ALP>XX~vv5i)*tadjkmA~Or|Op*0mY{yC=Iv%Z5(w+ds{oYNu2rkxd>8jfp~OGb2FOfe-a)K)MJg;Hw`BzVp8 zo~dnl4!4o@76){g*l30smX_x5C7W-Uj|BI;9=Q=0T8n=cw!Et95r& zr@HLVHI28IwhKRc8(O{g!F^4tR-buLoRSmmv=+G+@)pF(QhS!&LKTkW0tbA@HFi_Q zI{yIR^=HU%_~P}YS4F)oXLHEd8m&X5J5r@psbNY}O_eqZoCpN+DX^u45Qh+jBPXu; z&tu=Te0AG$-MZ;ZpxKO+n8lvG&quz_@QXmV;E`FZu3cJqh~B!zM`l@$?! zPzg}GHU+e8((QYO9MM6_~cqjN(KnQPC8@V66*B& zEy_)Rb0nE2G~ggB4Q4gFtPmE1`Z5H6fY+yB9-`p6G5-L~UyB=Pib_2voz5vhs0|~f zlAn0zq~v}m>4Qx*E`ZYvp|p<3Z2=?k2y`^SbiRfg4k%$u4S=FPCmArVxIHCTN57vG zkW`zAd)*%SamQyH!nZgH?pIiLWxv~EyFsw8EBbQn(;ZBw(I1?Vo?-KaG@!~#kFnw8 zq$y3fg{5f#rBPta#obOcd$QZ7)nyc}V<}USZegN*{Eh-M@x)e=qS0xT_9-;l zG@QJovO;C07?naAWDg`D0F;lA5pcYv(+bX~FNitiq)bQK3EOhPQ=~1=wP<&w)uwuZ zsT?rt)7p1x&Q@Qwuj*BHr6(aSr(H~wFS?gq2~J5$JVdEP1BB$BfSAmDH@K*6Cy3R% zHAdT&&sLhN+IH7^C>3VULw8f^^= zq?{{gIxo5%52#RTsJrWv6SlSOZx-DRIWmrO-p??#=6ha89quaHBXaF#!>+rbJ9VtRU%2%iwMcSJnw>>Ow-YSFT*9)V z!w50Vr}9CLn_6rYB9q@$%&T0I)yrn5$%QYB<%7)}_Jl9od) zHa*Eg07`zrA5VbCjq3r1{7hrS@W(bi+3$!)-2w|**ly`)6Qr3ZOwW-=bODeVL@qwq zdytdhFT~ScDBHrbtFqcHxGS*T)?TF2DDKX&CpfnqaoJ~*-c{_E*4mOX;!91aB}s6R zin#spYSSJ5?7Qx9vb$R1xitQdc~d6u%}l6JACRWAGt9KgQ)P_8Qm3C<%AHXF1fi~( z=E&}KZh=C%sgBVuS|puDN%4oI=j9OlP7jI}3QyW1DK_P~K&3T8pw4@|`f-GhICRb&5)0eh57KZl{%*>aVco#ms>3) zORccsUR^*7DFCAjArblzWtLcMH!jK>NbHu-5(n5L$!kw^{fm`XqZS+Id?a}(*-3fLr zIahzu2nm_>(#m=KZ~y`9a`=Pw{Lzf~+G#cWt^6wWuTAvE+ncOcCao_XMwcMLb@{IX zVVBn1XdPC*M%F?`NyY#tq-`Hzfew{tx$77Ws#$OmNGko&q0bHkW-9%d&nd4nB#Lbz6^m@UZX<6NlGYyPXo(~M@DZ%0IQ{<}@kExFRB z#V+-)(^n>LYRmp14a>H^r6FoTBf1dLE9FwsnCo+X!aza#pkgRU$jH+q+NaZGnU(;l$0UOGHyv`c*aJuht)*hRl{Ui1+4J^e`3 zC#|`O3QYz{6HTd^etD!JPRzdl0EC30BcejplY@@g)oB!(?LFE>c9$(XDEfI{m78HM zw&3?EDg+<2MH&sAXxj92+xE?^O{YjC^Cm_@LAF^3-^hf7=j?@L^#M|ySJRiaIKVNa zh}JsP3x@9p5tv+<g zHna?33v3WR!xa!hMm)XV=)|pa(%ZI_L>C_{dLdM5%Rr7YxrylXAMs1?uxGaAr~d#b zo{D@%asL446zrG#T(5t1F&#f@UR{EvFv1X4aMM4q-06p)vbB|0LgM6 z@{GJ^jeGKU`hjf13ZPX{GP^wh8P#*4t#$SDgogI%mZR_xr#X7`T1!Qq=T+?@dMF+r*BEaN9Pl)%!njX-=m} z+wad(>k<<@prJ*CsX=%`6hcC|6s4hjoT)1HbvIrq-jFvDeF>oK{?4z==zf6R!tcH{ zKCef5Mp|-t3t`4&<DH&D?}1ta z=|P150D!})Wd8u=dI$WiFB@mF%zl%NB{=^8xqZF=042*tN_m!M8!W!k96|1tpeP@( z#HA@pLQ;?b7yt|b7-qcMHjHRVp4j#yq?QJ)V&g%iSN6Mbvex}A())I1uU@HHD_uI5 zB*}5hsaPicFA+vbvNI@7J!Wwlnu(^+{tj@zkQ z(+r|t=-}HAI3@~wB?3xHQ_atXV1Pl6j01z8;*XY6gF%t0Jy?^W$ul=G(fPJz5Qkj; z$zXFH!?}lL%^_s!4{YZkgAigf%Re%9)P}(enI4V!2T?bml5!5`YPtUa?dKu4&DYXq z+2Hr-y>tHn>XFmrOEAGwrRCd4I;Nt;%<(hw#X zeGHytc!VsR0;M3dQWePNKAT@rcq48bbe0C+xK?nZwKa;fJy>RD?Ymb)o}*IjDHJ%B z8MhsI9LrL0rGP?GN>YHODO{tqbxKt(w@-SLTBgg+N=zW4VpeWlF1G4VaHOaZq3|L; zOJdBk?1=?Z?7L2vN0wUo)h|k?H7wed?0yHKm@GD2 z0|CO=<^$cH@I1>i2=JyDLy69LTtHCI$i_$I5#1Cj?)(@7U0}~FleO?yKREdiI0;{$ z+O@U$M3ihs)c*j=yVHaJ0Qmm^O8)?mTa5POEWFue=1{aA=vo0Ei1dj{5R?YefD#4* zKVfPcRaYIki6G$sT^&5sNibD7} z_35nx+?_5(*DtCSDapY?tIH%G1>~czM+@YmqLkb1sR3RZ(;a$ch9%MA%dm#iobtAS zk@$pCsnV%+x_h*m)izpkQeg!X60>sYb+;0Hl$8P$J_JSIl-h49)q5qCBoRJ?8ji%_ z%ZZ$FxX@^R`S^BU`XR7NMaO(l(28v4r(e%oQ!+HF1wAzhZv~GMWe6@!KQyUiB?%Y^ z@eWQ7Hp_Keq`Y>U!iPh(0%vB_?Pt?j>o(h`>h&gZrA#iBM{=DmOzLGrYfQpYLV@SN zLW^XSf>fRMq1raBt4I_JUe=~lY2jSLLZ44*h5`5ZXh=?eIFGm?9G)K_3CAxePfTOB zJ7eJku`5Q>r%IhJ^{y_>*_i-p0E5VdAi-ar9q3#<<*vH|i?(gsIb~F;_STc@Lp4j) zbZKJhq~+9^b%zKaRV1*qg&ZfCq!KxVbiUow`wG#Xn5o)UH5QjMIsX7{%+l#BOSu04 zU&B*r1$}+yJy#lO_LRfTCB!(AmA15nB|!NQdJ*t3Yq6$xMHjV%igP>8mk{irn9y+5 zGUwLu_=RnAi0=iR&1%Nf?&^(Zi$k<$X>~WMR7d0%)Y_S1W5Wn}DJlUDqbeOUkO_>% z!5u&Th~2(mj2$zQAHulVx?K{5MU(nEjYN`^mQm(ZysV>bwn_6TNC5sQ`&&b8wi{`* zr66G`LO=j~0PPyu*OZ-TZRxTG_VANDA~a1akDBGV8-Ij%q!Xwcp53hmwM^1Ybkn&R zDmC>ZN_K8uR&rgrZf2ZINh&2SOSqLJWnn9Ae5E9ji#Wk?7SmoJ8uPUJuGc74y0(|w z+VLRU+KW-6JtHSothq5O{Kq7h!d!ST%2cOZ<>lsew1bdLcOv4pt=qDex*geXQ|gjV z9Jwb_l5Sy@d`cVzIr|}`sMKm~ixj$T9!_3XRUtC6%t|2*vImk9015j5jQUu`y*iZZ zI+VSw-JR^TiHO(6rX((6@pY8cO@?t%(jGE$T3uPYwBnU&P1#zi)x9jI=BSd3GXc5Z z40Pn>m{Nj?3Fl{(N>4gTt+?MwTW`0;nNHJA6&CGhT6Lc2s7lLQ*3;HaMVUE7sl@oM zO_im!5D-+55O9)tmZYI1o}MWPaSCn3g(XQLX;N|&4{%4Ak1E`-EGs%?`P)9mqS9ZQ zB+Wfbq_Hfwz5MEJDJuJ86}W|+N^BQ2cbvfkI0SH!2Tr0BW*0uaBONQ(&065UIE7iM ztliWKwYgin>GsU4jy9DrNS#{<9Lp^>jP z`JYszn{5|W?^hrk-)>@#@1$&n2QxOfxuhK?GKkMivrGnSi(D2sv+Z|<#@H*IJUEF@ zS9H%%blUc-VnS}$oSPLkW?u0@Yrt(ps4S=eKn@{IsRclsUEC-&n)KX9q%XLwZoG8H zt!FoK=+vC$0^Yb~{2GM4E7qxqlX7LF)t6mmDR{PepgaNX9d4^w)-`^&D|1(@nmqMN zM;@h7ouxAL#J)RtZY?E9`v{Lq!DKwCfXX~Y3@P40%&(fen9Hw>+SE0k$}sw(9CxNP z&_b4jkd@2c7l0o~FMbCDqf~D%+lctRBCW1DIjcGm#3JO|WBR?PnpserrfThnD<-Lj zo})~y3rx^$Cn`&7@iKcQMY5ulWR9n$h7jVOZe6skUs-8v1uN!9Qw`L02h0AVF~%_F z;tjcLG-zoPr~(drC(NIBC|onuE!BE4Q#yLvTR7qEL)HyWtN2XX`fEtj%A~B+)WXyO zOU@}IHV`?9EQZ&`sD{+G}U{EJa%%uV60ddJT-5?h^ z7PSJeHFHJjMAO>>*{r>BTUH$ool%(tOw=j#b{Kuod-FJi1uN|_>nR`%fsceyh~gCP zsWzQ3-~pL)i;tiI9g>-ijLMX&A|!x%7^XTHs0ckoY09`1q!gTi3_6a`5D!BM)g}~( zOofadkr;}Z1VSk|J-S3D1w;@*2t+1C5J3<`rUnrN5JC|NlC3>51T0jAQhf8$6p2qD zrGf|{6M~2!f&|LL1cQ+T5J$2vA5MZ#Om>Nic_XohNyy9yQwDnC2-3bV+wRxRwbS(D zY#T46Nlt4StL4jf4t1QG8BInLI^_{VLs)OTL2jw=s24q1QqX zR_vU*%F3nIKu~GGl;J@m*#{9*f-diOBe|{_x|6MX>8dq~<vkHluTWt^`OPUlQn_h=4LwF`Q>G$Z%t!1RmHi z$Q~Am;=9FnW>PoZ_rzZ5(_4CzSe=lTxGlP4PuK2=u%xYSKKU(%C0I((${TM5YVit* zz{X|aE4gjxS$pc%J{H^B)%EHPvX$j3N)8mT0?>rETgY11?Ca+lJt*P@wtGKEv`cbZjb63s-Ah`j6)Rr< z0IX9zRB5qvzK0rn#cj-z3oa)_oH{NX(oa6RTU z14Op{#LI5`nA5wzM7P^l+?IsgZaFWg#{I6-o|vN}@Mh$u8*uo&PcTD7^-7YYkff-1 z8=~D#=(mZ)Qsm*;wVl&QXmy>Xv^ja*QPhTvv8ztbz7kuIk@3`!-!C`?NhvuCDpx2< zRU(0T?_3B1NzWnHB4?>yEoP(xA|`*NE{~;2S5&AUk%TP`Gb<#j#JNTktr;d4xhjJd{K2ELSzp$*s0oQ zrRco%29HZaw*3Ifu4uYTs7sCp5JILD+huMBl5(<~4EB$QhK{rDmv9?1w6$M(noKOa z{-^6Ar$zcTaz#v`YTY&P13F<8=cV}6_?iRIEL-!e%I7JFcUQSx@^>fq^0hekWk!|(*y7u zdDjA0$?T3rDHsX>QtM}aql2>pF22w*NNwPEjs)npx5Y+r&YzZHfyNGd$1OBJZ#+b| zTck97&TFq6dZwFRH)S=d#U915+^01}p)mRbvhvTer;=V!LX*x2BxjVBs1kAx!nmOB zBT%-PxXLcL+tiD*T6V^Ys})I$b+DNWv%!~|c1mTmv(Y{(rCdsbU1vZ`kN_>S#8d$!WPI5!-=wA3Z1XQZ@} zi0wU!MKWQx9Pnw+$tgidO2QHM(%C=`B%W{-W2oCct?p*Ow#!bTyn8m6LDa!b@UH0! zEb~(mrezCKJZ99&lz<#aON9wh2`VGY0-E#<0zq&j7$ZNlXri?ah-)h0*G*lv_WuB) zmwvlm5_5ADn=aU&uGHn^5|vClFDWj!+(SV`0>8l$QzHSX4-3?PuY1XBO zan!E*JwBL;gk6#ernps3bxI(#g#@iU!zb^D-5UP@=;iIJbW}~H>2BgHo8Ye1G}fVP z)f%U0%hX1bB~NivkG7W+G0o1Rmk_r=$9D+wi<@sr)&{Y6d>jO4$mOQ0TSbny-zPa) zpNDSmw+XIXNw;~Rx~HfHr)lYh*Ci=q(u{)*3TrMYz@&w?fVVTsI=H1DjBgWbY~&*t z&tV)^+ijP;EokE#y=@BGmb9ZwB`-B6j76AQPgiu$dvoE}B;loFsh)Th}(RE(8IFy5Yt z@sHt=w2S9(T3f`r;?{aRrL^;RO*;0arMi^`D;%k;QzkjwAyVs7R;HEFNaiFQbjD?q zoLC(23!(v@I>JB_nO533L;|bsJZ8Hie@aPjl-H&n+|bItS1F& z9RckY&!bDWjnT>NA4&HoIlda?#+S^qa)s^&IZ~uHB6K`nr>J3>1kcFjrU7q6{*Ygbb}f4|y=DNm_yuI;em?amvb0wDA?= zF}p2QvbK%8sl5i!eIU7wwyTobrKS4C%~NlfIF=3+OnThppR?ys704%^NhiWmkd&TvEEKpDj#8B+SZ{GVvf_iNd~o$Mhi1=p$#f|S zwU0@1pHZzzqGq3DO8Shf%=J;Wc{1d}io7PlBy-I9bSbr#FR4(5xIk|7&QavmTrK37 zaEM)Y3rQJDf%!ljY@SfG=iC${n%lM9PV;zJZ5K^;qba%8wR2zfn^ERyc6OrQGKrU$ zrOP_wMRQM~)u|;i!Pe5Aa#9Pt#U&`^Hpa7UtB9W2G;*`Ky&&VgRn!aq)TO;zs9860 zrnzrdQ!a%%{F_qY;#mqpR1ts=kSHV&t+I1~JKzTx8t227L#(D2)B3}!t#wf<$m`_- zT}MACP|v$D&7H#W)T>cAL+Qr#^eay#CUrYl=jH92I@Xyb)+KAjYi4OhB!cT~t+f;+ zk<46VDC3;P8w-ZF94Z~RE3Nf@GgWDwQt;6@{e@GvQ88()`~@0&hy(!HIc&PyN#)5> zK)^8_#P+j#tAleOPZBlIY1WimpVu+Tbhx~Ll`oik8RqNSFgD(}i0IbjcWJBJIkN4W zic;m#iKZC2XR31Srb=kKu2h+2A;m2~9{lM{X@3S?&u_1Pb{_5Q&2`pV&7pYHFAt&Z zli{Ld*wZdEG8}4IDg(qrPNUi8Cm|!L?saR2*2;IoeDPr2UYFQhPVS3Z>a(iU@p)fz zw!FKq-UPfkOU#vov5X(8Pkcq~!wNY zP`{|4bM8J-&b}tQ*4|~=yv;x1C&Q}rrQ2G8blYpM-`bT`lT63xa*~v*3Td(k4y`S% zWn86Sd}$~tDpJ#nH$k`lGaM`QmTP-jS;Wra*Q!;R+G-kwr&^Cl9t7^j-8l8)t8NBcd^aqbF5GRDCZ3zNQ61vb-0(q6td`wCmNLMa;pDf2R zIK*)?)G2-p79Re#aj7+{E$hzZx29U1kS+St5|ap;Gct-RNl7VNMFiuiY!T4LLD=?} zaZ$VPI$scd+it<;E&9EsIZ~0^Z3>giDIqNMp>josrU4!-+D9UmqJ=A+MLgXx3EXuB z4wdc$G9!$R8Y8*LY?BLq3#bPi$?f{+U~|_I#aA;IEZO2_;HWvXRqX9MwJaPihVZzw^KDv(s5XTE0IJofHYH}GOPVdEehkYJFFMlsR0viUgq#pT$5_3`XvUk> zQT-;`wh#2LxPRoyn8aWO!g-{oW#DzJ6~KRVn&G^T81^3FcOQHHh%V~QLa^0Ftf?kt zykxOaeU^uY$`FCdgd}uG&N5?g(y*WkPC@eqI9I^qZG23(m&1C_wDiMzGuwR9D_Wsd zmZDBs)R8e=y60CoXgdqy{)YFPkJq&DK)OSn72Zx6e+gpZ55RGz9 zui84TN_t~SwMJ@4F+SYOLBeHbNCdAX3POU^vXv>NC1ooq8%xYMcU56Y?Ion0(K7>< zQIO!W>QdfugP$eTf~1qn?)btL1ot>UIOpcq_gA=U)6yHG%Bzj(wJHBG}P$d`aej7mn*CDA-3bTh;Q>tKA$1;A3G*$N}D2f2=D z@wndByy=$kbQ@zfF6X}BHdd*seq!;~M9MU$rI5>o4auSfO4y4+Ni zDDo&DfQTdxr?hehR4*PQTo`xlp%nd6-=*8HIzO$KaxH4ih4(6xIZT{&)>{i`g{#9- zePO2%q$nhWIE5tiF`hW6Z)+ypF>VPBI8df##~C4oCIK`D?Zpt zl5hSpJV!Nt)^BXOU$>3GGoyB9;iuCxUDmm|6guS+oTjDRLrtlFdu76x!j`;(J)9{i z<}fo0t5M7ha3Ry4V?icFPML@qr!6rH$k zYfbN61mBfYbJ`1aOqp#;`=HmU&dku+Bm~b$%{JjL5zJN_Xq@sCDJPjKPBz}o>vi{V z9Aau*I4ayhC$_(*mc@rFR;N}dZp%s3ZyEQ}+PNE?m{L;OKyhIx3IK){Fr}zswqe~R zUDiAh2Jt!M2C^b$NTuIEE2~LTR5FzV@-Qh$NXnE4&NR=5wv_Qf+qUCw?I7H?y8YSo zE&F|%hMnrQdUjA&+MLT}a&NTKi;p%^r%#G`llP<)s0Ea#SoC*YH*v;_{{X-Bj?&^s zIkycDwXXS_dr#<=OvIBl%YjnCJ|#kF_uNX-+WC?~0VwOr5(*TxD{%7XIERhafJx7e zf+Ar8ilk zSUP!Tzb8(p*4s+f+NWK9VM#MYlp#g5m42+AP!cj*@=aamONQtH)1HScgigBUl6KQO z(JQb?AwwX8@-RlK@WQmXn`vBy{i9q&F3NrDA#dCXPM7LxCS_ASaMIPz53R7uxtm%! zP(qvmXPs#!T%l31datQ=u8e7Y$*dRD;-%=8r3P}bSbZtUZdzHDJmCY(@}T468tSwS zI^7#ccA1Vpj!F(id&*i<^^^z9!Oon4%rbin$0GKXX>onyNoh=Pim}8dzqd^?uGHqy zrZy&?Q&PE?B$;_l2j-pUZ^X*bw3RJND^gUXr3mE)hM#Uviynh$&h^K3J{gmJ z)*T$_mvKqK^9dw>2#p`(C&XV|_SI_XR^0YKN|2q_jloybNwB7>t))y-Wsig$o>CSH z6rf*eDdzQ^rAwZw^I<_SVnsy?$Q@En z55z}AwXEYtZx8KGr}-PvIF%;S#hp!}0C4Q!oF4gVXQTPMeZg;MhdnD@cQb#g<+`SC zD%6wJMMyC%%)<{hmXXN95P`}RMsbtoOm4_^2sl!}_!AtG;5WJ3LuMY2C4Y3++>^6( z%Oc>qDlSN{u$9faCKzp*bg2DO4OQjUO@9QTN>yt!Uy=A_Y zv9#w;C@J+ibvewLWlSWvfZ$qipq2QGDIl#`S1NKZu;x1QyZ41Q2SA>DfC^TUOH@mDt;ZnAa`JYi0X2NV4yHs+iSi7(8uU*;t2NLr!ciBs$94MZMTwy5TY^3o|FtJ zrkH!{GzVnaoci?0Pc+gcbe$?nx}`w;j0I>zv*TlmD(v?Z(2E>tXi zF4F1Bdot8YXa$&^*%tG>_2<9m#kuv-etvZz(QQ!s`Co?Bl0144BaGaM} zat~r4jS1lszHP+cy63B$Id_wN(Qkb~(WOewQ#CT*Lrt-D(WVMRZ@Ak>kuRg2zG9qY zFADaMRK50%ZRMp~D#nxhdqK<;;L0F^2*e^2gD8RsAxMo7*nd06p`FSMM5$$6v)BBh)fC~ zf(Sw(G9ZEogutQ*AcTUMB9nuVA|jy~=?J8e2tu$Zf(Rj0$yOW?K_1Awi4h=xa$+EX z3Bk{3=Jy?2OI9>HTz2urD@^p>dhVy_b;&T@>qe(GrMlHJVM$l41gEG^>ZmL1g(;%1 zWRf~Rp1B!`Qc~&)97s}Bl9eSxAcN3?Ji#5rJt~HkK%+ywc;WY76VV01E;JD|Aq=cnJa}KeGJst_k z>7Eff!!=k-Nt;#Sb*gMMuu_K&IR#)4NXIca_(w}^Z57eW8ox1h*&0i0(Q1=miK>+* z-jN~}T ztv1svrrk&~PI++bSDN%2NU@DNgP&5+k47cLo)OlUD~V7SU2qbUkUyG4csdO0YkYLx^4nDx%8c zZN&FT_swo;Es3=WN}b84*5y)Nu+Dg30OQ}!?;xQ3V)4e{V&?Rj;U4=uIrAW9J zBTHh8!eyn@J1Mq;IZ&_L0iTRq+p0patXbc7<)luE_Fd8G1ybJmd&jE!4>-}jFWarq zZ4bEg?@9O5vw0ieK(A?)qUO{|_MMt))~KMUHO(&5MQP?rkVA-Z3n^2fAw>lzcv7H7 z35pe(EgIvcKSH=^5|i>XNaUK5o|Z$*yr0&swStuoff0vHhCC8H@#k2yp4L?kA#n=A z8!pnGD;f<(;7h92`noP!+rwC`dKFfBZr^5$loc)GFpv-fW%UqA4U{xNN|l4}Z)0!U zE85Q(?L*dHDS8C`$)g(CPnM|J*Xy!#uSwhWga*+3yug%DT1vSTl0Bo!rqmKaS1)1g zEhN&ND{bbq!%S`4aWf|~DWK6M401*Xk@nG-Ft*lBmsVPN z@sh4-(i8{3&;J0)9TBlKyG-=9N!o6iY260gmwe^+C^U8?(&_Rl4Iw<=Ze!Dag+!XF zGhCXYNjp0%l9_qeWZPTJgWMs)o^%eqfe~A-j{Ja5L}p~?_~4Y?w|EgT1ZHPd_O?n= zlAL5sjocZs!X9c>ewvd!JH+z zA>W-@@484MKfxa}^jb94Ns7$X9#PrZWR%NJyC~Y8Whb~pgmWMtFp@Kvs@mk*yq($h zjKT3Gx40BZ%0cw4V&VyEZH%~EMCa)gAi#JU?vAan&-=06n} z(wnnt8n3&bMej##?FgeeRl6+uO*ZVK(dCoQ?Lf&*&ZX8{Nc!%0Z!Kv+>Z0E$>Zt3? za;JBQN%M3C+8G(u)v8f_V8GP&`k{*vDesg1o!UplX;m0M=>kfkB2?wm|p zla5rIs5aP3lI^!SW2)Gv@D%>I9vbw|4}td?V_knV$|N$9 z*tBNty@|ag_9$Z0*4}&7Z0%LFwOXq0U;6p}^4Ga?o$KUWC$Hq(=XpQx=Og=zQ)Z~6 zuG6NjrhAM#+ClJe|&dIu`0wpIBC)cEXxvvJ&3piJx>-VEVv6C9FROQO^cl`tzY{o8P z74@Y&oWV*4I77cI{i#bO_xd(A0uMJTU^ODeu&Twn4zrwy)X%??Bp@E43E7=_%8UpB ziI9vEHeQfA9+&_J#~15@m3_t1^R>E9_S>%~RI&tx@2K8vh;Ot0n$nK&->XtcIy-2s zvsm|mMoopET+nEZW+C_ljw5Ai^g7HzV_f}Yn9OHdLA*>`WLrSaU(STgieJ0lp26<6 za?mEOrv;Tgep7~p&vl`A5#J_avOPrfb-eD>7PX^B!98ei!(&fu|5V9aMlV{Gw7V!EjmzHz8l$ zxRM4f$tYFNTQxh;08j#hrS|qNwenlPv{*=*z%5)hnqWWwM^~JD^?Jb`yV^$|3P2mA zAGr8QsEykokUhIju}=FX&0emr$rNca)RXB4H1oAfYn|zNRrtQ4B&`r@l<8M5i?c1( z9gPI_zbRQ%nmtDwc%dBU$!ZE>C(3Wp->(mR08^F5w*W=zn^hg}G*Gxo`Lr(NXu%BN zm$MkDr=vaEx|UAD93Kx-&VNBmP5nZ-WYK=F;y6PKP!-FC9Q`QDy_Te1xx>}MOSK}! z3|2anpPB4*Z$Ek+@$PCvcfPIsOA_UNmy52{e_YXTvyPFmrj?FUwMX+%-uWhC&!$U`-P-(EVwui}1GRAViMb-%O_>~ElHsmazbfCbg{hnn# z-yXD9nvrZ-l<#j>9wu#e0HP4lj@Oj>=8rZ;8J;n|UI5*5L;dyan9`}dnhyQ4jLxu+ zNDu{ljaWy=p=9_ew`ZsgT)a^=wemllwV#l@V3=i9$(aw4qIUS#VpUPs%JFC5{Eid? z_eXGP_lpX|AOP+@A@E}B$_{!ZJNpeIcD#^z6<5&Pc3dEn->*t_axN^jN+A~uG==nF7#(jZIPc7=+-rsT{J6xa!Rs5f#iIvV0w^v#U;%$xtEzPL#TwO zQ1Bnh>9y%RVSVqG%VXiwo2gBPL$9C5p=Ocw_)c~Kr!txADjR(e8U-ooB$;n+KDTzC z+I$&Ln>OwkkwuPQ7!yVP;ZbGM>e<;9##}G;0SJ%{seyqqjAhJtY}*3Vp#hMOp*Kio zxtZ^Iv9S8$FaXRC6Ypo6oIExjGZ#fXI4AZ2;#{7w*Z5DAGYz-G4hso6SR=5vYO$78 z+Ok{bA(UJCyVj+(cK@UPH&dDOD3<(1gmJYIj~&+$oY)XirQn`qSNoHd(10YPY^)H1 zR7-A6>AUAG=&ysjbS6@ie!T?h*;REsnDBG>mXu_6Es$D~VQb#{Fi)$*Xr{JYJyF-m zI3>U#6@_xxNf=&vu3VzMWZ6z%s>L33-S0MCs{8&fhQ1H-m1*q31Dt$sN_lySCnPQ* z=3Vtc=oh*=c#Isp7W0=Gt&L`jq#A0H_WQAu$7&U2Ps%PBk+vhzq|L2=wveKNI4h)V z3e_2D=^4?|$xSrsZO70$f36HNX3sx!WNqN{u6iddhN6O|it)l&Yi00Kwdwcb7RK*A z&3kmxpU@!D^)wOL!3w1rX2MoikOiFJPtg~Zb9z3gEiH>F6PMgHT)NT-w_YZD#_(i>0Yi}&}C}jJbOX|+4BXj zBb_`{Zxlq#NvDUU*t<>R&PAAwm&Po*+lSEL>iOHY`kGaE zvBgz^t-WWLTVy0KN9>q;X}9TpaIom;ML~(ah1^j$lX(AX*ALVoL%&Kg2>S~*n zSu93@OMYhKf`eV2G>b{GA-C{RZQ+V0gT5-4D}Zqw%vD={y1$9B~Oy zo-sAu2axRfFw>6FUjN|T>1s|KK2_gdb$A?Kj;>{_sDVVT`Cj!P)=fxb4wCsQ-#Vu5S6gwUbt$u2ikGI7c zENT(A^Q;v(G;z-)z_CVqBrkXmUhF!Jh0V=<6<`>a_dAN@eAUS1%ylflywYHz`fZL&IVVeS%ZeV>XE+%?KAF$-Ni^hAB2Gxd^IayihKEI>GGBT+yl5u|a zeYjjz_KOC{OLlobQE@wotZBWSjR&hsUl}J&5I$Bs0b2cKK z6C#c?5c2k<6th%*2xrhVZHru{OqAPx*AlBc`Wfnd)p-n@r>Q>03$}RCvXVy++9RkS;&jNj+h@3fM#=NTbQVLc}CZe>t3yi zEBr3)d&hxoF47oQCvy;UH=1Qju$M~@dTPh~RGCV|KYOB?YVN|N9tO{lnXlyaXrrJ( zq7rCQ{3(=r3A>$7a@qHWQqCQ?wDX4+GY{KyK0Qm=T=Vto|2eU?d0T#*>%%&~C|xJ} zp`vnL6q1*#I@M`~ARm|5a(!j>dJyhtaGVmJpRac0=G-Oc{&vyv?EUGh#hMqTPaRx+ z%ZwJB5`|Zwe6&2D*kawc!Txm}?iqZfdx*U%08^<4#S7{~<)CMUj>-q2E=;!-i*Ht*Jh(Qr~BC8d%M{_$=m$#5~&k3;?PHWa&FRT*| zzN}p~)am8R&krdUXi_%hSRG%s#pjChrOJG4uOW?mi3+WJnzr$^uozz60e6W&5?tR( zAMEaxqd%v>HO=58JftZw2o*{Cc5A7$76<(g^tM{b({D@nb@LLXSIP&CbwU0qw?>A4 z6M~_c_h!RfiWS;G8zQ4KwiHVbEvBji7h9x;+w%gc`3?QD;AnB+K$(TuS+EzICAwK^ zS~9JJ859*PHDOe7m$Sd(=s>~&Olmi9ED8cnqq7e<-vp)S2t2Yj~Q3$o-|M0WLw|xA<^Lo#Q z&jZg=S7_8DO(RM>#s|pj#m2X5z-Zpm=9`ELbiTA7`)X9PEFL`Aj<#Q}Z`~8Dl9zWK zng8Cz1TF_lgN#n`Kw)%GiLv>DN&6O=Ep2{=MQyHk!Rj^oxq95TKrmuL=q z=O4p)Rr3Xc8to3o5-sl19kwhWak`5_`H)c9SEfOELS>IR7U)LX9&mb{Dg(e>u|Gp8 zF1MZs_uEad7WgEcK|p}ZLr-bcpap;0`CfEHsYoQ<48_zgXzQ=3jgX0N`dUHt_^1GF zO^c)dW%n*%hv5e{;xrEKMnfjD{kVs$d)i5Gv-&#jlvzzRp}T)*y$~_H$R~Gf3NzW- zTA*Bbuq7h`F-ZR`)6(I#j1=tLBT@GrlVd@OrXjk%wiB^A9uTHl5*mhM*`e?`TE8b% zK4#qZ=yG#`32hxr)>9wCP6&3G=5c!%YuiAPTRWrtp}TZ1+eRP}cy-bd*S*60{Dr!7 ztc*ZTqh<8`4QbUAajhH~=2!>D%jyLtR={x4J6u#q0Dk2`b(kXXDRSV#Jb4A zd9&j2t$-KehD!I?h7HU=#_^BG&0+QeH^;VD*YfcJ|ewYur)9 z<)D$Sci2*!eR(gn5roelraRpHCC8`)j z@l)8tTC!EXs)}ph>Q`eYuL>+26j%>AqAaUAp(A|Z*V=a+vuFGP{wR0+CGDu%`08z# zPuf(QQ}adZ1w_I72~(gBir|yu2Td-e52^sU_)pN8AJpsr;gGEz1R^I3J#tsjB+IQ; z3*7tOS+E+{NvYgBa{MO@suMK;iyY;p!(BlETtr$iwxK?!{Xj!39`xX7?iAR1S|a)% zj!S%S*x;SpFimwuR>Pd#*3%|xa&r9dX=4Xi|1QWyzWx^fj{mRE9FcRl5^F!Y zlVK)(P#?r?BJkFVoN9G=z*@eaG@8V+)%$1mw}rpkMuwGRTAF&DW2;wYaCoWqu?HWR zPzcmGRj-&4`Sgu@SK`;BF8PUL-x!aIRW(92agoXD9L9%>FAR$icWG&1D%7b8=`H9vxm8aRrjPL3o zt20f)D4~fA>94s9%*JY}FEETGs)3 z-O5+VNc~x4TdMH}wAods6~5o8lbhRHb-%#b(l;Ezp!t-MQ(*q3H;cMo4p43_J?8V~ z?9ICKX26HRMb;)YmwQ@WUTh+?4|O37c5h8He}G^vm3CGn(<&*l&w?Dw6P+TywP=Gc z)0W%IZAV1XY1e{bh#`+Pq+W@d)bHW?c<{2Tr(SWqQ$9Cf;+NRXpnSa_^hc69ay)ZB zJPDE_^jh?1L7CG+?W#u5)~ACML59?{X1~sQTc@tX$DkW+!|gI2H=`cup?Bc?pYhRi zO}rXJtJV21u)?A5e>h79&-TY}hSg2nW|-^PcReH7tK(fV^D2S5%|e;e-h`S5#J?WI z-ug@{#l2Km^916-Nn*o zHm|}d5Q?eMt8hKG3Yltk>tq&A+ZjPkO7f$1LPY$)6x$@9`bcBI@AFgB&Yo#KjV7B# zPfQ?!f3}PB8J;vn=4os5W@h|!nl~n-QgM-kE{BbQo8&a`7E)453mp%svh7@Qd_=-l zw6t7M*czIigMLWnl|Y`p3I^QQZZEj@RHF_i0QFL6GeVg+HO)VE_$Zp#O5=5~+>o#M zv86^WvAtZ&c7Q%rl<*diI_ULrR;8%c_?L&})zerq?$W=V>w*x9-iN$FI+|71o@qGy zJS?V3(I>8yWpDhzA$arERQfi5hAsmxogNabBO%Bhm9!K)*Q&v04(>G~@U#z22`eqr zqr!XqAU%n-x~d8T8YE}r|L?2}SZ{2+QTx%p5i9!amHU=RJG!sm`HlM3{S(;>M5k|S z*2{Kh6ZX36g|EcH{xDxCJX5+k;#ak;81bQ;Vqh8Y``62G2_96Qa*OZp53<{6RA&MD z`cF@r*V+^2I)#d7zFO}`{EGYedST!+*h^qqZBkWVvJrrWk-38vka_1C z6WeVByy7G1S$|G>D%f%LnXpSd>jD;D$#dOiejt;qU2Q$pcDqP4oipLgs?nb^%oFL& zxqGTCH7}Z_d3Ts4fdl#pl=L>BdR_X z`fyr%^DyHJxELcz+W?=$`f+k*CA9MuQpj_iU30K^{`RuN*4)WWozt@){+?HDCxXmy2rL zotA6hXM0-aeN$FP8jU#sS`T@<2uHIgLf$$4p%X9Hws5AZ9|sv(&JMx<))~P3{K_jB zG-AqATD+*JNWy~Z6}1?AGt~Bwtk-U5BluE8)Iz_v1}MsHUMmpz6Tdkp3{BdXxZXzZ z32N{E>aaEa@nmG&N0Jl0vSZU_)P2OoXM`xh1rajsDcW*UH=8U)AJ$hw=xdIxl2_Yk*6ZbAPF=2Jlbtin zVbBvNgJ+Kh)?bUQ_*mt4c}%64TJLfUkz{XUctX9*xfbH@jKr5;F-h%<)#$Hid-J(L zfV5f-R9BAj+ftcmZjx^96ayqOlCKJ+g%98;n*}K=DcE+^%fdq_zx%dA&>kkDlGJkrjqr5fSp-uKO!Xd zeNgN&t5^*QIi3A+eI z8Vv*MM9J;Fj|i95#TRRhuPwNRh|A00hQ+DqR z=mo9BP7&yMdE6)6DuP=@TKtmu!PJaVQSxqQ&bKty26W$uovMY{99QEsA6c$1S+~pp*BYW8PzmsGV1W*O^({hr(DoGB0oi0o1kocGek-Wxu zpuf%PjYhD$ff#O}8r6KLd3L>)t{QW$s9l`3WKKe3+FR9OM->{0-uFswQ?m6qo z?_T+Z>=`iU3AC&45bTV6u*mr=L&QRh87lMUgz03Fd zT&`8O)YM5Z$YqNlbUj|K>PNXfa}a>U$4&q($j7=vygt3juCBnaZaHbf?G&o zg3XR;s4n*SLV(|%7K987CXl+5?GO|-7yc6V)<*wKFu7Jd$gD(L2cCqo67z0Ce5x=x z5p59rJRX{vo4s$N2IqTJ1soR99c~xU+fM9z?ja-j&e`{mgZQ%cmB@|#YNz8>mnD`b zb>4}x^W0+Eq~CL|A_WaY;~-(QxXpg7gv9LX4hnKjKPn{bUk7SY$t;`prO$Id`fbmd zLZCI^_=Sdf>5SB^>kqa?c%)GFQM0Xu{Xd+ldADk3kvaidGhfRJG?5_;ltP$rz6enG z5*#M_oMyvj!4hX{rPhBI^+XnjS#8Y{%iJLDz`5x%EM87$i)^umL7w)LIa) zgjw~Wj)ioR8W~GBpFY`7{sJGeKVJTL*|N9EXXf2V0@EmEM1;$o~X@bDkUfYP*k{5Z*+IvjJlBQD#>EL z@1AVq(K}vPYgph76^rfk1d8mvM?b@J$-;%(N??CCqldVlh_`{{Z+_GT9IT?p{_ffB z5tPDP_9R^_F6Kn4Y^cW(?_0kJlo4we&_(_XNi!$G@uCo}Af7~gnWhq?F}_PU`}t~f z5niB?Q!(4Z=o$K4tU9o^Yc7ed#}WXdqgnCkPEFl*kY^|BI%+Co!N-K?`RNOmibLaM z6TK`5RP9?&?CyTeO#U)zfEC7QFPq!G)N zx~=bO1G_Pce1Rdb74!O&=*sI7Om5)D8OGdVyioW=URyrzH?IoRxr_(ICAdftq!05)`8$tF zqsDwJ2!hU8275H!>H4xl=j(Me|M4{+j|@wTk9(WXeKDbUdhn`?Z$0R_8h;{7R+bys zN7#Fb2iSZi*%=F<`@#kQ$zaD#4^nMwj#0lKpK%1{^GTYZ8NE6!cR|j7lbp#W1TxQH zbu2Kw4(CNE6+KYo#MCE}7SAs(n%C@_CUr7S07#FMxXmq^y_})rjx=cTel##J6jW0V z0vj!Y9_-uXnVQ()DNs(_f5TEEa|Z{@Uq-3txdF9Z=~@K)oqELmh>0D5CUR@tC=jSa z3>;w%Py&$X1ro;YvjGxj8^>S7O@+IrZO@!8I?0HqtJ@3A8aDeR1zUmC(a&WklJ^O* z&p&kwm4M!D&nni|v?q}?kv?5H`hHUku?f3LwPk}Ms2Ks7hT8OiW>?1MyMG zG>JSb*QYnH{&vC(y9jOTPQn`0oWQ|Z2A~cZeA_bQq6keInoYMSV@p#w<7TfrXw_-z z_HbRmm!S$HFH_qFFF#y3h1QKpignV2O)+L>*iGB%*8-Z;mjyZTQfMl@?C-zNDB_$P^e$QOc$ys?D zuh_{e;)(Q^73Bj^H|c3hHPssx+2%VSxj0$8_v^XM&z6trdf+CH<)hb^?s>p1zG}w< zi+3Ip(YB}l546lgtKh-o$x=_f%UF|ptntuzPuh>$+q}ab9pu~9j*L;R*K@k&5GLE# z_|0t-U(*r)qOT_65FR_7E{k&`#U|zZ&oSw~(~)n0e-ykfIT}21(;Njl74D3{hiwb9 zJO*1aSybvmMqfy9wGxU3vf}nDRyqw!I=%W=L%E=fmXqaX{()Brj6kkfcpauiPiA%u ziplaLlrShF8%(KJMT6F48oX49u*UHab$eT)afN~ViKD0G%3u5!l|~u)zg?Ea{$NP= z8~SsPYAt;cK{WptKVW2e^5?fWH`oocH)!#Uu7#u#q`Hm<KZV26c@B5~?ICFf| zW4UK#v#>%{EUD}$XIG>=?Qf0Ay0-J}D9M#q_z#8w7-B_l^qibLY?j^scWCt+qt}j7 zVdSsX=H7;3IJdNM?qcIPJaez?5N{Np3k*83=Zl#OZsgWL7_CEgM&S%(9P)TeO__80 zI<*ePNiL_J(>usPK0WkJqx1m5OE-zS`E6bJei3Y`%fY( zPZ6LwfOd6y-<`6QfV$XA;WE}sy3>vg>HHLlD%451D}|scPX1XWA>aPP@ekBr-Er3Y zEO_<2(=fI8$Wq-tDDRan%198|x*QKMR}_e5Fpn`HwdLg!l=x_?W@)`)|E;ZTu+6AF z$ZYMeGeY7+)*PBv!!=7g!?XGAq|Cgwd5kYYOP^h(L`8&7D$OH{G&I1Z;+D+k zPz2z$n@iEBQu0+N)(S}DKa0UmAutWUPgLESR^QG-!>TG_#2--KZym}CpGNZSy)e(Bj0R`h>8{{=F#_`^hkN-L5BKlAMJ?JKs@6oB%<8$%=j`p6 zJ1q+gIuwZ zQ=r&b2tL~|6=ZbJCwPuXKH!pax-RQfG`3)Q@S``QL-`-=wbm<=jWiVScH!B~)5oMa zd>}biuH@$DTM0o{zY;Evs4P0OD)M?iU(Hs~HB0JlX@9i0C4{J{H!~b;eEmlE5ay?m26H?kF^^m78{M{oT0?Omv_(PO4GW$G5CmAnZ z8&24itF$GZSv=-o1txZc!0e%yZ)2vPOJN5TIYUJBIC831K0amWQMhZaNVJshG4#~Y zE7M)WR27v(On6?9ym_JE=XLXux_>BWXEj+laj*<>Bm5~DBH3c|%NJVxIm7JM&QENY zZK-OpLnBAIz((*P-dc>i0Ki1@xv-u-FPComgsYUS(0T>C_rjyj`8U!OFgx#5l70H= zH7c6)8A^K5sHp0fw+H<@YCh@4^^(9Ff!XqfT%>R1iKBA)et`|pV=e9dwrs3O-ak0__o<_a3`?7Q z`EFNK-~$V4{q^>~j<(te7`VVs5fR;Ea$oFO@<>_{{14}Pu!(H&jG)M8 z%_OsYtZ5T%$eW-o_#Gv4_vj;=LSLT3qka;o-x`2Vwz*-y%qsWz=q$LY-x`)JJIQW9(R72}TAKB9 zEtMI<`WY3A%&;8QJRp&lk)Yg(VnYT^37SI0gMMD)y5i`8+XF4YTGdCXa;?LA&%<&_ zXq)%YM$@Wifo_%`+o-R7hLVAyavDV878PluTFFbI7UTY0oRRU7p1VHOD2ryYSX^*C z_qdVuQ5sH|^z({!m0wA&gbq*hRt1*LUX5%_t#jhv)<7|Nd|BW~cno z<9=6D#gVkH>j}r4Ed9M&ZSIytP#WnprQfPt)=XZ31769qf4?Lhi=Qno>UR7f>9WXM z)D^24f$ZB?^J|ZHU2-XFwdDY{0U)8(v{K`w(B1GWoq#~3O2P z-V_x6F>F+&vi&!Se#Dd%sBmh0s5(3pGBT`!FB7E-&|)zppbr0M5|22FqLaCaHSdoE5+1dt+N&vbWVwnml`TzG;iVgmQnLY{)Wwvda z6dNoNeoT{Y!LcqM7Q~8REJ<)@Eq(||GOTET0qY%z>tT46UEofMlThq_XwC$tw*SYN4pz5 z;uyvyBvJz8DQBn2zoOu!Tpr^BPOEHEf>h>9!kAFB4nO*se6ffBpDsgF?0xZD>7R}= zp+xoX+#M*C&yak~{ajY+bVS$eB363UN)%X*{5dsIgofm=ZNumCA6+#NfrdxEy6W34 zm$1WN=$|yS3>?nx$a7Vk1vZ{}_|`ggGIfqftI7<%;=p;pwdR+VXXGYwjF+-a z)C)@U=cSwppXr~gnuU6*)HnY8kljKv?Kw{A;1oF%Osg?MEDA^NXOAep~&D4 zJ{9ZYKSnVl(%2zZ)3JraZbs{o?I0%PWP@^gX!#caOiS{J)*YQW8(v4%6|H?Sntqj8 zs|vOc&V>v=7s~h^A58yJvU$ql`=8&9^pB&VVaKPjeGWcPi!3La&>|sGCJ2r4EoYAwG^1tnJ^-bZoE1PN#AVg z6rDn|PvcXlb@1yqaLm5yD9q#VtcoWhIG(1Gk4*m>`fk>&u;`wH>{eP&qI2mCWQk2w z9HjaW$L_%|QNuY|`_HW|ouYJmd5HPS%Oi_eSP;8X6_jBVD3^%IC}Gx;$2r!DqnnJk zH3Jn`=Ge_v?xV#|#Hlq=jX?X&lbhv0PM*P+MyEBvWB)#d=4!&d^AQCVfNsC#9R1DT z6^p&uEJJMithO_IAOsoo3ErVEG<{zI`uQJD!`r)dw>rXPiCDLpHQYj4`YHln04EK8P#(4cfK>hV**X}bm>2+Nmrm^1JQW-w!*DF4x<=|gM%~g+= zb{ULB#Iufc1U=1K9CFA$pq@O{8XW@{lj~`i3g)qleqcam_0)FC!#e<|iP1JwRHH=B zoAi~X{t*M^;k5b4$AO9+?g7j!mm1l3MiNIQ6CNy=4!?fXd)}(j0*4~c9ykS@)~uzc zFR7p&sWA~9divcf+vm*iDw70KU@+Ss_xaceb^l+538z2(k8M^oU=oxEs} z8Vb%yy-14whHGOkF#Ck!y)tHQjZN|3#RPUGCOwbcP);9IHBVqiX8YFHF_y2s1faX02Mz7G=_;n+o8?0b(bwt<>I1{Vh_2J)m{EQdGpw1kF# z30%hJwjtCt;-00*2chG@*Cm-f(XY*j^VN{Hvz2{iV)jmWshY10bmhFVEWaBRQ9AIf zLiMe_F9oIBnbMRgHS({@lPGpqAURag!rY@Cru#3W#;6Kkho&dwt3W%%)pUA(6E@-V zJ@W>-DJ~?7?D9P9`Ei;$%l7pi1cuXBzDE~~Y<jYV5zcNghSZ7oR zb4hHCJr!TNy)r)Xbrxu+sNl-U&V-X@?s~W;X)t+wq$~v)O{96eBZ}`_ov#RWkqxW zro$p>b4C-j-lL<#nkb9L3^F0|SFHKbri{}$ydBo)PTcu{dfL=2zB}reeSJc;)_M^p zr7$Z{%ty|kj9MyTSvgt1cb7?d3Ao`b##951r@4EegVt}=;xcG6cWIN#5wPj2SAN!M zGbFHLG3C2Gy67KU8Myw@*W))s%;&&*)4aBz3llJ|c8 zcjQR?npD$omi9x9XHGp5+a3I4^6F*k-d&oN5P*)tpRg&BRwfw9is7f@u=E)<=hB6i zhB*AmD*rXH<3T|WTx#!COuU!KIf^Nybsdye{Mf3j%%o_-Wyxx${Flts4qesR5?3Ixp=QoP;U&pl7j08v@R~IKyW9?a}Sh z`s#Rt&76#DQ%QO!1qbf><0EUGKGvIUcn1#oKGrr)K2y*T!p4VcrnvGW4=SV_Kh366_R|`LT z`)+%l%^^BJFHM@QUo0F#QK;Hs!|>>*E&yp3Ee_!zJ*_ba7jwk|7h`r-He6Rn`@OK`d^KL;%m^*oPYR9=bYJA1M45F=*(Rvo6+3i$(^0ly9{~jGj+Ju9DrD& zu4>y0&h7{h)jjRx+&*q0zA*>bWtp2R@nhM(f&fq-82LJvzd_CCXeEiBT5mz+mGyB? z;D=020I5R51c6+0ejvx&%X4R0yE)k;`yX?4-Jh=)p&lfvlb}eaG0+E0O=%i*%{n4= zCNxAtnfiTw~Va_Q+HER+I7!s`SJh}%=KP(9oS7voC9=tx@IEK@@CFH+hY)$1J^mD0=gX~CP7%# zfI<(ICVZ&)W&gu*e)@W`23@mkEOGvN9hnIsHFi3!0f>tb;XG>Ju>%dscu~iIjH^fp zkczKtl_uzucq@#<3U>w~$2Mx*WYRwrX(>e3wKCU0D$L%wcVZ%wWz8$9!LK@4=Ry0G zX!I7`ZaL$-Tegpi-%Y6hxd!x?;#qtkEVPw{|IVrWNcW39Tjn<`6lwkWsI<>Kv7wVq z&Zuu55eTfL?e;_&l$lbD;?*$tJdcn?cI=(Qoe82g?7=Dvc21|W=y|b;dLgcv?;0^t zjr08^#KSroS=G0=CI08^lal7%PK#ZiGkF$sJ1VIzK9K9_v-#kcHMA!TMxEuo*Ls6U_P<*-dA%g*GeYD4;eB z4~;Ij&^*x6^5euw!8Bz_D{&S!=hLK~GjsI6_dd|al&{%O&Xdw5x`MeDAcKODI!<6q z68VLvaDbkE&XAr=_6_dHC(3vqQqKcX5hcgX|Fqi zZx3Owj2{Uv;l!f{2hV&obTF&U!s_`o@I3;=nm20gY+}}K-IyQ6$+H-jqVoX{Oc*_$ zWSG?VT(b7a3?eDCF<%IC9qYCbYL^j>xey54QN?gXl7FajCMKSTe}RK=$SacqT?3p} z6FVQPUAXzk^EH>d!jkgl9kW~(yV&X4s=<%i#0KUOQTL^&*5B?CcNUdaGQ$ph3naAj z>N#zK{+tD%BB@a)SLG7k=+8mT8>CnlET+fH%0`37wgCvTGlolBNA!>?{RC#wy`q=vy4SE8P00zmSE~5wEx6l z-2Ilvz1aGUx=yyk@Sair-%qA5qk`LnC>wKSTjM!Qe?4@%Z)|2xUdH$_mbn=_W$wkk zZ0Ip8su3W=nB{QoOsr(9wreAPZvl_#h&O+4WS`oxaqw7sNY{sh(eg#Fdj= z6nZu-8#^=zpA>c^n|p$94}^;)!vpN9=22I~5|?A&+D;yEt-M5m!^#bgAs!=Wo^+n# z{pk!#@UL!+Sl5>aUt|=+D;%t<=PgkoE6cGKyIX3*4$_0?P<**ZCgr&3XHc zx)m=>Y#UJY@o3nbyjg3m!P`!%LP!`9EDnN8xqmB}wRcc0+q2nJlUgYseuBg|CtO{3UR59iUMms)f4O1G=2iqp@8~R>x797^b*q~z|1~ePy zGp6DH#!NajB9AKFW)lFLARR>_X2ngv(zRd|vQCA{3VzhuES2;cR4Z zyN*NAE;@4NYI+62ylsTugyu$eFRh`$BRkUsu52=FeW2m4w@?rE`WkK5F1#O=Q|4D= z->|v<8p~D9B%qWNH?hcsv@}f3aUJ<13RIQw3Sr7!f-pI)`s@2L;hMc&FWY9Kb;8jGo(>k2-AjT*C6=f-3S+jmMfl#4+#>~CLlSA?N z1*H5hw*SK!Xi&P6RhG!}fm^Nn&Wqf;f*QSHM`b~h5Ln8N4hY1F&&9%_8>C#zF$f-m z7{r_i80mkL*&EgAc5YQ;@oiAwzh$qJ2HCAtvDieueJ;R-u%#|k7A9EDq z5LsG|p(qmnnRGyz=$mu&*U?M(5LY>}PExNO}8ywFu2J)@YN;N+At{-aknoCOea zBp0u76K9a~Vwk$Z&1eSGvqdVLP6TP*r$&-|5TRN5N9&}ZeR%IZ`ZC>$!B zL!3j7uM*5DU7wr)%>aV0R95AD<=NBqv4ID@KYj=5KjtjdbG7)bt}AD_P~Fp;LxICo ztfFs5vgP%KfjK^rC1ueK`pfT}vS9CYJ7PO(3u9l0UM3Y8?^T0HL}*QL$@>*PszMdN zZU|F6u3WEC?y~;=_-mWnlHlZvN)u#-L~UBlLasE3xu{NGE?juxI88BRu?5=9GPOn9kEidm)%*oLfNsqZINLbVrYLeF4+!&cQ z8hvLtt20)vArn_JXzYJ)4&tR5xx`lhOh217oL1ovqy!Yd!iLh9#Kr2OY2l{Q#guDH z@7u_Af5I%(edAru#wHtqz6&iuUOE$oPOj)h&_}`B9B;PWkgT_08NPB+IkaM9urL!feKh`%p%Y8=g(6tW3crTi26GY(H*4Fs(9$3@-T!ej1YI! zgf$HjCbzW*n$E=O4L6o zDY)^|LOd4K6g@?0wv{*Gx}Pl5WE#!jSK{y*YviI5OB zc%7X#WDKjHCWY7PP(&zO8wYcs(eI4JC>tBowAlWtyqRd+f+YyY2q7=#cb)ShMfWCqXY5j+tx*`_z-v2s=P+pY+#RkD=DJ6pNF+UOm(x4T+*;xSp z6kVE#Pa(Ms_`kDF*^Gdx0O%v2abXlUJ`kHV#u^EFFJ$w<&_bD@G8z;bf&EM&9(`l7-5V8tdG0M`B3bk@!3fkOa}!I*tg1wmR;?PQ2$)hjOY;xrHBdUGCPL90i%u?c zezmr}4x{7@Cnw@y$G-q7$DER5bNG#7L5(EJ)B|YK!&j`4%2k_05bAstWlG}S3`Irx zM_2%|rjpjk9a~y$0`(F%MFQUg6mhRUzB1&I4kthrn7+?e95E{d%>Lc`2(?og$w5)o z8=;E&y3bA&p6dgAaKeL81sRXyr6(2l{reu6!C+E{?~{H;i3>6xa+Kz2d7VLJnb4{VnD2@a%|B zeU<9!Y+8T;O=(I_+gGfyP^Yre2w;?q1B%(e=9ZEuw7NXtCX7pK*fb`bWc1(Z#+aTF zu_jwvLI1G^0QgBWUw7>R1E|zr+eD+pUqdJYl!zj*yRlImK{ZS@Q`CtjE8ILU0mDaF;-EA7pTM2ol_bySqEVJ;>nhPDluDL4&(naEIIE zdB1h<{li*4bazQtopY*c?|qEfAvjc;y9Rlgta#ZWxWLJXzWodl4MjO6TyC&(sR-r9 zSkWm20S@QitiYr16M6k|;({9(^MjD^--yfmBQw)q$?qD)$H!>af z6uCQLx`6GuKtYx%U`3ReB~HchC( z>5^KSysyP~4@nJR-o^bk%X0bc{|s_Qr8&Ov^&#Lr&D+SGen;|h@qtq#6v#reEOPis zaM?QZ*5uW6dfA=rh^aV};*t7@LpHVLSBueU!=wuk;Hx*w}Ed)WH8 z&Ng4Uo0y4TkJxEmm0Y4EFn1y5;nT2(r*z7oFjdMhO1nyivpaVB<2^%nj`#_g{1S9- zmK(-hGAGll;j{PJ*K#!C<(pf8xwow)+f%pe+~BR&SY414Pek6--%Hout=$N2c;7xr zS{erdzMU^2I~{PeCB%Jzo@9y*0;HDc)PyPOxp@d8q%@dAq9MwsQ^fLekF^F&m18f446!m-!DgRskp#U1!gMnH%=uF{jV^pXbB>A3HLr9q(@#s zN|M>sZ0DUpK~za!CbHzcf@A|t!-m-2Bx-WTH2u3bfx!h+Sd%w~^PDLfuold1)i}GK zxKcauLgJVXYBQfE1HCC3YLV-@WSK&;=W8I(pl#%*2a-Y@5#Pd&SI?kSiu+U7&0&da zraPKHHHb4-EhNPG58|F`n@Ly`gnpjClI{%Hx$eG)89UWm?f^)1!ai=LXccKkbaz5 zR${YU=3i+!_j9$+Af|t%t-))q6ut%O^a}~76E(&pN^aMrVem6(7zf#|T=p4sD7c$r z7~jywc(yOtW7eR{ESB~Etr*f?$oSY^o$!Cn1L`HXD7c%r@x?`ZYsxol#j;)hVEMyZ z^JlcD40e(y{jfW_yS4lziJk^NRa%>7PcjZ%-%*3l!G`)$c_(?^;d@8A!{CLA&OE7S zQ1h5&tA0>&T5_fd8>{2%*7;uL4H;A^5?Ee*x9^TRlkkvT{3}(Pb4k)uf*=STyffxs ztn3g5`f(FdN@u`nFh|IfN&(VcXw=G(JQzUC&fF%1Oa$EaBQ8q;LWbPkgQAX(#v(}p z_|2d=Az>s$WSnw`q|MczV%$!}*&$$icdb;w%8`R4j{u7%Esw^{vrnEa6fXVO^CFmn zk_I?uRRa8P9A7FccpaXCn+J1`2Q!WM6r_>L4A?GGTCB{TP0v*bxpKJ^3jy%EB2icv zFtUmG*A#0O$lp^eli|Q+QcH)Ln-|5OU=DnuD8ZzbLk~7K#GzOwMTIM72HbLBJwzRE za+Dem2W7&6EiAPVFJ>?lRf=Gk3^S7e#lL&_WtO=UpTerc-2FyXlQb^t|KUh^8lXA|k{L?h9jW(;!(smSkl0Y+s-{+A6}q%sgQp`?oTTJ6dK zmZMn}ghKQ>q0EtMv_WBlAe|cGmrp_aN26{uXIdlHT~}g&oL4USdyHU21m(|nTv>l8 zKE68_bdGK*scxe`C^P5SCmMA8p7ohfL?W99I<@q}60uaF;y$Fd5z13L!m1|rfm1*) z$cKI)QdBKK9Hy_|DN=vN>o&@?Bm3xVZqdUg&|YI_^U43K$rV^8;Uw6H8q(tbsDE?< zC~GAC?MVMI;>zWaKp{Nr$G_!;U=(OA(JDX5xlq7S`NbAf_hin(es~ie4o+T%7MurLMKW7V)WWv52+RrVW3S5saDXWW^zv9MN)|5)EK(~Cw#_iymP zHdc^&|GTYR0&nw?*;g+tr%)}n;;JuNt#ApK$7y7yqBJu>hFher7QH?g=MQYXpR8gb zeTi1uB|Vta(tbVjhSlM~+3otQ04KJVEkk~3Dq3h&i@QITezFa=-NasaDwEh(wSHg= zmZnCBM3&a?+s8io%;-;Dx8(HDWxC?>c+9Z&~dc;6Nvl^=j z79@uW`gK1YTiy||&v_$-zpL@+G4FsR987) zzrB|3ZB!u24_TUaJlt<)Zs>JIAw}YJ3M`)BofXObT1A07(b--~!8}KNN(?JnHExwp zrHmZJK+!Hso(L;EtO^96bUjd=B4AoehcTbZVu~9oSM%aI1(TrwzS4>MEihlViBD0} z3e_ZGx`)Yih{8krufuR?ULjJ`onyF#NO$k5k|9IvBzZ6g)WuPPfPeD%9g0HmB+22z z1&mGsJJItpp+$uW_ELeV8%VKCjvI&q(>?ZABml!aSpO2<6qgV`fQmopuP6fL?aTdi zs3tFv5jskIFJP|o7Z{Oa4%!Jz!6Sh-$kAfG==C>6s6O+^GD)-xp*l|Wycx7Wl?0Rw zLl79`Q31rt_hSP<9&zs^0Js-0PO!$ph{A{Z{ntOR()CxB;DMhIB|6D*LdjWrH(c>- z%wJcBw-gjwR`KJ~sgAe11-WX)u6{FiJ_o}an=sNzDJg=`5{_exZTK{IIBY+C;nJ?7 zS1mP7VU!hC7jYOVhT`9@mOWm$zDKAXnb-Lgv4S8Ad)$6z8_Tng;5OD4+R8Zd-Kv_C z=0UCdL!qxJlGn|;7BXCU@ZP>aizQ;28lFn~F^#D*)TD$RJKRO0g)zp@OJ3@n#X6$v zqmbmm*0@;B#lX28LcYf{k6sPXsyFX<20-B*qlj}tCY<0iVv+uuARO9fcXne3Tdgg|c?IBW(_ zdGQ63ugiOV>p5%c<@8GEe@}o%1F05;U6f@`LE zqLjLPcRRYNe6?Q{-t)I9_&eEGcWWO!cOTAHI6RH@b*7k zggasX$xg8UTFn_ny4yKe41!m78Y|O?t6^^QT@jd zhCIl&OUlKD%aN3_FqLj=+S^y$=K`b(Kz8*|8f`BDe15bhKXSGQTe?SqdT`Poi<%g*BIp6my-!J7kMkX8*5P??G?0x0b=AHuT&7dgX9 zKZ(ePunK_RC`>$dTQbE@{pK@YWFpt0eOoe#%8&wBK@8h;J5gKozyoMS<&|4=v7lRe z3R!Cw&zHfiEDFJsuO4w#%;42N)~D1yA$ba#BREadi=ofvW2M%TMbm{i@}-<=LCH(} zB}!+5>dKCrY{cG887LN!21!iC%$#kAe_u=?-UUgsUTY_~CPPF7t-X9dnIjWlYXeNc z441|W^8Py>Q~g##-*1f)IBB~A><`6OUY86EG6fioOdc8jBGk`M9F1)H6Iuak_l?MP zkg~fhiaIaxZs)245Xm^&zR}HW`HpW=dHVGjG1lBgS!t8xX?1+%l zXid(Uew(1v(32%oGZ|m)M(Q2o6~%qN-_y@$P^895nXE;Y8Q3}G@Nx3vZE-@On(tn> zi_gB%xsr1?&QcR$-*4L*g=-0zM_^(3rfNm~+azy4&wce$PAl{o#D>m3SSjvv$Ypz6 z;yWVt8<4bJrf6g0iOpLv6l~=N0Wxc@r}7d z4i?d@{r~&G%CEBP=`x^SoaJD0w)O8*fervK039&=Yd*=WK$gZu#~COAH#+`1 z($hlMOS9#8^|Unf+Q17}axAy0IV~n%?i`m^TK_x@f7Xxx^AoBW_`i189>>7lqdzg~ zbyko;r-4!uIF{~9_0AQ4%9PPO9ldpb1}y_!!SU7@6zA}N9ZYHkJk;d-(qTo5tqqSn zmB49(GC&*+Jl574lQV1Ua+Y~AW%}#D1~1|A-v{({visi$te=E7R54n#J1b|xy6#CQ4Yi1JJq1uoatv!CxuwFHV>IQR>DVrq1lT0~pbAQ3Y-AqN>sYk~xt#W1PSf?7={iL}p$S(VB4X~~_0Fy9tM?z9INhT6 z7z-v=H*jEv9jOuBZKd`#Vup&6uTHE&K$IEbn)ugbfBwAd%{BiO*mKvWK7(4GnOJI} zJTggB3Xe#&J>2$5Iii*F>>QN;Cwqg%NXhl6#+$FLu)$TFj)0GxghzThWU zigr7$R3^cC4UM-UgHTe&R?>;>hEaPv8mDbilv#=*!VW#uuDR%_pB2nAdJ~m9x{;y$ zEXReth&Iu;uPGAiYxG*1 zZ+|`{pntY3!(_ZICdW?0IJxh}URCOA^0tyX1bhFU0SRQhLHJz^n%lNeZE?r>wA92= zsIZjWRat41{Sfrs##Cv#LY@Is!gDnRg~dhQra&d45SB5z%KGzJym9VFYMES*4M&xy z)+~~bty}eR>Q+}t(w~`y*U_eY(sjrFmFDXDE{_tm35!?BzYM$8+J3s3AC179*2Nqh z^TFONG@v%PTSg~nPiYZpeMXnl#_3neFt80OhKCygl2gS;Q5LK-eSSRlsrZ(VSjIF^ zx4WOy!l;}M)pht(@tZM;>^0Y*I5U({ljmffL&HwH^mj(@@4USbzg?$>Dq-jd*=^cw z+B>+1e(6)>kn6kG&SseFh`V++tBe+YuYy9tV;EBB89S@75}eisnhLl_#~p#P)*@^J1ojL3Q-}0=r zAX&626}(GGmbdj>NUySPj5M>)as2sZ$(qBJwjrue5B-CmYjFp(K2mfj6-Y;ET(efT zL*g~;-Pi%KG~6v5>Tj>--x3R|E%4T_T^FL*$izB}q}fx+JbwnEnN|c@fF(3tUrBop zC~r|Ox#RKH6?js_Z52L)YE}FN4W-Uv)q9sjUj1NLQXeR{0Jj+Pn^B!_k69h{vcza> zDq-(*`EKh%cKzXFTuE_sdV zal`Z}kq~FxR~qd${po_dujR&sYxjNejj`FS&J0q7vb}k7Y`RT@e~)bBHGZVV!>=-4 z^@(wvXnDF)5YBhPvS{7L-Edj5P(DMj9Kep0bS`)Xb)eFbz=zQzE{;13fgBBuNQDQD z{1K^HS-&o{+VQJrr4{cdGT7SKra2P-?r7^MOBao26^56B7kdU}772C}n{2p_A8LCT z?le<-(ODR8o)x9ZC~-?;$4^VsfM6E;3X>d>`4D6Ex#sSP-=rcf_x zS|?%c3??>9G{+ec&nM8U@;zO^D(J6m{I)t>xQ~3#%;>jg$y08;OL$mt$u30^1qtV2 z{4y1nUIAHCOOvxR)y*LvB+607FyUSAma#l^S4QWt`Bp2K65GqffX(>tPLs#cC4E<9v_v>q&M1AH*AM2?hPVyJ-nGYz zf1To5R9}0_X{tIdu^kaRKVu%y^}tsN``nuke6*bZPt1gKOlS8DQaG4>2{#PI!)K@L zuYEcso-P4*+eI4uknj2upS*+{{{=MH(~;NMRlW)f3)iwu+u!cPX2-03I$mM`%a2pV z#PQ5NN^Sq=Z7~i7U%YK~LLMG4SX~!p|3yhYYk+6ld-QnP1FESP2b_Z7u5)Gn|AR9i z$7Qv^+BN8?>bhx;jq$cPao72W#D$RVN-MOB?d^jk;MQXYHU9UM4DA1fbV!T5>rXke zT|ldczq50$gD;=1NbaYawvEW(vh$Et!gc=_VOEp;`EST}t~FsC`gQoe1Th%R*4?pZ zz8zgoLq4XgXhdG?f^^IO9#~oWfOJLjpw;yhNgR#YENJ}tBl_Ya;o=^M955vO0--nR^^#XRMWq^v|LcXGX+>)8Q z{t0}`RKRol0;qlx8Z*q15;ILlvPnHO-x#* zrTmz}v=dZ1XBi@a+Bv8?5~V0^E6@?Z>&JRI2)ezKQXOaXtkjIHE|8R!E%k`FrbBU2 zo5rJof2uwwjrE{d0Qa(}FX`#b%~E)GLt9{&Wq0BCF_OHN9`jt7q8mxfd`0-jbfwC`t-IQZ|d@3au6(IQ~mx> z1LoLM9Q#~3Z4k!quhdxFSWmm_V)i}yTt&t4!TNhyrSjz)>{nTGBVQy5eul&KmCi?} z%`cF7s`(_2Gim7|~`_xt%M zm3El5&*+L#ef1)wjR?}vAk9%)KUD(X=9A{QJie364NGcF^vd)yJI7+0V@0e{`JqjI zV%OntSYvD8@w0`2SmSKWYRHt@3A(swON01+{pF)-$)oGU-RDs9brTvuGj}|^ckcC? zCMCKCPc_7+iU}shLzl0ponav@eX-%Sp?cB9NtH^f*NuPjj;(d^6m?a=cQzE93MR4ZpI-i!+q!t;MyZYR{NV&qA2jq&hdemH|8`ci zz+4@leKX_Plqr9T#Rju38C>_hW4zI&VdNl9Gm)4H|C6rn_X7_rG$WH}s&V*qQ@Ey< z^1cSZm`pUemrZzBbI6xyTQ*YdP$`k05v7n#<26s9I`BYR5@J8B3xE@kO|KRke6A;! zWD1o@ayf+T_fWk$I9}(eRbe)*MtK{b6+45y<4>ZU7LFfEw3N!;_7>~3IxU2^l^Dva zrwIMs`V$XhTtG$XEGY%IEU%F1#>ctTfn>$?%jd9CYck37fZb$(eK>zt*jjA7(@p6|j-c|(T$vQxkj}~y6q4aff&xycGbzn?xN@Zh<9VXBzH*#WA?5Up zv>##nf@zxPXHhZ@az~oHJf=&n5@oG6j{}xVwiSEf?iv#*TJ(ga!qS6~fKa-AWoc;# zwk`O1tl}MJRmGYTyPW zi1d|OX@n|Yne<5MKxVTR+1M?eA>JBQ);(?ssR_ERC1(42yJOmDx$~~?$f}q6ToF8|j7q&Upz4_q!e+%cV%M3M0(KHVDtoJj3Ps&M?5tKzN_*nf z<$kjfyqONYk0fmIv_$_ZFyv8r*q|G95dP&tfs9GhLCKPvxOP?%(*pww40DX+)?che zXvIAr@HIEC;1ZsMyv!?PNDOBT}FhFkM{trV0*Gx?F7ZKebTz&+YPAuO?C4PPVAh(PVHTiR2 z%~={RFq(CveH&b@^J60;T}vii-pKiTYOr^Fd{`lHYzzR%$dsU;69aOQ2H#;u5sCn4 z70+&zZe-elQT^}$a#)k7)d1wnq^;d>RElq50q`_Z{ZHKWM+Og9HeFX>!CQ`BlW!`D z%lAj-p8ATOLDbCyO*g!q80Q?0pHBAB_;$MHODlIt16Wd|!?LqaK5~bVLX3-d;6)(l ze+Se(OabTwa86AIpnXUoiN!IGx$8NJK%E0&ak@b~`=tKJ03wQ4UX)T=9$l6WSph^z z91kPZ^P>>qALdI40IGHO1K}BKVj0oedZx5mOtxad3l>V$D~~ix8DI)Sa)q3j#{s00 z3GmO*dVZAj(%8E=v?h6dtS&{bt&aR zC8m$xX`?!5T3lBVe8_Zt^_}<}KXvw<Z*3 z`MJhz-(w6jpR28|UGXW;#mJCef8Rt)QYSp)-%Y@Ep%}1LZ|uQ zVnIJ}y{O1w1ZmRzSXbfad`z!TGPwB}B>6?~x{2`_1fjX8IqJI;nOo^7vAx40xmgMI z3SW`+p7LGAdj|b`$vQ*0)L2wbAI`;r=Kh)Q8uFp}0`;QAV|V$<@>J6!^1a17m|R@C zM1|k%x|2!XNVFchOUaN4A5`T2VAnQpKY~xKUM$xtT#Kj|*>|V$t2vfiqbn}Cm2EL) ztiMt$hNUOM5lz=h*$a*5#XX^-CX+D(;*Nh$h%td~LQw4Zt9VFdO6tkwY$2VTJo6ab$0O4rZS) zZqH;+@0ufzKfGoeboO`#5%0~B3%~mhX|OSK9-p{CW3?-f z6V?;dB4=<|Tu9nK%G)~A#$``%rh={LX~qzH$~DQ0WZTlq?bmed7>3dTg)j(!GKpjF z;ZTV>fpY<5np!3tES_i;4ZH{d9w`H((IG3NAdwT%_XqhA5{3ax{1OnQ3kxW4o*I@) z+RlO80EYA@aIgy@Lw!LY0$~q;Kn&a4dI2E)H*14mlGg<*%R9icW1$KMm8g5*o2&VO zdQgBRZ~#srfIUH0Mx#}BoPszX8WzweWaqu58)0TmM$Y-*6c(%w_Z5bsID{hA5#|+6 zrt>fzs;Yj>I`UVZ7!@qke~JT`qJ@Z9_!%zua<$jm1`!ArC;11gF!G8A)(yigX2|=& z=$S_haA{yZSY}a^R0;-+o{!8KGoR<%YxB_p1c{Y?8LWS@j$zZk=NmM*SSAg;Im7$) z=(!-!a@1LS#HM_hmJG#gXVFfuknbPHprRUQ&iQ&P2_z)AbI$YV%(<~&b`J-nG}Rb6 zm=-F^4a}Wkq%?+!Lq6;$FSwk4N>$y`fE?bYBs(+rmi?lFsTf3fApdHDc6+S53uVpa6^Eq1VV?&Zsz!F;#jJ=BkMPkUsx zr@0__=vCY0iQSbE{>Z>*_86P2abl=(ZeK4r4~KgD>M8Y#QR7L+{$q08Zi~IdUgQ1S zguhpLKABd}pp2p;RhOoV@}rz90ZqM*aJ`WppQPxz+oQ9=$3uYsJ{~4GkAy<9Npi7p zs4Q3)LnBC31We+>FV?pLfoFA&YT9N`Dtq-Yxqs;vq6#v76xDrzXjfzdA;zM zbU&K}n1&Z%*aw=;k9S6YG60Ace$J34@S5T;6}}tD&!AwW$>^9)R^PR-BfXdA_)a{U z_*`!J?uz;(Rn$H84KZBTyu6eKfO~yX=qI`8tAV@cGW2CM`|YsaG#UM9z#Q8Efzz?Y zzYKC2gp$`F(A?C+#chVFTys6cI(Ly91$NK_MJR#dw&o-WCUzT?AmpqS50;3RSUygN+!+1q2k7Qwf@N5xgS48 zm6x!o4)0cc!!m>H7ZtUQj74Q+PNtj(Ozq3BWbWwzYBz|SkwG!Gb$V{LzT+h@Sa=g% z@+9MGdrzG6kiJ2^vRZm0I6OVF(N(~FlKl*_EN%DiAI2;O+rP#iDgZ#~uvqYzLP2}# zKK3lK*yy4Fa)mhv0{kZW4=661WCQ@M?e@UTp5KF+ov(#SUU%z$ZOBN@sBC;_FBly3 z_LeQK{=Mh7-ZwQW&NjJ$Kg*?lm3Y11%-$8_!f_DvohxHxUP~!-#1b&8V z8^gW{MnLbv8t;L1oS=@j)Ih^1ScPa^O;=dHbJo&Y8&M6HjxYqkw*ep20_nfKfIz8q zs!!pilK>nu00EA$>(_`6f|wgu0kB^fY(Im4xL@jb3@?~^W5AfQtAq;o`=fld^SlU+ zup3YsMFD^}dBUWdq5!C$2A;T=8k05<4HuWxFM~>nemguuA2|7&Z~!2o1att#-Ha) z{f|U}oc(g~0XFjmKwAI+;3r=I@Z>lFaT`SBWQlQzq8|Xl0|4Kr3kx6(+Ak78E?9ja zm99Ap-4&&_6sFI_;xFQ6LCQVB6fJsTQb0`e$5;%^=SJpyADAX@`ILNs8K$?hHd{%=A4xrg%ZvXMJiVU~ps6bq6DmUXmlHlHo{xYIgz- zc8Tc6>`~x777?~XIRGpdFp6a9Fp~|CY9hs_D2`iPV)s3K&%Q)9U*bnXCIrWPj*0gy z?Vmx%vjm*aAOwx>C(}yL_cu=@=PO658eY<>Fb7!hhLzDTLldrm9r@o>!%m2)!4z_Y z6a%SbgI^td)pxd(p|>xL45p)^m1oUEGRRH?=hZE5tNKa#muiN$Sg_yJIm)qTUZ_;U z2i`ob{KC)9?ewlu{#?eTF=bCr8(rZzDyyhZQ zxSxf$ug1D0QQoDHma*lbf0O&lovA7Iwd9pu5?VqWhHkoN$z6_4=P?%)&zJQVOIj1v z4!%y4;Dl|(_&doh;)!G^p5rwLXDjS{QO2rlqMf}0|CM;bsBiRJZG*b0{ol)#ve|H< zg(fcK-@A^8RO&45{0(L@iYF|skW8rOkx+^C1E=ZXF@^V$V|~Q4_!KoQmA>Zj6<@$@ z8>PRAroTz@NHSeWx*c?avKoAtpljd_*!q*Kq@_xvIH)oV_0%Z{40a|$b2^r8y}z1D zEs}3w_EsZiU#z1@x@P7{3@SK_Dg(12k2E@az_TU_=3tPI*3G?BI~ZDab@$bizI&Gl zRYHp7UDx$;kpknK5!=h%4$NP(m)FtS*CIPH@(3Xn;$`QU{goJElyNZm+cJ~b1T$93 zUS77{;DgaG(HtlT9io|4^+TGrC|Et!zY}DJDsstAh5E6f1ps-@4cIQ zvN|{g=j`AFmMQjAGlPvAt0b$#_e*#4p~xF5aKbqYq{(#eT$O9Cy?|1SJ@ zM+>95MUDGQY0zYo&j!vA!n720#-8Nc&KiYkWQMDb%9hB1R|3XBRz6~sh$r=?kL0gp ziDgDyLJ_zbhdvRJ{g7ap&nAF}2{6!)p7;$%Uw~Pn&WjI-KuH7GVF3I5VsXiFM92U= zCm0xPfHp%49~l3l=oB7tA)kiY-vgLqz^#z+sv?QJ#$EfG`{yyP5@H?)kVr5gh47GK zfKMYyiC>uH@G}6p-)}n&SZ0nx-~viAyw=q$=C>N_+t`VrR*-qw~P|$85D>-)b!5|&$k?!T~z+F!{x#F`wLIu z2SxX)0Oo^%g#eQlzb|>^Lg6#T-PFHdP^?erZv?-nY;@t*+^+3|jaAE#x+Hy0<*De& znP)}G)PM@T0KS1n)1d^U!jNtP%3O(i0Br$aXh;$g0&UoX#Zwd}z=R-Rp`&|*0U^6` zr5>%F@IE;}NQnsnXa_hVR6*YNY4r$nC(wOtZ7t1F+3l%Bj?}Lbvl}VMM6BMIGw6ACtqp2 zM34OZDc)VTge!K6SYzht*XJbS8=hkp6y+porX{z4NQQfU@vt&$MR0rHw==L9uiA^8 zR}p#=EK7Ec<|}5xscv}8@Npq<4;g?JxC#Y=4q;T`fLt017G}T1ix7CM|9k-%j3l!% z;04IZftAG0t2DX^ApSw=P9nV}9>?AI7OWLF|0?DK6&-9lW+ zHxJ@7<~vr;v_}J^F1B?)5v`J87UMCa&a&}M;IOpUizO`Ax{Kc5cA&`x|Ql`I9+$&dKiG(#}$Qs;s*RjxO^#~p;oZ^kDMh9 z2_la(pv1%q3yD*le(0oXGjl z%IC7=Uf)YZg0-o;l(Hve(rDqCw^{&&>BZx{_&wzsFH9kp>^!i6do^pAQyDonB{qf| zFeTjTj>vru-@4wv%X&y(KLJQP^AS&8Ty9T=MZVO{or^w}FFsypnJejkt|AIk7{9DQ z+{2K7;rd56ECBGuF3-eI#eCsQQLvDGx?5`RaZ9>Cj)Ww8Unw8nZBfIiSgCv^(rJzL zF%Hc3+bl5obQWovTcH|AS_*xaH#N!s3@U8|Cwc)8Yj9t=x%~%^i9s#C9S0K2-Rg?; z&Ys-k_vQQw#J>vL4XCzCJc`7Us_C8PO`HcIG?loW1tkNGZ`Q0~8dHK8N5!X9lL$Z1 z5%jVVUa8q$ye+GHbLp>=JNxC5TBerPVcA95xlp2BMrRDg;fyVAULERm*Bm{z9;s5p zR932?PJfL`wQ@;aaz5ZqlSC)15wdN6=syyeY1ICSP{5j3CL<|#SV2Z+RHpf7L<$po z3XqN+G8rdfwHmfsHc{mHd3xYA(<=N&k^GQIX~x0{S$p2{wCdM&mOf?a9OtEH3B3_R zk+0Ql1_NVNWm-@+QxYW68vUnAwu(zc*C=vh3id)GRO;uaQyOR|73#<*64$g(9QoH% zrpmzaIWtA|h8|+NfAHqM7*B7Rs3%Nwe>ccoTy;7BzDH0fy_;S>LN2}-?>z%yF3s$R zfg_e8I)68x$XJ~H_j*xXj-JCJdOIwe;dgpc;#afX!7pOpI+yXU#(J`!o=#b>E;7UK zAjK#3iCbjTu$b`=dfcZr9dh*-w<)+6D;4sM0S%3BnEkhla6L%9)bL9sv_8#vMzdmQ z@VjHyq`AYYe2ls+zjWO31OFEGl=)_=Zok$D)J{T?lC9huP>HBXe* z-F^tgVil<*ymRdBXCJtbKeIoh7vSS0*}lh`2Q)ewvQ6U567_L_m0S$2EggKSH%606 zWcEE0rY@qZq$r)E<^C86sUOqWN6k=5_O+q*Sf_hpBzlZ~Hw#rgA`aeI-V;Jo&oQ_t zl&JZoU1XDOj9@&MvYqb! zsp53?x^u<6~JEiK0MH~@7d}>(u;G4n0M?AZUNwqu$HZW~v ziF>ed!GnaI(OlC>`eQpB4*%ptei22){W?;&UhtV<3`fLL^D!T99=*$w(wv#_Re-#5 zS3ts_*i4hikDn_tQuA`$+0#|`NU1GAX|5Q3BS<#_EGgkukCt-G%kkOv>-Q4z4)-|6 zEy3$*^UDd%$1OOwP1!|+K~F;uq5xtP5d5B{K$y2$R`uf-S7mN|G6WO$lDkOVnrRoy z@GILVQ*UJ+^H=AtY#OdNT?*L9qR3?H^;kLKl;;=Uln9=OtsgV@adqYyJ8V2^Ox%bs zDiyDZVB3m6gXSMqW~XgW; zN4-iEw5qxdazBcN51Cicxd6F@T9dCfs#^79UmkFVw@&VH@WdE9dVa{ylbGA~p%!S( z>NB1DDsI!FYWNwMNG1m68Km+irgS;hA}K7Q%=hY2SeLMcW*;MTZmKs&sbO`W@zh>w z$?=Oz79&4pff>G?Tev+6!VWSGsse9|yN5nSr%~#>cj-?T-9Kv06GB5(CC-0{VH_j7 zT*3yyuk5pzY!aBS0~rO*JM3OrZ41nEuGVL-JF))qlHtyu>=Tw0M7u;}_sMGN=w3=+ z5H1;(Zaj*aI(M{HP}zovE?DpnK)%){Ma98}U=zCjMap`k;nBqRHp8zowdjf@%YFLgux;q{wm5K(LBV>8J>dL*!o$LzI1 zvRia>JjIqh8~%`1JU90g`)^%6Y$SLWi1xCso)H3+Kowi7fmJo+pwt+M(TFJ*hTa0< z;Qqmg>C5I)<_pg^wcZ*J;S1Hu4yWMoHnYJr{0&aXyBV5hxW?~+Le%G zJOD}$t49A0my3PcrnU8m{dYxZ!Z-FNpl@S9Tx(o zy1@d)M+JV*uyID8Xp1yliK{2M-ZVzK|swDV`p;W>uUwv~$9|hXX3yl}BzPP@)`Bl?o9r!p}#jZ22 zr<_$Z#3&}x?TP&pJQb9Awn@C#qtA%BY*V}YQ*QjVrdm4rS1-%YVkTY{w;@vwDw9R6 zT%$4$cT{ffk|3J6$NYS9PfxW51T?l0 z1!JuVWI%7jLoM+zk-o}OhIMb#AGead(gW^<{WA=-KoQ6k>lE~uDR(78B~sSc~OmRX$h!HDOq$5Fn; zVxp4340mEeT3*{84nYJ+GI?+U41c@#DbpR=b=yueTK4R`6lpdt%Bkz^QgMO^eICSm z^F^TBZDu*9BCol@OJ%|msr-4cz+F)62Fc|C;qtUKLiYI5Z*Hd%o>9^?3R2$W9i!?# ztILj`_SkTim_~s{;rzpYwF#;RkW6T7DEZsZrZ&Hi`2_V&qW|DfG321qQQ>$MkXc`; zb~|A57D?A&mIMvfH-@vsrg2D@p^}PDa$nU$VqAASw)g?9{!;ZNmMm)`44kn2gw0DN|o0wFJnG-P z=k{j6SieSi0*AMXEYCc+8aeh6Im?8pL6omIdN_^Tu4L^s3}3bd`PMD{ zOsm$JlfY~0%A@(7kl&Ad%ih-p>Wf87=S)*j9On8wvy6|8*$yB9c?|!9W0rbejTRXs zWxCz8gtDOk54tIwL5vm)u%eGQg^EkKbUi~xYVmkg1R+#Bi_Kc~y^Fg2w|d&UNp5a% z*cnA}RBmYoOfxOp&=k02sfzOs+@O8#$gRtFR=>Bq`k0^PYfWr#AVbj5bUb9JGa=g) z(iQ!-bbZ>zXM6Y4^6Ngt0HVVD505R3{%s8oe;Rf&nl`mlD>O)K)3pM{gggw4h;TdG z%k!@eNImOF#GsxEYL<}=$Aj1wc!^Slj#Da})R-;Kv_)y?AlL}C!xHW*DWdLSi%~xt z!?vc#0Eh0WHW$OM8wtVA7`n+CTww~gRa}iox}lUX3k6ow9-Gj8XVjG9R%`CiFZDEd zJkl0L$}0Txei(xYE@VAU1p99iNoZFztr6a*0E)rC?RJmE<#1>jd;XSDt?1NY5-Dd*p=)%OJSR@W=LuWCG zm{$RBiM94^8F>K_1|=*|;FK_Cuu3}+{_+x!|0M&E0kSH<4iBJ?0dUHLfPEju8j9SL zFhFO+%^28SCRfFf1+uLHQZB$rg*+NNIi?5Nukb>5-e1MW&!CO^XV8G*y@t_Q*RKO+Hb&s>F`;C7EG0irdRNBEHi3NO+PLBNs0 z%Si^HGNSsELy<75=Lf8C2r5!N8D;^23UF(WFdz^^Q)rlZ)|IL&b+lS_pMZ@k)I)jt zWa#+}Qms0cm67nmQ+oo4RO6j;+>}R8dXEL3_es6UgY5j2<^BuxHp!V$=5XA5PuPM$ z_$y1dWb$K?cu?i5@Qs9LO$fts&LxIS%0Sn=daP8PCof_L!6jXheVjyN_Nmyw|HIQ+ z2F2AiK$-*+G+1zVceg=7eimvB4=S)Lhgs1TAbNu=AjLG7a z?I{PH5Ns!c`!OZ+<-ELAm9M*Si4hJ7buo=PJB9KO`WxDehU-7pkN$KM?y&{BEj#j< zA4v*Sw3p+vwD{xBvDZ|Cv6*UJ;+j7qiGLeIf+q`J#AB_E(qHquFrM@)iUZS3_!OFD zaV>9Xfp@G_Lgms$9qKFO+n~Q=qtMRzh1yYq3GU2ntL#Gv!G_G`rDTaPYBN7FNSm~O`bHahNdAz$qf%BsLC8o> zmli~&+IjhYO~E&@iCR}qzhrMEjVcl=J=mSH=HPn9rz3EKR_TF%aonRdv-VnYF!=$; z2N}-A>(emjtes|hhss@pHWKRuZKm#BKxWGZ{BCX@+b8p0u@lPp&c+H0#}iF%t5v{nooUmOx{Qj*Mxcnr{g^g(H^cQe(m8pQTeuI0}^=}a#?4q{^_hf6rEYnEVDPk+h0{w6jo+Ev8aKkpwv&?aGqL!__qPCR6c&Ol+`W~XULd^eB zEouJdL!xw*JRL^7qj(@~9kI-VrR;lJcBME$w;A{0$>!m5 zIh#vu70m{zU_Fk;5M}BNC@<_alG>xng*eulurA!*-uLCw+t(YLE>3&(DnvcJ)XX9A z0`*cbo$M&XzLM}$q0quYwF~|$6f&*8uc=tc(flZTnLDDKz#e1&L8tSJ9X`cblbk9g zVk(4#ScbHTwv3dL#G%D*9qS#se0I3B+>3WYlkTESx=frs zqH1)IR;8urFI5(So0@w5Sfi1vYKtiTtzQOqbjP=FZd15z76Qyk>ou1cmC3=2+bGYM zEN;|K?uXW7z$6DsAyUG44C>u7ZYWl1Xn~;uq)Mr{01KrWgH|I$oRkb>^5dj9nh|u+ zx7`I)+HRc;9gbHo-c*m&&4g%JT5TO_OOjYESO4i&-PiEz<4HD<)Q>dn984mP2Qd~} zE}fk-lyuN*Pyu&^1RoS`a&UMy4p&_%4S$igf2jLn_;rGti?qyeNk2v20t}l-AdH8~ zx|w|Yu*+*16~L}tB}6r*P@%{(Sf+ZSFWO7HYlbf3X@Cn?q_(8H&r3J%I2c_-Zyh$$ zN)CdF>QJVpr7^mTm86D$Ly2+mOkKZcQ7M?c;->AyGW#YUR`l)O)tTA#(uy2?7;hk4 zj%T8au8onG%|J{IiPw9OF2kx0V&-3%Fp3|g9LIJ-+rQ@S=!XxIrf&ifPNE2|GLH-u zQ#hR4R2o}zU5Vm6Bcfo8{x=H&EZOB3m}N|YNCYe*tdIoXy=UUmBN(reI%iG zxkk$9=)#u)IFxn|AQN>rkuL)5pDMzFnVNQ)cM=UmFXusV5$7u^yeYK&E({T61}v7CjY9_1~b4*HWlJ^4guHMj(Q4Z=H!>iv*x3m(Q ztna(BNbICfhJOrI_HxH6mg4{%7CZ<=fR^zCUc6P-I*w`D z`LHdCfr1edH#A^PB{5T}|=6f?fk+seYZ3?16ZhV%q zNzvb4$u8kkFQ>7IjVzRBP$*MXVGyq^Mj>TG%eD}#aF&H=q)F96E6O2h{FV%HL5o?! zmvOwB*U&5Wy-nUFtsRpIMXV6UQy#>FN3)qjvjI678F7qpL73b?>3Kr_I`QE!Xe!sC z)sMWoqH*v3-yU1a&vLWft!_ko$dQ4f6p}ce*KX^fHpw)7IL}yplq5kDz z(yS3TloLPSr)j0w+bANH8`6nF$V+1bCO0Q+W?qC|dgDIODTxHSea}{pk!7(6ei$AR zw4l9A3Pt<*R8v-zy|%~XTKStzmaBkL*d~msOOOx z`(9vQR5arIGt>Hc8(Dn5G!8UQ_4e>HX@q7P?7-yq+z$k7$5b?Mr#yMjrWx~*HnT&P z@in?Tg)kBS!XR1BOkA7~8)s&vdVNroSCS8{bnafw{OVlk^#Dy+IYf~fP%Cx%7N&uT z`~#|g-f8)ZeI8zH)2hHKYjnxwB+S5t_d{!tp%=s)^G24~|CvRAk+jC){4Glq&uu1HF=MH*CBs5e=$koJ zrGIN_wJ=Qd^B%8`-Xp83U9%;gMH)t64P1PppgYyw^XF(EbGj}0W6qI3d{y?yO`fqR zFs$1SXZQ;(L4Eq5t-I#E6hf(oDt2ma5p|8l%H#p+WFCNSt0`|wo3?J;H16dn*X|Yr zDba*3g>~v8CfAf|c*QlmdJcJ?H`t+XW+$b6;L*imczTMg;?KuC0ZxUi<23k@!fy6z zY=Q36dl5}V;k%L^<7Prf8Y8!Gjpo_x+siHC1?fL_)469Oh|1_gYz+OOrk&f;X-~>c z9+M5d&CQ#e`o!a%W_dc#;@gWAuw=L47kF9rf*JX?OU!MNf=Xq{t;Fh8&h+5?x5Z5E zv}Gp(c;iqlfzN`3$R~I)J@Rs9;;8x822#{vn?JQd?>uvyXM=~hfOvEm1;V5b;5YmO z9Ck)?At)hG(4Yfn6yR0>_IJ2k!)(780Q%7+kFUICi{Qrq6(XpWGuAyyek%#sA1cc` zTMyVTWZkK@4`U+c1hU{DNz$c%8taq!|3XOXZU0|T)m#=P&9nchb!kTiF17Wr@(xPO z$Ud{5HzfZGIu%(Cr3D0)z7tc$4giKw2WBqn|MS0Hvq@@qjsS=x9UsUH(N(k@(1CaW zgbz3Ol134bR>?p*{U1LRI9P`O3Mx|Zf3VLGxi)~-2&k(Z3?)0`NrzIALx$J=AsH~A z6V(-LO-Riz6Nhdj04nkJSAVx6m$vZss#d_P)yRwHaK;!6m4?e!UEUC361cd=0rM{m z0oTYCKY3-d)la201dxG!%)(avc1LcU~j?$m2T zss0=UZ2@OEe>NuC%zdNvUTj3;`{ix(BVlAyxwkCji^Y1BS}wP6eh5s{w^>%=p!v#= zu{$FR?FXLg+_uc2)UtOaNC;;E87U;Oo3}J zw(^V0^d(;?Ig+sqVPX0vY7a^c%t%4+4eJm`shDb4%)M@ZrF_Tq82G=pp)!4r(u$z zi(+tQE?P`b;se69%6f{L^$)g+_BNK>JeqlW+g*oL$!%u)cyS3)X3@-De3tH*ct>io z?A1ChtSHy#f_L5CZ`($R~c`r0oV&bYH6t$(AVyJEF75rJ~K5K8CU)TnD z_z(51vX%F({uSwG^@sB)!K+%Iz$b6Nwhva>e}ajSPHYhmKiX*&D|^Xpdy}lCrRkFdqm#Yc7#)60OX6Rc#&ycSFmQ3dK6%|Qs~3(pK5!HE z<~ors`FZ>zf0WzK`BOCjj&YHfrr(C2XvdvJH3>OF1o=Mi--jW?nfqnL@*Q@ap@;gZ z6C`z4XU^F|7*2O<9^onN8WMsi)jSsSj;3sV4UMl+rP98P{Dqk@eA(ziE?HAvaP=jJ z8aT}o&;ByA(ac;f`Lgs!c*t3D@6MxF$Rv>ogsd;=5NWNW5oQ=zY5n zF7ThB80#SF{~%oa`%ZS~In(tg)lt3Xc#R|b$Vp`ib%%SG@MCULj`vO(jqU+Zkj#^_ z^eg#BnPR~|23zh7y7E1H8ra||IU#l)-|`#aw3k&@C9n?%j%RBdao_H@hHjp8;#hfB z7x`4V8L}rFP8&=jaJ^@B$mlvpDrR}D9s@b0zN7e1N+YuV4ZTef^zJGLm2fUluhOT0 z>lb&{IX7hWGELDCB?a;{9LJPUi>AD9*N>9@R_H1?DaFOHAtYgZ+J*XsKX`_3Z8nyk zGlnmwNUFNqY`n6{-c61Mk6|Mp6iBV$sH4$0;?s4EkylrgAr?{dqg*xYXbZ_paRpmcgTnslD}N z-;jz!(ABw6aZT%s)2w}JN);wfk0#G#{DTnK#vJ8dP3^OFhnK(MtT99&AJmI5U0plI zckn1F@~$!0M8NkGTw(+x>Flk$xO|HIyHBVmQM*YFNE=5;RMBPU>D$u&IVrGxGlyQ* zMw&@&aSUi9u9;$SFcB47}qLt0W90n=y+Hy4(EzVeoxU5S{M;vF1)6vrI@ zvd_w9%W7nRij%e!N{JYB zrSYF5-Wj(BFqwfTl&hjw57WQ`?hqV{s6#Ea{?MX9-tG8LAg(!wr&-^il65(v5t8i} z{ydl2GW)hArL0wTwAFyh?EZT+H%)%|V1Mti-q&w&P8yE5G%UpHUF8G2T%8!l#_G0= zCN*iWeJZfqDE69H8f9wDrKbFf4lE@ro?f>~7?a+x`^x@#7z9qdA#xCdE+OH-;lb0b zA+_Z7U%5>zCz%I{>g4?b$vA3CA|X=Ttn*yTy0`R$X4je~-d*ITF&WFbSzN6uT1Z+c=o+Q$8+^y_ovvs&ms8KX*Xki^iZ)CAv|DMWNRkw~<~(wuWh zUeZHl&l63MqzgTqDsjV%Wz}UV-Q^|0I0|WFIA7(a%NWV!so`Jj+WmT2Iq_WZ{mEaP zZRk}+iH01Qp6wY+B|lCqoP0m8I%l;HS+uwP-dPbg?+MEWVk}*^^_s7$VyZd$(>+*b zA#}YcMXiDLBW&(N^V@KLkHtb6=&TpQt)0B1zH9%$1@2La0qf!s5x>D?e|wdUu%9f9 z7Yt1FyXK9WTc_ILUr4@VV#SkHYZ>Mw5hzpSyTS%JW)@(L!Be^%Q(cKMRGu1d4GxjO zk@*fvJIf6uZ2H4@JiqSqe0^k%Q+n1>pGo+-&Ix`|7I&1B<`$-ZDft1%J@~EoXpBPd z@I-7hGQy0E4l_UxKI1`3YkuRSQk5++K~F{fX?jY!Z;LdTnrNFJ|31?9naC<1mbTMp zJ*A|1x_I4{Sayz(*{*|AAhm=_$Aq$!*DcUXeO!IXXpa!-S=vGFsBlZLUccw5qt}`- zvG32omCqSQ%kXZVlHPdNB-JvP!4B_^%XBWpe|<(>I8PsWHQ!x zv+p;Zey0@}H!U=s<_FC$8;kOZdCu$gc6HQ7rQRcq^oU<8O;TV4P{6XspgDj0BE_@i z;{|~@qnZv@EsbEcc}zq-aU&;&^Jw#1)tPu$c8inA+pejmXPP}HwOM!vGXO`J&AK6<%CP1cpr}toz`L346hdUG4gCm4$FGJxkzqzk?q5MQ``qH zFXH>>{Y0dvuhz}B&jHQ0)96Oc41G;R=EdYgTm|>djjwz?oqL#eVNT=sx!d(ii@B9Q^Sw8alqe{6)ZeZ$$hvMgD{Xd8I6 z16mZ5)?whMaep8|2juzw$+9_AYB`|snThaHtYEL(|*$KXb_VBV03~3AwSc zaDW^ps}*u2{-g>Riqad|q?(+p^)6CpxLirj{d%)wMQX+NxQ{UA)3?!ef>qhInd*1g}yh3bw9uqk7OinQxm z?nM%&LghMAB(hD?DU_tSyEiJBWIp%5=5U-)#{lDewuS2zl#VHD^u?`9ihV3~lgC@#i>f+Al!Q^1pI#QU_u==i*^Olv=D}YF#X)a&rR2qwHc-lYkMOb|ZQA+G zZN46$hjd zvc(MV&xb)c876J?{kc)f{tCh8sK6!rt;5q?v2~TVnwrHv#5Dur1@Y(|N3_;ap)8Q= z35?_0RIds-_s4kvbu{S;4kWy_YDl|(}^*9-|L(={BFH9Rdj7J}}agc}UEo+p_ zwEF{%->p~h%3m030%N>41VmnWWd?p1&|R!wI@cMSaXirTnpfVa)Ut zZLj%+ybZcN9s-(wtWDznVG^#unO4ztarAMsoG(!*f<9X>Iydgt?P5`d_y*0&%p^QY zk2LWcishe#EH#KIL&juyDRz(cOLSGN(OhVgqoZ9&ZOfH)hL-KNoUQ-(Rpid+T+*n( z=;3f|9N&nKq`zVu;4g=FA&ZS`gZgZgCzQb?3ml`UJWc*fx_G2)l*UmypWTxg_4U=D z^co!ewK>iQ6Nxzy>wd8#PVy*bxSc#{%P}af`{QR{$m>1v7M)JBYub&bY`g<@Cv7@MuPYQ|g=u<5*}dCcoFnY0||FhOM>5 z_5SOwxr1Ik=6rb*u1ax=>(}<65L%JX($g$mLnqY*8);Lv$_pHG#f#7?96f(y20I2> zxp6G^&DgeS;nlu|0amtb=OpG>i@;XC%Y@GNM%+E?%ynyB9S@v6t;2fWJO=#9TMGDa zT$!w%xx%-XbKEVAyk#9?WpY|t#{SWJKcw3mQm8n*5>^h*UW(poC8yaz8=^yHTb*7n zhljod%DHzqkx}Mz4!ly?E-C2{+FieQp{fyCmsW15!Md=A#(6WC3%VJJ{K~Lf(Er-B zH+?5PYvK}H>NXW2WP(`}g=9b}M-NL}R(bmuX6^erB4>nD(raVhuTQp`i8Cze^Bck% z?%@IJ2y3zu5$;a`8Ku9AQrBI&G~7GRjDGwwR4(cs6x4-!mlY-lff->?5`Bx%ZE&u? zJ~MQ8d=59)uEsBkC3&LIsG@s}M={@+S|MmET^{TIV-V=?iLrk?MUf}D@JLI47Q*m_ z<+Jr*H2sK1QDV_i^qXspJU$*2k84_zK=G&QFbXWHL4 z8*k33YcPc8mL+EX4jq-Ju8Y2W7$HNX$3J*!#O~Zo%oxm=FcYei0u88a*G%ueR97b%HrRfGn z@%#3nvwj(m(h?2Lch;*Kc9zdatr1&f!RTTH!IMY5;}svv798gX@?pOR52CwXS&TX4 zW?dY)=~t5UriLNgVx$p*WSvak62F!6)w% zHD|p)`Mt3`{g_=-NGq~${yjTHJFH;x_Di9s3wmmC_6ajvG4?C!7jmKgi_1Q5 zZPvTK7Eko(#k-|6Z%N78(6fLU&csM0MT6tLrG6L?97x@96;7od*e&jG{H;Lw{`0(LekbdQ5CxGJ&T1)$r1%4xfx}9td^hVfDEv3Q& zHze{8_%KWX#((_{qUNXap8zo>t|FEilH(OyIuon%ayUJFUx)w^6qph|wDl)$rlKq9r z!+-s$YUmKeNOHO(Hw9ErY?rHmPb#e5!vCs{|EcAFgFE8XGHfZRrLqIyF7n75B{9FxOe;91D1e~@ygsYzz z)zeYA0|iI*2=TxRf%ZxX$uTFTJ_%1Yl1oCEbZF7B6~ zFH=n6yzG^iPh6Pkk>$zd_D4qqqd@4n zU1M=k;nicdSyi5fD=~^E*riNRq-=5c7!@@cBnhG|erc6b??5qFTE5fR@6hSwFEJU6 z7Eo{ty?ng+Ta9t}?@w2;9$3z$Sk;eIFO+T`k#jBf2Rsu+gE*Nph*gePs{3Ja0xdkU z%~=!TTzZhA%y7fxG7vyMGaaV-c6pFmGQh%x<=?U_c6cl>tT#(AI5kkT{Bm~Mxxh3U zA=~uv)uumr90+~!m|8z5R1PgDq**V^j;|xz>C$H4_x*+OjdvpDiJ?+C;dM*IM9=h_ zJv}2s1OCBdUi(i%jK6wU_i97g9&Q-{-8&I|;5&612yd?!AwC@#zbx zN?Me%U?eoJJFPP3Rm|dOFfCXj+8onf=MTV-4i#PO;K?cUcnO(<&u z>?J85sGICXicd9LFm01!62>RY+69PEgWvGe!X;s^G?zLVU;DH~ZD_==UU(4g>>fFO zPbgnANo(;m%;G6Y`!wOb%vACe5}T|AR#>nT@ET=tG>bLh9`l)Z&=E|W9~WGCEuzTL zEnpTeVr$W}vw<`H6dDMlg2+!?g!>Ct{p=)%BMH22gm&!xGSgV@wT!nE$T#RX`i=``NBj( z39a<%bG$3f7?&|^G;Jx~*|45R{3&8<&-5|(2}j)+o$eVbDuw5 z)RGb^L2p=nA80@eb&coS$6VR^d6YlU__c?fImjs4FW0p#>dG`ex~!?6`WvGc0Dx45@8>plBz%)+S89u+Zd);4jO|QLrom@ zY4oe2FzKhNYTP*EpH^<+Ug28VefOSexOY8YTL_t_KoWMs^xBLu?LmUBeWXD(*(Mq8 z)wb^&&nnM4>KhQ?$%6O;A4uJW_Bt{fT4MN@?s4ucvrbYlvw1a=VEFSkVyDr7Wjbr4 zBX3pnwIpcE{w-$w_Jd#}t?p(OC1?(nOZiru9%f&WV zjM|)c*A&yWs+zsn96w{WNxVy-Z|CcFLVnuv7K{A5k&>#^sHsG(HU1+dGzaGpV}cKr zyz;D3pTS(s$k*MK&vI~{fv&{DoBnjGnsrTG77EG;m9RzKr(Z3R1MmYI-OqaZ>yWf` zawr6U5?i{xb1?p}=EknC@*D z?Y$P=vozTKg^}m&CAERTi35igjey&5soc%%;1JNkrL3d}TBmHlj8Z(XbqCa*!jSP# z5deT~dJr`d&{GC7pP>}!D3n57p9dCL+9%3NpW1UC$)c_drfyH~8eIYe4m2~k&n(~m;S~tz2gnT_0fd$&Cg9z!QP%z6{OL~( zz%h+9+1Zx>OkOMq(9`-3tnGd3hs;x# zqtv8H%D6ai?G|juKPdlpD&TRGK&7WPJ{$}{acB-Bt8vh%yD08@v5oauPx=cp#o{JX z!62>kNI%|*$t<%3Fj>9 zN%$Dt5Yjn@=p@l1Aa>ly2$TFsTF(Z{iQsCESH2K8(HQ~J4afHayKvpe)9ayiVk}C9 zV+{zlRk@Jps%A6|gj|B86OVZ~ZHepM%4gg18P~O8G>gxP-iMH&5+SV}F)`Rjp8skS z^KWkJIpj|>%y4=`bn1u>1Dk&hBUP;!t!ij3dYhsma%r|+^&@R+Mp=?#zvJi#tWO4x z2(M3+R?&Pq^EDgE>fhf|@@dYOUc+0(!FLHqif#3O-iA_rX%X~j<`Z5q(=kM0*qm!= z-ZGPj^?&S)82yB}!X0miBORtY)}GScac}d{M1Q-Q{Pp=1RD;9wogp zGdcJRb8dMVFuCxeI%0?Mvgc!X&zk>d8hY!oGI-+vKABlOS1;B(IJL3QeE!wLoNG=8 zSDMu_%`C`kOpjw%y~P5NN_XNYcQRsRp}pfMtTcI`qyhP9FW^>BBte6ny$j_L#8oob zF6{Rc3%)lnwqrigxx^MeG0>;#B61A|DxoQaj*S1l|M+W2-S*_OjvbGy-L@IZ!f%cp zlOS^_hl{b!&iSf(;6ih!)3z)B_FtGE(r@AXqS!VFa?A{0-+sYGX60wgZX6re@^&$U z^MIv_3$b;7T*@(Pf)D5}10?<;KmLfK`$bWvmr7FS*(q_P+b5ZjlnDjFp9f!vPAdf?7%S`f8a)wQ}bL``NNV~J|{C3dht;k(HL}z{sM2qm`AXpomJHE*?iH0wF1*G z5hCBbN`61^2_r2_jJh7)4W-zuhSfAS%~{i`5-KllBiR;Vt^ih>=F00Xep^`t+wGG5 z5a%Mv`=K(+vqE91G4jF*LXmHEd}B70l%*sPj;~$sw}xjt%s(k_Nf@MIVV6~{$jgPR zR)$~+lv}t9xbyIa@{f=!db54H3)o0^fcDPFrml?V|?t@8(q8$`uW}3(J7L$tJB=hf+o^9hW1;A zXz6MK!OACE#}4IX0iwB&%G5Gd^h*lzGiG>d#-K$}V%$(KlZP0Z=?CUiK0+t1JVI~^ z=%JfMut`L>?U)Oh6{}RMo0KUs`cDb8SR$+UN$dXW4?QSU< zI`LKmoRbWucQ>uy&cG(O_ueE|4b2}T6-z0nf_yO&eTL&NJN##|doIR0*jE- z-^PpX#hG7FbALZBK8k2aa`PW*zQuN%G~dTtHB4&7bZQK(qj8SAe$@3={<^KFa== zz@-H~|F>UB79z?E?60rj?EZ-f?{fC)E z#CzqdKO2HO)jWnbKD4pAmXDf^j+RWZ%m#jv{TC(&k_VW)=iNvx!7t}}L^dDJ!>9kk zG^rW`2U8FR!=TV-=Ewh#2!MPAbpzNcuM`zvm^jo;mJ~r0D7{W1DS-gsq#9?+==l|A z%+8OAhs|o>419+Xsc))01=)>v1Y_knLh-|Wt{=C$e*f|&jG18#qQqE0^eV;z@IUke zFBE*panT};HCDAAzZv`yZW%ZeE$tG}}GWfGwzW<(;p;1`^njxxFC=#kt%+?@=x^d41q8 zmLH;*L6j%g;lHMTC29S|PH;JRQy3AG_TowHA89)24rGnBwaL%(E}H>F_S6IVHjZm8FXi8myqH^eKtlYf zYyo?3?nfX#S(+}#OGRT-BBnR2*?+ccrHoW8L}~p~q&$1k9I~0h1=XzK87Rp-&c9#N zoLb9ij?G%NbPHLJ&$kD8?+Rr+-Kf284)(q{o!>HXrW>QJ>u8q2a>mN9mTQD87!U0 zI1wE`>s62bg%O-At%J_7cqsYoHT78ha!wkLJ9y7g?b4^ozMl|1?{f4}7QeRyvGTzXbM#k~43jmjVlCh_&ZE@fTBB zk(;;>9d14IB@(}J-*v}glE@KBGzwwIRL@Z4dcDm!3P?}?=_<^TB^vh4;4`wA^5DC{Q2Aq83V?i*x1D(q0V2J`iRvY0NdhQuYz!deYogvp}u-}!D|U(^?V5*U|n z=(jZ%UYVZ8t{VgwT&i3VO$o&3J8uLR#wl$L`$#KeHf;Ph+iSHef43p)9PFZcP`aOs z=d5R!-$)vZW_Cqvme<}#U}Uq-x8QY9aE@GByDreUx{h0gZ5>4Eqct2tQr%Ro50k2{ zro@0YJ8NqHN%)J11^4 zi1o7C#P2HZcJxTMiL~_bHR};CIw~NrYA4RHB5&v~jO?oKUU$_gIoJdRU@5KKs%-VF zyHP%Rm5s8;F{cDXhMnO7ztk9aa9Cj1bzlttn3+cu>|}8>u;e|4sQR9W=ng}P8Xms# zGkQDLB>+?USfC5VL`C)cSJeQ}I+<7zz~H;N1OS98MiuxD(4q>|gMhX7b2u_p^h^3r zR6hr!dV!fhfMXFJseUpD&~cvtGN!Ys=taNwbAOU}(ktyaA83kvX3xMye6=iqi%;x? z1~>1wlz>_OUY=-K#QBu0@l`dyse^`0X1a_jl_$|<+iX!$`eKEb~+iK$@XDuia^3;%g=o{fmKT0Fdd*PovDEVl3NjKQ#bErq~_S8Ft3 z*N8Bn0WXP3-}4C-E2k*`R~|ttbvdZMrWwSq_g&?Uv~3n4M@K9yqfI)QVO^15msdGeRb(Ylpodi_xUnw&n9&>vGFF zy8P)?C_RR`wYtLDtM>EOb$ONwXgkqEUgO5y{8O#d2L)!#pZatW64y_A;R? zLw{ta1@)KS({XrXuec~jXTkl(YJLLYm^x}N)p9jN&X1qNS;jM5get^m1VrImRn9nb z=Nhf~k7Z{@I`tdkl-98axK1LW>eKsqFPeK7e+uLB5}?0gOxxUa-o#*x+OBueZ2w#f zauHzlj^CWX%Fy*{o=?+HwPOj%4$O~7AVnDlZQB1hUSE?+)#%lCNn}J$^J{Xh;^T)S zr9jgeJ+ESvW<%e(@wgy3Vy`i^4J7+cb}XhjSED!ITDAbkVtqjvs+DBR?%$$c(B`n| zPb%O3BNg##5nh6q_09l(N}^^^n%e`vzN+_J*v*Y`dJ|jU&1kY}K}Ie&(Fq^A>s4D5 z)Q;xspHR*4fu>a1$)&ze5`hY1n=N#&m?vj-bHA#Codw((O5>jSOt0@i^?=Gz9Ryh~ZYq zaUoApD9wOGqr9s>zBeTCf)~D|EM1FpMf$ouaJm4K)Omva$*NtybDlfU*+toA2tW}P zNxQO5c!D}hB_=Adj||h)SZoYwatcW5qXRgY&}%ZtP+*|!1H#%=+D4O}Vuoh9 z2DR3L%fd0okQotF4uQ&-!wIcO->?D71=Y_z(t&h7(|e`LInKYq$G=fMUFSq*YG9hT zILMH&E8r7H&xVV0e9L~S31=T#)!t?nwxb~U5cZDBxxWuDM6OQ^jtGyuoz5h;w%BAB zgAGt2WEATElO#bvIge7~pTh>|6Tsb!X(W4RB#@GKXXEsol0L?8=C2ylNLY0Qk$Acj zNo*iwWas;z7IDD&!yoqBO&D@Yi7qYky-Z4q97!fd{DccI&Okfg_&Cy8Vex`+5Db?X zv8fH_*a88@Yag5?=u`E3^M8+)`(FQb=K5ns9>)p; zcidAzPLxEnulK-F0FXBI1kkC^pTzKN3l;&weQ2~>*f;wBB+1+Fh~%`yS8(F(Z~f7+ z_PED$t|qDoA>D?`#?NGquWa83x#-!bEF$NEYS6KcK;lI_7hbV;v)dAsj5Ty_H>BRL zFQ4^XBg_j5->cjd3GXU6;^J=#Hr9Nu6WM{>qly16p>B`I6lnT$g^%pyA@6WJ6ro_< ztI$~=*%l`5yb8SzNk0>$=*Ii z(}sRClbl4u*9;1~qpOqHG_CLjWl5Y~gTcIjaAfP|I;vD_MO0=sc!x&rDP*bJQoRrkEAbxEzJtfePd*KxZ!gVd4|eST>e}*=#pA#N+3%(oTjiKA%rX|ZUf2Wt2W0M;Z4++!P zw?;;N6F(mzL*_;~^PaVxCPvMoM)usIo0y@s`~)ehMgvdoXj>G99OC{|qFG!FlN_7x zMwOl3#k|xY$Z}5cjVtm~B$kl9xIt#7>VsK%#BbLaDcZ&vNIlPQYK#;z-g2TFBEm(Q z_r>3`X&a8un^UVPHKb+PCWF5pN~2o(s#V__-1}vgltEd9pVTmRQUJwZDArtlQT) znivkV)x)_|wc*YPj-R)V5DeK_gS(`?i7Da)AZwamxwjjxOXi!(tf1K9F6A5?3NCyh zaw8$s8rA?q{AFn)3n)s^k=dfxErzd~5(lS}F&i18Jxk z00^m&rzC@NJb!2ncQ=Kbw=D60a3XWQG&sHhmJeu*6f_?1u4%~CuGUAk82!=-{-rkl zcJKe+4oVDa&av9y*!HgGKRE4|9;$#U2$ASyS@WBs8~y!c!GCZpp9o+||JteylD~r~ z(^wjZG!X4SMu233AUiI+4IrG;{DT~F0>*7LaZ7lbS^yhQ4{8l$=jD*aeL*FL%6=eb z%-uEx0ID2{jJ=01*jfPRQi@;P!-=*1A6zQiLjop%4CGJ(9?w$bKe!UZ+xI9B8+mKj zAAi7ABId^J$%zb=Y^!Xa`kM+I?)?v2suchPB?{e}VFQLm(Agcy} z874JbDkH{WJyQuQxBV;U@9JUR6bmq^a98`>XgSsu<8Yk)P!eXv)Cfse8*`v%tE@&}5EDu){4IBz7+eqlAAcl~?^{B^L}#W4w~7FyqN?U7vbDR=p_yx6QRHTuXO=aDE2sU)M& z&Bhu9-p@4}&4~FGeV+>0xkw@lr!wb5%96=Uq+Q7&#RR1}#9$^6#N2WG@HMkpGsh`S z9{HKcWJ3AJZm0n&x%Tlpto8`$0FP4(#bd^!VnK+36w7ojuAn*0b^e0XwRdNDBz5#Y zFZZ2pH{;}f!qLp1PgL>OX(;=z>~$PjObb6yzUI#i_!$5j<4S9~xw+8{KFG*Cs91Bf zoJF_dSP-L+-(vF~x88hv+c~OHY4_=*v1-f|6<#P9m8ZC_kt3F`_H;t;W8i6&!wARZ zb@4mI>f=C_#W&a;H&0HDGA(P8$HL!I=NOMZf>ZN+a<=Z6>MdW#nWI3wZXlWpe9LMGcX}0 z5bjV`MIze-$8p}}LG6fuWGGcr$h|7UDT`ek)aEukuXRS$TxB7Ma_|Q78BHyqdSd9S z=>xjlljZY=b1$o?aQi5WBSSgcp!xaE!Fg&kzfe?;G?!tzP%F>&+?nD8@p(^Uj~@b= z4EF5RZ)Dc}IZ?+syyOqbwTmt)Cq<8gz|75D(oL+SY*(#lv*io?ndDr_aCj9HUvOBGd^BGR$YmMS%%dg10(D0 zi2JaZqW5ZqzbpGb*E+hzWG5*U&1~xy&6?^Yr&t;_X^Vnne$o8#=hRp%V}!0D;BBxV zGs#lkB1v_s%(f#y)TNBA*Jab}0J%v@@)GL$Q5^Y=ve%%f7%>j+?jH?1&tFs!9j&Q^ z8PYan4u+s3vk0osk< z^c82mVD{{gDR5(PlETnMJrmiB^7+*@TLv?S+N{|<%!*gbmBZGM*`EvelRj-$TDd38 z@M4hv{Nwyfx_6nmlS3xiDtIhRSro-<%ffH%=KzcKLcST~5!kT6QTo@_GI=aC5-Szu zb+ITpbzQaOVk&sxgUAdvG9;rIrG{4>^-3fxX%jAR;$0G~KY5?%mg}*k+X=>c$;1UQ z`^*bXPdC_RXYXqy71fFBtUw^FaUt(li5-1O@38!$dL3TL>0Bf+2b&q`^DcE7*vsq- zjOC}HCPt2r6Fy2IyA$|HqxSRN$#hFCnXzaTl{EvSxld|l5VJO~ihMKJkf#OhkJFy% zA+AuqVW_C4UvO-kAD~u3!U0ps(Yk~eq~{U?D^x(5 zfiLle*zzio3gb)XlM05lGbXc6S&ybFiFfU7}~ zcs)ZL6K&I{6*k8wd3hiOnP7FM@kp^}ymuZG^V#e4!Ij_=ut1QkBckn}0_TE}%-HlJ zL15sE0SsMq?hk%9A|I#;em&+g{NQYj=-4+e`Xu-5dni&-N0(ak>N~zjeFmnfhmeHo zifR#NvKzgy~0hUk?sXr(C5{+PK?6UkphH4H(bra;N{~jKxa?^0HG| z-kwg55^nVPlw)sd5~QYUrB)&*4~FE;;o`4bV3-JK%cpWtCdD^NG)vwDJ zVvqSp0c>dCHnovr0^?ZcZ=qMk$B27Gl};&>7eeNHRza1Lxe9`ybeicnxYt zvfO5P4VZ|sb^`zBbpjNCaV7Kuj6=XT|G-0CPOf7YqskrzBK%N!@2A} zh2VL0IXX(;-LDN^uD5%qw>^hlbg~gbh`9bbslJ%-sZcK42JZ~ab@ zmnb;2+oeF2dL*U!M!kgr3tZ$ub+E!RGL2@-3`pL1;BzQ0!(sqS%!5+Xm_uEzaEUt{ zGX)QwYV3__w@{0ffuE+^X&V!YTQ|t5!P=!%njtL9-pm?Iuu<9g!Kr*u6fAe6{E^>{ z_nXuy%wR>)U8WN^6qZ3ztC&=eNxeA8EroD3=! zgb7srh@JdSAfQ|JtMj!9mLII@dL!(OLJ8Oqd zsd{VZ*#%@p9Hi13EQ_u-D#k1G;mxJXP1}(3FN3SAa@PtV9Dht$`OqeoRAxAo1bSD} zfFfw_48_kbv%N+{!WFPet_10mWPQ$pT9tY9q-Qxfx#xl&>B+S?r$53oVDKKph-2O< zA6~D%?=1cH)XLsO|K~C^&B%&(n&BYf4D1vy*voO*IsYV3#Gi!If?@|hgp@`()mhBh zX_xxN{BRwU1Ctg#i`FUnRbgFXv2_YlLwkJTp&A;kpghQRu!N#4F?##X-B_qBY1sA` z%YDF`%8tL}bYmdkLm99n7e`le{d4&qXfzRb(YZju|SGN1wjw5 zyD<7y@~A<%()}dX3@WYkM9k?F*_2o@dAq=i2f?v}`k>e4e`(&spy@)b%2J#m%GMfz zuY=R1QM~uoeCR8TvTmWP#lIRrj|n@NBMTBr7vIj-#3&-t7$%&Xf5of%zOy2(w~0peoJ|+fnTShr~`R#0=uJdN(X_65>DI%E_8H zD<*TH=Ol|N^NQ}We88#-f|D`yk+HnF#^@_vO$siD-kYF#2fuoa%bvT$H{?mwdW~y! zI0n@(U{1^nq3c)vnt}0H~`R^aryr2J;9GfpEWp(Qe^8w_ekX!j^g0cBN8@y4BV-?@&Cs)-|@=X^H zJ;S%85#AP6Uso}*Z^+D1*=oz(K5Ey7Kkrv82j}yZgf(xQT0|E5FUOy+x?j;Tf@2!8 zB@0W1#72c`L#K`p7fwG4Z(4eWHj#E6T^Y496=k2U>yX70ZUT2~?Exp+F(SeGa{{uz zw>%dAB*8(SINjJB6k?%kK2BKctxS{U4^Cu2>-CPcvosQ zoVo%>F=PS>Tr4Y?c@O$&A^xcTe^k%LrW4FwDJgFhx)1eQX&&XwrV-xMcIykd=`)W9 z)7fxcY?_6o86D+z@Lv|1z;9dB?85n*u--2Z4K)VS`?G7;)e$%hg%s z!#nfyZ8MauX2l?{Xm1`#Bl=3+_FG}3A2p4X!?N1-WS_%LxrQrBVOfw;u=#3SsmT1A zyN2^e2-BoqtC-LTJxA5Dh`Pc;fo>@MwGOn}Fe5B#usijq-P@&|IkqAVITXA7Wrc%n zq(=E+`RNH-zho!`*9iiLE8rPSBYpMWH$$UR8sReiDqb0&jK>jqQa&H`pYu1QYRh{M zR#H>z$dQJizcOt8C>~4`R9Db{5Zu7mGtnPNe8tk#wa%=(K=NceUeJA9AkgF;nBy1a z1#RxB(#jADJnY{&Ci?Y$WC#5(+U1H>t)0Dlz#r=)c93UEicrDqjt21Bz{Bqa21pQX zvio6PN!BO;`h@*kv`-W;e^RkessrZF9$*RYPsizyYixvDLF985qE1Qbb_=W`gEHi+ zKgTS*XjLGbCJO{lfyMyVoT6vyKIEA>$MUgc z>WN0=%Zx!PJ>4Ed6an5TeM*HVcy@NymReIuzbW0;=uLxPVxgxW8IlkvuaAVv)_M~K z!b@^f1P32;m#5C|936Wm&A&JbN&qs@I1(syz)y}XEjI_WNr4O~_zZl+US1^3Av)<%kukw{YC7H zUNLBnn#yWg6%UCf0ikpwyARFDPYJm0t_6A=^4u0~VE!e72FQ|233(D_R>%HQKoh&S zGb2_Rhft`8>S8Xhx-ET(U~<26!X>&{{fy{F$@c99 zPTztvvHsu?Qqtj#o%1n6aM-C#o)?#saP9k2uZ=QolicIA57x+pO6CP-vQug>?}o8T zkQtOgR`tyleM+@YE8O)3hnLd6qICf8HDM)pABANggJL{zBgUYjvOkt9Ms#=}m zcGE1~QLea7oPq(}uzA-(TDVUb=j12%&30|&A>

FSowqS5S#yd`L(zM-cfE4Vh@T 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%0A~ZSk11FMl;<+Mpsi1pr1 zODKP{{W1?%-X#GpvD9ce1RBwPLpE%R7o5B))`4Gd(6`I|9Y4x1DmE|8dgH;07d)F# zqtSpF!aR9o?kGUc|1L(U@-TX!LgZ~rApy_LXd-+sQmnOYdUR^jr zeXiW7LR_=PPFC4d->~P&`|Nn=0=2yQ>iD?vP*3ETh=Bqc_d!|D1Y+inCNUrnXQY5R ztB+Z5rC)U;xXe_1Cj+`!D#W!|F7-`7!;;N$M6&rW#PFMu#5nfRuBr9iFDPm znGtvYQxkEW)7ShbMhH);W{f9Z=Zbq%od8tL27oMtQga+l1OzQW81sOQjGuy6Tr7IC z5vaPoivu=-_k{S#eyOXf1W>(2!C0wJAGz}UMS}n5i>Hq#5oe-|`)gj%dlv^##fN}! z7*>DRUu~Z!pX(wS(q+KoXs%fkoAk5_a9#W@vjNrzDvp;i%yImBWSTKLCd{K6`Tj4R zOi5~izz-1C|F574Mh#@l!D6ofKhxjTnR)K-YXbn{z*+ZyL&jLDIiSlnEC$$(&_KSl zulHu}?h7Af#2w3-KbaX@uy1(*OX9R2P-&WrfH(=w`-{2P$LA0C{{}So|8GE(OaVBY zG!49R_x^{xR?G?LH-J~qt!wa?NoF>2XNaD1$bjL4uuYX3$EQT_4FD>3myv<$p59v? z@!S&nP+_cwGPsX&J-Ek;Lc7r99@Ji)GXQ;LdY+ zm=!$M7$vtUo(|ZeQbIfP^4cT1;Mw#Ed(#FC{}M%OS?Kxge*T1+{4L4q<&W#CM!vll zzsSr$$m75NmQ(thhwWvu+v3^fey*sg5E5X@Xra?|EeKrC8r-}R#AcrNZC@z2AH2gx4J%MJb;ytTF* z>#;cBiz6E?QFT#F%XFbv37h@L8_5a@i7$99$4nr_#;~~!RU#Ln>Y|)mH*eFJ?rr{pJJ8k~ zM{2I1rB@nKN)*p`_EvpP6>OsmGcwkUV414(wGP>eFY|bh0SDKb6$K*kKC#4AAS*bx zfM**&Abcbu;@L5CVdn~6{TVVU9pMXZZdv-V`txb`9D!x3$Bhukf+*KOV&<@c@bP)i zwqL<*LzOhuC>oi#Gj-SvB8K$yEVYQ#*$~jkV?&EAgd6|FLdvAp!t__Fwqe~ZDA4)0*X=X1;6^Kd(uW4=OfFPULWeZM7raprW8h#svc_`W#W)1bRxUj zxGoXkhI#78!G*E3Mz5AL3@>r5YhPoMq110R$8+Q;pJQ`0Htf-&=-SPE>> z5zrd2vV@og5jD3}b3=gg$*n5}?Gl}y-p^&AmW!Q^FDMuD+8%!#f(0cRX44iHHr`h| zSbJU@obro);)R|r#5gST2G!*taJG4>_ReIcH!QL;w^*s;&f~t$F<)Ejj++?CZd

^m-n(y2eP6C`@3&LOJT~0Pbe$!}|Mjz;a^@N9 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 K(d`ch4-^Ji(;31PV zAu{=T`|%pO7*7d2%##p|6m9>m5nSgS4tB8>SxcFtvAGO_)t+?}F`k|E<32`x-oOf) z>RH1m1o+}SNV&A#*7^zUOMigLXuJK0bvRtnq@|u!5buk>5|v`D7T&R^0Xga4R2tUf z95DYlF00S^Grm$~`C3y{_xCO!(#2spLQRGkZ`c z6H4c*+sllkt1_U5fha%og4|l;T3C|4V_a`km3fSgda)=OMt8iAmZRIKA3w_6;J$8g z6tdK(f_|(J0L|)fCDiFp^O#9WKD5mVSVEyDK~)RYbOJ`=T%0iqy(}v6^?Sc#9*0$zR@=59&&IjmewIUT566if z1PO?vT!zGF+s;{&iHM)Sk7%aGXSm$dxoxkQg4|_wDQ) z=pEcQgOyxJPUxi$=ZF~1558j-gDVpJ`c_xa*iWf1fWvTG?{e&Z3g4&Vtkc9hbhMd7 z8{wzCN0#i%1_{q4j2w)+4(cru&Txp~{_FLSET8@M`dpv^+cvJ)U}GNU88&XPRbiv6 zkBw3#6KE|Bln=Axd=KXOU>mV={F`6q`n7C(kMHsO6B@YPB=8k46FV^}sd6yaswyt> zHR$G+2zNi?l$;@dU;eFf^L!g5EW+jWV6ST9S1#hgscPn%%f2IDJ}JE@W1DHC8MEup zAm{gJQwEh4EObRlR+u`pWqwzAm5g(@v26&tLmCEw=_!5Ko99QHe8k~H!;JD)E_TjH zRUe4rk7F;(yAS2PDj8eTxy|-0Rw->0k;n$jOC*Xp8%0!}t#E%_JT^x8L-MxXUEb<( zrm6^o^PKHPl5aWVIZIh_m|hE`Wc+DO^DpR+d{#6nEG_Y*QIdPGu&Z+*Xw zt13|$999_#lRV;z5qnu~s`l^?7jVKi0)4x_^ZIZu!l0hbqQLA++g@1hVg2Dyo}52= zngvPCi5Pa3L1xAUZf)g%S-&Ah^fNe`kM<=cjk9%6w^Z`Jv8Ww8dxbNnC!&$`Sb5_Y#k{Y?^;;{BW{*(B>5i@y3E#X~;2LWhB&fWKQn+9s$p9 zYUp8!P;WP#4-d=F+ie_I0ygf@wn(U1JZ-17-j8UP8vE|&sXvD9vhJ(+2cN8q>~cQ2 z;Bt5rHT}FetkrIGEqAR$zsg3m`3OGOCz#iHazw`H-h=r+RegCN)KB=o*s|ozMxa^yZjC^zd`rQC(wIdoU+#yeB{?U*x#RB@yV~0aFWcj{+*bQ%hpdRw={d?s#@KnHG`}p&hTk+hzWc$g?lVeUH$STMhwaDq^5(xi*YklLXZvYi(8u#7 zVXOM_RMBWcaZW*XM=#MkM>|3sBj@^p8jD!Js)AiIR))Y6%RR#zcT~133x=G!CfV8v zY=y)!Z)}c~?~^hVd*Hbba*2aEA^c#ibJIRtZo%!Z2>$_ zhHW%6T^zxVh}6m&f}UiR&R7R}=(*rVPoiyJqB|ii1OtZxk@A14wh1RDT7~0!yjU7|AYst3^O=dh!{&>iKQ&;j>rxa*bvVL;b#PEFW@qLX@4Llc z+Yg6L{0VTX8u##8vXO>={E%f&BOZ~2DR%QSe_pbuP1xKF*CqTJ&5ifd%0jljEKs4e zMzPm>s^4RXh%lg>sp@QZ&51%?RdT%9sHjM9+q`r0rN3>$hVIbh+48jad?S$0FKY{w z4f?}JMBp9yIik(lTFU||fL2yZ#acqUlz1t4Hj`?c4yO0ASt%^+$uIg6wA%|O=R7-8 z{qaLo9^rXMu!p3!uFJ*=*}P_}W@hqH#7TifvjqtmM<2^Rr?l^d=VY(`C9@V)DE}V0 z{-#kn&)O96DDHCQw2|cAvx3ay6&V1bT5#kY-z0Axd z=%}8mL}z4qX_&Lq z<5;7vOd?z&{|xr$FLAH7`Zg}izjs-mm8(bUa1;UkstAic4>R;=3i>8!m z7`USsNA4QwQ)H55=E6h#b{kc^ZF1YSxLCuU+o@+a+(|LN;8TZ zY*FQnj~}!J!cu0)xY9kho8P~2R9_ubJsr0C$_{0q=E1O-@*eG06|*cj=(syt^JwW_ zIkmMmR2gd^bc0P<7P0W^d>!LPm@)-f)L~4N`YU3r8SAh@s2=}nE|l$pxvl=}`@5^1 zw>{G{s-)akjZ6<}OBW2#JE3cjCf5Xuvti?pjSEyES2g%0D%n)(QRohE$M@n|lvP!F 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 W{0WFd_xPN Date: Mon, 17 Aug 2026 12:12:12 +0100 Subject: [PATCH 09/24] ios: add CF page (#7369) * ios: add cf page * add cf images * reduce image count * different design * button * simplify * texts * layout * update texts * zoom * add to settings * update text * more text * settings * remove translation * only US * update * update link * update * padding * update * update * safe area --------- Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com> --- .../Views/Onboarding/WhatsNewView.swift | 150 ++++++++++++++---- .../Views/UserSettings/SettingsView.swift | 11 ++ .../ios/Shared/Views/ZoomableScrollView.swift | 51 ++++++ 3 files changed, 183 insertions(+), 29 deletions(-) diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index 6ea24ec91c..2b1059135f 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -42,7 +42,7 @@ private struct FeatureView { let view: () -> any View } -private let isInUS = SKStorefront().countryCode == "USA" +let isInUS = true // SKStorefront().countryCode == "USA" private let versionDescriptions: [VersionDescription] = [ VersionDescription( @@ -668,12 +668,12 @@ private let versionDescriptions: [VersionDescription] = [ ] ), VersionDescription( - version: "v7.0", + version: "v7.0 ", post: nil, features: (isInUS ? [ .view(FeatureView( icon: nil, - title: "Invest in SimpleX Chat", + title: "You can now invest in SimpleX Chat", view: { InvestInSimpleXChat() } )) ] : []) + [ @@ -772,38 +772,130 @@ fileprivate struct CreateUpdateAddressShortLink: View { } fileprivate struct InvestInSimpleXChat: View { - @Environment(\.colorScheme) var colorScheme @EnvironmentObject var theme: AppTheme + @State private var showGetStakeSheet = false var body: some View { - HStack(alignment: .top, spacing: 8) { - VStack(alignment: .leading, spacing: 4) { - HStack(alignment: .center, spacing: 4) { - Image(systemName: "dollarsign.circle") - .symbolRenderingMode(.monochrome) - .foregroundColor(theme.colors.secondary) - .frame(minWidth: 30, alignment: .center) - Text(verbatim: "Invest in SimpleX Chat").font(.title3).bold() - } - Text(verbatim: "Equity crowdfunding launched!") - .multilineTextAlignment(.leading) - .lineLimit(2) - if let url = URL("https://wefunder.com/simplexchat") { - ExternalLink(destination: url) { - HStack { - Text(verbatim: "Learn more on Wefunder") - Image(systemName: "arrow.up.right.circle") - } - } - } - } - .frame(maxWidth: .infinity, alignment: .leading) - Image(colorScheme == .light ? "own-stake" : "own-stake-light") + VStack(alignment: .leading, spacing: 4) { + Text("You can now invest in SimpleX Chat! 🚀").font(.title3).bold() + (Text("Crowdfunding on Wefunder.") + Text(verbatim: " ") + Text("Learn more").foregroundColor(theme.colors.primary)) + .multilineTextAlignment(.leading) + .onTapGesture { showGetStakeSheet = true } + #if SIMPLEX_ASSETS + Image("crowdfunding_1") .resizable() - .scaledToFill() - .frame(width: UIScreen.main.bounds.width / 5) + .scaledToFit() + .cornerRadius(12) + .padding(.vertical, 4) + .onTapGesture { showGetStakeSheet = true } + #endif } .frame(maxWidth: .infinity, alignment: .leading) + .sheet(isPresented: $showGetStakeSheet) { + GetStakeView(fromSettings: false) + } + } +} + +fileprivate let getStakeSlides: [(image: String, heading: String, info: String?, text: String)] = [ + ( + "crowdfunding_1", + "The first and the only messaging network without any user IDs", + nil, + "By investing, you can benefit from the company growth, and help us build the future of private and secure communications." + ), + ( + "crowdfunding_2", + "480,000+ users joined on their own", + nil, + "SimpleX users have been more than doubling every year without any paid marketing, and donated over $650,000." + ), + ( + "crowdfunding_3", + "Developers already bet on SimpleX success", + "Independent developers created moderation and AI bots, Telegram bridges, and a public server registry.", + "Every service developers build on SimpleX Network may increase its value, and bring new users to SimpleX Chat." + ), + ( + "crowdfunding_4", + "Revenue plan: free for users, channels & businesses pay", + "SimpleX Chat plans to earn from the infrastructure and services that creators, businesses and large communities need as they grow.", + "Read about how we plan to make SimpleX Chat and network profitable, and about all the investment terms on Wefunder." + ), +] + +private let wefunderURL = URL(string: "https://wefunder.com/simplex.chat?utm_source=app")! + +private let simplexCrowdfundingURL = URL(string: "simplex:/a#JxGcOA1_QhlmVFzYYabloMbvMZk5Y9d9iS3ITDnhzYo?h=smp11.simplex.im")! + +struct GetStakeView: View { + @Environment(\.dismiss) var dismiss: DismissAction + @EnvironmentObject var chatModel: ChatModel + var fromSettings: Bool + + var body: some View { + ZoomablePageView { + VStack(alignment: .leading, spacing: 18) { + Text(verbatim: "Get a stake in\nSimpleX Chat") + .font(.largeTitle) + .bold() + .fixedSize(horizontal: false, vertical: true) + .if(!fromSettings) { $0.padding(.top) } + if fromSettings { + slideImage(getStakeSlides[0]) + } + (Text(verbatim: getStakeSlides[0].text) + Text(verbatim: " Learn more and invest on Wefunder.").bold().foregroundColor(.accentColor)) + .multilineTextAlignment(.leading) + .onTapGesture { + UIApplication.shared.open(wefunderURL) + } + .padding(.bottom) + ForEach(getStakeSlides[1...3], id: \.image) { slide in + VStack(alignment: .leading) { + slideImage(slide) + Text(slide.text) + } + .padding(.bottom) + } + + Button { + UIApplication.shared.open(wefunderURL) + } label: { + Text(verbatim: "Learn more on Wefunder") + } + .buttonStyle(OnboardingButtonStyle()) + + Button { + dismiss() + DispatchQueue.main.async { + ChatModel.shared.appOpenUrl = simplexCrowdfundingURL + } + } label: { + Text(verbatim: "or ask SimpleX team") + .font(.callout) + } + .disabled(chatModel.chatRunning != true) + .frame(maxWidth: .infinity) + } + .padding() + } + .ignoresSafeArea(edges: .bottom) + .modifier(ThemedBackground(grouped: true)) + } + + @ViewBuilder + func slideImage(_ slide: (image: String, heading: String, info: String?, text: String?)) -> some View { + #if SIMPLEX_ASSETS + Image(slide.image) + .resizable() + .scaledToFit() + .cornerRadius(12) + #else + Text(slide.heading).font(.title3).bold() + if let info = slide.info { + Text(info) + } + #endif } } diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index 4bd5f7db1b..ae317cd864 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -380,6 +380,17 @@ struct SettingsView: View { Text(verbatim: "v\(appVersion ?? "?")") } } + + if isInUS { + Section(header: Text("You can now invest in SimpleX Chat").foregroundColor(theme.colors.secondary)) { + NavigationLink { + GetStakeView(fromSettings: true) + .navigationBarTitle("", displayMode: .inline) + } label: { + settingsRow("dollarsign.circle", color: theme.colors.secondary) { Text("Crowdfunding on Wefunder") } + } + } + } } .navigationTitle("Your settings") .modifier(ThemedBackground(grouped: true)) diff --git a/apps/ios/Shared/Views/ZoomableScrollView.swift b/apps/ios/Shared/Views/ZoomableScrollView.swift index 83528b593a..87eb645822 100644 --- a/apps/ios/Shared/Views/ZoomableScrollView.swift +++ b/apps/ios/Shared/Views/ZoomableScrollView.swift @@ -58,3 +58,54 @@ struct ZoomableScrollView: UIViewRepresentable { } } } + +struct ZoomablePageView: UIViewRepresentable { + private var content: Content + + init(@ViewBuilder content: () -> Content) { + self.content = content() + } + + func makeUIView(context: Context) -> UIScrollView { + let scrollView = UIScrollView() + scrollView.delegate = context.coordinator + scrollView.maximumZoomScale = 5 + scrollView.minimumZoomScale = 1 + scrollView.bouncesZoom = true + scrollView.backgroundColor = .clear + + let hostedView = context.coordinator.hostingController.view! + hostedView.backgroundColor = .clear + hostedView.translatesAutoresizingMaskIntoConstraints = false + scrollView.addSubview(hostedView) + NSLayoutConstraint.activate([ + hostedView.leadingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.leadingAnchor), + hostedView.trailingAnchor.constraint(equalTo: scrollView.contentLayoutGuide.trailingAnchor), + hostedView.topAnchor.constraint(equalTo: scrollView.contentLayoutGuide.topAnchor), + hostedView.bottomAnchor.constraint(equalTo: scrollView.contentLayoutGuide.bottomAnchor), + hostedView.widthAnchor.constraint(equalTo: scrollView.frameLayoutGuide.widthAnchor) + ]) + + return scrollView + } + + func makeCoordinator() -> Coordinator { + Coordinator(hostingController: UIHostingController(rootView: self.content)) + } + + func updateUIView(_ uiView: UIScrollView, context: Context) { + context.coordinator.hostingController.rootView = self.content + } + + class Coordinator: NSObject, UIScrollViewDelegate { + var hostingController: UIHostingController + + init(hostingController: UIHostingController) { + self.hostingController = hostingController + } + + func viewForZooming(in scrollView: UIScrollView) -> UIView? { + hostingController.view + } + } +} From 491f244fdcd47dc02f095b78a6a617ac5fb77f0b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Mon, 17 Aug 2026 12:14:13 +0100 Subject: [PATCH 10/24] ios: fix store --- apps/ios/Shared/Views/Onboarding/WhatsNewView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index 2b1059135f..937a0f089c 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -42,7 +42,7 @@ private struct FeatureView { let view: () -> any View } -let isInUS = true // SKStorefront().countryCode == "USA" +let isInUS = SKStorefront().countryCode == "USA" private let versionDescriptions: [VersionDescription] = [ VersionDescription( From a31efc81bea38fc31d8edc4ea3d96b7d0252976b Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Mon, 17 Aug 2026 21:02:24 +0400 Subject: [PATCH 11/24] desktop: fix the layout of the crowdfunding page (#7385) * desktop: fix the layout of the crowdfunding page * change image width --------- Co-authored-by: Evgeny Poberezkin --- .../common/views/onboarding/WhatsNewView.kt | 53 +++++++++++++++++-- 1 file changed, 48 insertions(+), 5 deletions(-) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt index beadf49214..6391c88035 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt @@ -12,7 +12,13 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.CornerRadius +import androidx.compose.ui.geometry.RoundRect +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.geometry.toRect import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Outline +import androidx.compose.ui.graphics.Shape import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.input.pointer.PointerEventPass import androidx.compose.ui.input.pointer.PointerIcon @@ -34,7 +40,10 @@ import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.interaction.MutableInteractionSource import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.text.style.TextAlign +import androidx.compose.ui.unit.Density +import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.IntSize +import androidx.compose.ui.unit.LayoutDirection import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.common.BuildConfigCommon @@ -983,6 +992,34 @@ private const val CROWDFUNDING_CONTACT_URI = "simplex:/a#JxGcOA1_QhlmVFzYYabloMb // the center modal takes the remaining width of the window, so the image is limited to its design width private val MAX_CROWDFUNDING_IMAGE_WIDTH = DEFAULT_MIN_CENTER_MODAL_WIDTH +// the width of the page images shipped with the desktop app, so that they are never upscaled +private val CROWDFUNDING_PAGE_IMAGE_WIDTH = DEFAULT_MIN_CENTER_MODAL_WIDTH + +// the corner radius the images are designed with, and the same radius as a share of their design width +private val CROWDFUNDING_IMAGE_CORNER_RADIUS = 12.dp +private const val CROWDFUNDING_IMAGE_CORNER_RADIUS_RATIO = 0.03f + +private class CrowdfundingLayout( + val maxImageWidth: Dp, + val imageShape: Shape, + // the modal manager that shows the page in the center of the window, or null when nothing does + private val centerOfWindow: ModalManager? +) { + fun inCenterOfWindow(modalManager: ModalManager) = modalManager === centerOfWindow +} + +// the images are designed for the width of a phone screen, which Android always gives them. On desktop +// they are limited to their own width, and their radius is scaled with them, as they are still shown +// wider than designed: a fixed radius would not only look almost square, but would also leave the corners +// baked into the jpegs visible - they have black behind them, as jpegs have no transparency +private val crowdfundingLayout = if (appPlatform.isDesktop) + CrowdfundingLayout(CROWDFUNDING_PAGE_IMAGE_WIDTH, object : Shape { + override fun createOutline(size: Size, layoutDirection: LayoutDirection, density: Density): Outline = + Outline.Rounded(RoundRect(size.toRect(), CornerRadius(size.width * CROWDFUNDING_IMAGE_CORNER_RADIUS_RATIO))) + }, ModalManager.center) +else + CrowdfundingLayout(Dp.Unspecified, RoundedCornerShape(CROWDFUNDING_IMAGE_CORNER_RADIUS), null) + // Google Play policy restricts promoting investments, so Play builds only show it in the US @Composable fun crowdfundingAvailable(): Boolean { @@ -996,7 +1033,7 @@ fun crowdfundingAvailable(): Boolean { @Composable private fun InvestInSimpleXChatView(modalManager: ModalManager) { if (!crowdfundingAvailable()) return - val showGetStake = { modalManager.showModalCloseable(cardScreen = true) { close -> GetStakeView(fromSettings = false, close = close) } } + val showGetStake = { modalManager.showModalCloseable(cardScreen = true) { close -> GetStakeView(fromSettings = false, inCenterOfWindow = crowdfundingLayout.inCenterOfWindow(modalManager), close = close) } } Column(modifier = Modifier.padding(bottom = 12.dp)) { Text( generalGetString(MR.strings.v7_0_invest), @@ -1030,7 +1067,7 @@ private fun InvestInSimpleXChatView(modalManager: ModalManager) { .padding(top = 8.dp) .widthIn(max = MAX_CROWDFUNDING_IMAGE_WIDTH) .fillMaxWidth() - .clip(RoundedCornerShape(12.dp)) + .clip(crowdfundingLayout.imageShape) .pointerHoverIcon(PointerIcon.Hand) .clickable( interactionSource = remember { MutableInteractionSource() }, @@ -1078,7 +1115,7 @@ private val getStakeSlides: List = listOf( ) @Composable -fun GetStakeView(fromSettings: Boolean, close: () -> Unit) { +fun GetStakeView(fromSettings: Boolean, inCenterOfWindow: Boolean = false, close: () -> Unit) { val uriHandler = LocalUriHandler.current val stopped = chatModel.chatRunning.value == false @@ -1089,7 +1126,11 @@ fun GetStakeView(fromSettings: Boolean, close: () -> Unit) { painterResource(slide.image), contentDescription = null, contentScale = ContentScale.FillWidth, - modifier = Modifier.fillMaxWidth().clip(RoundedCornerShape(12.dp)).fullScreenOnClick(slide.image) + modifier = Modifier + .widthIn(max = crowdfundingLayout.maxImageWidth) + .fillMaxWidth() + .clip(crowdfundingLayout.imageShape) + .fullScreenOnClick(slide.image) ) } else { Text(slide.heading, style = MaterialTheme.typography.h4, fontWeight = FontWeight.Medium) @@ -1100,7 +1141,9 @@ fun GetStakeView(fromSettings: Boolean, close: () -> Unit) { } ColumnWithScrollBar(Modifier.pinchZoom().padding(horizontal = DEFAULT_PADDING)) { - AppBarTitle("Get a stake in\nSimpleX Chat", withPadding = false) + // in the center of the window the page is wide enough for the title to fit on one line + val title = "Get a stake in\nSimpleX Chat" + AppBarTitle(if (inCenterOfWindow) title.replace("\n", " ") else title, withPadding = false) // What's new already shows the image of the first slide, above the link that opens this page if (fromSettings) { slideImage(getStakeSlides[0]) From 083fb0a705fb92f784f8f48525142c1870709023 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Tue, 18 Aug 2026 12:24:36 +0100 Subject: [PATCH 12/24] ui: store country (#7389) * ui: store country * ios: 7.0.1 build 348 * update version * android: update versions * remove UK --- .../Views/Onboarding/WhatsNewView.swift | 7 +++- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++---------- .../common/views/onboarding/WhatsNewView.kt | 15 +++++-- apps/multiplatform/gradle.properties | 8 ++-- .../SQLite/Migrations/chat_query_plans.txt | 4 ++ 5 files changed, 44 insertions(+), 30 deletions(-) diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index 937a0f089c..4495fd8cc2 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -42,7 +42,10 @@ private struct FeatureView { let view: () -> any View } -let isInUS = SKStorefront().countryCode == "USA" +let isInUS = { + let code = SKStorefront().countryCode + return code == "USA" || code == "" +}() private let versionDescriptions: [VersionDescription] = [ VersionDescription( @@ -668,7 +671,7 @@ private let versionDescriptions: [VersionDescription] = [ ] ), VersionDescription( - version: "v7.0 ", + version: isInUS ? "v7.0.1" : "v7.0", post: nil, features: (isInUS ? [ .view(FeatureView( diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 0f7dab1eba..05e4a66d32 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -2081,7 +2081,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2106,7 +2106,7 @@ "@executable_path/Frameworks", ); LLVM_LTO = YES_THIN; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; OTHER_LDFLAGS = "-Wl,-stack_size,0x1000000"; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; @@ -2131,7 +2131,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2156,7 +2156,7 @@ "@executable_path/Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; OTHER_LDFLAGS = "-Wl,-stack_size,0x1000000"; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; @@ -2173,11 +2173,11 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.Tests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -2193,11 +2193,11 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.Tests-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -2218,7 +2218,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -2233,7 +2233,7 @@ "@executable_path/../../Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2255,7 +2255,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -2270,7 +2270,7 @@ "@executable_path/../../Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -2292,7 +2292,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2318,7 +2318,7 @@ "$(PROJECT_DIR)/Libraries/sim", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; @@ -2343,7 +2343,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2370,7 +2370,7 @@ "$(PROJECT_DIR)/Libraries/sim", ); LLVM_LTO = YES; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; @@ -2397,7 +2397,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2412,7 +2412,7 @@ "@executable_path/../../Frameworks", ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-SE"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; @@ -2431,7 +2431,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 345; + CURRENT_PROJECT_VERSION = 348; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2446,7 +2446,7 @@ "@executable_path/../../Frameworks", ); LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MARKETING_VERSION = 7.0; + MARKETING_VERSION = 7.0.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-SE"; PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt index 6391c88035..8e54fb4a7e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/onboarding/WhatsNewView.kt @@ -943,7 +943,7 @@ private val versionDescriptions: List = listOf( ), VersionDescription( // the trailing space differs from the previously released "v7.0", so that What's new is shown again - version = "v7.0 ", + version = if (isInUs()) "v7.0.1" else "v7.0", post = null, features = listOf( VersionFeature.FeatureView( @@ -1024,12 +1024,19 @@ else @Composable fun crowdfundingAvailable(): Boolean { if (!platform.androidIsPlayStoreBuild) return true - LaunchedEffect(Unit) { - if (androidPlayStoreCountry.value == null) platform.androidLoadPlayStoreCountry() + if (androidPlayStoreCountry.value == null) { + LaunchedEffect(Unit) { + if (androidPlayStoreCountry.value == null) platform.androidLoadPlayStoreCountry() + } } - return androidPlayStoreCountry.value == "US" + return isInUs() } +fun isInUs(): Boolean = + androidPlayStoreCountry.value == "US" + || androidPlayStoreCountry.value == "" + || androidPlayStoreCountry.value == null + @Composable private fun InvestInSimpleXChatView(modalManager: ModalManager) { if (!crowdfundingAvailable()) return diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index 3f3bbfa31b..a1a3d2cd49 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -24,11 +24,11 @@ android.nonTransitiveRClass=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=7.0 -android.version_code=366 +android.version_name=7.0.1 +android.version_code=371 -desktop.version_name=7.0 -desktop.version_code=155 +desktop.version_name=7.0.1 +desktop.version_code=157 kotlin.version=2.1.20 gradle.plugin.version=8.7.0 diff --git a/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt b/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt index 14e2299514..03e29f0016 100644 --- a/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt +++ b/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt @@ -7170,6 +7170,10 @@ Plan: SCAN m USING COVERING INDEX idx_group_members_user_id_local_display_name SEARCH c USING INDEX idx_connections_group_member_id (group_member_id=?) +Query: SELECT chat_item_id FROM chat_items WHERE group_scope_tag = 'member_support' ORDER BY chat_item_id DESC LIMIT 1 +Plan: +SCAN chat_items + Query: SELECT chat_item_id FROM chat_items WHERE item_text LIKE '%' || ? || '%' ORDER BY chat_item_id DESC LIMIT 1 Plan: SCAN chat_items From b93fd18a363aa4b78564770cbbcca9c78d83ee67 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> Date: Tue, 18 Aug 2026 12:44:35 +0100 Subject: [PATCH 13/24] ios: 7.0.1 build 349 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 05e4a66d32..7cd5f060bf 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -2081,7 +2081,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2131,7 +2131,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -2173,7 +2173,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -2193,7 +2193,7 @@ buildSettings = { ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEVELOPMENT_TEAM = 5NN7GUYB6T; GENERATE_INFOPLIST_FILE = YES; IPHONEOS_DEPLOYMENT_TARGET = 15.0; @@ -2218,7 +2218,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -2255,7 +2255,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -2292,7 +2292,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2343,7 +2343,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -2397,7 +2397,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; @@ -2431,7 +2431,7 @@ CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; CODE_SIGN_ENTITLEMENTS = "SimpleX SE/SimpleX SE.entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 348; + CURRENT_PROJECT_VERSION = 349; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_USER_SCRIPT_SANDBOXING = YES; GCC_C_LANGUAGE_STANDARD = gnu17; From ebe7396fea16ef4022da48098db636cebfc497a2 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 18 Aug 2026 13:42:18 +0100 Subject: [PATCH 14/24] 7.0.1: android 372, desktop 157 --- apps/multiplatform/gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index a1a3d2cd49..61ea0f7f29 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -25,7 +25,7 @@ kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 android.version_name=7.0.1 -android.version_code=371 +android.version_code=372 desktop.version_name=7.0.1 desktop.version_code=157 From 5e45fe1f0e26b0cd2b0ed5be91722067df13ddbd Mon Sep 17 00:00:00 2001 From: Evgeny Date: Tue, 18 Aug 2026 16:35:37 +0100 Subject: [PATCH 15/24] directory: only create group links after approval (#7356) * directory: only create group links after approval * update test * update messages * diff * get group and link in one query * reduce database reads * better errors * typos * query plans --------- Co-authored-by: Evgeny @ SimpleX Chat <259188159+evgeny-simplex@users.noreply.github.com> --- apps/simplex-directory-service/README.md | 23 +- .../src/Directory/Listing.hs | 27 +- .../src/Directory/Service.hs | 360 +++++++------ .../src/Directory/Store.hs | 54 +- docs/DIRECTORY.md | 15 +- plans/2026-08-04-directory-link-approval.md | 100 ++++ src/Simplex/Chat.hs | 1 + src/Simplex/Chat/Controller.hs | 1 + src/Simplex/Chat/Library/Subscriber.hs | 3 +- tests/Bots/DirectoryTests.hs | 490 +++++++++--------- 10 files changed, 592 insertions(+), 482 deletions(-) create mode 100644 plans/2026-08-04-directory-link-approval.md diff --git a/apps/simplex-directory-service/README.md b/apps/simplex-directory-service/README.md index 5c397b6492..09df74abb0 100644 --- a/apps/simplex-directory-service/README.md +++ b/apps/simplex-directory-service/README.md @@ -143,11 +143,12 @@ The bot sends a welcome message automatically when you connect. ### 2. Registering a Group -Registration is a three-step process — see [DIRECTORY.md](../../docs/DIRECTORY.md) for full details: +Registration is a two-step process — see [DIRECTORY.md](../../docs/DIRECTORY.md) for full details: 1. Invite the directory bot to your group as `admin`. -2. Add the link the bot sends you to the group's welcome message. -3. Wait for admin approval (usually within a day, except holidays). +2. Wait for admin approval (usually within a day, except holidays). + +On approval the bot creates the join link, sends it to you, and recommends adding it to the group welcome message. Adding or removing this link in the welcome message keeps the group listed; other profile changes require re-approval. If a group with the same display name is already registered (but not yet listed or suspended), the bot asks you to confirm with `/confirm`. If the name is already listed or suspended in the directory, registration is blocked. @@ -277,33 +278,29 @@ Forward path, from invitation to being listed: └────────────┬─────────────┘ ▼ Proposed - │ bot joins the group and creates the link - ▼ - PendingUpdate - │ owner adds the link to the group welcome + │ bot joins the group ▼ PendingApproval - │ admin runs /approve + │ admin runs /approve; the bot creates the join link ▼ Active (listed; visible in search) ``` **Transitions out of Active:** -- → **PendingUpdate** — the directory bot link is removed from the welcome message. -- → **PendingApproval** — most other profile changes (see ** below); the `approval-id` shown to admins is bumped each time, so stale `/approve` commands are rejected. +- → **PendingApproval** — profile changes other than the bot link (see ** below); the `approval-id` shown to admins is bumped each time, so stale `/approve` commands are rejected. - → **Suspended** — an admin runs `/suspend`; `/resume` re-lists the group. - → **SuspendedBadRoles** — the directory bot loses its `admin` role, or the registering owner loses their `owner` role, in the group; automatically restored to **Active** once the roles are corrected. - → **Removed** — the owner runs `/delete`, the owner is removed from or leaves the group, the bot is removed from the group, or the group is deleted. The group can be re-registered afterwards. \* Only when the duplicate is registered but not yet listed or suspended. If the name is already listed or suspended, registration is blocked entirely. -\*\* Profile changes only trigger re-approval when fields other than the directory bot link are modified. If the only change is swapping the old bot link for the new one, or changing only whitespace in the description, the group stays Active. +\*\* Profile changes only trigger re-approval when fields other than the directory bot link are modified. Adding, removing, or replacing the bot link line in the welcome message, or changing only whitespace in the description, keeps the group Active. **State notes:** - **PendingConfirmation** — the bot was invited but a group with the same display name is already registered (in a pending state); the owner must run `/confirm` to proceed. - **Proposed** — the name is unique (or the duplicate was confirmed via `/confirm`); the bot is joining the group. -- **PendingUpdate** — the bot has joined the group and created the join link; the owner must add it to the group's welcome message. -- **PendingApproval** — submitted for admin review. The join link works even before approval. +- **PendingUpdate** — legacy state of registrations created before link-at-approval; any profile change moves such a group to PendingApproval. +- **PendingApproval** — submitted for admin review. The join link is created at first approval, so a new registration has no working link until approved. - **Active** — listed in the directory and visible in search results. diff --git a/apps/simplex-directory-service/src/Directory/Listing.hs b/apps/simplex-directory-service/src/Directory/Listing.hs index d2df341545..dd7bbb509a 100644 --- a/apps/simplex-directory-service/src/Directory/Listing.hs +++ b/apps/simplex-directory-service/src/Directory/Listing.hs @@ -1,5 +1,6 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE DuplicateRecordFields #-} +{-# LANGUAGE GADTs #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} @@ -34,12 +35,30 @@ import Data.Time.Format.ISO8601 (iso8601Show) import Directory.Store import Simplex.Chat.Markdown import Simplex.Chat.Types +import Simplex.Chat.View (simplexChatContact) import Simplex.Messaging.Agent.Protocol import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, taggedObjectJSON) import System.Directory import System.FilePath +-- the line the directory recommends adding to the group welcome message +groupLinkLine :: Text -> Text -> Text +groupLinkLine name link = groupLinkLinePrefix name <> link + +groupLinkLinePrefix :: Text -> Text +groupLinkLinePrefix name = "Link to join the group " <> name <> ": " + +matchesGroupLink :: CreatedLinkContact -> FormattedText -> Bool +matchesGroupLink (CCLink cReq sLnk_) = \case + FormattedText (Just SimplexLink {simplexUri = ACL SCMContact cLink}) _ -> case cLink of + CLFull cReq' -> sameConnReqContact cReq' cReq + CLShort sLnk' -> maybe False (sameShortLinkContact sLnk') sLnk_ + _ -> False + +descriptionContainsLink :: CreatedLinkContact -> Text -> Bool +descriptionContainsLink gLink = maybe False (any (matchesGroupLink gLink)) . parseMaybeMarkdownList + directoryDataPath :: String directoryDataPath = "data" @@ -107,7 +126,13 @@ groupDirectoryEntry now g@GroupInfo {groupProfile, chatTs, createdAt, groupSumma let gtStr = case gt' of GTChannel -> "channel"; _ -> "group" linkLine = "Link to join the " <> gtStr <> " " <> displayName <> ": " <> decodeUtf8 (strEncode sLnk) in Just $ maybe linkLine (<> "\n\n" <> linkLine) description - Nothing -> description + Nothing -> case connLinkContact <$> gLink_ of + Just gLink@(CCLink cReq sLnk_) + | not (maybe False (descriptionContainsLink gLink) description) -> + let linkText = maybe (strEncode $ simplexChatContact cReq) strEncode sLnk_ + linkLine = groupLinkLine displayName $ decodeUtf8 linkText + in Just $ maybe linkLine (<> "\n\n" <> linkLine) description + _ -> description entry groupLink = let de = DirectoryEntry diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index a3af872ac3..079adeb730 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -25,13 +25,14 @@ import Control.Logger.Simple import Control.Monad import Control.Monad.Except import Control.Monad.IO.Class +import Control.Monad.Reader (runReaderT) import qualified Data.Attoparsec.Text as A import Data.Bifunctor (first) import Data.Either (fromRight) -import Data.List (find, intercalate) +import Data.List (intercalate) import Data.List.NonEmpty (NonEmpty (..)) import qualified Data.Map.Strict as M -import Data.Maybe (fromMaybe, isJust, isNothing, maybeToList) +import Data.Maybe (fromMaybe, isJust, isNothing, listToMaybe, maybeToList) import qualified Data.Set as S import Data.Text (Text) import qualified Data.Text as T @@ -51,6 +52,7 @@ import Simplex.Chat.Bot import Simplex.Chat.Bot.KnownContacts import Simplex.Chat.Controller import Simplex.Chat.Core +import Simplex.Chat.Library.Internal (setGroupLinkData) import Simplex.Chat.Markdown (Format (..), FormattedText (..), SimplexLinkType (..), parseMaybeMarkdownList, viewName) import Simplex.Chat.Messages import Simplex.Chat.Options @@ -65,7 +67,8 @@ import Simplex.Chat.Types import Simplex.Chat.Types.Preferences import Simplex.Chat.Types.Shared import Simplex.Chat.View (groupSimplexDomain, serializeChatError, serializeChatResponse, simplexChatContact, viewContactName, viewGroupName) -import Simplex.Messaging.Agent.Protocol (AConnectionLink (..), ACreatedConnLink (..), AgentErrorType (..), ConnectionLink (..), CreatedConnLink (..), SConnectionMode (..), SimplexDomain, sameConnReqContact, sameShortLinkContact) +import Simplex.Messaging.Agent.Protocol (AConnectionLink (..), ACreatedConnLink (..), AgentErrorType (..), ConnectionLink (..), CreatedConnLink (..), SConnectionMode (..), SimplexDomain) +import Simplex.Messaging.Client (NetworkRequestMode (..)) import qualified Simplex.Messaging.Crypto.File as CF import Simplex.Messaging.Encoding.String import Simplex.Messaging.Protocol (ErrorType (..)) @@ -78,13 +81,6 @@ import System.Exit (exitFailure) import System.Process (readProcess) import Text.Read (readMaybe) -data GroupProfileUpdate - = GPNoServiceLink - | GPServiceLinkAdded {linkNow :: Text} - | GPServiceLinkRemoved - | GPHasServiceLink {linkBefore :: Text, linkNow :: Text} - | GPServiceLinkError - data DuplicateGroup = DGUnique -- display name or full name is unique | DGRegistered -- the group with the same names is registered, additional confirmation is required @@ -166,7 +162,7 @@ directoryServiceCLI st opts = do acceptMember = Just $ acceptMemberHook opts env } raceAny_ $ - [ simplexChatCLI' terminalChatConfig {chatHooks} (mkChatOpts opts) Nothing, + [ simplexChatCLI' terminalChatConfig {chatHooks, updateGroupLinksFromApp = True} (mkChatOpts opts) Nothing, processEvents env ] <> maybeToList (updateListingsThread_ opts env) @@ -242,7 +238,7 @@ directoryCommands = "Group settings" [ CBCCommand "role" "View new member role" idParam, CBCCommand "filter" "Anti-spam filter" idParam, - CBCCommand "link" "View and upgrade group link" idParam, + CBCCommand "link" "View group link" idParam, CBCCommand "delete" "Remove a group from directory" (Just ":''") ] ] @@ -258,7 +254,7 @@ directoryService st opts cfg = do postStartHook = Just $ directoryPostStartHook opts env, acceptMember = Just $ acceptMemberHook opts env } - simplexChatCore cfg {chatHooks} (mkChatOpts opts) $ \user cc -> + simplexChatCore cfg {chatHooks, updateGroupLinksFromApp = True} (mkChatOpts opts) $ \user cc -> raceAny_ $ [ forever $ do (_, resp) <- atomically . readTBQueue $ outputQ cc @@ -494,32 +490,17 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName notifyOwner gr msg Right () -> do logGUpdateOwner st groupId $ groupMemberId' owner - notifyOwner gr $ "Joined the group " <> displayName <> ", creating the link…" - sendChatCmd cc (APICreateGroupLink groupId GRMember) >>= \case - Right CRGroupLinkCreated {groupLink = GroupLink {connLinkContact = gLink}} -> - setGroupStatus notifyAdminUsers st env cc groupId GRSPendingUpdate $ \gr' -> do - notifyOwner - gr' - "Created the public link to join the group via this directory service that is always online.\n\n\ - \Please add it to the group welcome message.\n\ - \For example, add:" - notifyOwner gr' $ "Link to join the group " <> displayName <> ": " <> groupLinkText gLink - notifyOwner gr' $ recommendedSettingsNotice (userGroupRegId gr') - Left (ChatError e) -> case e of - CEGroupUserRole {} -> notifyOwner gr "Failed creating group link, as service is no longer an admin." - CEGroupMemberUserRemoved -> notifyOwner gr "Failed creating group link, as service is removed from the group." - CEGroupNotJoined _ -> notifyOwner gr $ unexpectedError "group not joined" - CEGroupMemberNotActive -> notifyOwner gr $ unexpectedError "service membership is not active" - _ -> notifyOwner gr $ unexpectedError "can't create group link" - _ -> notifyOwner gr $ unexpectedError "can't create group link" + setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval 1) $ \gr' -> do + notifyOwner gr' $ "Joined the group " <> displayName <> ". Registration is pending approval — it may take up to 48 hours." + notifyOwner gr' $ recommendedSettingsNotice (userGroupRegId gr') + verifyAndSendToApprove g gr' 1 deGroupUpdated :: GroupMember -> GroupInfo -> GroupInfo -> IO () deGroupUpdated m@GroupMember {memberProfile = LocalProfile {displayName = mName}} fromGroup toGroup = do logInfo $ "group updated " <> viewGroupName toGroup unless (sameProfile p p') $ do withGroupReg toGroup "group updated" $ \gr@GroupReg {groupRegStatus} -> do - let userGroupRef = userGroupReference gr toGroup - byMember = case memberContactId m of + let byMember = case memberContactId m of Just ctId | ctId `isOwner` gr -> "" -- group registration owner, not any group owner. _ -> " by " <> mName -- owner notification from directory will include the name. case publicGroup p' of @@ -530,26 +511,11 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName Nothing -> case groupRegStatus of GRSPendingConfirmation -> pure () GRSProposed -> pure () - GRSPendingUpdate -> - groupProfileUpdate >>= \case - GPNoServiceLink -> - notifyOwner gr $ "The profile updated for " <> userGroupRef <> byMember <> ", but the group link is not added to the welcome message." - GPServiceLinkAdded _ -> groupLinkAdded gr byMember - GPServiceLinkRemoved -> - notifyOwner gr $ - "The group link of " <> userGroupRef <> " is removed from the welcome message" <> byMember <> ", please add it." - GPHasServiceLink {} -> groupLinkAdded gr byMember - GPServiceLinkError -> do - notifyOwner gr $ - ("Error: " <> serviceName <> " has no group link for " <> userGroupRef) - <> " after profile was updated" - <> byMember - <> ". Please report the error to the developers." - logError $ "Error: no group link for " <> userGroupRef - GRSPendingApproval n -> processProfileChange gr byMember False $ n + 1 - GRSActive -> processProfileChange gr byMember True 1 - GRSSuspended -> processProfileChange gr byMember False 1 - GRSSuspendedBadRoles -> processProfileChange gr byMember False 1 + GRSPendingUpdate -> sendForApproval byMember 1 + GRSPendingApproval n -> processProfileChange gr byMember $ n + 1 + GRSActive -> processProfileChange gr byMember 1 + GRSSuspended -> processProfileChange gr byMember 1 + GRSSuspendedBadRoles -> processProfileChange gr byMember 1 GRSRemoved -> pure () where GroupInfo {groupId, groupProfile = p} = fromGroup @@ -584,73 +550,46 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName Nothing -> logError $ "no owner member set for " <> groupRef _ -> setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval n') (`updatedNotification` toGroup) - groupLinkAdded gr byMember = - getDuplicateGroup toGroup >>= \case - Left e -> notifyOwner gr $ "Error: getDuplicateGroup. Please notify the developers.\n" <> T.pack e - Right DGReserved -> notifyOwner gr $ groupAlreadyListed toGroup - _ -> setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval gaId) $ \gr' -> do - notifyOwner gr' $ - ("Thank you! The group link for " <> userGroupReference gr' toGroup <> " is added to the welcome message" <> byMember) - <> ".\nYou will be notified once the group is added to the directory - it may take up to 48 hours." - checkRolesSendToApprove gr' gaId - where - gaId = 1 - processProfileChange gr byMember isActive n' = do - let userGroupRef = userGroupReference gr toGroup - groupRef = groupReference toGroup - groupProfileUpdate >>= \case - GPNoServiceLink -> setGroupStatus notifyAdminUsers st env cc groupId GRSPendingUpdate $ \gr' -> do - notifyOwner gr' $ - ("The group profile is updated for " <> userGroupRef <> byMember <> ", but no link is added to the welcome message.\n\n") - <> "The group will remain hidden from the directory until the group link is added and the group is re-approved." - GPServiceLinkRemoved -> setGroupStatus notifyAdminUsers st env cc groupId GRSPendingUpdate $ \gr' -> do - notifyOwner gr' $ - ("The group link for " <> userGroupRef <> " is removed from the welcome message" <> byMember) - <> ".\n\nThe group is hidden from the directory until the group link is added and the group is re-approved." - notifyAdminUsers $ "The group link is removed from " <> groupRef <> ", de-listed." - GPServiceLinkAdded _ -> setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval n') $ \gr' -> do - notifyOwner gr' $ - ("The group link is added to " <> userGroupRef <> byMember) - <> "!\nIt is hidden from the directory until approved." - notifyAdminUsers $ "The group link is added to " <> groupRef <> byMember <> "." - checkRolesSendToApprove gr n' - GPHasServiceLink {linkBefore, linkNow} - | isActive && onlyLinkChanged p p' -> do - notifyOwner gr $ - ("The group " <> userGroupRef <> " is updated" <> byMember) - <> "!\nThe group is listed in directory." - notifyAdminUsers $ "The group " <> groupRef <> " is updated" <> byMember <> " - only link or whitespace changes.\nThe group remained listed in directory." - | otherwise -> setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval n') $ \gr' -> do - notifyOwner gr' $ - ("The group " <> userGroupRef <> " is updated" <> byMember) - <> "!\nIt is hidden from the directory until approved." - notifyAdminUsers $ "The group " <> groupRef <> " is updated" <> byMember <> "." - checkRolesSendToApprove gr' n' - where - onlyLinkChanged - GroupProfile {displayName = dn, fullName = fn, shortDescr = sd, image = i, description = d, memberAdmission = ma} - GroupProfile {displayName = dn', fullName = fn', shortDescr = sd', image = i', description = d', memberAdmission = ma'} = - dn == dn' && fn == fn' && i == i' && sd == sd' && ma == ma' && (T.words . T.replace linkBefore "" <$> d) == (T.words . T.replace linkNow "" <$> d') - GPServiceLinkError -> logError $ "Error: no group link for " <> groupRef <> " pending approval." - groupProfileUpdate = profileUpdate <$> sendChatCmd cc (APIGetGroupLink groupId) + sendForApproval byMember n' = + setGroupStatus notifyAdminUsers st env cc groupId (GRSPendingApproval n') $ \gr' -> do + notifyOwner gr' $ + ("The group " <> userGroupReference gr' toGroup <> " is updated" <> byMember) + <> "!\nIt is hidden from the directory until approved." + notifyAdminUsers $ "The group " <> groupReference toGroup <> " is updated" <> byMember <> "." + checkRolesSendToApprove gr' n' + processProfileChange gr byMember n' = + withDB' "getGroupLink" cc (\db -> runExceptT $ getGroupLink db user toGroup) >>= \case + Left e -> linkReadError $ T.pack e + Right (Left SEGroupLinkNotFound {}) -> profileChange Nothing + Right (Left e) -> linkReadError $ tshow e + Right (Right gLink) -> profileChange $ Just gLink where - profileUpdate = \case - Right CRGroupLink {groupLink = GroupLink {connLinkContact = CCLink cr sl_}} -> - let linkBefore_ = profileGroupLinkText fromGroup - linkNow_ = profileGroupLinkText toGroup - profileGroupLinkText GroupInfo {groupProfile = GroupProfile {description = descr_}} = - maybe Nothing (fmap (\(FormattedText _ t) -> t) . find ftHasLink) $ parseMaybeMarkdownList =<< descr_ - ftHasLink = \case - FormattedText (Just SimplexLink {simplexUri = ACL SCMContact cLink}) _ -> case cLink of - CLFull cr' -> sameConnReqContact cr' cr - CLShort sl' -> maybe False (sameShortLinkContact sl') sl_ - _ -> False - in case (linkBefore_, linkNow_) of - (Just linkBefore, Just linkNow) -> GPHasServiceLink linkBefore linkNow - (Just _, Nothing) -> GPServiceLinkRemoved - (Nothing, Just linkNow) -> GPServiceLinkAdded linkNow - (Nothing, Nothing) -> GPNoServiceLink - _ -> GPServiceLinkError + linkReadError e = logError $ "Error reading group link for " <> groupReference toGroup <> ": " <> e + profileChange gLink_ + | not (linkOnlyChange gLink_) = sendForApproval byMember n' + | groupRegStatus gr == GRSActive = do + notifyOwner gr $ + ("The group " <> userGroupReference gr toGroup <> " is updated" <> byMember) + <> "!\nThe group is listed in directory." + notifyAdminUsers $ "The group " <> groupReference toGroup <> " is updated" <> byMember <> " - only link or whitespace changes.\nThe group remained listed in directory." + forM_ gLink_ $ \gLink -> + updateGroupLinkData cc user toGroup gLink >>= \case + Right _ -> pure () + Left e -> logError $ "Error updating group link data for " <> groupReference toGroup <> ": " <> tshow e + | otherwise = pure () + linkOnlyChange gLink_ = + dn == dn' && fn == fn' && i == i' && sd == sd' && ma == ma' && descrWords d == descrWords d' + where + GroupProfile {displayName = dn, fullName = fn, shortDescr = sd, image = i, description = d, memberAdmission = ma} = p + GroupProfile {displayName = dn', fullName = fn', shortDescr = sd', image = i', description = d', memberAdmission = ma'} = p' + -- drop the recommended link line (link token and prefix) so adding or removing it is not a content change + descrWords = maybe [] $ case gLink_ of + Just GroupLink {connLinkContact} -> + T.words . T.replace (groupLinkLinePrefix dn) "" . withoutLink connLinkContact + Nothing -> T.words + withoutLink gl descr = + maybe descr (T.concat . map ftText . filter (not . matchesGroupLink gl)) $ parseMaybeMarkdownList descr + ftText (FormattedText _ t) = t checkRolesSendToApprove gr gaId = do (badRolesMsg <$$> getGroupRolesStatus toGroup gr) >>= \case Left e -> notifyOwner gr $ "Error: getGroupRolesStatus. Please notify the developers.\n" <> T.pack e @@ -1095,11 +1034,9 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName \*To register a channel*, use _Share via chat_ to send its link to " <> serviceName <> " bot.\n\n\ - \*To register a group*:\n\ - \1️⃣ *Invite* " + \*To register a group*, *invite* " <> serviceName - <> " bot to your group as *admin* - it will create a link for new members to join.\n\ - \2️⃣ *Add* this link to the group's welcome message.\n\n\ + <> " bot to your group as *admin* - once the group is approved, it will create a link for new members to join.\n\n\ \Once your group or channel *approved*, it can be found here or at [simplex.chat/directory](https://simplex.chat/directory).\n\n\ \_We usually review within a day, except holidays_. [More details](https://simplex.chat/docs/directory.html#adding-groups-to-the-directory)." DCHelp DHSCommands -> @@ -1109,22 +1046,25 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName \/list - list the groups you registered.\n\ \`/role ` - view and set default member role for your group.\n\ \`/filter ` - view and set spam filter settings for group.\n\ - \`/link ` - view and upgrade group link.\n\ + \`/link ` - view group link.\n\ \`/delete :` - remove the group you submitted from directory, with _ID_ and _name_ as shown by /list command.\n\n\ \To search for groups, send the search text." - DCSearchGroup s ft -> - sendFoundListedGroups (STSearch s) Nothing notFound $ \gs n -> - let more = if n > length gs then ", sending top " <> tshow (length gs) else "" - in "Found " <> tshow n <> " group(s)" <> more <> "." + DCSearchGroup s ft -> case ft >>= groupLinkUri of + Just uri -> + getRegisteredGroupByLink uri >>= \case + Just (g, gr, ccLink) + | isAdmin -> sendGroupsInfo ct ciId True ([(g, gr)], 1) + | groupRegStatus gr == GRSActive -> sendFoundGroups "Found group:" [(g, gr, Just ccLink)] 0 + _ + | isAdmin -> sendReply "This link is not registered in the directory" + | otherwise -> sendReply linkNotFound + Nothing -> + sendFoundListedGroups (STSearch s) Nothing "No groups found" $ \gs n -> + let more = if n > length gs then ", sending top " <> tshow (length gs) else "" + in "Found " <> tshow n <> " group(s)" <> more <> "." where - notFound - | hasSimplexGroupLink ft = "No groups found.\nTo register a group or a channel, please use \"Share via chat\" feature." - | otherwise = "No groups found" - hasSimplexGroupLink = \case - Just fts -> any isGroupLink fts - Nothing -> False - isGroupLink (FormattedText (Just SimplexLink {linkType}) _) = linkType == XLGroup || linkType == XLChannel - isGroupLink _ = False + linkNotFound = "No groups found.\nTo register a group or a channel, please use \"Share via chat\" feature." + groupLinkUri fts = listToMaybe [uri | FormattedText (Just SimplexLink {linkType, simplexUri = uri}) _ <- fts, linkType == XLGroup || linkType == XLChannel] DCSearchNext -> atomically (TM.lookup (contactId' ct) searchRequests) >>= \case Just SearchRequest {searchType, searchTime, lastGroup} -> do @@ -1164,7 +1104,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName when (isJust pg_) $ leavePublicGroup g Left e -> sendReply $ "Error deleting " <> gt <> " " <> displayName <> ": " <> T.pack e DCMemberRole gId gName_ mRole_ -> - (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g _gr -> + (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g gr -> ifPublicGroup g (sendReply "This command is not available for public groups.") $ do let GroupInfo {groupProfile = GroupProfile {displayName = n}} = g case mRole_ of @@ -1176,14 +1116,17 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName initialRole n acceptMemberRole <> ("Send /'role " <> tshow gId <> " " <> textEncode anotherRole <> "' to change it.\n\n") <> onlyViaLink gLink - Left _ -> sendReply $ "Error: failed reading the initial member role for the group " <> n + Left _ -> sendReply $ roleError gr n $ "Error: failed reading the initial member role for the group " <> n Just mRole -> do setGroupLinkRole cc g mRole >>= \case Just gLink -> sendReply $ initialRole n mRole <> "\n" <> onlyViaLink gLink - Nothing -> sendReply $ "Error: the initial member role for the group " <> n <> " was NOT upgated." + Nothing -> sendReply $ roleError gr n $ "Error: the initial member role for the group " <> n <> " was NOT updated." where initialRole n mRole = "The initial member role for the group " <> n <> " is set to *" <> textEncode mRole <> "*\n" onlyViaLink gLink = "*Please note*: it applies only to members joining via this link: " <> groupLinkText gLink + roleError gr n err = case groupRegStatus gr of + GRSActive -> err + _ -> "The group link for " <> n <> " is created when the group is approved." DCGroupFilter gId gName_ acceptance_ -> (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g _gr -> ifPublicGroup g (sendReply "This command is not available for public groups.") $ do @@ -1217,7 +1160,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName Just PCAll -> "_enabled_" Just PCNoImage -> "_enabled for profiles without image_" DCShowUpgradeGroupLink gId gName_ -> - (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}, localDisplayName = gName} _ -> case pg_ of + (if isAdmin then withGroupAndReg_ sendReply else withUserGroupReg_) gId gName_ $ \g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}, localDisplayName = gName} gr -> case pg_ of Just pg@PublicGroupProfile {groupLink} -> sendReply $ "The link to join the " <> groupTypeStr' pg <> " " <> groupReference' gId gName <> ":\n" <> strEncodeTxt groupLink <> maybe "" (("\nSimpleX name: " <>) . simplexNameStr) (verifiedGroupDomain g) @@ -1225,7 +1168,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName let groupRef = groupReference' gId gName withGroupLinkResult groupRef (sendChatCmd cc $ APIGetGroupLink groupId) $ \GroupLink {connLinkContact = gLink@(CCLink _ sLnk_), acceptMemberRole, shortLinkDataSet, shortLinkLargeDataSet = BoolDef slLargeDataSet} -> do - let shouldBeUpgraded = isNothing sLnk_ || not shortLinkDataSet || not slLargeDataSet + let shouldBeUpgraded = (isNothing sLnk_ || not shortLinkDataSet || not slLargeDataSet) && groupRegStatus gr == GRSActive sendReply $ T.unlines $ [ "The link to join the group " <> groupRef <> ":", @@ -1259,7 +1202,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName a >>= \case Right CRGroupLink {groupLink} -> cb groupLink Left (ChatErrorStore (SEGroupLinkNotFound _)) -> - sendReply $ "The group " <> groupRef <> " has no public link." + sendReply $ "The group " <> groupRef <> " has no public link.\nThe group link is created when the group is approved." Right r -> do ts <- getCurrentTime tz <- getCurrentTimeZone @@ -1289,38 +1232,55 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName sendReply notFound Right (gs, n) -> do let moreGroups = n - length gs - updateSearchRequest searchType $ last gs - sendFoundGroups (replyStr gs n) gs moreGroups + gs' = map (\(g, gr, gLink_) -> (g, gr, (\GroupLink {connLinkContact = cl} -> cl) <$> gLink_)) gs + updateSearchRequest searchType $ last gs' + sendFoundGroups (replyStr gs' n) gs' moreGroups Left e -> sendReply $ "Error: searchListedGroups. Please notify the developers.\n" <> T.pack e allGroupsReply sortName gs n = let more = if n > length gs then ", sending " <> sortName <> " " <> tshow (length gs) else "" in tshow n <> " group(s) listed" <> more <> "." - updateSearchRequest :: SearchType -> (GroupInfo, GroupReg) -> IO () - updateSearchRequest searchType (GroupInfo {groupId}, _) = do + updateSearchRequest :: SearchType -> (GroupInfo, GroupReg, Maybe CreatedLinkContact) -> IO () + updateSearchRequest searchType (GroupInfo {groupId}, _, _) = do searchTime <- getCurrentTime let search = SearchRequest {searchType, searchTime, lastGroup = groupId} atomically $ TM.insert (contactId' ct) search searchRequests + getRegisteredGroupByLink :: AConnectionLink -> IO (Maybe (GroupInfo, GroupReg, CreatedLinkContact)) + getRegisteredGroupByLink uri = + sendChatCmd cc (APIConnectPlan userId (Just (aConnectTarget uri)) PRMNever Nothing) >>= \case + Right (CRConnectionPlan _ (ACCL SCMContact ccLink) _ _ (CPGroupLink glp)) -> case glp of + GLPOwnLink g -> groupReg g ccLink + GLPKnown {groupInfo = g} -> groupReg g ccLink + GLPConnectingProhibit (Just g) -> groupReg g ccLink + _ -> pure Nothing + _ -> pure Nothing + where + groupReg :: GroupInfo -> CreatedLinkContact -> IO (Maybe (GroupInfo, GroupReg, CreatedLinkContact)) + groupReg g ccLink = fmap (\gr -> (g, gr, ccLink)) . eitherToMaybe <$> getGroupReg cc (groupId' g) sendFoundGroups reply gs moreGroups = void . forkIO $ sendComposedMessages_ cc (SRDirect $ contactId' ct) msgs where msgs = replyMsg :| map foundGroup gs <> [moreMsg | moreGroups > 0] replyMsg = (Just ciId, MCText reply) - foundGroup (g@GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_, memberAdmission}, groupSummary}, _) = + foundGroup (g@GroupInfo {groupId, groupProfile = p@GroupProfile {image = image_, memberAdmission}, groupSummary}, _, cLink_) = let membersStr = "_" <> membersCountStr p groupSummary <> "_" showId = if isAdmin then tshow groupId <> ". " else "" - text = T.unlines $ [showId <> groupInfoText (simplexNameStr <$> verifiedGroupDomain g) p, membersStr] ++ knockingStr memberAdmission + text = T.unlines $ [showId <> groupInfoText (simplexNameStr <$> verifiedGroupDomain g) p] <> foundGroupLinkLine p cLink_ <> [membersStr] <> knockingStr memberAdmission in (Nothing, maybe (MCText text) (\image -> MCImage {text, image}) image_) moreMsg = (Nothing, MCText $ "Send /next for " <> tshow moreGroups <> " more result(s).") - + -- link line for a non-public group in search results, unless its welcome message already contains it + foundGroupLinkLine GroupProfile {displayName = n, description, publicGroup} cLink_ = case (publicGroup, cLink_) of + (Nothing, Just gLink) + | not (maybe False (descriptionContainsLink gLink) description) -> [groupLinkLine n (groupLinkText gLink)] + _ -> [] deAdminCommand :: Contact -> ChatItemId -> DirectoryCmd 'DRAdmin -> IO () deAdminCommand ct ciId cmd | knownCt `elem` adminUsers || knownCt `elem` superUsers = case cmd of DCApproveGroup {groupId, displayName = n, groupApprovalId, promote} -> - withGroupAndReg sendReply groupId n $ \g gr@GroupReg {userGroupRegId = ugrId, promoted} -> + withGroupRegLink sendReply groupId n $ \g gr@GroupReg {userGroupRegId = ugrId, promoted} curLink_ -> case groupRegStatus gr of GRSPendingApproval gaId | gaId == groupApprovalId -> do - let GroupInfo {groupProfile = GroupProfile {publicGroup = pg_}} = g + let GroupInfo {groupProfile = GroupProfile {publicGroup = pg_, description = descr_}} = g isPublicGroup_ = isJust pg_ gt = maybe "group" groupTypeStr' pg_ getDuplicateGroup g >>= \case @@ -1333,28 +1293,37 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName let grPromoted' | promoted || knownCt `elem` superUsers = fromMaybe promoted promote | otherwise = False - setGroupStatusPromo sendReply st env cc gr GRSActive grPromoted' $ do - let approved = "The " <> gt <> " " <> userGroupReference' gr n <> " is approved" - let commands - | isPublicGroup_ = "" - | otherwise = - "\n\nSupported commands:\n" - <> ("/'filter " <> tshow ugrId <> "' - to configure anti-spam filter.\n") - <> ("/'role " <> tshow ugrId <> "' - to set default member role.\n") - <> ("/'link " <> tshow ugrId <> "' - to view/upgrade group link.") - notifyOwner gr $ - (approved <> " and listed in directory - please moderate it!\n") - <> "_Please note_: if you change the " <> gt <> " profile it will be hidden from directory until it is re-approved." - <> commands - invited <- - forM ownersGroup $ \og@KnownGroup {localDisplayName = ogName} -> do - inviteToOwnersGroup og gr $ \case - Right () -> do - owner <- groupOwnerInfo groupRef $ dbContactId gr - pure $ "Invited " <> owner <> " to owners' group " <> viewName ogName - Left err -> pure err - sendReply $ T.toTitle gt <> " approved" <> (if grPromoted' then " (promoted)" else "") <> "!" <> maybe "" ("\n" <>) invited - notifyOtherSuperUsers $ approved <> " by " <> viewName (localDisplayName' ct) <> maybe "" ("\n" <>) invited + gLink_ <- if isPublicGroup_ then pure (Right Nothing) else approvedGroupLink g curLink_ + case gLink_ of + Left e -> sendReply e + Right gLink' -> + setGroupStatusPromo sendReply st env cc gr GRSActive grPromoted' $ do + let approved = "The " <> gt <> " " <> userGroupReference' gr n <> " is approved" + addLink = maybe False (\l -> not $ maybe False (descriptionContainsLink l) descr_) gLink' + commands + | isPublicGroup_ = "" + | otherwise = + "\n\nSupported commands:\n" + <> ("/'filter " <> tshow ugrId <> "' - to configure anti-spam filter.\n") + <> ("/'role " <> tshow ugrId <> "' - to set default member role.\n") + <> ("/'link " <> tshow ugrId <> "' - to view group link.") + notifyOwner gr $ + (approved <> " and listed in directory - please moderate it!\n") + <> ( if addLink + then "To help people join, copy the next message with the group link and add it to the end of the group welcome message. The group will remain listed. Any other change to the group profile hides it from the directory until it is re-approved." + else "_Please note_: if you change the " <> gt <> " profile it will be hidden from directory until it is re-approved." + ) + <> commands + when addLink $ forM_ gLink' $ \l -> notifyOwner gr $ groupLinkLine n (groupLinkText l) + invited <- + forM ownersGroup $ \og@KnownGroup {localDisplayName = ogName} -> do + inviteToOwnersGroup og gr $ \case + Right () -> do + owner <- groupOwnerInfo groupRef $ dbContactId gr + pure $ "Invited " <> owner <> " to owners' group " <> viewName ogName + Left err -> pure err + sendReply $ T.toTitle gt <> " approved" <> (if grPromoted' then " (promoted)" else "") <> "!" <> maybe "" ("\n" <>) invited + notifyOtherSuperUsers $ approved <> " by " <> viewName (localDisplayName' ct) <> maybe "" ("\n" <>) invited Right GRSServiceNotAdmin -> replyNotApproved serviceNotAdmin Right GRSContactNotOwner -> replyNotApproved "user is not an owner." Right GRSBadRoles -> replyNotApproved $ "user is not an owner, " <> serviceNotAdmin @@ -1363,9 +1332,24 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName replyNotApproved reason = sendReply $ "Group is not approved: " <> reason serviceNotAdmin = serviceName <> " is not an admin." | otherwise -> sendReply "Incorrect approval code" - _ -> sendReply $ "Error: the group " <> groupRef <> " is not pending approval." + status -> sendReply $ "Error: the group " <> groupRef <> " status is " <> groupRegStatusText status <> ", it is not pending approval." where groupRef = groupReference' groupId n + approvedGroupLink g = \case + Just gLink -> + updateGroupLinkData cc user g gLink >>= \case + Right GroupLink {connLinkContact} -> pure $ Right $ Just connLinkContact + Left e -> pure $ Left $ "Error updating group link data: " <> tshow e + Nothing -> + sendChatCmd cc (APICreateGroupLink groupId GRMember) >>= \case + Right CRGroupLinkCreated {groupLink = GroupLink {connLinkContact}} -> pure $ Right $ Just connLinkContact + Left (ChatError e) -> pure $ Left $ case e of + CEGroupUserRole {} -> "Failed creating group link, as service is no longer an admin." + CEGroupMemberUserRemoved -> "Failed creating group link, as service is removed from the group." + CEGroupNotJoined _ -> unexpectedError "group not joined" + CEGroupMemberNotActive -> unexpectedError "service membership is not active" + _ -> unexpectedError "can't create group link" + _ -> pure $ Left $ unexpectedError "can't create group link" DCRejectGroup _gaId _gName -> pure () DCSuspendGroup groupId gName -> do let groupRef = groupReference' groupId gName @@ -1376,7 +1360,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName notifyOwner gr' $ suspended <> " and hidden from directory. Please contact the administrators." sendReply "Group suspended!" notifyOtherSuperUsers $ suspended <> " by " <> viewName (localDisplayName' ct) - _ -> sendReply $ "The group " <> groupRef <> " is not active, can't be suspended." + status -> sendReply $ "The group " <> groupRef <> " status is " <> groupRegStatusText status <> ", it can't be suspended." DCResumeGroup groupId gName -> do let groupRef = groupReference' groupId gName withGroupAndReg sendReply groupId gName $ \_ gr -> @@ -1386,7 +1370,7 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName notifyOwner gr' $ groupStr <> " is listed in the directory again!" sendReply "Group listing resumed!" notifyOtherSuperUsers $ groupStr <> " listing resumed by " <> viewName (localDisplayName' ct) - _ -> sendReply $ "The group " <> groupRef <> " is not suspended, can't be resumed." + status -> sendReply $ "The group " <> groupRef <> " status is " <> groupRegStatusText status <> ", it can't be resumed." DCListLastGroups count -> listLastGroups cc user count >>= \case Left e -> sendReply $ "Error reading groups: " <> T.pack e @@ -1473,18 +1457,25 @@ directoryServiceEvent st opts@DirectoryOpts {adminUsers, superUsers, serviceName mkSendReply :: Contact -> ChatItemId -> Text -> IO () mkSendReply ct ciId = sendComposedMessage cc ct (Just ciId) . MCText + withGroupRegLink :: (Text -> IO ()) -> GroupId -> GroupName -> (GroupInfo -> GroupReg -> Maybe GroupLink -> IO ()) -> IO () + withGroupRegLink sendReply gId = withGroupRegLink_ sendReply gId . Just + + withGroupRegLink_ :: (Text -> IO ()) -> GroupId -> Maybe GroupName -> (GroupInfo -> GroupReg -> Maybe GroupLink -> IO ()) -> IO () + withGroupRegLink_ sendReply gId gName_ action = + getGroupAndRegLink cc user gId >>= \case + Left e -> sendReply $ "Group " <> tshow gId <> " error (getGroup): " <> T.pack e + Right (g@GroupInfo {groupProfile = GroupProfile {displayName}}, gr, gLink_) + | maybe False (displayName ==) gName_ -> + action g gr gLink_ + | otherwise -> + sendReply $ "Group ID " <> tshow gId <> " has the display name " <> displayName + withGroupAndReg :: (Text -> IO ()) -> GroupId -> GroupName -> (GroupInfo -> GroupReg -> IO ()) -> IO () withGroupAndReg sendReply gId = withGroupAndReg_ sendReply gId . Just withGroupAndReg_ :: (Text -> IO ()) -> GroupId -> Maybe GroupName -> (GroupInfo -> GroupReg -> IO ()) -> IO () withGroupAndReg_ sendReply gId gName_ action = - getGroupAndReg cc user gId >>= \case - Left e -> sendReply $ "Group " <> tshow gId <> " error (getGroup): " <> T.pack e - Right (g@GroupInfo {groupProfile = GroupProfile {displayName}}, gr) - | maybe False (displayName ==) gName_ -> - action g gr - | otherwise -> - sendReply $ "Group ID " <> tshow gId <> " has the display name " <> displayName + withGroupRegLink_ sendReply gId gName_ $ \g gr _ -> action g gr getOwnersInfo :: [(GroupInfo, GroupReg)] -> IO [((GroupInfo, GroupReg), Maybe (Either String Contact))] getOwnersInfo gs = @@ -1567,6 +1558,9 @@ getGroupLink' :: ChatController -> User -> GroupInfo -> IO (Either String GroupL getGroupLink' cc user gInfo = withDB "getGroupLink" cc $ \db -> withExceptT groupDBError $ getGroupLink db user gInfo +updateGroupLinkData :: ChatController -> User -> GroupInfo -> GroupLink -> IO (Either ChatError GroupLink) +updateGroupLinkData cc user gInfo gLink = runReaderT (runExceptT $ setGroupLinkData NRMBackground user gInfo gLink) cc + setGroupLinkRole :: ChatController -> GroupInfo -> GroupMemberRole -> IO (Maybe CreatedLinkContact) setGroupLinkRole cc GroupInfo {groupId} mRole = resp <$> sendChatCmd cc (APIGroupLinkMemberRole groupId mRole) where diff --git a/apps/simplex-directory-service/src/Directory/Store.hs b/apps/simplex-directory-service/src/Directory/Store.hs index e3465e64b1..133daacaf3 100644 --- a/apps/simplex-directory-service/src/Directory/Store.hs +++ b/apps/simplex-directory-service/src/Directory/Store.hs @@ -37,7 +37,7 @@ module Directory.Store getAllGroupRegs_, getDuplicateGroupRegs, getGroupReg, - getGroupAndReg, + getGroupAndRegLink, listLastGroups, listPendingGroups, getAllListedGroups, @@ -93,7 +93,8 @@ import Simplex.Chat.Store import Simplex.Chat.Store.Groups import Simplex.Chat.Store.Shared (groupInfoQueryFields, groupInfoQueryFrom) import Simplex.Chat.Types -import Simplex.Messaging.Agent.Protocol (SimplexDomain) +import Simplex.Chat.Types.Shared (GroupMemberRole (..)) +import Simplex.Messaging.Agent.Protocol (CreatedConnLink (..), SimplexDomain) import Simplex.Messaging.Agent.Store.DB (BoolInt (..), fromTextField_) import qualified Simplex.Messaging.Agent.Store.DB as DB import Simplex.Messaging.Encoding.String @@ -330,11 +331,11 @@ getGroupReg_ db gId = |] (Only gId) -getGroupAndReg :: ChatController -> User -> GroupId -> IO (Either String (GroupInfo, GroupReg)) -getGroupAndReg cc user@User {userId, userContactId} gId = - withDB "getGroupAndReg" cc $ \db -> do +getGroupAndRegLink :: ChatController -> User -> GroupId -> IO (Either String (GroupInfo, GroupReg, Maybe GroupLink)) +getGroupAndRegLink cc user@User {userId, userContactId} gId = + withDB "getGroupAndRegLink" cc $ \db -> do currentTs <- liftIO getCurrentTime - ExceptT $ firstRow (toGroupInfoReg currentTs (storeCxt cc) user) ("group " ++ show gId ++ " not found") $ + ExceptT $ firstRow (toGroupInfoRegLink currentTs (storeCxt cc) user) ("group " ++ show gId ++ " not found") $ DB.query db (groupReqQuery <> " AND g.group_id = ?") (userId, userContactId, gId) getUserGroupReg :: ChatController -> User -> ContactId -> UserGroupRegId -> IO (Either String (GroupInfo, GroupReg)) @@ -357,12 +358,10 @@ getAllListedGroups cc user = withDB' "getAllListedGroups" cc $ \db -> getAllList getAllListedGroups_ :: DB.Connection -> StoreCxt -> User -> IO [(GroupInfo, GroupReg, Maybe GroupLink)] getAllListedGroups_ db cxt user@User {userId, userContactId} = do currentTs <- getCurrentTime - DB.query db (groupReqQuery <> " AND r.group_reg_status = ?") (userId, userContactId, GRSActive) - >>= mapM (withGroupLink . toGroupInfoReg currentTs cxt user) - where - withGroupLink (g, gr) = (g,gr,) . eitherToMaybe <$> runExceptT (getGroupLink db user g) + map (toGroupInfoRegLink currentTs cxt user) + <$> DB.query db (groupReqQuery <> " AND r.group_reg_status = ?") (userId, userContactId, GRSActive) -searchListedGroups :: ChatController -> User -> SearchType -> Maybe GroupId -> Int -> IO (Either String ([(GroupInfo, GroupReg)], Int)) +searchListedGroups :: ChatController -> User -> SearchType -> Maybe GroupId -> Int -> IO (Either String ([(GroupInfo, GroupReg, Maybe GroupLink)], Int)) searchListedGroups cc user@User {userId, userContactId} searchType lastGroup_ pageSize = withDB' "searchListedGroups" cc $ \db -> do currentTs <- getCurrentTime @@ -409,7 +408,7 @@ searchListedGroups cc user@User {userId, userContactId} searchType lastGroup_ pa countQuery' = countQuery <> " JOIN group_profiles gp ON gp.group_profile_id = g.group_profile_id WHERE r.group_reg_status = ? " orderBy = " ORDER BY g.summary_current_members_count DESC, r.group_reg_id ASC " where - groups currentTs = (map (toGroupInfoReg currentTs (storeCxt cc) user) <$>) + groups currentTs = (map (toGroupInfoRegLink currentTs (storeCxt cc) user) <$>) count = maybeFirstRow' 0 fromOnly listedGroupQuery = groupReqQuery <> " AND r.group_reg_status = ? " countQuery = "SELECT COUNT(1) FROM groups g JOIN sx_directory_group_regs r ON g.group_id = r.group_id " @@ -456,9 +455,12 @@ listPendingGroups cc user@User {userId, userContactId} count = n <- maybeFirstRow' 0 fromOnly $ DB.query_ db "SELECT COUNT(1) FROM sx_directory_group_regs WHERE group_reg_status LIKE 'pending_approval%'" pure (gs, n) -toGroupInfoReg :: UTCTime -> StoreCxt -> User -> (GroupInfoRow :. GroupRegRow) -> (GroupInfo, GroupReg) -toGroupInfoReg currentTs cxt User {userContactId} (groupRow :. grRow) = - (toGroupInfo currentTs cxt userContactId [] groupRow, rowToGroupReg grRow) +toGroupInfoReg :: UTCTime -> StoreCxt -> User -> (GroupInfoRow :. GroupRegRow :. GroupLinkRow) -> (GroupInfo, GroupReg) +toGroupInfoReg currentTs cxt user row = let (g, gr, _) = toGroupInfoRegLink currentTs cxt user row in (g, gr) + +toGroupInfoRegLink :: UTCTime -> StoreCxt -> User -> (GroupInfoRow :. GroupRegRow :. GroupLinkRow) -> (GroupInfo, GroupReg, Maybe GroupLink) +toGroupInfoRegLink currentTs cxt User {userContactId} (groupRow :. grRow :. linkRow) = + (toGroupInfo currentTs cxt userContactId [] groupRow, rowToGroupReg grRow, toMaybeGroupLink linkRow) type GroupRegRow = (GroupId, UserGroupRegId, ContactId, Maybe GroupMemberId, GroupRegStatus, BoolInt, UTCTime) @@ -466,10 +468,30 @@ rowToGroupReg :: GroupRegRow -> GroupReg rowToGroupReg (dbGroupId, userGroupRegId, dbContactId, dbOwnerMemberId, groupRegStatus, BI promoted, createdAt) = GroupReg {dbGroupId, userGroupRegId, dbContactId, dbOwnerMemberId, groupRegStatus, promoted, createdAt} +type GroupLinkRow = (Maybe Int64, Maybe ConnReqContact, Maybe ShortLinkContact, Maybe BoolInt, Maybe BoolInt, Maybe GroupLinkId, Maybe GroupMemberRole) + +toMaybeGroupLink :: GroupLinkRow -> Maybe GroupLink +toMaybeGroupLink (Just userContactLinkId, Just cReq, shortLink, slDataSet, slLarge, Just groupLinkId, mRole_) = + Just + GroupLink + { userContactLinkId, + connLinkContact = CCLink cReq shortLink, + shortLinkDataSet = boolInt slDataSet, + shortLinkLargeDataSet = BoolDef $ boolInt slLarge, + groupLinkId, + acceptMemberRole = fromMaybe GRMember mRole_ + } + where + boolInt = maybe False (\(BI b) -> b) +toMaybeGroupLink _ = Nothing + +-- group with its registration and its join link (user_contact_links) in one query groupReqQuery :: Query -groupReqQuery = groupInfoQueryFields <> groupRegFields <> groupInfoQueryFrom <> groupRegFromCond +groupReqQuery = groupInfoQueryFields <> groupRegFields <> groupLinkFields <> groupInfoQueryFrom <> groupLinkJoin <> groupRegFromCond where groupRegFields = ", r.group_id, r.user_group_reg_id, r.contact_id, r.owner_member_id, r.group_reg_status, r.group_promoted, r.created_at " + groupLinkFields = ", uc.user_contact_link_id, uc.conn_req_contact, uc.short_link_contact, uc.short_link_data_set, uc.short_link_large_data_set, uc.group_link_id, uc.group_link_member_role " + groupLinkJoin = " LEFT JOIN user_contact_links uc ON uc.group_id = g.group_id AND uc.user_id = g.user_id " groupRegFromCond = " JOIN sx_directory_group_regs r ON r.group_id = g.group_id WHERE g.user_id = ? AND mu.contact_id = ? " data DirectoryLogRecord diff --git a/docs/DIRECTORY.md b/docs/DIRECTORY.md index 50e7771a1a..9a1e26b9f7 100644 --- a/docs/DIRECTORY.md +++ b/docs/DIRECTORY.md @@ -22,32 +22,27 @@ Please note that your search queries can be kept by the bot as the conversation To add a group you must be its owner. Once you connect to the directory service and send `/help`, the service will guide you through the process. -1. Invite SimpleX Service Directory to the group as `admin` member. You can also set the role to `admin` after inviting the directory service. +1. Invite SimpleX Service Directory to the group as `admin` member. You can also set the role to `admin` after inviting the directory service. The member who invited the directory service will be the owner of the group record in the directory service. The directory service needs to be `admin` to provide a good user experience of joining the group, as it will create a new link to join the group, which is expected to be online 99% of the time. -2. Add the link sent to you by the directory service to the group welcome message. This has to be done by the same group member who invited the directory service to the group. This member will be the owner of the group record in the directory service. - -3. Once the link is added, the group will need to be approved by the directory service admins. This link is functional even before the group is approved, and you can continue using this link even if the group is not approved. +2. The group will need to be approved by the directory service admins. The directory service creates the link to join the group when the group is approved, and sends it to you. The group is usually approved within 24 hours. Please see below which groups can be added. -Once the group is approved, it will appear in search results. +Once the group is approved, it will appear in search results together with the link to join it. We recommend adding this link to the group welcome message - adding or removing it does not require a new approval. You can list all the groups you submitted by sending `/list` to the directory service. ### How to remove the group from the directory -Changing the group profile in any way (e.g., changing the group name, welcome message, or removing the link to join the group from the welcome message) will remove the group from the search results until the group is approved again by the directory service admins. +Changing the group profile (e.g., the group name, image, or the text of the welcome message) will remove the group from the search results until the group is approved again by the directory service admins. Adding or removing the directory link in the welcome message does not require a new approval. If it is undesirable that the service cannot be found in search during this time, please coordinate the time of this change with the directory service admins for quick approval. Changing the role of the directory service will temporarily remove the group from the search results, and unless you changed the role to the `owner`, it will also permanently disrupt the members that were in the process of connecting to other members via the directory service. -To remove the group from the directory: - -1. Remove the group link created by the directory service from the welcome message. This will not disrupt the members from joining the group, even via this link, but will remove the group from the search results. -2. After some time (we recommend 3-4 days) remove the directory service from the group - it will stop receiving the messages and the group will be permanently removed from the search results. +To remove the group from the directory, send `/delete :` to the directory service, with the ID and name shown by `/list`. You can also remove the directory service from the group - the group will be permanently removed from the search results. Removing the group does not prevent you from registering the group again in the future. diff --git a/plans/2026-08-04-directory-link-approval.md b/plans/2026-08-04-directory-link-approval.md new file mode 100644 index 0000000000..6c92ca5bd9 --- /dev/null +++ b/plans/2026-08-04-directory-link-approval.md @@ -0,0 +1,100 @@ +# Directory: group link creation at approval + +Date: 2026-08-04 + +## Goal + +- The directory creates the group join link at first approval. +- The directory issues every link data update; the automatic refresh in core is disabled by config. +- The welcome message link requirement is replaced by a post-approval recommendation. +- A link sent to the directory is resolved to its registered group. + +Existing functions are amended; the diff is kept minimal, in code and in tests. + +## 1. Core (simplex-chat library) + +1.1. `ChatConfig`: add `updateGroupLinksFromApp :: Bool`, default `False`. The directory service sets `True` in `directoryService` and `directoryServiceCLI`. + +1.2. `xGrpInfo` (Subscriber.hs ~3750): condition before the fork: + +```haskell +ChatConfig {updateGroupLinksFromApp} <- asks config +unless (useRelays' g'' || updateGroupLinksFromApp) $ + void $ forkIO $ void $ setGroupLinkData' NRMBackground user g'' +``` + +`setGroupLinkData'` stays unchanged. The call in `runUpdateGroupProfile` (Commands.hs ~4043) stays unconditional. + +1.3. Link data sync from the directory: a Service.hs helper reads the link with `getGroupLink` and runs `setGroupLinkData NRMBackground user gInfo gLink` (Internal.hs ~1461, exported) via `runReaderT (runExceptT …) cc`; the `GroupInfo` argument supplies the profile. + +## 2. Registration flow (Service.hs) + +2.1. `deServiceJoinedGroup`: after `setGroupRegOwner` — set `GRSPendingApproval 1`, notify the owner ("Joined the group X. Registration is pending approval — it may take up to 48 hours."), send `recommendedSettingsNotice`, call `verifyAndSendToApprove`. The `APICreateGroupLink` call and the `GRSPendingUpdate` transition are removed. This mirrors the channel flow in `deMemberUpdated`. + +2.2. `DCApproveGroup`, after the duplicate and roles checks, before `setGroupStatusPromo`: + +- link record present (legacy registration or re-approval): the §1.3 sync with the `GroupInfo` from `getGroupAndReg`; +- link record absent: `APICreateGroupLink groupId GRMember`; on failure reply with the error and keep the status. + +Owner notification: approved, the link, "We recommend adding this link to the group welcome message." + +## 3. Profile update handling (`deGroupUpdated`, non-public groups) + +3.1. `GroupProfileUpdate` and `groupProfileUpdate` are replaced by one check — link-only change: fields other than description equal, descriptions equal after removal of the service link and the recommended phrase "Link to join the group :", with `T.words` normalization. The link is read with `APIGetGroupLink`; on `SEGroupLinkNotFound` the comparison runs without link removal; on other failures — log, no action (as today). The description-contains-link check (`profileGroupLinkText`, Service.hs ~641) moves to a helper shared with §6. + +3.2. Transitions. `n'` — n+1 when the status is `GRSPendingApproval n`, 1 otherwise. "Send to approve" — `checkRolesSendToApprove` as today. + +| status | change | status' | actions | +|---|---|---|---| +| GRSActive | link-only | GRSActive | notify owner; §1.3 sync with the event `toGroup` | +| GRSPendingApproval n | link-only | unchanged | — (the sent approval code stays valid) | +| GRSSuspended, GRSSuspendedBadRoles | link-only | unchanged | — | +| GRSPendingUpdate (legacy data only) | any | GRSPendingApproval 1 | notify owner; send to approve | +| any of the above | other change | GRSPendingApproval n' | notify owner and admins; send to approve | + +The `GRSPendingUpdate` branch of the `deGroupUpdated` dispatch (~533) is removed; the status is routed through `processProfileChange`. Link removal while active keeps the group listed; `GRSPendingUpdate` is unreachable for new registrations. Channel handling (`publicGroupProfileChange`) stays unchanged. + +## 4. Command replies (Service.hs) + +- `DCMemberRole`, group without a link: "The group link is created when the group is approved." +- `DCShowUpgradeGroupLink`: the `SEGroupLinkNotFound` reply mentions approval; the `APIAddGroupShortLink` upgrade branch requires `GRSActive`. +- `DCResumeGroup`, `DCSuspendGroup`, `DCApproveGroup` fallback replies include `groupRegStatusText`. +- `DCHelp DHSRegistration`: the welcome message step is replaced by approval; link inclusion is described as a post-approval recommendation. + +## 5. Search by link + +5.1. Detection: in `DCSearchGroup`, when the formatted text holds a `SimplexLink` of type `XLGroup` or `XLChannel`, the first such `simplexUri`, wrapped with `aConnectTarget`, is the lookup target. + +5.2. Lookup: `APIConnectPlan userId (Just target) PRMNever Nothing`: + +- `CPGroupLink (GLPOwnLink g)`, `CPGroupLink (GLPKnown {groupInfo})` → `getGroupReg` by group id; +- other plans, `CENotResolvedLocally` → unknown link. + +5.3. Replies: + +- user, `GRSActive` → the found-group message (single entry, existing format); +- user, other status or unknown link → the current not-found reply; +- admin, registered → group info with `groupRegStatusText` and owner, as in `sendGroupsInfo` admin format; +- admin, unknown link → "This link is not registered in the directory." + +5.4. Card path: `deChatLinkReceived` branches without a valid owner signature run the §5.2 lookup on `connLink`; `GLPKnown` → reply per §5.3; otherwise the current replies. + +## 6. Link in listings and search results + +6.1. Bot search results: `sendFoundGroups` appends the join-link line for non-public groups when the description omits the link; result rows are extended with the group link via `getGroupLink`. + +6.2. `groupDirectoryEntry` (Listing.hs): the join-link line, currently appended for public groups, is appended for non-public groups too when the description omits the link. + +## 7. Legacy registrations + +Registrations created before deployment keep their links. Their updates follow §3.2. Their approval syncs the link data (§2.2, first branch). + +## 8. Tests (DirectoryTests.hs) + +- Amend `submitGroup`, `groupAccepted`, `completeRegistrationId`, `updateProfileWithLink`, `notifySuperUser`, `approveRegistrationId` to the new sequence — submit → pending approval → approve → link in the approval notification — changing only the affected expected lines. +- New cases: link-only description change keeps the listing and syncs link data; content change requires re-approval; link-only change while pending keeps the approval code valid; profile change while suspended; legacy waiting-for-link registration moves to approval on profile change; `/resume` reply with status; `/role` and `/link` replies before approval; search by link as user and as admin; card from a non-owner for a listed group. + +## 9. Docs + +- `apps/simplex-directory-service/README.md`: registration steps and the state machine section. +- Bot `/help` text is covered by §4. diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index b795ba9b9c..b672dc23a1 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -136,6 +136,7 @@ defaultChatConfig = relayRequestExpiry = (10, nominalDay), deviceNameForRemote = "", remoteCompression = True, + updateGroupLinksFromApp = False, chatHooks = defaultChatHooks } diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 6a80f51a1e..d570129ef3 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -172,6 +172,7 @@ data ChatConfig = ChatConfig highlyAvailable :: Bool, deviceNameForRemote :: Text, remoteCompression :: Bool, + updateGroupLinksFromApp :: Bool, chatHooks :: ChatHooks } diff --git a/src/Simplex/Chat/Library/Subscriber.hs b/src/Simplex/Chat/Library/Subscriber.hs index a65bed75a0..00c7a8cdf3 100644 --- a/src/Simplex/Chat/Library/Subscriber.hs +++ b/src/Simplex/Chat/Library/Subscriber.hs @@ -3747,7 +3747,8 @@ processAgentMessageConn cxt user@User {userId} corrId agentConnId agentMessage = createGroupFeatureChangedItems user cd CIRcvGroupFeature g g'' -- in channels, link data is updated by the owner making the change in runUpdateGroupProfile; -- other owners receiving the update do not refresh the same link - unless (useRelays' g'') $ + ChatConfig {updateGroupLinksFromApp} <- asks config + unless (useRelays' g'' || updateGroupLinksFromApp) $ void $ forkIO $ void $ setGroupLinkData' NRMBackground user g'' Just _ -> updateGroupPrefs_ msgSigned g m $ fromMaybe defaultBusinessGroupPrefs $ groupPreferences p' -- relay advertises its web capability now that the owner's version is known (bumped by saveGroupRcvMsg) diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index 15f713cd1c..2807efbf02 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -12,7 +12,7 @@ import ChatTests.Groups (memberJoinChannel, prepareChannel1Relay) import ChatTests.Utils import Control.Concurrent (forkIO, killThread, threadDelay) import Control.Exception (finally) -import Control.Monad (forM_, when) +import Control.Monad (forM_, void, when) import qualified Data.Aeson as J import qualified Data.Text as T import Directory.Captcha @@ -44,6 +44,7 @@ directoryServiceTests = do it "admin should delete group registration" testDeleteGroupAdmin it "should change initial member role" testSetRole it "should join found group via link" testJoinGroup + it "should find registered group by link" testSearchByLink it "should support group names with spaces" testGroupNameWithSpaces it "should return more groups in search, all and recent groups" testSearchGroups it "should invite to owners' group if specified" testInviteToOwnersGroup @@ -63,7 +64,7 @@ directoryServiceTests = do it "the registration owner" testRegOwnerChangedProfile it "another owner" testAnotherOwnerChangedProfile it "another owner not connected to directory" testNotConnectedOwnerChangedProfile - describe "should require profile update if group link is removed by " $ do + describe "should NOT require re-approval if group link is added or removed by" $ do it "the registration owner" testRegOwnerRemovedLink it "another owner" testAnotherOwnerRemovedLink it "another owner not connected to directory" testNotConnectedOwnerRemovedLink @@ -71,7 +72,7 @@ directoryServiceTests = do it "should ask for confirmation if a duplicate group is submitted" testDuplicateAskConfirmation it "should prohibit registration if a duplicate group is listed" testDuplicateProhibitRegistration it "should prohibit confirmation if a duplicate group is listed" testDuplicateProhibitConfirmation - it "should prohibit when profile is updated and not send for approval" testDuplicateProhibitWhenUpdated + it "should allow to rename and approve a duplicate registration" testDuplicateProhibitWhenUpdated it "should prohibit approval if a duplicate group is listed" testDuplicateProhibitApproval describe "list and promote groups" $ do it "should list and promote user's groups" $ testListUserGroups True @@ -173,34 +174,18 @@ testDirectoryService ps = bob <## "invitation to join the group #PSA sent to 'SimpleX Directory'" bob <# "'SimpleX Directory'> You must grant directory service admin role to register the group" bob ##> "/mr PSA 'SimpleX Directory' admin" - -- putStrLn "*** discover service joins group and creates the link for profile" + -- putStrLn "*** discover service joins group and sends the registration for approval" bob <## "#PSA: you changed the role of 'SimpleX Directory' to admin" bob <# "'SimpleX Directory'> Joining the group PSA…" bob <## "#PSA: 'SimpleX Directory' joined the group" - bob <# "'SimpleX Directory'> Joined the group PSA, creating the link…" - bob <# "'SimpleX Directory'> Created the public link to join the group via this directory service that is always online." - bob <## "" - bob <## "Please add it to the group welcome message." - bob <## "For example, add:" - welcomeWithLink <- dropStrPrefix "'SimpleX Directory'> " . dropTime <$> getTermLine bob + bob <# "'SimpleX Directory'> Joined the group PSA. Registration is pending approval — it may take up to 48 hours." bob <# "'SimpleX Directory'> We recommend allowing direct messages, media, voice, and SimpleX links only for group moderators and admins. Use group preferences to set them." bob <## "Captcha verification is enabled. Use /'filter 1' to change it." - -- putStrLn "*** update profile without link" + notifySuperUser_ superUser bob "PSA" "Privacy, Security & Anonymity" Nothing 1 1 + -- putStrLn "*** update profile before approval - new approval code" updateGroupProfile bob "Welcome!" - bob <# "'SimpleX Directory'> The profile updated for ID 1 (PSA), but the group link is not added to the welcome message." - (superUser Thank you! The group link for ID 1 (PSA) is added to the welcome message." - bob <## "You will be notified once the group is added to the directory - it may take up to 48 hours." - approvalRequested superUser welcomeWithLink (1 :: Int) - -- putStrLn "*** update profile so that it still has link" - let welcomeWithLink' = "Welcome! " <> welcomeWithLink - updateGroupProfile bob welcomeWithLink' - bob <# "'SimpleX Directory'> The group ID 1 (PSA) is updated!" - bob <## "It is hidden from the directory until approved." - superUser <# "'SimpleX Directory'> The group ID 1 (PSA) is updated." - approvalRequested superUser welcomeWithLink' (2 :: Int) + groupUpdatedHidden superUser bob "PSA" "" + notifySuperUser_ superUser bob "PSA" "Privacy, Security & Anonymity" (Just "Welcome!") 1 2 -- putStrLn "*** try approving with the old registration code" bob #> "@'SimpleX Directory' /approve 1:PSA 1" bob <# "'SimpleX Directory'> > /approve 1:PSA 1" @@ -208,44 +193,36 @@ testDirectoryService ps = superUser #> "@'SimpleX Directory' /approve 1:PSA 1" superUser <# "'SimpleX Directory'> > /approve 1:PSA 1" superUser <## " Incorrect approval code" - -- putStrLn "*** update profile so that it has no link" - updateGroupProfile bob "Welcome!" - bob <# "'SimpleX Directory'> The group link for ID 1 (PSA) is removed from the welcome message." - bob <## "" - bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." - superUser <# "'SimpleX Directory'> The group link is removed from ID 1 (PSA), de-listed." - superUser #> "@'SimpleX Directory' /approve 1:PSA 2" - superUser <# "'SimpleX Directory'> > /approve 1:PSA 2" - superUser <## " Error: the group ID 1 (PSA) is not pending approval." - -- putStrLn "*** update profile so that it has link again" - updateGroupProfile bob welcomeWithLink' - bob <# "'SimpleX Directory'> Thank you! The group link for ID 1 (PSA) is added to the welcome message." - bob <## "You will be notified once the group is added to the directory - it may take up to 48 hours." - approvalRequested superUser welcomeWithLink' (1 :: Int) superUser #> "@'SimpleX Directory' /pending" superUser <# "'SimpleX Directory'> > /pending" superUser <## " 1 registered group(s)" superUser <# "'SimpleX Directory'> 1. PSA (Privacy, Security & Anonymity)" superUser <## "Welcome message:" - superUser <##. "Welcome! Link to join the group PSA: " + superUser <## "Welcome!" superUser <## "Owner: bob" superUser <## "2 members" superUser <## "Status: pending admin approval" superUser <## "/'role 1', /'filter 1'" - superUser #> "@'SimpleX Directory' /approve 1:PSA 1" - superUser <# "'SimpleX Directory'> > /approve 1:PSA 1" - superUser <## " Group approved!" - bob <# "'SimpleX Directory'> The group ID 1 (PSA) is approved and listed in directory - please moderate it!" - bob <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." - bob <## "" - bob <## "Supported commands:" - bob <## "/'filter 1' - to configure anti-spam filter." - bob <## "/'role 1' - to set default member role." - bob <## "/'link 1' - to view/upgrade group link." + welcomeWithLink <- approveRegistration_ superUser bob "PSA" 1 1 2 + -- putStrLn "*** add the link to the welcome message - the group remains listed" + let welcomeWithLink' = "Welcome! " <> welcomeWithLink + updateGroupProfile bob welcomeWithLink' + groupUpdatedListed superUser bob "PSA" "" search bob "privacy" welcomeWithLink' search bob "security" welcomeWithLink' cath `connectVia` dsLink search cath "privacy" welcomeWithLink' + -- putStrLn "*** remove the link from the welcome message - the group remains listed" + updateGroupProfile bob "Welcome!" + groupUpdatedListed superUser bob "PSA" "" + bob #> "@'SimpleX Directory' privacy" + bob <# "'SimpleX Directory'> > privacy" + bob <## " Found 1 group(s)." + bob <# "'SimpleX Directory'> PSA (Privacy, Security & Anonymity)" + bob <## "Welcome message:" + bob <## "Welcome!" + bob <##. "Link to join the group PSA: " + bob <## "2 members" bob #> "@'SimpleX Directory' /exec /contacts" bob <# "'SimpleX Directory'> > /exec /contacts" bob <## " You are not allowed to use this command" @@ -267,15 +244,6 @@ testDirectoryService ps = u ##> ("/set welcome #PSA " <> welcome) u <## "welcome message changed to:" u <## welcome - approvalRequested su welcome grId = do - su <# "'SimpleX Directory'> bob submitted the group ID 1:" - su <## "PSA (Privacy, Security & Anonymity)" - su <## "Welcome message:" - su <## welcome - su <## "2 members" - su <## "" - su <## "To approve send:" - su <# ("'SimpleX Directory'> /approve 1:PSA " <> show grId) testSuspendResume :: HasCallStack => TestParams -> IO () testSuspendResume ps = @@ -301,23 +269,18 @@ testSuspendResume ps = superUser <## " The link to join the group ID 1 (privacy):" superUser <##. "https://localhost/g#" superUser <## "New member role: member" - -- get and change the link to the equivalent - should not ask to re-approve + -- add the link to the welcome message - the group remains listed bob #> "@'SimpleX Directory' /link 1" bob <# "'SimpleX Directory'> > /link 1" bob <## " The link to join the group ID 1 (privacy):" gLink <- getTermLine bob gLink `shouldStartWith` "https://localhost/g#" bob <## "New member role: member" - bob ##> "/show welcome #privacy" - bob <## "Welcome message:" - bob <## ("Link to join the group privacy: " <> gLink) - bob ##> ("/set welcome #privacy Link to join the group privacy: " <> gLink <> "?same_link=true") - bob <## "welcome message changed to:" - bob <## ("Link to join the group privacy: " <> gLink <> "?same_link=true") - bob <# "'SimpleX Directory'> The group ID 1 (privacy) is updated!" - bob <## "The group is listed in directory." - superUser <# "'SimpleX Directory'> The group ID 1 (privacy) is updated - only link or whitespace changes." - superUser <## "The group remained listed in directory." + setWelcomeMessage bob [] ("Link to join the group privacy: " <> gLink) + groupUpdatedListed superUser bob "privacy" "" + -- change the link to the equivalent - should not ask to re-approve + setWelcomeMessage bob [] ("Link to join the group privacy: " <> gLink <> "?same_link=true") + groupUpdatedListed superUser bob "privacy" "" #if !defined(dbPostgres) -- upgrade link -- make it upgradeable first @@ -421,7 +384,6 @@ testSetRole ps = cath <# ("#privacy (support) 'SimpleX Directory'!> > cath " <> captcha) cath <## " Correct, you joined the group privacy" cath <## "#privacy: you joined the group" - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://localhost/g#" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -445,9 +407,8 @@ testJoinGroup ps = cath <# "'SimpleX Directory'> > privacy" cath <## " Found 1 group(s)." cath <# "'SimpleX Directory'> privacy (Privacy)" - cath <## "Welcome message:" - welcomeMsg <- getTermLine cath - let groupLink = dropStrPrefix "Link to join the group privacy: " welcomeMsg + linkLine <- getTermLine cath + let groupLink = dropStrPrefix "Link to join the group privacy: " linkLine cath <## "2 members" cath ##> ("/c " <> groupLink) cath <## "connection request sent!" @@ -463,7 +424,6 @@ testJoinGroup ps = cath <# ("#privacy (support) 'SimpleX Directory'!> > cath " <> captcha) cath <## " Correct, you joined the group privacy" cath <## "#privacy: you joined the group" - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -478,7 +438,6 @@ testJoinGroup ps = do dan <## "#privacy: joining the group..." dan <## "#privacy: you joined the group" - dan <# ("#privacy bob> " <> welcomeMsg) dan <### [ "#privacy: member 'SimpleX Directory' is connected", "#privacy: member cath (Catherine) is connected" @@ -488,6 +447,47 @@ testJoinGroup ps = cath <## "#privacy: new member dan is connected" ] +testSearchByLink :: HasCallStack => TestParams -> IO () +testSearchByLink ps = + withDirectoryService ps $ \superUser dsLink -> + withNewTestChat ps "bob" bobProfile $ \bob -> do + bob `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + groupAccepted bob "privacy" 1 + notifySuperUser superUser bob "privacy" "Privacy" 1 + welcomeWithLink <- approveRegistration superUser bob "privacy" 1 + let link = dropStrPrefix "Link to join the group privacy: " welcomeWithLink + -- user finds the listed group by link + bob #> ("@'SimpleX Directory' " <> link) + bob <# ("'SimpleX Directory'> > " <> link) + bob <## " Found group:" + bob <# "'SimpleX Directory'> privacy (Privacy)" + bob <##. "Link to join the group privacy: " + bob <## "2 members" + -- admin receives the group with status + superUser #> ("@'SimpleX Directory' " <> link) + superUser <# ("'SimpleX Directory'> > " <> link) + superUser <## " 1 registered group(s)" + memberGroupListing superUser bob 1 "privacy" "Privacy" 2 "active" + -- content change hides the group from user search, admin still finds it by link + setWelcomeMessage bob [] "Welcome!" + groupUpdatedHidden superUser bob "privacy" "" + notifySuperUser_ superUser bob "privacy" "Privacy" (Just "Welcome!") 1 1 + bob #> ("@'SimpleX Directory' " <> link) + bob <# ("'SimpleX Directory'> > " <> link) + bob <## " No groups found." + bob <## "To register a group or a channel, please use \"Share via chat\" feature." + superUser #> ("@'SimpleX Directory' " <> link) + superUser <# ("'SimpleX Directory'> > " <> link) + superUser <## " 1 registered group(s)" + superUser <# "'SimpleX Directory'> 1. privacy (Privacy)" + superUser <## "Welcome message:" + superUser <## "Welcome!" + superUser <## "Owner: bob" + superUser <## "2 members" + superUser <## "Status: pending admin approval" + superUser <## "/'role 1', /'filter 1'" + testGroupNameWithSpaces :: HasCallStack => TestParams -> IO () testGroupNameWithSpaces ps = withDirectoryService ps $ \superUser dsLink -> @@ -588,7 +588,6 @@ testSearchGroups ps = receivedGroup :: TestCC -> Int -> Int -> IO () receivedGroup u ix count = do u <#. ("'SimpleX Directory'> " <> groups !! ix) - u <## "Welcome message:" u <##. "Link to join the group " u <## (show count <> " members") @@ -818,19 +817,22 @@ testNotSentApprovalBadRoles ps = bob `connectVia` dsLink cath `connectVia` dsLink submitGroup bob "privacy" "Privacy" - welcomeWithLink <- groupAccepted bob "privacy" 1 + groupAccepted bob "privacy" 1 + notifySuperUser superUser bob "privacy" "Privacy" 1 bob ##> "/mr privacy 'SimpleX Directory' member" bob <## "#privacy: you changed the role of 'SimpleX Directory' to member" - updateProfileWithLink bob "privacy" welcomeWithLink 1 + bob ##> "/gp privacy privacy Privacy!" + bob <## "description changed to: Privacy!" + groupUpdatedHidden superUser bob "privacy" "" bob <# "'SimpleX Directory'> You must grant directory service admin role to register the group" bob ##> "/mr privacy 'SimpleX Directory' admin" bob <## "#privacy: you changed the role of 'SimpleX Directory' to admin" bob <# "'SimpleX Directory'> SimpleX Directory role in the group ID 1 (privacy) is changed to admin." bob <## "" bob <## "The group is submitted for approval." - notifySuperUser superUser bob "privacy" "Privacy" welcomeWithLink 1 + notifySuperUser_ superUser bob "privacy" "Privacy!" Nothing 1 2 groupNotFound cath "privacy" - approveRegistration superUser bob "privacy" 1 + void $ approveRegistration_ superUser bob "privacy" 1 1 2 groupFound cath "privacy" testNotApprovedBadRoles :: HasCallStack => TestParams -> IO () @@ -841,9 +843,8 @@ testNotApprovedBadRoles ps = bob `connectVia` dsLink cath `connectVia` dsLink submitGroup bob "privacy" "Privacy" - welcomeWithLink <- groupAccepted bob "privacy" 1 - updateProfileWithLink bob "privacy" welcomeWithLink 1 - notifySuperUser superUser bob "privacy" "Privacy" welcomeWithLink 1 + groupAccepted bob "privacy" 1 + notifySuperUser superUser bob "privacy" "Privacy" 1 bob ##> "/mr privacy 'SimpleX Directory' member" bob <## "#privacy: you changed the role of 'SimpleX Directory' to member" let approve = "/approve 1:privacy 1" @@ -856,8 +857,8 @@ testNotApprovedBadRoles ps = bob <# "'SimpleX Directory'> SimpleX Directory role in the group ID 1 (privacy) is changed to admin." bob <## "" bob <## "The group is submitted for approval." - notifySuperUser superUser bob "privacy" "Privacy" welcomeWithLink 1 - approveRegistration superUser bob "privacy" 1 + notifySuperUser superUser bob "privacy" "Privacy" 1 + void $ approveRegistration superUser bob "privacy" 1 groupFound cath "privacy" testRegOwnerChangedProfile :: HasCallStack => TestParams -> IO () @@ -933,34 +934,21 @@ testRegOwnerRemovedLink ps = bob `connectVia` dsLink registerGroup superUser bob "privacy" "Privacy" addCathAsOwner bob cath - bob ##> "/show welcome #privacy" - bob <## "Welcome message:" - welcomeWithLink <- getTermLine bob - bob ##> "/set welcome #privacy Welcome!" - bob <## "welcome message changed to:" - bob <## "Welcome!" - bob <# "'SimpleX Directory'> The group link for ID 1 (privacy) is removed from the welcome message." - bob <## "" - bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." - cath <## "bob updated group #privacy:" - cath <## "welcome message changed to:" - cath <## "Welcome!" - superUser <# "'SimpleX Directory'> The group link is removed from ID 1 (privacy), de-listed." + -- setting the welcome message requires re-approval + setWelcomeMessage bob [cath] "Welcome!" + groupUpdatedHidden superUser bob "privacy" "" + reapproveGroup_ 3 superUser bob (Just "Welcome!") + -- adding the link keeps the group listed + gLink <- getGroupLinkFromBot bob + setWelcomeMessage bob [cath] ("Welcome! Link to join the group privacy: " <> gLink) + groupUpdatedListed superUser bob "privacy" "" + -- removing the link keeps the group listed + setWelcomeMessage bob [cath] "Welcome!" + groupUpdatedListed superUser bob "privacy" "" cath `connectVia` dsLink cath <## "contact and member are merged: 'SimpleX Directory_1', #privacy 'SimpleX Directory'" cath <## "use @'SimpleX Directory' to send messages" - groupNotFound cath "privacy" - let withChangedLink = T.unpack $ T.replace "contact#/?v=2-7&" "contact#/?v=3-7&" $ T.pack welcomeWithLink - bob ##> ("/set welcome #privacy " <> withChangedLink) - bob <## "welcome message changed to:" - bob <## withChangedLink - bob <# "'SimpleX Directory'> Thank you! The group link for ID 1 (privacy) is added to the welcome message." - bob <## "You will be notified once the group is added to the directory - it may take up to 48 hours." - cath <## "bob updated group #privacy:" - cath <## "welcome message changed to:" - cath <## withChangedLink - reapproveGroup 3 superUser bob - groupFoundN 3 cath "privacy" + groupFoundWelcome 3 cath "privacy" "Welcome!" testAnotherOwnerRemovedLink :: HasCallStack => TestParams -> IO () testAnotherOwnerRemovedLink ps = @@ -973,30 +961,18 @@ testAnotherOwnerRemovedLink ps = cath `connectVia` dsLink cath <## "contact and member are merged: 'SimpleX Directory_1', #privacy 'SimpleX Directory'" cath <## "use @'SimpleX Directory' to send messages" - bob ##> "/show welcome #privacy" - bob <## "Welcome message:" - welcomeWithLink <- getTermLine bob - cath ##> "/set welcome #privacy Welcome!" - cath <## "welcome message changed to:" - cath <## "Welcome!" - bob <## "cath updated group #privacy:" - bob <## "welcome message changed to:" - bob <## "Welcome!" - bob <# "'SimpleX Directory'> The group link for ID 1 (privacy) is removed from the welcome message by cath." - bob <## "" - bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." - superUser <# "'SimpleX Directory'> The group link is removed from ID 1 (privacy), de-listed." - groupNotFound cath "privacy" - cath ##> ("/set welcome #privacy " <> welcomeWithLink) - cath <## "welcome message changed to:" - cath <## welcomeWithLink - bob <## "cath updated group #privacy:" - bob <## "welcome message changed to:" - bob <## welcomeWithLink - bob <# "'SimpleX Directory'> Thank you! The group link for ID 1 (privacy) is added to the welcome message by cath." - bob <## "You will be notified once the group is added to the directory - it may take up to 48 hours." - reapproveGroup 3 superUser bob - groupFoundN 3 cath "privacy" + -- setting the welcome message requires re-approval + setWelcomeMessage cath [bob] "Welcome!" + groupUpdatedHidden superUser bob "privacy" " by cath" + reapproveGroup_ 3 superUser bob (Just "Welcome!") + -- another owner adds the link - the group remains listed + gLink <- getGroupLinkFromBot bob + setWelcomeMessage cath [bob] ("Welcome! Link to join the group privacy: " <> gLink) + groupUpdatedListed superUser bob "privacy" " by cath" + -- another owner removes the link - the group remains listed + setWelcomeMessage cath [bob] "Welcome!" + groupUpdatedListed superUser bob "privacy" " by cath" + groupFoundWelcome 3 cath "privacy" "Welcome!" testNotConnectedOwnerRemovedLink :: HasCallStack => TestParams -> IO () testNotConnectedOwnerRemovedLink ps = @@ -1008,39 +984,19 @@ testNotConnectedOwnerRemovedLink ps = dan `connectVia` dsLink registerGroup superUser bob "privacy" "Privacy" addCathAsOwner bob cath - bob ##> "/show welcome #privacy" - bob <## "Welcome message:" - welcomeWithLink <- getTermLine bob - cath ##> "/set welcome #privacy Welcome!" - cath <## "welcome message changed to:" - cath <## "Welcome!" - bob <## "cath updated group #privacy:" - bob <## "welcome message changed to:" - bob <## "Welcome!" - bob <# "'SimpleX Directory'> The group link for ID 1 (privacy) is removed from the welcome message by cath." - bob <## "" - bob <## "The group is hidden from the directory until the group link is added and the group is re-approved." - superUser <# "'SimpleX Directory'> The group link is removed from ID 1 (privacy), de-listed." + -- setting the welcome message requires re-approval + setWelcomeMessage cath [bob] "Welcome!" + groupUpdatedHidden superUser bob "privacy" " by cath" groupNotFound dan "privacy" - cath ##> ("/set welcome #privacy " <> welcomeWithLink) - cath <## "welcome message changed to:" - cath <## welcomeWithLink - bob <## "cath updated group #privacy:" - bob <## "welcome message changed to:" - bob <## welcomeWithLink - -- bob <# "'SimpleX Directory'> The group link is added by another group member, your registration will not be processed." - -- bob <## "" - -- bob <## "Please update the group profile yourself." - -- bob ##> ("/set welcome #privacy " <> welcomeWithLink <> " - welcome!") - -- bob <## "welcome message changed to:" - -- bob <## (welcomeWithLink <> " - welcome!") - bob <# "'SimpleX Directory'> Thank you! The group link for ID 1 (privacy) is added to the welcome message by cath." - bob <## "You will be notified once the group is added to the directory - it may take up to 48 hours." - -- cath <## "bob updated group #privacy:" - -- cath <## "welcome message changed to:" - -- cath <## (welcomeWithLink <> " - welcome!") - reapproveGroup 3 superUser bob - groupFoundN 3 dan "privacy" + reapproveGroup_ 3 superUser bob (Just "Welcome!") + -- the not connected owner adds the link - the group remains listed + gLink <- getGroupLinkFromBot bob + setWelcomeMessage cath [bob] ("Welcome! Link to join the group privacy: " <> gLink) + groupUpdatedListed superUser bob "privacy" " by cath" + -- the not connected owner removes the link - the group remains listed + setWelcomeMessage cath [bob] "Welcome!" + groupUpdatedListed superUser bob "privacy" " by cath" + groupFoundWelcome 3 dan "privacy" "Welcome!" testDuplicateAskConfirmation :: HasCallStack => TestParams -> IO () testDuplicateAskConfirmation ps = @@ -1049,16 +1005,17 @@ testDuplicateAskConfirmation ps = withNewTestChat ps "cath" cathProfile $ \cath -> do bob `connectVia` dsLink submitGroup bob "privacy" "Privacy" - _ <- groupAccepted bob "privacy" 1 + groupAccepted bob "privacy" 1 + notifySuperUser superUser bob "privacy" "Privacy" 1 cath `connectVia` dsLink submitGroup cath "privacy" "Privacy" cath <# "'SimpleX Directory'> The group privacy (Privacy) is already submitted to the directory." cath <## "To confirm the registration, please send:" cath <# "'SimpleX Directory'> /confirm 1:privacy" cath #> "@'SimpleX Directory' /confirm 1:privacy" - welcomeWithLink <- groupAccepted cath "privacy" 1 + groupAccepted cath "privacy" 1 groupNotFound bob "privacy" - completeRegistrationId superUser cath "privacy" "Privacy" welcomeWithLink 2 1 + void $ completeRegistrationId superUser cath "privacy" "Privacy" 2 1 groupFound bob "privacy" testDuplicateProhibitRegistration :: HasCallStack => TestParams -> IO () @@ -1080,14 +1037,14 @@ testDuplicateProhibitConfirmation ps = withNewTestChat ps "cath" cathProfile $ \cath -> do bob `connectVia` dsLink submitGroup bob "privacy" "Privacy" - welcomeWithLink <- groupAccepted bob "privacy" 1 + groupAccepted bob "privacy" 1 cath `connectVia` dsLink submitGroup cath "privacy" "Privacy" cath <# "'SimpleX Directory'> The group privacy (Privacy) is already submitted to the directory." cath <## "To confirm the registration, please send:" cath <# "'SimpleX Directory'> /confirm 1:privacy" groupNotFound cath "privacy" - completeRegistration superUser bob "privacy" "Privacy" welcomeWithLink 1 + void $ completeRegistration superUser bob "privacy" "Privacy" 1 groupFound cath "privacy" cath #> "@'SimpleX Directory' /confirm 1:privacy" cath <# "'SimpleX Directory'> The group privacy (Privacy) is already listed in the directory, please choose another name." @@ -1099,27 +1056,27 @@ testDuplicateProhibitWhenUpdated ps = withNewTestChat ps "cath" cathProfile $ \cath -> do bob `connectVia` dsLink submitGroup bob "privacy" "Privacy" - welcomeWithLink <- groupAccepted bob "privacy" 1 + groupAccepted bob "privacy" 1 + notifySuperUser superUser bob "privacy" "Privacy" 1 cath `connectVia` dsLink submitGroup cath "privacy" "Privacy" cath <# "'SimpleX Directory'> The group privacy (Privacy) is already submitted to the directory." cath <## "To confirm the registration, please send:" cath <# "'SimpleX Directory'> /confirm 1:privacy" cath #> "@'SimpleX Directory' /confirm 1:privacy" - welcomeWithLink' <- groupAccepted cath "privacy" 1 + groupAccepted cath "privacy" 1 + notifySuperUser superUser cath "privacy" "Privacy" 2 groupNotFound cath "privacy" - completeRegistration superUser bob "privacy" "Privacy" welcomeWithLink 1 + void $ approveRegistration superUser bob "privacy" 1 groupFound cath "privacy" - cath ##> ("/set welcome privacy " <> welcomeWithLink') - cath <## "welcome message changed to:" - cath <## welcomeWithLink' - cath <# "'SimpleX Directory'> The group privacy (Privacy) is already listed in the directory, please choose another name." + -- the duplicate registration is renamed and approved cath ##> "/gp privacy security Security" cath <## "changed to #security (Security)" - cath <# "'SimpleX Directory'> Thank you! The group link for ID 1 (security) is added to the welcome message." - cath <## "You will be notified once the group is added to the directory - it may take up to 48 hours." - notifySuperUser superUser cath "security" "Security" welcomeWithLink' 2 - approveRegistrationId superUser cath "security" 2 1 + cath <# "'SimpleX Directory'> The group ID 1 (security) is updated!" + cath <## "It is hidden from the directory until approved." + superUser <# "'SimpleX Directory'> The group ID 2 (security) is updated." + notifySuperUser_ superUser cath "security" "Security" Nothing 2 2 + void $ approveRegistration_ superUser cath "security" 2 1 2 groupFound bob "security" groupFound cath "security" @@ -1130,18 +1087,18 @@ testDuplicateProhibitApproval ps = withNewTestChat ps "cath" cathProfile $ \cath -> do bob `connectVia` dsLink submitGroup bob "privacy" "Privacy" - welcomeWithLink <- groupAccepted bob "privacy" 1 + groupAccepted bob "privacy" 1 + notifySuperUser superUser bob "privacy" "Privacy" 1 cath `connectVia` dsLink submitGroup cath "privacy" "Privacy" cath <# "'SimpleX Directory'> The group privacy (Privacy) is already submitted to the directory." cath <## "To confirm the registration, please send:" cath <# "'SimpleX Directory'> /confirm 1:privacy" cath #> "@'SimpleX Directory' /confirm 1:privacy" - welcomeWithLink' <- groupAccepted cath "privacy" 1 - updateProfileWithLink cath "privacy" welcomeWithLink' 1 - notifySuperUser superUser cath "privacy" "Privacy" welcomeWithLink' 2 + groupAccepted cath "privacy" 1 + notifySuperUser superUser cath "privacy" "Privacy" 2 groupNotFound cath "privacy" - completeRegistration superUser bob "privacy" "Privacy" welcomeWithLink 1 + void $ approveRegistration superUser bob "privacy" 1 groupFound cath "privacy" -- fails at approval, as already listed let approve = "/approve 2:privacy 1" @@ -1187,15 +1144,11 @@ testListUserGroups promote ps = checkListings ["privacy", "security"] ["privacy"] bob ##> "/gp privacy privacy" bob <## "description removed" - bob <# "'SimpleX Directory'> The group ID 1 (privacy) is updated!" - bob <## "It is hidden from the directory until approved." cath <## "bob updated group #privacy:" cath <## "description removed" - superUser <# "'SimpleX Directory'> The group ID 1 (privacy) is updated." + groupUpdatedHidden superUser bob "privacy" "" superUser <# "'SimpleX Directory'> bob submitted the group ID 1:" superUser <## "privacy" - superUser <## "Welcome message:" - superUser <##. "Link to join the group privacy: https://localhost/g#" superUser <## "3 members" superUser <## "" superUser <## "To approve send:" @@ -1204,13 +1157,7 @@ testListUserGroups promote ps = superUser #> "@'SimpleX Directory' /approve 1:privacy 1" superUser <# "'SimpleX Directory'> > /approve 1:privacy 1" superUser <## " Group approved (promoted)!" - bob <# "'SimpleX Directory'> The group ID 1 (privacy) is approved and listed in directory - please moderate it!" - bob <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." - bob <## "" - bob <## "Supported commands:" - bob <## "/'filter 1' - to configure anti-spam filter." - bob <## "/'role 1' - to set default member role." - bob <## "/'link 1' - to view/upgrade group link." + void $ groupApprovedNotification bob "privacy" 1 checkListings ["privacy", "security"] ["privacy"] checkListings :: HasCallStack => [T.Text] -> [T.Text] -> IO () @@ -1260,7 +1207,6 @@ testAlwaysCaptcha ps = cath <# ("#privacy (support) 'SimpleX Directory'!> > cath " <> captcha) cath <## " Correct, you joined the group privacy" cath <## "#privacy: you joined the group" - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -1315,7 +1261,6 @@ testCaptchaByDefault ps = cath <# ("#privacy (support) 'SimpleX Directory'!> > cath " <> captcha) cath <## " Correct, you joined the group privacy" cath <## "#privacy: you joined the group" - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -1342,7 +1287,6 @@ testCapthaScreening ps = cath <## " Incorrect text, please try again." captcha <- dropStrPrefix "#privacy (support) 'SimpleX Directory'> " . dropTime <$> getTermLine cath sendCaptcha cath captcha - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -1366,7 +1310,6 @@ testCapthaScreening ps = -- message from cath that left pastMember <- dropStrPrefix "#privacy: 'SimpleX Directory' forwarded a message from an unknown member, creating unknown member record " <$> getTermLine cath cath <# ("#privacy " <> pastMember <> "> hello [>>]") - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath_1 (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath_1 is connected" @@ -1444,7 +1387,6 @@ testVoiceCaptchaScreening ps@TestParams {tmpPath} = do cath <## " Audio captcha is already enabled." -- send correct captcha sendCaptcha cath captcha - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -1554,7 +1496,6 @@ testVoiceCaptchaVoiceDisabled ps@TestParams {tmpPath} = do cath <#. "#privacy (support) 'SimpleX Directory'> sends file " cath <##. "use /fr 1" sendCaptcha cath captcha - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -1611,7 +1552,6 @@ testVoiceCaptchaOldClient ps@TestParams {tmpPath} = do cath <## " Voice captcha is not available - please update SimpleX Chat to v6.5+ or use text captcha." -- text captcha still works sendCaptcha cath captcha - cath <#. "#privacy 'SimpleX Directory'> Link to join the group privacy: https://" cath <## "#privacy: member bob (Bob) is connected" bob <## "#privacy: 'SimpleX Directory' added cath (Catherine) to the group (connecting...)" bob <## "#privacy: new member cath is connected" @@ -1711,8 +1651,6 @@ memberGroupListing su owner = groupListing_ su (Just owner) groupListing_ :: HasCallStack => TestCC -> Maybe TestCC -> Int -> String -> String -> Int -> String -> IO () groupListing_ su owner_ gId n fn count status = do su <# ("'SimpleX Directory'> " <> show gId <> ". " <> n <> " (" <> fn <> ")") - su <## "Welcome message:" - su <##. ("Link to join the group " <> n <> ": ") forM_ owner_ $ \owner -> do ownerName <- userName owner su <## ("Owner: " <> ownerName) @@ -1721,11 +1659,15 @@ groupListing_ su owner_ gId n fn count status = do su <## ("/'role " <> show gId <> "', /'filter " <> show gId <> "'") reapproveGroup :: HasCallStack => Int -> TestCC -> TestCC -> IO () -reapproveGroup count superUser bob = do +reapproveGroup count superUser bob = reapproveGroup_ count superUser bob Nothing + +reapproveGroup_ :: HasCallStack => Int -> TestCC -> TestCC -> Maybe String -> IO () +reapproveGroup_ count superUser bob welcome_ = do superUser <# "'SimpleX Directory'> bob submitted the group ID 1:" superUser <##. "privacy (" - superUser <## "Welcome message:" - superUser <##. "Link to join the group privacy: " + forM_ welcome_ $ \welcome -> do + superUser <## "Welcome message:" + superUser <## welcome superUser <## (show count <> " members") superUser <## "" superUser <## "To approve send:" @@ -1733,13 +1675,7 @@ reapproveGroup count superUser bob = do superUser #> "@'SimpleX Directory' /approve 1:privacy 1" superUser <# "'SimpleX Directory'> > /approve 1:privacy 1" superUser <## " Group approved!" - bob <# "'SimpleX Directory'> The group ID 1 (privacy) is approved and listed in directory - please moderate it!" - bob <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." - bob <## "" - bob <## "Supported commands:" - bob <## "/'filter 1' - to configure anti-spam filter." - bob <## "/'role 1' - to set default member role." - bob <## "/'link 1' - to view/upgrade group link." + void $ groupApprovedNotification bob "privacy" 1 addCathAsOwner :: HasCallStack => TestCC -> TestCC -> IO () addCathAsOwner bob cath = do @@ -1813,8 +1749,8 @@ registerGroup su u n fn = registerGroupId su u n fn 1 1 registerGroupId :: TestCC -> TestCC -> String -> String -> Int -> Int -> IO () registerGroupId su u n fn gId ugId = do submitGroup u n fn - welcomeWithLink <- groupAccepted u n ugId - completeRegistrationId su u n fn welcomeWithLink gId ugId + groupAccepted u n ugId + void $ completeRegistrationId su u n fn gId ugId submitGroup :: TestCC -> String -> String -> IO () submitGroup u n fn = do @@ -1824,70 +1760,91 @@ submitGroup u n fn = do u ##> ("/a " <> viewName n <> " 'SimpleX Directory' admin") u <## ("invitation to join the group #" <> viewName n <> " sent to 'SimpleX Directory'") -groupAccepted :: TestCC -> String -> Int -> IO String +groupAccepted :: TestCC -> String -> Int -> IO () groupAccepted u n ugId = do u <### [ WithTime ("'SimpleX Directory'> Joining the group " <> n <> "…"), ConsoleString ("#" <> viewName n <> ": 'SimpleX Directory' joined the group") ] - u <# ("'SimpleX Directory'> Joined the group " <> n <> ", creating the link…") - u <# "'SimpleX Directory'> Created the public link to join the group via this directory service that is always online." - u <## "" - u <## "Please add it to the group welcome message." - u <## "For example, add:" - welcomeWithLink <- dropStrPrefix "'SimpleX Directory'> " . dropTime <$> getTermLine u + u <# ("'SimpleX Directory'> Joined the group " <> n <> ". Registration is pending approval — it may take up to 48 hours.") u <# "'SimpleX Directory'> We recommend allowing direct messages, media, voice, and SimpleX links only for group moderators and admins. Use group preferences to set them." u <## ("Captcha verification is enabled. Use /'filter " <> show ugId <> "' to change it.") - pure welcomeWithLink -completeRegistration :: TestCC -> TestCC -> String -> String -> String -> Int -> IO () -completeRegistration su u n fn welcomeWithLink gId = - completeRegistrationId su u n fn welcomeWithLink gId gId +completeRegistration :: TestCC -> TestCC -> String -> String -> Int -> IO String +completeRegistration su u n fn gId = + completeRegistrationId su u n fn gId gId -completeRegistrationId :: TestCC -> TestCC -> String -> String -> String -> Int -> Int -> IO () -completeRegistrationId su u n fn welcomeWithLink gId ugId = do - updateProfileWithLink u n welcomeWithLink ugId - notifySuperUser su u n fn welcomeWithLink gId +completeRegistrationId :: TestCC -> TestCC -> String -> String -> Int -> Int -> IO String +completeRegistrationId su u n fn gId ugId = do + notifySuperUser su u n fn gId approveRegistrationId su u n gId ugId -updateProfileWithLink :: TestCC -> String -> String -> Int -> IO () -updateProfileWithLink u n welcomeWithLink ugId = do - u ##> ("/set welcome " <> viewName n <> " " <> welcomeWithLink) - u <## "welcome message changed to:" - u <## welcomeWithLink - u <# ("'SimpleX Directory'> Thank you! The group link for ID " <> show ugId <> " (" <> n <> ") is added to the welcome message.") - u <## "You will be notified once the group is added to the directory - it may take up to 48 hours." +notifySuperUser :: TestCC -> TestCC -> String -> String -> Int -> IO () +notifySuperUser su u n fn gId = notifySuperUser_ su u n fn Nothing gId 1 -notifySuperUser :: TestCC -> TestCC -> String -> String -> String -> Int -> IO () -notifySuperUser su u n fn welcomeWithLink gId = do +notifySuperUser_ :: TestCC -> TestCC -> String -> String -> Maybe String -> Int -> Int -> IO () +notifySuperUser_ su u n fn welcome_ gId gaId = do uName <- userName u su <# ("'SimpleX Directory'> " <> uName <> " submitted the group ID " <> show gId <> ":") su <## (n <> if null fn then "" else " (" <> fn <> ")") - su <## "Welcome message:" - su <## welcomeWithLink + forM_ welcome_ $ \welcome -> do + su <## "Welcome message:" + su <## welcome su .<## "members" su <## "" su <## "To approve send:" - let approve = "/approve " <> show gId <> ":" <> viewName n <> " 1" + let approve = "/approve " <> show gId <> ":" <> viewName n <> " " <> show gaId su <# ("'SimpleX Directory'> " <> approve) -approveRegistration :: TestCC -> TestCC -> String -> Int -> IO () +approveRegistration :: TestCC -> TestCC -> String -> Int -> IO String approveRegistration su u n gId = approveRegistrationId su u n gId gId -approveRegistrationId :: TestCC -> TestCC -> String -> Int -> Int -> IO () -approveRegistrationId su u n gId ugId = do - let approve = "/approve " <> show gId <> ":" <> viewName n <> " 1" +approveRegistrationId :: TestCC -> TestCC -> String -> Int -> Int -> IO String +approveRegistrationId su u n gId ugId = approveRegistration_ su u n gId ugId 1 + +approveRegistration_ :: TestCC -> TestCC -> String -> Int -> Int -> Int -> IO String +approveRegistration_ su u n gId ugId gaId = do + let approve = "/approve " <> show gId <> ":" <> viewName n <> " " <> show gaId su #> ("@'SimpleX Directory' " <> approve) su <# ("'SimpleX Directory'> > " <> approve) su <## " Group approved!" + groupApprovedNotification u n ugId + +groupApprovedNotification :: TestCC -> String -> Int -> IO String +groupApprovedNotification u n ugId = do u <# ("'SimpleX Directory'> The group ID " <> show ugId <> " (" <> n <> ") is approved and listed in directory - please moderate it!") - u <## "Please note: if you change the group profile it will be hidden from directory until it is re-approved." + u <## "To help people join, copy the next message with the group link and add it to the end of the group welcome message. The group will remain listed. Any other change to the group profile hides it from the directory until it is re-approved." u <## "" u <## "Supported commands:" u <## ("/'filter " <> show ugId <> "' - to configure anti-spam filter.") u <## ("/'role " <> show ugId <> "' - to set default member role.") - u <## ("/'link " <> show ugId <> "' - to view/upgrade group link.") + u <## ("/'link " <> show ugId <> "' - to view group link.") + dropStrPrefix "'SimpleX Directory'> " . dropTime <$> getTermLine u + +groupUpdatedHidden :: HasCallStack => TestCC -> TestCC -> String -> String -> IO () +groupUpdatedHidden superUser u n byMember = do + u <# ("'SimpleX Directory'> The group ID 1 (" <> n <> ") is updated" <> byMember <> "!") + u <## "It is hidden from the directory until approved." + superUser <# ("'SimpleX Directory'> The group ID 1 (" <> n <> ") is updated" <> byMember <> ".") + +groupUpdatedListed :: HasCallStack => TestCC -> TestCC -> String -> String -> IO () +groupUpdatedListed superUser u n byMember = do + u <# ("'SimpleX Directory'> The group ID 1 (" <> n <> ") is updated" <> byMember <> "!") + u <## "The group is listed in directory." + superUser <# ("'SimpleX Directory'> The group ID 1 (" <> n <> ") is updated" <> byMember <> " - only link or whitespace changes.") + superUser <## "The group remained listed in directory." + +setWelcomeMessage :: HasCallStack => TestCC -> [TestCC] -> String -> IO () +setWelcomeMessage u others welcome = do + uName <- userName u + u ##> ("/set welcome #privacy " <> welcome) + u <## "welcome message changed to:" + u <## welcome + forM_ others $ \m -> do + m <## (uName <> " updated group #privacy:") + m <## "welcome message changed to:" + m <## welcome connectVia :: TestCC -> String -> IO () u `connectVia` dsLink = do @@ -1906,10 +1863,8 @@ joinGroup :: String -> TestCC -> TestCC -> IO () joinGroup gName member host = do let gn = "#" <> gName memberName <- userName member - hostName <- userName host member ##> ("/j " <> gName) member <## (gn <> ": you joined the group") - member <#. (gn <> " " <> hostName <> "> Link to join the group " <> gName <> ": ") host <## (gn <> ": " <> memberName <> " joined the group") leaveGroup :: String -> TestCC -> IO () @@ -1945,10 +1900,29 @@ groupFoundN_ suffix shownId_ count u name = do u <# ("'SimpleX Directory" <> suffix <> "'> > " <> name) u <## " Found 1 group(s)." u <#. ("'SimpleX Directory" <> suffix <> "'> " <> maybe "" (\gId -> show gId <> ". ") shownId_ <> name) - u <## "Welcome message:" u <##. "Link to join the group " u <## (show count <> " members") +groupFoundWelcome :: HasCallStack => Int -> TestCC -> String -> String -> IO () +groupFoundWelcome count u name welcome = do + u #> ("@'SimpleX Directory' " <> name) + u <# ("'SimpleX Directory'> > " <> name) + u <## " Found 1 group(s)." + u <#. ("'SimpleX Directory'> " <> name) + u <## "Welcome message:" + u <## welcome + u <##. "Link to join the group " + u <## (show count <> " members") + +getGroupLinkFromBot :: HasCallStack => TestCC -> IO String +getGroupLinkFromBot u = do + u #> "@'SimpleX Directory' /link 1" + u <# "'SimpleX Directory'> > /link 1" + u <## " The link to join the group ID 1 (privacy):" + gLink <- getTermLine u + u <## "New member role: member" + pure gLink + groupNotFound :: TestCC -> String -> IO () groupNotFound = groupNotFound_ "" @@ -2034,7 +2008,7 @@ testHelpNoAudio ps = bob <## "/list - list the groups you registered." bob <## "`/role ` - view and set default member role for your group." bob <## "`/filter ` - view and set spam filter settings for group." - bob <## "`/link ` - view and upgrade group link." + bob <## "`/link ` - view group link." bob <## "`/delete :` - remove the group you submitted from directory, with ID and name as shown by /list command." bob <## "" bob <## "To search for groups, send the search text." From cbfdf63f4b6ee4d5470d0206320c0dc8ea3182e9 Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Wed, 19 Aug 2026 01:50:59 +0400 Subject: [PATCH 16/24] core: drop agent versions in simplexmq (#7360) * core: adapt to dropped agent versions * refactor * remove comments * api types, protocol tests * fix test --------- Co-authored-by: Evgeny Poberezkin --- bots/api/TYPES.md | 1 + cabal.project | 2 +- .../types/typescript/src/types.ts | 1 + .../src/simplex_chat/types/_types.py | 1 + scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat/Library/Commands.hs | 17 ++++++++-------- src/Simplex/Chat/Library/Internal.hs | 3 +-- src/Simplex/Chat/Library/Subscriber.hs | 2 +- src/Simplex/Chat/Store/Direct.hs | 2 +- tests/ChatClient.hs | 10 ++++------ tests/ChatTests/Utils.hs | 6 +++--- tests/ProtocolTests.hs | 20 +++++++++---------- 12 files changed, 33 insertions(+), 34 deletions(-) diff --git a/bots/api/TYPES.md b/bots/api/TYPES.md index 4546a6aaa7..47afd602d4 100644 --- a/bots/api/TYPES.md +++ b/bots/api/TYPES.md @@ -3589,6 +3589,7 @@ ParseError: A_MESSAGE: - type: "A_MESSAGE" +- messageErr: string A_PROHIBITED: - type: "A_PROHIBITED" diff --git a/cabal.project b/cabal.project index 3ff3ec2713..0895113b5e 100644 --- a/cabal.project +++ b/cabal.project @@ -21,7 +21,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 413f30bee5a14312eca67713b5c47a3537a0c028 + tag: c5ff829cfb37247a09d82000d42c82280015b4ba source-repository-package type: git diff --git a/packages/simplex-chat-client/types/typescript/src/types.ts b/packages/simplex-chat-client/types/typescript/src/types.ts index 5faf084dce..ea98d99151 100644 --- a/packages/simplex-chat-client/types/typescript/src/types.ts +++ b/packages/simplex-chat-client/types/typescript/src/types.ts @@ -3984,6 +3984,7 @@ export namespace SMPAgentError { export interface A_MESSAGE extends Interface { type: "A_MESSAGE" + messageErr: string } export interface A_PROHIBITED extends Interface { diff --git a/packages/simplex-chat-python/src/simplex_chat/types/_types.py b/packages/simplex-chat-python/src/simplex_chat/types/_types.py index b00a559f92..8569acc026 100644 --- a/packages/simplex-chat-python/src/simplex_chat/types/_types.py +++ b/packages/simplex-chat-python/src/simplex_chat/types/_types.py @@ -2764,6 +2764,7 @@ class RoleGroupPreference(TypedDict): class SMPAgentError_A_MESSAGE(TypedDict): type: Literal["A_MESSAGE"] + messageErr: str class SMPAgentError_A_PROHIBITED(TypedDict): type: Literal["A_PROHIBITED"] diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 4c6086dabb..1b15e68d60 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."413f30bee5a14312eca67713b5c47a3537a0c028" = "07izzz8ddcnmnk2bzcid6kf4dgln4zqkjlcsp2aqhnlgw2qh7pph"; + "https://github.com/simplex-chat/simplexmq.git"."c5ff829cfb37247a09d82000d42c82280015b4ba" = "1sjv0bkyqqimi2s84s4jsdbh5gwnw2pv5bkl1i3cgp6081wyfx31"; "https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38"; "https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d"; "https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl"; diff --git a/src/Simplex/Chat/Library/Commands.hs b/src/Simplex/Chat/Library/Commands.hs index 336474880f..f4906d74e8 100644 --- a/src/Simplex/Chat/Library/Commands.hs +++ b/src/Simplex/Chat/Library/Commands.hs @@ -1697,7 +1697,7 @@ processChatCommand cxt nm = \case Just RelayAddressLinkData {relayProfile} -> do let failWithProfile step e = pure $ CRChatRelayTestResult user (Just relayProfile) (Just $ RelayTestFailure step e) - lift (withAgent' $ \a -> connRequestPQSupport a PQSupportOff cReq) >>= \case + lift (withAgent' (`connRequestAgentVersion` cReq)) >>= \case Nothing -> failWithProfile RTSConnect (ChatError $ CERelayTestError "invalid connection request") Just _ -> do let chatV = initialChatVersion @@ -3378,7 +3378,7 @@ processChatCommand cxt nm = \case _ -> throwChatError $ CEException "connection already started (past prepared status)" where joinNewConn subMode = do - -- possible improvement: use agent connRequestPQSupport to determine pqSupport here; + -- possible improvement: use agent connRequestAgentVersion to determine pqSupport here; -- for joinPreparedConn below - same + encodeConnInfoPQ; -- same for auto-accept on xGrpDirectInv acId <- withAgent $ \a -> prepareConnectionToJoin a (aUserId user) True cReq PQSupportOff @@ -3766,10 +3766,10 @@ processChatCommand cxt nm = \case connectViaInvitation user@User {userId} incognito (CCLink cReq@(CRInvitationUri crData e2e) sLnk_) contactId_ = withInvitationLock "connect" (strEncode cReq) $ do subMode <- chatReadVar subscriptionMode - lift (withAgent' $ \a -> connRequestPQSupport a PQSupportOn cReq) >>= \case + lift (withAgent' (`connRequestAgentVersion` cReq)) >>= \case Nothing -> throwChatError CEInvalidConnReq -- TODO PQ the error above should be CEIncompatibleConnReqVersion, also the same API should be called in Plan - Just (_, pqSup') -> do + Just _ -> do let chatV = initialChatVersion withFastStore' (\db -> getConnectionEntityByConnReq db cxt user cReqs) >>= \case Nothing -> joinNewConn chatV @@ -3780,6 +3780,8 @@ processChatCommand cxt nm = \case joinPreparedConn conn (fromLocalProfile <$> localIncognitoProfile) Just ent -> throwCmdError $ "connection is not RcvDirectMsgConnection: " <> show (connEntityInfo ent) where + -- all supported versions support PQ encryption + pqSup' = PQSupportOn joinNewConn chatV = do -- [incognito] generate profile to send incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing @@ -3926,10 +3928,7 @@ processChatCommand cxt nm = \case _ -> pure () prepareContact :: User -> ConnReqContact -> PQSupport -> CM (ConnId, VersionChat) prepareContact user cReq pqSup = do - -- 0) toggle disabled - PQSupportOff - -- 1) toggle enabled, address supports PQ (connRequestPQSupport returns Just True) - PQSupportOn, enable support with compression - -- 2) toggle enabled, address doesn't support PQ - PQSupportOn but without compression, with version range indicating support - lift (withAgent' $ \a -> connRequestPQSupport a pqSup cReq) >>= \case + lift (withAgent' (`connRequestAgentVersion` cReq)) >>= \case Nothing -> throwChatError CEInvalidConnReq Just _ -> do let chatV = initialChatVersion @@ -4259,7 +4258,7 @@ processChatCommand cxt nm = \case addRelay :: UserChatRelay -> CM (UserChatRelay, Either ChatError GroupRelay) addRelay relay@UserChatRelay {address} = fmap (relay,) . tryAllErrors $ do (_, _, cReq) <- getShortLinkConnReq nm user address - lift (withAgent' $ \a -> connRequestPQSupport a PQSupportOff cReq) >>= \case + lift (withAgent' (`connRequestAgentVersion` cReq)) >>= \case Nothing -> throwChatError CEInvalidConnReq Just _ -> do let chatV = initialChatVersion diff --git a/src/Simplex/Chat/Library/Internal.hs b/src/Simplex/Chat/Library/Internal.hs index ca6440d155..aa6974a7de 100644 --- a/src/Simplex/Chat/Library/Internal.hs +++ b/src/Simplex/Chat/Library/Internal.hs @@ -2940,8 +2940,7 @@ connRequestPQEncryption = \case CRContactUri _ rks -> pqEnc . snd <$> rks CRInvitationUri _ e2e -> Just $ pqEnc e2e where - pqEnc (CR.E2ERatchetParamsUri vr' _ _ pq) = - PQEncryption $ maxVersion vr' >= CR.pqRatchetE2EEncryptVersion && isJust pq + pqEnc (CR.E2ERatchetParamsUri _ _ _ pq) = PQEncryption $ isJust pq createRcvFeatureItems :: User -> Contact -> Contact -> CM' () createRcvFeatureItems user ct ct' = diff --git a/src/Simplex/Chat/Library/Subscriber.hs b/src/Simplex/Chat/Library/Subscriber.hs index d8c1aa962c..df269bdd81 100644 --- a/src/Simplex/Chat/Library/Subscriber.hs +++ b/src/Simplex/Chat/Library/Subscriber.hs @@ -1201,7 +1201,7 @@ processAgentMessageConn cxt user@User {userId} corrId agentConnId agentMessage = case cReq of CRContactUri crData@ConnReqUriData {crClientData} e2e -> do let pqSup = PQSupportOff - lift (withAgent' $ \a -> connRequestPQSupport a pqSup cReq) >>= \case + lift (withAgent' (`connRequestAgentVersion` cReq)) >>= \case Nothing -> throwChatError CEInvalidConnReq Just _ -> do let chatV = initialChatVersion diff --git a/src/Simplex/Chat/Store/Direct.hs b/src/Simplex/Chat/Store/Direct.hs index 7ddcc08a58..53d5cd619e 100644 --- a/src/Simplex/Chat/Store/Direct.hs +++ b/src/Simplex/Chat/Store/Direct.hs @@ -199,7 +199,7 @@ createConnReqConnection db userId acId preparedEntity_ cReq cReqHash sLnk xConta -- TODO (proposed): -- - add agent version 8 for short links -- - update agentToChatVersion to convert 8 to 16 - -- - return and correctly set peer's range from link (via connRequestPQSupport) + -- - return and correctly set peer's range from link (via connRequestAgentVersion) peerChatVRange = chatInitialVRange, -- this is 1-1 connLevel = 0, viaContact = Nothing, diff --git a/tests/ChatClient.hs b/tests/ChatClient.hs index 76e808d816..dc6b6b5431 100644 --- a/tests/ChatClient.hs +++ b/tests/ChatClient.hs @@ -50,7 +50,7 @@ import Simplex.FileTransfer.Server.Store import Simplex.FileTransfer.Transport (alpnSupportedXFTPhandshakes, supportedFileServerVRange) import Simplex.Messaging.Agent (disposeAgentClient) import Simplex.Messaging.Agent.Env.SQLite -import Simplex.Messaging.Agent.Protocol (duplexHandshakeSMPAgentVersion, pqdrSMPAgentVersion, supportedSMPAgentVRange) +import Simplex.Messaging.Agent.Protocol (supportedSMPAgentVRange) import Simplex.Messaging.Agent.RetryInterval import Simplex.Messaging.Agent.Store.Entity (SDBStored (..)) import Simplex.Messaging.Agent.Store.Interface (closeDBStore) @@ -58,8 +58,6 @@ import Simplex.Messaging.Agent.Store.Shared (MigrationConfig (..), MigrationConf import qualified Simplex.Messaging.Agent.Store.DB as DB import Simplex.Messaging.Client (ProtocolClientConfig (..)) import Simplex.Messaging.Client.Agent (defaultSMPClientAgentConfig) -import Simplex.Messaging.Crypto.Ratchet (supportedE2EEncryptVRange) -import qualified Simplex.Messaging.Crypto.Ratchet as CR import Simplex.Messaging.Protocol (ProtocolType (..)) import Simplex.Messaging.Server (runSMPServerBlocking) import Simplex.Messaging.Server.Env.STM (ServerConfig (..), ServerStoreCfg (..), StartOptions (..), StorePaths (..), defaultMessageExpiration, defaultIdleQueueInterval, defaultNtfExpiration, defaultInactiveClientExpiration) @@ -234,7 +232,7 @@ testAgentCfgVPrev = testAgentCfg { smpClientVRange = prevRange $ smpClientVRange testAgentCfg, smpAgentVRange = prevRange supportedSMPAgentVRange, - e2eEncryptVRange = prevRange supportedE2EEncryptVRange, + -- e2eEncryptVRange = prevRange supportedE2EEncryptVRange, smpCfg = (smpCfg testAgentCfg) {serverVRange = prevRange $ serverVRange $ smpCfg testAgentCfg} } @@ -242,8 +240,8 @@ testAgentCfgV1 :: AgentConfig testAgentCfgV1 = testAgentCfg { smpClientVRange = v1Range, - smpAgentVRange = mkVersionRange duplexHandshakeSMPAgentVersion pqdrSMPAgentVersion, - e2eEncryptVRange = mkVersionRange CR.kdfX3DHE2EEncryptVersion CR.pqRatchetE2EEncryptVersion, + smpAgentVRange = versionToRange (Version 6), + e2eEncryptVRange = versionToRange(Version 3), smpCfg = (smpCfg testAgentCfg) {serverVRange = versionToRange minClientSMPRelayVersion} } diff --git a/tests/ChatTests/Utils.hs b/tests/ChatTests/Utils.hs index dfcf76f761..f16b3ac090 100644 --- a/tests/ChatTests/Utils.hs +++ b/tests/ChatTests/Utils.hs @@ -124,9 +124,9 @@ skip = before_ . pendingWith versionTestMatrix2 :: (HasCallStack => Bool -> Bool -> TestCC -> TestCC -> IO ()) -> SpecWith TestParams versionTestMatrix2 runTest = do it "current" $ testChat2 aliceProfile bobProfile (runTest True True) - it "prev" $ runTestCfg2 testCfgVPrev testCfgVPrev (runTest False True) - it "prev to curr" $ runTestCfg2 testCfg testCfgVPrev (runTest False True) - it "curr to prev" $ runTestCfg2 testCfgVPrev testCfg (runTest False True) + it "prev" $ runTestCfg2 testCfgVPrev testCfgVPrev (runTest True True) + it "prev to curr" $ runTestCfg2 testCfg testCfgVPrev (runTest True True) + it "curr to prev" $ runTestCfg2 testCfgVPrev testCfg (runTest True True) it "old (1st supported)" $ testChatCfg2 testCfgV1 aliceProfile bobProfile (runTest True False) it "old to curr" $ runTestCfg2 testCfg testCfgV1 (runTest True True) it "curr to old" $ runTestCfg2 testCfgV1 testCfg (runTest True False) diff --git a/tests/ProtocolTests.hs b/tests/ProtocolTests.hs index e241ddf15b..f5b55fbddd 100644 --- a/tests/ProtocolTests.hs +++ b/tests/ProtocolTests.hs @@ -241,7 +241,7 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"9\",\"event\":\"x.msg.deleted\",\"params\":{}}" #==# XMsgDeleted it "x.file" $ - "{\"v\":\"9\",\"event\":\"x.file\",\"params\":{\"file\":{\"fileConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"fileSize\":12345,\"fileName\":\"photo.jpg\"}}}" + "{\"v\":\"9\",\"event\":\"x.file\",\"params\":{\"file\":{\"fileConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"fileSize\":12345,\"fileName\":\"photo.jpg\"}}}" #==# XFile FileInvitation {fileName = "photo.jpg", fileSize = 12345, fileDigest = Nothing, fileConnReq = Just testConnReq, fileInline = Nothing, fileDescr = Nothing} it "x.file without file invitation" $ "{\"v\":\"9\",\"event\":\"x.file\",\"params\":{\"file\":{\"fileSize\":12345,\"fileName\":\"photo.jpg\"}}}" @@ -250,7 +250,7 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"9\",\"event\":\"x.file.acpt\",\"params\":{\"fileName\":\"photo.jpg\"}}" #==# XFileAcpt "photo.jpg" it "x.file.acpt.inv" $ - "{\"v\":\"9\",\"event\":\"x.file.acpt.inv\",\"params\":{\"msgId\":\"AQIDBA==\",\"fileName\":\"photo.jpg\",\"fileConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}" + "{\"v\":\"9\",\"event\":\"x.file.acpt.inv\",\"params\":{\"msgId\":\"AQIDBA==\",\"fileName\":\"photo.jpg\",\"fileConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}" #==# XFileAcptInv (SharedMsgId "\1\2\3\4") (Just testConnReq) "photo.jpg" it "x.file.acpt.inv" $ "{\"v\":\"9\",\"event\":\"x.file.acpt.inv\",\"params\":{\"msgId\":\"AQIDBA==\",\"fileName\":\"photo.jpg\"}}" @@ -277,10 +277,10 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"9\",\"event\":\"x.contact\",\"params\":{\"msgId\":\"AQIDBA==\",\"content\":{\"text\":\"hello\",\"type\":\"text\"},\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}" ==# XContact testProfile Nothing Nothing (Just (SharedMsgId "\1\2\3\4", MCText {text = "hello"})) it "x.grp.inv" $ - "{\"v\":\"9\",\"event\":\"x.grp.inv\",\"params\":{\"groupInvitation\":{\"connRequest\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"invitedMember\":{\"memberRole\":\"member\",\"memberId\":\"BQYHCA==\"},\"groupProfile\":{\"fullName\":\"Team\",\"displayName\":\"team\",\"groupPreferences\":{\"reactions\":{\"enable\":\"on\"},\"voice\":{\"enable\":\"on\"}}},\"fromMember\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\"}}}}" + "{\"v\":\"9\",\"event\":\"x.grp.inv\",\"params\":{\"groupInvitation\":{\"connRequest\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"invitedMember\":{\"memberRole\":\"member\",\"memberId\":\"BQYHCA==\"},\"groupProfile\":{\"fullName\":\"Team\",\"displayName\":\"team\",\"groupPreferences\":{\"reactions\":{\"enable\":\"on\"},\"voice\":{\"enable\":\"on\"}}},\"fromMember\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\"}}}}" #==# XGrpInv GroupInvitation {fromMember = MemberIdRole (MemberId "\1\2\3\4") GRAdmin, invitedMember = MemberIdRole (MemberId "\5\6\7\8") GRMember, connRequest = testConnReq, groupProfile = testGroupProfile, business = Nothing, groupLinkId = Nothing, groupSize = Nothing} it "x.grp.inv with group link id" $ - "{\"v\":\"9\",\"event\":\"x.grp.inv\",\"params\":{\"groupInvitation\":{\"connRequest\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"invitedMember\":{\"memberRole\":\"member\",\"memberId\":\"BQYHCA==\"},\"groupProfile\":{\"fullName\":\"Team\",\"displayName\":\"team\",\"groupPreferences\":{\"reactions\":{\"enable\":\"on\"},\"voice\":{\"enable\":\"on\"}}},\"fromMember\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\"}, \"groupLinkId\":\"AQIDBA==\"}}}" + "{\"v\":\"9\",\"event\":\"x.grp.inv\",\"params\":{\"groupInvitation\":{\"connRequest\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"invitedMember\":{\"memberRole\":\"member\",\"memberId\":\"BQYHCA==\"},\"groupProfile\":{\"fullName\":\"Team\",\"displayName\":\"team\",\"groupPreferences\":{\"reactions\":{\"enable\":\"on\"},\"voice\":{\"enable\":\"on\"}}},\"fromMember\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\"}, \"groupLinkId\":\"AQIDBA==\"}}}" #==# XGrpInv GroupInvitation {fromMember = MemberIdRole (MemberId "\1\2\3\4") GRAdmin, invitedMember = MemberIdRole (MemberId "\5\6\7\8") GRMember, connRequest = testConnReq, groupProfile = testGroupProfile, business = Nothing, groupLinkId = Just $ GroupLinkId "\1\2\3\4", groupSize = Nothing} it "x.grp.acpt without incognito profile" $ "{\"v\":\"9\",\"event\":\"x.grp.acpt\",\"params\":{\"memberId\":\"AQIDBA==\"}}" @@ -301,16 +301,16 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"9\",\"event\":\"x.grp.mem.intro\",\"params\":{\"memberRestrictions\":{\"restriction\":\"blocked\"},\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}}" #==# XGrpMemIntro MemberInfo {memberId = MemberId "\1\2\3\4", memberRole = GRAdmin, v = Nothing, profile = testProfile, memberKey = Nothing} (Just MemberRestrictions {restriction = MRSBlocked}) it "x.grp.mem.inv" $ - "{\"v\":\"9\",\"event\":\"x.grp.mem.inv\",\"params\":{\"memberId\":\"AQIDBA==\",\"memberIntro\":{\"directConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}}" + "{\"v\":\"9\",\"event\":\"x.grp.mem.inv\",\"params\":{\"memberId\":\"AQIDBA==\",\"memberIntro\":{\"directConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}}" #==# XGrpMemInv (MemberId "\1\2\3\4") IntroInvitation {groupConnReq = testConnReq, directConnReq = Just testConnReq} it "x.grp.mem.inv w/t directConnReq" $ - "{\"v\":\"9\",\"event\":\"x.grp.mem.inv\",\"params\":{\"memberId\":\"AQIDBA==\",\"memberIntro\":{\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}}" + "{\"v\":\"9\",\"event\":\"x.grp.mem.inv\",\"params\":{\"memberId\":\"AQIDBA==\",\"memberIntro\":{\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}}" #==# XGrpMemInv (MemberId "\1\2\3\4") IntroInvitation {groupConnReq = testConnReq, directConnReq = Nothing} it "x.grp.mem.fwd" $ - "{\"v\":\"9\",\"event\":\"x.grp.mem.fwd\",\"params\":{\"memberIntro\":{\"directConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"},\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}}" + "{\"v\":\"9\",\"event\":\"x.grp.mem.fwd\",\"params\":{\"memberIntro\":{\"directConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\",\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"},\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}}" #==# XGrpMemFwd MemberInfo {memberId = MemberId "\1\2\3\4", memberRole = GRAdmin, v = Nothing, profile = testProfile, memberKey = Nothing} IntroInvitation {groupConnReq = testConnReq, directConnReq = Just testConnReq} it "x.grp.mem.fwd with member chat version range and w/t directConnReq" $ - "{\"v\":\"9\",\"event\":\"x.grp.mem.fwd\",\"params\":{\"memberIntro\":{\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"},\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"v\":\"9-19\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}}" + "{\"v\":\"9\",\"event\":\"x.grp.mem.fwd\",\"params\":{\"memberIntro\":{\"groupConnReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"},\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"v\":\"9-19\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}}" #==# XGrpMemFwd MemberInfo {memberId = MemberId "\1\2\3\4", memberRole = GRAdmin, v = Just $ ChatVersionRange supportedChatVRange, profile = testProfile, memberKey = Nothing} IntroInvitation {groupConnReq = testConnReq, directConnReq = Nothing} it "x.grp.mem.info" $ "{\"v\":\"9\",\"event\":\"x.grp.mem.info\",\"params\":{\"memberId\":\"AQIDBA==\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}" @@ -331,10 +331,10 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"9\",\"event\":\"x.grp.del\",\"params\":{}}" ==# XGrpDel it "x.grp.direct.inv" $ - "{\"v\":\"9\",\"event\":\"x.grp.direct.inv\",\"params\":{\"connReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\", \"content\":{\"text\":\"hello\",\"type\":\"text\"}}}" + "{\"v\":\"9\",\"event\":\"x.grp.direct.inv\",\"params\":{\"connReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\", \"content\":{\"text\":\"hello\",\"type\":\"text\"}}}" #==# XGrpDirectInv testConnReq (Just $ MCText "hello") Nothing it "x.grp.direct.inv without content" $ - "{\"v\":\"9\",\"event\":\"x.grp.direct.inv\",\"params\":{\"connReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D2-3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}" + "{\"v\":\"9\",\"event\":\"x.grp.direct.inv\",\"params\":{\"connReq\":\"simplex:/invitation#/?v=1&smp=smp%3A%2F%2F1234-w%3D%3D%40smp.simplex.im%3A5223%2F3456-w%3D%3D%23%2F%3Fv%3D1-4%26dh%3DMCowBQYDK2VuAyEAjiswwI3O_NlS8Fk3HJUW870EY2bAwmttMBsvRB9eV3o%253D&e2e=v%3D3%26x3dh%3DMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D%2CMEIwBQYDK2VvAzkAmKuSYeQ_m0SixPDS8Wq8VBaTS1cW-Lp0n0h4Diu-kUpR-qXx4SDJ32YGEFoGFGSbGPry5Ychr6U%3D\"}}" #==# XGrpDirectInv testConnReq Nothing Nothing -- it "x.grp.msg.forward" -- $ "{\"v\":\"9\",\"event\":\"x.grp.msg.forward\",\"params\":{\"msgForward\":{\"memberId\":\"AQIDBA==\",\"msg\":\"{\"v\":\"9\",\"event\":\"x.msg.new\",\"params\":{\"content\":{\"text\":\"hello\",\"type\":\"text\"}}}\",\"msgTs\":\"1970-01-01T00:00:01.000000001Z\"}}}" From 0bc35fd1eb2a2554e46d049b9b140d2c11017a9f Mon Sep 17 00:00:00 2001 From: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com> Date: Tue, 18 Aug 2026 21:58:56 +0000 Subject: [PATCH 17/24] directory: identify registration owner by member id to fix incorrect de-listing (#7362) * directory: identify registration owner by member id to fix incorrect de-listing The leave/removed/role-changed handlers identified the registration owner by contact id. A non-owner member can be associated with the owner's contact (via the contact/member merge), so its departure incorrectly de-listed the group. Compare by group member id (owner_member_id) instead, falling back to contact id for registrations recorded before owner_member_id existed. * fix test, always compare contact ID in owner check --------- Co-authored-by: Evgeny Poberezkin --- .../src/Directory/Events.hs | 12 ++--- .../src/Directory/Service.hs | 33 +++++++----- tests/Bots/DirectoryTests.hs | 53 ++++++++++++++++++- 3 files changed, 79 insertions(+), 19 deletions(-) diff --git a/apps/simplex-directory-service/src/Directory/Events.hs b/apps/simplex-directory-service/src/Directory/Events.hs index 3bff611a28..bc84ab86e1 100644 --- a/apps/simplex-directory-service/src/Directory/Events.hs +++ b/apps/simplex-directory-service/src/Directory/Events.hs @@ -54,10 +54,10 @@ data DirectoryEvent | DEPendingMember GroupInfo GroupMember | DEPendingMemberMsg GroupInfo GroupMember ChatItemId Text | DEGroupItemProhibited GroupInfo GroupMember ChatItemId GroupFeature -- a member posted content prohibited by the group's settings - | DEContactRoleChanged GroupInfo ContactId GroupMemberRole -- contactId here is the contact whose role changed + | DEContactRoleChanged GroupInfo ContactId GroupMemberId GroupMemberRole -- contactId/memberId here identify the member whose role changed | DEServiceRoleChanged GroupInfo GroupMemberRole - | DEContactRemovedFromGroup ContactId GroupInfo - | DEContactLeftGroup ContactId GroupInfo + | DEContactRemovedFromGroup ContactId GroupMemberId GroupInfo + | DEContactLeftGroup ContactId GroupMemberId GroupInfo | DEServiceRemovedFromGroup GroupInfo | DEGroupDeleted GroupInfo | DEChatLinkReceived {contact :: Contact, chatItemId :: ChatItemId, chatLink :: MsgChatLink, ownerSig :: Maybe LinkOwnerSig} @@ -93,9 +93,9 @@ crDirectoryEvent_ = \case _ -> Nothing CEvtMemberRole {groupInfo, member, toRole} | groupMemberId' member == groupMemberId' (membership groupInfo) -> Just $ DEServiceRoleChanged groupInfo toRole - | otherwise -> (\ctId -> DEContactRoleChanged groupInfo ctId toRole) <$> memberContactId member - CEvtDeletedMember {groupInfo, deletedMember} -> (`DEContactRemovedFromGroup` groupInfo) <$> memberContactId deletedMember - CEvtLeftMember {groupInfo, member} -> (`DEContactLeftGroup` groupInfo) <$> memberContactId member + | otherwise -> (\ctId -> DEContactRoleChanged groupInfo ctId (groupMemberId' member) toRole) <$> memberContactId member + CEvtDeletedMember {groupInfo, deletedMember} -> (\ctId -> DEContactRemovedFromGroup ctId (groupMemberId' deletedMember) groupInfo) <$> memberContactId deletedMember + CEvtLeftMember {groupInfo, member} -> (\ctId -> DEContactLeftGroup ctId (groupMemberId' member) groupInfo) <$> memberContactId member CEvtDeletedMemberUser {groupInfo} -> Just $ DEServiceRemovedFromGroup groupInfo CEvtGroupDeleted {groupInfo} -> Just $ DEGroupDeleted groupInfo CEvtUnknownMemberAnnounced {groupInfo, unknownMember, announcedMember} -> Just $ DEMemberUpdated {groupInfo, fromMember = unknownMember, toMember = announcedMember} diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index 81cb35954b..fe57489f4d 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -323,10 +323,10 @@ directoryServiceEvent opts@DirectoryOpts {adminUsers, superUsers, serviceName, o DEPendingMember g m -> dePendingMember g m DEPendingMemberMsg g m ciId t -> dePendingMemberMsg g m ciId t DEGroupItemProhibited g m ciId gf -> when prohibitedToObserver $ deGroupItemProhibited g m ciId gf - DEContactRoleChanged g ctId role -> deContactRoleChanged g ctId role + DEContactRoleChanged g ctId gmId role -> deContactRoleChanged g ctId gmId role DEServiceRoleChanged g role -> deServiceRoleChanged g role - DEContactRemovedFromGroup ctId g -> deContactRemovedFromGroup ctId g - DEContactLeftGroup ctId g -> deContactLeftGroup ctId g + DEContactRemovedFromGroup ctId gmId g -> deContactRemovedFromGroup ctId gmId g + DEContactLeftGroup ctId gmId g -> deContactLeftGroup ctId gmId g DEServiceRemovedFromGroup g -> deServiceRemovedFromGroup g DEGroupDeleted g -> deGroupDeleted g DEChatLinkReceived {contact = ct, chatLink, ownerSig} -> deChatLinkReceived ct chatLink ownerSig @@ -350,6 +350,15 @@ directoryServiceEvent opts@DirectoryOpts {adminUsers, superUsers, serviceName, o notifyAdminUsers s = withAdminUsers $ \contactId -> sendMessage' cc contactId s notifyOwner = sendMessage' cc . dbContactId ctId `isOwner` GroupReg {dbContactId} = ctId == dbContactId + -- Whether the leaving/removed/role-changed member is the registration owner. + -- Comparing by member id (not contact id) is required because a non-owner + -- member can be associated with the owner's contact by the probe-and-merge + -- mechanism, which would otherwise make its departure de-list the group. + -- Registrations recorded before owner_member_id existed keep the contact-id + -- comparison. + isOwnerMember :: GroupReg -> GroupMemberId -> ContactId -> Bool + isOwnerMember GroupReg {dbContactId, dbOwnerMemberId} gmId ctId = + ctId == dbContactId && maybe True (gmId ==) dbOwnerMemberId withGroupReg :: GroupInfo -> Text -> (GroupReg -> IO ()) -> IO () withGroupReg GroupInfo {groupId, localDisplayName} err action = getGroupReg cc groupId >>= \case @@ -806,13 +815,13 @@ directoryServiceEvent opts@DirectoryOpts {adminUsers, superUsers, serviceName, o sendToApprove g' gr (n + 1) _ -> pure () - deContactRoleChanged :: GroupInfo -> ContactId -> GroupMemberRole -> IO () - deContactRoleChanged g@GroupInfo {groupId, membership = GroupMember {memberRole = serviceRole}} ctId contactRole = do + deContactRoleChanged :: GroupInfo -> ContactId -> GroupMemberId -> GroupMemberRole -> IO () + deContactRoleChanged g@GroupInfo {groupId, membership = GroupMember {memberRole = serviceRole}} ctId gmId contactRole = do logInfo $ "contact ID " <> tshow ctId <> " role changed in group " <> viewGroupName g <> " to " <> tshow contactRole withGroupReg g "contact role changed" $ \gr@GroupReg {groupRegStatus} -> do let userGroupRef = userGroupReference gr g uCtRole = "Your role in the group " <> userGroupRef <> " is changed to " <> ctRole - when (ctId `isOwner` gr) $ + when (isOwnerMember gr gmId ctId) $ case groupRegStatus of GRSSuspendedBadRoles | rStatus == GRSOk -> setGroupStatus notifyAdminUsers env cc groupId GRSActive $ \gr' -> do @@ -861,23 +870,23 @@ directoryServiceEvent opts@DirectoryOpts {adminUsers, superUsers, serviceName, o getOwnerGroupMember groupId gr >>= mapM_ (\cm@GroupMember {memberRole} -> when (memberRole == GROwner && memberActive cm) action) - deContactRemovedFromGroup :: ContactId -> GroupInfo -> IO () - deContactRemovedFromGroup ctId g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do + deContactRemovedFromGroup :: ContactId -> GroupMemberId -> GroupInfo -> IO () + deContactRemovedFromGroup ctId gmId g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do let gt = maybe "group" groupTypeStr' pg_ logInfo $ "contact ID " <> tshow ctId <> " removed from group " <> viewGroupName g withGroupReg g "contact removed" $ \gr -> - when (ctId `isOwner` gr) $ + when (isOwnerMember gr gmId ctId) $ setGroupStatus notifyAdminUsers env cc groupId GRSRemoved $ \gr' -> do notifyOwner gr' $ "You are removed from the " <> gt <> " " <> userGroupReference gr' g <> ".\n\nThe " <> gt <> " is no longer listed in the directory." notifyAdminUsers $ "The " <> gt <> " " <> groupReference g <> " is de-listed (" <> gt <> " owner is removed)." when (isJust pg_) $ leavePublicGroup g - deContactLeftGroup :: ContactId -> GroupInfo -> IO () - deContactLeftGroup ctId g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do + deContactLeftGroup :: ContactId -> GroupMemberId -> GroupInfo -> IO () + deContactLeftGroup ctId gmId g@GroupInfo {groupId, groupProfile = GroupProfile {publicGroup = pg_}} = do let gt = maybe "group" groupTypeStr' pg_ logInfo $ "contact ID " <> tshow ctId <> " left group " <> viewGroupName g withGroupReg g "contact left" $ \gr -> - when (ctId `isOwner` gr) $ + when (isOwnerMember gr gmId ctId) $ setGroupStatus notifyAdminUsers env cc groupId GRSRemoved $ \gr' -> do notifyOwner gr' $ "You left the " <> gt <> " " <> userGroupReference gr' g <> ".\n\nThe " <> gt <> " is no longer listed in the directory." notifyAdminUsers $ "The " <> gt <> " " <> groupReference g <> " is de-listed (" <> gt <> " owner left)." diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index 4fe275a0dd..9c627df90d 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -12,7 +12,7 @@ import ChatTests.Groups (memberJoinChannel, prepareChannel1Relay) import ChatTests.Utils import Control.Concurrent (forkIO, killThread, threadDelay) import Control.Exception (finally) -import Control.Monad (forM_, void, when) +import Control.Monad (forM_, when, void) import qualified Data.Aeson as J import qualified Data.Text as T import Directory.Captcha @@ -52,6 +52,7 @@ directoryServiceTests = do it "should de-list if owner is removed from the group" testDelistedOwnerRemoved it "should NOT de-list if another member leaves the group" testNotDelistedMemberLeaves it "should NOT de-list if another member is removed from the group" testNotDelistedMemberRemoved + it "should NOT de-list if the owner rejoins via the group link and leaves the second membership" testNotDelistedOwnerRejoinsViaLink it "should de-list if service is removed from the group" testDelistedServiceRemoved it "should de-list if group is deleted" testDelistedGroupDeleted it "should de-list/re-list when service/owner roles change" testDelistedRoleChanges @@ -697,6 +698,56 @@ testNotDelistedMemberRemoved ps = cath #> "@'SimpleX Directory_1' privacy" groupFoundN_ "_1" Nothing 2 cath "privacy" +-- Reproduces the de-listing bug where a non-owner member associated with the +-- registration owner's contact (via the probe-and-merge mechanism) de-lists the +-- group when it leaves. The owner joins the directory-managed link a second time +-- (a single client owning both connection ends completes the merge with no +-- modified client), then leaves that second membership while remaining the owner. +testNotDelistedOwnerRejoinsViaLink :: HasCallStack => TestParams -> IO () +testNotDelistedOwnerRejoinsViaLink ps = + withDirectoryService ps $ \superUser dsLink -> + withNewTestChat ps "bob" bobProfile $ \bob -> do + bob `connectVia` dsLink + submitGroup bob "privacy" "Privacy" + groupAccepted bob "privacy" 1 + welcomeWithLink <- completeRegistration superUser bob "privacy" "Privacy" 1 + let groupLink = dropStrPrefix "Link to join the group privacy: " welcomeWithLink + -- turn off the captcha filter so the owner's re-join is not screened + bob #> "@'SimpleX Directory' /filter 1 off" + bob <# "'SimpleX Directory'> > /filter 1 off" + bob <## " Spam filter settings for group privacy set to:" + bob <## "- reject long/inappropriate names: disabled" + bob <## "- pass captcha to join: disabled" + bob <## "" + bob <## "/'filter 1 name' - enable name filter" + bob <## "/'filter 1 captcha' - enable captcha challenge" + bob <## "/'filter 1 name captcha' - enable both" + -- the registration owner connects to the directory-managed link again, + -- creating a second membership that the probe-and-merge mechanism + -- associates with the owner's own contact on the directory service + bob ##> ("/c " <> groupLink) + bob <## "connection request sent!" + bob <## "#privacy_1: joining the group..." + bob <## "#privacy_1: you joined the group" + bob + <### [ "#privacy: 'SimpleX Directory' added bob_1 (Bob) to the group (connecting...)", + "contact and member are merged: 'SimpleX Directory', #privacy_1 'SimpleX Directory_1'", + "use @'SimpleX Directory' to send messages", + "#privacy_1: member bob_2 (Bob) is connected", + "#privacy: new member bob_1 is connected" + ] + -- allow the directory service to complete the contact/member merge that + -- associates the second membership (bob_1) with bob's contact + threadDelay 3000000 + -- owner leaves the second membership, which is not the owner member + bob ##> "/l privacy_1" + bob <## "#privacy_1: you left the group" + bob <## "use /d #privacy_1 to delete the group" + bob <## "#privacy: bob_1 left the group" + -- the group must remain listed: the leaving member is not the owner member + (superUser TestParams -> IO () testDelistedServiceRemoved ps = withDirectoryService ps $ \superUser dsLink -> From ecb008b792c4c1c539e79f98e764789456dd6dcf Mon Sep 17 00:00:00 2001 From: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com> Date: Tue, 18 Aug 2026 23:10:54 +0000 Subject: [PATCH 18/24] core, ui: auto-accept group invitations per user profile (#7377) * core, ui: auto-accept group invitations per user profile Add a per-profile toggle for auto-accepting group invitations, and regroup it with the existing contact-requests setting under a single Auto-accept section in Privacy & Security, relabelled "Contact requests in groups". The join is fully async. processGroupInvitation already had an async accept path, used when the invitation matches a group link the user opened: prepareAgentJoin + createMemberConnectionAsync + joinAgentConnectionAsync, with the outcome reported later against the CFJoinConn command id. Auto-accept takes that same path instead of going through APIJoinGroup, so it works while the app is closed and never blocks message processing. An auto-accepted invitation still records a CIRcvGroupInvitation item in the chat with the inviting contact, so there is a record of who added the user to which group. Two details worth noting for review: hostContact is reported to clients only for group links. Clients respond to it by replacing the transient host connection view with the group and removing that chat - correct for a group link, where the contact is a placeholder, but wrong for a plain invitation, where it is a real contact. A resent invitation returns the existing group, because createGroupInvitation is idempotent on inv_queue_info. The join therefore only runs while the membership is still GSMemInvited, so a resend cannot open a second connection. * booldef * order * refactor * update translation key * query plans * ios: export translations --------- Co-authored-by: Evgeny Poberezkin Co-authored-by: Evgeny Poberezkin <2769109+epoberezkin@users.noreply.github.com> --- apps/ios/Shared/Model/AppAPITypes.swift | 4 + apps/ios/Shared/Model/SimpleXAPI.swift | 4 + .../Views/UserSettings/PrivacySettings.swift | 45 +++++- .../bg.xcloc/Localized Contents/bg.xliff | 42 +++-- .../bg.xcloc/contents.json | 4 +- .../cs.xcloc/Localized Contents/cs.xliff | 42 +++-- .../cs.xcloc/contents.json | 4 +- .../de.xcloc/Localized Contents/de.xliff | 43 +++-- .../de.xcloc/contents.json | 4 +- .../en.xcloc/Localized Contents/en.xliff | 50 ++++-- .../en.xcloc/contents.json | 4 +- .../es.xcloc/Localized Contents/es.xliff | 43 +++-- .../es.xcloc/contents.json | 4 +- .../fi.xcloc/Localized Contents/fi.xliff | 42 +++-- .../fi.xcloc/contents.json | 4 +- .../fr.xcloc/Localized Contents/fr.xliff | 42 +++-- .../fr.xcloc/contents.json | 4 +- .../hu.xcloc/Localized Contents/hu.xliff | 43 +++-- .../hu.xcloc/contents.json | 4 +- .../it.xcloc/Localized Contents/it.xliff | 43 +++-- .../it.xcloc/contents.json | 4 +- .../ja.xcloc/Localized Contents/ja.xliff | 42 +++-- .../ja.xcloc/contents.json | 4 +- .../nl.xcloc/Localized Contents/nl.xliff | 42 +++-- .../nl.xcloc/contents.json | 4 +- .../pl.xcloc/Localized Contents/pl.xliff | 43 +++-- .../pl.xcloc/contents.json | 4 +- .../ru.xcloc/Localized Contents/ru.xliff | 43 +++-- .../ru.xcloc/contents.json | 4 +- .../th.xcloc/Localized Contents/th.xliff | 42 +++-- .../th.xcloc/contents.json | 4 +- .../tr.xcloc/Localized Contents/tr.xliff | 43 +++-- .../tr.xcloc/contents.json | 4 +- .../uk.xcloc/Localized Contents/uk.xliff | 42 +++-- .../uk.xcloc/contents.json | 4 +- .../Localized Contents/zh-Hans.xliff | 43 +++-- .../zh-Hans.xcloc/contents.json | 4 +- apps/ios/SimpleXChat/ChatTypes.swift | 2 + apps/ios/de.lproj/Localizable.strings | 2 +- apps/ios/es.lproj/Localizable.strings | 2 +- apps/ios/fr.lproj/Localizable.strings | 2 +- apps/ios/hu.lproj/Localizable.strings | 2 +- apps/ios/it.lproj/Localizable.strings | 2 +- apps/ios/pl.lproj/Localizable.strings | 2 +- apps/ios/ru.lproj/Localizable.strings | 2 +- apps/ios/tr.lproj/Localizable.strings | 2 +- apps/ios/zh-Hans.lproj/Localizable.strings | 2 +- .../chat/simplex/common/model/ChatModel.kt | 2 + .../chat/simplex/common/model/SimpleXAPI.kt | 9 ++ .../views/usersettings/PrivacySettings.kt | 34 ++-- .../commonMain/resources/MR/ar/strings.xml | 2 +- .../commonMain/resources/MR/base/strings.xml | 5 +- .../commonMain/resources/MR/bg/strings.xml | 2 +- .../commonMain/resources/MR/ca/strings.xml | 2 +- .../commonMain/resources/MR/cs/strings.xml | 2 +- .../commonMain/resources/MR/de/strings.xml | 2 +- .../commonMain/resources/MR/el/strings.xml | 2 +- .../commonMain/resources/MR/es/strings.xml | 2 +- .../commonMain/resources/MR/fa/strings.xml | 2 +- .../commonMain/resources/MR/fi/strings.xml | 2 +- .../commonMain/resources/MR/fr/strings.xml | 2 +- .../commonMain/resources/MR/hu/strings.xml | 2 +- .../commonMain/resources/MR/in/strings.xml | 2 +- .../commonMain/resources/MR/it/strings.xml | 2 +- .../commonMain/resources/MR/iw/strings.xml | 2 +- .../commonMain/resources/MR/ja/strings.xml | 2 +- .../commonMain/resources/MR/lt/strings.xml | 2 +- .../commonMain/resources/MR/lv/strings.xml | 2 +- .../commonMain/resources/MR/nl/strings.xml | 2 +- .../commonMain/resources/MR/pl/strings.xml | 2 +- .../resources/MR/pt-rBR/strings.xml | 2 +- .../commonMain/resources/MR/ro/strings.xml | 2 +- .../commonMain/resources/MR/ru/strings.xml | 2 +- .../commonMain/resources/MR/th/strings.xml | 2 +- .../commonMain/resources/MR/tr/strings.xml | 2 +- .../commonMain/resources/MR/uk/strings.xml | 2 +- .../commonMain/resources/MR/vi/strings.xml | 2 +- .../resources/MR/zh-rCN/strings.xml | 2 +- .../resources/MR/zh-rTW/strings.xml | 2 +- bots/api/COMMANDS.md | 38 +++++ bots/api/TYPES.md | 1 + bots/src/API/Docs/Commands.hs | 4 +- .../types/typescript/src/commands.ts | 15 ++ .../types/typescript/src/types.ts | 1 + .../src/simplex_chat/types/_commands.py | 13 ++ .../src/simplex_chat/types/_types.py | 1 + ...026-08-13-auto-accept-group-invitations.md | 149 ++++++++++++++++++ simplex-chat.cabal | 2 + src/Simplex/Chat/Controller.hs | 2 + src/Simplex/Chat/Library/Commands.hs | 8 + src/Simplex/Chat/Library/Subscriber.hs | 47 +++--- src/Simplex/Chat/Store/Postgres/Migrations.hs | 4 +- ...M20260813_auto_accept_group_invitations.hs | 19 +++ .../Store/Postgres/Migrations/chat_schema.sql | 3 +- src/Simplex/Chat/Store/Profiles.hs | 12 +- src/Simplex/Chat/Store/SQLite/Migrations.hs | 4 +- ...M20260813_auto_accept_group_invitations.hs | 18 +++ .../SQLite/Migrations/chat_query_plans.txt | 26 +-- .../Store/SQLite/Migrations/chat_schema.sql | 3 +- src/Simplex/Chat/Store/Shared.hs | 9 +- src/Simplex/Chat/Types.hs | 1 + tests/ChatTests/Profiles.hs | 58 +++++++ tests/JSONFixtures.hs | 6 +- 103 files changed, 1058 insertions(+), 363 deletions(-) create mode 100644 plans/2026-08-13-auto-accept-group-invitations.md create mode 100644 src/Simplex/Chat/Store/Postgres/Migrations/M20260813_auto_accept_group_invitations.hs create mode 100644 src/Simplex/Chat/Store/SQLite/Migrations/M20260813_auto_accept_group_invitations.hs diff --git a/apps/ios/Shared/Model/AppAPITypes.swift b/apps/ios/Shared/Model/AppAPITypes.swift index 40b88ec338..db70511a5a 100644 --- a/apps/ios/Shared/Model/AppAPITypes.swift +++ b/apps/ios/Shared/Model/AppAPITypes.swift @@ -21,6 +21,7 @@ enum ChatCommand: ChatCmdProtocol { case apiSetUserContactReceipts(userId: Int64, userMsgReceiptSettings: UserMsgReceiptSettings) case apiSetUserGroupReceipts(userId: Int64, userMsgReceiptSettings: UserMsgReceiptSettings) case apiSetUserAutoAcceptMemberContacts(userId: Int64, enable: Bool) + case apiSetUserAutoAcceptGroupInvitations(userId: Int64, enable: Bool) case apiHideUser(userId: Int64, viewPwd: String) case apiUnhideUser(userId: Int64, viewPwd: String) case apiMuteUser(userId: Int64) @@ -215,6 +216,8 @@ enum ChatCommand: ChatCmdProtocol { return "/_set receipts groups \(userId) \(onOff(umrs.enable)) clear_overrides=\(onOff(umrs.clearOverrides))" case let .apiSetUserAutoAcceptMemberContacts(userId, enable): return "/_set accept member contacts \(userId) \(onOff(enable))" + case let .apiSetUserAutoAcceptGroupInvitations(userId, enable): + return "/_set accept group invitations \(userId) \(onOff(enable))" case let .apiHideUser(userId, viewPwd): return "/_hide user \(userId) \(encodeJSON(viewPwd))" case let .apiUnhideUser(userId, viewPwd): return "/_unhide user \(userId) \(encodeJSON(viewPwd))" case let .apiMuteUser(userId): return "/_mute user \(userId)" @@ -430,6 +433,7 @@ enum ChatCommand: ChatCmdProtocol { case .apiSetUserContactReceipts: return "apiSetUserContactReceipts" case .apiSetUserGroupReceipts: return "apiSetUserGroupReceipts" case .apiSetUserAutoAcceptMemberContacts: return "apiSetUserAutoAcceptMemberContacts" + case .apiSetUserAutoAcceptGroupInvitations: return "apiSetUserAutoAcceptGroupInvitations" case .apiHideUser: return "apiHideUser" case .apiUnhideUser: return "apiUnhideUser" case .apiMuteUser: return "apiMuteUser" diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 7a934fc746..74f97134d7 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -302,6 +302,10 @@ func apiSetUserAutoAcceptMemberContacts(_ userId: Int64, enable: Bool) async thr try await sendCommandOkResp(.apiSetUserAutoAcceptMemberContacts(userId: userId, enable: enable)) } +func apiSetUserAutoAcceptGroupInvitations(_ userId: Int64, enable: Bool) async throws { + try await sendCommandOkResp(.apiSetUserAutoAcceptGroupInvitations(userId: userId, enable: enable)) +} + func apiHideUser(_ userId: Int64, viewPwd: String) async throws -> User { try await setUserPrivacy_(.apiHideUser(userId: userId, viewPwd: viewPwd)) } diff --git a/apps/ios/Shared/Views/UserSettings/PrivacySettings.swift b/apps/ios/Shared/Views/UserSettings/PrivacySettings.swift index d891efcd90..bf3dbac440 100644 --- a/apps/ios/Shared/Views/UserSettings/PrivacySettings.swift +++ b/apps/ios/Shared/Views/UserSettings/PrivacySettings.swift @@ -37,6 +37,8 @@ struct PrivacySettings: View { @State private var groupReceiptsDialogue = false @State private var autoAcceptMemberContacts = false @State private var autoAcceptMemberContactsReset = false + @State private var autoAcceptGroupInvitations = false + @State private var autoAcceptGroupInvitationsReset = false @State private var alert: PrivacySettingsViewAlert? enum PrivacySettingsViewAlert: Identifiable { @@ -117,14 +119,17 @@ struct PrivacySettings: View { } Section { - settingsRow("checkmark", color: theme.colors.secondary) { - Toggle("Auto-accept", isOn: $autoAcceptMemberContacts) + settingsRow("person", color: theme.colors.secondary) { + Toggle("Contact requests in groups", isOn: $autoAcceptMemberContacts) + } + settingsRow("person.2", color: theme.colors.secondary) { + Toggle("Group invitations", isOn: $autoAcceptGroupInvitations) } } header: { - Text("Contact requests from groups") + Text("Auto-accept") .foregroundColor(theme.colors.secondary) } footer: { - Text("This setting is for your current profile **\(m.currentUser?.displayName ?? "")**.") + Text("These settings are for your current profile **\(m.currentUser?.displayName ?? "")**.") .foregroundColor(theme.colors.secondary) } @@ -139,7 +144,14 @@ struct PrivacySettings: View { if autoAcceptMemberContactsReset { autoAcceptMemberContactsReset = false } else { - setAutoAcceptGrpDirectInvs(autoAcceptMemberContacts) + setAutoAcceptMemberContacts(autoAcceptMemberContacts) + } + } + .onChange(of: autoAcceptGroupInvitations) { _ in + if autoAcceptGroupInvitationsReset { + autoAcceptGroupInvitationsReset = false + } else { + setAutoAcceptGroupInvitations(autoAcceptGroupInvitations) } } .onAppear { @@ -148,6 +160,10 @@ struct PrivacySettings: View { autoAcceptMemberContactsReset = true autoAcceptMemberContacts = u.autoAcceptMemberContacts } + if autoAcceptGroupInvitations != u.autoAcceptGroupInvitations { + autoAcceptGroupInvitationsReset = true + autoAcceptGroupInvitations = u.autoAcceptGroupInvitations + } } } .alert(item: $alert) { alert in @@ -426,7 +442,7 @@ struct PrivacySettings: View { } } - private func setAutoAcceptGrpDirectInvs(_ enable: Bool) { + private func setAutoAcceptMemberContacts(_ enable: Bool) { Task { do { if let currentUser = m.currentUser { @@ -443,6 +459,23 @@ struct PrivacySettings: View { } } + private func setAutoAcceptGroupInvitations(_ enable: Bool) { + Task { + do { + if let currentUser = m.currentUser { + try await apiSetUserAutoAcceptGroupInvitations(currentUser.userId, enable: enable) + await MainActor.run { + var updatedUser = currentUser + updatedUser.autoAcceptGroupInvitations = enable + m.updateUser(updatedUser) + } + } + } catch let error { + alert = .error(title: "Error setting auto-accept", error: "Error: \(responseError(error))") + } + } + } + private func simplexLockRow(_ value: LocalizedStringKey) -> some View { HStack { Text("SimpleX Lock") diff --git a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff index 0b7e24f040..ff99155cb9 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -2,7 +2,7 @@
- +
@@ -2429,8 +2429,8 @@ This is your own one-time link! Настройки за контакт No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups No comment provided by engineer. @@ -2603,6 +2603,14 @@ This is your own one-time link! Линкът се създава… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Текущ kод за достъп @@ -4500,6 +4508,10 @@ Error: %2$@ Груповата покана вече е невалидна, премахната е от подателя. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Групов линк @@ -8989,10 +9001,6 @@ alert subtitle Тази настройка се прилага за съобщения в текущия ви профил **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. No comment provided by engineer. @@ -9938,6 +9946,14 @@ Repeat join request? Вече можете да изпращате съобщения до %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. No comment provided by engineer. @@ -11437,7 +11453,7 @@ last received msg: %2$@
- +
@@ -11474,7 +11490,7 @@ last received msg: %2$@
- +
@@ -11489,7 +11505,7 @@ last received msg: %2$@
- +
@@ -11511,7 +11527,7 @@ last received msg: %2$@
- +
@@ -11538,7 +11554,7 @@ last received msg: %2$@
- +
@@ -11557,7 +11573,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/bg.xcloc/contents.json b/apps/ios/SimpleX Localizations/bg.xcloc/contents.json index 21627f8e60..93b8194a0d 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/bg.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "bg", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff index 0549fdc20b..9f11be073f 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -2,7 +2,7 @@
- +
@@ -2333,8 +2333,8 @@ Toto je váš vlastní jednorázový odkaz! Předvolby kontaktů No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups No comment provided by engineer. @@ -2499,6 +2499,14 @@ Toto je váš vlastní jednorázový odkaz! Creating link… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Aktuální heslo @@ -4352,6 +4360,10 @@ Error: %2$@ Skupinová pozvánka již není platná, byla odstraněna odesílatelem. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Odkaz na skupinu @@ -8748,10 +8760,6 @@ alert subtitle Toto nastavení platí pro zprávy ve vašem aktuálním profilu chatu **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. No comment provided by engineer. @@ -9655,6 +9663,14 @@ Repeat join request? Nyní můžete posílat zprávy %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. No comment provided by engineer. @@ -11124,7 +11140,7 @@ last received msg: %2$@
- +
@@ -11160,7 +11176,7 @@ last received msg: %2$@
- +
@@ -11175,7 +11191,7 @@ last received msg: %2$@
- +
@@ -11197,7 +11213,7 @@ last received msg: %2$@
- +
@@ -11224,7 +11240,7 @@ last received msg: %2$@
- +
@@ -11243,7 +11259,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/cs.xcloc/contents.json b/apps/ios/SimpleX Localizations/cs.xcloc/contents.json index 804a5e0951..61a2dc8bb8 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/cs.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "cs", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff index 6fd8232e93..a63c97fb8b 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -2,7 +2,7 @@
- +
@@ -2525,8 +2525,8 @@ Das ist Ihr eigener Einmal-Link! Kontakt-Präferenzen No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups KONTAKTANFRAGEN VON GRUPPEN No comment provided by engineer. @@ -2715,6 +2715,14 @@ Das ist Ihr eigener Einmal-Link! Link wird erstellt… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Aktueller Zugangscode @@ -4770,6 +4778,10 @@ Fehler: %2$@ Die Gruppeneinladung ist nicht mehr gültig, da sie vom Absender entfernt wurde. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Gruppen-Link @@ -9734,11 +9746,6 @@ alert subtitle Diese Einstellung gilt für Nachrichten in Ihrem aktuellen Chat-Profil **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - Diese Einstellung gilt für Ihr aktuelles Profil **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Die Zeit bis zum Verschwinden wird nur für neue Kontakte eingestellt. @@ -10769,6 +10776,14 @@ Verbindungsanfrage wiederholen? Sie können nun Nachrichten an %@ versenden notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Sie können aus den archivierten Kontakten heraus Nachrichten an %@ versenden. @@ -12374,7 +12389,7 @@ Zuletzt empfangene Nachricht: %2$@
- +
@@ -12411,7 +12426,7 @@ Zuletzt empfangene Nachricht: %2$@
- +
@@ -12426,7 +12441,7 @@ Zuletzt empfangene Nachricht: %2$@
- +
@@ -12448,7 +12463,7 @@ Zuletzt empfangene Nachricht: %2$@
- +
@@ -12480,7 +12495,7 @@ Zuletzt empfangene Nachricht: %2$@
- +
@@ -12502,7 +12517,7 @@ Zuletzt empfangene Nachricht: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/de.xcloc/contents.json b/apps/ios/SimpleX Localizations/de.xcloc/contents.json index 8a5b0f6b96..e49b3da67c 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/de.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "de", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff index 97a8d4879c..88f9cb0f74 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -2,7 +2,7 @@
- +
@@ -2525,9 +2525,9 @@ This is your own one-time link! Contact preferences No comment provided by engineer. - - Contact requests from groups - Contact requests from groups + + Contact requests in groups + Contact requests in groups No comment provided by engineer. @@ -2715,6 +2715,16 @@ This is your own one-time link! Creating link… No comment provided by engineer. + + Crowdfunding on Wefunder + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Current Passcode @@ -4770,6 +4780,11 @@ Error: %2$@ Group invitation is no longer valid, it was removed by sender. No comment provided by engineer. + + Group invitations + Group invitations + No comment provided by engineer. + Group link Group link @@ -9734,11 +9749,6 @@ alert subtitle This setting applies to messages in your current chat profile **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Time to disappear is set only for new contacts. @@ -10769,6 +10779,16 @@ Repeat join request? You can now chat with %@ notification body + + You can now invest in SimpleX Chat + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. You can send messages to %@ from Archived contacts. @@ -12374,7 +12394,7 @@ last received msg: %2$@
- +
@@ -12411,7 +12431,7 @@ last received msg: %2$@
- +
@@ -12428,7 +12448,7 @@ last received msg: %2$@
- +
@@ -12450,7 +12470,7 @@ last received msg: %2$@
- +
@@ -12482,7 +12502,7 @@ last received msg: %2$@
- +
@@ -12504,7 +12524,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/en.xcloc/contents.json b/apps/ios/SimpleX Localizations/en.xcloc/contents.json index 7b50cab8e7..5426843b95 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/en.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "en", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff index 6d140c7f78..8f613b0a8b 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -2,7 +2,7 @@
- +
@@ -2525,8 +2525,8 @@ This is your own one-time link! Preferencias de contacto No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups Solicitudes de contacto en grupo No comment provided by engineer. @@ -2715,6 +2715,14 @@ This is your own one-time link! Creando enlace… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Código de Acceso @@ -4770,6 +4778,10 @@ Error: %2$@ La invitación al grupo ya no es válida, ha sido eliminada por el remitente. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Enlace de grupo @@ -9734,11 +9746,6 @@ alert subtitle Esta configuración se aplica a los mensajes del perfil actual **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - Esta configuración se aplica al perfil actual **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Mensajes temporales activados sólo para los contactos nuevos. @@ -10769,6 +10776,14 @@ Repeat join request? Ya puedes chatear con %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Puedes enviar mensajes a %@ desde Contactos archivados. @@ -12374,7 +12389,7 @@ last received msg: %2$@
- +
@@ -12411,7 +12426,7 @@ last received msg: %2$@
- +
@@ -12426,7 +12441,7 @@ last received msg: %2$@
- +
@@ -12448,7 +12463,7 @@ last received msg: %2$@
- +
@@ -12480,7 +12495,7 @@ last received msg: %2$@
- +
@@ -12502,7 +12517,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/es.xcloc/contents.json b/apps/ios/SimpleX Localizations/es.xcloc/contents.json index 5a4c833adf..13dd145937 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/es.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "es", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff index cd6030b2be..2721c64ffd 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -2,7 +2,7 @@
- +
@@ -2220,8 +2220,8 @@ This is your own one-time link! Kontaktin asetukset No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups No comment provided by engineer. @@ -2386,6 +2386,14 @@ This is your own one-time link! Creating link… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Nykyinen pääsykoodi @@ -4236,6 +4244,10 @@ Error: %2$@ Ryhmäkutsu ei ole enää voimassa, lähettäjä poisti sen. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Ryhmälinkki @@ -8623,10 +8635,6 @@ alert subtitle Tämä asetus koskee nykyisen keskusteluprofiilisi viestejä *%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. No comment provided by engineer. @@ -9529,6 +9537,14 @@ Repeat join request? Voit nyt lähettää viestejä %@:lle notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. No comment provided by engineer. @@ -10996,7 +11012,7 @@ last received msg: %2$@
- +
@@ -11032,7 +11048,7 @@ last received msg: %2$@
- +
@@ -11047,7 +11063,7 @@ last received msg: %2$@
- +
@@ -11069,7 +11085,7 @@ last received msg: %2$@
- +
@@ -11096,7 +11112,7 @@ last received msg: %2$@
- +
@@ -11115,7 +11131,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/fi.xcloc/contents.json b/apps/ios/SimpleX Localizations/fi.xcloc/contents.json index f61becaece..c46a7251f5 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/fi.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "fi", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff index cf8eafaac6..ad7625d0f6 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -2,7 +2,7 @@
- +
@@ -2503,8 +2503,8 @@ Il s'agit de votre propre lien unique ! Préférences de contact No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups Demandes de contact des groupes No comment provided by engineer. @@ -2691,6 +2691,14 @@ Il s'agit de votre propre lien unique ! Création d'un lien… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Code d'accès actuel @@ -4733,6 +4741,10 @@ Erreur : %2$@ L'invitation du groupe n'est plus valide, elle a été supprimé par l'expéditeur. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Lien du groupe @@ -9609,10 +9621,6 @@ alert subtitle Ce paramètre s'applique aux messages de votre profil de chat actuel **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Le délai de disparition est défini seulement pour les nouveaux contacts. @@ -10608,6 +10616,14 @@ Répéter la demande d'adhésion ? Vous pouvez maintenant envoyer des messages à %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Vous pouvez envoyer des messages à %@ à partir des contacts archivés. @@ -12181,7 +12197,7 @@ dernier message reçu : %2$@
- +
@@ -12218,7 +12234,7 @@ dernier message reçu : %2$@
- +
@@ -12233,7 +12249,7 @@ dernier message reçu : %2$@
- +
@@ -12255,7 +12271,7 @@ dernier message reçu : %2$@
- +
@@ -12287,7 +12303,7 @@ dernier message reçu : %2$@
- +
@@ -12309,7 +12325,7 @@ dernier message reçu : %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/fr.xcloc/contents.json b/apps/ios/SimpleX Localizations/fr.xcloc/contents.json index f41d7b4888..8529eeed82 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/fr.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "fr", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff index b3facbe03e..51eb11f548 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -2,7 +2,7 @@
- +
@@ -2525,8 +2525,8 @@ Ez a saját egyszer használható meghívója! Partnerbeállítások No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups Partneri kapcsolatkérések a csoportokból No comment provided by engineer. @@ -2715,6 +2715,14 @@ Ez a saját egyszer használható meghívója! Hivatkozás létrehozása… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Jelenlegi jelkód @@ -4770,6 +4778,10 @@ Hiba: %2$@ A csoportmeghívó már nem érvényes, a küldője eltávolította. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Csoporthivatkozás @@ -9734,11 +9746,6 @@ alert subtitle Ez a beállítás csak az Ön jelenlegi **%@** nevű csevegési profiljában lévő üzenetekre vonatkozik. No comment provided by engineer. - - This setting is for your current profile **%@**. - Ez a beállítás csak a jelenlegi **%@** nevű csevegési profiljára vonatkozik. - No comment provided by engineer. - Time to disappear is set only for new contacts. Az üzeneteltűnési idő csak az új partnerekre vonatkozik. @@ -10769,6 +10776,14 @@ Megismétli a csatlakozási kérést? Mostantól küldhet üzeneteket %@ számára notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Az „Archivált partnerekből” továbbra is küldhet üzeneteket neki: %@. @@ -12374,7 +12389,7 @@ utoljára fogadott üzenet: %2$@
- +
@@ -12411,7 +12426,7 @@ utoljára fogadott üzenet: %2$@
- +
@@ -12426,7 +12441,7 @@ utoljára fogadott üzenet: %2$@
- +
@@ -12448,7 +12463,7 @@ utoljára fogadott üzenet: %2$@
- +
@@ -12480,7 +12495,7 @@ utoljára fogadott üzenet: %2$@
- +
@@ -12502,7 +12517,7 @@ utoljára fogadott üzenet: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/hu.xcloc/contents.json b/apps/ios/SimpleX Localizations/hu.xcloc/contents.json index 31997434c3..23d2f9c992 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/hu.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "hu", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff index 5381b8cbb5..bc7be9498a 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -2,7 +2,7 @@
- +
@@ -2525,8 +2525,8 @@ Questo è il tuo link una tantum! Preferenze del contatto No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups Richieste di contatto dai gruppi No comment provided by engineer. @@ -2715,6 +2715,14 @@ Questo è il tuo link una tantum! Creazione link… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Codice di accesso attuale @@ -4770,6 +4778,10 @@ Errore: %2$@ L'invito al gruppo non è più valido, è stato rimosso dal mittente. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Link del gruppo @@ -9734,11 +9746,6 @@ alert subtitle Questa impostazione si applica ai messaggi del profilo di chat attuale **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - Questa impostazione è per il tuo profilo attuale **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Il tempo di scomparsa è impostato solo per i contatti nuovi. @@ -10769,6 +10776,14 @@ Ripetere la richiesta di ingresso? Ora puoi inviare messaggi a %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Puoi inviare messaggi a %@ dai contatti archiviati. @@ -12374,7 +12389,7 @@ ultimo msg ricevuto: %2$@
- +
@@ -12411,7 +12426,7 @@ ultimo msg ricevuto: %2$@
- +
@@ -12426,7 +12441,7 @@ ultimo msg ricevuto: %2$@
- +
@@ -12448,7 +12463,7 @@ ultimo msg ricevuto: %2$@
- +
@@ -12480,7 +12495,7 @@ ultimo msg ricevuto: %2$@
- +
@@ -12502,7 +12517,7 @@ ultimo msg ricevuto: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/it.xcloc/contents.json b/apps/ios/SimpleX Localizations/it.xcloc/contents.json index 36fd18d76d..5862575e41 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/it.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "it", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff index c8b2285649..5f43fbade6 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -2,7 +2,7 @@
- +
@@ -2325,8 +2325,8 @@ This is your own one-time link! 連絡先の設定 No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups No comment provided by engineer. @@ -2491,6 +2491,14 @@ This is your own one-time link! Creating link… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode 現在のパスコード @@ -4353,6 +4361,10 @@ Error: %2$@ グループ招待が無効となり、送信元によって取り消されました。 No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link グループのリンク @@ -8736,10 +8748,6 @@ alert subtitle この設定は現在のチャットプロフィール **%@** のメッセージに適用されます。 No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. No comment provided by engineer. @@ -9643,6 +9651,14 @@ Repeat join request? %@ にメッセージを送信できるようになりました notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. No comment provided by engineer. @@ -11111,7 +11127,7 @@ last received msg: %2$@
- +
@@ -11147,7 +11163,7 @@ last received msg: %2$@
- +
@@ -11162,7 +11178,7 @@ last received msg: %2$@
- +
@@ -11184,7 +11200,7 @@ last received msg: %2$@
- +
@@ -11211,7 +11227,7 @@ last received msg: %2$@
- +
@@ -11230,7 +11246,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/ja.xcloc/contents.json b/apps/ios/SimpleX Localizations/ja.xcloc/contents.json index f52b6f4654..095625fb0f 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/ja.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "ja", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff index 11f81cf90b..7cbb9dbc6a 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -2,7 +2,7 @@
- +
@@ -2422,8 +2422,8 @@ Dit is uw eigen eenmalige link! Contact voorkeuren No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups No comment provided by engineer. @@ -2603,6 +2603,14 @@ Dit is uw eigen eenmalige link! Link maken… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Huidige toegangscode @@ -4605,6 +4613,10 @@ Fout: %2$@ Groep uitnodiging is niet meer geldig, deze is verwijderd door de afzender. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Groep link @@ -9353,10 +9365,6 @@ alert subtitle Deze instelling is van toepassing op berichten in je huidige chatprofiel **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. No comment provided by engineer. @@ -10349,6 +10357,14 @@ Deelnameverzoek herhalen? Je kunt nu berichten sturen naar %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. U kunt berichten naar %@ sturen vanuit gearchiveerde contacten. @@ -11903,7 +11919,7 @@ laatst ontvangen bericht: %2$@
- +
@@ -11940,7 +11956,7 @@ laatst ontvangen bericht: %2$@
- +
@@ -11955,7 +11971,7 @@ laatst ontvangen bericht: %2$@
- +
@@ -11977,7 +11993,7 @@ laatst ontvangen bericht: %2$@
- +
@@ -12009,7 +12025,7 @@ laatst ontvangen bericht: %2$@
- +
@@ -12031,7 +12047,7 @@ laatst ontvangen bericht: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/nl.xcloc/contents.json b/apps/ios/SimpleX Localizations/nl.xcloc/contents.json index 36c6d27526..d2b453a7c5 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/nl.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "nl", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff index 19401459d5..e483c8686c 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -2,7 +2,7 @@
- +
@@ -2439,8 +2439,8 @@ To jest twój jednorazowy link! Preferencje kontaktu No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups Prośby o kontakt od grup No comment provided by engineer. @@ -2622,6 +2622,14 @@ To jest twój jednorazowy link! Tworzenie linku… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Aktualny Pin @@ -4641,6 +4649,10 @@ Błąd: %2$@ Zaproszenie do grupy jest już nieważne, zostało usunięte przez nadawcę. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Link do grupy @@ -9449,11 +9461,6 @@ alert subtitle To ustawienie dotyczy wiadomości Twojego bieżącego profilu czatu **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - To ustawienie jest dla Twojego obecnego profilu **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Czas zniknięcia jest ustawiony tylko dla nowych kontaktów. @@ -10461,6 +10468,14 @@ Powtórzyć prośbę dołączenia? Możesz teraz wysyłać wiadomości do %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Możesz wysyłać wiadomości do %@ ze zarchiwizowanych kontaktów. @@ -12029,7 +12044,7 @@ ostatnia otrzymana wiadomość: %2$@
- +
@@ -12066,7 +12081,7 @@ ostatnia otrzymana wiadomość: %2$@
- +
@@ -12081,7 +12096,7 @@ ostatnia otrzymana wiadomość: %2$@
- +
@@ -12103,7 +12118,7 @@ ostatnia otrzymana wiadomość: %2$@
- +
@@ -12135,7 +12150,7 @@ ostatnia otrzymana wiadomość: %2$@
- +
@@ -12157,7 +12172,7 @@ ostatnia otrzymana wiadomość: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/pl.xcloc/contents.json b/apps/ios/SimpleX Localizations/pl.xcloc/contents.json index 2f5237052c..bf3e16596b 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/pl.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "pl", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff index 7254d80c9c..1942b9c0aa 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -2,7 +2,7 @@
- +
@@ -2525,8 +2525,8 @@ This is your own one-time link! Предпочтения контакта No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups Запросы на соединение из групп No comment provided by engineer. @@ -2715,6 +2715,14 @@ This is your own one-time link! Создаётся ссылка… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Текущий Код @@ -4770,6 +4778,10 @@ Error: %2$@ Приглашение в группу больше не действительно, оно было удалено отправителем. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Ссылка группы @@ -9733,11 +9745,6 @@ alert subtitle Эта настройка применяется к сообщениям в Вашем текущем профиле чата **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - Эта настройка применяется к Вашему текущему профилю чата **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Время удаления устанавливается только для новых контактов. @@ -10768,6 +10775,14 @@ Repeat join request? Вы теперь можете общаться с %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Вы можете отправлять сообщения %@ из Архивированных контактов. @@ -12373,7 +12388,7 @@ last received msg: %2$@
- +
@@ -12410,7 +12425,7 @@ last received msg: %2$@
- +
@@ -12425,7 +12440,7 @@ last received msg: %2$@
- +
@@ -12447,7 +12462,7 @@ last received msg: %2$@
- +
@@ -12479,7 +12494,7 @@ last received msg: %2$@
- +
@@ -12501,7 +12516,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/ru.xcloc/contents.json b/apps/ios/SimpleX Localizations/ru.xcloc/contents.json index 9907ddc7fc..996db14639 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/ru.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "ru", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff index 20dec9b68d..28332012c4 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -2,7 +2,7 @@
- +
@@ -2211,8 +2211,8 @@ This is your own one-time link! การกําหนดลักษณะการติดต่อ No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups No comment provided by engineer. @@ -2375,6 +2375,14 @@ This is your own one-time link! Creating link… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode รหัสผ่านปัจจุบัน @@ -4221,6 +4229,10 @@ Error: %2$@ คำเชิญเข้าร่วมกลุ่มใช้ไม่ถูกต้องอีกต่อไป คำเชิญถูกลบโดยผู้ส่ง No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link ลิงค์กลุ่ม @@ -8593,10 +8605,6 @@ alert subtitle การตั้งค่านี้ใช้กับข้อความในโปรไฟล์แชทปัจจุบันของคุณ **%@** No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. No comment provided by engineer. @@ -9497,6 +9505,14 @@ Repeat join request? ตอนนี้คุณสามารถส่งข้อความถึง %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. No comment provided by engineer. @@ -10961,7 +10977,7 @@ last received msg: %2$@
- +
@@ -10997,7 +11013,7 @@ last received msg: %2$@
- +
@@ -11012,7 +11028,7 @@ last received msg: %2$@
- +
@@ -11034,7 +11050,7 @@ last received msg: %2$@
- +
@@ -11061,7 +11077,7 @@ last received msg: %2$@
- +
@@ -11080,7 +11096,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/th.xcloc/contents.json b/apps/ios/SimpleX Localizations/th.xcloc/contents.json index a18ced87af..f01660f74f 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/th.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "th", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff index 00385e5312..62df79c62b 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -2,7 +2,7 @@
- +
@@ -2450,8 +2450,8 @@ Bu senin kendi tek kullanımlık bağlantın! Kişi tercihleri No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups Gruplardan gelen iletişim talepleri No comment provided by engineer. @@ -2633,6 +2633,14 @@ Bu senin kendi tek kullanımlık bağlantın! Link oluşturuluyor… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Şu anki şifre @@ -4644,6 +4652,10 @@ Hata: %2$@ Grup davet artık geçerli değil, gönderici tarafından silindi. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Grup bağlantısı @@ -9436,11 +9448,6 @@ alert subtitle Bu ayar, geçerli sohbet profiliniz **%@** deki mesajlara uygulanır. No comment provided by engineer. - - This setting is for your current profile **%@**. - Bu ayar, mevcut profiliniz içindir. - No comment provided by engineer. - Time to disappear is set only for new contacts. Kaybolma süresi yalnızca yeni kişiler için ayarlanır. @@ -10444,6 +10451,14 @@ Katılma isteği tekrarlansın mı? Artık %@ adresine mesaj gönderebilirsin notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Arşivlenen kişilerden %@'ya mesaj gönderebilirsiniz. @@ -12008,7 +12023,7 @@ son alınan msj: %2$@
- +
@@ -12045,7 +12060,7 @@ son alınan msj: %2$@
- +
@@ -12060,7 +12075,7 @@ son alınan msj: %2$@
- +
@@ -12082,7 +12097,7 @@ son alınan msj: %2$@
- +
@@ -12114,7 +12129,7 @@ son alınan msj: %2$@
- +
@@ -12136,7 +12151,7 @@ son alınan msj: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/tr.xcloc/contents.json b/apps/ios/SimpleX Localizations/tr.xcloc/contents.json index 1aa8013358..1e9b3cdc53 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/tr.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "tr", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff index fe69dea6ab..f917609da7 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -2,7 +2,7 @@
- +
@@ -2472,8 +2472,8 @@ This is your own one-time link! Налаштування контактів No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups No comment provided by engineer. @@ -2654,6 +2654,14 @@ This is your own one-time link! Створення посилання… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode Поточний пароль @@ -4662,6 +4670,10 @@ Error: %2$@ Групове запрошення більше не дійсне, воно було видалено відправником. No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link Посилання на групу @@ -9445,10 +9457,6 @@ alert subtitle Це налаштування застосовується до повідомлень у вашому поточному профілі чату **%@**. No comment provided by engineer. - - This setting is for your current profile **%@**. - No comment provided by engineer. - Time to disappear is set only for new contacts. Час зникнення встановлюється тільки для нових контактів. @@ -10451,6 +10459,14 @@ Repeat join request? Тепер ви можете надсилати повідомлення на адресу %@ notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. Ви можете надсилати повідомлення на %@ з архівних контактів. @@ -12014,7 +12030,7 @@ last received msg: %2$@
- +
@@ -12051,7 +12067,7 @@ last received msg: %2$@
- +
@@ -12066,7 +12082,7 @@ last received msg: %2$@
- +
@@ -12088,7 +12104,7 @@ last received msg: %2$@
- +
@@ -12120,7 +12136,7 @@ last received msg: %2$@
- +
@@ -12142,7 +12158,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/uk.xcloc/contents.json b/apps/ios/SimpleX Localizations/uk.xcloc/contents.json index c6053c573c..507dcc4ad1 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/uk.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "uk", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff index 1f6067fe53..67b08d7343 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/Localized Contents/zh-Hans.xliff @@ -2,7 +2,7 @@
- +
@@ -2521,8 +2521,8 @@ This is your own one-time link! 联系人偏好设置 No comment provided by engineer. - - Contact requests from groups + + Contact requests in groups 来自群的联络请求 No comment provided by engineer. @@ -2710,6 +2710,14 @@ This is your own one-time link! 创建链接中… No comment provided by engineer. + + Crowdfunding on Wefunder + No comment provided by engineer. + + + Crowdfunding on Wefunder. + No comment provided by engineer. + Current Passcode 当前密码 @@ -4755,6 +4763,10 @@ Error: %2$@ 群组邀请不再有效,已被发件人删除。 No comment provided by engineer. + + Group invitations + No comment provided by engineer. + Group link 群组链接 @@ -9695,11 +9707,6 @@ alert subtitle 此设置适用于您当前聊天资料 **%@** 中的消息。 No comment provided by engineer. - - This setting is for your current profile **%@**. - 此设置用于当前个人资料 **%@**。 - No comment provided by engineer. - Time to disappear is set only for new contacts. 只为新联系人设置了消失时间。 @@ -10725,6 +10732,14 @@ Repeat join request? 您现在可以给 %@ 发送消息 notification body + + You can now invest in SimpleX Chat + No comment provided by engineer. + + + You can now invest in SimpleX Chat! 🚀 + No comment provided by engineer. + You can send messages to %@ from Archived contacts. 您可以从存档的联系人向%@发送消息。 @@ -12327,7 +12342,7 @@ last received msg: %2$@
- +
@@ -12364,7 +12379,7 @@ last received msg: %2$@
- +
@@ -12379,7 +12394,7 @@ last received msg: %2$@
- +
@@ -12401,7 +12416,7 @@ last received msg: %2$@
- +
@@ -12433,7 +12448,7 @@ last received msg: %2$@
- +
@@ -12455,7 +12470,7 @@ last received msg: %2$@
- +
diff --git a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/contents.json b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/contents.json index f8b8f54d3a..f2a57b2dd9 100644 --- a/apps/ios/SimpleX Localizations/zh-Hans.xcloc/contents.json +++ b/apps/ios/SimpleX Localizations/zh-Hans.xcloc/contents.json @@ -3,10 +3,10 @@ "project" : "SimpleX.xcodeproj", "targetLocale" : "zh-Hans", "toolInfo" : { - "toolBuildNumber" : "17F113", + "toolBuildNumber" : "17F42", "toolID" : "com.apple.dt.xcode", "toolName" : "Xcode", - "toolVersion" : "26.6" + "toolVersion" : "26.5" }, "version" : "1.0" } \ No newline at end of file diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index ddc9454b86..7f9f1a4fcc 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -42,6 +42,7 @@ public struct User: Identifiable, Decodable, UserLike, NamedChat, Hashable { public var sendRcptsContacts: Bool public var sendRcptsSmallGroups: Bool public var autoAcceptMemberContacts: Bool + public var autoAcceptGroupInvitations: Bool public var viewPwdHash: UserPwdHash? public var uiThemes: ThemeModeOverrides? public var userChatRelay: Bool @@ -71,6 +72,7 @@ public struct User: Identifiable, Decodable, UserLike, NamedChat, Hashable { sendRcptsContacts: true, sendRcptsSmallGroups: false, autoAcceptMemberContacts: false, + autoAcceptGroupInvitations: false, userChatRelay: false ) } diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 41f64e5400..91ee6f3388 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -1692,7 +1692,7 @@ server test step */ "Contact preferences" = "Kontakt-Präferenzen"; /* No comment provided by engineer. */ -"Contact requests from groups" = "KONTAKTANFRAGEN VON GRUPPEN"; +"Contact requests in groups" = "KONTAKTANFRAGEN VON GRUPPEN"; /* No comment provided by engineer. */ "contact should accept…" = "Kontakt sollte annehmen…"; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index a6d4e9d20c..46e86419b2 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -1692,7 +1692,7 @@ server test step */ "Contact preferences" = "Preferencias de contacto"; /* No comment provided by engineer. */ -"Contact requests from groups" = "Solicitudes de contacto en grupo"; +"Contact requests in groups" = "Solicitudes de contacto en grupo"; /* No comment provided by engineer. */ "contact should accept…" = "el contacto debe aceptarte…"; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index 0952cacb90..5bfc7dca1d 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -1612,7 +1612,7 @@ server test step */ "Contact preferences" = "Préférences de contact"; /* No comment provided by engineer. */ -"Contact requests from groups" = "Demandes de contact des groupes"; +"Contact requests in groups" = "Demandes de contact des groupes"; /* No comment provided by engineer. */ "Contact will be deleted - this cannot be undone!" = "Le contact sera supprimé - il n'est pas possible de revenir en arrière !"; diff --git a/apps/ios/hu.lproj/Localizable.strings b/apps/ios/hu.lproj/Localizable.strings index 330688163e..ea687106b4 100644 --- a/apps/ios/hu.lproj/Localizable.strings +++ b/apps/ios/hu.lproj/Localizable.strings @@ -1692,7 +1692,7 @@ server test step */ "Contact preferences" = "Partnerbeállítások"; /* No comment provided by engineer. */ -"Contact requests from groups" = "Partneri kapcsolatkérések a csoportokból"; +"Contact requests in groups" = "Partneri kapcsolatkérések a csoportokból"; /* No comment provided by engineer. */ "contact should accept…" = "a partnernek el kell fogadnia…"; diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index 3544dc1813..5871fb7615 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -1692,7 +1692,7 @@ server test step */ "Contact preferences" = "Preferenze del contatto"; /* No comment provided by engineer. */ -"Contact requests from groups" = "Richieste di contatto dai gruppi"; +"Contact requests in groups" = "Richieste di contatto dai gruppi"; /* No comment provided by engineer. */ "contact should accept…" = "il contatto deve accettare…"; diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index 07c407416a..c7aa746e53 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -1416,7 +1416,7 @@ server test step */ "Contact preferences" = "Preferencje kontaktu"; /* No comment provided by engineer. */ -"Contact requests from groups" = "Prośby o kontakt od grup"; +"Contact requests in groups" = "Prośby o kontakt od grup"; /* No comment provided by engineer. */ "contact should accept…" = "kontakt powinien zaakceptować…"; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index ce7e446211..79c28bdfb6 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -1692,7 +1692,7 @@ server test step */ "Contact preferences" = "Предпочтения контакта"; /* No comment provided by engineer. */ -"Contact requests from groups" = "Запросы на соединение из групп"; +"Contact requests in groups" = "Запросы на соединение из групп"; /* No comment provided by engineer. */ "contact should accept…" = "контакт должен принять…"; diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index b0dd32c383..d2e87a9fb5 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -1454,7 +1454,7 @@ server test step */ "Contact preferences" = "Kişi tercihleri"; /* No comment provided by engineer. */ -"Contact requests from groups" = "Gruplardan gelen iletişim talepleri"; +"Contact requests in groups" = "Gruplardan gelen iletişim talepleri"; /* No comment provided by engineer. */ "contact should accept…" = "kişi kabul etmeli…"; diff --git a/apps/ios/zh-Hans.lproj/Localizable.strings b/apps/ios/zh-Hans.lproj/Localizable.strings index e5d35b7426..e8a06c7d00 100644 --- a/apps/ios/zh-Hans.lproj/Localizable.strings +++ b/apps/ios/zh-Hans.lproj/Localizable.strings @@ -1680,7 +1680,7 @@ server test step */ "Contact preferences" = "联系人偏好设置"; /* No comment provided by engineer. */ -"Contact requests from groups" = "来自群的联络请求"; +"Contact requests in groups" = "来自群的联络请求"; /* No comment provided by engineer. */ "contact should accept…" = "联系人应当接受…"; diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt index 340ba2c1ad..11da8b874e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/ChatModel.kt @@ -1293,6 +1293,7 @@ data class User( val sendRcptsContacts: Boolean, val sendRcptsSmallGroups: Boolean, val autoAcceptMemberContacts: Boolean, + val autoAcceptGroupInvitations: Boolean, val viewPwdHash: UserPwdHash?, val uiThemes: ThemeModeOverrides? = null, val userChatRelay: Boolean, @@ -1325,6 +1326,7 @@ data class User( sendRcptsContacts = true, sendRcptsSmallGroups = false, autoAcceptMemberContacts = false, + autoAcceptGroupInvitations = false, viewPwdHash = null, uiThemes = null, userChatRelay = false, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt index 037c02b1c2..c351ee3281 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt @@ -941,6 +941,12 @@ object ChatController { throw Exception("failed to set auto-accept ${r.responseType} ${r.details}") } + suspend fun apiSetUserAutoAcceptGroupInvitations(u: User, enable: Boolean) { + val r = sendCmd(u.remoteHostId, CC.ApiSetUserAutoAcceptGroupInvitations(u.userId, enable)) + if (r.result is CR.CmdOk) return + throw Exception("failed to set auto-accept group invitations ${r.responseType} ${r.details}") + } + suspend fun apiHideUser(u: User, viewPwd: String): User = setUserPrivacy(u.remoteHostId, CC.ApiHideUser(u.userId, viewPwd)) @@ -3775,6 +3781,7 @@ sealed class CC { class ApiSetUserContactReceipts(val userId: Long, val userMsgReceiptSettings: UserMsgReceiptSettings): CC() class ApiSetUserGroupReceipts(val userId: Long, val userMsgReceiptSettings: UserMsgReceiptSettings): CC() class ApiSetUserAutoAcceptMemberContacts(val userId: Long, val enable: Boolean): CC() + class ApiSetUserAutoAcceptGroupInvitations(val userId: Long, val enable: Boolean): CC() class ApiHideUser(val userId: Long, val viewPwd: String): CC() class ApiUnhideUser(val userId: Long, val viewPwd: String): CC() class ApiMuteUser(val userId: Long): CC() @@ -3965,6 +3972,7 @@ sealed class CC { "/_set receipts groups $userId ${onOff(mrs.enable)} clear_overrides=${onOff(mrs.clearOverrides)}" } is ApiSetUserAutoAcceptMemberContacts -> "/_set accept member contacts $userId ${onOff(enable)}" + is ApiSetUserAutoAcceptGroupInvitations -> "/_set accept group invitations $userId ${onOff(enable)}" is ApiHideUser -> "/_hide user $userId ${json.encodeToString(viewPwd)}" is ApiUnhideUser -> "/_unhide user $userId ${json.encodeToString(viewPwd)}" is ApiMuteUser -> "/_mute user $userId" @@ -4176,6 +4184,7 @@ sealed class CC { is ApiSetUserContactReceipts -> "apiSetUserContactReceipts" is ApiSetUserGroupReceipts -> "apiSetUserGroupReceipts" is ApiSetUserAutoAcceptMemberContacts -> "apiSetUserAutoAcceptMemberContacts" + is ApiSetUserAutoAcceptGroupInvitations -> "apiSetUserAutoAcceptGroupInvitations" is ApiHideUser -> "apiHideUser" is ApiUnhideUser -> "apiUnhideUser" is ApiMuteUser -> "apiMuteUser" diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/PrivacySettings.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/PrivacySettings.kt index 59136e90d2..314537f579 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/PrivacySettings.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/PrivacySettings.kt @@ -87,13 +87,19 @@ fun PrivacySettingsView( val currentUser = chatModel.currentUser.value if (currentUser != null && !chatModel.desktopNoUserNoRemote) { SectionDividerSpaced() - ContacRequestsFromGroupsSection( + AutoAcceptSection( currentUser = currentUser, - setAutoAcceptGrpDirectInvs = { enable -> + setAutoAcceptMemberContacts = { enable -> withApi { chatModel.controller.apiSetUserAutoAcceptMemberContacts(currentUser, enable) chatModel.currentUser.value = currentUser.copy(autoAcceptMemberContacts = enable) } + }, + setAutoAcceptGroupInvitations = { enable -> + withApi { + chatModel.controller.apiSetUserAutoAcceptGroupInvitations(currentUser, enable) + chatModel.currentUser.value = currentUser.copy(autoAcceptGroupInvitations = enable) + } } ) } @@ -333,16 +339,26 @@ expect fun PrivacyDeviceSection( ) @Composable -private fun ContacRequestsFromGroupsSection( +private fun AutoAcceptSection( currentUser: User, - setAutoAcceptGrpDirectInvs: (Boolean) -> Unit + setAutoAcceptMemberContacts: (Boolean) -> Unit, + setAutoAcceptGroupInvitations: (Boolean) -> Unit ) { - SectionView(stringResource(MR.strings.settings_section_title_contact_requests_from_groups)) { - SettingsActionItemWithContent(painterResource(MR.images.ic_check), stringResource(MR.strings.auto_accept_contact)) { + // legacy string key names, reused for their values so this section stays translated + SectionView(stringResource(MR.strings.auto_accept_contact)) { + SettingsActionItemWithContent(painterResource(MR.images.ic_person), stringResource(MR.strings.settings_section_title_contact_requests_from_groups)) { DefaultSwitch( checked = currentUser.autoAcceptMemberContacts, onCheckedChange = { enable -> - setAutoAcceptGrpDirectInvs(enable) + setAutoAcceptMemberContacts(enable) + } + ) + } + SettingsActionItemWithContent(painterResource(MR.images.ic_group), stringResource(MR.strings.group_invitations)) { + DefaultSwitch( + checked = currentUser.autoAcceptGroupInvitations, + onCheckedChange = { enable -> + setAutoAcceptGroupInvitations(enable) } ) } @@ -350,7 +366,7 @@ private fun ContacRequestsFromGroupsSection( SectionTextFooter( remember(currentUser.displayName) { buildAnnotatedString { - append(generalGetString(MR.strings.this_setting_is_for_your_current_profile) + " ") + append(generalGetString(MR.strings.these_settings_are_for_your_current_profile) + " ") withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { append(currentUser.displayName) } @@ -387,7 +403,7 @@ private fun DeliveryReceiptsSection( SectionTextFooter( remember(currentUser.displayName) { buildAnnotatedString { - append(generalGetString(MR.strings.receipts_section_description) + " ") + append(generalGetString(MR.strings.these_settings_are_for_your_current_profile) + " ") withStyle(SpanStyle(fontWeight = FontWeight.Bold)) { append(currentUser.displayName) } diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml index 9d9ea0cadd..af10952449 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml @@ -1106,7 +1106,7 @@ انقر لتنشيط ملف التعريف. عزل النقل هذه السلسلة ليست رابط اتصال! - هذه الإعدادات لملف تعريفك الحالي + هذه الإعدادات لملف تعريفك الحالي يمكن تجاوزها في إعدادات الاتصال والمجموعة. انتهت مهلة اتصال TCP لحماية المنطقة الزمنية، تستخدم ملفات الصور / الصوت التوقيت العالمي المنسق (UTC). diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml index 739467b3ff..d7e9fc936e 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1206,6 +1206,7 @@ Stop sharing address? Stop sharing Auto-accept + Group invitations Sent to your contact after connection. Welcome message Enter welcome message… (optional) @@ -1557,7 +1558,7 @@ If you enter this passcode when opening the app, all app data will be irreversibly removed! Set passcode This setting is for your current profile - These settings are for your current profile + These settings are for your current profile They can be overridden in contact and group settings. Contacts Enable receipts? @@ -1602,7 +1603,7 @@ Chats Files Send delivery receipts to - Contact requests from groups + Contact requests in groups About Contact Support the project diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml index 9676bc0199..83e10a81c3 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml @@ -481,7 +481,7 @@ Въведи правилна парола. активирано за вас Въведи парола в търсенето - Тези настройки са за текущия ви профил + Тези настройки са за текущия ви профил Те могат да бъдат променени в настройките за всеки контакт и група. Инструменти за разработчици Деактивиране за всички diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml index ce38afb836..1ab559c09c 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ca/strings.xml @@ -1946,7 +1946,7 @@ Si introduïu aquesta contrasenya en obrir l\'aplicació, totes les dades de l\'aplicació s\'eliminaran de manera irreversible. Si introduïu el vostre codi d\'autodestrucció mentre obriu l\'aplicació: Estableix codi - Aquesta configuració és per al vostre perfil actual + Aquesta configuració és per al vostre perfil actual Es pot canviar a la configuració de contacte i grup. No Configuració diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml index 5160d28feb..0fca3db40e 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/cs/strings.xml @@ -1246,7 +1246,7 @@ vyžadováno opětovné vyjednávání šifrování pro %s Odesílání potvrzení o doručení je vypnuto pro %d kontakty. Odesílání potvrzení o doručení bude povoleno pro všechny kontakty ve všech viditelných profilech chatu. - Toto nastavení je pro váš aktuální profil + Toto nastavení je pro váš aktuální profil opětovné vyjednávání šifrování povoleno opětovné vyjednávání šifrování povoleno pro %s vyžadováno opětovné vyjednávání šifrování diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml index 9774107fcf..b3490abc26 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -1364,7 +1364,7 @@ Nach ungelesenen und favorisierten Chats filtern. Das Senden von Empfangsbestätigungen an alle Kontakte in allen sichtbaren Chat-Profilen wird aktiviert. Das Senden von Bestätigungen an %d Kontakte ist deaktiviert - Diese Einstellungen gelten für Ihr aktuelles Chat-Profil + Diese Einstellungen gelten für Ihr aktuelles Chat-Profil Sie können in den Kontakt- und Gruppeneinstellungen überschrieben werden. Kontakte Bestätigungen deaktivieren\? diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml index 390913c5f7..d9feb33f1a 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/el/strings.xml @@ -1350,7 +1350,7 @@ Ο αποστολέας ΔΕΝ θα ειδοποιηθεί. Οι διακομιστές για τις νέες συνδέσεις του τρέχοντος προφίλ συνομιλίας σου Οι διακομιστές για τα νέα αρχεία του τρέχοντος προφίλ συνομιλίας σου - Αυτές οι ρυθμίσεις ισχύουν για το τρέχον προφίλ σου + Αυτές οι ρυθμίσεις ισχύουν για το τρέχον προφίλ σου Το κείμενο που επικόλλησες δεν είναι σύνδεσμος SimpleX. Το αρχείο της βάσης δεδομένων που μεταφορτώθηκε, θα διαγραφεί οριστικά από τους διακομιστές. Το βίντεο δεν μπορεί να αποκωδικοποιηθεί. Δοκίμασε ένα άλλο βίντεο ή επικοινώνησε με τους προγραμματιστές. diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml index 4e3ce8e810..a8cf66f595 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml @@ -1283,7 +1283,7 @@ El envío de confirmaciones está desactivado para %d contactos El envío de confirmaciones está activado para %d contactos Enviar confirmaciones - Esta configuración afecta a tu perfil actual + Esta configuración afecta a tu perfil actual Activar ¿Desactivar confirmaciones\? ¿Activar confirmaciones\? diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml index 263b36d404..6e119a456a 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml @@ -756,7 +756,7 @@ نام نمایشی جدید: اگر کد عبور خودتخریبی خود را زمان باز کردن برنامه وارد کنید: تمام اطلاعات برنامه حذف می‌شود. - این تنظیمات برای پروفایل فعلی شما هستند + این تنظیمات برای پروفایل فعلی شما هستند ارسال رسید برای %d مخاطب فعال است غیرفعال برای همه فعال برای همه گروه‌ها diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml index f3c7a95ef4..7ae3f506a2 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fi/strings.xml @@ -1272,7 +1272,7 @@ Uudelleenneuvottele Uudelleenneuvottele salaus\? Salaus toimii ja uutta salaussopimusta ei tarvita. Tämä voi johtaa yhteysvirheisiin! - Nämä asetukset koskevat nykyistä profiiliasi + Nämä asetukset koskevat nykyistä profiiliasi Ne voidaan ohittaa kontakti- ja ryhmäasetuksissa. salaus ok salauksen uudelleenneuvottelu sallittu diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml index 845fe28404..77843d63ae 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml @@ -1280,7 +1280,7 @@ code de sécurité modifié L\'envoi d\'accusés de réception sera activé pour tous les contacts dans tous les profils de chat visibles. Ils peuvent être modifiés dans les paramètres des contacts et des groupes. - Ces paramètres s\'appliquent à votre profil actuel + Ces paramètres s\'appliquent à votre profil actuel Vous pouvez les activer ultérieurement via les paramètres de Confidentialité et Sécurité de l\'application. Activer les accusés de réception \? Désactiver les accusés de réception \? diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml index f9e627b21a..886da8993b 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml @@ -1475,7 +1475,7 @@ A jelmondat a beállításokban egyszerű szövegként van tárolva. Konzol megjelenítése új ablakban Az előző üzenet kivonata különbözik. - Ezek a beállítások csak a jelenlegi csevegési profiljára vonatkoznak + Ezek a beállítások csak a jelenlegi csevegési profiljára vonatkoznak Várjon, amíg a fájl betöltődik a társított hordozható eszközről GitHub-tárolónkban talál.]]> Hiba történt a tartalom megjelenítésekor diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml index bd3f6e2b22..783b1a94c6 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/in/strings.xml @@ -1206,7 +1206,7 @@ Aktifkan tanda terima untuk grup? Profil obrolan kosong dengan nama yang disediakan dibuat, dan aplikasi terbuka seperti biasa. Jika Anda memasukkan kode sandi saat membuka aplikasi, semua data aplikasi akan dihapus secara permanen! - Pengaturan ini untuk profil Anda saat ini + Pengaturan ini untuk profil Anda saat ini Kirim tanda terima diaktifkan untuk %d kontak Kirim tanda terima dimatikan untuk %d kontak Gagal memuat server XFTP diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml index 9fad882019..01f4d5c3c2 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml @@ -1290,7 +1290,7 @@ L\'invio delle ricevute di consegna sarà attivo per tutti i contatti in tutti i profili di chat visibili. L\'invio di ricevute è disattivato per %d contatti La crittografia funziona e il nuovo accordo sulla crittografia non è richiesto. Potrebbero verificarsi errori di connessione! - Queste impostazioni sono per il tuo profilo attuale + Queste impostazioni sono per il tuo profilo attuale Possono essere sovrascritte nelle impostazioni dei contatti e dei gruppi. Attiva per tutti Attiva (mantieni sostituzioni) diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml index 430acfa6c1..ea9e504e98 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/iw/strings.xml @@ -1291,7 +1291,7 @@ \n- קבוצות קצת יותר טובות. \n- ועוד! שליחת קבלות שליחה תתאפשר עבור כל אנשי הקשר בכל פרופילי הצ\'אט הגלויים. - הגדרות אלו מיועדות לפרופיל הנוכחי שלך + הגדרות אלו מיועדות לפרופיל הנוכחי שלך ניתן לעקוף אותם בהגדרות אנשי קשר וקבוצות. שליחת קבלות מושבתת עבור %d אנשי קשר שליחת קבלות מאופשרת עבור %d אנשי קשר diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml index e61e4e4372..af501f9b20 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml @@ -1278,7 +1278,7 @@ グループメンバーによる修正はサポートされていません 連絡先 これらは連絡先とグループの設定が優先されます。 - これらの設定は現在のプロファイル用です + これらの設定は現在のプロファイル用です 配信通知を有効? %s : %s 接続を修正 diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml index aceb11ecf8..87a0afa005 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml @@ -1198,7 +1198,7 @@ %1$s
!]]> Kad prisijungti su nuoroda Ši nuoroda nėra tinkama prisijungimo nuoroda! - Šie nustatymai yra jūsų dabartiniam profiliui + Šie nustatymai yra jūsų dabartiniam profiliui Slaptafrazė saugoma nustatymuose kaip paprastas tekstas. Bakstelėkite, kad prisijungti kaip inkognito Ši grupė turi daugiau nei %1$d narių, pristatymo kvitai nėra siunčiami. diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml index c5473aeea4..26b4c51aa3 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lv/strings.xml @@ -1607,7 +1607,7 @@ Ievada tīkla operatori turpināt Ienākošais video zvans Ienākošais audio zvans - Čeki + Čeki Čeku apraksts 1 Čeku kontakti Čeku kontakti iespējot diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml index 307ffc78fa..d162b8a44d 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1278,7 +1278,7 @@ Ontvangst bevestiging uitschakelen\? Ontvangst bevestiging inschakelen\? Het verzenden van ontvangst bevestiging is ingeschakeld voor %d-contactpersonen - Deze instellingen gelden voor uw huidige profiel + Deze instellingen gelden voor uw huidige profiel Uitschakelen (overschrijvingen behouden) Inschakelen voor iedereen Inschakelen (overschrijvingen behouden) diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml index 0cf195510b..a25728ccaf 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml @@ -1287,7 +1287,7 @@ Renegocjować szyfrowanie\? Wysyłanie potwierdzeń jest włączone dla %d kontaktów Szyfrowanie działa, a nowe uzgodnienie szyfrowania nie jest wymagane. Może to spowodować błędy w połączeniu! - Te ustawienia dotyczą Twojego bieżącego profilu + Te ustawienia dotyczą Twojego bieżącego profilu Można je nadpisać w ustawieniach kontaktu i grupy. szyfrowanie ok renegocjacja szyfrowania dozwolona diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml index cbf69db5d4..41e08643ff 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/pt-rBR/strings.xml @@ -1520,7 +1520,7 @@ bloqueado O código que você escaneou não é um QR code SimpleX. O navegador padrão é necessário para chamadas. Configure o navegador padrão no sistema e compartilhe mais informações com os desenvolvedores. - Essas configurações são para o seu perfil atual + Essas configurações são para o seu perfil atual O vídeo não pode ser decodificado. Por favor, tente com um vídeo diferente ou contate os desenvolvedores. Este é o seu próprio link de uso único! Tempo limite atingido durante a conexão com o desktop diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml index ae0a98b44e..f691857fd3 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml @@ -1999,7 +1999,7 @@ Pentru a efectua apeluri, permiteți utilizarea microfonului. Încheiați apelul și încercați să sunați din nou. Când sunt activați mai mulți operatori, niciunul dintre ei nu are metadate pentru a afla cine comunică cu cine. Video pornit - Aceste setări sunt pentru profilul tău actual + Aceste setări sunt pentru profilul tău actual Da Coada Utilizare de pe desktop diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml index dae2a494dc..bd4d3c39ff 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml @@ -1329,7 +1329,7 @@ Отправка отчётов о доставке включена для %d контактов Отправка отчётов о доставке будет включена для всех контактов во всех видимых профилях чата. Установка для Вашего активного профиля - Установки для Вашего активного профиля + Установки для Вашего активного профиля Отправка отчётов о доставке выключена для %d контактов Шифрование работает, и новое соглашение не требуется. Это может привести к ошибкам соединения! Вторая галочка - знать, что доставлено! ✅ diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml index c7313e76a3..ddc258490f 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/th/strings.xml @@ -1280,7 +1280,7 @@ เร็วๆ นี้! อนุญาตให้มีการเจรจา encryption อีกครั้งสําหรับ %s %s: %s - การตั้งค่าเหล่านี้ใช้สำหรับโปรไฟล์ปัจจุบันของคุณ + การตั้งค่าเหล่านี้ใช้สำหรับโปรไฟล์ปัจจุบันของคุณ สามารถลบล้างได้ในการตั้งค่าผู้ติดต่อและกลุ่ม ปิดใช้งาน (เก็บการแทนที่) เปิดใช้งาน (เก็บการแทนที่) diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml index a1ead8c55e..2fff0e4082 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml @@ -1204,7 +1204,7 @@ SimpleX Kilit aktif değil! SimpleX Kilit Doğrudan bağlanılsın mı? - Bu ayarlar mevcut profiliniz içindir + Bu ayarlar mevcut profiliniz içindir Sunucu testi başarısız! Bağlantıyı onayla Yeni sohbet başlat diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml index 9a59fec674..439be068fa 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/uk/strings.xml @@ -1271,7 +1271,7 @@ Скасувати Виберіть файл Контакти - Ці налаштування стосуються вашого поточного профілю + Ці налаштування стосуються вашого поточного профілю Вимкнути повідомлення про доставку? Увімкнути повідомлення про доставку? можлива перезапис шифрування diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml index c285722200..5d97b21a1f 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml @@ -1972,7 +1972,7 @@ Văn bản bạn vừa dán không phải là một đường dẫn SimpleX. Chức vụ sẽ được đổi thành %s. Thành viên sẽ nhận được một lời mời mới. Mật khẩu sẽ được lưu trữ trong cài đặt dưới dạng thuần văn bản sau khi bản đổi nó hoặc khởi động lại ứng dụng. - Các cài đặt này là cho hồ sơ trò chuyện hiện tại của bạn + Các cài đặt này là cho hồ sơ trò chuyện hiện tại của bạn Chức vụ sẽ được đổi thành %s. Tất cả mọi người trong nhóm sẽ được thông báo. Bản lưu trữ cơ sở dữ liệu đã được tải lên sẽ bị xóa vĩnh viễn khỏi các máy chủ. Việc này không thể được hoàn tác - hồ sơ, các liên hệ, tin nhắn và tệp của bạn sẽ biến mất mà không thể khôi phục. diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml index 9dea7a5a0a..957d051898 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rCN/strings.xml @@ -1344,7 +1344,7 @@ 连接请求将发送给该群成员。 密码以明文形式存储在设置中。 同步连接时出错 - 这些设置适用于你当前的个人资料 + 这些设置适用于你当前的个人资料 允许为 %s 重新协商加密 为所有人启用 需要重新协商加密 diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml index c6cf22f427..ad82cb8329 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/zh-rTW/strings.xml @@ -2444,7 +2444,7 @@ 未使用 Tor 或 VPN 時,你的 IP 地址會對檔案伺服器可見。 移除連結追蹤 此設定適用於你目前的個人檔案 - 這些設定適用於你目前的個人檔案 + 這些設定適用於你目前的個人檔案 可在聯絡人和群組設定中覆寫這些設定。 已為 %d 個聯絡人啟用送達回條 已為 %d 個聯絡人停用送達回條 diff --git a/bots/api/COMMANDS.md b/bots/api/COMMANDS.md index 476ee4f94d..d88181b778 100644 --- a/bots/api/COMMANDS.md +++ b/bots/api/COMMANDS.md @@ -61,6 +61,7 @@ This file is generated automatically. - [APISetGroupCustomData](#apisetgroupcustomdata) - [APISetContactCustomData](#apisetcontactcustomdata) - [APISetUserAutoAcceptMemberContacts](#apisetuserautoacceptmembercontacts) +- [APISetUserAutoAcceptGroupInvitations](#apisetuserautoacceptgroupinvitations) [User profile commands](#user-profile-commands) - [ShowActiveUser](#showactiveuser) @@ -1972,6 +1973,43 @@ ChatCmdError: Command error (only used in WebSockets API). --- +### APISetUserAutoAcceptGroupInvitations + +Set auto-accept group invitations. + +*Network usage*: no. + +**Parameters**: +- userId: int64 +- onOff: bool + +**Syntax**: + +``` +/_set accept group invitations on|off +``` + +```javascript +'/_set accept group invitations ' + userId + ' ' + (onOff ? 'on' : 'off') // JavaScript +``` + +```python +'/_set accept group invitations ' + str(userId) + ' ' + ('on' if onOff else 'off') # Python +``` + +**Responses**: + +CmdOk: Ok. +- type: "cmdOk" +- user_: [User](./TYPES.md#user)? + +ChatCmdError: Command error (only used in WebSockets API). +- type: "chatCmdError" +- chatError: [ChatError](./TYPES.md#chaterror) + +--- + + ## User profile commands Most bots don't need to use these commands, as bot profile can be configured manually via CLI or desktop client. These commands can be used by bots that need to manage multiple user profiles (e.g., the profiles of support agents). diff --git a/bots/api/TYPES.md b/bots/api/TYPES.md index 47afd602d4..2d26f9bb2f 100644 --- a/bots/api/TYPES.md +++ b/bots/api/TYPES.md @@ -4367,6 +4367,7 @@ Handshake: - sendRcptsContacts: bool - sendRcptsSmallGroups: bool - autoAcceptMemberContacts: bool +- autoAcceptGroupInvitations: bool - userMemberProfileUpdatedAt: UTCTime? - userChatRelay: bool - clientService: bool diff --git a/bots/src/API/Docs/Commands.hs b/bots/src/API/Docs/Commands.hs index 09ae1faa5b..d126ff1844 100644 --- a/bots/src/API/Docs/Commands.hs +++ b/bots/src/API/Docs/Commands.hs @@ -154,7 +154,8 @@ chatCommandsDocsData = ("APIDeleteChat", [], "Delete chat.", ["CRContactDeleted", "CRContactConnectionDeleted", "CRGroupDeletedUser", "CRChatCmdError"], [], Just UNBackground, "/_delete " <> Param "chatRef" <> " " <> Param "chatDeleteMode"), ("APISetGroupCustomData", [], "Set group custom data.", ["CRCmdOk", "CRChatCmdError"], [], Nothing, "/_set custom #" <> Param "groupId" <> Optional "" (" " <> Json "$0") "customData"), ("APISetContactCustomData", [], "Set contact custom data.", ["CRCmdOk", "CRChatCmdError"], [], Nothing, "/_set custom @" <> Param "contactId" <> Optional "" (" " <> Json "$0") "customData"), - ("APISetUserAutoAcceptMemberContacts", [], "Set auto-accept member contacts.", ["CRCmdOk", "CRChatCmdError"], [], Nothing, "/_set accept member contacts " <> Param "userId" <> " " <> OnOff "onOff") + ("APISetUserAutoAcceptMemberContacts", [], "Set auto-accept member contacts.", ["CRCmdOk", "CRChatCmdError"], [], Nothing, "/_set accept member contacts " <> Param "userId" <> " " <> OnOff "onOff"), + ("APISetUserAutoAcceptGroupInvitations", [], "Set auto-accept group invitations.", ["CRCmdOk", "CRChatCmdError"], [], Nothing, "/_set accept group invitations " <> Param "userId" <> " " <> OnOff "onOff") -- ("APIChatItemsRead", [], "Mark items as read.", ["CRItemsReadForChat"], [], Nothing, ""), -- ("APIChatRead", [], "Mark chat as read.", ["CRCmdOk"], [], Nothing, ""), -- ("APIChatUnread", [], "Mark chat as unread.", ["CRCmdOk"], [], Nothing, ""), @@ -297,6 +298,7 @@ cliCommands = "SetUserFeature", "SetUserGroupReceipts", "SetUserAutoAcceptMemberContacts", + "SetUserAutoAcceptGroupInvitations", "SetUserTimedMessages", "ShareMyAddress", "SharePublicGroup", diff --git a/packages/simplex-chat-client/types/typescript/src/commands.ts b/packages/simplex-chat-client/types/typescript/src/commands.ts index 14b03f560f..0dfd63ba88 100644 --- a/packages/simplex-chat-client/types/typescript/src/commands.ts +++ b/packages/simplex-chat-client/types/typescript/src/commands.ts @@ -728,6 +728,21 @@ export namespace APISetUserAutoAcceptMemberContacts { } } +// Set auto-accept group invitations. +// Network usage: no. +export interface APISetUserAutoAcceptGroupInvitations { + userId: number // int64 + onOff: boolean +} + +export namespace APISetUserAutoAcceptGroupInvitations { + export type Response = CR.CmdOk | CR.ChatCmdError + + export function cmdString(self: APISetUserAutoAcceptGroupInvitations): string { + return '/_set accept group invitations ' + self.userId + ' ' + (self.onOff ? 'on' : 'off') + } +} + // User profile commands // Most bots don't need to use these commands, as bot profile can be configured manually via CLI or desktop client. These commands can be used by bots that need to manage multiple user profiles (e.g., the profiles of support agents). diff --git a/packages/simplex-chat-client/types/typescript/src/types.ts b/packages/simplex-chat-client/types/typescript/src/types.ts index ea98d99151..1779df783e 100644 --- a/packages/simplex-chat-client/types/typescript/src/types.ts +++ b/packages/simplex-chat-client/types/typescript/src/types.ts @@ -5043,6 +5043,7 @@ export interface User { sendRcptsContacts: boolean sendRcptsSmallGroups: boolean autoAcceptMemberContacts: boolean + autoAcceptGroupInvitations: boolean userMemberProfileUpdatedAt?: string // ISO-8601 timestamp userChatRelay: boolean clientService: boolean diff --git a/packages/simplex-chat-python/src/simplex_chat/types/_commands.py b/packages/simplex-chat-python/src/simplex_chat/types/_commands.py index f73a4fa4f7..086b3cfd29 100644 --- a/packages/simplex-chat-python/src/simplex_chat/types/_commands.py +++ b/packages/simplex-chat-python/src/simplex_chat/types/_commands.py @@ -637,6 +637,19 @@ def APISetUserAutoAcceptMemberContacts_cmd_string(self: APISetUserAutoAcceptMemb APISetUserAutoAcceptMemberContacts_Response = CR.CmdOk | CR.ChatCmdError +# Set auto-accept group invitations. +# Network usage: no. +class APISetUserAutoAcceptGroupInvitations(TypedDict): + userId: int # int64 + onOff: bool + + +def APISetUserAutoAcceptGroupInvitations_cmd_string(self: APISetUserAutoAcceptGroupInvitations) -> str: + return '/_set accept group invitations ' + str(self['userId']) + ' ' + ('on' if self['onOff'] else 'off') + +APISetUserAutoAcceptGroupInvitations_Response = CR.CmdOk | CR.ChatCmdError + + # User profile commands # Most bots don't need to use these commands, as bot profile can be configured manually via CLI or desktop client. These commands can be used by bots that need to manage multiple user profiles (e.g., the profiles of support agents). diff --git a/packages/simplex-chat-python/src/simplex_chat/types/_types.py b/packages/simplex-chat-python/src/simplex_chat/types/_types.py index 8569acc026..4c30c83bf5 100644 --- a/packages/simplex-chat-python/src/simplex_chat/types/_types.py +++ b/packages/simplex-chat-python/src/simplex_chat/types/_types.py @@ -3527,6 +3527,7 @@ class User(TypedDict): sendRcptsContacts: bool sendRcptsSmallGroups: bool autoAcceptMemberContacts: bool + autoAcceptGroupInvitations: bool userMemberProfileUpdatedAt: NotRequired[str] # ISO-8601 timestamp userChatRelay: bool clientService: bool diff --git a/plans/2026-08-13-auto-accept-group-invitations.md b/plans/2026-08-13-auto-accept-group-invitations.md new file mode 100644 index 0000000000..fdce3ebd2f --- /dev/null +++ b/plans/2026-08-13-auto-accept-group-invitations.md @@ -0,0 +1,149 @@ +# Auto-accept Group Invitations — Plan + +## Table of Contents +1. [Context](#1-context) +2. [Why This Belongs in the Core](#2-why-this-belongs-in-the-core) +3. [Design](#3-design) +4. [Decisions and Justification](#4-decisions-and-justification) +5. [Scope](#5-scope) +6. [Verification](#6-verification) + +--- + +## 1. Context + +**Problem**: Every group invitation requires the user to tap accept, even when they have +already decided they want to join groups from their contacts. Users in active communities +accumulate invitations that are pure friction — the decision was made when they added the +contact, not when the invitation arrived. + +**Precedent**: Privacy & security already carries a per-profile "Contact requests from +groups / Auto-accept" toggle (`users.auto_accept_member_contacts`, added in +`M20250729_member_contact_requests`). This change adds the equivalent for group +invitations — per-profile flag, same command pair — and regroups both under a single +**Auto-accept** section, so the two rows name what is being accepted rather than repeating +"Auto-accept" as two adjacent section headers: + +``` +Auto-accept + Contact requests in groups [ ] + Group invitations [ ] + These settings are for your current profile . +``` + +--- + +## 2. Why This Belongs in the Core + +The naive implementation is client-side: observe `CEvtReceivedGroupInvitation`, then call +`APIJoinGroup`. That is wrong here for three reasons. + +1. **It does not work when the app is closed.** Invitations arrive through the notification + extension and background message processing. A client-side rule cannot run there. +2. **`APIJoinGroup` blocks.** It takes `withGroupLock`, calls the agent's `joinConnection` + synchronously, and rolls member status back to `GSMemInvited` via `catchAllErrors` on + failure. Driving that from an event handler couples message processing to a network + round trip. +3. **It would be reimplemented per client.** Android, desktop and iOS would each carry the + decision, and they would drift. + +The flag therefore lives on `users`, and the decision is made where the invitation is +received. + +--- + +## 3. Design + +`processGroupInvitation` already contained an async accept path, used when an invitation +matches a group link the user opened: + +``` +prepareAgentJoin -> createMemberConnectionAsync -> joinAgentConnectionAsync +``` + +The outcome is reported later against the `CFJoinConn` command id, so nothing blocks. This +change does not add a second mechanism — it turns the existing two-way branch into three, +and auto-accept takes the path that already exists: + +| Condition | Behaviour | +|---|---| +| invitation matches an opened group link | join async, no chat item (unchanged) | +| profile auto-accepts, membership still `GSMemInvited` | join async, record accepted item | +| otherwise | create pending invitation item, notify (unchanged) | + +The shared sequence is extracted as `joinGroupAsync`; the invitation item as +`createInvitationItem`, parameterised by `CIGroupInvitationStatus` rather than a boolean. + +--- + +## 4. Decisions and Justification + +**Per-profile, not global.** Matches the sibling toggle and the user's mental model: a +profile is an identity, and willingness to auto-join groups is a property of that identity. +An incognito or work profile should not inherit a personal profile's setting. + +**A chat item is still recorded.** The group-link branch creates no item because the user +initiated the join. Auto-accept is not user-initiated, so a `CIRcvGroupInvitation` with +status `CIGISAccepted` is written to the chat with the inviting contact — a durable record +of who added the user to what. It is deliberately left counting as unread +(`ciRequiresAttention`), so an auto-join is noticed rather than silent. + +**`hostContact` is reported only for group links.** Clients respond to `hostContact` on +`CEvtUserAcceptedGroupSent` by replacing the transient host connection view with the group +and removing that chat. That is right for a group link, where the contact is a placeholder +created to join. For a plain invitation the contact is a real one, and removing their chat +would be destructive — so auto-accept passes `Nothing`, matching `APIJoinGroup`. + +**The join only runs while membership is `GSMemInvited`.** `createGroupInvitation` is +idempotent on `inv_queue_info`: a resent invitation returns the existing group rather than +failing. Without the guard, every resend would open another agent connection, which a +hostile or buggy host could drive indefinitely. A resend after joining is ignored. + +**UI strings reuse legacy keys deliberately.** The section header, the contact-requests row +and the footer use `auto_accept_contact`, `settings_section_title_contact_requests_from_groups` +and `receipts_section_description` — key names that no longer describe where they are used. +This is intentional: those keys are already translated in 35, 20 and 28 of 41 locales +respectively, while any newly added key ships English everywhere until translators catch up, +which would have put an English header and footer around a translated row. Only +`group_invitations` is genuinely new, so the feature adds exactly one string. Renaming these +keys to match their new use would discard the existing translations. All 28 translations of +`receipts_section_description` were checked and none mention receipts, so the reuse is safe. + +**Security note.** This converts a user-gated action into an automatic one: a contact can +cause the client to open group connections and fetch history without a prompt. It is +opt-in and per-profile, and channels cannot be used for it — `processGroupInvitation` +rejects `publicGroup` invitations outright. No rate cap is applied; the setting is +explicit. + +**Known behaviour.** Clients drop events for non-active profiles (`active(user)` guard), so +a group auto-accepted on a background profile becomes visible when switching to that +profile. The join itself happens on arrival: `subscribeUsers` passes the agent the active +user's id rather than the user list, and the agent enumerates every user's servers from its +own store — the active id orders subscriptions, it does not filter them. + +--- + +## 5. Scope + +| Layer | Change | +|---|---| +| Schema | `users.auto_accept_group_invitations` (`M20260813`, SQLite + Postgres) | +| Core | `User` field; `APISetUserAutoAcceptGroupInvitations` / `SetUserAutoAcceptGroupInvitations`; third branch in `processGroupInvitation` | +| Bot API | documented command; regenerated TypeScript/Python bindings and markdown | +| Android/desktop | Privacy & security: two per-profile toggles regrouped under one **Auto-accept** section; the contact-requests row relabelled "Contact requests in groups" | +| iOS | same section in `PrivacySettings.swift` | + +--- + +## 6. Verification + +- Schema dump, `.lint`, strict tables, and **down-migration round-trip** pass; the down + migration restores the original DDL byte-for-byte, so no skip-list entry is needed. +- JSON fixtures and all Bot API doc/codegen specs pass with no regenerated drift. +- `testGroupCheckMessages` and `testGroupLink` pass — the manual and group-link branches + are behaviour-preserving through the refactor. +- Three new tests: auto-accept on the active profile, on a second profile, and on an + inactive profile while another is active. + +**Not verified**: iOS is not compiled (no toolchain available); the Postgres schema test is +gated behind `#if defined(dbPostgres)` and was not run. diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 404456b122..26f808d266 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -153,6 +153,7 @@ library Simplex.Chat.Store.Postgres.Migrations.M20260716_signed_history Simplex.Chat.Store.Postgres.Migrations.M20260720_server_roles Simplex.Chat.Store.Postgres.Migrations.M20260723_contact_request_rejection + Simplex.Chat.Store.Postgres.Migrations.M20260813_auto_accept_group_invitations else exposed-modules: Simplex.Chat.Archive @@ -323,6 +324,7 @@ library Simplex.Chat.Store.SQLite.Migrations.M20260716_signed_history Simplex.Chat.Store.SQLite.Migrations.M20260720_server_roles Simplex.Chat.Store.SQLite.Migrations.M20260723_contact_request_rejection + Simplex.Chat.Store.SQLite.Migrations.M20260813_auto_accept_group_invitations other-modules: Paths_simplex_chat hs-source-dirs: diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index b9ce3587fc..54dfb58fc3 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -340,6 +340,8 @@ data ChatCommand | SetUserGroupReceipts UserMsgReceiptSettings | APISetUserAutoAcceptMemberContacts {userId :: UserId, onOff :: Bool} | SetUserAutoAcceptMemberContacts Bool + | APISetUserAutoAcceptGroupInvitations {userId :: UserId, onOff :: Bool} + | SetUserAutoAcceptGroupInvitations Bool | APIHideUser UserId UserPwd | APIUnhideUser UserId UserPwd | APIMuteUser UserId diff --git a/src/Simplex/Chat/Library/Commands.hs b/src/Simplex/Chat/Library/Commands.hs index f4906d74e8..d98b387097 100644 --- a/src/Simplex/Chat/Library/Commands.hs +++ b/src/Simplex/Chat/Library/Commands.hs @@ -506,6 +506,12 @@ processChatCommand cxt nm = \case withFastStore' $ \db -> updateUserAutoAcceptMemberContacts db user' onOff ok user SetUserAutoAcceptMemberContacts onOff -> withUser $ \User {userId} -> processChatCommand cxt nm $ APISetUserAutoAcceptMemberContacts userId onOff + APISetUserAutoAcceptGroupInvitations userId' onOff -> withUser $ \user -> do + user' <- privateGetUser userId' + validateUserPassword user user' Nothing + withFastStore' $ \db -> updateUserAutoAcceptGroupInvitations db user' onOff + ok user + SetUserAutoAcceptGroupInvitations onOff -> withUser $ \User {userId} -> processChatCommand cxt nm $ APISetUserAutoAcceptGroupInvitations userId onOff APIHideUser userId' (UserPwd viewPwd) -> withUser $ \user -> do user' <- privateGetUser userId' case viewPwdHash user' of @@ -5433,6 +5439,8 @@ chatCommandP = "/set receipts groups " *> (SetUserGroupReceipts <$> receiptSettings), "/_set accept member contacts " *> (APISetUserAutoAcceptMemberContacts <$> A.decimal <* A.space <*> onOffP), "/set accept member contacts " *> (SetUserAutoAcceptMemberContacts <$> onOffP), + "/_set accept group invitations " *> (APISetUserAutoAcceptGroupInvitations <$> A.decimal <* A.space <*> onOffP), + "/set accept group invitations " *> (SetUserAutoAcceptGroupInvitations <$> onOffP), "/_hide user " *> (APIHideUser <$> A.decimal <* A.space <*> jsonP), "/_unhide user " *> (APIUnhideUser <$> A.decimal <* A.space <*> jsonP), "/_mute user " *> (APIMuteUser <$> A.decimal), diff --git a/src/Simplex/Chat/Library/Subscriber.hs b/src/Simplex/Chat/Library/Subscriber.hs index df269bdd81..79ce572785 100644 --- a/src/Simplex/Chat/Library/Subscriber.hs +++ b/src/Simplex/Chat/Library/Subscriber.hs @@ -2618,24 +2618,35 @@ processAgentMessageConn cxt user@User {userId} corrId agentConnId agentMessage = (gInfo@GroupInfo {groupId, localDisplayName, groupProfile, membership}, hostId) <- withStore $ \db -> createGroupInvitation db cxt user ct inv customUserProfileId void $ createChatItem user (CDGroupSnd gInfo Nothing) False CIChatBanner Nothing Nothing (Just epochStart) let GroupMember {groupMemberId, memberId = membershipMemId} = membership - if sameGroupLinkId groupLinkId groupLinkId' - then do - subMode <- chatReadVar subscriptionMode - dm <- encodeConnInfo $ XGrpAcpt membershipMemId - connIds@(cmdId, acId) <- prepareAgentJoin user Nothing True connRequest - withStore' $ \db -> do - setViaGroupLinkUri db groupId connId - createMemberConnectionAsync db user hostId connIds connChatVersion peerChatVRange subMode - updateGroupMemberStatusById db userId hostId GSMemAccepted - updateGroupMemberStatus db userId membership GSMemAccepted - joinAgentConnectionAsync cmdId False acId True connRequest dm subMode - toView $ CEvtUserAcceptedGroupSent user gInfo {membership = membership {memberStatus = GSMemAccepted}} (Just ct) - else do - let content = CIRcvGroupInvitation (CIGroupInvitation {groupId, groupMemberId, localDisplayName, groupProfile, status = CIGISPending}) memRole - (ci, cInfo) <- saveRcvChatItemNoParse user (CDDirectRcv ct) msg brokerTs content - withStore' $ \db -> setGroupInvitationChatItemId db user groupId (chatItemId' ci) - toView $ CEvtNewChatItems user [AChatItem SCTDirect SMDRcv cInfo ci] - toView $ CEvtReceivedGroupInvitation {user, groupInfo = gInfo, contact = ct, fromMemberRole = fromRole, memberRole = memRole} + -- hostContact is only reported for group links, where the client replaces + -- the transient host connection view with the group and removes its chat + joinGroupAsync hostContact_ sameLink = do + subMode <- chatReadVar subscriptionMode + dm <- encodeConnInfo $ XGrpAcpt membershipMemId + connIds@(cmdId, acId) <- prepareAgentJoin user Nothing True connRequest + withStore' $ \db -> do + when sameLink $ setViaGroupLinkUri db groupId connId + createMemberConnectionAsync db user hostId connIds connChatVersion peerChatVRange subMode + updateGroupMemberStatusById db userId hostId GSMemAccepted + updateGroupMemberStatus db userId membership GSMemAccepted + joinAgentConnectionAsync cmdId False acId True connRequest dm subMode + toView $ CEvtUserAcceptedGroupSent user gInfo {membership = membership {memberStatus = GSMemAccepted}} hostContact_ + createInvitationItem invStatus = do + let content = CIRcvGroupInvitation (CIGroupInvitation {groupId, groupMemberId, localDisplayName, groupProfile, status = invStatus}) memRole + (ci, cInfo) <- saveRcvChatItemNoParse user (CDDirectRcv ct) msg brokerTs content + withStore' $ \db -> setGroupInvitationChatItemId db user groupId (chatItemId' ci) + toView $ CEvtNewChatItems user [AChatItem SCTDirect SMDRcv cInfo ci] + if + | sameGroupLinkId groupLinkId groupLinkId' -> + joinGroupAsync (Just ct) True + | isTrue (autoAcceptGroupInvitations user) -> + -- a resent invitation returns the existing group, so only join while still invited + when (memberStatus membership == GSMemInvited) $ do + joinGroupAsync Nothing False + createInvitationItem CIGISAccepted + | otherwise -> do + createInvitationItem CIGISPending + toView $ CEvtReceivedGroupInvitation {user, groupInfo = gInfo, contact = ct, fromMemberRole = fromRole, memberRole = memRole} where GroupInvitation {groupProfile = GroupProfile {publicGroup}} = inv brokerTs = metaBrokerTs msgMeta diff --git a/src/Simplex/Chat/Store/Postgres/Migrations.hs b/src/Simplex/Chat/Store/Postgres/Migrations.hs index 19c07edbf8..62021bbe4b 100644 --- a/src/Simplex/Chat/Store/Postgres/Migrations.hs +++ b/src/Simplex/Chat/Store/Postgres/Migrations.hs @@ -46,6 +46,7 @@ import Simplex.Chat.Store.Postgres.Migrations.M20260715_profile_description import Simplex.Chat.Store.Postgres.Migrations.M20260716_signed_history import Simplex.Chat.Store.Postgres.Migrations.M20260720_server_roles import Simplex.Chat.Store.Postgres.Migrations.M20260723_contact_request_rejection +import Simplex.Chat.Store.Postgres.Migrations.M20260813_auto_accept_group_invitations import Simplex.Messaging.Agent.Store.Shared (Migration (..)) schemaMigrations :: [(String, Text, Maybe Text)] @@ -91,7 +92,8 @@ schemaMigrations = ("20260715_profile_description", m20260715_profile_description, Just down_m20260715_profile_description), ("20260716_signed_history", m20260716_signed_history, Just down_m20260716_signed_history), ("20260720_server_roles", m20260720_server_roles, Just down_m20260720_server_roles), - ("20260723_contact_request_rejection", m20260723_contact_request_rejection, Just down_m20260723_contact_request_rejection) + ("20260723_contact_request_rejection", m20260723_contact_request_rejection, Just down_m20260723_contact_request_rejection), + ("20260813_auto_accept_group_invitations", m20260813_auto_accept_group_invitations, Just down_m20260813_auto_accept_group_invitations) ] -- | The list of migrations in ascending order by date diff --git a/src/Simplex/Chat/Store/Postgres/Migrations/M20260813_auto_accept_group_invitations.hs b/src/Simplex/Chat/Store/Postgres/Migrations/M20260813_auto_accept_group_invitations.hs new file mode 100644 index 0000000000..fa1e621619 --- /dev/null +++ b/src/Simplex/Chat/Store/Postgres/Migrations/M20260813_auto_accept_group_invitations.hs @@ -0,0 +1,19 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE QuasiQuotes #-} + +module Simplex.Chat.Store.Postgres.Migrations.M20260813_auto_accept_group_invitations where + +import Data.Text (Text) +import Text.RawString.QQ (r) + +m20260813_auto_accept_group_invitations :: Text +m20260813_auto_accept_group_invitations = + [r| +ALTER TABLE users ADD COLUMN auto_accept_group_invitations SMALLINT NOT NULL DEFAULT 0; +|] + +down_m20260813_auto_accept_group_invitations :: Text +down_m20260813_auto_accept_group_invitations = + [r| +ALTER TABLE users DROP COLUMN auto_accept_group_invitations; +|] diff --git a/src/Simplex/Chat/Store/Postgres/Migrations/chat_schema.sql b/src/Simplex/Chat/Store/Postgres/Migrations/chat_schema.sql index ae695d3c37..0978a54115 100644 --- a/src/Simplex/Chat/Store/Postgres/Migrations/chat_schema.sql +++ b/src/Simplex/Chat/Store/Postgres/Migrations/chat_schema.sql @@ -1510,7 +1510,8 @@ CREATE TABLE test_chat_schema.users ( active_order bigint DEFAULT 0 NOT NULL, auto_accept_member_contacts smallint DEFAULT 0 NOT NULL, is_user_chat_relay smallint DEFAULT 0 NOT NULL, - client_service smallint DEFAULT 0 NOT NULL + client_service smallint DEFAULT 0 NOT NULL, + auto_accept_group_invitations smallint DEFAULT 0 NOT NULL ); diff --git a/src/Simplex/Chat/Store/Profiles.hs b/src/Simplex/Chat/Store/Profiles.hs index 0613069dd7..965cbcbc78 100644 --- a/src/Simplex/Chat/Store/Profiles.hs +++ b/src/Simplex/Chat/Store/Profiles.hs @@ -42,6 +42,7 @@ module Simplex.Chat.Store.Profiles updateUserContactReceipts, updateUserGroupReceipts, updateUserAutoAcceptMemberContacts, + updateUserAutoAcceptGroupInvitations, updateUserProfile, setUserBadge, setUserProfileContactLink, @@ -139,12 +140,13 @@ createUserRecordAt db (AgentUserId auId) userChatRelay clientService Profile {di sendRcptsContacts = True sendRcptsSmallGroups = True autoAcceptMemberContacts = False + autoAcceptGroupInvitations = False order <- getNextActiveOrder db DB.execute db - "INSERT INTO users (agent_user_id, local_display_name, active_user, is_user_chat_relay, active_order, contact_id, show_ntfs, send_rcpts_contacts, send_rcpts_small_groups, auto_accept_member_contacts, client_service, created_at, updated_at) VALUES (?,?,?,?,?,0,?,?,?,?,?,?,?)" + "INSERT INTO users (agent_user_id, local_display_name, active_user, is_user_chat_relay, active_order, contact_id, show_ntfs, send_rcpts_contacts, send_rcpts_small_groups, auto_accept_member_contacts, auto_accept_group_invitations, client_service, created_at, updated_at) VALUES (?,?,?,?,?,0,?,?,?,?,?,?,?,?)" ( (auId, displayName, BI activeUser, BI userChatRelay, order) - :. (BI showNtfs, BI sendRcptsContacts, BI sendRcptsSmallGroups, BI autoAcceptMemberContacts, BI clientService, currentTs, currentTs) + :. (BI showNtfs, BI sendRcptsContacts, BI sendRcptsSmallGroups, BI autoAcceptMemberContacts, BI autoAcceptGroupInvitations, BI clientService, currentTs, currentTs) ) userId <- insertedRowId db -- After the insert: the name is unique in users, so a duplicate fails @@ -165,7 +167,7 @@ createUserRecordAt db (AgentUserId auId) userChatRelay clientService Profile {di (profileId, displayName, userId, BI True, currentTs, currentTs, currentTs) contactId <- insertedRowId db DB.execute db "UPDATE users SET contact_id = ? WHERE user_id = ?" (contactId, userId) - pure $ toUser currentTs $ (userId, auId, contactId, profileId, BI activeUser, order) :. (displayName, fullName, shortDescr, description, image, Nothing, peerType, userPreferences) :. (BI showNtfs, BI sendRcptsContacts, BI sendRcptsSmallGroups, BI autoAcceptMemberContacts, Nothing, Nothing, Nothing, BI userChatRelay, BI clientService, Nothing) :. localBadgeToRow Nothing :. (Nothing, Nothing, Nothing) + pure $ toUser currentTs $ (userId, auId, contactId, profileId, BI activeUser, order) :. (displayName, fullName, shortDescr, description, image, Nothing, peerType, userPreferences) :. (BI showNtfs, BI sendRcptsContacts, BI sendRcptsSmallGroups, BI autoAcceptMemberContacts, BI autoAcceptGroupInvitations, Nothing, Nothing, Nothing, BI userChatRelay, BI clientService, Nothing) :. localBadgeToRow Nothing :. (Nothing, Nothing, Nothing) -- TODO [mentions] getUsersInfo :: DB.Connection -> IO [UserInfo] @@ -330,6 +332,10 @@ updateUserAutoAcceptMemberContacts :: DB.Connection -> User -> Bool -> IO () updateUserAutoAcceptMemberContacts db User {userId} autoAccept = DB.execute db "UPDATE users SET auto_accept_member_contacts = ? WHERE user_id = ?" (BI autoAccept, userId) +updateUserAutoAcceptGroupInvitations :: DB.Connection -> User -> Bool -> IO () +updateUserAutoAcceptGroupInvitations db User {userId} autoAccept = + DB.execute db "UPDATE users SET auto_accept_group_invitations = ? WHERE user_id = ?" (BI autoAccept, userId) + updateUserProfile :: DB.Connection -> User -> Profile -> ExceptT StoreError IO User updateUserProfile db user p' | displayName == newName = liftIO $ do diff --git a/src/Simplex/Chat/Store/SQLite/Migrations.hs b/src/Simplex/Chat/Store/SQLite/Migrations.hs index a4e7ab04a2..cb046f6bc5 100644 --- a/src/Simplex/Chat/Store/SQLite/Migrations.hs +++ b/src/Simplex/Chat/Store/SQLite/Migrations.hs @@ -169,6 +169,7 @@ import Simplex.Chat.Store.SQLite.Migrations.M20260715_profile_description import Simplex.Chat.Store.SQLite.Migrations.M20260716_signed_history import Simplex.Chat.Store.SQLite.Migrations.M20260720_server_roles import Simplex.Chat.Store.SQLite.Migrations.M20260723_contact_request_rejection +import Simplex.Chat.Store.SQLite.Migrations.M20260813_auto_accept_group_invitations import Simplex.Messaging.Agent.Store.Shared (Migration (..)) schemaMigrations :: [(String, Query, Maybe Query)] @@ -337,7 +338,8 @@ schemaMigrations = ("20260715_profile_description", m20260715_profile_description, Just down_m20260715_profile_description), ("20260716_signed_history", m20260716_signed_history, Just down_m20260716_signed_history), ("20260720_server_roles", m20260720_server_roles, Just down_m20260720_server_roles), - ("20260723_contact_request_rejection", m20260723_contact_request_rejection, Just down_m20260723_contact_request_rejection) + ("20260723_contact_request_rejection", m20260723_contact_request_rejection, Just down_m20260723_contact_request_rejection), + ("20260813_auto_accept_group_invitations", m20260813_auto_accept_group_invitations, Just down_m20260813_auto_accept_group_invitations) ] -- | The list of migrations in ascending order by date diff --git a/src/Simplex/Chat/Store/SQLite/Migrations/M20260813_auto_accept_group_invitations.hs b/src/Simplex/Chat/Store/SQLite/Migrations/M20260813_auto_accept_group_invitations.hs new file mode 100644 index 0000000000..f0fab81d68 --- /dev/null +++ b/src/Simplex/Chat/Store/SQLite/Migrations/M20260813_auto_accept_group_invitations.hs @@ -0,0 +1,18 @@ +{-# LANGUAGE QuasiQuotes #-} + +module Simplex.Chat.Store.SQLite.Migrations.M20260813_auto_accept_group_invitations where + +import Database.SQLite.Simple (Query) +import Database.SQLite.Simple.QQ (sql) + +m20260813_auto_accept_group_invitations :: Query +m20260813_auto_accept_group_invitations = + [sql| +ALTER TABLE users ADD COLUMN auto_accept_group_invitations INTEGER NOT NULL DEFAULT 0; +|] + +down_m20260813_auto_accept_group_invitations :: Query +down_m20260813_auto_accept_group_invitations = + [sql| +ALTER TABLE users DROP COLUMN auto_accept_group_invitations; +|] diff --git a/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt b/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt index f4dcb5c5a7..2edce7cc3c 100644 --- a/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt +++ b/src/Simplex/Chat/Store/SQLite/Migrations/chat_query_plans.txt @@ -6185,7 +6185,7 @@ SEARCH server_operators USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6198,7 +6198,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6212,7 +6212,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6226,7 +6226,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6241,7 +6241,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6255,7 +6255,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6269,7 +6269,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6283,7 +6283,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6297,7 +6297,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -6310,7 +6310,7 @@ SEARCH ucp USING INTEGER PRIMARY KEY (rowid=?) Query: SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id @@ -7069,7 +7069,7 @@ Plan: Query: INSERT INTO user_contact_links (user_id, group_id, group_link_id, local_display_name, conn_req_contact, short_link_contact, short_link_data_set, short_link_large_data_set, group_link_member_role, auto_accept, created_at, updated_at) VALUES (?,?,?,?,?,?,?,?,?,?,?,?) Plan: -Query: INSERT INTO users (agent_user_id, local_display_name, active_user, is_user_chat_relay, active_order, contact_id, show_ntfs, send_rcpts_contacts, send_rcpts_small_groups, auto_accept_member_contacts, client_service, created_at, updated_at) VALUES (?,?,?,?,?,0,?,?,?,?,?,?,?) +Query: INSERT INTO users (agent_user_id, local_display_name, active_user, is_user_chat_relay, active_order, contact_id, show_ntfs, send_rcpts_contacts, send_rcpts_small_groups, auto_accept_member_contacts, auto_accept_group_invitations, client_service, created_at, updated_at) VALUES (?,?,?,?,?,0,?,?,?,?,?,?,?,?) Plan: Query: INSERT INTO xftp_file_descriptions (user_id, file_descr_text, file_descr_part_no, file_descr_complete, created_at, updated_at) VALUES (?,?,?,?,?,?) @@ -7939,6 +7939,10 @@ Query: UPDATE users SET active_user = 1, active_order = ? WHERE user_id = ? Plan: SEARCH users USING INTEGER PRIMARY KEY (rowid=?) +Query: UPDATE users SET auto_accept_group_invitations = ? WHERE user_id = ? +Plan: +SEARCH users USING INTEGER PRIMARY KEY (rowid=?) + Query: UPDATE users SET auto_accept_member_contacts = ? WHERE user_id = ? Plan: SEARCH users USING INTEGER PRIMARY KEY (rowid=?) diff --git a/src/Simplex/Chat/Store/SQLite/Migrations/chat_schema.sql b/src/Simplex/Chat/Store/SQLite/Migrations/chat_schema.sql index cfbcf70599..a49a6d0db7 100644 --- a/src/Simplex/Chat/Store/SQLite/Migrations/chat_schema.sql +++ b/src/Simplex/Chat/Store/SQLite/Migrations/chat_schema.sql @@ -53,7 +53,8 @@ CREATE TABLE users( active_order INTEGER NOT NULL DEFAULT 0, auto_accept_member_contacts INTEGER NOT NULL DEFAULT 0, is_user_chat_relay INTEGER NOT NULL DEFAULT 0, - client_service INTEGER NOT NULL DEFAULT 0, -- 1 for active user + client_service INTEGER NOT NULL DEFAULT 0, + auto_accept_group_invitations INTEGER NOT NULL DEFAULT 0, -- 1 for active user FOREIGN KEY(user_id, local_display_name) REFERENCES display_names(user_id, local_display_name) ON DELETE RESTRICT diff --git a/src/Simplex/Chat/Store/Shared.hs b/src/Simplex/Chat/Store/Shared.hs index 6516b3cc66..ceaf905df0 100644 --- a/src/Simplex/Chat/Store/Shared.hs +++ b/src/Simplex/Chat/Store/Shared.hs @@ -557,20 +557,21 @@ userQuery :: Query userQuery = [sql| SELECT u.user_id, u.agent_user_id, u.contact_id, ucp.contact_profile_id, u.active_user, u.active_order, u.local_display_name, ucp.full_name, ucp.short_descr, ucp.description, ucp.image, ucp.contact_link, ucp.chat_peer_type, ucp.preferences, - u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, + u.show_ntfs, u.send_rcpts_contacts, u.send_rcpts_small_groups, u.auto_accept_member_contacts, u.auto_accept_group_invitations, u.view_pwd_hash, u.view_pwd_salt, u.user_member_profile_updated_at, u.is_user_chat_relay, u.client_service, u.ui_themes, ucp.badge_proof, ucp.badge_pres_header, ucp.badge_expiry, ucp.badge_type, ucp.badge_verified, ucp.badge_extra, ucp.badge_master_key, ucp.badge_signature, ucp.badge_key_idx, ucp.contact_domain, ucp.contact_domain_proof, ucp.contact_domain_verified FROM users u JOIN contacts uct ON uct.contact_id = u.contact_id JOIN contact_profiles ucp ON ucp.contact_profile_id = uct.contact_profile_id |] -toUser :: UTCTime -> (UserId, UserId, ContactId, ProfileId, BoolInt, Int64) :. (ContactName, Text, Maybe Text, Maybe Text, Maybe ImageData, Maybe ConnLinkContact, Maybe ChatPeerType, Maybe Preferences) :. (BoolInt, BoolInt, BoolInt, BoolInt, Maybe B64UrlByteString, Maybe B64UrlByteString, Maybe UTCTime, BoolInt, BoolInt, Maybe UIThemeEntityOverrides) :. BadgeRow :. ContactDomainRow -> User -toUser now ((userId, auId, userContactId, profileId, BI activeUser, activeOrder) :. (displayName, fullName, shortDescr, description, image, contactLink, peerType, userPreferences) :. (BI showNtfs, BI sendRcptsContacts, BI sendRcptsSmallGroups, BI autoAcceptMemberContacts, viewPwdHash_, viewPwdSalt_, userMemberProfileUpdatedAt, BI userChatRelay, BI clientService, uiThemes) :. badgeRow :. domainRow) = - User {userId, agentUserId = AgentUserId auId, userContactId, localDisplayName = displayName, profile, activeUser, activeOrder, fullPreferences, showNtfs, sendRcptsContacts, sendRcptsSmallGroups, autoAcceptMemberContacts, viewPwdHash, userMemberProfileUpdatedAt, userChatRelay = BoolDef userChatRelay, clientService = BoolDef clientService, uiThemes} +toUser :: UTCTime -> (UserId, UserId, ContactId, ProfileId, BoolInt, Int64) :. (ContactName, Text, Maybe Text, Maybe Text, Maybe ImageData, Maybe ConnLinkContact, Maybe ChatPeerType, Maybe Preferences) :. (BoolInt, BoolInt, BoolInt, BoolInt, BoolInt, Maybe B64UrlByteString, Maybe B64UrlByteString, Maybe UTCTime, BoolInt, BoolInt, Maybe UIThemeEntityOverrides) :. BadgeRow :. ContactDomainRow -> User +toUser now ((userId, auId, userContactId, profileId, BI activeUser, activeOrder) :. (displayName, fullName, shortDescr, description, image, contactLink, peerType, userPreferences) :. (BI showNtfs, BI sendRcptsContacts, BI sendRcptsSmallGroups, BI autoAcceptMemberContacts, BI autoAcceptGroupInv, viewPwdHash_, viewPwdSalt_, userMemberProfileUpdatedAt, BI userChatRelay, BI clientService, uiThemes) :. badgeRow :. domainRow) = + User {userId, agentUserId = AgentUserId auId, userContactId, localDisplayName = displayName, profile, activeUser, activeOrder, fullPreferences, showNtfs, sendRcptsContacts, sendRcptsSmallGroups, autoAcceptMemberContacts, autoAcceptGroupInvitations, viewPwdHash, userMemberProfileUpdatedAt, userChatRelay = BoolDef userChatRelay, clientService = BoolDef clientService, uiThemes} where profile = LocalProfile {profileId, displayName, fullName, shortDescr, description, image, contactLink, contactDomain = rowToContactDomain domainRow, contactDomainVerified = rowToDomainVerified domainRow, peerType, localBadge = rowToBadge now badgeRow, preferences = userPreferences, localAlias = ""} fullPreferences = fullPreferences' userPreferences viewPwdHash = UserPwdHash <$> viewPwdHash_ <*> viewPwdSalt_ + autoAcceptGroupInvitations = BoolDef autoAcceptGroupInv toPendingContactConnection :: (Int64, ConnId, ConnStatus, Maybe ByteString, Maybe Int64, Maybe GroupLinkId, Maybe Int64, Maybe ConnReqInvitation, Maybe ShortLinkInvitation, LocalAlias, UTCTime, UTCTime) -> PendingContactConnection toPendingContactConnection (pccConnId, acId, pccConnStatus, connReqHash, viaUserContactLink, groupLinkId, customUserProfileId, connReqInv, shortLinkInv, localAlias, createdAt, updatedAt) = diff --git a/src/Simplex/Chat/Types.hs b/src/Simplex/Chat/Types.hs index 7bccd04b71..c0e44277a4 100644 --- a/src/Simplex/Chat/Types.hs +++ b/src/Simplex/Chat/Types.hs @@ -143,6 +143,7 @@ data User = User sendRcptsContacts :: Bool, sendRcptsSmallGroups :: Bool, autoAcceptMemberContacts :: Bool, + autoAcceptGroupInvitations :: BoolDef, userMemberProfileUpdatedAt :: Maybe UTCTime, userChatRelay :: BoolDef, clientService :: BoolDef, diff --git a/tests/ChatTests/Profiles.hs b/tests/ChatTests/Profiles.hs index c65306474c..ce62b300e4 100644 --- a/tests/ChatTests/Profiles.hs +++ b/tests/ChatTests/Profiles.hs @@ -52,6 +52,9 @@ chatProfileTests = do it "reject profile image that is too large" testSetProfileImageTooLarge it "set profile image from file" testSetProfileImageFromFile it "use multiword profile names" testMultiWordProfileNames + it "auto-accept group invitations" testAutoAcceptGroupInvitations + it "auto-accept group invitations on a second profile" testAutoAcceptGroupInvitationsSecondProfile + it "auto-accept group invitations on an inactive profile" testAutoAcceptGroupInvitationsInactiveProfile it "present supporter badge to contacts" testUserBadgeBroadcast it "supporter badge sent to contact connecting after attach" testUserBadgeOnConnect it "supporter badge sent to member joining via group link" testUserBadgeGroupLink @@ -539,6 +542,61 @@ testSetProfileImageFromFile ps = testChat aliceProfile test ps alice ##> ("/set profile image file " <> emptyPath) alice <##. "bad chat command: image file is empty" +testAutoAcceptGroupInvitations :: HasCallStack => TestParams -> IO () +testAutoAcceptGroupInvitations = + testChat2 aliceProfile bobProfile $ + \alice bob -> do + connectUsers alice bob + bob ##> "/set accept group invitations on" + bob <## "ok" + alice ##> "/g team" + alice <## "group #team is created" + alice <## "to add members use /a team or /create link #team" + alice ##> "/a team bob admin" + alice <## "invitation to join the group #team sent to bob" + concurrently_ + (alice <## "#team: bob joined the group") + (bob <## "#team: you joined the group") + +testAutoAcceptGroupInvitationsSecondProfile :: HasCallStack => TestParams -> IO () +testAutoAcceptGroupInvitationsSecondProfile = + testChat2 aliceProfile bobProfile $ + \alice bob -> do + bob ##> "/create user bob2" + showActiveUser bob "bob2" + bob ##> "/set accept group invitations on" + bob <## "ok" + connectUsers alice bob + alice ##> "/g team" + alice <## "group #team is created" + alice <## "to add members use /a team or /create link #team" + alice ##> "/a team bob2 admin" + alice <## "invitation to join the group #team sent to bob2" + concurrently_ + (alice <## "#team: bob2 joined the group") + (bob <## "#team: you joined the group") + +testAutoAcceptGroupInvitationsInactiveProfile :: HasCallStack => TestParams -> IO () +testAutoAcceptGroupInvitationsInactiveProfile = + testChat2 aliceProfile bobProfile $ + \alice bob -> do + bob ##> "/create user bob2" + showActiveUser bob "bob2" + bob ##> "/set accept group invitations on" + bob <## "ok" + connectUsers alice bob + -- switch away: bob2 now has auto-accept on but is NOT the active profile + bob ##> "/user bob" + showActiveUser bob "bob (Bob)" + alice ##> "/g team" + alice <## "group #team is created" + alice <## "to add members use /a team or /create link #team" + alice ##> "/a team bob2 admin" + alice <## "invitation to join the group #team sent to bob2" + concurrently_ + (alice <## "#team: bob2 joined the group") + (bob <## "[user: bob2] #team: you joined the group") + testMultiWordProfileNames :: HasCallStack => TestParams -> IO () testMultiWordProfileNames = testChat3 aliceProfile' bobProfile' cathProfile' $ diff --git a/tests/JSONFixtures.hs b/tests/JSONFixtures.hs index 37fab0e4f0..bbdf8c14b0 100644 --- a/tests/JSONFixtures.hs +++ b/tests/JSONFixtures.hs @@ -17,10 +17,10 @@ activeUserExistsTagged :: LB.ByteString activeUserExistsTagged = "{\"error\":{\"type\":\"error\",\"errorType\":{\"type\":\"userExists\",\"contactName\":\"alice\"}}}" activeUserSwift :: LB.ByteString -activeUserSwift = "{\"result\":{\"_owsf\":true,\"activeUser\":{\"user\":{\"userId\":1,\"agentUserId\":\"1\",\"userContactId\":1,\"localDisplayName\":\"alice\",\"profile\":{\"profileId\":1,\"displayName\":\"alice\",\"fullName\":\"\",\"shortDescr\":\"Alice\",\"localAlias\":\"\"},\"fullPreferences\":{\"timedMessages\":{\"allow\":\"yes\"},\"fullDelete\":{\"allow\":\"no\"},\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"},\"files\":{\"allow\":\"always\"},\"calls\":{\"allow\":\"yes\"},\"sessions\":{\"allow\":\"no\"},\"commands\":[]},\"activeUser\":true,\"activeOrder\":1,\"showNtfs\":true,\"sendRcptsContacts\":true,\"sendRcptsSmallGroups\":true,\"autoAcceptMemberContacts\":false,\"userChatRelay\":false,\"clientService\":false}}}}" +activeUserSwift = "{\"result\":{\"_owsf\":true,\"activeUser\":{\"user\":{\"userId\":1,\"agentUserId\":\"1\",\"userContactId\":1,\"localDisplayName\":\"alice\",\"profile\":{\"profileId\":1,\"displayName\":\"alice\",\"fullName\":\"\",\"shortDescr\":\"Alice\",\"localAlias\":\"\"},\"fullPreferences\":{\"timedMessages\":{\"allow\":\"yes\"},\"fullDelete\":{\"allow\":\"no\"},\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"},\"files\":{\"allow\":\"always\"},\"calls\":{\"allow\":\"yes\"},\"sessions\":{\"allow\":\"no\"},\"commands\":[]},\"activeUser\":true,\"activeOrder\":1,\"showNtfs\":true,\"sendRcptsContacts\":true,\"sendRcptsSmallGroups\":true,\"autoAcceptMemberContacts\":false,\"autoAcceptGroupInvitations\":false,\"userChatRelay\":false,\"clientService\":false}}}}" activeUserTagged :: LB.ByteString -activeUserTagged = "{\"result\":{\"type\":\"activeUser\",\"user\":{\"userId\":1,\"agentUserId\":\"1\",\"userContactId\":1,\"localDisplayName\":\"alice\",\"profile\":{\"profileId\":1,\"displayName\":\"alice\",\"fullName\":\"\",\"shortDescr\":\"Alice\",\"localAlias\":\"\"},\"fullPreferences\":{\"timedMessages\":{\"allow\":\"yes\"},\"fullDelete\":{\"allow\":\"no\"},\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"},\"files\":{\"allow\":\"always\"},\"calls\":{\"allow\":\"yes\"},\"sessions\":{\"allow\":\"no\"},\"commands\":[]},\"activeUser\":true,\"activeOrder\":1,\"showNtfs\":true,\"sendRcptsContacts\":true,\"sendRcptsSmallGroups\":true,\"autoAcceptMemberContacts\":false,\"userChatRelay\":false,\"clientService\":false}}}" +activeUserTagged = "{\"result\":{\"type\":\"activeUser\",\"user\":{\"userId\":1,\"agentUserId\":\"1\",\"userContactId\":1,\"localDisplayName\":\"alice\",\"profile\":{\"profileId\":1,\"displayName\":\"alice\",\"fullName\":\"\",\"shortDescr\":\"Alice\",\"localAlias\":\"\"},\"fullPreferences\":{\"timedMessages\":{\"allow\":\"yes\"},\"fullDelete\":{\"allow\":\"no\"},\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"},\"files\":{\"allow\":\"always\"},\"calls\":{\"allow\":\"yes\"},\"sessions\":{\"allow\":\"no\"},\"commands\":[]},\"activeUser\":true,\"activeOrder\":1,\"showNtfs\":true,\"sendRcptsContacts\":true,\"sendRcptsSmallGroups\":true,\"autoAcceptMemberContacts\":false,\"autoAcceptGroupInvitations\":false,\"userChatRelay\":false,\"clientService\":false}}}" chatStartedSwift :: LB.ByteString chatStartedSwift = "{\"result\":{\"_owsf\":true,\"chatStarted\":{}}}" @@ -35,7 +35,7 @@ connectionsDiffTagged :: LB.ByteString connectionsDiffTagged = "{\"result\":{\"type\":\"connectionsDiff\",\"userIds\":{\"missingIds\":[],\"extraIds\":[]},\"connIds\":{\"missingIds\":[],\"extraIds\":[]}}}" userJSON :: LB.ByteString -userJSON = "{\"userId\":1,\"agentUserId\":\"1\",\"userContactId\":1,\"localDisplayName\":\"alice\",\"profile\":{\"profileId\":1,\"displayName\":\"alice\",\"fullName\":\"\",\"shortDescr\":\"Alice\",\"localAlias\":\"\"},\"fullPreferences\":{\"timedMessages\":{\"allow\":\"yes\"},\"fullDelete\":{\"allow\":\"no\"},\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"},\"files\":{\"allow\":\"always\"},\"calls\":{\"allow\":\"yes\"},\"sessions\":{\"allow\":\"no\"},\"commands\":[]},\"activeUser\":true,\"activeOrder\":1,\"showNtfs\":true,\"sendRcptsContacts\":true,\"sendRcptsSmallGroups\":true,\"autoAcceptMemberContacts\":false,\"userChatRelay\":false}" +userJSON = "{\"userId\":1,\"agentUserId\":\"1\",\"userContactId\":1,\"localDisplayName\":\"alice\",\"profile\":{\"profileId\":1,\"displayName\":\"alice\",\"fullName\":\"\",\"shortDescr\":\"Alice\",\"localAlias\":\"\"},\"fullPreferences\":{\"timedMessages\":{\"allow\":\"yes\"},\"fullDelete\":{\"allow\":\"no\"},\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"},\"files\":{\"allow\":\"always\"},\"calls\":{\"allow\":\"yes\"},\"sessions\":{\"allow\":\"no\"},\"commands\":[]},\"activeUser\":true,\"activeOrder\":1,\"showNtfs\":true,\"sendRcptsContacts\":true,\"sendRcptsSmallGroups\":true,\"autoAcceptMemberContacts\":false,\"autoAcceptGroupInvitations\":false,\"userChatRelay\":false}" parsedMarkdownSwift :: LB.ByteString parsedMarkdownSwift = "{\"formattedText\":[{\"format\":{\"_owsf\":true,\"bold\":{}},\"text\":\"hello\"}]}" From 222fc4ad996507945146d614b06f13b66af328cf Mon Sep 17 00:00:00 2001 From: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com> Date: Wed, 19 Aug 2026 13:33:18 +0000 Subject: [PATCH 19/24] android, desktop: open group member profile without loading all members (#7388) * android, desktop: open group member profile without loading all members Clicking member avatar in chat loaded the whole member list (apiListMembers) before showing member profile, and it was repeated on every click - in a group with 10000 members it takes several seconds. The full list is not needed to show the profile of one member, so instead the opened member is added to the model, the same way as in iOS app. * plans: member profile in large groups * plans: correct relay warning section - it is not affected by the change --- .../simplex/common/views/chat/ChatView.kt | 13 +- ...-18-member-profile-open-in-large-groups.md | 150 ++++++++++++++++++ 2 files changed, 158 insertions(+), 5 deletions(-) create mode 100644 plans/2026-08-18-member-profile-open-in-large-groups.md diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt index 12f13a426f..9bbfda558f 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatView.kt @@ -502,14 +502,17 @@ fun ChatView( groupMembersJob = scope.launch(Dispatchers.Default) { val r = chatModel.controller.apiGroupMemberInfo(chatRh, groupInfo.groupId, member.groupMemberId) val stats = r?.second - val (_, code) = if (member.memberActive) { + val (updatedMember, code) = if (member.memberActive) { val memCode = chatModel.controller.apiGetGroupMemberCode(chatRh, groupInfo.apiId, member.groupMemberId) - member to memCode?.second + (memCode?.first ?: r?.first ?: member) to memCode?.second } else { - member to null + (r?.first ?: member) to null + } + if (!isActive || chatModel.chatId.value != groupInfo.id) return@launch + // members are not loaded in large groups, so only the opened member is added to the model + withContext(Dispatchers.Main) { + chatModel.chatsContext.upsertGroupMember(chatRh, groupInfo, updatedMember) } - setGroupMembers(chatRh, groupInfo, chatModel) - if (!isActive) return@launch if (chatsCtx.secondaryContextFilter == null) { ModalManager.end.closeModals() diff --git a/plans/2026-08-18-member-profile-open-in-large-groups.md b/plans/2026-08-18-member-profile-open-in-large-groups.md new file mode 100644 index 0000000000..2e5ccc3bbd --- /dev/null +++ b/plans/2026-08-18-member-profile-open-in-large-groups.md @@ -0,0 +1,150 @@ +# Open Member Profile Without Loading All Group Members + +## Context + +Tapping a member's avatar in chat history takes several seconds in a group with +10000 members, on every tap, on Android and desktop. + +**Root cause**: `showMemberInfo` (ChatView.kt:499) awaits three API calls before +showing the modal: + +1. `apiGroupMemberInfo` — single member, O(1) in group size +2. `apiGetGroupMemberCode` — single member, O(1) +3. `setGroupMembers` (ChatListNavLinkView.kt:254) — `apiListMembers`, the **whole + member list** + +Call 3 is the cost. `APIListMembers` (Commands.hs:3212) runs `getGroup`, which +loads every member with its profile (Groups.hs:938, 1222), the profile includes +the avatar (`p.image` in `groupMemberQuery`, Shared.hs:762), and the result is +encoded to JSON, passed across the FFI boundary and decoded into 10000 +`GroupMember` objects by the client. The codebase already annotates this call as +"very heavy query in large groups" (SimpleXAPI.kt:846). + +There is no `membersLoaded` guard on this call, unlike `GroupMentions.kt:116`, so +the full list is re-loaded on *every* tap even when it is already in the model. + +Measured on a 10009-member group (real member rows, half with a 11.7 KB avatar): +the SQL itself takes 0.21 s and returns ~64 MB of column data (5.1 MB without +avatars). The seconds are the JSON encode/transfer/decode of that payload. + +The full member list is not needed to show one member's profile. It is loaded +only so that `chatModel.getGroupMember` (ChatModel.kt:357) resolves the member +for the modal (ChatView.kt:521) and for the "Verify security code" screen +(GroupMemberInfoView.kt:209). + +## Solution Summary + +Do not load the member list on this path. Add the opened member to the model +instead, and show the modal — this is what the iOS app already does +(ChatView.swift:2051-2058, since 03bc4e5d0, "ios: display reactions in groups by +member"). The Kotlin path was never updated to match. + +```kotlin +val (updatedMember, code) = if (member.memberActive) { + val memCode = chatModel.controller.apiGetGroupMemberCode(...) + (memCode?.first ?: r?.first ?: member) to memCode?.second +} else { + (r?.first ?: member) to null +} +if (!isActive || chatModel.chatId.value != groupInfo.id) return@launch +withContext(Dispatchers.Main) { + chatModel.chatsContext.upsertGroupMember(chatRh, groupInfo, updatedMember) +} +``` + +After the change the tap runs two single-row queries. Measured against the core +with 10009 members and 100035 messages in the group: `APIGroupMemberInfo` takes +1-2 ms, first call included, and does not depend on group size. + +## Technical Design + +### Which member is added to the model + +The member returned by `apiGetGroupMemberCode` is preferred over the one from +`apiGroupMemberInfo`. `APIGetGroupMemberCode` (Commands.hs:2016) clears +verification in the database when the peer's security code no longer matches +(`setGroupMemberVerified ... Nothing` / `setConnectionVerified ... Nothing`) and +returns the updated member. `apiGroupMemberInfo` runs before that, so its member +can still show the connection as verified. The previous code re-read all members +from the database *after* the code call, so the model saw the cleared state; +using the code call's member preserves that behaviour, and the verified shield +(GroupMemberInfoView.kt:736) does not go stale. + +### Guard on the open chat + +`upsertGroupMember` (ChatModel.kt:927) is a no-op when the open chat changed +while the two calls were in flight, which would leave `getGroupMember` null and +open an empty card. The explicit `chatModel.chatId.value != groupInfo.id` check +closes the modal path in that case instead. The previous code filled the model in +that race by writing the *previous* group's members into it — the stale data +hazard that `upsertGroupMember`'s own comment warns about (ChatModel.kt:936). + +### Duplicate protection is retained + +`#5462` ("improving group members loading to prevent crashes") made the wholesale +replacement safe against duplicated entries crashing `LazyColumn`. +`upsertGroupMember` carries the same protection: it clears the list when the +first member belongs to another group (ChatModel.kt:936) and looks the member up +by index before appending (ChatModel.kt:940, 956-966). + +## Consequences + +`chatModel.groupMembers` can now hold a partial list (previously it was either +empty or complete). This state already existed — channel creation writes a +relays-only list (ComposeView.kt:693) — and `membersLoaded` is deliberately left +`false`, so every screen that needs the full list still loads it: +`GroupChatInfoView.kt:117`, `ChannelMembersView`, `ChannelRelaysView.kt:38`, +`MemberSupportView.kt:45`, `addGroupMembers` (ChatView.kt:3217), and +`GroupMentions.kt:116` which checks the flag. + +One behaviour changes: + +- **Mention picker.** Until `@` triggers the load, the picker briefly lists the + members opened so far instead of nothing. Self-correcting. + +The relay removal warning is *not* affected. `activeRelays.size <= 1` +(GroupMemberInfoView.kt:250, GroupChatInfoView.kt:277) is computed from the +model, so it is already conservative while the member list is loading — with an +empty list the count is 0 and the warning fires. A partial list is a subset, so +the count can only move towards the correct value, and the opposite error is +impossible: a subset with two active relays implies the group has at least two. +It is also not reachable from the modified path — messages delivered through +relays have no item member (`CDChannelRcv`, Subscriber.hs:2161, `chatItemMember` +returns Nothing, Messages.hs:375) and their avatar opens chat info +(ChatView.kt:2150), not member info. A relay's profile is opened from the +channel members and relays screens, which load all members themselves +(GroupChatInfoView.kt:117, ChannelRelaysView.kt:38). + +The bulk refresh of all members that happened as a side effect of every tap is +gone; each screen refreshes its own data on open. + +## Alternatives Rejected + +- **Guard the load with `!membersLoaded`** — cures repeat taps, leaves the first + tap in a group costing seconds. +- **No model write, fall back to the chat item's member in the modal** — smaller + diff, but "Verify security code" (GroupMemberInfoView.kt:209) resolves the + member through the model too and would open empty; it would need a second + fallback in another file. +- **Move `apiGroupMemberInfo`/`apiGetGroupMemberCode` into `GroupMemberInfoView` + behind a `connectionLoaded` gate (full iOS parity, GroupMemberInfoView.swift:291)** — + opens the card with no API calls at all, but changes the view's signature, three + call sites and two previews, and makes the connection rows appear after the card + on every open. Worth doing separately; it does not affect the cost removed here. + +## Out of Scope + +- The first profile opened after entering a large group is still slower than the + rest. The core is not the cause (1-2 ms measured, agent call included); the tap + waits for the UI thread, which is busy composing the just-loaded page of + messages (`MergedItems.create` over all loaded items, ChatView.kt:1800) and + decoding avatars. Fixing it means making chat opening cheaper, or adding the + member to the model synchronously in the click handler as iOS does. +- Opening a second member's profile while one is already open does not switch the + card: `showInView` drives `AnimatedContent` from `modalCount` alone + (ModalView.kt:207), while `modalViews` is a plain list, so a close and open in + one frame leaves the target state unchanged. Pre-existing, unrelated to this + change. +- Message *Info* (ChatView.kt:706) still loads all members; it needs them to + resolve delivery recipients (ChatItemInfoView.kt:550). A narrower core API + would be required. From 11c7a62a38103b2230cbd1642fd29993fb90287d Mon Sep 17 00:00:00 2001 From: Narasimha-sc <166327228+Narasimha-sc@users.noreply.github.com> Date: Wed, 19 Aug 2026 13:34:07 +0000 Subject: [PATCH 20/24] desktop: fix stretched video preview and playback for AV1 videos (#7391) * desktop: fix stretched video preview and playback for AV1 videos libvlc passes the padded size the decoder allocated to the buffer format callback, not the size of the picture. dav1d pads to a multiple of 128, so a 1920x1080 AV1 video arrives as 1920x1152, and vlc scales the picture to fill it - the preview sent with the message, and desktop playback, were 6.7% too tall. H264 pads much less, so it was barely visible there. Ask for the size of the track being played instead. It is already populated when the buffer format is negotiated, and matching the track that is playing matters for files with more than one video track, where the first track is not necessarily the one being decoded. Falls back to the previous behaviour when the track is not known. * plans: desktop video preview aspect ratio --- .../videoplayer/SkiaBitmapVideoSurface.kt | 16 +++- ...8-18-desktop-video-preview-aspect-ratio.md | 73 +++++++++++++++++++ 2 files changed, 86 insertions(+), 3 deletions(-) create mode 100644 plans/2026-08-18-desktop-video-preview-aspect-ratio.md diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/other/videoplayer/SkiaBitmapVideoSurface.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/other/videoplayer/SkiaBitmapVideoSurface.kt index c2f37fd5d9..f5bba2d344 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/other/videoplayer/SkiaBitmapVideoSurface.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/other/videoplayer/SkiaBitmapVideoSurface.kt @@ -23,6 +23,7 @@ import javax.swing.SwingUtilities internal class SkiaBitmapVideoSurface : VideoSurface(VideoSurfaceAdapters.getVideoSurfaceAdapter()) { private val videoSurface = SkiaBitmapVideoSurface() + @Volatile private var mediaPlayer: MediaPlayer? = null private lateinit var imageInfo: ImageInfo private lateinit var frameBytes: ByteArray private val skiaBitmap: Bitmap = Bitmap() @@ -31,6 +32,7 @@ internal class SkiaBitmapVideoSurface : VideoSurface(VideoSurfaceAdapters.getVid val bitmap: State = composeBitmap override fun attach(mediaPlayer: MediaPlayer) { + this.mediaPlayer = mediaPlayer videoSurface.attach(mediaPlayer) } @@ -39,9 +41,17 @@ internal class SkiaBitmapVideoSurface : VideoSurface(VideoSurfaceAdapters.getVid private var sourceHeight: Int = 0 override fun getBufferFormat(sourceWidth: Int, sourceHeight: Int): BufferFormat { - this.sourceWidth = sourceWidth - this.sourceHeight = sourceHeight - return RV32BufferFormat(sourceWidth, sourceHeight) + // libvlc passes the size the decoder padded the picture to, not the size of the picture (dav1d + // pads to a multiple of 128, so 1920x1080 arrives as 1920x1152), and vlc stretches the picture to + // fill whatever size is returned. Ask for the size of the track being played instead. The format + // is negotiated more than once, and vlc has not selected the track yet on the first calls + val player = mediaPlayer + val tracks = player?.media()?.info()?.videoTracks() + val playingTrack = player?.video()?.track() + val track = tracks?.firstOrNull { it.id() == playingTrack } ?: tracks?.singleOrNull() + this.sourceWidth = track?.width()?.takeIf { it > 0 } ?: sourceWidth + this.sourceHeight = track?.height()?.takeIf { it > 0 } ?: sourceHeight + return RV32BufferFormat(this.sourceWidth, this.sourceHeight) } override fun allocatedBuffers(buffers: Array) { diff --git a/plans/2026-08-18-desktop-video-preview-aspect-ratio.md b/plans/2026-08-18-desktop-video-preview-aspect-ratio.md new file mode 100644 index 0000000000..f3fa4bfe85 --- /dev/null +++ b/plans/2026-08-18-desktop-video-preview-aspect-ratio.md @@ -0,0 +1,73 @@ +# Desktop: video preview and playback stretched for AV1 + +## Problem + +Videos sent from the desktop app arrive with the wrong aspect ratio. It is most visible with +AV1, and only at some resolutions. The preview image sent with the message carries the wrong +dimensions, so the distortion is seen by every recipient on every platform, not only by the +sender. Desktop playback is distorted in the same way. + +## Cause + +The preview frame and the playback surface both come from `SkiaBitmapVideoSurface`, which +allocates its bitmap from the size libvlc passes to the vmem buffer format callback. + +That size is the size the decoder padded the picture to, not the size of the picture. dav1d +pads to a multiple of 128, so a 1920x1080 AV1 video is reported as 1920x1152. libvlc then sets +the visible area of the output format to whatever size the callback returns, which makes the +converter stretch the picture to fill it — the buffer holds a stretched frame, not a padded one. + +Measured against the bundled VLC 3.0.21, comparing the resulting bitmap with the true picture: + +| source | AV1 bitmap | error | H264 bitmap | error | +| ------------- | ---------- | --------------- | ----------- | ------ | +| 1920x1080 | 1920x1152 | 6.7% too tall | 1920x1090 | +0.9% | +| 1280x720 | 1280x768 | 6.7% too tall | 1280x738 | +2.5% | +| 640x360 | 640x384 | 6.7% too tall | 640x386 | +7.2% | +| 1080x1350 | 1152x1408 | 2.2% too wide | 1088x1378 | -1.3% | +| 1080x1080 | 1152x1152 | none | 1088x1090 | +0.2% | +| 1024x768 | 1024x768 | none | 1024x770 | +0.3% | + +Sizes already on the 128 grid are unaffected, which is why the report was "only at certain +dimensions". H264 pads much less, so it was there all along but barely visible. + +Android and iOS are not affected: they use `MediaMetadataRetriever` and return cropped frames. + +## Fix + +Ask libvlc for the size of the track being played instead of accepting the padded size, and +fall back to the padded size when the track is not known. The media player is captured in +`attach`, which always runs before the format callback, because it is what registers the +native callbacks in the first place. + +Two details the implementation depends on, both observed rather than assumed: + +- The format is negotiated more than once, and vlc has not selected the track on the first + calls (`video().track()` returns -1 there), so the single-track fallback is load-bearing. +- The first listed video track is not necessarily the one being decoded. Matching on the + playing track id keeps a file with several video tracks correct; an earlier revision using + the first track made such a file worse than before the fix (320x240 instead of 1920x1080). + +Fixing it at the buffer format keeps the preview and playback correct from one change, and +costs nothing: libvlc already runs a converter to fill the buffer, so it is only given the +right destination size. Rescaling the snapshot afterwards was considered and rejected — it +leaves playback distorted and resamples the frame twice. + +## Verification + +- The buffer produced with the fix is pixel identical to the frame decoded by ffmpeg + (PSNR inf) for both landscape and portrait clips. +- The real compiled class driven against the bundled VLC 3.0.21 produces correct bitmaps + where the current code does not: 1920x1152 -> 1920x1080, 1152x1408 -> 1080x1350, + 1280x768 -> 1280x720, 768x384 -> 641x361. +- 33 clips covering AV1/H264/VP9, mp4/mkv/webm, rotated, anamorphic, multi-track, cover art, + odd and 1x1 sizes, audio only and corrupt files, on both VLC 3.0.21 and 3.0.23. +- No buffer/format tearing across repeated, pooled and concurrent playback; with the fix every + negotiation returns the same size, where before they disagreed. + +## Out of scope + +- `getBitmapFromVideo` reads the orientation from the first video track and has the same + first-track assumption. +- Sample aspect ratio is ignored throughout, so anamorphic video is still shown with square + pixels. Unchanged by this fix. From 95dff9120549c45ab35602f9a3078a2480692b16 Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Wed, 19 Aug 2026 17:35:00 +0400 Subject: [PATCH 21/24] flatpak: update metainfo (#7395) --- .../flatpak/chat.simplex.simplex.metainfo.xml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/scripts/flatpak/chat.simplex.simplex.metainfo.xml b/scripts/flatpak/chat.simplex.simplex.metainfo.xml index e6ecc7478d..ca55a08383 100644 --- a/scripts/flatpak/chat.simplex.simplex.metainfo.xml +++ b/scripts/flatpak/chat.simplex.simplex.metainfo.xml @@ -38,6 +38,23 @@ + + https://simplex.chat/blog/20260722-simplex-public-names.html + +

New in v7.0-v7.0.1.

+

SimpleX public names for channels and businesses (BETA).

+

Better channels:

+
    +
  • Promote subscribers to contributors.
  • +
  • Publish your channel on your website.
  • +
  • Verify security code with contributors.
  • +
  • Wider messages, easier to read.
  • +
  • Host your own chat relays.
  • +
+

Add a longer description to your profile.

+

Simplified app settings.

+
+
https://simplex.chat/blog/20260722-simplex-public-names.html From c3e8c56aa0a75bbbcd9a1eec6f3f3479d44bab8f Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 20 Aug 2026 09:00:49 +0100 Subject: [PATCH 22/24] directory: revert command change --- apps/simplex-directory-service/src/Directory/Service.hs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index fe57489f4d..61ed7e66af 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -238,7 +238,7 @@ directoryCommands = "Group settings" [ CBCCommand "role" "View new member role" idParam, CBCCommand "filter" "Anti-spam filter" idParam, - CBCCommand "link" "View group link" idParam, + CBCCommand "link" "View and upgrade group link" idParam, CBCCommand "delete" "Remove a group from directory" (Just ":''") ] ] From b9d38ec05d1cdc716e78e4535ae500c1970efb1d Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Thu, 20 Aug 2026 13:39:02 +0400 Subject: [PATCH 23/24] core: fast queue rotation not requiring the current server to be online (#7397) * core: fast queue rotation not requiring the current server to be online * simplexmq --------- Co-authored-by: Evgeny Poberezkin --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat/View.hs | 2 ++ 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/cabal.project b/cabal.project index 0895113b5e..fa144d6780 100644 --- a/cabal.project +++ b/cabal.project @@ -21,7 +21,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: c5ff829cfb37247a09d82000d42c82280015b4ba + tag: 0d3cf39c27aec1c51c88d7bf3d6762bc22278967 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 1b15e68d60..f1456b7143 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."c5ff829cfb37247a09d82000d42c82280015b4ba" = "1sjv0bkyqqimi2s84s4jsdbh5gwnw2pv5bkl1i3cgp6081wyfx31"; + "https://github.com/simplex-chat/simplexmq.git"."0d3cf39c27aec1c51c88d7bf3d6762bc22278967" = "115m1h8pc4wdbd5y1prz7qgqnxhsin1f6m53k4szab9c1iawlf4v"; "https://github.com/simplex-chat/hs-socks.git"."a30cc7a79a08d8108316094f8f2f82a0c5e1ac51" = "0yasvnr7g91k76mjkamvzab2kvlb1g5pspjyjn2fr6v83swjhj38"; "https://github.com/simplex-chat/direct-sqlcipher.git"."f814ee68b16a9447fbb467ccc8f29bdd3546bfd9" = "1ql13f4kfwkbaq7nygkxgw84213i0zm7c1a8hwvramayxl38dq5d"; "https://github.com/simplex-chat/sqlcipher-simple.git"."a46bd361a19376c5211f1058908fc0ae6bf42446" = "1z0r78d8f0812kxbgsm735qf6xx8lvaz27k1a0b4a2m0sshpd5gl"; diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index 72631dc3f8..985e3c0666 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -1917,6 +1917,8 @@ viewSndQueuesInfo = plain . T.intercalate ", " . map showQueueInfo showSwitchStatus = \case SSSendingQKEY -> "switch started" SSSendingQTEST -> "switch secured" + SSSecuringQueue -> "switch confirmed" + SSSendingQEND -> "switch secured" viewContactSwitch :: Contact -> SwitchProgress -> [StyledString] viewContactSwitch _ (SwitchProgress _ SPConfirmed _) = [] From 293e47d033a35ab9e75316ae62463143f77adbec Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 20 Aug 2026 10:57:15 +0100 Subject: [PATCH 24/24] core: 7.1.0.3 (simplexmq 7.1.0.4) --- simplex-chat.cabal | 2 +- .../Store/SQLite/Migrations/agent_query_plans.txt | 13 +++++++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 26f808d266..63db5d040c 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -5,7 +5,7 @@ cabal-version: 1.12 -- see: https://github.com/sol/hpack name: simplex-chat -version: 7.1.0.2 +version: 7.1.0.3 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat diff --git a/src/Simplex/Chat/Store/SQLite/Migrations/agent_query_plans.txt b/src/Simplex/Chat/Store/SQLite/Migrations/agent_query_plans.txt index 4438182941..509b9b35f4 100644 --- a/src/Simplex/Chat/Store/SQLite/Migrations/agent_query_plans.txt +++ b/src/Simplex/Chat/Store/SQLite/Migrations/agent_query_plans.txt @@ -691,6 +691,15 @@ Query: Plan: +Query: + INSERT INTO snd_message_deliveries (conn_id, snd_queue_id, internal_id) + SELECT conn_id, ?, internal_id + FROM snd_message_deliveries + WHERE conn_id = ? AND snd_queue_id = ? AND failed = 0 + +Plan: +SEARCH snd_message_deliveries USING COVERING INDEX idx_snd_message_deliveries_expired (conn_id=? AND snd_queue_id=? AND failed=?) + Query: INSERT INTO snd_messages ( conn_id, internal_snd_id, internal_id, internal_hash, previous_msg_hash, msg_encrypt_key, padded_msg_len, snd_message_body_id) @@ -1221,6 +1230,10 @@ Query: SELECT count(1) FROM snd_message_bodies Plan: SCAN snd_message_bodies +Query: SELECT count(1) FROM snd_message_deliveries WHERE conn_id = ? AND snd_queue_id = ? AND failed = 0 +Plan: +SEARCH snd_message_deliveries USING COVERING INDEX idx_snd_message_deliveries_expired (conn_id=? AND snd_queue_id=? AND failed=?) + Query: SELECT count(1) FROM users Plan: SCAN users