From 069395c2a0bd3c8793182bd7433e36ba290a8864 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 4 Apr 2024 22:24:42 +0400 Subject: [PATCH 001/147] core: entity locks (#3962) * core: entity locks * more locks * update sha256map * add delay * clean up * empty * fix tests * empty * empty * more delays * empty * comment delays * Revert "comment delays" This reverts commit 4245b545fba4dc20d2bc7ce08c0cd46907722fc6. * Revert "Revert "comment delays"" This reverts commit f803386945abe6a3e1d9d94e31e9ed9af2061330. * take lock in the beginning of processing loop * empty * empty * remove lock * rework file locks * empty * fix * empty * add connection locks * empty * fix test * empty * remove commented delays * add to debug locks * update * refactor * refactor --------- Co-authored-by: Evgeny Poberezkin --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat.hs | 349 ++++++++++++++------------ src/Simplex/Chat/Controller.hs | 15 +- src/Simplex/Chat/Protocol.hs | 2 +- src/Simplex/Chat/Store.hs | 1 + src/Simplex/Chat/Store/Connections.hs | 29 ++- src/Simplex/Chat/Store/Files.hs | 6 +- src/Simplex/Chat/Store/Shared.hs | 9 + src/Simplex/Chat/View.hs | 5 +- tests/ChatTests/Files.hs | 3 +- tests/ChatTests/Profiles.hs | 10 +- 12 files changed, 255 insertions(+), 178 deletions(-) diff --git a/cabal.project b/cabal.project index 62115c136b..4e8cfd22ee 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 6bc4f6c94e11f59604b0d9c576e62e01bc08b4cd + tag: 791368c7beb3996ab4a10f25dbf8cad1e289b413 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index d2701dc45f..a671f28751 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."6bc4f6c94e11f59604b0d9c576e62e01bc08b4cd" = "08l00ay1ibz7skhlpfjp6z2821zpfd0kxplwdm6zc63m2f6za7cv"; + "https://github.com/simplex-chat/simplexmq.git"."791368c7beb3996ab4a10f25dbf8cad1e289b413" = "0wbxk69lv6h17b5rdqskxwhc1wfvn1zi8q4a4w57qfzkzyaxkymk"; "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.hs b/src/Simplex/Chat.hs index 7948875180..c62fdfb8bd 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -88,9 +88,9 @@ import Simplex.FileTransfer.Description (FileDescriptionURI (..), ValidFileDescr import qualified Simplex.FileTransfer.Description as FD import Simplex.FileTransfer.Protocol (FileParty (..), FilePartyI) import Simplex.Messaging.Agent as Agent -import Simplex.Messaging.Agent.Client (AgentStatsKey (..), SubInfo (..), agentClientStore, getAgentWorkersDetails, getAgentWorkersSummary, temporaryAgentError) +import Simplex.Messaging.Agent.Client (AgentStatsKey (..), SubInfo (..), agentClientStore, getAgentWorkersDetails, getAgentWorkersSummary, temporaryAgentError, withLockMap) import Simplex.Messaging.Agent.Env.SQLite (AgentConfig (..), InitialAgentServers (..), createAgentStore, defaultAgentConfig) -import Simplex.Messaging.Agent.Lock +import Simplex.Messaging.Agent.Lock (withLock) import Simplex.Messaging.Agent.Protocol import qualified Simplex.Messaging.Agent.Protocol as AP (AgentErrorType (..)) import Simplex.Messaging.Agent.Store.SQLite (MigrationConfirmation (..), MigrationError, SQLiteStore (dbNew), execSQL, upMigration, withConnection) @@ -227,6 +227,7 @@ newChatController connNetworkStatuses <- atomically TM.empty subscriptionMode <- newTVarIO SMSubscribe chatLock <- newEmptyTMVarIO + entityLocks <- atomically TM.empty sndFiles <- newTVarIO M.empty rcvFiles <- newTVarIO M.empty currentCalls <- atomically TM.empty @@ -263,6 +264,7 @@ newChatController connNetworkStatuses, subscriptionMode, chatLock, + entityLocks, sndFiles, rcvFiles, currentCalls, @@ -310,6 +312,40 @@ newChatController userServers :: User -> IO (NonEmpty (ProtoServerWithAuth p)) userServers user' = activeAgentServers config protocol <$> withTransaction chatStore (`getProtocolServers` user') +withChatLock :: String -> CM a -> CM a +withChatLock name action = asks chatLock >>= \l -> withLock l name action + +withEntityLock :: String -> ChatLockEntity -> CM a -> CM a +withEntityLock name entity action = do + chatLock <- asks chatLock + ls <- asks entityLocks + atomically $ unlessM (isEmptyTMVar chatLock) retry + withLockMap ls entity name action + +withInvitationLock :: String -> ByteString -> CM a -> CM a +withInvitationLock name = withEntityLock name . CLInvitation +{-# INLINE withInvitationLock #-} + +withConnectionLock :: String -> Int64 -> CM a -> CM a +withConnectionLock name = withEntityLock name . CLConnection +{-# INLINE withConnectionLock #-} + +withContactLock :: String -> ContactId -> CM a -> CM a +withContactLock name = withEntityLock name . CLContact +{-# INLINE withContactLock #-} + +withGroupLock :: String -> GroupId -> CM a -> CM a +withGroupLock name = withEntityLock name . CLGroup +{-# INLINE withGroupLock #-} + +withUserContactLock :: String -> Int64 -> CM a -> CM a +withUserContactLock name = withEntityLock name . CLUserContact +{-# INLINE withUserContactLock #-} + +withFileLock :: String -> Int64 -> CM a -> CM a +withFileLock name = withEntityLock name . CLFile +{-# INLINE withFileLock #-} + activeAgentServers :: UserProtocol p => ChatConfig -> SProtocolType p -> [ServerCfg p] -> NonEmpty (ProtoServerWithAuth p) activeAgentServers ChatConfig {defaultServers} p = fromMaybe (cfgServers p defaultServers) @@ -669,8 +705,8 @@ processChatCommand' vr = \case memStatuses -> pure $ Just $ map (uncurry MemberDeliveryStatus) memStatuses _ -> pure Nothing pure $ CRChatItemInfo user aci ChatItemInfo {itemVersions, memberDeliveryStatuses} - APISendMessage (ChatRef cType chatId) live itemTTL (ComposedMessage file_ quotedItemId_ mc) -> withUser $ \user -> withChatLock "sendMessage" $ case cType of - CTDirect -> do + APISendMessage (ChatRef cType chatId) live itemTTL (ComposedMessage file_ quotedItemId_ mc) -> withUser $ \user -> case cType of + CTDirect -> withContactLock "sendMessage" chatId $ do ct@Contact {contactId, contactUsed} <- withStore $ \db -> getContact db vr user chatId assertDirectAllowed user MDSnd ct XMsgNew_ unless contactUsed $ withStore' $ \db -> updateContactUsed db user ct @@ -707,7 +743,7 @@ processChatCommand' vr = \case quoteData ChatItem {content = CISndMsgContent qmc} = pure (qmc, CIQDirectSnd, True) quoteData ChatItem {content = CIRcvMsgContent qmc} = pure (qmc, CIQDirectRcv, False) quoteData _ = throwChatError CEInvalidQuote - CTGroup -> do + CTGroup -> withGroupLock "sendMessage" chatId $ do g@(Group gInfo _) <- withStore $ \db -> getGroup db vr user chatId assertUserGroupRole gInfo GRAuthor send g @@ -767,8 +803,8 @@ processChatCommand' vr = \case pure CIFile {fileId, fileName = takeFileName filePath, fileSize, fileSource = Just cf, fileStatus = CIFSSndStored, fileProtocol = FPLocal} let ci = mkChatItem cd ciId content ciFile_ Nothing Nothing Nothing False createdAt Nothing createdAt pure . CRNewChatItem user $ AChatItem SCTLocal SMDSnd (LocalChat nf) ci - APIUpdateChatItem (ChatRef cType chatId) itemId live mc -> withUser $ \user -> withChatLock "updateChatItem" $ case cType of - CTDirect -> do + APIUpdateChatItem (ChatRef cType chatId) itemId live mc -> withUser $ \user -> case cType of + CTDirect -> withContactLock "updateChatItem" chatId $ do ct@Contact {contactId} <- withStore $ \db -> getContact db vr user chatId assertDirectAllowed user MDSnd ct XMsgUpdate_ cci <- withStore $ \db -> getDirectCIWithReactions db user ct itemId @@ -790,7 +826,7 @@ processChatCommand' vr = \case else pure $ CRChatItemNotChanged user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci) _ -> throwChatError CEInvalidChatItemUpdate CChatItem SMDRcv _ -> throwChatError CEInvalidChatItemUpdate - CTGroup -> do + CTGroup -> withGroupLock "updateChatItem" chatId $ do Group gInfo@GroupInfo {groupId} ms <- withStore $ \db -> getGroup db vr user chatId assertUserGroupRole gInfo GRAuthor cci <- withStore $ \db -> getGroupCIWithReactions db user gInfo itemId @@ -825,8 +861,8 @@ processChatCommand' vr = \case _ -> throwChatError CEInvalidChatItemUpdate CTContactRequest -> pure $ chatCmdError (Just user) "not supported" CTContactConnection -> pure $ chatCmdError (Just user) "not supported" - APIDeleteChatItem (ChatRef cType chatId) itemId mode -> withUser $ \user -> withChatLock "deleteChatItem" $ case cType of - CTDirect -> do + APIDeleteChatItem (ChatRef cType chatId) itemId mode -> withUser $ \user -> case cType of + CTDirect -> withContactLock "deleteChatItem" chatId $ do (ct, CChatItem msgDir ci@ChatItem {meta = CIMeta {itemSharedMsgId, editable}}) <- withStore $ \db -> (,) <$> getContact db vr user chatId <*> getDirectChatItem db user chatId itemId case (mode, msgDir, itemSharedMsgId, editable) of (CIDMInternal, _, _, _) -> deleteDirectCI user ct ci True False @@ -837,7 +873,7 @@ processChatCommand' vr = \case then deleteDirectCI user ct ci True False else markDirectCIDeleted user ct ci msgId True =<< liftIO getCurrentTime (CIDMBroadcast, _, _, _) -> throwChatError CEInvalidChatItemDelete - CTGroup -> do + CTGroup -> withGroupLock "deleteChatItem" chatId $ do Group gInfo ms <- withStore $ \db -> getGroup db vr user chatId CChatItem msgDir ci@ChatItem {meta = CIMeta {itemSharedMsgId, editable}} <- withStore $ \db -> getGroupChatItem db user chatId itemId case (mode, msgDir, itemSharedMsgId, editable) of @@ -852,7 +888,7 @@ processChatCommand' vr = \case deleteLocalCI user nf ci True False CTContactRequest -> pure $ chatCmdError (Just user) "not supported" CTContactConnection -> pure $ chatCmdError (Just user) "not supported" - APIDeleteMemberChatItem gId mId itemId -> withUser $ \user -> withChatLock "deleteChatItem" $ do + APIDeleteMemberChatItem gId mId itemId -> withUser $ \user -> withGroupLock "deleteChatItem" gId $ do Group gInfo@GroupInfo {membership} ms <- withStore $ \db -> getGroup db vr user gId CChatItem _ ci@ChatItem {chatDir, meta = CIMeta {itemSharedMsgId}} <- withStore $ \db -> getGroupChatItem db user gId itemId case (chatDir, itemSharedMsgId) of @@ -862,44 +898,46 @@ processChatCommand' vr = \case (SndMessage {msgId}, _) <- sendGroupMessage user gInfo ms $ XMsgDel itemSharedMId $ Just memberId delGroupChatItem user gInfo ci msgId (Just membership) (_, _) -> throwChatError CEInvalidChatItemDelete - APIChatItemReaction (ChatRef cType chatId) itemId add reaction -> withUser $ \user -> withChatLock "chatItemReaction" $ case cType of + APIChatItemReaction (ChatRef cType chatId) itemId add reaction -> withUser $ \user -> case cType of CTDirect -> - withStore (\db -> (,) <$> getContact db vr user chatId <*> getDirectChatItem db user chatId itemId) >>= \case - (ct, CChatItem md ci@ChatItem {meta = CIMeta {itemSharedMsgId = Just itemSharedMId}}) -> do - unless (featureAllowed SCFReactions forUser ct) $ - throwChatError (CECommandError $ "feature not allowed " <> T.unpack (chatFeatureNameText CFReactions)) - unless (ciReactionAllowed ci) $ - throwChatError (CECommandError "reaction not allowed - chat item has no content") - rs <- withStore' $ \db -> getDirectReactions db ct itemSharedMId True - checkReactionAllowed rs - (SndMessage {msgId}, _) <- sendDirectContactMessage user ct $ XMsgReact itemSharedMId Nothing reaction add - createdAt <- liftIO getCurrentTime - reactions <- withStore' $ \db -> do - setDirectReaction db ct itemSharedMId True reaction add msgId createdAt - liftIO $ getDirectCIReactions db ct itemSharedMId - let ci' = CChatItem md ci {reactions} - r = ACIReaction SCTDirect SMDSnd (DirectChat ct) $ CIReaction CIDirectSnd ci' createdAt reaction - pure $ CRChatItemReaction user add r - _ -> throwChatError $ CECommandError "reaction not possible - no shared item ID" + withContactLock "chatItemReaction" chatId $ + withStore (\db -> (,) <$> getContact db vr user chatId <*> getDirectChatItem db user chatId itemId) >>= \case + (ct, CChatItem md ci@ChatItem {meta = CIMeta {itemSharedMsgId = Just itemSharedMId}}) -> do + unless (featureAllowed SCFReactions forUser ct) $ + throwChatError (CECommandError $ "feature not allowed " <> T.unpack (chatFeatureNameText CFReactions)) + unless (ciReactionAllowed ci) $ + throwChatError (CECommandError "reaction not allowed - chat item has no content") + rs <- withStore' $ \db -> getDirectReactions db ct itemSharedMId True + checkReactionAllowed rs + (SndMessage {msgId}, _) <- sendDirectContactMessage user ct $ XMsgReact itemSharedMId Nothing reaction add + createdAt <- liftIO getCurrentTime + reactions <- withStore' $ \db -> do + setDirectReaction db ct itemSharedMId True reaction add msgId createdAt + liftIO $ getDirectCIReactions db ct itemSharedMId + let ci' = CChatItem md ci {reactions} + r = ACIReaction SCTDirect SMDSnd (DirectChat ct) $ CIReaction CIDirectSnd ci' createdAt reaction + pure $ CRChatItemReaction user add r + _ -> throwChatError $ CECommandError "reaction not possible - no shared item ID" CTGroup -> - withStore (\db -> (,) <$> getGroup db vr user chatId <*> getGroupChatItem db user chatId itemId) >>= \case - (Group g@GroupInfo {membership} ms, CChatItem md ci@ChatItem {meta = CIMeta {itemSharedMsgId = Just itemSharedMId}}) -> do - unless (groupFeatureAllowed SGFReactions g) $ - throwChatError (CECommandError $ "feature not allowed " <> T.unpack (chatFeatureNameText CFReactions)) - unless (ciReactionAllowed ci) $ - throwChatError (CECommandError "reaction not allowed - chat item has no content") - let GroupMember {memberId = itemMemberId} = chatItemMember g ci - rs <- withStore' $ \db -> getGroupReactions db g membership itemMemberId itemSharedMId True - checkReactionAllowed rs - (SndMessage {msgId}, _) <- sendGroupMessage user g ms (XMsgReact itemSharedMId (Just itemMemberId) reaction add) - createdAt <- liftIO getCurrentTime - reactions <- withStore' $ \db -> do - setGroupReaction db g membership itemMemberId itemSharedMId True reaction add msgId createdAt - liftIO $ getGroupCIReactions db g itemMemberId itemSharedMId - let ci' = CChatItem md ci {reactions} - r = ACIReaction SCTGroup SMDSnd (GroupChat g) $ CIReaction CIGroupSnd ci' createdAt reaction - pure $ CRChatItemReaction user add r - _ -> throwChatError $ CECommandError "reaction not possible - no shared item ID" + withGroupLock "chatItemReaction" chatId $ + withStore (\db -> (,) <$> getGroup db vr user chatId <*> getGroupChatItem db user chatId itemId) >>= \case + (Group g@GroupInfo {membership} ms, CChatItem md ci@ChatItem {meta = CIMeta {itemSharedMsgId = Just itemSharedMId}}) -> do + unless (groupFeatureAllowed SGFReactions g) $ + throwChatError (CECommandError $ "feature not allowed " <> T.unpack (chatFeatureNameText CFReactions)) + unless (ciReactionAllowed ci) $ + throwChatError (CECommandError "reaction not allowed - chat item has no content") + let GroupMember {memberId = itemMemberId} = chatItemMember g ci + rs <- withStore' $ \db -> getGroupReactions db g membership itemMemberId itemSharedMId True + checkReactionAllowed rs + (SndMessage {msgId}, _) <- sendGroupMessage user g ms (XMsgReact itemSharedMId (Just itemMemberId) reaction add) + createdAt <- liftIO getCurrentTime + reactions <- withStore' $ \db -> do + setGroupReaction db g membership itemMemberId itemSharedMId True reaction add msgId createdAt + liftIO $ getGroupCIReactions db g itemMemberId itemSharedMId + let ci' = CChatItem md ci {reactions} + r = ACIReaction SCTGroup SMDSnd (GroupChat g) $ CIReaction CIGroupSnd ci' createdAt reaction + pure $ CRChatItemReaction user add r + _ -> throwChatError $ CECommandError "reaction not possible - no shared item ID" CTLocal -> pure $ chatCmdError (Just user) "not supported" CTContactRequest -> pure $ chatCmdError (Just user) "not supported" CTContactConnection -> pure $ chatCmdError (Just user) "not supported" @@ -959,7 +997,7 @@ processChatCommand' vr = \case CTDirect -> do ct <- withStore $ \db -> getContact db vr user chatId filesInfo <- withStore' $ \db -> getContactFileInfo db user ct - withChatLock "deleteChat direct" . procCmd $ do + withContactLock "deleteChat direct" chatId . procCmd $ do cancelFilesInProgress user filesInfo deleteFilesLocally filesInfo let doSendDel = contactReady ct && contactActive ct && notify @@ -971,7 +1009,7 @@ processChatCommand' vr = \case withStore' $ \db -> deleteContactConnectionsAndFiles db userId ct withStore $ \db -> deleteContact db user ct pure $ CRContactDeleted user ct - CTContactConnection -> withChatLock "deleteChat contactConnection" . procCmd $ do + CTContactConnection -> withConnectionLock "deleteChat contactConnection" chatId . procCmd $ do conn@PendingContactConnection {pccAgentConnId = AgentConnId acId} <- withStore $ \db -> getPendingContactConnection db userId chatId deleteAgentConnectionAsync user acId withStore' $ \db -> deletePendingContactConnection db userId chatId @@ -983,7 +1021,7 @@ processChatCommand' vr = \case canDelete = isOwner || not (memberCurrent membership) unless canDelete $ throwChatError $ CEGroupUserRole gInfo GROwner filesInfo <- withStore' $ \db -> getGroupFileInfo db user gInfo - withChatLock "deleteChat group" . procCmd $ do + withGroupLock "deleteChat group" chatId . procCmd $ do cancelFilesInProgress user filesInfo deleteFilesLocally filesInfo let doSendDel = memberActive membership && isOwner @@ -1038,28 +1076,29 @@ processChatCommand' vr = \case CTLocal -> do nf <- withStore $ \db -> getNoteFolder db user chatId filesInfo <- withStore' $ \db -> getNoteFolderFileInfo db user nf - withChatLock "clearChat local" . procCmd $ do - deleteFilesLocally filesInfo - withStore' $ \db -> deleteNoteFolderFiles db userId nf - withStore' $ \db -> deleteNoteFolderCIs db user nf - pure $ CRChatCleared user (AChatInfo SCTLocal $ LocalChat nf) + deleteFilesLocally filesInfo + withStore' $ \db -> deleteNoteFolderFiles db userId nf + withStore' $ \db -> deleteNoteFolderCIs db user nf + pure $ CRChatCleared user (AChatInfo SCTLocal $ LocalChat nf) CTContactConnection -> pure $ chatCmdError (Just user) "not supported" CTContactRequest -> pure $ chatCmdError (Just user) "not supported" - APIAcceptContact incognito connReqId -> withUser $ \_ -> withChatLock "acceptContact" $ do + APIAcceptContact incognito connReqId -> withUser $ \_ -> do (user@User {userId}, cReq@UserContactRequest {userContactLinkId}) <- withStore $ \db -> getContactRequest' db connReqId - ucl <- withStore $ \db -> getUserContactLinkById db userId userContactLinkId - let contactUsed = (\(_, groupId_, _) -> isNothing groupId_) ucl - -- [incognito] generate profile to send, create connection with incognito profile - incognitoProfile <- if incognito then Just . NewIncognito <$> liftIO generateRandomProfile else pure Nothing - ct <- acceptContactRequest user cReq incognitoProfile contactUsed - pure $ CRAcceptingContactRequest user ct - APIRejectContact connReqId -> withUser $ \user -> withChatLock "rejectContact" $ do - cReq@UserContactRequest {agentContactConnId = AgentConnId connId, agentInvitationId = AgentInvId invId} <- + withUserContactLock "acceptContact" userContactLinkId $ do + ucl <- withStore $ \db -> getUserContactLinkById db userId userContactLinkId + let contactUsed = (\(_, groupId_, _) -> isNothing groupId_) ucl + -- [incognito] generate profile to send, create connection with incognito profile + incognitoProfile <- if incognito then Just . NewIncognito <$> liftIO generateRandomProfile else pure Nothing + ct <- acceptContactRequest user cReq incognitoProfile contactUsed + pure $ CRAcceptingContactRequest user ct + APIRejectContact connReqId -> withUser $ \user -> do + cReq@UserContactRequest {userContactLinkId, agentContactConnId = AgentConnId connId, agentInvitationId = AgentInvId invId} <- withStore $ \db -> getContactRequest db user connReqId `storeFinally` liftIO (deleteContactRequest db user connReqId) - withAgent $ \a -> rejectContact a connId invId - pure $ CRContactRequestRejected user cReq + withUserContactLock "rejectContact" userContactLinkId $ do + withAgent $ \a -> rejectContact a connId invId + pure $ CRContactRequestRejected user cReq APISendCallInvitation contactId callType -> withUser $ \user -> do -- party initiating call ct <- withStore $ \db -> getContact db vr user contactId @@ -1067,7 +1106,7 @@ processChatCommand' vr = \case if featureAllowed SCFCalls forUser ct then do calls <- asks currentCalls - withChatLock "sendCallInvitation" $ do + withContactLock "sendCallInvitation" contactId $ do g <- asks random callId <- atomically $ CallId <$> C.randomBytes 16 g dhKeyPair <- atomically $ if encryptedCall callType then Just <$> C.generateKeyPair g else pure Nothing @@ -1192,12 +1231,11 @@ processChatCommand' vr = \case toServerCfg server = ServerCfg {server, preset = True, tested = Nothing, enabled = True} GetUserProtoServers aProtocol -> withUser $ \User {userId} -> processChatCommand $ APIGetUserProtoServers userId aProtocol - APISetUserProtoServers userId (APSC p (ProtoServersConfig servers)) -> withUserId userId $ \user -> withServerProtocol p $ - withChatLock "setUserSMPServers" $ do - withStore $ \db -> overwriteProtocolServers db user servers - cfg <- asks config - lift $ withAgent' $ \a -> setProtocolServers a (aUserId user) $ activeAgentServers cfg p servers - ok user + APISetUserProtoServers userId (APSC p (ProtoServersConfig servers)) -> withUserId userId $ \user -> withServerProtocol p $ do + withStore $ \db -> overwriteProtocolServers db user servers + cfg <- asks config + lift $ withAgent' $ \a -> setProtocolServers a (aUserId user) $ activeAgentServers cfg p servers + ok user SetUserProtoServers serversConfig -> withUser $ \User {userId} -> processChatCommand $ APISetUserProtoServers userId serversConfig APITestProtoServer userId srv@(AProtoServerWithAuth _ server) -> withUserId userId $ \user -> @@ -1300,7 +1338,7 @@ processChatCommand' vr = \case connectionStats <- withAgent $ \a -> abortConnectionSwitch a connId pure $ CRGroupMemberSwitchAborted user g m connectionStats _ -> throwChatError CEGroupMemberNotActive - APISyncContactRatchet contactId force -> withUser $ \user -> withChatLock "syncContactRatchet" $ do + APISyncContactRatchet contactId force -> withUser $ \user -> withContactLock "syncContactRatchet" contactId $ do ct <- withStore $ \db -> getContact db vr user contactId case contactConn ct of Just conn@Connection {pqSupport} -> do @@ -1308,7 +1346,7 @@ processChatCommand' vr = \case createInternalChatItem user (CDDirectSnd ct) (CISndConnEvent $ SCERatchetSync rss Nothing) Nothing pure $ CRContactRatchetSyncStarted user ct cStats Nothing -> throwChatError $ CEContactNotActive ct - APISyncGroupMemberRatchet gId gMemberId force -> withUser $ \user -> withChatLock "syncGroupMemberRatchet" $ do + APISyncGroupMemberRatchet gId gMemberId force -> withUser $ \user -> withGroupLock "syncGroupMemberRatchet" gId $ do (g, m) <- withStore $ \db -> (,) <$> getGroupInfo db vr user gId <*> getGroupMember db vr user gId gMemberId case memberConnId m of Just connId -> do @@ -1397,7 +1435,7 @@ processChatCommand' vr = \case EnableGroupMember gName mName -> withMemberName gName mName $ \gId mId -> APIEnableGroupMember gId mId ChatHelp section -> pure $ CRChatHelp section Welcome -> withUser $ pure . CRWelcome - APIAddContact userId incognito -> withUserId userId $ \user -> withChatLock "addContact" . procCmd $ do + APIAddContact userId incognito -> withUserId userId $ \user -> procCmd $ do -- [incognito] generate profile for connection incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing subMode <- chatReadVar subscriptionMode @@ -1424,9 +1462,8 @@ processChatCommand' vr = \case Just conn' -> pure $ CRConnectionIncognitoUpdated user conn' Nothing -> throwChatError CEConnectionIncognitoChangeProhibited APIConnectPlan userId cReqUri -> withUserId userId $ \user -> - withChatLock "connectPlan" . procCmd $ - CRConnectionPlan user <$> connectPlan user cReqUri - APIConnect userId incognito (Just (ACR SCMInvitation cReq)) -> withUserId userId $ \user -> withChatLock "connect" . procCmd $ do + CRConnectionPlan user <$> connectPlan user cReqUri + APIConnect userId incognito (Just (ACR SCMInvitation cReq)) -> withUserId userId $ \user -> withInvitationLock "connect" (strEncode cReq) . procCmd $ do subMode <- chatReadVar subscriptionMode -- [incognito] generate profile to send incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing @@ -1471,7 +1508,7 @@ processChatCommand' vr = \case CRContactsList user <$> withStore' (\db -> getUserContacts db vr user) ListContacts -> withUser $ \User {userId} -> processChatCommand $ APIListContacts userId - APICreateMyAddress userId -> withUserId userId $ \user -> withChatLock "createMyAddress" . procCmd $ do + APICreateMyAddress userId -> withUserId userId $ \user -> procCmd $ do subMode <- chatReadVar subscriptionMode -- TODO v5.7 pass IPPQOn (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMContact Nothing IKPQOff subMode @@ -1636,7 +1673,7 @@ processChatCommand' vr = \case pure $ CRGroupCreated user groupInfo NewGroup incognito gProfile -> withUser $ \User {userId} -> processChatCommand $ APINewGroup userId incognito gProfile - APIAddMember groupId contactId memRole -> withUser $ \user -> withChatLock "addMember" $ do + APIAddMember groupId contactId memRole -> withUser $ \user -> withGroupLock "addMember" groupId $ do -- TODO for large groups: no need to load all members to determine if contact is a member (group, contact) <- withStore $ \db -> (,) <$> getGroup db vr user groupId <*> getContact db vr user contactId assertDirectAllowed user MDSnd contact XGrpInv_ @@ -1666,7 +1703,7 @@ processChatCommand' vr = \case Nothing -> throwChatError $ CEGroupCantResendInvitation gInfo cName | otherwise -> throwChatError $ CEGroupDuplicateMember cName APIJoinGroup groupId -> withUser $ \user@User {userId} -> do - withChatLock "joinGroup" . procCmd $ do + withGroupLock "joinGroup" groupId . procCmd $ do (invitation, ct) <- withStore $ \db -> do inv@ReceivedGroupInvitation {fromMember} <- getGroupInvitation db vr user groupId (inv,) <$> getContactViaMember db vr user fromMember @@ -1697,7 +1734,7 @@ processChatCommand' vr = \case changeMemberRole user gInfo members m gEvent = do let GroupMember {memberId = mId, memberRole = mRole, memberStatus = mStatus, memberContactId, localDisplayName = cName} = m assertUserGroupRole gInfo $ maximum [GRAdmin, mRole, memRole] - withChatLock "memberRole" . procCmd $ do + withGroupLock "memberRole" groupId . procCmd $ do unless (mRole == memRole) $ do withStore' $ \db -> updateGroupMemberRole db user m memRole case mStatus of @@ -1719,7 +1756,7 @@ processChatCommand' vr = \case let GroupMember {memberId = bmMemberId, memberRole = bmRole, memberProfile = bmp} = bm assertUserGroupRole gInfo $ max GRAdmin bmRole when (blocked == blockedByAdmin bm) $ throwChatError $ CECommandError $ if blocked then "already blocked" else "already unblocked" - withChatLock "blockForAll" . procCmd $ do + withGroupLock "blockForAll" groupId . procCmd $ do let mrs = if blocked then MRSBlocked else MRSUnrestricted event = XGrpMemRestrict bmMemberId MemberRestrictions {restriction = mrs} (msg, _) <- sendGroupMessage' user gInfo remainingMembers event @@ -1741,7 +1778,7 @@ processChatCommand' vr = \case Nothing -> throwChatError CEGroupMemberNotFound Just m@GroupMember {memberId = mId, memberRole = mRole, memberStatus = mStatus, memberProfile} -> do assertUserGroupRole gInfo $ max GRAdmin mRole - withChatLock "removeMember" . procCmd $ do + withGroupLock "removeMember" groupId . procCmd $ do case mStatus of GSMemInvited -> do deleteMemberConnection user m @@ -1757,7 +1794,7 @@ processChatCommand' vr = \case APILeaveGroup groupId -> withUser $ \user@User {userId} -> do Group gInfo@GroupInfo {membership} members <- withStore $ \db -> getGroup db vr user groupId filesInfo <- withStore' $ \db -> getGroupFileInfo db user gInfo - withChatLock "leaveGroup" . procCmd $ do + withGroupLock "leaveGroup" groupId . procCmd $ do cancelFilesInProgress user filesInfo (msg, _) <- sendGroupMessage' user gInfo members XGrpLeave ci <- saveSndChatItem user (CDGroupSnd gInfo) msg (CISndGroupEvent SGEUserLeft) @@ -1807,7 +1844,7 @@ processChatCommand' vr = \case updateGroupProfileByName gName $ \p -> p {description} ShowGroupDescription gName -> withUser $ \user -> CRGroupDescription user <$> withStore (\db -> getGroupInfoByName db vr user gName) - APICreateGroupLink groupId mRole -> withUser $ \user -> withChatLock "createGroupLink" $ do + APICreateGroupLink groupId mRole -> withUser $ \user -> withGroupLock "createGroupLink" groupId $ do gInfo <- withStore $ \db -> getGroupInfo db vr user groupId assertUserGroupRole gInfo GRAdmin when (mRole > GRMember) $ throwChatError $ CEGroupMemberInitialRole gInfo mRole @@ -1817,14 +1854,14 @@ processChatCommand' vr = \case (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMContact (Just crClientData) IKPQOff subMode withStore $ \db -> createGroupLink db user gInfo connId cReq groupLinkId mRole subMode pure $ CRGroupLinkCreated user gInfo cReq mRole - APIGroupLinkMemberRole groupId mRole' -> withUser $ \user -> withChatLock "groupLinkMemberRole " $ do + APIGroupLinkMemberRole groupId mRole' -> withUser $ \user -> withGroupLock "groupLinkMemberRole" groupId $ do gInfo <- withStore $ \db -> getGroupInfo db vr user groupId (groupLinkId, groupLink, mRole) <- withStore $ \db -> getGroupLink db user gInfo assertUserGroupRole gInfo GRAdmin when (mRole' > GRMember) $ throwChatError $ CEGroupMemberInitialRole gInfo mRole' when (mRole' /= mRole) $ withStore' $ \db -> setGroupLinkMemberRole db user groupLinkId mRole' pure $ CRGroupLink user gInfo groupLink mRole' - APIDeleteGroupLink groupId -> withUser $ \user -> withChatLock "deleteGroupLink" $ do + APIDeleteGroupLink groupId -> withUser $ \user -> withGroupLock "deleteGroupLink" groupId $ do gInfo <- withStore $ \db -> getGroupInfo db vr user groupId deleteGroupLink' user gInfo pure $ CRGroupLinkDeleted user gInfo @@ -1932,19 +1969,19 @@ processChatCommand' vr = \case ForwardImage chatName fileId -> forwardFile chatName fileId SendImage SendFileDescription _chatName _f -> pure $ chatCmdError Nothing "TODO" ReceiveFile fileId encrypted_ rcvInline_ filePath_ -> withUser $ \_ -> - withChatLock "receiveFile" . procCmd $ do + withFileLock "receiveFile" fileId . procCmd $ do (user, ft) <- withStore (`getRcvFileTransferById` fileId) encrypt <- (`fromMaybe` encrypted_) <$> chatReadVar encryptLocalFiles ft' <- (if encrypt then setFileToEncrypt else pure) ft receiveFile' user ft' rcvInline_ filePath_ SetFileToReceive fileId encrypted_ -> withUser $ \_ -> do - withChatLock "setFileToReceive" . procCmd $ do + withFileLock "setFileToReceive" fileId . procCmd $ do encrypt <- (`fromMaybe` encrypted_) <$> chatReadVar encryptLocalFiles cfArgs <- if encrypt then Just <$> (atomically . CF.randomArgs =<< asks random) else pure Nothing withStore' $ \db -> setRcvFileToReceive db fileId cfArgs ok_ CancelFile fileId -> withUser $ \user@User {userId} -> - withChatLock "cancelFile" . procCmd $ + withFileLock "cancelFile" fileId . procCmd $ withStore (\db -> getFileTransfer db user fileId) >>= \case FTSnd ftm@FileTransferMeta {xftpSndFile, cancelled} fts | cancelled -> throwChatError $ CEFileCancel fileId "file already cancelled" @@ -2074,8 +2111,18 @@ processChatCommand' vr = \case pure $ CRVersionInfo {versionInfo, chatMigrations, agentMigrations} DebugLocks -> lift $ do chatLockName <- atomically . tryReadTMVar =<< asks chatLock + chatEntityLocks <- getLocks =<< asks entityLocks agentLocks <- withAgent' debugAgentLocks - pure CRDebugLocks {chatLockName, agentLocks} + pure CRDebugLocks {chatLockName, chatEntityLocks, agentLocks} + where + getLocks ls = atomically $ M.mapKeys enityLockString . M.mapMaybe id <$> (mapM tryReadTMVar =<< readTVar ls) + enityLockString cle = case cle of + CLInvitation bs -> "Invitation " <> B.unpack bs + CLConnection connId -> "Connection " <> show connId + CLContact ctId -> "Contact " <> show ctId + CLGroup gId -> "Group " <> show gId + CLUserContact ucId -> "UserContact " <> show ucId + CLFile fId -> "File " <> show fId GetAgentWorkers -> lift $ CRAgentWorkersSummary <$> withAgent' getAgentWorkersSummary GetAgentWorkersDetails -> lift $ CRAgentWorkersDetails <$> withAgent' getAgentWorkersDetails GetAgentStats -> lift $ CRAgentStats . map stat <$> withAgent' getAgentStats @@ -2101,7 +2148,6 @@ processChatCommand' vr = \case -- in a modified CLI app or core - the hook should return Either ChatResponse ChatCommand CustomChatCommand _cmd -> withUser $ \user -> pure $ chatCmdError (Just user) "not supported" where - withChatLock name action = asks chatLock >>= \l -> withLock l name action -- below code would make command responses asynchronous where they can be slow -- in View.hs `r'` should be defined as `id` in this case -- procCmd :: m ChatResponse -> m ChatResponse @@ -2167,7 +2213,7 @@ processChatCommand' vr = \case CTLocal -> withStore $ \db -> getLocalChatItemIdByText' db user cId msg _ -> throwChatError $ CECommandError "not supported" connectViaContact :: User -> IncognitoEnabled -> ConnectionRequestUri 'CMContact -> CM ChatResponse - connectViaContact user@User {userId} incognito cReq@(CRContactUri ConnReqUriData {crClientData}) = withChatLock "connectViaContact" $ do + connectViaContact user@User {userId} incognito cReq@(CRContactUri ConnReqUriData {crClientData}) = withInvitationLock "connectViaContact" (strEncode cReq) $ do let groupLinkId = crClientData >>= decodeJSON >>= \(CRDataGroup gli) -> Just gli cReqHash = ConnReqUriHash . C.sha256Hash $ strEncode cReq case groupLinkId of @@ -2198,7 +2244,7 @@ processChatCommand' vr = \case pure $ CRSentInvitation user conn incognitoProfile connectContactViaAddress :: User -> IncognitoEnabled -> Contact -> ConnectionRequestUri 'CMContact -> CM ChatResponse connectContactViaAddress user incognito ct cReq = - withChatLock "connectViaContact" $ do + withInvitationLock "connectContactViaAddress" (strEncode cReq) $ do newXContactId <- XContactId <$> drgRandomBytes 16 pqSup <- chatReadVar pqExperimentalEnabled (connId, incognitoProfile, subMode, chatV) <- requestContact user incognito cReq newXContactId False pqSup @@ -2265,8 +2311,9 @@ processChatCommand' vr = \case -- [incognito] filter out contacts with whom user has incognito connections addChangedProfileContact :: User -> Contact -> [ChangedProfileContact] -> [ChangedProfileContact] addChangedProfileContact user' ct changedCts = case contactSendConn_ ct' of - Right conn | not (connIncognito conn) && mergedProfile' /= mergedProfile -> - ChangedProfileContact ct ct' mergedProfile' conn : changedCts + Right conn + | not (connIncognito conn) && mergedProfile' /= mergedProfile -> + ChangedProfileContact ct ct' mergedProfile' conn : changedCts _ -> changedCts where mergedProfile = userProfileToSend user Nothing (Just ct) False @@ -2289,7 +2336,7 @@ processChatCommand' vr = \case let mergedProfile = userProfileToSend user (fromLocalProfile <$> incognitoProfile) (Just ct) False mergedProfile' = userProfileToSend user (fromLocalProfile <$> incognitoProfile) (Just ct') False when (mergedProfile' /= mergedProfile) $ - withChatLock "updateProfile" $ do + withContactLock "updateProfile" (contactId' ct) $ do void (sendDirectContactMessage user ct' $ XInfo mergedProfile') `catchChatError` (toView . CRChatError (Just user)) lift . when (directOrUsed ct') $ createSndFeatureItems user ct ct' pure $ CRContactPrefsUpdated user ct ct' @@ -2334,7 +2381,7 @@ processChatCommand' vr = \case user <- getUserByContactId db ctId (user,) <$> getContact db vr user ctId calls <- asks currentCalls - withChatLock "currentCall" $ + withContactLock "currentCall" ctId $ atomically (TM.lookup ctId calls) >>= \case Nothing -> throwChatError CENoCurrentCall Just call@Call {contactId} @@ -2988,21 +3035,16 @@ deleteGroupLink_ user gInfo conn = do agentSubscriber :: CM' () agentSubscriber = do q <- asks $ subQ . smpAgent - l <- asks chatLock - forever $ atomically (readTBQueue q) >>= process l + forever $ atomically (readTBQueue q) >>= process where - process :: Lock -> (ACorrId, EntityId, APartyCmd 'Agent) -> CM' () - process l (corrId, entId, APC e msg) = run $ case e of + process :: (ACorrId, EntityId, APartyCmd 'Agent) -> CM' () + process (corrId, entId, APC e msg) = run $ case e of SAENone -> processAgentMessageNoConn msg SAEConn -> processAgentMessage corrId entId msg SAERcvFile -> processAgentMsgRcvFile corrId entId msg SAESndFile -> processAgentMsgSndFile corrId entId msg where - run action = do - let name = "agentSubscriber entity=" <> show e <> " entId=" <> str entId <> " msg=" <> str (aCommandTag msg) - withLock' l name $ action `catchChatError'` (toView' . CRChatError Nothing) - str :: StrEncoding a => a -> String - str = B.unpack . strEncode + run action = action `catchChatError'` (toView' . CRChatError Nothing) type AgentBatchSubscribe = AgentClient -> [ConnId] -> ExceptT AgentErrorType IO (Map ConnId (Either AgentErrorType ())) @@ -3150,8 +3192,7 @@ subscribeUserConnections vr onlyNeeded agentBatchSubscribe user = do forM_ err_ $ toView . CRSndFileSubError user ft void . forkIO $ do threadDelay 1000000 - l <- asks chatLock - when (fileStatus == FSConnected) . unlessM (isFileActive fileId sndFiles) . withLock l "subscribe sendFileChunk" $ + when (fileStatus == FSConnected) . unlessM (isFileActive fileId sndFiles) . withChatLock "subscribe sendFileChunk" $ sendFileChunk user ft rcvFileSubsToView :: Map ConnId (Either AgentErrorType ()) -> Map ConnId RcvFileTransfer -> CM () rcvFileSubsToView rs = mapM_ (toView . uncurry (CRRcvFileSubError user)) . filterErrors . resultsFor rs @@ -3317,11 +3358,13 @@ processAgentMessage _ connId (DEL_RCVQ srv qId err_) = processAgentMessage _ connId DEL_CONN = toView $ CRAgentConnDeleted (AgentConnId connId) processAgentMessage corrId connId msg = do - vr <- chatVersionRange - -- getUserByAConnId never throws logical errors, only SEDBBusyError can be thrown here - critical (withStore' (`getUserByAConnId` AgentConnId connId)) >>= \case - Just user -> processAgentMessageConn vr user corrId connId msg `catchChatError` (toView . CRChatError (Just user)) - _ -> throwChatError $ CENoConnectionUser (AgentConnId connId) + lockEntity <- critical (withStore (`getChatLockEntity` AgentConnId connId)) + withEntityLock "processAgentMessage" lockEntity $ do + vr <- chatVersionRange + -- getUserByAConnId never throws logical errors, only SEDBBusyError can be thrown here + critical (withStore' (`getUserByAConnId` AgentConnId connId)) >>= \case + Just user -> processAgentMessageConn vr user corrId connId msg `catchChatError` (toView . CRChatError (Just user)) + _ -> throwChatError $ CENoConnectionUser (AgentConnId connId) -- CRITICAL error will be shown to the user as alert with restart button in Android/desktop apps. -- SEDBBusyError will only be thrown on IO exceptions or SQLError during DB queries, @@ -3358,18 +3401,18 @@ processAgentMessageNoConn = \case toView $ event srv cs processAgentMsgSndFile :: ACorrId -> SndFileId -> ACommand 'Agent 'AESndFile -> CM () -processAgentMsgSndFile _corrId aFileId msg = - withStore' (`getUserByASndFileId` AgentSndFileId aFileId) >>= \case - Just user -> process user `catchChatError` (toView . CRChatError (Just user)) - _ -> do - lift $ withAgent' (`xftpDeleteSndFileInternal` aFileId) - throwChatError $ CENoSndFileUser $ AgentSndFileId aFileId +processAgentMsgSndFile _corrId aFileId msg = do + fileId <- withStore (`getXFTPSndFileDBId` AgentSndFileId aFileId) + withFileLock "processAgentMsgSndFile" fileId $ + withStore' (`getUserByASndFileId` AgentSndFileId aFileId) >>= \case + Just user -> process user fileId `catchChatError` (toView . CRChatError (Just user)) + _ -> do + lift $ withAgent' (`xftpDeleteSndFileInternal` aFileId) + throwChatError $ CENoSndFileUser $ AgentSndFileId aFileId where - process :: User -> CM () - process user = do - (ft@FileTransferMeta {fileId, xftpRedirectFor, cancelled}, sfts) <- withStore $ \db -> do - fileId <- getXFTPSndFileDBId db user $ AgentSndFileId aFileId - getSndFileTransfer db user fileId + process :: User -> FileTransferId -> CM () + process user fileId = do + (ft@FileTransferMeta {xftpRedirectFor, cancelled}, sfts) <- withStore $ \db -> getSndFileTransfer db user fileId vr <- chatVersionRange unless cancelled $ case msg of SFPROG sndProgress sndTotal -> do @@ -3386,11 +3429,11 @@ processAgentMsgSndFile _corrId aFileId msg = lift $ withAgent' (`xftpDeleteSndFileInternal` aFileId) withStore' $ \db -> createExtraSndFTDescrs db user fileId (map fileDescrText rfds) case rfds of - [] -> sendFileError "no receiver descriptions" fileId vr ft + [] -> sendFileError "no receiver descriptions" vr ft rfd : _ -> case [fd | fd@(FD.ValidFileDescription FD.FileDescription {chunks = [_]}) <- rfds] of [] -> case xftpRedirectFor of Nothing -> xftpSndFileRedirect user fileId rfd >>= toView . CRSndFileRedirectStartXFTP user ft - Just _ -> sendFileError "Prohibit chaining redirects" fileId vr ft + Just _ -> sendFileError "Prohibit chaining redirects" vr ft rfds' -> do -- we have 1 chunk - use it as URI whether it is redirect or not ft' <- maybe (pure ft) (\fId -> withStore $ \db -> getFileTransferMeta db user fId) xftpRedirectFor @@ -3439,7 +3482,7 @@ processAgentMsgSndFile _corrId aFileId msg = | temporaryAgentError e -> throwChatError $ CEXFTPSndFile fileId (AgentSndFileId aFileId) e | otherwise -> - sendFileError (tshow e) fileId vr ft + sendFileError (tshow e) vr ft where fileDescrText :: FilePartyI p => ValidFileDescription p -> T.Text fileDescrText = safeDecodeUtf8 . strEncode @@ -3457,8 +3500,8 @@ processAgentMsgSndFile _corrId aFileId msg = case L.nonEmpty fds of Just fds' -> loopSend fds' Nothing -> pure msgDeliveryId - sendFileError :: Text -> Int64 -> (PQSupport -> VersionRangeChat) -> FileTransferMeta -> CM () - sendFileError err fileId vr ft = do + sendFileError :: Text -> (PQSupport -> VersionRangeChat) -> FileTransferMeta -> CM () + sendFileError err vr ft = do logError $ "Sent file error: " <> err ci <- withStore $ \db -> do liftIO $ updateFileCancelled db user fileId CIFSSndError @@ -3480,18 +3523,18 @@ splitFileDescr rfdText = do else fileDescr <| splitParts (partNo + 1) partSize rest processAgentMsgRcvFile :: ACorrId -> RcvFileId -> ACommand 'Agent 'AERcvFile -> CM () -processAgentMsgRcvFile _corrId aFileId msg = - withStore' (`getUserByARcvFileId` AgentRcvFileId aFileId) >>= \case - Just user -> process user `catchChatError` (toView . CRChatError (Just user)) - _ -> do - lift $ withAgent' (`xftpDeleteRcvFile` aFileId) - throwChatError $ CENoRcvFileUser $ AgentRcvFileId aFileId +processAgentMsgRcvFile _corrId aFileId msg = do + fileId <- withStore (`getXFTPRcvFileDBId` AgentRcvFileId aFileId) + withFileLock "processAgentMsgRcvFile" fileId $ + withStore' (`getUserByARcvFileId` AgentRcvFileId aFileId) >>= \case + Just user -> process user fileId `catchChatError` (toView . CRChatError (Just user)) + _ -> do + lift $ withAgent' (`xftpDeleteRcvFile` aFileId) + throwChatError $ CENoRcvFileUser $ AgentRcvFileId aFileId where - process :: User -> CM () - process user = do - ft@RcvFileTransfer {fileId} <- withStore $ \db -> do - fileId <- getXFTPRcvFileDBId db $ AgentRcvFileId aFileId - getRcvFileTransfer db user fileId + process :: User -> FileTransferId -> CM () + process user fileId = do + ft <- withStore $ \db -> getRcvFileTransfer db user fileId vr <- chatVersionRange unless (rcvFileCompleteOrCancelled ft) $ case msg of RFPROG rcvProgress rcvTotal -> do @@ -3597,7 +3640,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = -- probably this branch is never executed, so there should be no reason -- to save message if contact hasn't been created yet - chat item isn't created anyway withAckMessage' agentConnId meta $ - void $ saveDirectRcvMSG conn meta msgBody + void $ + saveDirectRcvMSG conn meta msgBody SENT msgId -> sentMsgDeliveryEvent conn msgId OK -> @@ -3634,7 +3678,6 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = (conn'', msg@RcvMessage {chatMsgEvent = ACME _ event}) <- saveDirectRcvMSG conn' msgMeta msgBody let ct'' = ct' {activeConn = Just conn''} :: Contact assertDirectAllowed user MDRcv ct'' $ toCMEventTag event - updateChatLock "direct message" event case event of XMsgNew mc -> newContentMessage ct'' mc msg msgMeta XMsgFileDescr sharedMsgId fileDescr -> messageFileDescription ct'' sharedMsgId fileDescr @@ -4053,7 +4096,6 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = processEvent :: MsgEncodingI e => ChatMessage e -> CM () processEvent chatMsg = do (m', conn', msg@RcvMessage {chatMsgEvent = ACME _ event}) <- saveGroupRcvMsg user groupId m conn msgMeta msgBody chatMsg - updateChatLock "groupMessage" event case event of XMsgNew mc -> memberCanSend m' $ newGroupContentMessage gInfo m' mc msg brokerTs False XMsgFileDescr sharedMsgId fileDescr -> memberCanSend m' $ groupMessageFileDescription gInfo m' sharedMsgId fileDescr @@ -4389,13 +4431,6 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = toView $ CRConnectionDisabled connEntity _ -> pure () - updateChatLock :: MsgEncodingI enc => String -> ChatMsgEvent enc -> CM () - updateChatLock name event = do - l <- asks chatLock - atomically $ tryReadTMVar l >>= mapM_ (swapTMVar l . (<> s)) - where - s = " " <> name <> "=" <> B.unpack (strEncode $ toCMEventTag event) - -- TODO v5.7 / v6.0 - together with deprecating old group protocol establishing direct connections? -- we could save command records only for agent APIs we process continuations for (INV) withCompletedCommand :: forall e. AEntityI e => Connection -> ACommand 'Agent e -> (CommandData -> CM ()) -> CM () @@ -4433,9 +4468,9 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = -- This prevents losing the message that failed to be processed. Left (ChatErrorStore SEDBBusyError {message}) | showCritical -> throwError $ ChatErrorAgent (CRITICAL True message) Nothing Left e -> ackMsg msgMeta Nothing >> throwError e - where - ackMsg :: MsgMeta -> Maybe MsgReceiptInfo -> CM () - ackMsg MsgMeta {recipient = (msgId, _)} rcpt = withAgent $ \a -> ackMessageAsync a "" cId msgId rcpt + where + ackMsg :: MsgMeta -> Maybe MsgReceiptInfo -> CM () + ackMsg MsgMeta {recipient = (msgId, _)} rcpt = withAgent $ \a -> ackMessageAsync a "" cId msgId rcpt sentMsgDeliveryEvent :: Connection -> AgentMsgId -> CM () sentMsgDeliveryEvent Connection {connId} msgId = diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 0291793843..024757e7bb 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -59,7 +59,7 @@ import Simplex.Chat.Messages.CIContent import Simplex.Chat.Protocol import Simplex.Chat.Remote.AppVersion import Simplex.Chat.Remote.Types -import Simplex.Chat.Store (AutoAccept, StoreError (..), UserContactLink, UserMsgReceiptSettings) +import Simplex.Chat.Store (AutoAccept, ChatLockEntity, StoreError (..), UserContactLink, UserMsgReceiptSettings) import Simplex.Chat.Types import Simplex.Chat.Types.Preferences import Simplex.Chat.Util (liftIOEither) @@ -165,7 +165,7 @@ defaultChatHooks = ChatHooks { preCmdHook = \_ -> pure . Right, eventHook = \_ -> pure - } + } data DefaultAgentServers = DefaultAgentServers { smp :: NonEmpty SMPServerWithAuth, @@ -208,6 +208,7 @@ data ChatController = ChatController connNetworkStatuses :: TMap AgentConnId NetworkStatus, subscriptionMode :: TVar SubscriptionMode, chatLock :: Lock, + entityLocks :: TMap ChatLockEntity Lock, sndFiles :: TVar (Map Int64 Handle), rcvFiles :: TVar (Map Int64 Handle), currentCalls :: TMap ContactId Call, @@ -491,9 +492,9 @@ data ChatCommand | GetAgentSubsDetails | GetAgentWorkers | GetAgentWorkersDetails - -- The parser will return this command for strings that start from "//". - -- This command should be processed in preCmdHook - | CustomChatCommand ByteString + | -- The parser will return this command for strings that start from "//". + -- This command should be processed in preCmdHook + CustomChatCommand ByteString deriving (Show) allowRemoteCommand :: ChatCommand -> Bool -- XXX: consider using Relay/Block/ForceLocal @@ -731,7 +732,7 @@ data ChatResponse | CRContactPQEnabled {user :: User, contact :: Contact, pqEnabled :: PQEncryption} | CRSQLResult {rows :: [Text]} | CRSlowSQLQueries {chatQueries :: [SlowSQLQuery], agentQueries :: [SlowSQLQuery]} - | CRDebugLocks {chatLockName :: Maybe String, agentLocks :: AgentLocks} + | CRDebugLocks {chatLockName :: Maybe String, chatEntityLocks :: Map String String, agentLocks :: AgentLocks} | CRAgentStats {agentStats :: [[String]]} | CRAgentWorkersDetails {agentWorkersDetails :: AgentWorkersDetails} | CRAgentWorkersSummary {agentWorkersSummary :: AgentWorkersSummary} @@ -1353,7 +1354,7 @@ handleDBErrors = [ E.Handler $ \(e :: SQLError) -> let se = SQL.sqlError e busy = se == SQL.ErrorBusy || se == SQL.ErrorLocked - in pure . Left . ChatErrorStore $ if busy then SEDBBusyError $ show se else SEDBException $ show e, + in pure . Left . ChatErrorStore $ if busy then SEDBBusyError $ show se else SEDBException $ show e, E.Handler $ \(E.SomeException e) -> pure . Left . ChatErrorStore . SEDBException $ show e ] diff --git a/src/Simplex/Chat/Protocol.hs b/src/Simplex/Chat/Protocol.hs index e2810dafa9..8727a592a7 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -48,7 +48,7 @@ import Simplex.Chat.Types import Simplex.Chat.Types.Util import Simplex.Messaging.Agent.Protocol (VersionSMPA, pqdrSMPAgentVersion) import Simplex.Messaging.Compression (compress1, decompressBatch) -import Simplex.Messaging.Crypto.Ratchet (PQSupport (..), pattern PQSupportOn, pattern PQSupportOff) +import Simplex.Messaging.Crypto.Ratchet (PQSupport (..), pattern PQSupportOff, pattern PQSupportOn) import Simplex.Messaging.Encoding import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, fromTextField_, fstToLower, parseAll, sumTypeJSON, taggedObjectJSON) diff --git a/src/Simplex/Chat/Store.hs b/src/Simplex/Chat/Store.hs index 91021713b1..4b0591fb3a 100644 --- a/src/Simplex/Chat/Store.hs +++ b/src/Simplex/Chat/Store.hs @@ -1,6 +1,7 @@ module Simplex.Chat.Store ( SQLiteStore, StoreError (..), + ChatLockEntity (..), UserMsgReceiptSettings (..), UserContactLink (..), AutoAccept (..), diff --git a/src/Simplex/Chat/Store/Connections.hs b/src/Simplex/Chat/Store/Connections.hs index 6584aabb0a..0e543eacf2 100644 --- a/src/Simplex/Chat/Store/Connections.hs +++ b/src/Simplex/Chat/Store/Connections.hs @@ -3,11 +3,13 @@ {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} +{-# LANGUAGE TupleSections #-} {-# LANGUAGE TypeOperators #-} {-# OPTIONS_GHC -fno-warn-ambiguous-fields #-} module Simplex.Chat.Store.Connections - ( getConnectionEntity, + ( getChatLockEntity, + getConnectionEntity, getConnectionEntityByConnReq, getContactConnEntityByConnReqHash, getConnectionsToSubscribe, @@ -37,6 +39,31 @@ import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import Simplex.Messaging.Crypto.Ratchet (PQSupport) import Simplex.Messaging.Util (eitherToMaybe) +getChatLockEntity :: DB.Connection -> AgentConnId -> ExceptT StoreError IO ChatLockEntity +getChatLockEntity db agentConnId = do + ((connId, connType) :. (contactId, groupMemberId, sndFileId, rcvFileId, userContactLinkId)) <- + ExceptT . firstRow id (SEConnectionNotFound agentConnId) $ + DB.query + db + [sql| + SELECT connection_id, conn_type, contact_id, group_member_id, snd_file_id, rcv_file_id, user_contact_link_id + FROM connections + WHERE agent_conn_id = ? + |] + (Only agentConnId) + let err = throwError $ SEInternalError $ "connection " <> show connType <> " without entity" + case connType of + ConnMember -> maybe err (fmap CLGroup . getMemberGroupId) groupMemberId + ConnContact -> pure $ maybe (CLConnection connId) CLContact contactId + ConnSndFile -> maybe err (pure . CLFile) sndFileId + ConnRcvFile -> maybe err (pure . CLFile) rcvFileId + ConnUserContact -> maybe err (pure . CLUserContact) userContactLinkId + where + getMemberGroupId :: GroupMemberId -> ExceptT StoreError IO GroupId + getMemberGroupId groupMemberId = + ExceptT . firstRow fromOnly (SEInternalError "group member connection group_id not found") $ + DB.query db "SELECT group_id FROM group_members WHERE group_member_id = ?" (Only groupMemberId) + getConnectionEntity :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> AgentConnId -> ExceptT StoreError IO ConnectionEntity getConnectionEntity db vr user@User {userId, userContactId} agentConnId = do c@Connection {connType, entityId} <- getConnection_ diff --git a/src/Simplex/Chat/Store/Files.hs b/src/Simplex/Chat/Store/Files.hs index e77681bb9b..8ac54c7e9b 100644 --- a/src/Simplex/Chat/Store/Files.hs +++ b/src/Simplex/Chat/Store/Files.hs @@ -336,10 +336,10 @@ setSndFTAgentDeleted db User {userId} fileId = do "UPDATE files SET agent_snd_file_deleted = 1, updated_at = ? WHERE user_id = ? AND file_id = ?" (currentTs, userId, fileId) -getXFTPSndFileDBId :: DB.Connection -> User -> AgentSndFileId -> ExceptT StoreError IO FileTransferId -getXFTPSndFileDBId db User {userId} aSndFileId = +getXFTPSndFileDBId :: DB.Connection -> AgentSndFileId -> ExceptT StoreError IO FileTransferId +getXFTPSndFileDBId db aSndFileId = ExceptT . firstRow fromOnly (SESndFileNotFoundXFTP aSndFileId) $ - DB.query db "SELECT file_id FROM files WHERE user_id = ? AND agent_snd_file_id = ?" (userId, aSndFileId) + DB.query db "SELECT file_id FROM files WHERE agent_snd_file_id = ?" (Only aSndFileId) getXFTPRcvFileDBId :: DB.Connection -> AgentRcvFileId -> ExceptT StoreError IO FileTransferId getXFTPRcvFileDBId db aRcvFileId = diff --git a/src/Simplex/Chat/Store/Shared.hs b/src/Simplex/Chat/Store/Shared.hs index 88540134fe..ef7cda4802 100644 --- a/src/Simplex/Chat/Store/Shared.hs +++ b/src/Simplex/Chat/Store/Shared.hs @@ -45,6 +45,15 @@ import Simplex.Messaging.Util (allFinally) import Simplex.Messaging.Version import UnliftIO.STM +data ChatLockEntity + = CLInvitation ByteString + | CLConnection Int64 + | CLContact ContactId + | CLGroup GroupId + | CLUserContact Int64 + | CLFile Int64 + deriving (Eq, Ord) + -- These error type constructors must be added to mobile apps data StoreError = SEDuplicateName diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index 65a6626308..550fe97b18 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -351,8 +351,9 @@ responseToView hu@(currentRH, user_) ChatConfig {logLevel, showReactions, showRe <> (" :: avg: " <> sShow timeAvg <> " ms") <> (" :: " <> plain (T.unwords $ T.lines query)) in ("Chat queries" : map viewQuery chatQueries) <> [""] <> ("Agent queries" : map viewQuery agentQueries) - CRDebugLocks {chatLockName, agentLocks} -> + CRDebugLocks {chatLockName, chatEntityLocks, agentLocks} -> [ maybe "no chat lock" (("chat lock: " <>) . plain) chatLockName, + plain $ "chat entity locks: " <> LB.unpack (J.encode chatEntityLocks), plain $ "agent locks: " <> LB.unpack (J.encode agentLocks) ] CRAgentStats stats -> map (plain . intercalate ",") stats @@ -1595,7 +1596,7 @@ standaloneUploadComplete FileTransferMeta {fileId, fileName} = \case [] -> [fileTransferStr fileId fileName <> " upload complete."] uris -> fileTransferStr fileId fileName <> " upload complete. download with:" - : map plain uris + : map plain uris sndFile :: SndFileTransfer -> StyledString sndFile SndFileTransfer {fileId, fileName} = fileTransferStr fileId fileName diff --git a/tests/ChatTests/Files.hs b/tests/ChatTests/Files.hs index 1e72df9156..e50b20844a 100644 --- a/tests/ChatTests/Files.hs +++ b/tests/ChatTests/Files.hs @@ -787,7 +787,8 @@ testXFTPCancelRcvRepeat = bob ##> "/fr 1 ./tests/tmp" bob <### [ "saving file 1 from alice to ./tests/tmp/testfile_1", - "started receiving file 1 (testfile) from alice" + "started receiving file 1 (testfile) from alice", + StartsWith "chat db error: SERcvFileNotFoundXFTP" ] bob <## "completed receiving file 1 (testfile) from alice" diff --git a/tests/ChatTests/Profiles.hs b/tests/ChatTests/Profiles.hs index 7996fde3ad..8a9191c988 100644 --- a/tests/ChatTests/Profiles.hs +++ b/tests/ChatTests/Profiles.hs @@ -179,10 +179,12 @@ testMultiWordProfileNames = alice <# "#'Our Team' 'Bob James'> hi" cath <# "#'Our Team' 'Bob James'> hi" alice `send` "@'Cath Johnson' hello" - alice <## "member #'Our Team' 'Cath Johnson' does not have direct connection, creating" - alice <## "contact for member #'Our Team' 'Cath Johnson' is created" - alice <## "sent invitation to connect directly to member #'Our Team' 'Cath Johnson'" - alice <# "@'Cath Johnson' hello" + alice + <### [ "member #'Our Team' 'Cath Johnson' does not have direct connection, creating", + "contact for member #'Our Team' 'Cath Johnson' is created", + "sent invitation to connect directly to member #'Our Team' 'Cath Johnson'", + WithTime "@'Cath Johnson' hello" + ] cath <## "#'Our Team' 'Alice Jones' is creating direct contact 'Alice Jones' with you" cath <# "'Alice Jones'> hello" cath <## "'Alice Jones': contact is connected" From 18efc28d16eecb6188bf34df157b72a645eb304b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 4 Apr 2024 20:41:56 +0100 Subject: [PATCH 002/147] core: additional group preferences: prohibit SimpleX links, restrict some features to specific roles (#3964) * core: additional group preferences: prohibit SimpleX links, restrict some features to specific roles * add role to group preference items, tests --- .../src/Directory/Events.hs | 1 + .../src/Directory/Service.hs | 1 + simplex-chat.cabal | 1 + src/Simplex/Chat.hs | 72 ++++++---- src/Simplex/Chat/Controller.hs | 4 +- src/Simplex/Chat/Markdown.hs | 9 ++ src/Simplex/Chat/Messages/CIContent.hs | 33 ++--- src/Simplex/Chat/Messages/CIContent/Events.hs | 1 + src/Simplex/Chat/Protocol.hs | 1 + src/Simplex/Chat/Store/Groups.hs | 8 +- src/Simplex/Chat/Store/Profiles.hs | 1 + src/Simplex/Chat/Types.hs | 43 +----- src/Simplex/Chat/Types/Preferences.hs | 131 +++++++++++++++--- src/Simplex/Chat/Types/Shared.hs | 48 +++++++ src/Simplex/Chat/View.hs | 1 + tests/Bots/DirectoryTests.hs | 3 +- tests/ChatTests/Groups.hs | 4 +- tests/ChatTests/Profiles.hs | 126 ++++++++++++++++- tests/ChatTests/Utils.hs | 2 + tests/ProtocolTests.hs | 3 +- 20 files changed, 384 insertions(+), 109 deletions(-) create mode 100644 src/Simplex/Chat/Types/Shared.hs diff --git a/apps/simplex-directory-service/src/Directory/Events.hs b/apps/simplex-directory-service/src/Directory/Events.hs index 1d7a866051..76f57585a8 100644 --- a/apps/simplex-directory-service/src/Directory/Events.hs +++ b/apps/simplex-directory-service/src/Directory/Events.hs @@ -31,6 +31,7 @@ import Simplex.Chat.Messages import Simplex.Chat.Messages.CIContent import Simplex.Chat.Protocol (MsgContent (..)) import Simplex.Chat.Types +import Simplex.Chat.Types.Shared import Simplex.Messaging.Encoding.String import Simplex.Messaging.Util ((<$?>)) import Data.Char (isSpace) diff --git a/apps/simplex-directory-service/src/Directory/Service.hs b/apps/simplex-directory-service/src/Directory/Service.hs index c1428881b9..d158b57e22 100644 --- a/apps/simplex-directory-service/src/Directory/Service.hs +++ b/apps/simplex-directory-service/src/Directory/Service.hs @@ -36,6 +36,7 @@ import Simplex.Chat.Messages import Simplex.Chat.Options import Simplex.Chat.Protocol (MsgContent (..)) import Simplex.Chat.Types +import Simplex.Chat.Types.Shared import Simplex.Chat.View (serializeChatResponse, simplexChatContact) import Simplex.Messaging.Encoding.String import Simplex.Messaging.TMap (TMap) diff --git a/simplex-chat.cabal b/simplex-chat.cabal index fb0635abad..005fbe10a9 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -174,6 +174,7 @@ library Simplex.Chat.Terminal.Output Simplex.Chat.Types Simplex.Chat.Types.Preferences + Simplex.Chat.Types.Shared Simplex.Chat.Types.Util Simplex.Chat.Util Simplex.Chat.View diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index c62fdfb8bd..d075c6cf70 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -80,6 +80,7 @@ import Simplex.Chat.Store.Profiles import Simplex.Chat.Store.Shared import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Chat.Util (encryptFile, shuffle) import Simplex.FileTransfer.Client.Main (maxFileSize, maxFileSizeHard) @@ -748,10 +749,10 @@ processChatCommand' vr = \case assertUserGroupRole gInfo GRAuthor send g where - send g@(Group gInfo@GroupInfo {groupId} ms) - | isVoice mc && not (groupFeatureAllowed SGFVoice gInfo) = notAllowedError GFVoice - | not (isVoice mc) && isJust file_ && not (groupFeatureAllowed SGFFiles gInfo) = notAllowedError GFFiles - | otherwise = do + send g@(Group gInfo@GroupInfo {groupId, membership} ms) = + case prohibitedGroupContent gInfo membership mc file_ of + Just f -> notAllowedError f + Nothing -> do (fInv_, ciFile_) <- L.unzip <$> setupSndFileTransfer g (length $ filter memberCurrent ms) timed_ <- sndGroupCITimed live gInfo itemTTL (msgContainer, quotedItem_) <- prepareGroupMsg user gInfo mc quotedItemId_ fInv_ timed_ live @@ -1587,8 +1588,9 @@ processChatCommand' vr = \case let mc = MCText msg case memberContactId m of Nothing -> do - gInfo <- withStore $ \db -> getGroupInfo db vr user gId - toView $ CRNoMemberContactCreating user gInfo m + g <- withStore $ \db -> getGroupInfo db vr user gId + unless (groupFeatureMemberAllowed SGFDirectMessages (membership g) g) $ throwChatError $ CECommandError "direct messages not allowed" + toView $ CRNoMemberContactCreating user g m processChatCommand (APICreateMemberContact gId mId) >>= \case cr@(CRNewMemberContact _ Contact {contactId} _ _) -> do toView cr @@ -1872,7 +1874,7 @@ processChatCommand' vr = \case APICreateMemberContact gId gMemberId -> withUser $ \user -> do (g, m) <- withStore $ \db -> (,) <$> getGroupInfo db vr user gId <*> getGroupMember db vr user gId gMemberId assertUserGroupRole g GRAuthor - unless (groupFeatureAllowed SGFDirectMessages g) $ throwChatError $ CECommandError "direct messages not allowed" + unless (groupFeatureMemberAllowed SGFDirectMessages (membership g) g) $ throwChatError $ CECommandError "direct messages not allowed" case memberConn m of Just mConn@Connection {peerChatVRange} -> do unless (maxVersion peerChatVRange >= groupDirectInvVersion) $ throwChatError CEPeerChatVRangeIncompatible @@ -2053,9 +2055,12 @@ processChatCommand' vr = \case ct@Contact {userPreferences} <- withStore $ \db -> getContactByName db vr user cName let prefs' = setPreference f allowed_ $ Just userPreferences updateContactPrefs user ct prefs' - SetGroupFeature (AGF f) gName enabled -> + SetGroupFeature (AGFNR f) gName enabled -> updateGroupProfileByName gName $ \p -> p {groupPreferences = Just . setGroupPreference f enabled $ groupPreferences p} + SetGroupFeatureRole (AGFR f) gName enabled role -> + updateGroupProfileByName gName $ \p -> + p {groupPreferences = Just . setGroupPreferenceRole f enabled role $ groupPreferences p} SetUserTimedMessages onOff -> withUser $ \user@User {profile} -> do let allowed = if onOff then FAYes else FANo pref = TimedMessagesPreference allowed Nothing @@ -2645,7 +2650,7 @@ assertDirectAllowed user dir ct event = unless (allowedChatEvent || anyDirectOrUsed ct) . unlessM directMessagesAllowed $ throwChatError (CEDirectMessagesProhibited dir ct) where - directMessagesAllowed = any (groupFeatureAllowed' SGFDirectMessages) <$> withStore' (\db -> getContactGroupPreferences db user ct) + directMessagesAllowed = any (uncurry $ groupFeatureMemberAllowed' SGFDirectMessages) <$> withStore' (\db -> getContactGroupPreferences db user ct) allowedChatEvent = case event of XMsgNew_ -> False XMsgUpdate_ -> False @@ -2655,6 +2660,13 @@ assertDirectAllowed user dir ct event = XCallInv_ -> False _ -> True +prohibitedGroupContent :: GroupInfo -> GroupMember -> MsgContent -> Maybe f -> Maybe GroupFeature +prohibitedGroupContent gInfo m mc file_ + | isVoice mc && not (groupFeatureMemberAllowed SGFVoice m gInfo) = Just GFVoice + | not (isVoice mc) && isJust file_ && not (groupFeatureMemberAllowed SGFFiles m gInfo) = Just GFFiles + | not (groupFeatureMemberAllowed SGFSimplexLinks m gInfo) && containsFormat isSimplexLink (parseMarkdown $ msgContentText mc) = Just GFSimplexLinks + | otherwise = Nothing + roundedFDCount :: Int -> Int roundedFDCount n | n <= 0 = 4 @@ -4739,14 +4751,14 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = newGroupContentMessage :: GroupInfo -> GroupMember -> MsgContainer -> RcvMessage -> UTCTime -> Bool -> CM () newGroupContentMessage gInfo m@GroupMember {memberId, memberRole} mc msg@RcvMessage {sharedMsgId_} brokerTs forwarded | blockedByAdmin m = createBlockedByAdmin - | isVoice content && not (groupFeatureAllowed SGFVoice gInfo) = rejected GFVoice - | not (isVoice content) && isJust fInv_ && not (groupFeatureAllowed SGFFiles gInfo) = rejected GFFiles - | otherwise = - withStore' (\db -> getCIModeration db vr user gInfo memberId sharedMsgId_) >>= \case - Just ciModeration -> do - applyModeration ciModeration - withStore' $ \db -> deleteCIModeration db gInfo memberId sharedMsgId_ - Nothing -> createContentItem + | otherwise = case prohibitedGroupContent gInfo m content fInv_ of + Just f -> rejected f + Nothing -> + withStore' (\db -> getCIModeration db vr user gInfo memberId sharedMsgId_) >>= \case + Just ciModeration -> do + applyModeration ciModeration + withStore' $ \db -> deleteCIModeration db gInfo memberId sharedMsgId_ + Nothing -> createContentItem where rejected f = void $ newChatItem (CIRcvGroupFeatureRejected f) Nothing Nothing False timed' = if forwarded then rcvCITimed_ (Just Nothing) itemTTL else rcvGroupCITimed gInfo itemTTL @@ -5189,8 +5201,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = createGroupFeatureItems g@GroupInfo {fullGroupPreferences} m = forM_ allGroupFeatures $ \(AGF f) -> do let p = getGroupPreference f fullGroupPreferences - (_, param) = groupFeatureState p - createInternalChatItem user (CDGroupRcv g m) (CIRcvGroupFeature (toGroupFeature f) (toGroupPreference p) param) Nothing + (_, param, role) = groupFeatureState p + createInternalChatItem user (CDGroupRcv g m) (CIRcvGroupFeature (toGroupFeature f) (toGroupPreference p) param role) Nothing xInfoProbe :: ContactOrMember -> Probe -> CM () xInfoProbe cgm2 probe = do @@ -5701,7 +5713,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = xGrpDirectInv :: GroupInfo -> GroupMember -> Connection -> ConnReqInvitation -> Maybe MsgContent -> RcvMessage -> UTCTime -> CM () xGrpDirectInv g m mConn connReq mContent_ msg brokerTs = do - unless (groupFeatureAllowed SGFDirectMessages g) $ messageError "x.grp.direct.inv: direct messages not allowed" + unless (groupFeatureMemberAllowed SGFDirectMessages m g) $ messageError "x.grp.direct.inv: direct messages not allowed" let GroupMember {memberContactId} = m subMode <- chatReadVar subscriptionMode case memberContactId of @@ -6681,14 +6693,14 @@ createContactsFeatureItems user cts chatDir ciFeature ciOffer getPref = do cup = getContactUserPreference f cups cup' = getContactUserPreference f cups' -createGroupFeatureChangedItems :: MsgDirectionI d => User -> ChatDirection 'CTGroup d -> (GroupFeature -> GroupPreference -> Maybe Int -> CIContent d) -> GroupInfo -> GroupInfo -> CM () +createGroupFeatureChangedItems :: MsgDirectionI d => User -> ChatDirection 'CTGroup d -> (GroupFeature -> GroupPreference -> Maybe Int -> Maybe GroupMemberRole -> CIContent d) -> GroupInfo -> GroupInfo -> CM () createGroupFeatureChangedItems user cd ciContent GroupInfo {fullGroupPreferences = gps} GroupInfo {fullGroupPreferences = gps'} = forM_ allGroupFeatures $ \(AGF f) -> do let state = groupFeatureState $ getGroupPreference f gps pref' = getGroupPreference f gps' - state'@(_, int') = groupFeatureState pref' + state'@(_, param', role') = groupFeatureState pref' when (state /= state') $ - createInternalChatItem user cd (ciContent (toGroupFeature f) (toGroupPreference pref') int') Nothing + createInternalChatItem user cd (ciContent (toGroupFeature f) (toGroupPreference pref') param' role') Nothing sameGroupProfileInfo :: GroupProfile -> GroupProfile -> Bool sameGroupProfileInfo p p' = p {groupPreferences = Nothing} == p' {groupPreferences = Nothing} @@ -7046,20 +7058,22 @@ chatCommandP = "/show profile image" $> ShowProfileImage, ("/profile " <|> "/p ") *> (uncurry UpdateProfile <$> profileNames), ("/profile" <|> "/p") $> ShowProfile, - "/set voice #" *> (SetGroupFeature (AGF SGFVoice) <$> displayName <*> (A.space *> strP)), + "/set voice #" *> (SetGroupFeatureRole (AGFR SGFVoice) <$> displayName <*> _strP <*> optional memberRole), "/set voice @" *> (SetContactFeature (ACF SCFVoice) <$> displayName <*> optional (A.space *> strP)), "/set voice " *> (SetUserFeature (ACF SCFVoice) <$> strP), - "/set files #" *> (SetGroupFeature (AGF SGFFiles) <$> displayName <*> (A.space *> strP)), - "/set history #" *> (SetGroupFeature (AGF SGFHistory) <$> displayName <*> (A.space *> strP)), + "/set files #" *> (SetGroupFeatureRole (AGFR SGFFiles) <$> displayName <*> _strP <*> optional memberRole), + "/set history #" *> (SetGroupFeature (AGFNR SGFHistory) <$> displayName <*> (A.space *> strP)), + "/set reactions #" *> (SetGroupFeature (AGFNR SGFReactions) <$> displayName <*> (A.space *> strP)), "/set calls @" *> (SetContactFeature (ACF SCFCalls) <$> displayName <*> optional (A.space *> strP)), "/set calls " *> (SetUserFeature (ACF SCFCalls) <$> strP), - "/set delete #" *> (SetGroupFeature (AGF SGFFullDelete) <$> displayName <*> (A.space *> strP)), + "/set delete #" *> (SetGroupFeature (AGFNR SGFFullDelete) <$> displayName <*> (A.space *> strP)), "/set delete @" *> (SetContactFeature (ACF SCFFullDelete) <$> displayName <*> optional (A.space *> strP)), "/set delete " *> (SetUserFeature (ACF SCFFullDelete) <$> strP), - "/set direct #" *> (SetGroupFeature (AGF SGFDirectMessages) <$> displayName <*> (A.space *> strP)), + "/set direct #" *> (SetGroupFeatureRole (AGFR SGFDirectMessages) <$> displayName <*> _strP <*> optional memberRole), "/set disappear #" *> (SetGroupTimedMessages <$> displayName <*> (A.space *> timedTTLOnOffP)), "/set disappear @" *> (SetContactTimedMessages <$> displayName <*> optional (A.space *> timedMessagesEnabledP)), "/set disappear " *> (SetUserTimedMessages <$> (("yes" $> True) <|> ("no" $> False))), + "/set links #" *> (SetGroupFeatureRole (AGFR SGFSimplexLinks) <$> displayName <*> _strP <*> optional memberRole), ("/incognito" <* optional (A.space *> onOffP)) $> ChatHelp HSIncognito, "/set device name " *> (SetLocalDeviceName <$> textP), "/list remote hosts" $> ListRemoteHosts, @@ -7147,7 +7161,7 @@ chatCommandP = let groupPreferences = Just (emptyGroupPrefs :: GroupPreferences) - { directMessages = Just DirectMessagesGroupPreference {enable = FEOn}, + { directMessages = Just DirectMessagesGroupPreference {enable = FEOn, role = Nothing}, history = Just HistoryGroupPreference {enable = FEOn} } pure GroupProfile {displayName = gName, fullName, description = Nothing, image = Nothing, groupPreferences} diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 024757e7bb..85d93a7d88 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -62,6 +62,7 @@ import Simplex.Chat.Remote.Types import Simplex.Chat.Store (AutoAccept, ChatLockEntity, StoreError (..), UserContactLink, UserMsgReceiptSettings) import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.Chat.Util (liftIOEither) import Simplex.FileTransfer.Description (FileDescriptionURI) import Simplex.Messaging.Agent (AgentClient, SubscriptionsInfo) @@ -461,7 +462,8 @@ data ChatCommand | ShowProfileImage | SetUserFeature AChatFeature FeatureAllowed -- UserId (not used in UI) | SetContactFeature AChatFeature ContactName (Maybe FeatureAllowed) - | SetGroupFeature AGroupFeature GroupName GroupFeatureEnabled + | SetGroupFeature AGroupFeatureNoRole GroupName GroupFeatureEnabled + | SetGroupFeatureRole AGroupFeatureRole GroupName GroupFeatureEnabled (Maybe GroupMemberRole) | SetUserTimedMessages Bool -- UserId (not used in UI) | SetContactTimedMessages ContactName (Maybe TimedMessagesEnabled) | SetGroupTimedMessages GroupName (Maybe Int) diff --git a/src/Simplex/Chat/Markdown.hs b/src/Simplex/Chat/Markdown.hs index 2eabb48166..d3b9ea52f1 100644 --- a/src/Simplex/Chat/Markdown.hs +++ b/src/Simplex/Chat/Markdown.hs @@ -144,6 +144,15 @@ markdownToList (m1 :|: m2) = markdownToList m1 <> markdownToList m2 parseMarkdown :: Text -> Markdown parseMarkdown s = fromRight (unmarked s) $ A.parseOnly (markdownP <* A.endOfInput) s +containsFormat :: (Format -> Bool) -> Markdown -> Bool +containsFormat p (Markdown f _) = maybe False p f +containsFormat p (m1 :|: m2) = containsFormat p m1 || containsFormat p m2 + +isSimplexLink :: Format -> Bool +isSimplexLink = \case + SimplexLink {} -> True; + _ -> False + markdownP :: Parser Markdown markdownP = mconcat <$> A.many' fragmentP where diff --git a/src/Simplex/Chat/Messages/CIContent.hs b/src/Simplex/Chat/Messages/CIContent.hs index 0e95570b85..9266a0c1ca 100644 --- a/src/Simplex/Chat/Messages/CIContent.hs +++ b/src/Simplex/Chat/Messages/CIContent.hs @@ -28,6 +28,7 @@ import Simplex.Chat.Messages.CIContent.Events import Simplex.Chat.Protocol import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Messaging.Agent.Protocol (MsgErrorType (..), RatchetSyncState (..), SwitchPhase (..)) import Simplex.Messaging.Crypto.Ratchet (PQEncryption, pattern PQEncOn, pattern PQEncOff) @@ -134,8 +135,8 @@ data CIContent (d :: MsgDirection) where CISndChatFeature :: ChatFeature -> PrefEnabled -> Maybe Int -> CIContent 'MDSnd CIRcvChatPreference :: ChatFeature -> FeatureAllowed -> Maybe Int -> CIContent 'MDRcv CISndChatPreference :: ChatFeature -> FeatureAllowed -> Maybe Int -> CIContent 'MDSnd - CIRcvGroupFeature :: GroupFeature -> GroupPreference -> Maybe Int -> CIContent 'MDRcv - CISndGroupFeature :: GroupFeature -> GroupPreference -> Maybe Int -> CIContent 'MDSnd + CIRcvGroupFeature :: GroupFeature -> GroupPreference -> Maybe Int -> Maybe GroupMemberRole -> CIContent 'MDRcv + CISndGroupFeature :: GroupFeature -> GroupPreference -> Maybe Int -> Maybe GroupMemberRole -> CIContent 'MDSnd CIRcvChatFeatureRejected :: ChatFeature -> CIContent 'MDRcv CIRcvGroupFeatureRejected :: GroupFeature -> CIContent 'MDRcv CISndModerated :: CIContent 'MDSnd @@ -255,8 +256,8 @@ ciContentToText = \case CISndChatFeature feature enabled param -> featureStateText feature enabled param CIRcvChatPreference feature allowed param -> prefStateText feature allowed param CISndChatPreference feature allowed param -> "you " <> prefStateText feature allowed param - CIRcvGroupFeature feature pref param -> groupPrefStateText feature pref param - CISndGroupFeature feature pref param -> groupPrefStateText feature pref param + CIRcvGroupFeature feature pref param role -> groupPrefStateText feature pref param role + CISndGroupFeature feature pref param role -> groupPrefStateText feature pref param role CIRcvChatFeatureRejected feature -> chatFeatureNameText feature <> ": received, prohibited" CIRcvGroupFeatureRejected feature -> groupFeatureNameText feature <> ": received, prohibited" CISndModerated -> ciModeratedText @@ -413,8 +414,8 @@ data JSONCIContent | JCISndChatFeature {feature :: ChatFeature, enabled :: PrefEnabled, param :: Maybe Int} | JCIRcvChatPreference {feature :: ChatFeature, allowed :: FeatureAllowed, param :: Maybe Int} | JCISndChatPreference {feature :: ChatFeature, allowed :: FeatureAllowed, param :: Maybe Int} - | JCIRcvGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int} - | JCISndGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int} + | JCIRcvGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int, memberRole_ :: Maybe GroupMemberRole} + | JCISndGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int, memberRole_ :: Maybe GroupMemberRole} | JCIRcvChatFeatureRejected {feature :: ChatFeature} | JCIRcvGroupFeatureRejected {groupFeature :: GroupFeature} | JCISndModerated @@ -447,8 +448,8 @@ jsonCIContent = \case CISndChatFeature feature enabled param -> JCISndChatFeature {feature, enabled, param} CIRcvChatPreference feature allowed param -> JCIRcvChatPreference {feature, allowed, param} CISndChatPreference feature allowed param -> JCISndChatPreference {feature, allowed, param} - CIRcvGroupFeature groupFeature preference param -> JCIRcvGroupFeature {groupFeature, preference, param} - CISndGroupFeature groupFeature preference param -> JCISndGroupFeature {groupFeature, preference, param} + CIRcvGroupFeature groupFeature preference param memberRole_ -> JCIRcvGroupFeature {groupFeature, preference, param, memberRole_} + CISndGroupFeature groupFeature preference param memberRole_ -> JCISndGroupFeature {groupFeature, preference, param, memberRole_} CIRcvChatFeatureRejected feature -> JCIRcvChatFeatureRejected {feature} CIRcvGroupFeatureRejected groupFeature -> JCIRcvGroupFeatureRejected {groupFeature} CISndModerated -> JCISndModerated @@ -481,8 +482,8 @@ aciContentJSON = \case JCISndChatFeature {feature, enabled, param} -> ACIContent SMDSnd $ CISndChatFeature feature enabled param JCIRcvChatPreference {feature, allowed, param} -> ACIContent SMDRcv $ CIRcvChatPreference feature allowed param JCISndChatPreference {feature, allowed, param} -> ACIContent SMDSnd $ CISndChatPreference feature allowed param - JCIRcvGroupFeature {groupFeature, preference, param} -> ACIContent SMDRcv $ CIRcvGroupFeature groupFeature preference param - JCISndGroupFeature {groupFeature, preference, param} -> ACIContent SMDSnd $ CISndGroupFeature groupFeature preference param + JCIRcvGroupFeature {groupFeature, preference, param, memberRole_} -> ACIContent SMDRcv $ CIRcvGroupFeature groupFeature preference param memberRole_ + JCISndGroupFeature {groupFeature, preference, param, memberRole_} -> ACIContent SMDSnd $ CISndGroupFeature groupFeature preference param memberRole_ JCIRcvChatFeatureRejected {feature} -> ACIContent SMDRcv $ CIRcvChatFeatureRejected feature JCIRcvGroupFeatureRejected {groupFeature} -> ACIContent SMDRcv $ CIRcvGroupFeatureRejected groupFeature JCISndModerated -> ACIContent SMDSnd CISndModerated @@ -516,8 +517,8 @@ data DBJSONCIContent | DBJCISndChatFeature {feature :: ChatFeature, enabled :: PrefEnabled, param :: Maybe Int} | DBJCIRcvChatPreference {feature :: ChatFeature, allowed :: FeatureAllowed, param :: Maybe Int} | DBJCISndChatPreference {feature :: ChatFeature, allowed :: FeatureAllowed, param :: Maybe Int} - | DBJCIRcvGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int} - | DBJCISndGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int} + | DBJCIRcvGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int, memberRole_ :: Maybe GroupMemberRole} + | DBJCISndGroupFeature {groupFeature :: GroupFeature, preference :: GroupPreference, param :: Maybe Int, memberRole_ :: Maybe GroupMemberRole} | DBJCIRcvChatFeatureRejected {feature :: ChatFeature} | DBJCIRcvGroupFeatureRejected {groupFeature :: GroupFeature} | DBJCISndModerated @@ -550,8 +551,8 @@ dbJsonCIContent = \case CISndChatFeature feature enabled param -> DBJCISndChatFeature {feature, enabled, param} CIRcvChatPreference feature allowed param -> DBJCIRcvChatPreference {feature, allowed, param} CISndChatPreference feature allowed param -> DBJCISndChatPreference {feature, allowed, param} - CIRcvGroupFeature groupFeature preference param -> DBJCIRcvGroupFeature {groupFeature, preference, param} - CISndGroupFeature groupFeature preference param -> DBJCISndGroupFeature {groupFeature, preference, param} + CIRcvGroupFeature groupFeature preference param memberRole_ -> DBJCIRcvGroupFeature {groupFeature, preference, param, memberRole_} + CISndGroupFeature groupFeature preference param memberRole_ -> DBJCISndGroupFeature {groupFeature, preference, param, memberRole_} CIRcvChatFeatureRejected feature -> DBJCIRcvChatFeatureRejected {feature} CIRcvGroupFeatureRejected groupFeature -> DBJCIRcvGroupFeatureRejected {groupFeature} CISndModerated -> DBJCISndModerated @@ -584,8 +585,8 @@ aciContentDBJSON = \case DBJCISndChatFeature {feature, enabled, param} -> ACIContent SMDSnd $ CISndChatFeature feature enabled param DBJCIRcvChatPreference {feature, allowed, param} -> ACIContent SMDRcv $ CIRcvChatPreference feature allowed param DBJCISndChatPreference {feature, allowed, param} -> ACIContent SMDSnd $ CISndChatPreference feature allowed param - DBJCIRcvGroupFeature {groupFeature, preference, param} -> ACIContent SMDRcv $ CIRcvGroupFeature groupFeature preference param - DBJCISndGroupFeature {groupFeature, preference, param} -> ACIContent SMDSnd $ CISndGroupFeature groupFeature preference param + DBJCIRcvGroupFeature {groupFeature, preference, param, memberRole_} -> ACIContent SMDRcv $ CIRcvGroupFeature groupFeature preference param memberRole_ + DBJCISndGroupFeature {groupFeature, preference, param, memberRole_} -> ACIContent SMDSnd $ CISndGroupFeature groupFeature preference param memberRole_ DBJCIRcvChatFeatureRejected {feature} -> ACIContent SMDRcv $ CIRcvChatFeatureRejected feature DBJCIRcvGroupFeatureRejected {groupFeature} -> ACIContent SMDRcv $ CIRcvGroupFeatureRejected groupFeature DBJCISndModerated -> ACIContent SMDSnd CISndModerated diff --git a/src/Simplex/Chat/Messages/CIContent/Events.hs b/src/Simplex/Chat/Messages/CIContent/Events.hs index 7ce5f73cde..74f7d94399 100644 --- a/src/Simplex/Chat/Messages/CIContent/Events.hs +++ b/src/Simplex/Chat/Messages/CIContent/Events.hs @@ -7,6 +7,7 @@ module Simplex.Chat.Messages.CIContent.Events where import Data.Aeson (FromJSON (..), ToJSON (..)) import qualified Data.Aeson.TH as J import Simplex.Chat.Types +import Simplex.Chat.Types.Shared import Simplex.Messaging.Agent.Protocol (RatchetSyncState (..), SwitchPhase (..)) import Simplex.Messaging.Parsers (dropPrefix, singleFieldJSON, sumTypeJSON) import Simplex.Messaging.Crypto.Ratchet (PQEncryption) diff --git a/src/Simplex/Chat/Protocol.hs b/src/Simplex/Chat/Protocol.hs index 8727a592a7..e262de0e74 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -45,6 +45,7 @@ import Database.SQLite.Simple.FromField (FromField (..)) import Database.SQLite.Simple.ToField (ToField (..)) import Simplex.Chat.Call import Simplex.Chat.Types +import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Messaging.Agent.Protocol (VersionSMPA, pqdrSMPAgentVersion) import Simplex.Messaging.Compression (compress1, decompressBatch) diff --git a/src/Simplex/Chat/Store/Groups.hs b/src/Simplex/Chat/Store/Groups.hs index 832b928012..cd62f17f4c 100644 --- a/src/Simplex/Chat/Store/Groups.hs +++ b/src/Simplex/Chat/Store/Groups.hs @@ -124,6 +124,7 @@ import Control.Monad import Control.Monad.Except import Control.Monad.IO.Class import Crypto.Random (ChaChaDRG) +import Data.Bifunctor (second) import Data.Either (rights) import Data.Int (Int64) import Data.List (partition, sortOn) @@ -139,6 +140,7 @@ import Simplex.Chat.Store.Direct import Simplex.Chat.Store.Shared import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.Messaging.Agent.Protocol (ConnId, UserId) import Simplex.Messaging.Agent.Store.SQLite (firstRow, maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB @@ -668,13 +670,13 @@ getGroupSummary db User {userId} groupId = do (userId, groupId, GSMemRemoved, GSMemLeft, GSMemUnknown, GSMemInvited) pure GroupSummary {currentMembers = fromMaybe 0 currentMembers_} -getContactGroupPreferences :: DB.Connection -> User -> Contact -> IO [FullGroupPreferences] +getContactGroupPreferences :: DB.Connection -> User -> Contact -> IO [(GroupMemberRole, FullGroupPreferences)] getContactGroupPreferences db User {userId} Contact {contactId} = do - map (mergeGroupPreferences . fromOnly) + map (second mergeGroupPreferences) <$> DB.query db [sql| - SELECT gp.preferences + SELECT m.member_role, gp.preferences FROM groups g JOIN group_profiles gp USING (group_profile_id) JOIN group_members m USING (group_id) diff --git a/src/Simplex/Chat/Store/Profiles.hs b/src/Simplex/Chat/Store/Profiles.hs index 512c857b23..0e2445572c 100644 --- a/src/Simplex/Chat/Store/Profiles.hs +++ b/src/Simplex/Chat/Store/Profiles.hs @@ -81,6 +81,7 @@ import Simplex.Chat.Store.Direct import Simplex.Chat.Store.Shared import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.Messaging.Agent.Protocol (ACorrId, ConnId, UserId) import Simplex.Messaging.Agent.Store.SQLite (firstRow, maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB diff --git a/src/Simplex/Chat/Types.hs b/src/Simplex/Chat/Types.hs index e419f8c4cb..f7174a635b 100644 --- a/src/Simplex/Chat/Types.hs +++ b/src/Simplex/Chat/Types.hs @@ -30,7 +30,6 @@ import qualified Data.Aeson.TH as JQ import qualified Data.Aeson.Types as JT import qualified Data.Attoparsec.ByteString.Char8 as A import Data.ByteString.Char8 (ByteString, pack, unpack) -import qualified Data.ByteString.Char8 as B import Data.Int (Int64) import Data.Maybe (isJust) import Data.Text (Text) @@ -45,6 +44,7 @@ import Database.SQLite.Simple.Internal (Field (..)) import Database.SQLite.Simple.Ok import Database.SQLite.Simple.ToField (ToField (..)) import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.FileTransfer.Description (FileDigest) import Simplex.Messaging.Agent.Protocol (ACommandTag (..), ACorrId, AParty (..), APartyCmdTag (..), ConnId, ConnectionMode (..), ConnectionRequestUri, InvitationId, RcvFileId, SAEntity (..), SndFileId, UserId) @@ -439,9 +439,13 @@ featureAllowed feature forWhom Contact {mergedPreferences} = let ContactUserPreference {enabled} = getContactUserPreference feature mergedPreferences in forWhom enabled -groupFeatureAllowed :: GroupFeatureI f => SGroupFeature f -> GroupInfo -> Bool +groupFeatureAllowed :: GroupFeatureNoRoleI f => SGroupFeature f -> GroupInfo -> Bool groupFeatureAllowed feature gInfo = groupFeatureAllowed' feature $ fullGroupPreferences gInfo +groupFeatureMemberAllowed :: GroupFeatureRoleI f => SGroupFeature f -> GroupMember -> GroupInfo -> Bool +groupFeatureMemberAllowed feature GroupMember {memberRole} = + groupFeatureMemberAllowed' feature memberRole . fullGroupPreferences + mergeUserChatPrefs :: User -> Contact -> FullPreferences mergeUserChatPrefs user ct = mergeUserChatPrefs' user (contactConnIncognito ct) (userPreferences ct) @@ -796,41 +800,6 @@ fromInvitedBy userCtId = \case IBContact ctId -> Just ctId IBUser -> Just userCtId -data GroupMemberRole - = GRObserver -- connects to all group members and receives all messages, can't send messages - | GRAuthor -- reserved, unused - | GRMember -- + can send messages to all group members - | GRAdmin -- + add/remove members, change member role (excl. Owners) - | GROwner -- + delete and change group information, add/remove/change roles for Owners - deriving (Eq, Show, Ord) - -instance FromField GroupMemberRole where fromField = fromBlobField_ strDecode - -instance ToField GroupMemberRole where toField = toField . strEncode - -instance StrEncoding GroupMemberRole where - strEncode = \case - GROwner -> "owner" - GRAdmin -> "admin" - GRMember -> "member" - GRAuthor -> "author" - GRObserver -> "observer" - strDecode = \case - "owner" -> Right GROwner - "admin" -> Right GRAdmin - "member" -> Right GRMember - "author" -> Right GRAuthor - "observer" -> Right GRObserver - r -> Left $ "bad GroupMemberRole " <> B.unpack r - strP = strDecode <$?> A.takeByteString - -instance FromJSON GroupMemberRole where - parseJSON = strParseJSON "GroupMemberRole" - -instance ToJSON GroupMemberRole where - toJSON = strToJSON - toEncoding = strToJEncoding - data GroupMemberSettings = GroupMemberSettings { showMessages :: Bool } diff --git a/src/Simplex/Chat/Types/Preferences.hs b/src/Simplex/Chat/Types/Preferences.hs index 2286ae8f40..4cf9f862d2 100644 --- a/src/Simplex/Chat/Types/Preferences.hs +++ b/src/Simplex/Chat/Types/Preferences.hs @@ -10,6 +10,7 @@ {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE ScopedTypeVariables #-} {-# LANGUAGE StandaloneDeriving #-} +{-# LANGUAGE StrictData #-} {-# LANGUAGE TemplateHaskell #-} {-# LANGUAGE TypeApplications #-} {-# LANGUAGE TypeFamilyDependencies #-} @@ -31,6 +32,7 @@ import qualified Data.Text as T import Database.SQLite.Simple.FromField (FromField (..)) import Database.SQLite.Simple.ToField (ToField (..)) import GHC.Records.Compat +import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, enumJSON, fromTextField_, sumTypeJSON) @@ -148,6 +150,7 @@ data GroupFeature | GFReactions | GFVoice | GFFiles + | GFSimplexLinks | GFHistory deriving (Show) @@ -158,14 +161,23 @@ data SGroupFeature (f :: GroupFeature) where SGFReactions :: SGroupFeature 'GFReactions SGFVoice :: SGroupFeature 'GFVoice SGFFiles :: SGroupFeature 'GFFiles + SGFSimplexLinks :: SGroupFeature 'GFSimplexLinks SGFHistory :: SGroupFeature 'GFHistory deriving instance Show (SGroupFeature f) data AGroupFeature = forall f. GroupFeatureI f => AGF (SGroupFeature f) +data AGroupFeatureNoRole = forall f. GroupFeatureNoRoleI f => AGFNR (SGroupFeature f) + +data AGroupFeatureRole = forall f. GroupFeatureRoleI f => AGFR (SGroupFeature f) + deriving instance Show AGroupFeature +deriving instance Show AGroupFeatureNoRole + +deriving instance Show AGroupFeatureRole + groupFeatureNameText :: GroupFeature -> Text groupFeatureNameText = \case GFTimedMessages -> "Disappearing messages" @@ -174,15 +186,21 @@ groupFeatureNameText = \case GFReactions -> "Message reactions" GFVoice -> "Voice messages" GFFiles -> "Files and media" + GFSimplexLinks -> "SimpleX links" GFHistory -> "Recent history" groupFeatureNameText' :: SGroupFeature f -> Text groupFeatureNameText' = groupFeatureNameText . toGroupFeature -groupFeatureAllowed' :: GroupFeatureI f => SGroupFeature f -> FullGroupPreferences -> Bool +groupFeatureAllowed' :: GroupFeatureNoRoleI f => SGroupFeature f -> FullGroupPreferences -> Bool groupFeatureAllowed' feature prefs = getField @"enable" (getGroupPreference feature prefs) == FEOn +groupFeatureMemberAllowed' :: GroupFeatureRoleI f => SGroupFeature f -> GroupMemberRole -> FullGroupPreferences -> Bool +groupFeatureMemberAllowed' feature role prefs = + let pref = getGroupPreference feature prefs + in getField @"enable" pref == FEOn && maybe True (role >=) (getField @"role" pref) + allGroupFeatures :: [AGroupFeature] allGroupFeatures = [ AGF SGFTimedMessages, @@ -191,17 +209,19 @@ allGroupFeatures = AGF SGFReactions, AGF SGFVoice, AGF SGFFiles, + AGF SGFSimplexLinks, AGF SGFHistory ] groupPrefSel :: SGroupFeature f -> GroupPreferences -> Maybe (GroupFeaturePreference f) -groupPrefSel f GroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, history} = case f of +groupPrefSel f GroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, simplexLinks, history} = case f of SGFTimedMessages -> timedMessages SGFDirectMessages -> directMessages SGFFullDelete -> fullDelete SGFReactions -> reactions SGFVoice -> voice SGFFiles -> files + SGFSimplexLinks -> simplexLinks SGFHistory -> history toGroupFeature :: SGroupFeature f -> GroupFeature @@ -212,6 +232,7 @@ toGroupFeature = \case SGFReactions -> GFReactions SGFVoice -> GFVoice SGFFiles -> GFFiles + SGFSimplexLinks -> GFSimplexLinks SGFHistory -> GFHistory class GroupPreferenceI p where @@ -224,13 +245,14 @@ instance GroupPreferenceI (Maybe GroupPreferences) where getGroupPreference pt prefs = fromMaybe (getGroupPreference pt defaultGroupPrefs) (groupPrefSel pt =<< prefs) instance GroupPreferenceI FullGroupPreferences where - getGroupPreference f FullGroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, history} = case f of + getGroupPreference f FullGroupPreferences {timedMessages, directMessages, fullDelete, reactions, voice, files, simplexLinks, history} = case f of SGFTimedMessages -> timedMessages SGFDirectMessages -> directMessages SGFFullDelete -> fullDelete SGFReactions -> reactions SGFVoice -> voice SGFFiles -> files + SGFSimplexLinks -> simplexLinks SGFHistory -> history {-# INLINE getGroupPreference #-} @@ -242,17 +264,25 @@ data GroupPreferences = GroupPreferences reactions :: Maybe ReactionsGroupPreference, voice :: Maybe VoiceGroupPreference, files :: Maybe FilesGroupPreference, + simplexLinks :: Maybe SimplexLinksGroupPreference, history :: Maybe HistoryGroupPreference } deriving (Eq, Show) -setGroupPreference :: forall f. GroupFeatureI f => SGroupFeature f -> GroupFeatureEnabled -> Maybe GroupPreferences -> GroupPreferences +setGroupPreference :: forall f. GroupFeatureNoRoleI f => SGroupFeature f -> GroupFeatureEnabled -> Maybe GroupPreferences -> GroupPreferences setGroupPreference f enable prefs_ = setGroupPreference_ f pref prefs where prefs = mergeGroupPreferences prefs_ pref :: GroupFeaturePreference f pref = setField @"enable" (getGroupPreference f prefs) enable +setGroupPreferenceRole :: forall f. GroupFeatureRoleI f => SGroupFeature f -> GroupFeatureEnabled -> Maybe GroupMemberRole -> Maybe GroupPreferences -> GroupPreferences +setGroupPreferenceRole f enable role prefs_ = setGroupPreference_ f pref prefs + where + prefs = mergeGroupPreferences prefs_ + pref :: GroupFeaturePreference f + pref = setField @"role" (setField @"enable" (getGroupPreference f prefs) enable) role + setGroupPreference' :: SGroupFeature f -> GroupFeaturePreference f -> Maybe GroupPreferences -> GroupPreferences setGroupPreference' f pref prefs_ = setGroupPreference_ f pref prefs where @@ -267,6 +297,7 @@ setGroupPreference_ f pref prefs = SGFReactions -> prefs {reactions = pref} SGFVoice -> prefs {voice = pref} SGFFiles -> prefs {files = pref} + SGFSimplexLinks -> prefs {simplexLinks = pref} SGFHistory -> prefs {history = pref} setGroupTimedMessagesPreference :: TimedMessagesGroupPreference -> Maybe GroupPreferences -> GroupPreferences @@ -295,6 +326,7 @@ data FullGroupPreferences = FullGroupPreferences reactions :: ReactionsGroupPreference, voice :: VoiceGroupPreference, files :: FilesGroupPreference, + simplexLinks :: SimplexLinksGroupPreference, history :: HistoryGroupPreference } deriving (Eq, Show) @@ -346,16 +378,17 @@ defaultGroupPrefs :: FullGroupPreferences defaultGroupPrefs = FullGroupPreferences { timedMessages = TimedMessagesGroupPreference {enable = FEOff, ttl = Just 86400}, - directMessages = DirectMessagesGroupPreference {enable = FEOff}, + directMessages = DirectMessagesGroupPreference {enable = FEOff, role = Nothing}, fullDelete = FullDeleteGroupPreference {enable = FEOff}, reactions = ReactionsGroupPreference {enable = FEOn}, - voice = VoiceGroupPreference {enable = FEOn}, - files = FilesGroupPreference {enable = FEOn}, + voice = VoiceGroupPreference {enable = FEOn, role = Nothing}, + files = FilesGroupPreference {enable = FEOn, role = Nothing}, + simplexLinks = SimplexLinksGroupPreference {enable = FEOn, role = Nothing}, history = HistoryGroupPreference {enable = FEOff} } emptyGroupPrefs :: GroupPreferences -emptyGroupPrefs = GroupPreferences Nothing Nothing Nothing Nothing Nothing Nothing Nothing +emptyGroupPrefs = GroupPreferences Nothing Nothing Nothing Nothing Nothing Nothing Nothing Nothing data TimedMessagesPreference = TimedMessagesPreference { allow :: FeatureAllowed, @@ -431,7 +464,7 @@ data TimedMessagesGroupPreference = TimedMessagesGroupPreference deriving (Eq, Show) data DirectMessagesGroupPreference = DirectMessagesGroupPreference - {enable :: GroupFeatureEnabled} + {enable :: GroupFeatureEnabled, role :: Maybe GroupMemberRole} deriving (Eq, Show) data FullDeleteGroupPreference = FullDeleteGroupPreference @@ -443,11 +476,15 @@ data ReactionsGroupPreference = ReactionsGroupPreference deriving (Eq, Show) data VoiceGroupPreference = VoiceGroupPreference - {enable :: GroupFeatureEnabled} + {enable :: GroupFeatureEnabled, role :: Maybe GroupMemberRole} deriving (Eq, Show) data FilesGroupPreference = FilesGroupPreference - {enable :: GroupFeatureEnabled} + {enable :: GroupFeatureEnabled, role :: Maybe GroupMemberRole} + deriving (Eq, Show) + +data SimplexLinksGroupPreference = SimplexLinksGroupPreference + {enable :: GroupFeatureEnabled, role :: Maybe GroupMemberRole} deriving (Eq, Show) data HistoryGroupPreference = HistoryGroupPreference @@ -458,6 +495,11 @@ class (Eq (GroupFeaturePreference f), HasField "enable" (GroupFeaturePreference type GroupFeaturePreference (f :: GroupFeature) = p | p -> f sGroupFeature :: SGroupFeature f groupPrefParam :: GroupFeaturePreference f -> Maybe Int + groupPrefRole :: GroupFeaturePreference f -> Maybe GroupMemberRole + +class GroupFeatureI f => GroupFeatureNoRoleI f + +class (GroupFeatureI f, HasField "role" (GroupFeaturePreference f) (Maybe GroupMemberRole)) => GroupFeatureRoleI f instance HasField "enable" GroupPreference GroupFeatureEnabled where hasField p@GroupPreference {enable} = (\e -> p {enable = e}, enable) @@ -480,6 +522,9 @@ instance HasField "enable" VoiceGroupPreference GroupFeatureEnabled where instance HasField "enable" FilesGroupPreference GroupFeatureEnabled where hasField p@FilesGroupPreference {enable} = (\e -> p {enable = e}, enable) +instance HasField "enable" SimplexLinksGroupPreference GroupFeatureEnabled where + hasField p@SimplexLinksGroupPreference {enable} = (\e -> p {enable = e}, enable) + instance HasField "enable" HistoryGroupPreference GroupFeatureEnabled where hasField p@HistoryGroupPreference {enable} = (\e -> p {enable = e}, enable) @@ -487,42 +532,84 @@ instance GroupFeatureI 'GFTimedMessages where type GroupFeaturePreference 'GFTimedMessages = TimedMessagesGroupPreference sGroupFeature = SGFTimedMessages groupPrefParam TimedMessagesGroupPreference {ttl} = ttl + groupPrefRole _ = Nothing instance GroupFeatureI 'GFDirectMessages where type GroupFeaturePreference 'GFDirectMessages = DirectMessagesGroupPreference sGroupFeature = SGFDirectMessages groupPrefParam _ = Nothing + groupPrefRole DirectMessagesGroupPreference {role} = role instance GroupFeatureI 'GFFullDelete where type GroupFeaturePreference 'GFFullDelete = FullDeleteGroupPreference sGroupFeature = SGFFullDelete groupPrefParam _ = Nothing + groupPrefRole _ = Nothing instance GroupFeatureI 'GFReactions where type GroupFeaturePreference 'GFReactions = ReactionsGroupPreference sGroupFeature = SGFReactions groupPrefParam _ = Nothing + groupPrefRole _ = Nothing instance GroupFeatureI 'GFVoice where type GroupFeaturePreference 'GFVoice = VoiceGroupPreference sGroupFeature = SGFVoice groupPrefParam _ = Nothing + groupPrefRole VoiceGroupPreference {role} = role instance GroupFeatureI 'GFFiles where type GroupFeaturePreference 'GFFiles = FilesGroupPreference sGroupFeature = SGFFiles groupPrefParam _ = Nothing + groupPrefRole FilesGroupPreference {role} = role + +instance GroupFeatureI 'GFSimplexLinks where + type GroupFeaturePreference 'GFSimplexLinks = SimplexLinksGroupPreference + sGroupFeature = SGFSimplexLinks + groupPrefParam _ = Nothing + groupPrefRole SimplexLinksGroupPreference {role} = role instance GroupFeatureI 'GFHistory where type GroupFeaturePreference 'GFHistory = HistoryGroupPreference sGroupFeature = SGFHistory groupPrefParam _ = Nothing + groupPrefRole _ = Nothing -groupPrefStateText :: HasField "enable" p GroupFeatureEnabled => GroupFeature -> p -> Maybe Int -> Text -groupPrefStateText feature pref param = +instance GroupFeatureNoRoleI 'GFTimedMessages + +instance GroupFeatureNoRoleI 'GFFullDelete + +instance GroupFeatureNoRoleI 'GFReactions + +instance GroupFeatureNoRoleI 'GFHistory + +instance HasField "role" DirectMessagesGroupPreference (Maybe GroupMemberRole) where + hasField p@DirectMessagesGroupPreference {role} = (\r -> p {role = r}, role) + +instance HasField "role" VoiceGroupPreference (Maybe GroupMemberRole) where + hasField p@VoiceGroupPreference {role} = (\r -> p {role = r}, role) + +instance HasField "role" FilesGroupPreference (Maybe GroupMemberRole) where + hasField p@FilesGroupPreference {role} = (\r -> p {role = r}, role) + +instance HasField "role" SimplexLinksGroupPreference (Maybe GroupMemberRole) where + hasField p@SimplexLinksGroupPreference {role} = (\r -> p {role = r}, role) + +instance GroupFeatureRoleI 'GFDirectMessages + +instance GroupFeatureRoleI 'GFVoice + +instance GroupFeatureRoleI 'GFFiles + +instance GroupFeatureRoleI 'GFSimplexLinks + +groupPrefStateText :: HasField "enable" p GroupFeatureEnabled => GroupFeature -> p -> Maybe Int -> Maybe GroupMemberRole -> Text +groupPrefStateText feature pref param role = let enabled = getField @"enable" pref paramText = if enabled == FEOn then groupParamText_ feature param else "" - in groupFeatureNameText feature <> ": " <> safeDecodeUtf8 (strEncode enabled) <> paramText + roleText = maybe "" (\r -> " for " <> safeDecodeUtf8 (strEncode r) <> "s") role + in groupFeatureNameText feature <> ": " <> safeDecodeUtf8 (strEncode enabled) <> paramText <> roleText groupParamText_ :: GroupFeature -> Maybe Int -> Text groupParamText_ feature param = case feature of @@ -532,7 +619,7 @@ groupParamText_ feature param = case feature of groupPreferenceText :: forall f. GroupFeatureI f => GroupFeaturePreference f -> Text groupPreferenceText pref = let feature = toGroupFeature $ sGroupFeature @f - in groupPrefStateText feature pref $ groupPrefParam pref + in groupPrefStateText feature pref (groupPrefParam pref) (groupPrefRole pref) timedTTLText :: Int -> Text timedTTLText 0 = "0 sec" @@ -602,7 +689,7 @@ instance StrEncoding GroupFeatureEnabled where "on" -> Right FEOn "off" -> Right FEOff r -> Left $ "bad GroupFeatureEnabled " <> B.unpack r - strP = strDecode <$?> A.takeByteString + strP = strDecode <$?> A.takeTill (== ' ') instance FromJSON GroupFeatureEnabled where parseJSON = strParseJSON "GroupFeatureEnabled" @@ -611,11 +698,13 @@ instance ToJSON GroupFeatureEnabled where toJSON = strToJSON toEncoding = strToJEncoding -groupFeatureState :: GroupFeatureI f => GroupFeaturePreference f -> (GroupFeatureEnabled, Maybe Int) +groupFeatureState :: GroupFeatureI f => GroupFeaturePreference f -> (GroupFeatureEnabled, Maybe Int, Maybe GroupMemberRole) groupFeatureState p = let enable = getField @"enable" p - param = if enable == FEOn then groupPrefParam p else Nothing - in (enable, param) + (param, role) + | enable == FEOn = (groupPrefParam p, groupPrefRole p) + | otherwise = (Nothing, Nothing) + in (enable, param, role) mergePreferences :: Maybe Preferences -> Maybe Preferences -> FullPreferences mergePreferences contactPrefs userPreferences = @@ -641,6 +730,7 @@ mergeGroupPreferences groupPreferences = reactions = pref SGFReactions, voice = pref SGFVoice, files = pref SGFFiles, + simplexLinks = pref SGFSimplexLinks, history = pref SGFHistory } where @@ -656,6 +746,7 @@ toGroupPreferences groupPreferences = reactions = pref SGFReactions, voice = pref SGFVoice, files = pref SGFFiles, + simplexLinks = pref SGFSimplexLinks, history = pref SGFHistory } where @@ -762,6 +853,8 @@ $(J.deriveJSON defaultJSON ''VoiceGroupPreference) $(J.deriveJSON defaultJSON ''FilesGroupPreference) +$(J.deriveJSON defaultJSON ''SimplexLinksGroupPreference) + $(J.deriveJSON defaultJSON ''HistoryGroupPreference) $(J.deriveJSON defaultJSON ''GroupPreferences) diff --git a/src/Simplex/Chat/Types/Shared.hs b/src/Simplex/Chat/Types/Shared.hs new file mode 100644 index 0000000000..f44457160f --- /dev/null +++ b/src/Simplex/Chat/Types/Shared.hs @@ -0,0 +1,48 @@ +{-# LANGUAGE LambdaCase #-} +{-# LANGUAGE OverloadedStrings #-} + +module Simplex.Chat.Types.Shared where + +import Data.Aeson (FromJSON (..), ToJSON (..)) +import qualified Data.Attoparsec.ByteString.Char8 as A +import qualified Data.ByteString.Char8 as B +import Database.SQLite.Simple.FromField (FromField (..)) +import Database.SQLite.Simple.ToField (ToField (..)) +import Simplex.Chat.Types.Util +import Simplex.Messaging.Encoding.String +import Simplex.Messaging.Util ((<$?>)) + +data GroupMemberRole + = GRObserver -- connects to all group members and receives all messages, can't send messages + | GRAuthor -- reserved, unused + | GRMember -- + can send messages to all group members + | GRAdmin -- + add/remove members, change member role (excl. Owners) + | GROwner -- + delete and change group information, add/remove/change roles for Owners + deriving (Eq, Show, Ord) + +instance FromField GroupMemberRole where fromField = fromBlobField_ strDecode + +instance ToField GroupMemberRole where toField = toField . strEncode + +instance StrEncoding GroupMemberRole where + strEncode = \case + GROwner -> "owner" + GRAdmin -> "admin" + GRMember -> "member" + GRAuthor -> "author" + GRObserver -> "observer" + strDecode = \case + "owner" -> Right GROwner + "admin" -> Right GRAdmin + "member" -> Right GRMember + "author" -> Right GRAuthor + "observer" -> Right GRObserver + r -> Left $ "bad GroupMemberRole " <> B.unpack r + strP = strDecode <$?> A.takeByteString + +instance FromJSON GroupMemberRole where + parseJSON = strParseJSON "GroupMemberRole" + +instance ToJSON GroupMemberRole where + toJSON = strToJSON + toEncoding = strToJEncoding diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index 550fe97b18..55e0078d0d 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -49,6 +49,7 @@ import Simplex.Chat.Store (AutoAccept (..), StoreError (..), UserContactLink (.. import Simplex.Chat.Styled import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import qualified Simplex.FileTransfer.Transport as XFTPTransport import Simplex.Messaging.Agent.Client (ProtocolTestFailure (..), ProtocolTestStep (..), SubscriptionsInfo (..)) import Simplex.Messaging.Agent.Env.SQLite (NetworkConfig (..)) diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index b78d36f489..fbabccfb54 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -19,7 +19,8 @@ import Simplex.Chat.Bot.KnownContacts import Simplex.Chat.Controller (ChatConfig (..)) import Simplex.Chat.Core import Simplex.Chat.Options (CoreChatOpts (..)) -import Simplex.Chat.Types (GroupMemberRole (..), Profile (..)) +import Simplex.Chat.Types (Profile (..)) +import Simplex.Chat.Types.Shared (GroupMemberRole (..)) import System.FilePath (()) import Test.Hspec hiding (it) diff --git a/tests/ChatTests/Groups.hs b/tests/ChatTests/Groups.hs index 77bac11145..a7a646c17b 100644 --- a/tests/ChatTests/Groups.hs +++ b/tests/ChatTests/Groups.hs @@ -15,7 +15,8 @@ import qualified Data.Text as T import Simplex.Chat.Controller (ChatConfig (..)) import Simplex.Chat.Protocol (supportedChatVRange) import Simplex.Chat.Store (agentStoreFile, chatStoreFile) -import Simplex.Chat.Types (GroupMemberRole (..), VersionRangeChat) +import Simplex.Chat.Types (VersionRangeChat) +import Simplex.Chat.Types.Shared (GroupMemberRole (..)) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import Simplex.Messaging.Crypto.Ratchet (pattern PQSupportOff) import System.Directory (copyFile) @@ -1509,6 +1510,7 @@ testGroupDescription = testChat4 aliceProfile bobProfile cathProfile danProfile alice <## "Message reactions: on" alice <## "Voice messages: on" alice <## "Files and media: on" + alice <## "SimpleX links: on" alice <## "Recent history: on" bobAddedDan :: HasCallStack => TestCC -> IO () bobAddedDan cc = do diff --git a/tests/ChatTests/Profiles.hs b/tests/ChatTests/Profiles.hs index 8a9191c988..a6cc491456 100644 --- a/tests/ChatTests/Profiles.hs +++ b/tests/ChatTests/Profiles.hs @@ -13,7 +13,8 @@ import qualified Data.Attoparsec.ByteString.Char8 as A import qualified Data.ByteString.Char8 as B import qualified Data.Text as T import Simplex.Chat.Store.Shared (createContact) -import Simplex.Chat.Types (ConnStatus (..), GroupMemberRole (..), Profile (..)) +import Simplex.Chat.Types (ConnStatus (..), Profile (..)) +import Simplex.Chat.Types.Shared (GroupMemberRole (..)) import Simplex.Messaging.Encoding.String (StrEncoding (..)) import System.Directory (copyFile, createDirectoryIfMissing) import Test.Hspec hiding (it) @@ -68,6 +69,10 @@ chatProfileTests = do it "enable timed messages in group" testEnableTimedMessagesGroup xit'' "timed messages enabled globally, contact turns on" testTimedMessagesEnabledGlobally it "update multiple user preferences for multiple contacts" testUpdateMultipleUserPrefs + describe "group preferences for specific member role" $ do + it "direct messages" testGroupPrefsDirectForRole + it "files & media" testGroupPrefsFilesForRole + it "SimpleX links" testGroupPrefsSimplexLinksForRole testUpdateProfile :: HasCallStack => FilePath -> IO () testUpdateProfile = @@ -1903,3 +1908,122 @@ testUpdateMultipleUserPrefs = testChat3 aliceProfile bobProfile cathProfile $ alice #$> ("/_get chat @2 count=100", chat, chatFeatures <> [(1, "hi bob"), (1, "Full deletion: enabled for contact"), (1, "Message reactions: off")]) alice #$> ("/_get chat @3 count=100", chat, chatFeatures <> [(1, "hi cath"), (1, "Full deletion: enabled for contact"), (1, "Message reactions: off")]) + +testGroupPrefsDirectForRole :: HasCallStack => FilePath -> IO () +testGroupPrefsDirectForRole = testChat4 aliceProfile bobProfile cathProfile danProfile $ + \alice bob cath dan -> do + createGroup3 "team" alice bob cath + threadDelay 1000000 + alice ##> "/set direct #team on owner" + alice <## "updated group preferences:" + alice <## "Direct messages: on for owners" + directForOwners bob + directForOwners cath + threadDelay 1000000 + bob ##> "@cath hello again" + bob <## "bad chat command: direct messages not allowed" + (cath "/j #team" + concurrentlyN_ + [ cath <## "#team: dan joined the group", + do + dan <## "#team: you joined the group" + dan + <### [ "#team: member alice (Alice) is connected", + "#team: member bob (Bob) is connected" + ], + do + alice <## "#team: cath added dan (Daniel) to the group (connecting...)" + alice <## "#team: new member dan is connected", + do + bob <## "#team: cath added dan (Daniel) to the group (connecting...)" + bob <## "#team: new member dan is connected" + ] + -- dan cannot send direct messages to alice (owner) + dan ##> "@alice hello alice" + dan <## "bad chat command: direct messages not allowed" + (alice hello dan" + dan <## "alice (Alice): contact is connected" + -- and now dan can too + dan #> "@alice hi alice" + alice <# "dan> hi alice" + where + directForOwners :: HasCallStack => TestCC -> IO () + directForOwners cc = do + cc <## "alice updated group #team:" + cc <## "updated group preferences:" + cc <## "Direct messages: on for owners" + +testGroupPrefsFilesForRole :: HasCallStack => FilePath -> IO () +testGroupPrefsFilesForRole = testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> withXFTPServer $ do + alice #$> ("/_files_folder ./tests/tmp/alice", id, "ok") + bob #$> ("/_files_folder ./tests/tmp/bob", id, "ok") + createDirectoryIfMissing True "./tests/tmp/alice" + createDirectoryIfMissing True "./tests/tmp/bob" + copyFile "./tests/fixtures/test.txt" "./tests/tmp/alice/test1.txt" + copyFile "./tests/fixtures/test.txt" "./tests/tmp/bob/test2.txt" + createGroup3 "team" alice bob cath + threadDelay 1000000 + alice ##> "/set files #team on owner" + alice <## "updated group preferences:" + alice <## "Files and media: on for owners" + filesForOwners bob + filesForOwners cath + threadDelay 1000000 + bob ##> "/f #team test2.txt" + bob <## "bad chat command: feature not allowed Files and media" + (alice "/f #team test1.txt" + alice <## "use /fc 1 to cancel sending" + alice <## "completed uploading file 1 (test1.txt) for #team" + bob <# "#team alice> sends file test1.txt (11 bytes / 11 bytes)" + bob <## "use /fr 1 [/ | ] to receive it" + cath <# "#team alice> sends file test1.txt (11 bytes / 11 bytes)" + cath <## "use /fr 1 [/ | ] to receive it" + where + filesForOwners :: HasCallStack => TestCC -> IO () + filesForOwners cc = do + cc <## "alice updated group #team:" + cc <## "updated group preferences:" + cc <## "Files and media: on for owners" + +testGroupPrefsSimplexLinksForRole :: HasCallStack => FilePath -> IO () +testGroupPrefsSimplexLinksForRole = testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> withXFTPServer $ do + createGroup3 "team" alice bob cath + threadDelay 1000000 + alice ##> "/set links #team on owner" + alice <## "updated group preferences:" + alice <## "SimpleX links: on for owners" + linksForOwners bob + linksForOwners cath + threadDelay 1000000 + bob ##> "/c" + inv <- getInvitation bob + bob ##> ("#team " <> inv) + bob <## "bad chat command: feature not allowed SimpleX links" + (alice ("#team " <> inv) + bob <# ("#team alice> " <> inv) + cath <# ("#team alice> " <> inv) + where + linksForOwners :: HasCallStack => TestCC -> IO () + linksForOwners cc = do + cc <## "alice updated group #team:" + cc <## "updated group preferences:" + cc <## "SimpleX links: on for owners" diff --git a/tests/ChatTests/Utils.hs b/tests/ChatTests/Utils.hs index 3b0748e7d0..98227fcd0c 100644 --- a/tests/ChatTests/Utils.hs +++ b/tests/ChatTests/Utils.hs @@ -30,6 +30,7 @@ import Simplex.Chat.Store.NoteFolders (createNoteFolder) import Simplex.Chat.Store.Profiles (getUserContactProfiles) import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.FileTransfer.Client.Main (xftpClientCLI) import Simplex.Messaging.Agent.Store.SQLite (maybeFirstRow, withTransaction) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB @@ -315,6 +316,7 @@ groupFeatures'' = ((0, "Message reactions: on"), Nothing, Nothing), ((0, "Voice messages: on"), Nothing, Nothing), ((0, "Files and media: on"), Nothing, Nothing), + ((0, "SimpleX links: on"), Nothing, Nothing), ((0, "Recent history: on"), Nothing, Nothing) ] diff --git a/tests/ProtocolTests.hs b/tests/ProtocolTests.hs index 082af825e5..18fb677be2 100644 --- a/tests/ProtocolTests.hs +++ b/tests/ProtocolTests.hs @@ -12,6 +12,7 @@ import Data.Time.Clock.System (SystemTime (..), systemToUTCTime) import Simplex.Chat.Protocol import Simplex.Chat.Types import Simplex.Chat.Types.Preferences +import Simplex.Chat.Types.Shared import Simplex.Messaging.Agent.Protocol import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Crypto.Ratchet @@ -99,7 +100,7 @@ testChatPreferences :: Maybe Preferences testChatPreferences = Just Preferences {voice = Just VoicePreference {allow = FAYes}, fullDelete = Nothing, timedMessages = Nothing, calls = Nothing, reactions = Just ReactionsPreference {allow = FAYes}} testGroupPreferences :: Maybe GroupPreferences -testGroupPreferences = Just GroupPreferences {timedMessages = Nothing, directMessages = Nothing, reactions = Just ReactionsGroupPreference {enable = FEOn}, voice = Just VoiceGroupPreference {enable = FEOn}, files = Nothing, fullDelete = Nothing, history = Nothing} +testGroupPreferences = Just GroupPreferences {timedMessages = Nothing, directMessages = Nothing, reactions = Just ReactionsGroupPreference {enable = FEOn}, voice = Just VoiceGroupPreference {enable = FEOn, role = Nothing}, files = Nothing, fullDelete = Nothing, simplexLinks = Nothing, history = Nothing} testProfile :: Profile testProfile = Profile {displayName = "alice", fullName = "Alice", image = Just (ImageData "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII="), contactLink = Nothing, preferences = testChatPreferences} From 0d7a32877f77367ab5f57d43bc8b3ede0a9c2c44 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 5 Apr 2024 12:24:34 +0100 Subject: [PATCH 003/147] ci: build armv7a with 8.10.7 in the main branches (master, stable) (#3733) Co-authored-by: Moritz Angermann --- flake.nix | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/flake.nix b/flake.nix index 91cf43d0fe..748b5a4f2d 100644 --- a/flake.nix +++ b/flake.nix @@ -29,8 +29,8 @@ }; in # `appendOverlays` with a singleton is identical to `extend`. let pkgs = haskellNix.legacyPackages.${system}.appendOverlays [android26]; in - let drv' = { extra-modules, pkgs', ... }: pkgs'.haskell-nix.project { - compiler-nix-name = "ghc963"; + let drv' = { extra-modules, pkgs', compiler-nix-name, ... }: pkgs'.haskell-nix.project { + inherit compiler-nix-name; index-state = "2023-12-12T00:00:00Z"; # We need this, to specify we want the cabal project. # If the stack.yaml was dropped, this would not be necessary. @@ -51,7 +51,7 @@ })] ++ extra-modules; }; in # by defualt we don't need to pass extra-modules. - let drv = pkgs': drv' { extra-modules = []; inherit pkgs'; }; in + let drv = pkgs': drv' { extra-modules = []; inherit pkgs'; compiler-nix-name = "ghc964"; }; in # This will package up all *.a in $out into a pkg.zip that can # be downloaded from hydra. let withHydraLibPkg = pkg: pkg.overrideAttrs (old: { @@ -262,7 +262,7 @@ # STATIC aarch64-linux "${pkgs.pkgsCross.aarch64-multiplatform-musl.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.aarch64-multiplatform-musl).simplex-chat.components.exes.simplex-chat; - "armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override (p: { + "armv7a-android:lib:support" = (drv' { extra-modules = []; pkgs' = android32Pkgs; compiler-nix-name = "ghc8107"; } ).android-support.components.library.override (p: { smallAddressSpace = true; # we won't want -dyamic (see aarch64-android:lib:simplex-chat) enableShared = false; @@ -325,6 +325,7 @@ ''; }); "armv7a-android:lib:simplex-chat" = (drv' { + compiler-nix-name = "ghc8107"; pkgs' = android32Pkgs; extra-modules = [{ packages.text.flags.simdutf = false; @@ -340,7 +341,7 @@ ]; # 32 bit patches packages.basement.patches = [ - ./scripts/nix/basement-pr-573.patch + # ./scripts/nix/basement-pr-573.patch ]; packages.memory.patches = [ ./scripts/nix/memory-pr-99.patch @@ -433,6 +434,7 @@ ''; }); "aarch64-android:lib:simplex-chat" = (drv' { + compiler-nix-name = "ghc964"; pkgs' = androidPkgs; extra-modules = [{ packages.text.flags.simdutf = false; From 2968cd046079b5c92224d764e387ca5f1b8be54d Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 5 Apr 2024 16:46:37 +0100 Subject: [PATCH 004/147] rfc: protocol extensions for channels/super-peers (#3980) --- docs/rfcs/2024-04-01-super-peers-2.md | 262 ++++++++++++++++++++++++++ 1 file changed, 262 insertions(+) create mode 100644 docs/rfcs/2024-04-01-super-peers-2.md diff --git a/docs/rfcs/2024-04-01-super-peers-2.md b/docs/rfcs/2024-04-01-super-peers-2.md new file mode 100644 index 0000000000..1ebd72bc41 --- /dev/null +++ b/docs/rfcs/2024-04-01-super-peers-2.md @@ -0,0 +1,262 @@ +# Large public grups / channels + +This document describes specific design elements for the MVP of [the groups based on super-peers](./2024-03-14-super-peers.md). + +## Super-peer members + +There are two possible design approaches for super-peer members: + +1. Separate non-participating members that can only be added as a super-peers and do not have their own roles in the group, can't send their own messages or administer the group. + +2. Super-peer being a function of any member, irrespective of their role. + +While approach 1 can be simpler, it has its downsides: +- more complex migration of the existing groups - e.g., directory service cannot become a super-peer while remaining group admin (or moderator, if we add a new role). +- less usable clients - users can have desktop clients with good internet connectivity and sufficient computing resources to effectively host several medium size groups, even with SQLite database. +- it makes super-peers more like servers, being both unusable as clients and also requiring larger concurrency, and therefore increasing centralization. + +Therefore, the approach 2 looks more attractive, when super-peers must have some role in the group, and the super peers that cannot send messages will have observer role. + +As a side note, it also implies that it is beneficial to see the permission to moderate messages not as a role somewhere between Member and Admin, but as a separate privilege that admins and owners have by default for the messages from the members up to their role, but in general it's a separate member profile setting that allows to moderate messages up to a certain role. That approach would help automatic moderation as well, when moderators may be allowed to moderate messages of admins, without being able to remove members. + +Proposed protocol modifications: + +```haskell +-- this type is used in XGrpMemNew, XGrpMemIntro and XGrpMemFwd for member introductions +data MemberInfo = MemberInfo + { memberId :: MemberId, + memberRole :: GroupMemberRole, + rank :: Maybe Word8, -- new field, 0 for usual members, 1 for super-peers, allows to build additional distribution hierarhies if needed. + perms :: Maybe MemberPermissions, -- new field + v :: Maybe ChatVersionRange, + profile :: Profile + } + +-- this type is used in XGrpInv (in GroupInvitation) and XGrpLinkInv (in GroupLinkInvitation) +-- to invite members to the group +data MemberIdRole = MemberIdRole + { memberId :: MemberId, + memberRole :: GroupMemberRole, + rank :: Maybe Word8, -- new field + perms :: Maybe MemberPermissions -- new field + } + +-- new type +data MemberPermissions = MemberPermissions + { moderate :: MemberPermissionTarget -- could be extended to array in the future + } + +-- new type +data MemberPermissionTarget = MemberPermissionTarget + { maxRole :: Maybe GroupMemberRole -- if absent, can moderate all messages + } +``` + +For backwards compatibility, `admin` role implies `{moderate: {maxRole: admin}}` permission and `owner` - `{moderate: {maxRole: owner}}`, which probably can be overridden with `{moderate: {maxRole: observer}}`. + +It is also proposed to migrate `memberId` and `memberRole` to `id` and `role` in the parser (in a forward/backward compatible way), without changing serializers. + +## Group routing mode + +Irrespective of the presense of super peers in the group, the group itself has to be switched to super-peers routing at some point via a group profile update. + +```haskell +data GroupProfile = GroupProfile + { displayName :: GroupName, + fullName :: Text, + description :: Maybe Text, + image :: Maybe ImageData, + groupPreferences :: Maybe GroupPreferences, + rank :: Maybe Int, -- new field, 0 for flat groups, 1 for groups with super peers + redundancy :: Maybe GroupRedundancy, -- new field, only used when rank > 0 + consensus :: Maybe GroupConsensus -- new field, see below in + } + +-- each field defines an average number of super-peers that will deliver messages (events) related to a specific scope, +-- by default all super peers will deliver the events in that scope. +data GroupRedundancy = GroupRedundancy + { messages :: Maybe Double, -- messages and message changes, including reactions and comments + members :: Maybe Double, -- member additions and permission changes + group :: Maybe Double -- group profile and other changes + } +``` + +## Decisions about message or another event delivery + +In groups with rank 0 (current groups) all members aim to establish connections with all other members, making it hard to scale. Admins who added the members play a temporary role of forwarding messages, but only until members are connected. + +In groups with rank 1 super-peers connect to all members, but each message or event may be delivered by some rather than by all super-peers, to avoid substantial traffic increase. E.g., in groups with 2 super-peers it would be desirable to deliver each message 1.33 (4/3) times on average, while for groups with 3 super peers it can be 2 or 1.667 (5/3) times. + +The decision whether a given super peer should deliver the message would depend on these factors: +- deterministic (see below) message hash, `h`. +- receiving member ID, `r`. +- super-peer member ID, `s`. +- target message redundancy `d` (the desired number of super-peers to deliver the message). +- number of super-peers connected to member `r` (and known as connected to super-peer making the decision), `n`. +- 0-based index of the current super-peer in the sorted array of known super peer IDs, `i`. It does not require sorting all peer IDs, it's enough to count how many peers have smaller or larger IDs. + +The assumption here is that member ID is unique within the group, and that message hashes are also unique. Also, message hashes rather than sending member IDs are used to ensure that the decision is made differently for the same sender/recipient pairs, allowing recipients to identify integrity violations (e.g., if some of the super-peers decides to change the messages or fail to deliver it). + +For simplicity, all parameters are normalized to 0..1 range from their respective binary ranges. + +The algorithm to decide whether the message should be delivered by a given super-peer: + +``` +if (d >= n || n == 1) deliver; +else + prob = d/n ; delivery probability based on target delivery redundancy + point = (h + r)/2 ; as member ID and message hash are uniformly random in 0..1 range, `point` will also be uniformly random in 0..1 range + start = (1 - prob) * i / (n - 1) ; `start` for the peer with `i == 0` will be `0` and with `i == n - 1` will be `1 - prob` + end = start + prob ; `end` for peer 0 will be `prob` and for peer `n - 1` will be 1 + ; for all peers the range `start..end` will have width `prob` + if (point >= start && point < end) deliver + else skip; +``` + +This algorithm can be proven to result in target average delivery redundancy. + +It also requires all super peers to inform other super peers about: +- establishing or losing the connection with other members (e.g., when AUTH is received). +- informing about their decision to stop being super peers in advance. +- most likely using delivery receipts in communications between super-peers that would include message hashes in RCVD info. + +## Authorising administrative changes + +As members no longer send messages directly to other members, in addition to the risk of the initial MITM by admin (which is now mitigated by having multiple super-peers) there is a risk of super-peers being compromised at a later stage, and in case of administrative changes (member or group level changes) we have these options: + +1. have all members postpone these changes until they are communicated by a sufficient number of super-peers (that would require configuring consensus on the group level). +2. have admins and owners sign administrative changes with the public key included in their profile during member introduction. + +The downside of approach 1 is that administrative actions will be delayed and have to be executed not at the time the message is delivered, but at the time message is confirmed by other super-peers. That is separate and in addition to member consensus for some changes (see below). That also means that groups with one super-peer will have no defence mechanism against super-peer being compromised. That also means that groups with two super-peers will either also have no such defence (in case required consensus level is 1) or will require that both super-peers are available, and no administrative actions will be executed unless both super-peers are available. + +The downside of approach 2 is the lack of repudiation, in fact, there is a non-repudiation quality of such administrative changes as role changes, member additions and deletions, and group changes. + +Overall, while repudiation of sent messages appears as important, it seems much less important for administrative changes, and signing member and group changes while relying on Merkle DAG for message history integrity appears to be an optimal tradeoff. + +To support this functionality the `admin` and `owner` members have to add public keys to their profiles and communicate profile updates to all members (before or after group is switched to super-peers, but probably before is better). + +The middle ground here is moderation, and trade-off here is more nuanced. Practically, whether message is fully removed or marked as removed is the group policy decision, and it can be made based on whether it's more important to preserve content or to remove undesirable content without trace, and also given that super-peers are likely to be give automatic moderation capabilities anyway, preserving deniability for moderation events and relying on Merkle DAG to identify integrity violation seems a better alternative than signing moderation messages. Although it can also be a part of group policy whether to require signing moderation events. + +The change to member profile will be: + +```haskell +data Profile = Profile + { displayName :: ContactName, + fullName :: Text, + image :: Maybe ImageData, + contactLink :: Maybe ConnReqContact, + preferences :: Maybe Preferences, + authKey :: Maybe AuthKey -- new field + } + +-- this is rather ad hoc and tries to allow two things: +-- - verify that the member has the private key. +-- - allow key rotations on profile changes, without signing the whole profile change. +-- A better option could be to use certificates, although they are much large in size, +-- and also to simply sign profile changes that include key change (then prevKeySignature won't be needed) +data AuthKey = AuthKey + { key :: PublicKeyEd25519, + signature :: SignatureEd25519, -- signature of the key itself + prevKeySignature :: Maybe SignatureEd25519 + } +``` + +## Role, rank and moderation permission changes of members and group profile changes + +There are two problems with the current approach to changing permission, when a single member makes this decision: +- member whose role changes may disagree. E.g., the member may not be willing to have owner or admin role in some groups. Even more so, the member may be unable to perform super-peer functions (have rank 1). +- other owners or admins may disagree with the change or it may have been made by mistake. + +With the move to super-peers it is additionally complicated by the fact that super-peers will be forwarding these messages, and they could be compromised, thus disrupting group functioning - this risk currently exists with the existing group directory that plays admin role and in case it is compromised it can remove all members from the group. + +Part of this problem is addressed in the previous point by requiring to sign administrative changes. + +Another part is about the members agreeing to changes that affect them when additional privileges are granted, and also by requiring the consensus between group owners and admins for any privilege changes. + +There are 2 options for proposals/acceptance/approvals flow design: +1. introduce additional protocol messages for each stage, and for each type of change to complement existing messages. +2. manage these stages in orthogonal way, by adding these stages on the top level of the protocol. + +The option 2 is likely to result in a more concise protocol as it will separate approval from from the events, also allowing to include authorizations in a standardized way. This also fits well in `XGrpMsgForward` event that includes that message inside, so all authorizations will be forwarded. + +```haskell +-- fields are the number of member approvals required for actions with that role. +-- As target member acceptance is required only for privilege increases it won't be among approvals required for consensus. +-- For example, for group with consensus = {admin: 3, owners: 2}, a new member can be made admin with the decision of 3 other admins or with the decision of single owner (as owner role is higher), or the group can be removed, a new admin is added or group consensus changed with the decision of 2 admins. +-- Owners leaving without changing the consensus can result in consensus becoming unreachable - this is not different from losing a single member, and it only prevents accidental or malicious destructive actions, but does not prevent losing access. +data GroupConsensus = GroupConsensus + { admin :: Maybe Word16, -- possibly, this field is not needed + owner :: Maybe Word16 -- 1 by default + } + +-- alternatively, the type could be more flexible than that, but it can be extended if needed. + +data ChatMessage e = ChatMessage + { chatVRange :: VersionRangeChat, + msgId :: Maybe SharedMsgId, + chatMsgEvent :: ChatMsgEvent e, + stage :: Maybe MessageStage, -- new field, Nothing for broadcasted messages + bcast :: Maybe MessageBroadcast, -- new field instructing super-peers how to broadcast the message + auth :: Maybe (Either MemberApproval [MemberApproval]) -- approvals for broadcasted messages from members, Either won't be in encoding + } + +data MessageStage = MSProposed | MSApproved + +-- possibly, this could include approval stage but it is implied by the context, message needs to be approved by: +-- - the sender with the sufficient permissions +-- - the target of the change when privileges are granted +-- - other admins or owners as required by `consensus` property in group profile. +data MemberApproval = MemberApproval + { memberId :: MemberId, -- can be encoded as id? + auth :: SignatureEd25519 + } + +data MessageBroadcast = MessageBroadcast + { from :: Maybe MessageFrom, -- MFSender by default + auth :: Maybe Bool, -- whether to keep auth if present, True by default, False means to validate and remove auth + schedule :: Maybe MessageSchedule + } + +data MessageFrom = MFSender | MFApprovers + +data MessageSchedule = MessageSchedule + { deliverAt :: Maybe UTCTime, -- when received by super-peer by default + minDelay :: Maybe Int, -- seconds, added to start, 0 by default + maxDelay :: Maybe Int -- seconds, added to start, 0 by default + } + +-- e.g., to deliver at least 2 hours after received by super-peer, the MessageSchedule would be {minDelay :: 7200} +-- or, to deliver all messages 20-40 seconds after it is received, to complicate traffic correlation it would be {minDelay: 20, maxDelay: 40} +-- or, to deliver at a scheduled time {deliverAt: "2024-04-01T00:00:00Z"} +``` + +The signature is computed over deterministic message hash excluding `auth` property. This structure would also allow asking super-peers to forward the message as originating from multiple owners or admins without showing who originated the message, as long as necessary approvals are present. + +That will require extending `XGrpMsgForward` to support array of MemberId and allow UI to show multiple senders of the message: + +```haskell + | XGrpMsgForward :: [MemberId] -> ChatMessage 'Json -> UTCTime -> ChatMsgEvent 'Json +``` + +The messages send from multiple owners can have the benefit of avoiding targeted attacks on the member who originated it - it will only be known to other members sending the message, but not to other members, creating mutual responsibility for some changes and/or announcements. + +## Choosing MVP scope + +With all these ideas for improvements, the challenge is to choose some valuable MVP shippable in the shortest time. + +From the UX point of view, the most lacking parts are: + +- broadcasting messages via super-peers, including: + - protocol to accept and approve role changes is necessary, as it should not be possible to unilaterally appoint some member to be a super-peer. + - computing deterministic message hashes and signatures (and only member with the key in profile can be made super-peer). + - protocol to communicate connections with members between super-peers, yet TBD. + - algorithm to make decision whether to deliver message. +- an equivalent of Telegram channels - groups where members can only send comments and set reactions, but cannot send messages. Protocol extensions yet TBD. + +Optionally, we could include: +- Merkle tree integrity validation. +- Owners/admins consensus. +- Messages from multiple members (don't have to be owners, can be any members, irrespective of the need for consensus). +- Delayed messages. + +None of this optional list is required to launch. From 5b0c8e0f76c83385bbe6f1db845cf321ba7d0ef8 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 8 Apr 2024 18:16:29 +0400 Subject: [PATCH 005/147] core: improve some tests (#4000) --- tests/ChatTests/Groups.hs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/ChatTests/Groups.hs b/tests/ChatTests/Groups.hs index a7a646c17b..4108f799df 100644 --- a/tests/ChatTests/Groups.hs +++ b/tests/ChatTests/Groups.hs @@ -2503,6 +2503,7 @@ testPlanHostContactDeletedGroupLinkKnown = testPlanGroupLinkOwn :: HasCallStack => FilePath -> IO () testPlanGroupLinkOwn tmp = withNewTestChatCfg tmp testCfgGroupLinkViaContact "alice" aliceProfile $ \alice -> do + threadDelay 100000 alice ##> "/g team" alice <## "group #team is created" alice <## "to add members use /a team or /create link #team" @@ -5186,7 +5187,11 @@ testGroupHistoryWelcomeMessage = cath ##> "/_get chat #1 count=100" r <- chat <$> getTermLine cath - r `shouldContain` [(0, "hello"), (0, "hey!"), (0, "welcome to team")] + -- sometimes there are "connected" and feature items in between, + -- so we filter them out; `shouldContain` then checks order is correct + let expected = [(0, "hello"), (0, "hey!"), (0, "welcome to team")] + r' = filter (`elem` expected) r + r' `shouldContain` expected -- message delivery works after sending history alice #> "#team 1" From f8e6a78a3b51b57ae8d60f71fa7c2d634df58992 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 9 Apr 2024 08:15:29 +0100 Subject: [PATCH 006/147] core: fix nix config (#4003) * bump * more compilers * i686 32bit only 8.10.7 --------- Co-authored-by: Moritz Angermann --- flake.lock | 95 ++++++++++++++++++++++++++++++++++++++++++------------ flake.nix | 7 ++++ 2 files changed, 81 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index a11e01683e..7bd372b5c6 100644 --- a/flake.lock +++ b/flake.lock @@ -175,11 +175,11 @@ "ghc99": { "flake": false, "locked": { - "lastModified": 1697054644, - "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", + "lastModified": 1701580282, + "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", "ref": "refs/heads/master", - "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", - "revCount": 62040, + "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", + "revCount": 62197, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -225,6 +225,8 @@ "hls-2.2": "hls-2.2", "hls-2.3": "hls-2.3", "hls-2.4": "hls-2.4", + "hls-2.5": "hls-2.5", + "hls-2.6": "hls-2.6", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", @@ -238,16 +240,17 @@ "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", "nixpkgs-2305": "nixpkgs-2305", + "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, "locked": { - "lastModified": 1701163700, - "narHash": "sha256-sOrewUS3LnzV09nGr7+3R6Q6zsgU4smJc61QsHq+4DE=", + "lastModified": 1705833500, + "narHash": "sha256-rUIr6JNbCedt1g4gVYVvE9t0oFU6FUspCA0DS5cA8Bg=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "2808bfe3e62e9eb4ee8974cd623a00e1611f302b", + "rev": "d0c35e75cbbc6858770af42ac32b0b85495fbd71", "type": "github" }, "original": { @@ -328,16 +331,50 @@ "hls-2.4": { "flake": false, "locked": { - "lastModified": 1696939266, - "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", + "lastModified": 1699862708, + "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", "owner": "haskell", "repo": "haskell-language-server", - "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", + "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", "type": "github" }, "original": { "owner": "haskell", - "ref": "2.4.0.0", + "ref": "2.4.0.1", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.5": { + "flake": false, + "locked": { + "lastModified": 1701080174, + "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.5.0.0", + "repo": "haskell-language-server", + "type": "github" + } + }, + "hls-2.6": { + "flake": false, + "locked": { + "lastModified": 1705325287, + "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", + "owner": "haskell", + "repo": "haskell-language-server", + "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", + "type": "github" + }, + "original": { + "owner": "haskell", + "ref": "2.6.0.0", "repo": "haskell-language-server", "type": "github" } @@ -552,11 +589,11 @@ }, "nixpkgs-2305": { "locked": { - "lastModified": 1695416179, - "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", + "lastModified": 1701362232, + "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", + "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", "type": "github" }, "original": { @@ -566,6 +603,22 @@ "type": "github" } }, + "nixpkgs-2311": { + "locked": { + "lastModified": 1701386440, + "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", + "owner": "NixOS", + "repo": "nixpkgs", + "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", + "type": "github" + }, + "original": { + "owner": "NixOS", + "ref": "nixpkgs-23.11-darwin", + "repo": "nixpkgs", + "type": "github" + } + }, "nixpkgs-lib": { "locked": { "dir": "lib", @@ -602,17 +655,17 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1695318763, - "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", + "lastModified": 1694822471, + "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixpkgs-unstable", "repo": "nixpkgs", + "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, @@ -664,11 +717,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1699834215, - "narHash": "sha256-g/JKy0BCvJaxPuYDl3QVc4OY8cFEomgG+hW/eEV470M=", + "lastModified": 1705709369, + "narHash": "sha256-HWgwM8v0g6ZBkRVCStsPaMUDf26WDOGV0q+AxyGlcBQ=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "47aacd04abcce6bad57f43cbbbd133538380248e", + "rev": "f7e9bff9f7582d06c4237d183dafaccc33cfa5d4", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 748b5a4f2d..e5e635a223 100644 --- a/flake.nix +++ b/flake.nix @@ -141,6 +141,7 @@ "${pkgs.pkgsCross.musl64.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl64).simplex-chat.components.exes.simplex-chat; # STATIC i686-linux "${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv' { + compiler-nix-name = "ghc810"; pkgs' = pkgs.pkgsCross.musl32; extra-modules = [{ # 32 bit patches @@ -154,6 +155,7 @@ }).simplex-chat.components.exes.simplex-chat; # WINDOWS x86_64-mingwW64 "${pkgs.pkgsCross.mingwW64.hostPlatform.system}:exe:simplex-chat" = (drv' { + compiler-nix-name = "ghc964"; pkgs' = pkgs.pkgsCross.mingwW64; extra-modules = [{ packages.direct-sqlcipher.flags.openssl = true; @@ -186,6 +188,7 @@ ''; }; "${pkgs.pkgsCross.mingwW64.hostPlatform.system}:lib:simplex-chat" = (drv' rec { + compiler-nix-name = "ghc964"; pkgs' = pkgs.pkgsCross.mingwW64; extra-modules = [{ packages.direct-sqlcipher.flags.openssl = true; @@ -543,6 +546,7 @@ "aarch64-darwin" = { # aarch64-darwin iOS build (to be patched with mac2ios) "aarch64-darwin-ios:lib:simplex-chat" = (drv' { + compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.simplex-chat.flags.swift = true; @@ -559,6 +563,7 @@ ); # aarch64-darwin build with tagged JSON format (for Mac & Flutter) "aarch64-darwin:lib:simplex-chat" = (drv' { + compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.direct-sqlcipher.flags.commoncrypto = true; @@ -574,6 +579,7 @@ "x86_64-darwin" = { # x86_64-darwin iOS simulator build (to be patched with mac2ios) "x86_64-darwin-ios:lib:simplex-chat" = (drv' { + compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.simplex-chat.flags.swift = true; @@ -589,6 +595,7 @@ ); # x86_64-darwin build with tagged JSON format (for Mac & Flutter iOS simulator) "x86_64-darwin:lib:simplex-chat" = (drv' { + compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.direct-sqlcipher.flags.commoncrypto = true; From a5db36469daeeafa112ccdd22a4aef30f41b3c83 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 9 Apr 2024 13:02:59 +0100 Subject: [PATCH 007/147] core: api to forward messages (#3968) * wip * wip * test * mute * tests * simplify (only bool flag) * re-encrypt file * tests * more tests (wip) * fix relative paths, refactor * more tests * more locks * fix, tests * more tests * rework (revert from bool to ids) * update schema * more tests * add to info * ForwardedMsg container * Revert "ForwardedMsg container" This reverts commit bb57f12151a862c164dbcdde8ee3d81dcf25c30f. * parser * more tests * rework api * more locks * test * move * remove from * view * prohibit editing * item info view --------- Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> --- simplex-chat.cabal | 2 + src/Simplex/Chat.hs | 393 ++++++++----- src/Simplex/Chat/Controller.hs | 5 + src/Simplex/Chat/Messages.hs | 69 ++- src/Simplex/Chat/Messages/CIContent.hs | 2 + .../Migrations/M20240402_item_forwarded.hs | 36 ++ src/Simplex/Chat/Migrations/chat_schema.sql | 15 +- src/Simplex/Chat/Protocol.hs | 1 + src/Simplex/Chat/Store/Messages.hs | 86 ++- src/Simplex/Chat/Store/Migrations.hs | 4 +- src/Simplex/Chat/Terminal/Input.hs | 3 + src/Simplex/Chat/View.hs | 104 ++-- tests/ChatTests.hs | 2 + tests/ChatTests/Files.hs | 16 +- tests/ChatTests/Forward.hs | 523 ++++++++++++++++++ tests/ChatTests/Local.hs | 2 + tests/ChatTests/Utils.hs | 9 + 17 files changed, 1061 insertions(+), 211 deletions(-) create mode 100644 src/Simplex/Chat/Migrations/M20240402_item_forwarded.hs create mode 100644 tests/ChatTests/Forward.hs diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 005fbe10a9..dcf9061370 100644 --- a/simplex-chat.cabal +++ b/simplex-chat.cabal @@ -140,6 +140,7 @@ library Simplex.Chat.Migrations.M20240228_pq Simplex.Chat.Migrations.M20240313_drop_agent_ack_cmd_id Simplex.Chat.Migrations.M20240324_custom_data + Simplex.Chat.Migrations.M20240402_item_forwarded Simplex.Chat.Mobile Simplex.Chat.Mobile.File Simplex.Chat.Mobile.Shared @@ -575,6 +576,7 @@ test-suite simplex-chat-test ChatTests.ChatList ChatTests.Direct ChatTests.Files + ChatTests.Forward ChatTests.Groups ChatTests.Local ChatTests.Profiles diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index d075c6cf70..41f8828b26 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -82,7 +82,7 @@ import Simplex.Chat.Types import Simplex.Chat.Types.Preferences import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util -import Simplex.Chat.Util (encryptFile, shuffle) +import Simplex.Chat.Util (encryptFile, liftIOEither, shuffle) import Simplex.FileTransfer.Client.Main (maxFileSize, maxFileSizeHard) import Simplex.FileTransfer.Client.Presets (defaultXFTPServers) import Simplex.FileTransfer.Description (FileDescriptionURI (..), ValidFileDescription) @@ -705,105 +705,28 @@ processChatCommand' vr = \case [] -> pure Nothing memStatuses -> pure $ Just $ map (uncurry MemberDeliveryStatus) memStatuses _ -> pure Nothing - pure $ CRChatItemInfo user aci ChatItemInfo {itemVersions, memberDeliveryStatuses} - APISendMessage (ChatRef cType chatId) live itemTTL (ComposedMessage file_ quotedItemId_ mc) -> withUser $ \user -> case cType of - CTDirect -> withContactLock "sendMessage" chatId $ do - ct@Contact {contactId, contactUsed} <- withStore $ \db -> getContact db vr user chatId - assertDirectAllowed user MDSnd ct XMsgNew_ - unless contactUsed $ withStore' $ \db -> updateContactUsed db user ct - if isVoice mc && not (featureAllowed SCFVoice forUser ct) - then pure $ chatCmdError (Just user) ("feature not allowed " <> T.unpack (chatFeatureNameText CFVoice)) - else do - (fInv_, ciFile_) <- L.unzip <$> setupSndFileTransfer ct - timed_ <- sndContactCITimed live ct itemTTL - (msgContainer, quotedItem_) <- prepareMsg fInv_ timed_ - (msg, _) <- sendDirectContactMessage user ct (XMsgNew msgContainer) - ci <- saveSndChatItem' user (CDDirectSnd ct) msg (CISndMsgContent mc) ciFile_ quotedItem_ timed_ live - forM_ (timed_ >>= timedDeleteAt') $ - startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId' ci) - pure $ CRNewChatItem user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci) - where - setupSndFileTransfer :: Contact -> CM (Maybe (FileInvitation, CIFile 'MDSnd)) - setupSndFileTransfer ct = forM file_ $ \file -> do - fileSize <- checkSndFile file - xftpSndFileTransfer user file fileSize 1 $ CGContact ct - prepareMsg :: Maybe FileInvitation -> Maybe CITimed -> CM (MsgContainer, Maybe (CIQuote 'CTDirect)) - prepareMsg fInv_ timed_ = case quotedItemId_ of - Nothing -> pure (MCSimple (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Nothing) - Just quotedItemId -> do - CChatItem _ qci@ChatItem {meta = CIMeta {itemTs, itemSharedMsgId}, formattedText, file} <- - withStore $ \db -> getDirectChatItem db user chatId quotedItemId - (origQmc, qd, sent) <- quoteData qci - let msgRef = MsgRef {msgId = itemSharedMsgId, sentAt = itemTs, sent, memberId = Nothing} - qmc = quoteContent mc origQmc file - quotedItem = CIQuote {chatDir = qd, itemId = Just quotedItemId, sharedMsgId = itemSharedMsgId, sentAt = itemTs, content = qmc, formattedText} - pure (MCQuote QuotedMsg {msgRef, content = qmc} (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Just quotedItem) - where - quoteData :: ChatItem c d -> CM (MsgContent, CIQDirection 'CTDirect, Bool) - quoteData ChatItem {meta = CIMeta {itemDeleted = Just _}} = throwChatError CEInvalidQuote - quoteData ChatItem {content = CISndMsgContent qmc} = pure (qmc, CIQDirectSnd, True) - quoteData ChatItem {content = CIRcvMsgContent qmc} = pure (qmc, CIQDirectRcv, False) - quoteData _ = throwChatError CEInvalidQuote - CTGroup -> withGroupLock "sendMessage" chatId $ do - g@(Group gInfo _) <- withStore $ \db -> getGroup db vr user chatId - assertUserGroupRole gInfo GRAuthor - send g - where - send g@(Group gInfo@GroupInfo {groupId, membership} ms) = - case prohibitedGroupContent gInfo membership mc file_ of - Just f -> notAllowedError f - Nothing -> do - (fInv_, ciFile_) <- L.unzip <$> setupSndFileTransfer g (length $ filter memberCurrent ms) - timed_ <- sndGroupCITimed live gInfo itemTTL - (msgContainer, quotedItem_) <- prepareGroupMsg user gInfo mc quotedItemId_ fInv_ timed_ live - (msg, sentToMembers) <- sendGroupMessage user gInfo ms (XMsgNew msgContainer) - ci <- saveSndChatItem' user (CDGroupSnd gInfo) msg (CISndMsgContent mc) ciFile_ quotedItem_ timed_ live - withStore' $ \db -> - forM_ sentToMembers $ \GroupMember {groupMemberId} -> - createGroupSndStatus db (chatItemId' ci) groupMemberId CISSndNew - forM_ (timed_ >>= timedDeleteAt') $ - startProximateTimedItemThread user (ChatRef CTGroup groupId, chatItemId' ci) - pure $ CRNewChatItem user (AChatItem SCTGroup SMDSnd (GroupChat gInfo) ci) - notAllowedError f = pure $ chatCmdError (Just user) ("feature not allowed " <> T.unpack (groupFeatureNameText f)) - setupSndFileTransfer :: Group -> Int -> CM (Maybe (FileInvitation, CIFile 'MDSnd)) - setupSndFileTransfer g n = forM file_ $ \file -> do - fileSize <- checkSndFile file - xftpSndFileTransfer user file fileSize n $ CGGroup g + forwardedFromChatItem <- getForwardedFromItem user ci + pure $ CRChatItemInfo user aci ChatItemInfo {itemVersions, memberDeliveryStatuses, forwardedFromChatItem} + where + getForwardedFromItem :: User -> ChatItem c d -> CM (Maybe AChatItem) + getForwardedFromItem user ChatItem {meta = CIMeta {itemForwarded}} = case itemForwarded of + Just (CIFFContact _ _ (Just ctId) (Just fwdItemId)) -> + Just <$> withStore (\db -> getAChatItem db vr user (ChatRef CTDirect ctId) fwdItemId) + Just (CIFFGroup _ _ (Just gId) (Just fwdItemId)) -> + Just <$> withStore (\db -> getAChatItem db vr user (ChatRef CTGroup gId) fwdItemId) + _ -> pure Nothing + APISendMessage (ChatRef cType chatId) live itemTTL cm -> withUser $ \user -> case cType of + CTDirect -> + withContactLock "sendMessage" chatId $ + sendContactContentMessage user chatId live itemTTL cm Nothing + CTGroup -> + withGroupLock "sendMessage" chatId $ + sendGroupContentMessage user chatId live itemTTL cm Nothing CTLocal -> pure $ chatCmdError (Just user) "not supported" CTContactRequest -> pure $ chatCmdError (Just user) "not supported" CTContactConnection -> pure $ chatCmdError (Just user) "not supported" - where - xftpSndFileTransfer :: User -> CryptoFile -> Integer -> Int -> ContactOrGroup -> CM (FileInvitation, CIFile 'MDSnd) - xftpSndFileTransfer user file fileSize n contactOrGroup = do - (fInv, ciFile, ft) <- xftpSndFileTransfer_ user file fileSize n $ Just contactOrGroup - case contactOrGroup of - CGContact Contact {activeConn} -> forM_ activeConn $ \conn -> - withStore' $ \db -> createSndFTDescrXFTP db user Nothing conn ft dummyFileDescr - CGGroup (Group _ ms) -> forM_ ms $ \m -> saveMemberFD m `catchChatError` (toView . CRChatError (Just user)) - where - -- we are not sending files to pending members, same as with inline files - saveMemberFD m@GroupMember {activeConn = Just conn@Connection {connStatus}} = - when ((connStatus == ConnReady || connStatus == ConnSndReady) && not (connDisabled conn)) $ - withStore' $ - \db -> createSndFTDescrXFTP db user (Just m) conn ft dummyFileDescr - saveMemberFD _ = pure () - pure (fInv, ciFile) - APICreateChatItem folderId (ComposedMessage file_ quotedItemId_ mc) -> withUser $ \user -> do - forM_ quotedItemId_ $ \_ -> throwError $ ChatError $ CECommandError "not supported" - nf <- withStore $ \db -> getNoteFolder db user folderId - createdAt <- liftIO getCurrentTime - let content = CISndMsgContent mc - let cd = CDLocalSnd nf - ciId <- createLocalChatItem user cd content createdAt - ciFile_ <- forM file_ $ \cf@CryptoFile {filePath, cryptoArgs} -> do - fsFilePath <- lift $ toFSFilePath filePath - fileSize <- liftIO $ CF.getFileContentsSize $ CryptoFile fsFilePath cryptoArgs - chunkSize <- asks $ fileChunkSize . config - withStore' $ \db -> do - fileId <- createLocalFile CIFSSndStored db user nf ciId createdAt cf fileSize chunkSize - pure CIFile {fileId, fileName = takeFileName filePath, fileSize, fileSource = Just cf, fileStatus = CIFSSndStored, fileProtocol = FPLocal} - let ci = mkChatItem cd ciId content ciFile_ Nothing Nothing Nothing False createdAt Nothing createdAt - pure . CRNewChatItem user $ AChatItem SCTLocal SMDSnd (LocalChat nf) ci + APICreateChatItem folderId cm -> withUser $ \user -> + createNoteFolderContentItem user folderId cm Nothing APIUpdateChatItem (ChatRef cType chatId) itemId live mc -> withUser $ \user -> case cType of CTDirect -> withContactLock "updateChatItem" chatId $ do ct@Contact {contactId} <- withStore $ \db -> getContact db vr user chatId @@ -948,6 +871,91 @@ processChatCommand' vr = \case throwChatError (CECommandError $ "reaction already " <> if add then "added" else "removed") when (add && length rs >= maxMsgReactions) $ throwChatError (CECommandError "too many reactions") + APIForwardChatItem (ChatRef toCType toChatId) (ChatRef fromCType fromChatId) itemId -> withUser $ \user -> case toCType of + CTDirect -> do + (cm, ciff) <- prepareForward user + withContactLock "forwardChatItem, to contact" toChatId $ + sendContactContentMessage user toChatId False Nothing cm ciff + CTGroup -> do + (cm, ciff) <- prepareForward user + withGroupLock "forwardChatItem, to group" toChatId $ + sendGroupContentMessage user toChatId False Nothing cm ciff + CTLocal -> do + (cm, ciff) <- prepareForward user + createNoteFolderContentItem user toChatId cm ciff + CTContactRequest -> pure $ chatCmdError (Just user) "not supported" + CTContactConnection -> pure $ chatCmdError (Just user) "not supported" + where + prepareForward :: User -> CM (ComposedMessage, Maybe CIForwardedFrom) + prepareForward user = case fromCType of + CTDirect -> withContactLock "forwardChatItem, from contact" fromChatId $ do + (ct, CChatItem _ ci) <- withStore $ \db -> do + ct <- getContact db vr user fromChatId + cci <- getDirectChatItem db user fromChatId itemId + pure (ct, cci) + (mc, mDir) <- forwardMC ci + file <- forwardCryptoFile ci `catchChatError` (\e -> toView (CRChatError (Just user) e) $> Nothing) + let ciff = forwardCIFF ci $ Just (CIFFContact (forwardName ct) mDir (Just fromChatId) (Just itemId)) + pure (ComposedMessage file Nothing mc, ciff) + where + forwardName :: Contact -> ContactName + forwardName Contact {profile = LocalProfile {displayName, localAlias}} + | localAlias /= "" = localAlias + | otherwise = displayName + CTGroup -> withGroupLock "forwardChatItem, from group" fromChatId $ do + (gInfo, CChatItem _ ci) <- withStore $ \db -> do + gInfo <- getGroupInfo db vr user fromChatId + cci <- getGroupChatItem db user fromChatId itemId + pure (gInfo, cci) + (mc, mDir) <- forwardMC ci + file <- forwardCryptoFile ci `catchChatError` (\e -> toView (CRChatError (Just user) e) $> Nothing) + let ciff = forwardCIFF ci $ Just (CIFFGroup (forwardName gInfo) mDir (Just fromChatId) (Just itemId)) + pure (ComposedMessage file Nothing mc, ciff) + where + forwardName :: GroupInfo -> ContactName + forwardName GroupInfo {groupProfile = GroupProfile {displayName}} = displayName + CTLocal -> do + (CChatItem _ ci) <- withStore $ \db -> getLocalChatItem db user fromChatId itemId + (mc, _) <- forwardMC ci + file <- forwardCryptoFile ci `catchChatError` (\e -> toView (CRChatError (Just user) e) $> Nothing) + let ciff = forwardCIFF ci Nothing + pure (ComposedMessage file Nothing mc, ciff) + CTContactRequest -> throwChatError $ CECommandError "not supported" + CTContactConnection -> throwChatError $ CECommandError "not supported" + where + forwardMC :: ChatItem c d -> CM (MsgContent, MsgDirection) + forwardMC ChatItem {meta = CIMeta {itemDeleted = Just _}} = throwChatError CEInvalidForward + forwardMC ChatItem {content = CISndMsgContent fmc} = pure (fmc, MDSnd) + forwardMC ChatItem {content = CIRcvMsgContent fmc} = pure (fmc, MDRcv) + forwardMC _ = throwChatError CEInvalidForward + forwardCIFF :: ChatItem c d -> Maybe CIForwardedFrom -> Maybe CIForwardedFrom + forwardCIFF ChatItem {meta = CIMeta {itemForwarded = Just ciff}} _ = Just ciff + forwardCIFF _ ciff = ciff + forwardCryptoFile :: ChatItem c d -> CM (Maybe CryptoFile) + forwardCryptoFile ChatItem {file = Just CIFile {fileName, fileStatus, fileSource = Just fromCF@CryptoFile {filePath}}} + | ciFileLoaded fileStatus = + chatReadVar filesFolder >>= \case + Nothing -> + ifM (doesFileExist filePath) (pure $ Just fromCF) (pure Nothing) + Just filesFolder -> do + let fsFromPath = filesFolder filePath + ifM + (doesFileExist fsFromPath) + ( do + fsNewPath <- liftIO $ filesFolder `uniqueCombine` fileName + liftIO $ B.writeFile fsNewPath "" -- create empty file + encrypt <- chatReadVar encryptLocalFiles + cfArgs <- if encrypt then Just <$> (atomically . CF.randomArgs =<< asks random) else pure Nothing + let toCF = CryptoFile fsNewPath cfArgs + -- to keep forwarded file in case original is deleted + liftIOEither $ runExceptT $ withExceptT (ChatError . CEInternalError . show) $ do + lb <- CF.readFile (fromCF {filePath = fsFromPath} :: CryptoFile) + CF.writeFile toCF lb + pure $ Just (toCF {filePath = takeFileName fsNewPath} :: CryptoFile) + ) + (pure Nothing) + | otherwise = pure Nothing + forwardCryptoFile _ = pure Nothing APIUserRead userId -> withUserId userId $ \user -> withStore' (`setUserChatsRead` user) >> ok user UserRead -> withUser $ \User {userId} -> processChatCommand $ APIUserRead userId APIChatRead (ChatRef cType chatId) fromToIds -> withUser $ \_ -> case cType of @@ -1554,6 +1562,21 @@ processChatCommand' vr = \case RejectContact cName -> withUser $ \User {userId} -> do connReqId <- withStore $ \db -> getContactRequestIdByName db userId cName processChatCommand $ APIRejectContact connReqId + ForwardMessage toChatName fromContactName forwardedMsg -> withUser $ \user -> do + contactId <- withStore $ \db -> getContactIdByName db user fromContactName + forwardedItemId <- withStore $ \db -> getDirectChatItemIdByText' db user contactId forwardedMsg + toChatRef <- getChatRef user toChatName + processChatCommand $ APIForwardChatItem toChatRef (ChatRef CTDirect contactId) forwardedItemId + ForwardGroupMessage toChatName fromGroupName fromMemberName_ forwardedMsg -> withUser $ \user -> do + groupId <- withStore $ \db -> getGroupIdByName db user fromGroupName + forwardedItemId <- withStore $ \db -> getGroupChatItemIdByText db user groupId fromMemberName_ forwardedMsg + toChatRef <- getChatRef user toChatName + processChatCommand $ APIForwardChatItem toChatRef (ChatRef CTGroup groupId) forwardedItemId + ForwardLocalMessage toChatName forwardedMsg -> withUser $ \user -> do + folderId <- withStore (`getUserNoteFolderId` user) + forwardedItemId <- withStore $ \db -> getLocalChatItemIdByText' db user folderId forwardedMsg + toChatRef <- getChatRef user toChatName + processChatCommand $ APIForwardChatItem toChatRef (ChatRef CTLocal folderId) forwardedItemId SendMessage (ChatName cType name) msg -> withUser $ \user -> do let mc = MCText msg case cType of @@ -1638,7 +1661,7 @@ processChatCommand' vr = \case combineResults _ _ (Left e) = Left e createCI :: DB.Connection -> User -> UTCTime -> (Contact, SndMessage) -> IO () createCI db user createdAt (ct, sndMsg) = - void $ createNewSndChatItem db user (CDDirectSnd ct) sndMsg (CISndMsgContent mc) Nothing Nothing False createdAt + void $ createNewSndChatItem db user (CDDirectSnd ct) sndMsg (CISndMsgContent mc) Nothing Nothing Nothing False createdAt SendMessageQuote cName (AMsgDirection msgDir) quotedMsg msg -> withUser $ \user@User {userId} -> do contactId <- withStore $ \db -> getContactIdByName db user cName quotedItemId <- withStore $ \db -> getDirectChatItemIdByText db userId contactId msgDir quotedMsg @@ -2060,7 +2083,7 @@ processChatCommand' vr = \case p {groupPreferences = Just . setGroupPreference f enabled $ groupPreferences p} SetGroupFeatureRole (AGFR f) gName enabled role -> updateGroupProfileByName gName $ \p -> - p {groupPreferences = Just . setGroupPreferenceRole f enabled role $ groupPreferences p} + p {groupPreferences = Just . setGroupPreferenceRole f enabled role $ groupPreferences p} SetUserTimedMessages onOff -> withUser $ \user@User {profile} -> do let allowed = if onOff then FAYes else FANo pref = TimedMessagesPreference allowed Nothing @@ -2587,6 +2610,104 @@ processChatCommand' vr = \case let aciContent = ACIContent SMDRcv $ CIRcvGroupInvitation ciGroupInv {status = newStatus} memRole updateDirectChatItemView user ct itemId aciContent False Nothing _ -> pure () -- prohibited + sendContactContentMessage :: User -> ContactId -> Bool -> Maybe Int -> ComposedMessage -> Maybe CIForwardedFrom -> CM ChatResponse + sendContactContentMessage user contactId live itemTTL (ComposedMessage file_ quotedItemId_ mc) itemForwarded = do + ct@Contact {contactUsed} <- withStore $ \db -> getContact db vr user contactId + assertDirectAllowed user MDSnd ct XMsgNew_ + unless contactUsed $ withStore' $ \db -> updateContactUsed db user ct + if isVoice mc && not (featureAllowed SCFVoice forUser ct) + then pure $ chatCmdError (Just user) ("feature not allowed " <> T.unpack (chatFeatureNameText CFVoice)) + else do + (fInv_, ciFile_) <- L.unzip <$> setupSndFileTransfer ct + timed_ <- sndContactCITimed live ct itemTTL + (msgContainer, quotedItem_) <- prepareMsg fInv_ timed_ + (msg, _) <- sendDirectContactMessage user ct (XMsgNew msgContainer) + ci <- saveSndChatItem' user (CDDirectSnd ct) msg (CISndMsgContent mc) ciFile_ quotedItem_ itemForwarded timed_ live + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId' ci) + pure $ CRNewChatItem user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci) + where + setupSndFileTransfer :: Contact -> CM (Maybe (FileInvitation, CIFile 'MDSnd)) + setupSndFileTransfer ct = forM file_ $ \file -> do + fileSize <- checkSndFile file + xftpSndFileTransfer user file fileSize 1 $ CGContact ct + prepareMsg :: Maybe FileInvitation -> Maybe CITimed -> CM (MsgContainer, Maybe (CIQuote 'CTDirect)) + prepareMsg fInv_ timed_ = case (quotedItemId_, itemForwarded) of + (Nothing, Nothing) -> pure (MCSimple (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Nothing) + (Nothing, Just _) -> pure (MCForward (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Nothing) + (Just quotedItemId, Nothing) -> do + CChatItem _ qci@ChatItem {meta = CIMeta {itemTs, itemSharedMsgId}, formattedText, file} <- + withStore $ \db -> getDirectChatItem db user contactId quotedItemId + (origQmc, qd, sent) <- quoteData qci + let msgRef = MsgRef {msgId = itemSharedMsgId, sentAt = itemTs, sent, memberId = Nothing} + qmc = quoteContent mc origQmc file + quotedItem = CIQuote {chatDir = qd, itemId = Just quotedItemId, sharedMsgId = itemSharedMsgId, sentAt = itemTs, content = qmc, formattedText} + pure (MCQuote QuotedMsg {msgRef, content = qmc} (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Just quotedItem) + (Just _, Just _) -> throwChatError CEInvalidQuote + where + quoteData :: ChatItem c d -> CM (MsgContent, CIQDirection 'CTDirect, Bool) + quoteData ChatItem {meta = CIMeta {itemDeleted = Just _}} = throwChatError CEInvalidQuote + quoteData ChatItem {content = CISndMsgContent qmc} = pure (qmc, CIQDirectSnd, True) + quoteData ChatItem {content = CIRcvMsgContent qmc} = pure (qmc, CIQDirectRcv, False) + quoteData _ = throwChatError CEInvalidQuote + sendGroupContentMessage :: User -> GroupId -> Bool -> Maybe Int -> ComposedMessage -> Maybe CIForwardedFrom -> CM ChatResponse + sendGroupContentMessage user groupId live itemTTL (ComposedMessage file_ quotedItemId_ mc) itemForwarded = do + g@(Group gInfo _) <- withStore $ \db -> getGroup db vr user groupId + assertUserGroupRole gInfo GRAuthor + send g + where + send g@(Group gInfo@GroupInfo {membership} ms) = + case prohibitedGroupContent gInfo membership mc file_ of + Just f -> notAllowedError f + Nothing -> do + (fInv_, ciFile_) <- L.unzip <$> setupSndFileTransfer g (length $ filter memberCurrent ms) + timed_ <- sndGroupCITimed live gInfo itemTTL + (msgContainer, quotedItem_) <- prepareGroupMsg user gInfo mc quotedItemId_ itemForwarded fInv_ timed_ live + (msg, sentToMembers) <- sendGroupMessage user gInfo ms (XMsgNew msgContainer) + ci <- saveSndChatItem' user (CDGroupSnd gInfo) msg (CISndMsgContent mc) ciFile_ quotedItem_ itemForwarded timed_ live + withStore' $ \db -> + forM_ sentToMembers $ \GroupMember {groupMemberId} -> + createGroupSndStatus db (chatItemId' ci) groupMemberId CISSndNew + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTGroup groupId, chatItemId' ci) + pure $ CRNewChatItem user (AChatItem SCTGroup SMDSnd (GroupChat gInfo) ci) + notAllowedError f = pure $ chatCmdError (Just user) ("feature not allowed " <> T.unpack (groupFeatureNameText f)) + setupSndFileTransfer :: Group -> Int -> CM (Maybe (FileInvitation, CIFile 'MDSnd)) + setupSndFileTransfer g n = forM file_ $ \file -> do + fileSize <- checkSndFile file + xftpSndFileTransfer user file fileSize n $ CGGroup g + xftpSndFileTransfer :: User -> CryptoFile -> Integer -> Int -> ContactOrGroup -> CM (FileInvitation, CIFile 'MDSnd) + xftpSndFileTransfer user file fileSize n contactOrGroup = do + (fInv, ciFile, ft) <- xftpSndFileTransfer_ user file fileSize n $ Just contactOrGroup + case contactOrGroup of + CGContact Contact {activeConn} -> forM_ activeConn $ \conn -> + withStore' $ \db -> createSndFTDescrXFTP db user Nothing conn ft dummyFileDescr + CGGroup (Group _ ms) -> forM_ ms $ \m -> saveMemberFD m `catchChatError` (toView . CRChatError (Just user)) + where + -- we are not sending files to pending members, same as with inline files + saveMemberFD m@GroupMember {activeConn = Just conn@Connection {connStatus}} = + when ((connStatus == ConnReady || connStatus == ConnSndReady) && not (connDisabled conn)) $ + withStore' $ + \db -> createSndFTDescrXFTP db user (Just m) conn ft dummyFileDescr + saveMemberFD _ = pure () + pure (fInv, ciFile) + createNoteFolderContentItem :: User -> NoteFolderId -> ComposedMessage -> Maybe CIForwardedFrom -> CM ChatResponse + createNoteFolderContentItem user folderId (ComposedMessage file_ quotedItemId_ mc) itemForwarded = do + forM_ quotedItemId_ $ \_ -> throwError $ ChatError $ CECommandError "not supported" + nf <- withStore $ \db -> getNoteFolder db user folderId + createdAt <- liftIO getCurrentTime + let content = CISndMsgContent mc + let cd = CDLocalSnd nf + ciId <- createLocalChatItem user cd content itemForwarded createdAt + ciFile_ <- forM file_ $ \cf@CryptoFile {filePath, cryptoArgs} -> do + fsFilePath <- lift $ toFSFilePath filePath + fileSize <- liftIO $ CF.getFileContentsSize $ CryptoFile fsFilePath cryptoArgs + chunkSize <- asks $ fileChunkSize . config + withStore' $ \db -> do + fileId <- createLocalFile CIFSSndStored db user nf ciId createdAt cf fileSize chunkSize + pure CIFile {fileId, fileName = takeFileName filePath, fileSize, fileSource = Just cf, fileStatus = CIFSSndStored, fileProtocol = FPLocal} + let ci = mkChatItem cd ciId content ciFile_ Nothing Nothing itemForwarded Nothing False createdAt Nothing createdAt + pure . CRNewChatItem user $ AChatItem SCTLocal SMDSnd (LocalChat nf) ci toggleNtf :: User -> GroupMember -> Bool -> CM () toggleNtf user m ntfOn = @@ -2601,10 +2722,11 @@ data ChangedProfileContact = ChangedProfileContact conn :: Connection } -prepareGroupMsg :: User -> GroupInfo -> MsgContent -> Maybe ChatItemId -> Maybe FileInvitation -> Maybe CITimed -> Bool -> CM (MsgContainer, Maybe (CIQuote 'CTGroup)) -prepareGroupMsg user GroupInfo {groupId, membership} mc quotedItemId_ fInv_ timed_ live = case quotedItemId_ of - Nothing -> pure (MCSimple (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Nothing) - Just quotedItemId -> do +prepareGroupMsg :: User -> GroupInfo -> MsgContent -> Maybe ChatItemId -> Maybe CIForwardedFrom -> Maybe FileInvitation -> Maybe CITimed -> Bool -> CM (MsgContainer, Maybe (CIQuote 'CTGroup)) +prepareGroupMsg user GroupInfo {groupId, membership} mc quotedItemId_ itemForwarded fInv_ timed_ live = case (quotedItemId_, itemForwarded) of + (Nothing, Nothing) -> pure (MCSimple (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Nothing) + (Nothing, Just _) -> pure (MCForward (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Nothing) + (Just quotedItemId, Nothing) -> do CChatItem _ qci@ChatItem {meta = CIMeta {itemTs, itemSharedMsgId}, formattedText, file} <- withStore $ \db -> getGroupChatItem db user groupId quotedItemId (origQmc, qd, sent, GroupMember {memberId}) <- quoteData qci membership @@ -2612,6 +2734,7 @@ prepareGroupMsg user GroupInfo {groupId, membership} mc quotedItemId_ fInv_ time qmc = quoteContent mc origQmc file quotedItem = CIQuote {chatDir = qd, itemId = Just quotedItemId, sharedMsgId = itemSharedMsgId, sentAt = itemTs, content = qmc, formattedText} pure (MCQuote QuotedMsg {msgRef, content = qmc} (ExtMsgContent mc fInv_ (ttl' <$> timed_) (justTrue live)), Just quotedItem) + (Just _, Just _) -> throwChatError CEInvalidQuote where quoteData :: ChatItem c d -> GroupMember -> CM (MsgContent, CIQDirection 'CTGroup, Bool, GroupMember) quoteData ChatItem {meta = CIMeta {itemDeleted = Just _}} _ = throwChatError CEInvalidQuote @@ -4049,7 +4172,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = let CIMeta {itemTs, itemSharedMsgId, itemTimed} = meta quotedItemId_ = quoteItemId =<< quotedItem fInv_ = fst <$> fInvDescr_ - (msgContainer, _) <- prepareGroupMsg user gInfo mc quotedItemId_ fInv_ itemTimed False + (msgContainer, _) <- prepareGroupMsg user gInfo mc quotedItemId_ Nothing fInv_ itemTimed False let senderVRange = memberChatVRange' sender xMsgNewChatMsg = ChatMessage {chatVRange = senderVRange, msgId = itemSharedMsgId, chatMsgEvent = XMsgNew msgContainer} fileDescrEvents <- case (snd <$> fInvDescr_, itemSharedMsgId) of @@ -4669,18 +4792,19 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = updateRcvChatItem = do cci <- withStore $ \db -> getDirectChatItemBySharedMsgId db user contactId sharedMsgId case cci of - CChatItem SMDRcv ci@ChatItem {meta = CIMeta {itemLive}, content = CIRcvMsgContent oldMC} -> do - let changed = mc /= oldMC - if changed || fromMaybe False itemLive - then do - ci' <- withStore' $ \db -> do - when changed $ - addInitialAndNewCIVersions db (chatItemId' ci) (chatItemTs' ci, oldMC) (brokerTs, mc) - reactions <- getDirectCIReactions db ct sharedMsgId - updateDirectChatItem' db user contactId ci {reactions} content live $ Just msgId - toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci') - startUpdatedTimedItemThread user (ChatRef CTDirect contactId) ci ci' - else toView $ CRChatItemNotChanged user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci) + CChatItem SMDRcv ci@ChatItem {meta = CIMeta {itemForwarded, itemLive}, content = CIRcvMsgContent oldMC} + | isNothing itemForwarded -> do + let changed = mc /= oldMC + if changed || fromMaybe False itemLive + then do + ci' <- withStore' $ \db -> do + when changed $ + addInitialAndNewCIVersions db (chatItemId' ci) (chatItemTs' ci, oldMC) (brokerTs, mc) + reactions <- getDirectCIReactions db ct sharedMsgId + updateDirectChatItem' db user contactId ci {reactions} content live $ Just msgId + toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci') + startUpdatedTimedItemThread user (ChatRef CTDirect contactId) ci ci' + else toView $ CRChatItemNotChanged user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci) _ -> messageError "x.msg.update: contact attempted invalid message update" messageDelete :: Contact -> SharedMsgId -> RcvMessage -> MsgMeta -> CM () @@ -6441,17 +6565,17 @@ saveGroupFwdRcvMsg user groupId forwardingMember refAuthorMember@GroupMember {me _ -> throwError e saveSndChatItem :: ChatTypeI c => User -> ChatDirection c 'MDSnd -> SndMessage -> CIContent 'MDSnd -> CM (ChatItem c 'MDSnd) -saveSndChatItem user cd msg content = saveSndChatItem' user cd msg content Nothing Nothing Nothing False +saveSndChatItem user cd msg content = saveSndChatItem' user cd msg content Nothing Nothing Nothing Nothing False -saveSndChatItem' :: ChatTypeI c => User -> ChatDirection c 'MDSnd -> SndMessage -> CIContent 'MDSnd -> Maybe (CIFile 'MDSnd) -> Maybe (CIQuote c) -> Maybe CITimed -> Bool -> CM (ChatItem c 'MDSnd) -saveSndChatItem' user cd msg@SndMessage {sharedMsgId} content ciFile quotedItem itemTimed live = do +saveSndChatItem' :: ChatTypeI c => User -> ChatDirection c 'MDSnd -> SndMessage -> CIContent 'MDSnd -> Maybe (CIFile 'MDSnd) -> Maybe (CIQuote c) -> Maybe CIForwardedFrom -> Maybe CITimed -> Bool -> CM (ChatItem c 'MDSnd) +saveSndChatItem' user cd msg@SndMessage {sharedMsgId} content ciFile quotedItem itemForwarded itemTimed live = do createdAt <- liftIO getCurrentTime ciId <- withStore' $ \db -> do when (ciRequiresAttention content) $ updateChatTs db user cd createdAt - ciId <- createNewSndChatItem db user cd msg content quotedItem itemTimed live createdAt + ciId <- createNewSndChatItem db user cd msg content quotedItem itemForwarded itemTimed live createdAt forM_ ciFile $ \CIFile {fileId} -> updateFileTransferChatItemId db fileId ciId createdAt pure ciId - pure $ mkChatItem cd ciId content ciFile quotedItem (Just sharedMsgId) itemTimed live createdAt Nothing createdAt + pure $ mkChatItem cd ciId content ciFile quotedItem (Just sharedMsgId) itemForwarded itemTimed live createdAt Nothing createdAt saveRcvChatItem :: (ChatTypeI c, ChatTypeQuotable c) => User -> ChatDirection c 'MDRcv -> RcvMessage -> UTCTime -> CIContent 'MDRcv -> CM (ChatItem c 'MDRcv) saveRcvChatItem user cd msg@RcvMessage {sharedMsgId_} brokerTs content = @@ -6460,18 +6584,18 @@ saveRcvChatItem user cd msg@RcvMessage {sharedMsgId_} brokerTs content = saveRcvChatItem' :: (ChatTypeI c, ChatTypeQuotable c) => User -> ChatDirection c 'MDRcv -> RcvMessage -> Maybe SharedMsgId -> UTCTime -> CIContent 'MDRcv -> Maybe (CIFile 'MDRcv) -> Maybe CITimed -> Bool -> CM (ChatItem c 'MDRcv) saveRcvChatItem' user cd msg@RcvMessage {forwardedByMember} sharedMsgId_ brokerTs content ciFile itemTimed live = do createdAt <- liftIO getCurrentTime - (ciId, quotedItem) <- withStore' $ \db -> do + (ciId, quotedItem, itemForwarded) <- withStore' $ \db -> do when (ciRequiresAttention content) $ updateChatTs db user cd createdAt - (ciId, quotedItem) <- createNewRcvChatItem db user cd msg sharedMsgId_ content itemTimed live brokerTs createdAt + r@(ciId, _, _) <- createNewRcvChatItem db user cd msg sharedMsgId_ content itemTimed live brokerTs createdAt forM_ ciFile $ \CIFile {fileId} -> updateFileTransferChatItemId db fileId ciId createdAt - pure (ciId, quotedItem) - pure $ mkChatItem cd ciId content ciFile quotedItem sharedMsgId_ itemTimed live brokerTs forwardedByMember createdAt + pure r + pure $ mkChatItem cd ciId content ciFile quotedItem sharedMsgId_ itemForwarded itemTimed live brokerTs forwardedByMember createdAt -mkChatItem :: (ChatTypeI c, MsgDirectionI d) => ChatDirection c d -> ChatItemId -> CIContent d -> Maybe (CIFile d) -> Maybe (CIQuote c) -> Maybe SharedMsgId -> Maybe CITimed -> Bool -> ChatItemTs -> Maybe GroupMemberId -> UTCTime -> ChatItem c d -mkChatItem cd ciId content file quotedItem sharedMsgId itemTimed live itemTs forwardedByMember currentTs = +mkChatItem :: (ChatTypeI c, MsgDirectionI d) => ChatDirection c d -> ChatItemId -> CIContent d -> Maybe (CIFile d) -> Maybe (CIQuote c) -> Maybe SharedMsgId -> Maybe CIForwardedFrom -> Maybe CITimed -> Bool -> ChatItemTs -> Maybe GroupMemberId -> UTCTime -> ChatItem c d +mkChatItem cd ciId content file quotedItem sharedMsgId itemForwarded itemTimed live itemTs forwardedByMember currentTs = let itemText = ciContentToText content itemStatus = ciCreateStatus content - meta = mkCIMeta ciId content itemText itemStatus sharedMsgId Nothing False itemTimed (justTrue live) currentTs itemTs forwardedByMember currentTs currentTs + meta = mkCIMeta ciId content itemText itemStatus sharedMsgId itemForwarded Nothing False itemTimed (justTrue live) currentTs itemTs forwardedByMember currentTs currentTs in ChatItem {chatDir = toCIDirection cd, meta, content, formattedText = parseMaybeMarkdownList itemText, quotedItem, reactions = [], file} deleteDirectCI :: MsgDirectionI d => User -> Contact -> ChatItem 'CTDirect d -> Bool -> Bool -> CM ChatResponse @@ -6732,17 +6856,17 @@ createInternalItemsForChats user itemTs_ dirsCIContents = do createACIs :: DB.Connection -> UTCTime -> UTCTime -> ChatDirection c d -> [CIContent d] -> [IO AChatItem] createACIs db itemTs createdAt cd = map $ \content -> do ciId <- createNewChatItemNoMsg db user cd content itemTs createdAt - let ci = mkChatItem cd ciId content Nothing Nothing Nothing Nothing False itemTs Nothing createdAt + let ci = mkChatItem cd ciId content Nothing Nothing Nothing Nothing Nothing False itemTs Nothing createdAt pure $ AChatItem (chatTypeI @c) (msgDirection @d) (toChatInfo cd) ci -createLocalChatItem :: MsgDirectionI d => User -> ChatDirection 'CTLocal d -> CIContent d -> UTCTime -> CM ChatItemId -createLocalChatItem user cd content createdAt = do +createLocalChatItem :: MsgDirectionI d => User -> ChatDirection 'CTLocal d -> CIContent d -> Maybe CIForwardedFrom -> UTCTime -> CM ChatItemId +createLocalChatItem user cd content itemForwarded createdAt = do gVar <- asks random withStore $ \db -> do liftIO $ updateChatTs db user cd createdAt createWithRandomId gVar $ \sharedMsgId -> let smi_ = Just (SharedMsgId sharedMsgId) - in createNewChatItem_ db user cd Nothing smi_ content (Nothing, Nothing, Nothing, Nothing, Nothing) Nothing False createdAt Nothing createdAt + in createNewChatItem_ db user cd Nothing smi_ content (Nothing, Nothing, Nothing, Nothing, Nothing) itemForwarded Nothing False createdAt Nothing createdAt withUser' :: (User -> CM ChatResponse) -> CM ChatResponse withUser' action = @@ -6869,6 +6993,7 @@ chatCommandP = "/_delete item " *> (APIDeleteChatItem <$> chatRefP <* A.space <*> A.decimal <* A.space <*> ciDeleteMode), "/_delete member item #" *> (APIDeleteMemberChatItem <$> A.decimal <* A.space <*> A.decimal <* A.space <*> A.decimal), "/_reaction " *> (APIChatItemReaction <$> chatRefP <* A.space <*> A.decimal <* A.space <*> onOffP <* A.space <*> jsonP), + "/_forward " *> (APIForwardChatItem <$> chatRefP <* A.space <*> chatRefP <* A.space <*> A.decimal), "/_read user " *> (APIUserRead <$> A.decimal), "/read user" $> UserRead, "/_read chat " *> (APIChatRead <$> chatRefP <*> optional (A.space *> ((,) <$> ("from=" *> A.decimal) <* A.space <*> ("to=" *> A.decimal)))), @@ -7010,6 +7135,10 @@ chatCommandP = "/_set incognito :" *> (APISetConnectionIncognito <$> A.decimal <* A.space <*> onOffP), ("/connect" <|> "/c") *> (Connect <$> incognitoP <* A.space <*> ((Just <$> strP) <|> A.takeTill isSpace $> Nothing)), ("/connect" <|> "/c") *> (AddContact <$> incognitoP), + ForwardMessage <$> chatNameP <* " <- @" <*> displayName <* A.space <*> msgTextP, + ForwardGroupMessage <$> chatNameP <* " <- #" <*> displayName <* A.space <* A.char '@' <*> (Just <$> displayName) <* A.space <*> msgTextP, + ForwardGroupMessage <$> chatNameP <* " <- #" <*> displayName <*> pure Nothing <* A.space <*> msgTextP, + ForwardLocalMessage <$> chatNameP <* " <- * " <*> msgTextP, SendMessage <$> chatNameP <* A.space <*> msgTextP, "/* " *> (SendMessage (ChatName CTLocal "") <$> msgTextP), "@#" *> (SendMemberContactMessage <$> displayName <* A.space <* char_ '@' <*> displayName <* A.space <*> msgTextP), diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 85d93a7d88..5295541697 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -292,6 +292,7 @@ data ChatCommand | APIDeleteChatItem ChatRef ChatItemId CIDeleteMode | APIDeleteMemberChatItem GroupId GroupMemberId ChatItemId | APIChatItemReaction {chatRef :: ChatRef, chatItemId :: ChatItemId, add :: Bool, reaction :: MsgReaction} + | APIForwardChatItem {toChatRef :: ChatRef, fromChatRef :: ChatRef, chatItemId :: ChatItemId} | APIUserRead UserId | UserRead | APIChatRead ChatRef (Maybe (ChatItemId, ChatItemId)) @@ -408,6 +409,9 @@ data ChatCommand | AddressAutoAccept (Maybe AutoAccept) | AcceptContact IncognitoEnabled ContactName | RejectContact ContactName + | ForwardMessage {toChatName :: ChatName, fromContactName :: ContactName, forwardedMsg :: Text} + | ForwardGroupMessage {toChatName :: ChatName, fromGroupName :: GroupName, fromMemberName_ :: Maybe ContactName, forwardedMsg :: Text} + | ForwardLocalMessage {toChatName :: ChatName, forwardedMsg :: Text} | SendMessage ChatName Text | SendMemberContactMessage GroupName ContactName Text | SendLiveMessage ChatName Text @@ -1114,6 +1118,7 @@ data ChatErrorType | CEFallbackToSMPProhibited {fileId :: FileTransferId} | CEInlineFileProhibited {fileId :: FileTransferId} | CEInvalidQuote + | CEInvalidForward | CEInvalidChatItemUpdate | CEInvalidChatItemDelete | CEHasCurrentCall diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs index b29543cf74..2aa781d45e 100644 --- a/src/Simplex/Chat/Messages.hs +++ b/src/Simplex/Chat/Messages.hs @@ -339,6 +339,7 @@ data CIMeta (c :: ChatType) (d :: MsgDirection) = CIMeta itemText :: Text, itemStatus :: CIStatus d, itemSharedMsgId :: Maybe SharedMsgId, + itemForwarded :: Maybe CIForwardedFrom, itemDeleted :: Maybe (CIDeleted c), itemEdited :: Bool, itemTimed :: Maybe CITimed, @@ -350,15 +351,15 @@ data CIMeta (c :: ChatType) (d :: MsgDirection) = CIMeta } deriving (Show) -mkCIMeta :: forall c d. ChatTypeI c => ChatItemId -> CIContent d -> Text -> CIStatus d -> Maybe SharedMsgId -> Maybe (CIDeleted c) -> Bool -> Maybe CITimed -> Maybe Bool -> UTCTime -> ChatItemTs -> Maybe GroupMemberId -> UTCTime -> UTCTime -> CIMeta c d -mkCIMeta itemId itemContent itemText itemStatus itemSharedMsgId itemDeleted itemEdited itemTimed itemLive currentTs itemTs forwardedByMember createdAt updatedAt = +mkCIMeta :: forall c d. ChatTypeI c => ChatItemId -> CIContent d -> Text -> CIStatus d -> Maybe SharedMsgId -> Maybe CIForwardedFrom -> Maybe (CIDeleted c) -> Bool -> Maybe CITimed -> Maybe Bool -> UTCTime -> ChatItemTs -> Maybe GroupMemberId -> UTCTime -> UTCTime -> CIMeta c d +mkCIMeta itemId itemContent itemText itemStatus itemSharedMsgId itemForwarded itemDeleted itemEdited itemTimed itemLive currentTs itemTs forwardedByMember createdAt updatedAt = let editable = case itemContent of CISndMsgContent _ -> case chatTypeI @c of - SCTLocal -> isNothing itemDeleted - _ -> diffUTCTime currentTs itemTs < nominalDay && isNothing itemDeleted + SCTLocal -> isNothing itemDeleted && isNothing itemForwarded + _ -> diffUTCTime currentTs itemTs < nominalDay && isNothing itemDeleted && isNothing itemForwarded _ -> False - in CIMeta {itemId, itemTs, itemText, itemStatus, itemSharedMsgId, itemDeleted, itemEdited, itemTimed, itemLive, editable, forwardedByMember, createdAt, updatedAt} + in CIMeta {itemId, itemTs, itemText, itemStatus, itemSharedMsgId, itemForwarded, itemDeleted, itemEdited, itemTimed, itemLive, editable, forwardedByMember, createdAt, updatedAt} dummyMeta :: ChatItemId -> UTCTime -> Text -> CIMeta c 'MDSnd dummyMeta itemId ts itemText = @@ -368,6 +369,7 @@ dummyMeta itemId ts itemText = itemText, itemStatus = CISSndNew, itemSharedMsgId = Nothing, + itemForwarded = Nothing, itemDeleted = Nothing, itemEdited = False, itemTimed = Nothing, @@ -548,6 +550,21 @@ ciFileEnded = \case CIFSRcvError -> True CIFSInvalid {} -> True +ciFileLoaded :: CIFileStatus d -> Bool +ciFileLoaded = \case + CIFSSndStored -> True + CIFSSndTransfer {} -> True + CIFSSndComplete -> True + CIFSSndCancelled -> True + CIFSSndError -> True + CIFSRcvInvitation -> False + CIFSRcvAccepted -> False + CIFSRcvTransfer {} -> False + CIFSRcvCancelled -> False + CIFSRcvComplete -> True + CIFSRcvError -> False + CIFSInvalid {} -> False + data ACIFileStatus = forall d. MsgDirectionI d => AFS (SMsgDirection d) (CIFileStatus d) deriving instance Show ACIFileStatus @@ -981,11 +998,43 @@ itemDeletedTs = \case CIBlockedByAdmin ts -> ts CIModerated ts _ -> ts +data CIForwardedFrom + = CIFFUnknown + | CIFFContact {chatName :: Text, msgDir :: MsgDirection, contactId :: Maybe ContactId, chatItemId :: Maybe ChatItemId} + | CIFFGroup {chatName :: Text, msgDir :: MsgDirection, groupId :: Maybe GroupId, chatItemId :: Maybe ChatItemId} + deriving (Show) + +cmForwardedFrom :: AChatMsgEvent -> Maybe CIForwardedFrom +cmForwardedFrom = \case + ACME _ (XMsgNew (MCForward _)) -> Just CIFFUnknown + _ -> Nothing + +data CIForwardedFromTag + = CIFFUnknown_ + | CIFFContact_ + | CIFFGroup_ + +instance FromField CIForwardedFromTag where fromField = fromTextField_ textDecode + +instance ToField CIForwardedFromTag where toField = toField . textEncode + +instance TextEncoding CIForwardedFromTag where + textDecode = \case + "unknown" -> Just CIFFUnknown_ + "contact" -> Just CIFFContact_ + "group" -> Just CIFFGroup_ + _ -> Nothing + textEncode = \case + CIFFUnknown_ -> "unknown" + CIFFContact_ -> "contact" + CIFFGroup_ -> "group" + data ChatItemInfo = ChatItemInfo { itemVersions :: [ChatItemVersion], - memberDeliveryStatuses :: Maybe [MemberDeliveryStatus] + memberDeliveryStatuses :: Maybe [MemberDeliveryStatus], + forwardedFromChatItem :: Maybe AChatItem } - deriving (Eq, Show) + deriving (Show) data ChatItemVersion = ChatItemVersion { chatItemVersionId :: Int64, @@ -1043,6 +1092,8 @@ instance ChatTypeI c => ToJSON (CIDeleted c) where toJSON = J.toJSON . jsonCIDeleted toEncoding = J.toEncoding . jsonCIDeleted +$(JQ.deriveJSON (sumTypeJSON $ dropPrefix "CIFF") ''CIForwardedFrom) + $(JQ.deriveJSON defaultJSON ''CITimed) $(JQ.deriveJSON (enumJSON $ dropPrefix "SSP") ''SndCIStatusProgress) @@ -1066,8 +1117,6 @@ $(JQ.deriveJSON defaultJSON ''MemberDeliveryStatus) $(JQ.deriveJSON defaultJSON ''ChatItemVersion) -$(JQ.deriveJSON defaultJSON ''ChatItemInfo) - instance (ChatTypeI c, MsgDirectionI d) => FromJSON (CIMeta c d) where parseJSON = $(JQ.mkParseJSON defaultJSON ''CIMeta) @@ -1157,6 +1206,8 @@ instance ChatTypeI c => ToJSON (CChatItem c) where toJSON (CChatItem _ ci) = J.toJSON ci toEncoding (CChatItem _ ci) = J.toEncoding ci +$(JQ.deriveJSON defaultJSON ''ChatItemInfo) + $(JQ.deriveJSON defaultJSON ''ChatStats) instance ChatTypeI c => ToJSON (Chat c) where diff --git a/src/Simplex/Chat/Messages/CIContent.hs b/src/Simplex/Chat/Messages/CIContent.hs index 9266a0c1ca..13aa7ace10 100644 --- a/src/Simplex/Chat/Messages/CIContent.hs +++ b/src/Simplex/Chat/Messages/CIContent.hs @@ -43,6 +43,8 @@ $(JQ.deriveJSON (enumJSON $ dropPrefix "MD") ''MsgDirection) instance FromField AMsgDirection where fromField = fromIntField_ $ fmap fromMsgDirection . msgDirectionIntP +instance FromField MsgDirection where fromField = fromIntField_ msgDirectionIntP + instance ToField MsgDirection where toField = toField . msgDirectionInt data SMsgDirection (d :: MsgDirection) where diff --git a/src/Simplex/Chat/Migrations/M20240402_item_forwarded.hs b/src/Simplex/Chat/Migrations/M20240402_item_forwarded.hs new file mode 100644 index 0000000000..850c8be2d9 --- /dev/null +++ b/src/Simplex/Chat/Migrations/M20240402_item_forwarded.hs @@ -0,0 +1,36 @@ +{-# LANGUAGE QuasiQuotes #-} + +module Simplex.Chat.Migrations.M20240402_item_forwarded where + +import Database.SQLite.Simple (Query) +import Database.SQLite.Simple.QQ (sql) + +m20240402_item_forwarded :: Query +m20240402_item_forwarded = + [sql| +ALTER TABLE chat_items ADD COLUMN fwd_from_tag TEXT; +ALTER TABLE chat_items ADD COLUMN fwd_from_chat_name TEXT; +ALTER TABLE chat_items ADD COLUMN fwd_from_msg_dir INTEGER; +ALTER TABLE chat_items ADD COLUMN fwd_from_contact_id INTEGER REFERENCES contacts ON DELETE SET NULL; +ALTER TABLE chat_items ADD COLUMN fwd_from_group_id INTEGER REFERENCES groups ON DELETE SET NULL; +ALTER TABLE chat_items ADD COLUMN fwd_from_chat_item_id INTEGER REFERENCES chat_items ON DELETE SET NULL; + +CREATE INDEX idx_chat_items_fwd_from_contact_id ON chat_items(fwd_from_contact_id); +CREATE INDEX idx_chat_items_fwd_from_group_id ON chat_items(fwd_from_group_id); +CREATE INDEX idx_chat_items_fwd_from_chat_item_id ON chat_items(fwd_from_chat_item_id); +|] + +down_m20240402_item_forwarded :: Query +down_m20240402_item_forwarded = + [sql| +DROP INDEX idx_chat_items_fwd_from_contact_id; +DROP INDEX idx_chat_items_fwd_from_group_id; +DROP INDEX idx_chat_items_fwd_from_chat_item_id; + +ALTER TABLE chat_items DROP COLUMN fwd_from_tag; +ALTER TABLE chat_items DROP COLUMN fwd_from_chat_name; +ALTER TABLE chat_items DROP COLUMN fwd_from_msg_dir; +ALTER TABLE chat_items DROP COLUMN fwd_from_contact_id; +ALTER TABLE chat_items DROP COLUMN fwd_from_group_id; +ALTER TABLE chat_items DROP COLUMN fwd_from_chat_item_id; +|] diff --git a/src/Simplex/Chat/Migrations/chat_schema.sql b/src/Simplex/Chat/Migrations/chat_schema.sql index 11cbd8ae89..f2d8e59ca7 100644 --- a/src/Simplex/Chat/Migrations/chat_schema.sql +++ b/src/Simplex/Chat/Migrations/chat_schema.sql @@ -382,7 +382,13 @@ CREATE TABLE chat_items( item_deleted_ts TEXT, forwarded_by_group_member_id INTEGER REFERENCES group_members ON DELETE SET NULL, item_content_tag TEXT, - note_folder_id INTEGER DEFAULT NULL REFERENCES note_folders ON DELETE CASCADE + note_folder_id INTEGER DEFAULT NULL REFERENCES note_folders ON DELETE CASCADE, + fwd_from_tag TEXT, + fwd_from_chat_name TEXT, + fwd_from_msg_dir INTEGER, + fwd_from_contact_id INTEGER REFERENCES contacts ON DELETE SET NULL, + fwd_from_group_id INTEGER REFERENCES groups ON DELETE SET NULL, + fwd_from_chat_item_id INTEGER REFERENCES chat_items ON DELETE SET NULL ); CREATE TABLE chat_item_messages( chat_item_id INTEGER NOT NULL REFERENCES chat_items ON DELETE CASCADE, @@ -860,3 +866,10 @@ CREATE INDEX idx_chat_items_notes_item_status on chat_items( item_status ); CREATE INDEX idx_files_redirect_file_id on files(redirect_file_id); +CREATE INDEX idx_chat_items_fwd_from_contact_id ON chat_items( + fwd_from_contact_id +); +CREATE INDEX idx_chat_items_fwd_from_group_id ON chat_items(fwd_from_group_id); +CREATE INDEX idx_chat_items_fwd_from_chat_item_id ON chat_items( + fwd_from_chat_item_id +); diff --git a/src/Simplex/Chat/Protocol.hs b/src/Simplex/Chat/Protocol.hs index e262de0e74..6cdc52a499 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -588,6 +588,7 @@ parseMsgContainer :: J.Object -> JT.Parser MsgContainer parseMsgContainer v = MCQuote <$> v .: "quote" <*> mc <|> (v .: "forward" >>= \f -> (if f then MCForward else MCSimple) <$> mc) + <|> (MCForward <$> ((v .: "forward" :: JT.Parser J.Object) *> mc)) <|> MCSimple <$> mc where mc = ExtMsgContent <$> v .: "content" <*> v .:? "file" <*> v .:? "ttl" <*> v .:? "live" diff --git a/src/Simplex/Chat/Store/Messages.hs b/src/Simplex/Chat/Store/Messages.hs index fe89d7f506..11068ff5cb 100644 --- a/src/Simplex/Chat/Store/Messages.hs +++ b/src/Simplex/Chat/Store/Messages.hs @@ -145,8 +145,8 @@ import Simplex.Messaging.Agent.Protocol (AgentMsgId, ConnId, MsgMeta (..), UserI import Simplex.Messaging.Agent.Store.SQLite (firstRow, firstRow', maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import qualified Simplex.Messaging.Crypto as C -import Simplex.Messaging.Crypto.Ratchet (PQSupport) import Simplex.Messaging.Crypto.File (CryptoFile (..), CryptoFileArgs (..)) +import Simplex.Messaging.Crypto.Ratchet (PQSupport) import Simplex.Messaging.Util (eitherToMaybe) import UnliftIO.STM @@ -330,9 +330,9 @@ updateChatTs db User {userId} chatDirection chatTs = case toChatInfo chatDirecti (chatTs, userId, noteFolderId) _ -> pure () -createNewSndChatItem :: DB.Connection -> User -> ChatDirection c 'MDSnd -> SndMessage -> CIContent 'MDSnd -> Maybe (CIQuote c) -> Maybe CITimed -> Bool -> UTCTime -> IO ChatItemId -createNewSndChatItem db user chatDirection SndMessage {msgId, sharedMsgId} ciContent quotedItem timed live createdAt = - createNewChatItem_ db user chatDirection createdByMsgId (Just sharedMsgId) ciContent quoteRow timed live createdAt Nothing createdAt +createNewSndChatItem :: DB.Connection -> User -> ChatDirection c 'MDSnd -> SndMessage -> CIContent 'MDSnd -> Maybe (CIQuote c) -> Maybe CIForwardedFrom -> Maybe CITimed -> Bool -> UTCTime -> IO ChatItemId +createNewSndChatItem db user chatDirection SndMessage {msgId, sharedMsgId} ciContent quotedItem itemForwarded timed live createdAt = + createNewChatItem_ db user chatDirection createdByMsgId (Just sharedMsgId) ciContent quoteRow itemForwarded timed live createdAt Nothing createdAt where createdByMsgId = if msgId == 0 then Nothing else Just msgId quoteRow :: NewQuoteRow @@ -346,12 +346,13 @@ createNewSndChatItem db user chatDirection SndMessage {msgId, sharedMsgId} ciCon CIQGroupRcv (Just GroupMember {memberId}) -> (Just False, Just memberId) CIQGroupRcv Nothing -> (Just False, Nothing) -createNewRcvChatItem :: ChatTypeQuotable c => DB.Connection -> User -> ChatDirection c 'MDRcv -> RcvMessage -> Maybe SharedMsgId -> CIContent 'MDRcv -> Maybe CITimed -> Bool -> UTCTime -> UTCTime -> IO (ChatItemId, Maybe (CIQuote c)) +createNewRcvChatItem :: ChatTypeQuotable c => DB.Connection -> User -> ChatDirection c 'MDRcv -> RcvMessage -> Maybe SharedMsgId -> CIContent 'MDRcv -> Maybe CITimed -> Bool -> UTCTime -> UTCTime -> IO (ChatItemId, Maybe (CIQuote c), Maybe CIForwardedFrom) createNewRcvChatItem db user chatDirection RcvMessage {msgId, chatMsgEvent, forwardedByMember} sharedMsgId_ ciContent timed live itemTs createdAt = do - ciId <- createNewChatItem_ db user chatDirection (Just msgId) sharedMsgId_ ciContent quoteRow timed live itemTs forwardedByMember createdAt + ciId <- createNewChatItem_ db user chatDirection (Just msgId) sharedMsgId_ ciContent quoteRow itemForwarded timed live itemTs forwardedByMember createdAt quotedItem <- mapM (getChatItemQuote_ db user chatDirection) quotedMsg - pure (ciId, quotedItem) + pure (ciId, quotedItem, itemForwarded) where + itemForwarded = cmForwardedFrom chatMsgEvent quotedMsg = cmToQuotedMsg chatMsgEvent quoteRow :: NewQuoteRow quoteRow = case quotedMsg of @@ -364,13 +365,13 @@ createNewRcvChatItem db user chatDirection RcvMessage {msgId, chatMsgEvent, forw createNewChatItemNoMsg :: forall c d. MsgDirectionI d => DB.Connection -> User -> ChatDirection c d -> CIContent d -> UTCTime -> UTCTime -> IO ChatItemId createNewChatItemNoMsg db user chatDirection ciContent itemTs = - createNewChatItem_ db user chatDirection Nothing Nothing ciContent quoteRow Nothing False itemTs Nothing + createNewChatItem_ db user chatDirection Nothing Nothing ciContent quoteRow Nothing Nothing False itemTs Nothing where quoteRow :: NewQuoteRow quoteRow = (Nothing, Nothing, Nothing, Nothing, Nothing) -createNewChatItem_ :: forall c d. MsgDirectionI d => DB.Connection -> User -> ChatDirection c d -> Maybe MessageId -> Maybe SharedMsgId -> CIContent d -> NewQuoteRow -> Maybe CITimed -> Bool -> UTCTime -> Maybe GroupMemberId -> UTCTime -> IO ChatItemId -createNewChatItem_ db User {userId} chatDirection msgId_ sharedMsgId ciContent quoteRow timed live itemTs forwardedByMember createdAt = do +createNewChatItem_ :: forall c d. MsgDirectionI d => DB.Connection -> User -> ChatDirection c d -> Maybe MessageId -> Maybe SharedMsgId -> CIContent d -> NewQuoteRow -> Maybe CIForwardedFrom -> Maybe CITimed -> Bool -> UTCTime -> Maybe GroupMemberId -> UTCTime -> IO ChatItemId +createNewChatItem_ db User {userId} chatDirection msgId_ sharedMsgId ciContent quoteRow itemForwarded timed live itemTs forwardedByMember createdAt = do DB.execute db [sql| @@ -381,10 +382,12 @@ createNewChatItem_ db User {userId} chatDirection msgId_ sharedMsgId ciContent q item_sent, item_ts, item_content, item_content_tag, item_text, item_status, shared_msg_id, forwarded_by_group_member_id, created_at, updated_at, item_live, timed_ttl, timed_delete_at, -- quote - quoted_shared_msg_id, quoted_sent_at, quoted_content, quoted_sent, quoted_member_id - ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) + quoted_shared_msg_id, quoted_sent_at, quoted_content, quoted_sent, quoted_member_id, + -- forwarded from + fwd_from_tag, fwd_from_chat_name, fwd_from_msg_dir, fwd_from_contact_id, fwd_from_group_id, fwd_from_chat_item_id + ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) |] - ((userId, msgId_) :. idsRow :. itemRow :. quoteRow) + ((userId, msgId_) :. idsRow :. itemRow :. quoteRow :. forwardedFromRow) ciId <- insertedRowId db forM_ msgId_ $ \msgId -> insertChatItemMessage_ db ciId msgId createdAt pure ciId @@ -399,6 +402,16 @@ createNewChatItem_ db User {userId} chatDirection msgId_ sharedMsgId ciContent q CDGroupSnd GroupInfo {groupId} -> (Nothing, Just groupId, Nothing, Nothing) CDLocalRcv NoteFolder {noteFolderId} -> (Nothing, Nothing, Nothing, Just noteFolderId) CDLocalSnd NoteFolder {noteFolderId} -> (Nothing, Nothing, Nothing, Just noteFolderId) + forwardedFromRow :: (Maybe CIForwardedFromTag, Maybe Text, Maybe MsgDirection, Maybe Int64, Maybe Int64, Maybe Int64) + forwardedFromRow = case itemForwarded of + Nothing -> + (Nothing, Nothing, Nothing, Nothing, Nothing, Nothing) + Just CIFFUnknown -> + (Just CIFFUnknown_, Nothing, Nothing, Nothing, Nothing, Nothing) + Just CIFFContact {chatName, msgDir, contactId, chatItemId} -> + (Just CIFFContact_, Just chatName, Just msgDir, contactId, Nothing, chatItemId) + Just CIFFGroup {chatName, msgDir, groupId, chatItemId} -> + (Just CIFFContact_, Just chatName, Just msgDir, Nothing, groupId, chatItemId) ciTimedRow :: Maybe CITimed -> (Maybe Int, Maybe UTCTime) ciTimedRow (Just CITimed {ttl, deleteAt}) = (Just ttl, deleteAt) @@ -794,7 +807,7 @@ getLocalChatPreview_ db user (LocalChatPD _ noteFolderId lastItemId_ stats) = do -- this function can be changed so it never fails, not only avoid failure on invalid json toLocalChatItem :: UTCTime -> ChatItemRow -> Either StoreError (CChatItem 'CTLocal) -toLocalChatItem currentTs ((itemId, itemTs, AMsgDirection msgDir, itemContentText, itemText, itemStatus, sharedMsgId) :. (itemDeleted, deletedTs, itemEdited, createdAt, updatedAt) :. (timedTTL, timedDeleteAt, itemLive) :. (fileId_, fileName_, fileSize_, filePath, fileKey, fileNonce, fileStatus_, fileProtocol_)) = +toLocalChatItem currentTs ((itemId, itemTs, AMsgDirection msgDir, itemContentText, itemText, itemStatus, sharedMsgId) :. (itemDeleted, deletedTs, itemEdited, createdAt, updatedAt) :. forwardedFromRow :. (timedTTL, timedDeleteAt, itemLive) :. (fileId_, fileName_, fileSize_, filePath, fileKey, fileNonce, fileStatus_, fileProtocol_)) = chatItem $ fromRight invalid $ dbParseACIContent itemContentText where invalid = ACIContent msgDir $ CIInvalidJSON itemContentText @@ -826,7 +839,8 @@ toLocalChatItem currentTs ((itemId, itemTs, AMsgDirection msgDir, itemContentTex DBCINotDeleted -> Nothing _ -> Just (CIDeleted @CTLocal deletedTs) itemEdited' = fromMaybe False itemEdited - in mkCIMeta itemId content itemText status sharedMsgId itemDeleted' itemEdited' ciTimed itemLive currentTs itemTs Nothing createdAt updatedAt + itemForwarded = toCIForwardedFrom forwardedFromRow + in mkCIMeta itemId content itemText status sharedMsgId itemForwarded itemDeleted' itemEdited' ciTimed itemLive currentTs itemTs Nothing createdAt updatedAt ciTimed :: Maybe CITimed ciTimed = timedTTL >>= \ttl -> Just CITimed {ttl, deleteAt = timedDeleteAt} @@ -1391,7 +1405,14 @@ type MaybeCIFIleRow = (Maybe Int64, Maybe String, Maybe Integer, Maybe FilePath, type ChatItemModeRow = (Maybe Int, Maybe UTCTime, Maybe Bool) -type ChatItemRow = (Int64, ChatItemTs, AMsgDirection, Text, Text, ACIStatus, Maybe SharedMsgId) :. (Int, Maybe UTCTime, Maybe Bool, UTCTime, UTCTime) :. ChatItemModeRow :. MaybeCIFIleRow +type ChatItemForwardedFromRow = (Maybe CIForwardedFromTag, Maybe Text, Maybe MsgDirection, Maybe Int64, Maybe Int64, Maybe Int64) + +type ChatItemRow = + (Int64, ChatItemTs, AMsgDirection, Text, Text, ACIStatus, Maybe SharedMsgId) + :. (Int, Maybe UTCTime, Maybe Bool, UTCTime, UTCTime) + :. ChatItemForwardedFromRow + :. ChatItemModeRow + :. MaybeCIFIleRow type QuoteRow = (Maybe ChatItemId, Maybe SharedMsgId, Maybe UTCTime, Maybe MsgContent, Maybe Bool) @@ -1406,7 +1427,7 @@ toQuote (quotedItemId, quotedSharedMsgId, quotedSentAt, quotedMsgContent, _) dir -- this function can be changed so it never fails, not only avoid failure on invalid json toDirectChatItem :: UTCTime -> ChatItemRow :. QuoteRow -> Either StoreError (CChatItem 'CTDirect) -toDirectChatItem currentTs (((itemId, itemTs, AMsgDirection msgDir, itemContentText, itemText, itemStatus, sharedMsgId) :. (itemDeleted, deletedTs, itemEdited, createdAt, updatedAt) :. (timedTTL, timedDeleteAt, itemLive) :. (fileId_, fileName_, fileSize_, filePath, fileKey, fileNonce, fileStatus_, fileProtocol_)) :. quoteRow) = +toDirectChatItem currentTs (((itemId, itemTs, AMsgDirection msgDir, itemContentText, itemText, itemStatus, sharedMsgId) :. (itemDeleted, deletedTs, itemEdited, createdAt, updatedAt) :. forwardedFromRow :. (timedTTL, timedDeleteAt, itemLive) :. (fileId_, fileName_, fileSize_, filePath, fileKey, fileNonce, fileStatus_, fileProtocol_)) :. quoteRow) = chatItem $ fromRight invalid $ dbParseACIContent itemContentText where invalid = ACIContent msgDir $ CIInvalidJSON itemContentText @@ -1438,10 +1459,19 @@ toDirectChatItem currentTs (((itemId, itemTs, AMsgDirection msgDir, itemContentT DBCINotDeleted -> Nothing _ -> Just (CIDeleted @CTDirect deletedTs) itemEdited' = fromMaybe False itemEdited - in mkCIMeta itemId content itemText status sharedMsgId itemDeleted' itemEdited' ciTimed itemLive currentTs itemTs Nothing createdAt updatedAt + itemForwarded = toCIForwardedFrom forwardedFromRow + in mkCIMeta itemId content itemText status sharedMsgId itemForwarded itemDeleted' itemEdited' ciTimed itemLive currentTs itemTs Nothing createdAt updatedAt ciTimed :: Maybe CITimed ciTimed = timedTTL >>= \ttl -> Just CITimed {ttl, deleteAt = timedDeleteAt} +toCIForwardedFrom :: ChatItemForwardedFromRow -> Maybe CIForwardedFrom +toCIForwardedFrom (fwdFromTag, fwdFromChatName, fwdFromMsgDir, fwdFromContactId, fwdFromGroupId, fwdFromChatItemId) = + case (fwdFromTag, fwdFromChatName, fwdFromMsgDir, fwdFromContactId, fwdFromGroupId, fwdFromChatItemId) of + (Just CIFFUnknown_, Nothing, Nothing, Nothing, Nothing, Nothing) -> Just CIFFUnknown + (Just CIFFContact_, Just chatName, Just msgDir, contactId, Nothing, chatId) -> Just $ CIFFContact chatName msgDir contactId chatId + (Just CIFFGroup_, Just chatName, Just msgDir, Nothing, groupId, chatId) -> Just $ CIFFGroup chatName msgDir groupId chatId + _ -> Nothing + type GroupQuoteRow = QuoteRow :. MaybeGroupMemberRow toGroupQuote :: QuoteRow -> Maybe GroupMember -> Maybe (CIQuote 'CTGroup) @@ -1454,7 +1484,7 @@ toGroupQuote qr@(_, _, _, _, quotedSent) quotedMember_ = toQuote qr $ direction -- this function can be changed so it never fails, not only avoid failure on invalid json toGroupChatItem :: UTCTime -> Int64 -> ChatItemRow :. Only (Maybe GroupMemberId) :. MaybeGroupMemberRow :. GroupQuoteRow :. MaybeGroupMemberRow -> Either StoreError (CChatItem 'CTGroup) -toGroupChatItem currentTs userContactId (((itemId, itemTs, AMsgDirection msgDir, itemContentText, itemText, itemStatus, sharedMsgId) :. (itemDeleted, deletedTs, itemEdited, createdAt, updatedAt) :. (timedTTL, timedDeleteAt, itemLive) :. (fileId_, fileName_, fileSize_, filePath, fileKey, fileNonce, fileStatus_, fileProtocol_)) :. Only forwardedByMember :. memberRow_ :. (quoteRow :. quotedMemberRow_) :. deletedByGroupMemberRow_) = do +toGroupChatItem currentTs userContactId (((itemId, itemTs, AMsgDirection msgDir, itemContentText, itemText, itemStatus, sharedMsgId) :. (itemDeleted, deletedTs, itemEdited, createdAt, updatedAt) :. forwardedFromRow :. (timedTTL, timedDeleteAt, itemLive) :. (fileId_, fileName_, fileSize_, filePath, fileKey, fileNonce, fileStatus_, fileProtocol_)) :. Only forwardedByMember :. memberRow_ :. (quoteRow :. quotedMemberRow_) :. deletedByGroupMemberRow_) = do chatItem $ fromRight invalid $ dbParseACIContent itemContentText where member_ = toMaybeGroupMember userContactId memberRow_ @@ -1491,7 +1521,8 @@ toGroupChatItem currentTs userContactId (((itemId, itemTs, AMsgDirection msgDir, DBCIBlockedByAdmin -> Just (CIBlockedByAdmin deletedTs) _ -> Just (maybe (CIDeleted @CTGroup deletedTs) (CIModerated deletedTs) deletedByGroupMember_) itemEdited' = fromMaybe False itemEdited - in mkCIMeta itemId content itemText status sharedMsgId itemDeleted' itemEdited' ciTimed itemLive currentTs itemTs forwardedByMember createdAt updatedAt + itemForwarded = toCIForwardedFrom forwardedFromRow + in mkCIMeta itemId content itemText status sharedMsgId itemForwarded itemDeleted' itemEdited' ciTimed itemLive currentTs itemTs forwardedByMember createdAt updatedAt ciTimed :: Maybe CITimed ciTimed = timedTTL >>= \ttl -> Just CITimed {ttl, deleteAt = timedDeleteAt} @@ -1726,7 +1757,10 @@ getDirectChatItem db User {userId} contactId itemId = ExceptT $ do [sql| SELECT -- ChatItem - i.chat_item_id, i.item_ts, i.item_sent, i.item_content, i.item_text, i.item_status, i.shared_msg_id, i.item_deleted, i.item_deleted_ts, i.item_edited, i.created_at, i.updated_at, i.timed_ttl, i.timed_delete_at, i.item_live, + i.chat_item_id, i.item_ts, i.item_sent, i.item_content, i.item_text, i.item_status, i.shared_msg_id, + i.item_deleted, i.item_deleted_ts, i.item_edited, i.created_at, i.updated_at, + i.fwd_from_tag, i.fwd_from_chat_name, i.fwd_from_msg_dir, i.fwd_from_contact_id, i.fwd_from_group_id, i.fwd_from_chat_item_id, + i.timed_ttl, i.timed_delete_at, i.item_live, -- CIFile f.file_id, f.file_name, f.file_size, f.file_path, f.file_crypto_key, f.file_crypto_nonce, f.ci_file_status, f.protocol, -- DirectQuote @@ -1966,7 +2000,10 @@ getGroupChatItem db User {userId, userContactId} groupId itemId = ExceptT $ do [sql| SELECT -- ChatItem - i.chat_item_id, i.item_ts, i.item_sent, i.item_content, i.item_text, i.item_status, i.shared_msg_id, i.item_deleted, i.item_deleted_ts, i.item_edited, i.created_at, i.updated_at, i.timed_ttl, i.timed_delete_at, i.item_live, + i.chat_item_id, i.item_ts, i.item_sent, i.item_content, i.item_text, i.item_status, i.shared_msg_id, + i.item_deleted, i.item_deleted_ts, i.item_edited, i.created_at, i.updated_at, + i.fwd_from_tag, i.fwd_from_chat_name, i.fwd_from_msg_dir, i.fwd_from_contact_id, i.fwd_from_group_id, i.fwd_from_chat_item_id, + i.timed_ttl, i.timed_delete_at, i.item_live, -- CIFile f.file_id, f.file_name, f.file_size, f.file_path, f.file_crypto_key, f.file_crypto_nonce, f.ci_file_status, f.protocol, -- CIMeta forwardedByMember @@ -2067,7 +2104,10 @@ getLocalChatItem db User {userId} folderId itemId = ExceptT $ do [sql| SELECT -- ChatItem - i.chat_item_id, i.item_ts, i.item_sent, i.item_content, i.item_text, i.item_status, i.shared_msg_id, i.item_deleted, i.item_deleted_ts, i.item_edited, i.created_at, i.updated_at, i.timed_ttl, i.timed_delete_at, i.item_live, + i.chat_item_id, i.item_ts, i.item_sent, i.item_content, i.item_text, i.item_status, i.shared_msg_id, + i.item_deleted, i.item_deleted_ts, i.item_edited, i.created_at, i.updated_at, + i.fwd_from_tag, i.fwd_from_chat_name, i.fwd_from_msg_dir, i.fwd_from_contact_id, i.fwd_from_group_id, i.fwd_from_chat_item_id, + i.timed_ttl, i.timed_delete_at, i.item_live, -- CIFile f.file_id, f.file_name, f.file_size, f.file_path, f.file_crypto_key, f.file_crypto_nonce, f.ci_file_status, f.protocol FROM chat_items i diff --git a/src/Simplex/Chat/Store/Migrations.hs b/src/Simplex/Chat/Store/Migrations.hs index e351f0f27a..7a3fb75da3 100644 --- a/src/Simplex/Chat/Store/Migrations.hs +++ b/src/Simplex/Chat/Store/Migrations.hs @@ -104,6 +104,7 @@ import Simplex.Chat.Migrations.M20240226_users_restrict import Simplex.Chat.Migrations.M20240228_pq import Simplex.Chat.Migrations.M20240313_drop_agent_ack_cmd_id import Simplex.Chat.Migrations.M20240324_custom_data +import Simplex.Chat.Migrations.M20240402_item_forwarded import Simplex.Messaging.Agent.Store.SQLite.Migrations (Migration (..)) schemaMigrations :: [(String, Query, Maybe Query)] @@ -207,7 +208,8 @@ schemaMigrations = ("20240226_users_restrict", m20240226_users_restrict, Just down_m20240226_users_restrict), ("20240228_pq", m20240228_pq, Just down_m20240228_pq), ("20240313_drop_agent_ack_cmd_id", m20240313_drop_agent_ack_cmd_id, Just down_m20240313_drop_agent_ack_cmd_id), - ("20240324_custom_data", m20240324_custom_data, Just down_m20240324_custom_data) + ("20240324_custom_data", m20240324_custom_data, Just down_m20240324_custom_data), + ("20240402_item_forwarded", m20240402_item_forwarded, Just down_m20240402_item_forwarded) ] -- | The list of migrations in ascending order by date diff --git a/src/Simplex/Chat/Terminal/Input.hs b/src/Simplex/Chat/Terminal/Input.hs index 7b96abc1ce..5c36994190 100644 --- a/src/Simplex/Chat/Terminal/Input.hs +++ b/src/Simplex/Chat/Terminal/Input.hs @@ -86,7 +86,10 @@ runInputLoop ct@ChatTerminal {termState, liveMessageState} cc = forever $ do Right SendLiveMessage {} -> True Right SendFile {} -> True Right SendMessageQuote {} -> True + Right ForwardMessage {} -> True + Right ForwardLocalMessage {} -> True Right SendGroupMessageQuote {} -> True + Right ForwardGroupMessage {} -> True Right SendMessageBroadcast {} -> True _ -> False startLiveMessage :: Either a ChatCommand -> ChatResponse -> IO () diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index 55e0078d0d..c136300bc5 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -536,60 +536,68 @@ viewChats ts tz = concatMap chatPreview . reverse _ -> [] viewChatItem :: forall c d. MsgDirectionI d => ChatInfo c -> ChatItem c d -> Bool -> CurrentTime -> TimeZone -> [StyledString] -viewChatItem chat ci@ChatItem {chatDir, meta = meta@CIMeta {forwardedByMember}, content, quotedItem, file} doShow ts tz = +viewChatItem chat ci@ChatItem {chatDir, meta = meta@CIMeta {itemForwarded, forwardedByMember}, content, quotedItem, file} doShow ts tz = withGroupMsgForwarded . withItemDeleted <$> viewCI where viewCI = case chat of DirectChat c -> case chatDir of CIDirectSnd -> case content of - CISndMsgContent mc -> hideLive meta $ withSndFile to $ sndMsg to quote mc + CISndMsgContent mc -> hideLive meta $ withSndFile to $ sndMsg to context mc CISndGroupEvent {} -> showSndItemProhibited to _ -> showSndItem to where to = ttyToContact' c CIDirectRcv -> case content of - CIRcvMsgContent mc -> withRcvFile from $ rcvMsg from quote mc + CIRcvMsgContent mc -> withRcvFile from $ rcvMsg from context mc CIRcvIntegrityError err -> viewRcvIntegrityError from err ts tz meta CIRcvGroupEvent {} -> showRcvItemProhibited from _ -> showRcvItem from where from = ttyFromContact c where - quote = maybe [] (directQuote chatDir) quotedItem + context = + maybe + (maybe [] forwardedFrom itemForwarded) + (directQuote chatDir) + quotedItem GroupChat g -> case chatDir of CIGroupSnd -> case content of - CISndMsgContent mc -> hideLive meta $ withSndFile to $ sndMsg to quote mc + CISndMsgContent mc -> hideLive meta $ withSndFile to $ sndMsg to context mc CISndGroupInvitation {} -> showSndItemProhibited to _ -> showSndItem to where to = ttyToGroup g CIGroupRcv m -> case content of - CIRcvMsgContent mc -> withRcvFile from $ rcvMsg from quote mc + CIRcvMsgContent mc -> withRcvFile from $ rcvMsg from context mc CIRcvIntegrityError err -> viewRcvIntegrityError from err ts tz meta CIRcvGroupInvitation {} -> showRcvItemProhibited from - CIRcvModerated {} -> receivedWithTime_ ts tz (ttyFromGroup g m) quote meta [plainContent content] False - CIRcvBlocked {} -> receivedWithTime_ ts tz (ttyFromGroup g m) quote meta [plainContent content] False + CIRcvModerated {} -> receivedWithTime_ ts tz (ttyFromGroup g m) context meta [plainContent content] False + CIRcvBlocked {} -> receivedWithTime_ ts tz (ttyFromGroup g m) context meta [plainContent content] False _ -> showRcvItem from where from = ttyFromGroup g m where - quote = maybe [] (groupQuote g) quotedItem + context = + maybe + (maybe [] forwardedFrom itemForwarded) + (groupQuote g) + quotedItem LocalChat _ -> case chatDir of CILocalSnd -> case content of - CISndMsgContent mc -> hideLive meta $ withLocalFile to $ sndMsg to quote mc + CISndMsgContent mc -> hideLive meta $ withLocalFile to $ sndMsg to context mc CISndGroupEvent {} -> showSndItemProhibited to _ -> showSndItem to where to = "* " CILocalRcv -> case content of - CIRcvMsgContent mc -> withLocalFile from $ rcvMsg from quote mc + CIRcvMsgContent mc -> withLocalFile from $ rcvMsg from context mc CIRcvIntegrityError err -> viewRcvIntegrityError from err ts tz meta CIRcvGroupEvent {} -> showRcvItemProhibited from _ -> showRcvItem from where from = "* " where - quote = [] + context = maybe [] forwardedFrom itemForwarded ContactRequest {} -> [] ContactConnection {} -> [] withItemDeleted item = case chatItemDeletedText ci (chatInfoMembership chat) of @@ -604,10 +612,10 @@ viewChatItem chat ci@ChatItem {chatDir, meta = meta@CIMeta {forwardedByMember}, withFile view dir l = maybe l (\f -> l <> view dir f ts tz meta) file sndMsg = msg viewSentMessage rcvMsg = msg viewReceivedMessage - msg view dir quote mc = case (msgContentText mc, file, quote) of + msg view dir context mc = case (msgContentText mc, file, context) of ("", Just _, []) -> [] - ("", Just CIFile {fileName}, _) -> view dir quote (MCText $ T.pack fileName) ts tz meta - _ -> view dir quote mc ts tz meta + ("", Just CIFile {fileName}, _) -> view dir context (MCText $ T.pack fileName) ts tz meta + _ -> view dir context mc ts tz meta showSndItem to = showItem $ sentWithTime_ ts tz [to <> plainContent content] meta showRcvItem from = showItem $ receivedWithTime_ ts tz from [] meta [plainContent content] False showSndItemProhibited to = showItem $ sentWithTime_ ts tz [to <> plainContent content <> " " <> prohibited] meta @@ -617,11 +625,12 @@ viewChatItem chat ci@ChatItem {chatDir, meta = meta@CIMeta {forwardedByMember}, prohibited = styled (colored Red) ("[unexpected chat item created, please report to developers]" :: String) viewChatItemInfo :: AChatItem -> ChatItemInfo -> TimeZone -> [StyledString] -viewChatItemInfo (AChatItem _ msgDir _ ChatItem {meta = CIMeta {itemTs, itemTimed, createdAt}}) ChatItemInfo {itemVersions} tz = +viewChatItemInfo (AChatItem _ msgDir _ ChatItem {meta = CIMeta {itemTs, itemTimed, createdAt}}) ChatItemInfo {itemVersions, forwardedFromChatItem} tz = ["sent at: " <> ts itemTs] <> receivedAt <> toBeDeletedAt <> versions + <> forwardedFrom' where ts = styleTime . localTs tz receivedAt = case msgDir of @@ -634,7 +643,21 @@ viewChatItemInfo (AChatItem _ msgDir _ ChatItem {meta = CIMeta {itemTs, itemTime if null itemVersions then [] else ["message history:"] <> concatMap version itemVersions - version ChatItemVersion {msgContent, itemVersionTs} = prependFirst (ts itemVersionTs <> styleTime ": ") $ ttyMsgContent msgContent + where + version ChatItemVersion {msgContent, itemVersionTs} = prependFirst (ts itemVersionTs <> styleTime ": ") $ ttyMsgContent msgContent + forwardedFrom' = + case forwardedFromChatItem of + Just fwdACI@(AChatItem _ fwdMsgDir fwdChatInfo _) -> + [plain $ "forwarded from: " <> maybe "" (<> ", ") fwdDir_ <> fwdItemId] + where + fwdDir_ = case (fwdMsgDir, fwdChatInfo) of + (SMDSnd, DirectChat ct) -> Just $ "you @" <> viewContactName ct + (SMDRcv, DirectChat ct) -> Just $ "@" <> viewContactName ct + (SMDSnd, GroupChat gInfo) -> Just $ "you #" <> viewGroupName gInfo + (SMDRcv, GroupChat gInfo) -> Just $ "#" <> viewGroupName gInfo + _ -> Nothing + fwdItemId = "chat item id: " <> (T.pack . show $ aChatItemId fwdACI) + _ -> [] localTs :: TimeZone -> UTCTime -> String localTs tz ts = do @@ -666,37 +689,45 @@ viewDeliveryReceipt = \case MRBadMsgHash -> ttyError' "⩗!" viewItemUpdate :: MsgDirectionI d => ChatInfo c -> ChatItem c d -> Bool -> CurrentTime -> TimeZone -> [StyledString] -viewItemUpdate chat ChatItem {chatDir, meta = meta@CIMeta {itemEdited, itemLive}, content, quotedItem} liveItems ts tz = case chat of +viewItemUpdate chat ChatItem {chatDir, meta = meta@CIMeta {itemForwarded, itemEdited, itemLive}, content, quotedItem} liveItems ts tz = case chat of DirectChat c -> case chatDir of CIDirectRcv -> case content of CIRcvMsgContent mc | itemLive == Just True && not liveItems -> [] - | otherwise -> viewReceivedUpdatedMessage from quote mc ts tz meta + | otherwise -> viewReceivedUpdatedMessage from context mc ts tz meta _ -> [] where from = if itemEdited then ttyFromContactEdited c else ttyFromContact c CIDirectSnd -> case content of - CISndMsgContent mc -> hideLive meta $ viewSentMessage to quote mc ts tz meta + CISndMsgContent mc -> hideLive meta $ viewSentMessage to context mc ts tz meta _ -> [] where to = if itemEdited then ttyToContactEdited' c else ttyToContact' c where - quote = maybe [] (directQuote chatDir) quotedItem + context = + maybe + (maybe [] forwardedFrom itemForwarded) + (directQuote chatDir) + quotedItem GroupChat g -> case chatDir of CIGroupRcv m -> case content of CIRcvMsgContent mc | itemLive == Just True && not liveItems -> [] - | otherwise -> viewReceivedUpdatedMessage from quote mc ts tz meta + | otherwise -> viewReceivedUpdatedMessage from context mc ts tz meta _ -> [] where from = if itemEdited then ttyFromGroupEdited g m else ttyFromGroup g m CIGroupSnd -> case content of - CISndMsgContent mc -> hideLive meta $ viewSentMessage to quote mc ts tz meta + CISndMsgContent mc -> hideLive meta $ viewSentMessage to context mc ts tz meta _ -> [] where to = if itemEdited then ttyToGroupEdited g else ttyToGroup g where - quote = maybe [] (groupQuote g) quotedItem + context = + maybe + (maybe [] forwardedFrom itemForwarded) + (groupQuote g) + quotedItem _ -> [] hideLive :: CIMeta c d -> [StyledString] -> [StyledString] @@ -778,6 +809,14 @@ directQuote _ CIQuote {content = qmc, chatDir = quoteDir} = groupQuote :: GroupInfo -> CIQuote 'CTGroup -> [StyledString] groupQuote g CIQuote {content = qmc, chatDir = quoteDir} = quoteText qmc . ttyQuotedMember $ sentByMember g quoteDir +forwardedFrom :: CIForwardedFrom -> [StyledString] +forwardedFrom = \case + CIFFUnknown -> ["-> forwarded"] + CIFFContact c MDSnd _ _ -> ["<- you @" <> (plain . viewName) c] + CIFFContact c MDRcv _ _ -> ["<- @" <> (plain . viewName) c] + CIFFGroup g MDSnd _ _ -> ["<- you #" <> (plain . viewName) g] + CIFFGroup g MDRcv _ _ -> ["<- #" <> (plain . viewName) g] + sentByMember :: GroupInfo -> CIQDirection 'CTGroup -> Maybe GroupMember sentByMember GroupInfo {membership} = \case CIQGroupSnd -> Just membership @@ -836,7 +875,9 @@ viewChatCleared :: AChatInfo -> [StyledString] viewChatCleared (AChatInfo _ chatInfo) = case chatInfo of DirectChat ct -> [ttyContact' ct <> ": all messages are removed locally ONLY"] GroupChat gi -> [ttyGroup' gi <> ": all messages are removed locally ONLY"] - _ -> [] + LocalChat _ -> ["notes: all messages are removed"] + ContactRequest _ -> [] + ContactConnection _ -> [] viewContactsList :: [Contact] -> [StyledString] viewContactsList = @@ -1484,17 +1525,17 @@ viewReceivedUpdatedMessage :: StyledString -> [StyledString] -> MsgContent -> Cu viewReceivedUpdatedMessage = viewReceivedMessage_ True viewReceivedMessage_ :: Bool -> StyledString -> [StyledString] -> MsgContent -> CurrentTime -> TimeZone -> CIMeta c d -> [StyledString] -viewReceivedMessage_ updated from quote mc ts tz meta = receivedWithTime_ ts tz from quote meta (ttyMsgContent mc) updated +viewReceivedMessage_ updated from context mc ts tz meta = receivedWithTime_ ts tz from context meta (ttyMsgContent mc) updated viewReceivedReaction :: StyledString -> [StyledString] -> StyledString -> CurrentTime -> TimeZone -> UTCTime -> [StyledString] viewReceivedReaction from styledMsg reactionText ts tz reactionTs = prependFirst (ttyMsgTime ts tz reactionTs <> " " <> from) (styledMsg <> [" " <> reactionText]) receivedWithTime_ :: CurrentTime -> TimeZone -> StyledString -> [StyledString] -> CIMeta c d -> [StyledString] -> Bool -> [StyledString] -receivedWithTime_ ts tz from quote CIMeta {itemId, itemTs, itemEdited, itemDeleted, itemLive} styledMsg updated = do - prependFirst (ttyMsgTime ts tz itemTs <> " " <> from) (quote <> prependFirst (indent <> live) styledMsg) +receivedWithTime_ ts tz from context CIMeta {itemId, itemTs, itemEdited, itemDeleted, itemLive} styledMsg updated = do + prependFirst (ttyMsgTime ts tz itemTs <> " " <> from) (context <> prependFirst (indent <> live) styledMsg) where - indent = if null quote then "" else " " + indent = if null context then "" else " " live | itemEdited || isJust itemDeleted = "" | otherwise = case itemLive of @@ -1522,9 +1563,9 @@ recent now tz time = do || (localNow < currentDay12 && localTime >= previousDay18 && localTimeDay < localNowDay) viewSentMessage :: StyledString -> [StyledString] -> MsgContent -> CurrentTime -> TimeZone -> CIMeta c d -> [StyledString] -viewSentMessage to quote mc ts tz meta@CIMeta {itemEdited, itemDeleted, itemLive} = sentWithTime_ ts tz (prependFirst to $ quote <> prependFirst (indent <> live) (ttyMsgContent mc)) meta +viewSentMessage to context mc ts tz meta@CIMeta {itemEdited, itemDeleted, itemLive} = sentWithTime_ ts tz (prependFirst to $ context <> prependFirst (indent <> live) (ttyMsgContent mc)) meta where - indent = if null quote then "" else " " + indent = if null context then "" else " " live | itemEdited || isJust itemDeleted = "" | otherwise = case itemLive of @@ -1926,6 +1967,7 @@ viewChatError logLevel testView = \case CEFallbackToSMPProhibited fileId -> ["recipient tried to accept file " <> sShow fileId <> " via old protocol, prohibited"] CEInlineFileProhibited _ -> ["A small file sent without acceptance - you can enable receiving such files with -f option."] CEInvalidQuote -> ["cannot reply to this message"] + CEInvalidForward -> ["cannot forward this message"] CEInvalidChatItemUpdate -> ["cannot update this item"] CEInvalidChatItemDelete -> ["cannot delete this item"] CEHasCurrentCall -> ["call already in progress"] diff --git a/tests/ChatTests.hs b/tests/ChatTests.hs index 77d256a240..e8f3838eb6 100644 --- a/tests/ChatTests.hs +++ b/tests/ChatTests.hs @@ -3,6 +3,7 @@ module ChatTests where import ChatTests.ChatList import ChatTests.Direct import ChatTests.Files +import ChatTests.Forward import ChatTests.Groups import ChatTests.Local import ChatTests.Profiles @@ -11,6 +12,7 @@ import Test.Hspec hiding (it) chatTests :: SpecWith FilePath chatTests = do describe "direct tests" chatDirectTests + describe "forward tests" chatForwardTests describe "group tests" chatGroupTests describe "local chats tests" chatLocalChatsTests describe "file tests" chatFileTests diff --git a/tests/ChatTests/Files.hs b/tests/ChatTests/Files.hs index e50b20844a..572d9294a9 100644 --- a/tests/ChatTests/Files.hs +++ b/tests/ChatTests/Files.hs @@ -617,20 +617,8 @@ testXFTPWithRelativePaths = withXFTPServer $ do -- agent is passed xftp work directory only on chat start, -- so for test we work around by stopping and starting chat - alice ##> "/_stop" - alice <## "chat stopped" - alice #$> ("/_files_folder ./tests/fixtures", id, "ok") - alice #$> ("/_temp_folder ./tests/tmp/alice_xftp", id, "ok") - alice ##> "/_start" - alice <## "chat started" - - bob ##> "/_stop" - bob <## "chat stopped" - bob #$> ("/_files_folder ./tests/tmp/bob_files", id, "ok") - bob #$> ("/_temp_folder ./tests/tmp/bob_xftp", id, "ok") - bob ##> "/_start" - bob <## "chat started" - + setRelativePaths alice "./tests/fixtures" "./tests/tmp/alice_xftp" + setRelativePaths bob "./tests/tmp/bob_files" "./tests/tmp/bob_xftp" connectUsers alice bob alice #> "/f @bob test.pdf" diff --git a/tests/ChatTests/Forward.hs b/tests/ChatTests/Forward.hs new file mode 100644 index 0000000000..6aea8447b9 --- /dev/null +++ b/tests/ChatTests/Forward.hs @@ -0,0 +1,523 @@ +{-# LANGUAGE OverloadedStrings #-} +{-# LANGUAGE PostfixOperators #-} + +module ChatTests.Forward where + +import ChatClient +import ChatTests.Utils +import qualified Data.ByteString.Char8 as B +import System.Directory (copyFile, doesFileExist) +import Test.Hspec hiding (it) + +chatForwardTests :: SpecWith FilePath +chatForwardTests = do + describe "forward messages" $ do + it "from contact to contact" testForwardContactToContact + it "from contact to group" testForwardContactToGroup + it "from contact to notes" testForwardContactToNotes + it "from group to contact" testForwardGroupToContact + it "from group to group" testForwardGroupToGroup + it "from group to notes" testForwardGroupToNotes + it "from notes to contact" testForwardNotesToContact + it "from notes to group" testForwardNotesToGroup + it "from notes to notes" testForwardNotesToNotes -- TODO forward between different folders when supported + describe "interactions with forwarded messages" $ do + it "preserve original forward info" testForwardPreserveInfo + it "quoted message is not included" testForwardQuotedMsg + it "editing is prohibited" testForwardEditProhibited + describe "forward files" $ do + it "from contact to contact" testForwardFileNoFilesFolder + it "with relative paths: from contact to contact" testForwardFileContactToContact + it "with relative paths: from group to notes" testForwardFileGroupToNotes + it "with relative paths: from notes to group" testForwardFileNotesToGroup + +testForwardContactToContact :: HasCallStack => FilePath -> IO () +testForwardContactToContact = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + connectUsers alice bob + connectUsers alice cath + connectUsers bob cath + + alice #> "@bob hi" + bob <# "alice> hi" + msgId <- lastItemId alice + bob #> "@alice hey" + alice <# "bob> hey" + + alice ##> ("/_forward @3 @2 " <> msgId) + alice <# "@cath <- you @bob" + alice <## " hi" + cath <# "alice> -> forwarded" + cath <## " hi" + + alice `send` "@cath <- @bob hey" + alice <# "@cath <- @bob" + alice <## " hey" + cath <# "alice> -> forwarded" + cath <## " hey" + + -- read chat + alice ##> "/tail @cath 2" + alice <# "@cath <- you @bob" + alice <## " hi" + alice <# "@cath <- @bob" + alice <## " hey" + + cath ##> "/tail @alice 2" + cath <# "alice> -> forwarded" + cath <## " hi" + cath <# "alice> -> forwarded" + cath <## " hey" + + -- item info + alice ##> "/item info @cath hey" + alice <##. "sent at: " + alice <## "message history:" + alice .<## ": hey" + alice <##. "forwarded from: @bob, chat item id:" + +testForwardContactToGroup :: HasCallStack => FilePath -> IO () +testForwardContactToGroup = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + connectUsers alice bob + createGroup2 "team" alice cath + + alice #> "@bob hi" + bob <# "alice> hi" + bob #> "@alice hey" + alice <# "bob> hey" + + alice `send` "#team <- @bob hi" + alice <# "#team <- you @bob" + alice <## " hi" + cath <# "#team alice> -> forwarded" + cath <## " hi" + + alice `send` "#team <- @bob hey" + alice <# "#team <- @bob" + alice <## " hey" + cath <# "#team alice> -> forwarded" + cath <## " hey" + +testForwardContactToNotes :: HasCallStack => FilePath -> IO () +testForwardContactToNotes = + testChat2 aliceProfile bobProfile $ + \alice bob -> do + createCCNoteFolder alice + connectUsers alice bob + + alice #> "@bob hi" + bob <# "alice> hi" + bob #> "@alice hey" + alice <# "bob> hey" + + alice `send` "* <- @bob hi" + alice <# "* <- you @bob" + alice <## " hi" + + alice `send` "* <- @bob hey" + alice <# "* <- @bob" + alice <## " hey" + +testForwardGroupToContact :: HasCallStack => FilePath -> IO () +testForwardGroupToContact = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + createGroup2 "team" alice bob + connectUsers alice cath + + alice #> "#team hi" + bob <# "#team alice> hi" + bob #> "#team hey" + alice <# "#team bob> hey" + + alice `send` "@cath <- #team hi" + alice <# "@cath <- you #team" + alice <## " hi" + cath <# "alice> -> forwarded" + cath <## " hi" + + alice `send` "@cath <- #team @bob hey" + alice <# "@cath <- #team" + alice <## " hey" + cath <# "alice> -> forwarded" + cath <## " hey" + +testForwardGroupToGroup :: HasCallStack => FilePath -> IO () +testForwardGroupToGroup = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + createGroup2 "team" alice bob + createGroup2 "club" alice cath + + alice #> "#team hi" + bob <# "#team alice> hi" + bob #> "#team hey" + alice <# "#team bob> hey" + + alice `send` "#club <- #team hi" + alice <# "#club <- you #team" + alice <## " hi" + cath <# "#club alice> -> forwarded" + cath <## " hi" + + alice `send` "#club <- #team hey" + alice <# "#club <- #team" + alice <## " hey" + cath <# "#club alice> -> forwarded" + cath <## " hey" + +testForwardGroupToNotes :: HasCallStack => FilePath -> IO () +testForwardGroupToNotes = + testChat2 aliceProfile bobProfile $ + \alice bob -> do + createCCNoteFolder alice + createGroup2 "team" alice bob + + alice #> "#team hi" + bob <# "#team alice> hi" + bob #> "#team hey" + alice <# "#team bob> hey" + + alice `send` "* <- #team hi" + alice <# "* <- you #team" + alice <## " hi" + + alice `send` "* <- #team hey" + alice <# "* <- #team" + alice <## " hey" + +testForwardNotesToContact :: HasCallStack => FilePath -> IO () +testForwardNotesToContact = + testChat2 aliceProfile cathProfile $ + \alice cath -> do + createCCNoteFolder alice + connectUsers alice cath + + alice /* "hi" + + alice `send` "@cath <- * hi" + alice <# "@cath hi" + cath <# "alice> hi" + +testForwardNotesToGroup :: HasCallStack => FilePath -> IO () +testForwardNotesToGroup = + testChat2 aliceProfile cathProfile $ + \alice cath -> do + createCCNoteFolder alice + createGroup2 "team" alice cath + + alice /* "hi" + + alice `send` "#team <- * hi" + alice <# "#team hi" + cath <# "#team alice> hi" + +testForwardNotesToNotes :: HasCallStack => FilePath -> IO () +testForwardNotesToNotes tmp = + withNewTestChat tmp "alice" aliceProfile $ \alice -> do + createCCNoteFolder alice + + alice /* "hi" + + alice `send` "* <- * hi" + alice <# "* hi" + + alice ##> "/tail * 2" + alice <# "* hi" + alice <# "* hi" + +testForwardPreserveInfo :: HasCallStack => FilePath -> IO () +testForwardPreserveInfo = + testChat4 aliceProfile bobProfile cathProfile danProfile $ + \alice bob cath dan -> do + createCCNoteFolder alice + connectUsers alice bob + connectUsers alice cath + createGroup2 "team" alice dan + + bob #> "@alice hey" + alice <# "bob> hey" + + alice `send` "* <- @bob hey" + alice <# "* <- @bob" + alice <## " hey" + + alice `send` "@cath <- * hey" + alice <# "@cath <- @bob" + alice <## " hey" + cath <# "alice> -> forwarded" + cath <## " hey" + + alice `send` "#team <- @cath hey" + alice <# "#team <- @bob" + alice <## " hey" + dan <# "#team alice> -> forwarded" + dan <## " hey" + +testForwardQuotedMsg :: HasCallStack => FilePath -> IO () +testForwardQuotedMsg = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + connectUsers alice bob + connectUsers alice cath + + alice #> "@bob hi" + bob <# "alice> hi" + bob `send` "> @alice (hi) hey" + bob <# "@alice > hi" + bob <## " hey" + alice <# "bob> > hi" + alice <## " hey" + + alice `send` "@cath <- @bob hey" + alice <# "@cath <- @bob" + alice <## " hey" + cath <# "alice> -> forwarded" + cath <## " hey" + + -- read chat + alice ##> "/tail @cath 1" + alice <# "@cath <- @bob" + alice <## " hey" + + cath ##> "/tail @alice 1" + cath <# "alice> -> forwarded" + cath <## " hey" + +testForwardEditProhibited :: HasCallStack => FilePath -> IO () +testForwardEditProhibited = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + connectUsers alice bob + connectUsers alice cath + + bob #> "@alice hey" + alice <# "bob> hey" + + alice `send` "@cath <- @bob hey" + alice <# "@cath <- @bob" + alice <## " hey" + cath <# "alice> -> forwarded" + cath <## " hey" + + msgId <- lastItemId alice + alice ##> ("/_update item @3 " <> msgId <> " text hey edited") + alice <## "cannot update this item" + +testForwardFileNoFilesFolder :: HasCallStack => FilePath -> IO () +testForwardFileNoFilesFolder = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> withXFTPServer $ do + connectUsers alice bob + connectUsers bob cath + + -- send original file + alice ##> "/_send @2 json {\"filePath\": \"./tests/fixtures/test.pdf\", \"msgContent\": {\"type\": \"text\", \"text\": \"hi\"}}" + alice <# "@bob hi" + alice <# "/f @bob ./tests/fixtures/test.pdf" + alice <## "use /fc 1 to cancel sending" + bob <# "alice> hi" + bob <# "alice> sends file test.pdf (266.0 KiB / 272376 bytes)" + bob <## "use /fr 1 [/ | ] to receive it" + + bob ##> "/fr 1 ./tests/tmp" + concurrentlyN_ + [ alice <## "completed uploading file 1 (test.pdf) for bob", + bob + <### [ "saving file 1 from alice to ./tests/tmp/test.pdf", + "started receiving file 1 (test.pdf) from alice" + ] + ] + bob <## "completed receiving file 1 (test.pdf) from alice" + + src <- B.readFile "./tests/fixtures/test.pdf" + dest <- B.readFile "./tests/tmp/test.pdf" + dest `shouldBe` src + + -- forward file + bob `send` "@cath <- @alice hi" + bob <# "@cath <- @alice" + bob <## " hi" + bob <# "/f @cath ./tests/tmp/test.pdf" + bob <## "use /fc 2 to cancel sending" + cath <# "bob> -> forwarded" + cath <## " hi" + cath <# "bob> sends file test.pdf (266.0 KiB / 272376 bytes)" + cath <## "use /fr 1 [/ | ] to receive it" + + cath ##> "/fr 1 ./tests/tmp" + concurrentlyN_ + [ bob <## "completed uploading file 2 (test.pdf) for cath", + cath + <### [ "saving file 1 from bob to ./tests/tmp/test_1.pdf", + "started receiving file 1 (test.pdf) from bob" + ] + ] + cath <## "completed receiving file 1 (test.pdf) from bob" + + dest2 <- B.readFile "./tests/tmp/test_1.pdf" + dest2 `shouldBe` src + +testForwardFileContactToContact :: HasCallStack => FilePath -> IO () +testForwardFileContactToContact = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> withXFTPServer $ do + setRelativePaths alice "./tests/fixtures" "./tests/tmp/alice_xftp" + setRelativePaths bob "./tests/tmp/bob_files" "./tests/tmp/bob_xftp" + setRelativePaths cath "./tests/tmp/cath_files" "./tests/tmp/cath_xftp" + connectUsers alice bob + connectUsers bob cath + + -- send original file + alice ##> "/_send @2 json {\"filePath\": \"test.pdf\", \"msgContent\": {\"type\": \"text\", \"text\": \"hi\"}}" + alice <# "@bob hi" + alice <# "/f @bob test.pdf" + alice <## "use /fc 1 to cancel sending" + bob <# "alice> hi" + bob <# "alice> sends file test.pdf (266.0 KiB / 272376 bytes)" + bob <## "use /fr 1 [/ | ] to receive it" + + bob ##> "/fr 1" + concurrentlyN_ + [ alice <## "completed uploading file 1 (test.pdf) for bob", + bob + <### [ "saving file 1 from alice to test.pdf", + "started receiving file 1 (test.pdf) from alice" + ] + ] + bob <## "completed receiving file 1 (test.pdf) from alice" + + src <- B.readFile "./tests/fixtures/test.pdf" + dest <- B.readFile "./tests/tmp/bob_files/test.pdf" + dest `shouldBe` src + + -- forward file + bob `send` "@cath <- @alice hi" + bob <# "@cath <- @alice" + bob <## " hi" + bob <# "/f @cath test_1.pdf" + bob <## "use /fc 2 to cancel sending" + cath <# "bob> -> forwarded" + cath <## " hi" + cath <# "bob> sends file test_1.pdf (266.0 KiB / 272376 bytes)" + cath <## "use /fr 1 [/ | ] to receive it" + + cath ##> "/fr 1" + concurrentlyN_ + [ bob <## "completed uploading file 2 (test_1.pdf) for cath", + cath + <### [ "saving file 1 from bob to test_1.pdf", + "started receiving file 1 (test_1.pdf) from bob" + ] + ] + cath <## "completed receiving file 1 (test_1.pdf) from bob" + + src2 <- B.readFile "./tests/tmp/bob_files/test_1.pdf" + src2 `shouldBe` dest + dest2 <- B.readFile "./tests/tmp/cath_files/test_1.pdf" + dest2 `shouldBe` src2 + + -- deleting original file doesn't delete forwarded file + checkActionDeletesFile "./tests/tmp/bob_files/test.pdf" $ do + bob ##> "/clear alice" + bob <## "alice: all messages are removed locally ONLY" + fwdFileExists <- doesFileExist "./tests/tmp/bob_files/test_1.pdf" + fwdFileExists `shouldBe` True + +testForwardFileGroupToNotes :: HasCallStack => FilePath -> IO () +testForwardFileGroupToNotes = + testChat2 aliceProfile cathProfile $ + \alice cath -> withXFTPServer $ do + setRelativePaths alice "./tests/fixtures" "./tests/tmp/alice_xftp" + setRelativePaths cath "./tests/tmp/cath_files" "./tests/tmp/cath_xftp" + createGroup2 "team" alice cath + createCCNoteFolder cath + + -- send original file + alice ##> "/_send #1 json {\"filePath\": \"test.pdf\", \"msgContent\": {\"type\": \"text\", \"text\": \"hi\"}}" + alice <# "#team hi" + alice <# "/f #team test.pdf" + alice <## "use /fc 1 to cancel sending" + cath <# "#team alice> hi" + cath <# "#team alice> sends file test.pdf (266.0 KiB / 272376 bytes)" + cath <## "use /fr 1 [/ | ] to receive it" + + cath ##> "/fr 1" + concurrentlyN_ + [ alice <## "completed uploading file 1 (test.pdf) for #team", + cath + <### [ "saving file 1 from alice to test.pdf", + "started receiving file 1 (test.pdf) from alice" + ] + ] + cath <## "completed receiving file 1 (test.pdf) from alice" + + src <- B.readFile "./tests/fixtures/test.pdf" + dest <- B.readFile "./tests/tmp/cath_files/test.pdf" + dest `shouldBe` src + + -- forward file + cath `send` "* <- #team hi" + cath <# "* <- #team" + cath <## " hi" + cath <# "* file 2 (test_1.pdf)" + + dest2 <- B.readFile "./tests/tmp/cath_files/test_1.pdf" + dest2 `shouldBe` dest + + -- deleting original file doesn't delete forwarded file + checkActionDeletesFile "./tests/tmp/cath_files/test.pdf" $ do + cath ##> "/clear #team" + cath <## "#team: all messages are removed locally ONLY" + fwdFileExists <- doesFileExist "./tests/tmp/cath_files/test_1.pdf" + fwdFileExists `shouldBe` True + +testForwardFileNotesToGroup :: HasCallStack => FilePath -> IO () +testForwardFileNotesToGroup = + testChat2 aliceProfile cathProfile $ + \alice cath -> withXFTPServer $ do + setRelativePaths alice "./tests/tmp/alice_files" "./tests/tmp/alice_xftp" + setRelativePaths cath "./tests/tmp/cath_files" "./tests/tmp/cath_xftp" + copyFile "./tests/fixtures/test.pdf" "./tests/tmp/alice_files/test.pdf" + createCCNoteFolder alice + createGroup2 "team" alice cath + + -- create original file + alice ##> "/_create *1 json {\"filePath\": \"test.pdf\", \"msgContent\": {\"type\": \"text\", \"text\": \"hi\"}}" + alice <# "* hi" + alice <# "* file 1 (test.pdf)" + + -- forward file + alice `send` "#team <- * hi" + alice <# "#team hi" + alice <# "/f #team test_1.pdf" + alice <## "use /fc 2 to cancel sending" + cath <# "#team alice> hi" + cath <# "#team alice> sends file test_1.pdf (266.0 KiB / 272376 bytes)" + cath <## "use /fr 1 [/ | ] to receive it" + + cath ##> "/fr 1" + concurrentlyN_ + [ alice <## "completed uploading file 2 (test_1.pdf) for #team", + cath + <### [ "saving file 1 from alice to test_1.pdf", + "started receiving file 1 (test_1.pdf) from alice" + ] + ] + cath <## "completed receiving file 1 (test_1.pdf) from alice" + + src <- B.readFile "./tests/tmp/alice_files/test.pdf" + src2 <- B.readFile "./tests/tmp/alice_files/test_1.pdf" + src2 `shouldBe` src + dest2 <- B.readFile "./tests/tmp/cath_files/test_1.pdf" + dest2 `shouldBe` src2 + + -- deleting original file doesn't delete forwarded file + checkActionDeletesFile "./tests/tmp/alice_files/test.pdf" $ do + alice ##> "/clear *" + alice <## "notes: all messages are removed" + fwdFileExists <- doesFileExist "./tests/tmp/alice_files/test_1.pdf" + fwdFileExists `shouldBe` True diff --git a/tests/ChatTests/Local.hs b/tests/ChatTests/Local.hs index 40ebe51b83..5562d517ac 100644 --- a/tests/ChatTests/Local.hs +++ b/tests/ChatTests/Local.hs @@ -150,6 +150,7 @@ testFiles tmp = withNewTestChat tmp "alice" aliceProfile $ \alice -> do doesFileExist stored `shouldReturn` True alice ##> "/clear *" + alice <## "notes: all messages are removed" alice ##> "/fs 1" alice <## "file 1 not found" alice ##> "/tail" @@ -180,6 +181,7 @@ testOtherFiles = bob ##> "/tail *" bob <# "* test" bob ##> "/clear *" + bob <## "notes: all messages are removed" bob ##> "/tail *" bob ##> "/fs 1" bob <## "receiving file 1 (test.jpg) complete, path: test.jpg" diff --git a/tests/ChatTests/Utils.hs b/tests/ChatTests/Utils.hs index 98227fcd0c..aa6579efee 100644 --- a/tests/ChatTests/Utils.hs +++ b/tests/ChatTests/Utils.hs @@ -723,3 +723,12 @@ linkAnotherSchema link xftpCLI :: [String] -> IO [String] xftpCLI params = lines <$> capture_ (withArgs params xftpClientCLI) + +setRelativePaths :: HasCallStack => TestCC -> String -> String -> IO () +setRelativePaths cc filesFolder tempFolder = do + cc ##> "/_stop" + cc <## "chat stopped" + cc #$> ("/_files_folder " <> filesFolder, id, "ok") + cc #$> ("/_temp_folder " <> tempFolder, id, "ok") + cc ##> "/_start" + cc <## "chat started" From 72611084d3a4f3459bd672f6d65b071f2647315e Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 9 Apr 2024 17:31:52 +0100 Subject: [PATCH 008/147] core: debug events (#4006) --- src/Simplex/Chat.hs | 2 ++ src/Simplex/Chat/Controller.hs | 1 + 2 files changed, 3 insertions(+) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 41f8828b26..a0f8d335a4 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -2151,6 +2151,7 @@ processChatCommand' vr = \case CLGroup gId -> "Group " <> show gId CLUserContact ucId -> "UserContact " <> show ucId CLFile fId -> "File " <> show fId + DebugEvent event -> toView event >> ok_ GetAgentWorkers -> lift $ CRAgentWorkersSummary <$> withAgent' getAgentWorkersSummary GetAgentWorkersDetails -> lift $ CRAgentWorkersDetails <$> withAgent' getAgentWorkersDetails GetAgentStats -> lift $ CRAgentStats . map stat <$> withAgent' getAgentStats @@ -7225,6 +7226,7 @@ chatCommandP = ("/quit" <|> "/q" <|> "/exit") $> QuitChat, ("/version" <|> "/v") $> ShowVersion, "/debug locks" $> DebugLocks, + "/debug event " *> (DebugEvent <$> jsonP), "/get stats" $> GetAgentStats, "/reset stats" $> ResetAgentStats, "/get subs" $> GetAgentSubs, diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 5295541697..51b652d6d2 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -492,6 +492,7 @@ data ChatCommand | QuitChat | ShowVersion | DebugLocks + | DebugEvent ChatResponse | GetAgentStats | ResetAgentStats | GetAgentSubs From 1fa79a2654fca724ae799672422ba19330c312da Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 9 Apr 2024 18:18:11 +0100 Subject: [PATCH 009/147] android, desktop: fix incorrect event type for critical/internal error alerts --- .../commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 3811bca170..38619cfef2 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 @@ -2119,7 +2119,7 @@ object ChatController { if (active(r.user)) { chatModel.updateContact(rhId, r.contact) } - is CR.ChatCmdError -> when { + is CR.ChatRespError -> when { r.chatError is ChatError.ChatErrorAgent && r.chatError.agentError is AgentErrorType.CRITICAL -> { chatModel.processedCriticalError.newError(r.chatError.agentError, r.chatError.agentError.offerRestart) } From 005d99ad502bf683be8eedd09de1c7c8fc0f61b9 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 9 Apr 2024 21:45:48 +0100 Subject: [PATCH 010/147] docs: trasparency reports (#4007) --- docs/TRANSPARENCY.md | 29 ++++++++++++++++++++++++++++ website/langs/en.json | 1 + website/src/_data/docs_dropdown.json | 4 ++++ website/src/_data/docs_sidebar.json | 3 ++- 4 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 docs/TRANSPARENCY.md diff --git a/docs/TRANSPARENCY.md b/docs/TRANSPARENCY.md new file mode 100644 index 0000000000..55808c83c8 --- /dev/null +++ b/docs/TRANSPARENCY.md @@ -0,0 +1,29 @@ +--- +title: Transparency Reports +permalink: /transparency/index.html +revision: 09.04.2024 +--- + +# Transparency Reports + +**Updated**: Apr 9, 2024 + +SimpleX Chat Ltd. is a company registered in the UK – it develops communication software enabling users to operate and communicate via SimpleX network, without user profile identifiers of any kind, and without having their data hosted by any network infrastructure operators. + +This page will include any and all reports on requests for user data. + +*To date, we received none*. + +Our objective is to consistently ensure that no user data and absolute minimum of the metadata required for the network to function is available for disclosure by any infrastructure operators, under any circumstances. + +**Helpful resources**: +- [Privacy policy](https://github.com/simplex-chat/simplex-chat/blob/stable/PRIVACY.md) +- [Privacy and security: technical details and limitations](https://github.com/simplex-chat/simplex-chat?tab=readme-ov-file#privacy-and-security-technical-details-and-limitations) +- Whitepaper: + - [Trust in servers](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#trust-in-servers) + - [Encryption Primitives Used](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#encryption-primitives-used) + - [Threat model](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#threat-model) + +Have a more specific question? Reach out to us via [SimpleX Chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion) or via email [chat@simplex.chat](mailto:chat@simplex.chat). + +For any sensitive questions please use SimpleX Chat or encrypted email messages using the key for this address from [keys.openpgp.org](https://keys.openpgp.org/search?q=chat%40simplex.chat) (its fingerprint is `FB44 AF81 A45B DE32 7319 797C 8510 7E35 7D4A 17FC`) and make your key available for a secure reply. diff --git a/website/langs/en.json b/website/langs/en.json index 10db2dd4ed..32db4f3c47 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -235,6 +235,7 @@ "docs-dropdown-7": "Translate SimpleX Chat", "docs-dropdown-8": "SimpleX Directory Service", "docs-dropdown-9": "Downloads", + "docs-dropdown-10": "Transparency", "newer-version-of-eng-msg": "There is a newer version of this page in English.", "click-to-see": "Click to see", "menu": "Menu", diff --git a/website/src/_data/docs_dropdown.json b/website/src/_data/docs_dropdown.json index a8c6e634b2..610be49221 100644 --- a/website/src/_data/docs_dropdown.json +++ b/website/src/_data/docs_dropdown.json @@ -35,6 +35,10 @@ { "title": "docs-dropdown-9", "url": "/downloads/" + }, + { + "title": "docs-dropdown-10", + "url": "/transparency/" } ] } \ No newline at end of file diff --git a/website/src/_data/docs_sidebar.json b/website/src/_data/docs_sidebar.json index 857684661b..a2b15de7e4 100644 --- a/website/src/_data/docs_sidebar.json +++ b/website/src/_data/docs_sidebar.json @@ -26,7 +26,8 @@ "TRANSLATIONS.md", "WEBRTC.md", "XFTP-SERVER.md", - "DOWNLOADS.md" + "DOWNLOADS.md", + "TRANSPARENCY.md" ] }, { From 4be6c69633bf017fee1acaac29473cb84d5bfa06 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 10 Apr 2024 08:49:06 +0100 Subject: [PATCH 011/147] core: update simplexmq --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat/Remote/RevHTTP.hs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cabal.project b/cabal.project index 4e8cfd22ee..60ef47f4ac 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 791368c7beb3996ab4a10f25dbf8cad1e289b413 + tag: b994fd9f0fe8e5e0df1d667ed2a687de5154e76a source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index a671f28751..4ad78ed06d 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."791368c7beb3996ab4a10f25dbf8cad1e289b413" = "0wbxk69lv6h17b5rdqskxwhc1wfvn1zi8q4a4w57qfzkzyaxkymk"; + "https://github.com/simplex-chat/simplexmq.git"."b994fd9f0fe8e5e0df1d667ed2a687de5154e76a" = "0lbvl8xnmsp8x0lfa7nn6im3xdv3969srkfcl8djklpzclrh7yvx"; "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/Remote/RevHTTP.hs b/src/Simplex/Chat/Remote/RevHTTP.hs index 44f3e50b0d..4df5bcac2a 100644 --- a/src/Simplex/Chat/Remote/RevHTTP.hs +++ b/src/Simplex/Chat/Remote/RevHTTP.hs @@ -21,9 +21,9 @@ attachRevHTTP2Client disconnected = attachHTTP2Client config ANY_ADDR_V4 "0" dis attachHTTP2Server :: TLS -> (HTTP2Request -> IO ()) -> IO () attachHTTP2Server tls processRequest = - runHTTP2ServerWith defaultHTTP2BufferSize ($ tls) $ \sessionId r sendResponse -> do + runHTTP2ServerWith defaultHTTP2BufferSize ($ tls) $ \sessionId sessionALPN r sendResponse -> do reqBody <- getHTTP2Body r doNotPrefetchHead - processRequest HTTP2Request {sessionId, request = r, reqBody, sendResponse} + processRequest HTTP2Request {sessionId, sessionALPN, request = r, reqBody, sendResponse} -- | Suppress storing initial chunk in bodyHead, forcing clients and servers to stream chunks doNotPrefetchHead :: Int From b3a4ea8e578715cf777f619e12554f949e305634 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 10 Apr 2024 23:32:55 +0100 Subject: [PATCH 012/147] core: api to update user network state (#3998) * core: api to update user network state * simplexmq * update simplexmq * simplexmq --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat.hs | 2 ++ src/Simplex/Chat/Controller.hs | 3 ++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/cabal.project b/cabal.project index 60ef47f4ac..3b04d5dd99 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: b994fd9f0fe8e5e0df1d667ed2a687de5154e76a + tag: 8fa9ed63171df4a4e7a76ee8b8e7c1c4465c16bb source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 4ad78ed06d..c0a864b1a1 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."b994fd9f0fe8e5e0df1d667ed2a687de5154e76a" = "0lbvl8xnmsp8x0lfa7nn6im3xdv3969srkfcl8djklpzclrh7yvx"; + "https://github.com/simplex-chat/simplexmq.git"."8fa9ed63171df4a4e7a76ee8b8e7c1c4465c16bb" = "0bj6vzcm7w6q47fqa4jmx9781j293d9ib83flz6w88pc7599pd0h"; "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.hs b/src/Simplex/Chat.hs index a0f8d335a4..ffb04dc9c3 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -1277,6 +1277,7 @@ processChatCommand' vr = \case APISetNetworkConfig cfg -> withUser' $ \_ -> lift (withAgent' (`setNetworkConfig` cfg)) >> ok_ APIGetNetworkConfig -> withUser' $ \_ -> lift $ CRNetworkConfig <$> withAgent' getNetworkConfig + APISetNetworkInfo info -> lift (withAgent' (`setUserNetworkInfo` info)) >> ok_ ReconnectAllServers -> withUser' $ \_ -> lift (withAgent' reconnectAllServers) >> ok_ APISetChatSettings (ChatRef cType chatId) chatSettings -> withUser $ \user -> case cType of CTDirect -> do @@ -7046,6 +7047,7 @@ chatCommandP = "/ttl " *> (SetChatItemTTL <$> ciTTL), "/_ttl " *> (APIGetChatItemTTL <$> A.decimal), "/ttl" $> GetChatItemTTL, + "/_network info " *> (APISetNetworkInfo <$> jsonP), "/_network " *> (APISetNetworkConfig <$> jsonP), ("/network " <|> "/net ") *> (APISetNetworkConfig <$> netCfgP), ("/network" <|> "/net") $> APIGetNetworkConfig, diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 51b652d6d2..dffaa72ab3 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -66,7 +66,7 @@ import Simplex.Chat.Types.Shared import Simplex.Chat.Util (liftIOEither) import Simplex.FileTransfer.Description (FileDescriptionURI) import Simplex.Messaging.Agent (AgentClient, SubscriptionsInfo) -import Simplex.Messaging.Agent.Client (AgentLocks, AgentWorkersDetails (..), AgentWorkersSummary (..), ProtocolTestFailure) +import Simplex.Messaging.Agent.Client (AgentLocks, AgentWorkersDetails (..), AgentWorkersSummary (..), ProtocolTestFailure, UserNetworkInfo) import Simplex.Messaging.Agent.Env.SQLite (AgentConfig, NetworkConfig) import Simplex.Messaging.Agent.Lock import Simplex.Messaging.Agent.Protocol @@ -347,6 +347,7 @@ data ChatCommand | GetChatItemTTL | APISetNetworkConfig NetworkConfig | APIGetNetworkConfig + | APISetNetworkInfo UserNetworkInfo | ReconnectAllServers | APISetChatSettings ChatRef ChatSettings | APISetMemberSettings GroupId GroupMemberId GroupMemberSettings From 8a3710482b3a8270c9a3a48156ad663daca2d20d Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 11 Apr 2024 10:47:51 +0100 Subject: [PATCH 013/147] core: update simplexmq --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cabal.project b/cabal.project index 3b04d5dd99..f60b834a84 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 8fa9ed63171df4a4e7a76ee8b8e7c1c4465c16bb + tag: 3b1dd6dff924d915274963f27e053c95741caf07 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index c0a864b1a1..54e52c723c 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."8fa9ed63171df4a4e7a76ee8b8e7c1c4465c16bb" = "0bj6vzcm7w6q47fqa4jmx9781j293d9ib83flz6w88pc7599pd0h"; + "https://github.com/simplex-chat/simplexmq.git"."3b1dd6dff924d915274963f27e053c95741caf07" = "1b61n33nbbx7bqgwscvv0a8yy628b4y397s7ydyg22hdw3dg009q"; "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"; From a9c0f356b458038e40524d02b216b7e047d5dfdc Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 11 Apr 2024 11:25:06 +0100 Subject: [PATCH 014/147] ios: update core library --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 6443c21b9e..6cd181940a 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -94,6 +94,11 @@ 5CB346E52868AA7F001FD2EF /* SuspendChat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB346E42868AA7F001FD2EF /* SuspendChat.swift */; }; 5CB346E72868D76D001FD2EF /* NotificationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB346E62868D76D001FD2EF /* NotificationsView.swift */; }; 5CB346E92869E8BA001FD2EF /* PushEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB346E82869E8BA001FD2EF /* PushEnvironment.swift */; }; + 5CB39FD52BC7F13A0000FE16 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD02BC7F13A0000FE16 /* libgmp.a */; }; + 5CB39FD62BC7F13A0000FE16 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD12BC7F13A0000FE16 /* libffi.a */; }; + 5CB39FD72BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD22BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a */; }; + 5CB39FD82BC7F13A0000FE16 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD32BC7F13A0000FE16 /* libgmpxx.a */; }; + 5CB39FD92BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD42BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a */; }; 5CB634A829E437960066AD6B /* PasscodeEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB634A729E437960066AD6B /* PasscodeEntry.swift */; }; 5CB634AD29E46CF70066AD6B /* LocalAuthView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB634AC29E46CF70066AD6B /* LocalAuthView.swift */; }; 5CB634AF29E4BB7D0066AD6B /* SetAppPasscodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB634AE29E4BB7D0066AD6B /* SetAppPasscodeView.swift */; }; @@ -111,11 +116,6 @@ 5CC2C0FC2809BF11000C35E3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FA2809BF11000C35E3 /* Localizable.strings */; }; 5CC2C0FF2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FD2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings */; }; 5CC868F329EB540C0017BBFD /* CIRcvDecryptionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */; }; - 5CC932F52BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC932F02BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto-ghc9.6.3.a */; }; - 5CC932F62BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC932F12BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto.a */; }; - 5CC932F72BBDD9FA008A1EB6 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC932F22BBDD9F9008A1EB6 /* libgmpxx.a */; }; - 5CC932F82BBDD9FA008A1EB6 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC932F32BBDD9F9008A1EB6 /* libgmp.a */; }; - 5CC932F92BBDD9FA008A1EB6 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC932F42BBDD9F9008A1EB6 /* libffi.a */; }; 5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */; }; 5CD67B8F2B0E858A00C510B1 /* hs_init.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD67B8D2B0E858A00C510B1 /* hs_init.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5CD67B902B0E858A00C510B1 /* hs_init.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CD67B8E2B0E858A00C510B1 /* hs_init.c */; }; @@ -382,6 +382,11 @@ 5CB346E42868AA7F001FD2EF /* SuspendChat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuspendChat.swift; sourceTree = ""; }; 5CB346E62868D76D001FD2EF /* NotificationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsView.swift; sourceTree = ""; }; 5CB346E82869E8BA001FD2EF /* PushEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushEnvironment.swift; sourceTree = ""; }; + 5CB39FD02BC7F13A0000FE16 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5CB39FD12BC7F13A0000FE16 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5CB39FD22BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a"; sourceTree = ""; }; + 5CB39FD32BC7F13A0000FE16 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5CB39FD42BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a"; sourceTree = ""; }; 5CB634A729E437960066AD6B /* PasscodeEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntry.swift; sourceTree = ""; }; 5CB634AC29E46CF70066AD6B /* LocalAuthView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAuthView.swift; sourceTree = ""; }; 5CB634AE29E4BB7D0066AD6B /* SetAppPasscodeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetAppPasscodeView.swift; sourceTree = ""; }; @@ -402,11 +407,6 @@ 5CC2C0FB2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 5CC2C0FE2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIRcvDecryptionError.swift; sourceTree = ""; }; - 5CC932F02BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto-ghc9.6.3.a"; sourceTree = ""; }; - 5CC932F12BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto.a"; sourceTree = ""; }; - 5CC932F22BBDD9F9008A1EB6 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5CC932F32BBDD9F9008A1EB6 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5CC932F42BBDD9F9008A1EB6 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavStackCompat.swift; sourceTree = ""; }; 5CD67B8D2B0E858A00C510B1 /* hs_init.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hs_init.h; sourceTree = ""; }; 5CD67B8E2B0E858A00C510B1 /* hs_init.c */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; path = hs_init.c; sourceTree = ""; }; @@ -521,13 +521,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5CB39FD82BC7F13A0000FE16 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5CC932F72BBDD9FA008A1EB6 /* libgmpxx.a in Frameworks */, - 5CC932F62BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto.a in Frameworks */, - 5CC932F52BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto-ghc9.6.3.a in Frameworks */, - 5CC932F92BBDD9FA008A1EB6 /* libffi.a in Frameworks */, - 5CC932F82BBDD9FA008A1EB6 /* libgmp.a in Frameworks */, + 5CB39FD72BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a in Frameworks */, + 5CB39FD52BC7F13A0000FE16 /* libgmp.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, + 5CB39FD62BC7F13A0000FE16 /* libffi.a in Frameworks */, + 5CB39FD92BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -590,11 +590,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5CC932F42BBDD9F9008A1EB6 /* libffi.a */, - 5CC932F32BBDD9F9008A1EB6 /* libgmp.a */, - 5CC932F22BBDD9F9008A1EB6 /* libgmpxx.a */, - 5CC932F02BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto-ghc9.6.3.a */, - 5CC932F12BBDD9F9008A1EB6 /* libHSsimplex-chat-5.6.1.1-KSjuZv7tE7cHRWd28F1Zto.a */, + 5CB39FD12BC7F13A0000FE16 /* libffi.a */, + 5CB39FD02BC7F13A0000FE16 /* libgmp.a */, + 5CB39FD32BC7F13A0000FE16 /* libgmpxx.a */, + 5CB39FD42BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a */, + 5CB39FD22BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a */, ); path = Libraries; sourceTree = ""; From d8b52ee0d355a5762bce182a8176885550769d7a Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 11 Apr 2024 17:31:30 +0700 Subject: [PATCH 015/147] ios: network observer (#3996) * ios: network observer * update * remove metered * update tcpTimeoutPerKb * network connection in settings --------- Co-authored-by: Evgeny Poberezkin --- apps/ios/Shared/Model/ChatModel.swift | 1 + apps/ios/Shared/Model/NetworkObserver.swift | 73 +++++++++++++++++++ apps/ios/Shared/Model/SimpleXAPI.swift | 7 ++ apps/ios/Shared/Views/Call/WebRTCClient.swift | 2 +- .../Views/Chat/ChatItem/CIVideoView.swift | 2 +- .../AdvancedNetworkSettings.swift | 2 +- .../UserSettings/NetworkAndServers.swift | 9 +++ apps/ios/SimpleX.xcodeproj/project.pbxproj | 4 + apps/ios/SimpleXChat/APITypes.swift | 35 ++++++++- .../chat/simplex/common/model/SimpleXAPI.kt | 4 +- .../usersettings/AdvancedNetworkSettings.kt | 2 +- 11 files changed, 133 insertions(+), 8 deletions(-) create mode 100644 apps/ios/Shared/Model/NetworkObserver.swift diff --git a/apps/ios/Shared/Model/ChatModel.swift b/apps/ios/Shared/Model/ChatModel.swift index 462699e407..90a9406627 100644 --- a/apps/ios/Shared/Model/ChatModel.swift +++ b/apps/ios/Shared/Model/ChatModel.swift @@ -103,6 +103,7 @@ final class ChatModel: ObservableObject { // tracks keyboard height via subscription in AppDelegate @Published var keyboardHeight: CGFloat = 0 @Published var pasteboardHasStrings: Bool = UIPasteboard.general.hasStrings + @Published var networkInfo = UserNetworkInfo(networkType: .other, online: true) var messageDelivery: Dictionary Void> = [:] diff --git a/apps/ios/Shared/Model/NetworkObserver.swift b/apps/ios/Shared/Model/NetworkObserver.swift new file mode 100644 index 0000000000..84c35afa07 --- /dev/null +++ b/apps/ios/Shared/Model/NetworkObserver.swift @@ -0,0 +1,73 @@ +// +// NetworkObserver.swift +// SimpleX (iOS) +// +// Created by Avently on 05.04.2024. +// Copyright © 2024 SimpleX Chat. All rights reserved. +// + +import Foundation +import Network +import SimpleXChat + +class NetworkObserver { + static let shared = NetworkObserver() + private let queue: DispatchQueue = DispatchQueue(label: "chat.simplex.app.NetworkObserver") + private var prevInfo: UserNetworkInfo? = nil + private var monitor: NWPathMonitor? + private let monitorLock: DispatchQueue = DispatchQueue(label: "chat.simplex.app.monitorLock") + + func restartMonitor() { + monitorLock.sync { + monitor?.cancel() + let mon = NWPathMonitor() + mon.pathUpdateHandler = { [weak self] path in + self?.networkPathChanged(path: path) + } + mon.start(queue: queue) + monitor = mon + } + } + + private func networkPathChanged(path: NWPath) { + let info = UserNetworkInfo( + networkType: networkTypeFromPath(path), + online: path.status == .satisfied + ) + if (prevInfo != info) { + prevInfo = info + setNetworkInfo(info) + } + } + + private func networkTypeFromPath(_ path: NWPath) -> UserNetworkType { + if path.usesInterfaceType(.wiredEthernet) { + .ethernet + } else if path.usesInterfaceType(.wifi) { + .wifi + } else if path.usesInterfaceType(.cellular) { + .cellular + } else if path.usesInterfaceType(.other) { + .other + } else { + .none + } + } + + private static var networkObserver: NetworkObserver? = nil + + private func setNetworkInfo(_ info: UserNetworkInfo) { + logger.debug("setNetworkInfo Network changed: \(String(describing: info))") + DispatchQueue.main.sync { + ChatModel.shared.networkInfo = info + } + if !hasChatCtrl() { return } + self.monitorLock.sync { + do { + try apiSetNetworkInfo(info) + } catch let err { + logger.error("setNetworkInfo error: \(responseError(err))") + } + } + } +} diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index a099069f77..94a424d319 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -534,6 +534,12 @@ func setNetworkConfig(_ cfg: NetCfg, ctrl: chat_ctrl? = nil) throws { throw r } +func apiSetNetworkInfo(_ networkInfo: UserNetworkInfo) throws { + let r = chatSendCmdSync(.apiSetNetworkInfo(networkInfo: networkInfo)) + if case .cmdOk = r { return } + throw r +} + func reconnectAllServers() async throws { try await sendCommandOkResp(.reconnectAllServers) } @@ -1297,6 +1303,7 @@ func initializeChat(start: Bool, confirmStart: Bool = false, dbKey: String? = ni defer { m.ctrlInitInProgress = false } (m.chatDbEncrypted, m.chatDbStatus) = chatMigrateInit(dbKey, confirmMigrations: confirmMigrations) if m.chatDbStatus != .ok { return } + NetworkObserver.shared.restartMonitor() // If we migrated successfully means previous re-encryption process on database level finished successfully too if encryptionStartedDefault.get() { encryptionStartedDefault.set(false) diff --git a/apps/ios/Shared/Views/Call/WebRTCClient.swift b/apps/ios/Shared/Views/Call/WebRTCClient.swift index 1806984d64..834af4a2c1 100644 --- a/apps/ios/Shared/Views/Call/WebRTCClient.swift +++ b/apps/ios/Shared/Views/Call/WebRTCClient.swift @@ -49,7 +49,7 @@ final class WebRTCClient: NSObject, RTCVideoViewDelegate, RTCFrameEncryptorDeleg } private let rtcAudioSession = RTCAudioSession.sharedInstance() - private let audioQueue = DispatchQueue(label: "audio") + private let audioQueue = DispatchQueue(label: "chat.simplex.app.audio") private var sendCallResponse: (WVAPIMessage) async -> Void var activeCall: Binding private var localRendererAspectRatio: Binding diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift index a3918e17bc..b4b190a43a 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIVideoView.swift @@ -126,7 +126,7 @@ struct CIVideoView: View { if !decryptionInProgress { Button { decrypt(file: file) { - if let decrypted = urlDecrypted { + if urlDecrypted != nil { videoPlaying = true player?.play() } diff --git a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift index 9da3bac00b..9f03b95321 100644 --- a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift +++ b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift @@ -53,7 +53,7 @@ struct AdvancedNetworkSettings: View { timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 45_000000], label: secondsLabel) timeoutSettingPicker("Protocol timeout", selection: $netCfg.tcpTimeout, values: [5_000000, 7_000000, 10_000000, 15_000000, 20_000000, 30_000000], label: secondsLabel) - timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [15_000, 30_000, 45_000, 60_000, 90_000, 120_000], label: secondsLabel) + timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [2_500, 5_000, 10_000, 15_000, 20_000, 30_000], label: secondsLabel) timeoutSettingPicker("PING interval", selection: $netCfg.smpPingInterval, values: [120_000000, 300_000000, 600_000000, 1200_000000, 2400_000000, 3600_000000], label: secondsLabel) intSettingPicker("PING count", selection: $netCfg.smpPingCount, values: [1, 2, 3, 5, 8], label: "") Toggle("Enable TCP keep-alive", isOn: $enableKeepAlive) diff --git a/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift b/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift index d721cfad50..a6702b1821 100644 --- a/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift +++ b/apps/ios/Shared/Views/UserSettings/NetworkAndServers.swift @@ -24,6 +24,7 @@ private enum NetworkAlert: Identifiable { } struct NetworkAndServers: View { + @EnvironmentObject var m: ChatModel @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false @State private var cfgLoaded = false @State private var currentNetCfg = NetCfg.defaults @@ -82,6 +83,14 @@ struct NetworkAndServers: View { Text("WebRTC ICE servers") } } + + Section("Network connection") { + HStack { + Text(m.networkInfo.networkType.text) + Spacer() + Image(systemName: "circle.fill").foregroundColor(m.networkInfo.online ? .green : .red) + } + } } } .onAppear { diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 6cd181940a..d7ca3e1cb5 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -187,6 +187,7 @@ 8C69FE7D2B8C7D2700267E38 /* AppSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C69FE7C2B8C7D2700267E38 /* AppSettings.swift */; }; 8C7D949A2B88952700B7B9E1 /* MigrateToDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7D94992B88952700B7B9E1 /* MigrateToDevice.swift */; }; 8C7DF3202B7CDB0A00C886D0 /* MigrateFromDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7DF31F2B7CDB0A00C886D0 /* MigrateFromDevice.swift */; }; + 8CC956EE2BC0041000412A11 /* NetworkObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CC956ED2BC0041000412A11 /* NetworkObserver.swift */; }; D7197A1829AE89660055C05A /* WebRTC in Frameworks */ = {isa = PBXBuildFile; productRef = D7197A1729AE89660055C05A /* WebRTC */; }; D72A9088294BD7A70047C86D /* NativeTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72A9087294BD7A70047C86D /* NativeTextEditor.swift */; }; D741547829AF89AF0022400A /* StoreKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D741547729AF89AF0022400A /* StoreKit.framework */; }; @@ -480,6 +481,7 @@ 8C69FE7C2B8C7D2700267E38 /* AppSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSettings.swift; sourceTree = ""; }; 8C7D94992B88952700B7B9E1 /* MigrateToDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateToDevice.swift; sourceTree = ""; }; 8C7DF31F2B7CDB0A00C886D0 /* MigrateFromDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateFromDevice.swift; sourceTree = ""; }; + 8CC956ED2BC0041000412A11 /* NetworkObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkObserver.swift; sourceTree = ""; }; D72A9087294BD7A70047C86D /* NativeTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeTextEditor.swift; sourceTree = ""; }; D741547729AF89AF0022400A /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; D741547929AF90B00022400A /* PushKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = PushKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/System/Library/Frameworks/PushKit.framework; sourceTree = DEVELOPER_DIR; }; @@ -623,6 +625,7 @@ 5CB346E82869E8BA001FD2EF /* PushEnvironment.swift */, 5C93293E2928E0FD0090FFF9 /* AudioRecPlay.swift */, 5CBD2859295711D700EC2CF4 /* ImageUtils.swift */, + 8CC956ED2BC0041000412A11 /* NetworkObserver.swift */, ); path = Model; sourceTree = ""; @@ -1176,6 +1179,7 @@ 5C9A5BDB2871E05400A5B906 /* SetNotificationsMode.swift in Sources */, 5CB0BA8E2827126500B3292C /* OnboardingView.swift in Sources */, 6442E0BE2880182D00CEC0F9 /* GroupChatInfoView.swift in Sources */, + 8CC956EE2BC0041000412A11 /* NetworkObserver.swift in Sources */, 5C2E261227A30FEA00F70299 /* TerminalView.swift in Sources */, 5C9FD96E27A5D6ED0075386C /* SendMessageView.swift in Sources */, 5CA7DFC329302AF000F7FDDE /* AppSheet.swift in Sources */, diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index b18022cfec..c0ff697a1d 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -77,6 +77,7 @@ public enum ChatCommand { case apiGetChatItemTTL(userId: Int64) case apiSetNetworkConfig(networkConfig: NetCfg) case apiGetNetworkConfig + case apiSetNetworkInfo(networkInfo: UserNetworkInfo) case reconnectAllServers case apiSetChatSettings(type: ChatType, id: Int64, chatSettings: ChatSettings) case apiSetMemberSettings(groupId: Int64, groupMemberId: Int64, memberSettings: GroupMemberSettings) @@ -221,6 +222,7 @@ public enum ChatCommand { case let .apiGetChatItemTTL(userId): return "/_ttl \(userId)" case let .apiSetNetworkConfig(networkConfig): return "/_network \(encodeJSON(networkConfig))" case .apiGetNetworkConfig: return "/network" + case let .apiSetNetworkInfo(networkInfo): return "/_network info \(encodeJSON(networkInfo))" case .reconnectAllServers: return "/reconnect" case let .apiSetChatSettings(type, id, chatSettings): return "/_settings \(ref(type, id)) \(encodeJSON(chatSettings))" case let .apiSetMemberSettings(groupId, groupMemberId, memberSettings): return "/_member settings #\(groupId) \(groupMemberId) \(encodeJSON(memberSettings))" @@ -368,6 +370,7 @@ public enum ChatCommand { case .apiGetChatItemTTL: return "apiGetChatItemTTL" case .apiSetNetworkConfig: return "apiSetNetworkConfig" case .apiGetNetworkConfig: return "apiGetNetworkConfig" + case .apiSetNetworkInfo: return "apiSetNetworkInfo" case .reconnectAllServers: return "reconnectAllServers" case .apiSetChatSettings: return "apiSetChatSettings" case .apiSetMemberSettings: return "apiSetMemberSettings" @@ -1261,7 +1264,7 @@ public struct NetCfg: Codable, Equatable { sessionMode: TransportSessionMode.user, tcpConnectTimeout: 20_000_000, tcpTimeout: 15_000_000, - tcpTimeoutPerKb: 45_000, + tcpTimeoutPerKb: 10_000, tcpKeepAlive: KeepAliveOpts.defaults, smpPingInterval: 1200_000_000, smpPingCount: 3, @@ -1273,7 +1276,7 @@ public struct NetCfg: Codable, Equatable { sessionMode: TransportSessionMode.user, tcpConnectTimeout: 30_000_000, tcpTimeout: 20_000_000, - tcpTimeoutPerKb: 60_000, + tcpTimeoutPerKb: 15_000, tcpKeepAlive: KeepAliveOpts.defaults, smpPingInterval: 1200_000_000, smpPingCount: 3, @@ -2086,3 +2089,31 @@ public enum AppSettingsLockScreenCalls: String, Codable { case show case accept } + +public struct UserNetworkInfo: Codable, Equatable { + public let networkType: UserNetworkType + public let online: Bool + + public init(networkType: UserNetworkType, online: Bool) { + self.networkType = networkType + self.online = online + } +} + +public enum UserNetworkType: String, Codable { + case none + case cellular + case wifi + case ethernet + case other + + public var text: LocalizedStringKey { + switch self { + case .none: "No network connection" + case .cellular: "Cellular" + case .wifi: "WiFi" + case .ethernet: "Wired ethernet" + case .other: "Other" + } + } +} 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 38619cfef2..3ce9b68b5e 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 @@ -3035,7 +3035,7 @@ data class NetCfg( sessionMode = TransportSessionMode.User, tcpConnectTimeout = 20_000_000, tcpTimeout = 15_000_000, - tcpTimeoutPerKb = 45_000, + tcpTimeoutPerKb = 10_000, tcpKeepAlive = KeepAliveOpts.defaults, smpPingInterval = 1200_000_000, smpPingCount = 3 @@ -3049,7 +3049,7 @@ data class NetCfg( sessionMode = TransportSessionMode.User, tcpConnectTimeout = 30_000_000, tcpTimeout = 20_000_000, - tcpTimeoutPerKb = 60_000, + tcpTimeoutPerKb = 15_000, tcpKeepAlive = KeepAliveOpts.defaults, smpPingInterval = 1200_000_000, smpPingCount = 3 diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt index a2ea5959c3..c031a0fcb7 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt @@ -167,7 +167,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { // can't be higher than 130ms to avoid overflow on 32bit systems TimeoutSettingRow( stringResource(MR.strings.network_option_protocol_timeout_per_kb), networkTCPTimeoutPerKb, - listOf(15_000, 30_000, 45_000, 60_000, 90_000, 120_000), secondsLabel + listOf(2_500, 5_000, 10_000, 15_000, 20_000, 30_000), secondsLabel ) } SectionItemView { From e560b49d14c363d0ace0a4abf574a0e606c77c78 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:02:41 +0700 Subject: [PATCH 016/147] ios: sound prompts and vibration during calls (#4005) * ios: sound prompts and vibration * awaiting call receipt * update --------- Co-authored-by: Evgeny Poberezkin --- apps/ios/Shared/Model/SimpleXAPI.swift | 5 ++ .../Shared/Views/Call/ActiveCallView.swift | 38 +++++++++++ apps/ios/Shared/Views/Call/SoundPlayer.swift | 61 ++++++++++++++++++ apps/ios/sounds/connecting_call.mp3 | Bin 0 -> 7104 bytes apps/ios/sounds/in_call.mp3 | Bin 0 -> 63425 bytes 5 files changed, 104 insertions(+) create mode 100644 apps/ios/sounds/connecting_call.mp3 create mode 100644 apps/ios/sounds/in_call.mp3 diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 94a424d319..69b660ad3c 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -1469,6 +1469,8 @@ class ChatReceiver { private var receiveMessages = true private var _lastMsgTime = Date.now + var messagesChannel: ((ChatResponse) -> Void)? = nil + static let shared = ChatReceiver() var lastMsgTime: Date { get { _lastMsgTime } } @@ -1486,6 +1488,9 @@ class ChatReceiver { if let msg = await chatRecvMsg() { self._lastMsgTime = .now await processReceivedMsg(msg) + if let messagesChannel { + messagesChannel(msg) + } } _ = try? await Task.sleep(nanoseconds: 7_500_000) } diff --git a/apps/ios/Shared/Views/Call/ActiveCallView.swift b/apps/ios/Shared/Views/Call/ActiveCallView.swift index 9f246f63f3..cffdefaaa2 100644 --- a/apps/ios/Shared/Views/Call/ActiveCallView.swift +++ b/apps/ios/Shared/Views/Call/ActiveCallView.swift @@ -9,6 +9,7 @@ import SwiftUI import WebKit import SimpleXChat +import AVFoundation struct ActiveCallView: View { @EnvironmentObject var m: ChatModel @@ -21,6 +22,7 @@ struct ActiveCallView: View { @Binding var canConnectCall: Bool @State var prevColorScheme: ColorScheme = .dark @State var pipShown = false + @State var wasConnected = false var body: some View { ZStack(alignment: .topLeading) { @@ -69,6 +71,11 @@ struct ActiveCallView: View { Task { await m.callCommand.setClient(nil) } AppDelegate.keepScreenOn(false) client?.endCall() + CallSoundsPlayer.shared.stop() + try? AVAudioSession.sharedInstance().setCategory(.soloAmbient) + if (wasConnected) { + CallSoundsPlayer.shared.vibrate(long: true) + } } .background(m.activeCallViewIsCollapsed ? .clear : .black) // Quite a big delay when opening/closing the view when a scheme changes (globally) this way. It's not needed when CallKit is used since status bar is green with white text on it @@ -103,6 +110,11 @@ struct ActiveCallView: View { call.callState = .invitationSent call.localCapabilities = capabilities } + if call.supportsVideo { + try? AVAudioSession.sharedInstance().setCategory(.playback, options: .defaultToSpeaker) + } + CallSoundsPlayer.shared.startConnectingCallSound() + activeCallWaitDeliveryReceipt() } case let .offer(offer, iceCandidates, capabilities): Task { @@ -126,6 +138,8 @@ struct ActiveCallView: View { } await MainActor.run { call.callState = .negotiated + CallSoundsPlayer.shared.stop() + try? AVAudioSession.sharedInstance().setCategory(.soloAmbient) } } case let .ice(iceCandidates): @@ -144,6 +158,10 @@ struct ActiveCallView: View { : CallController.shared.reportIncomingCall(call: call, connectedAt: nil) call.callState = .connected call.connectedAt = .now + if !wasConnected { + CallSoundsPlayer.shared.vibrate(long: false) + wasConnected = true + } } if state.connectionState == "closed" { closeCallView(client) @@ -161,6 +179,10 @@ struct ActiveCallView: View { call.callState = .connected call.connectionInfo = connectionInfo call.connectedAt = .now + if !wasConnected { + CallSoundsPlayer.shared.vibrate(long: false) + wasConnected = true + } case .ended: closeCallView(client) call.callState = .ended @@ -187,6 +209,22 @@ struct ActiveCallView: View { } } + private func activeCallWaitDeliveryReceipt() { + ChatReceiver.shared.messagesChannel = { msg in + guard let call = ChatModel.shared.activeCall, call.callState == .invitationSent else { + ChatReceiver.shared.messagesChannel = nil + return + } + if case let .chatItemStatusUpdated(_, msg) = msg, + msg.chatInfo.id == call.contact.id, + case .sndCall = msg.chatItem.content, + case .sndRcvd = msg.chatItem.meta.itemStatus { + CallSoundsPlayer.shared.startInCallSound() + ChatReceiver.shared.messagesChannel = nil + } + } + } + private func closeCallView(_ client: WebRTCClient) { if m.activeCall != nil { m.showCallView = false diff --git a/apps/ios/Shared/Views/Call/SoundPlayer.swift b/apps/ios/Shared/Views/Call/SoundPlayer.swift index 17c13ab403..c7803a0cb8 100644 --- a/apps/ios/Shared/Views/Call/SoundPlayer.swift +++ b/apps/ios/Shared/Views/Call/SoundPlayer.swift @@ -8,6 +8,7 @@ import Foundation import AVFoundation +import UIKit class SoundPlayer { static let shared = SoundPlayer() @@ -43,3 +44,63 @@ class SoundPlayer { audioPlayer = nil } } + +class CallSoundsPlayer { + static let shared = CallSoundsPlayer() + private var audioPlayer: AVAudioPlayer? + private var playerTask: Task = Task {} + + private func start(_ soundName: String, delayMs: Double) { + audioPlayer?.stop() + playerTask.cancel() + logger.debug("start \(soundName)") + guard let path = Bundle.main.path(forResource: soundName, ofType: "mp3", inDirectory: "sounds") else { + logger.debug("start: file not found") + return + } + do { + let player = try AVAudioPlayer(contentsOf: URL(fileURLWithPath: path)) + if player.prepareToPlay() { + audioPlayer = player + } + } catch { + logger.debug("start: AVAudioPlayer error \(error.localizedDescription)") + } + + playerTask = Task { + while let player = audioPlayer { + player.play() + do { + try await Task.sleep(nanoseconds: UInt64((player.duration * 1_000_000_000) + delayMs * 1_000_000)) + } catch { + break + } + } + } + } + + func startConnectingCallSound() { + start("connecting_call", delayMs: 0) + } + + func startInCallSound() { + // Taken from https://github.com/TelegramOrg/Telegram-Android + // https://github.com/TelegramOrg/Telegram-Android/blob/master/LICENSE + start("in_call", delayMs: 1000) + } + + func stop() { + playerTask.cancel() + audioPlayer?.stop() + audioPlayer = nil + } + + func vibrate(long: Bool) { + // iOS just don't want to vibrate more than once after a short period of time, and all 'styles' feel the same + if long { + AudioServicesPlayAlertSound(kSystemSoundID_Vibrate) + } else { + UIImpactFeedbackGenerator(style: .heavy).impactOccurred() + } + } +} diff --git a/apps/ios/sounds/connecting_call.mp3 b/apps/ios/sounds/connecting_call.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fc425bab97663f579a8274758bb5a7a580441b70 GIT binary patch literal 7104 zcmeZtF=l1}0WmO%LHvKLZ~!RC6a$jk!m^QpVNwnQ!>a#O2S9rQVfJ7e&Z6MNW3YmQ z`HA`j{^$0Oo+z}<-`&_?AjZb(FeCFp@|C3jrOVg^oi9k7<2{ftg|)F^gC850gZxVo zcWKGljVoCl*hJ@7$VMkD0QqMP6VyKmk*^!?&&pz3c_jb;gCriq#^wSov1zIdKUf>% z|Nor1b9oZOwo@uA7NwYM+S}pu=a4{K(9GP~eL}^-ZgZDyIvgxgz{{cZ?Cy=!zrEgT z%hseB>podJW%`x_3MvdBd;W_ZV2WXM0Qzc%2>T2T!5J|UGb&tro7F@ZGQM;koun67 zF-5Z6(%|j9Z2iAarv&#$9)N=^4U zw^=pMDS(BG>xzSdp^4?BKrxU#@1z>5sv-}*VE(n`+U_4-i$ia6#j6J&W8th%51*Jh z%`$bmWkpnWkwBx=nVBnCrn5Rud^yqi((6dk|5N{;0VW^5m(zTBCBJ`ux8d*eHP*or zd9@enb@sj4_)f+vW6ScU^*^fxxv9Fz?cU)F`HWSfG8?A{KuMt{Xr2LH67drNKl438U?7#|05r(P`u*>gwYW8P#5Hj{}8dwtTL@xk~jbF>G@BA`uTNPt0m2y)-Nn%-!oXxw4+4T>m#m(!Qa%8zZ zzZa|0;$0`@E1wmrPCR9}&Cir!!)~4(i4vi#f41KQ*>hPkF{@gFrDB50x>py2LN`uI zzBYNLIx~w*pm)FK&gog7H_dD-Wzk8`HB4H2Guw26>&ru{Ivl2UsU1n}|I)=+KE0bK z#PzQ8q~@ik;;ndQ9?b07Wvw`sznHV=%+8rth1MCcHk}07b3!6AYqA7)$pmGUQ}e7U zR(tO5+)}YzCt(G<&Y4MN^Ol8gK3soC`_g%PK53f-t&S~B;>Nu}%q;!P3l^>3vh3^f ztsPpjt@|g)csYx=DPOv2-SPYQqD>Y@jz))ZGceQ{`<|WuX%WbtgW`;7%@W*Y6W9M= zeZD@qa^uP!Gqj8}_!{-D2n$R+omsHGFZx+{uHD+s#tkl?*jbJ(NIjv(qL6SgQE!Uq zQmgzUt^X?GkMF!&yZF;7jVo>v&G%V6CF`5F;`gZp4HVrkc@k!weH*L`K7nm{7u0GqS=BG|EU702)_@ Ok6Tj3MC^vp%N_vuAz$nO literal 0 HcmV?d00001 diff --git a/apps/ios/sounds/in_call.mp3 b/apps/ios/sounds/in_call.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1049be4462aa3b39240ffc4e958179748250b2ab GIT binary patch literal 63425 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

v^nb|m1 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 literal 0 HcmV?d00001 From 94851f177bf8f9f6a45bfab864378f9e2db644fb Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 11 Apr 2024 18:05:01 +0700 Subject: [PATCH 017/147] ios: noRcvUser handling while downloading a file in migration process (#4012) --- apps/ios/Shared/Views/Migration/MigrateToDevice.swift | 3 +++ 1 file changed, 3 insertions(+) diff --git a/apps/ios/Shared/Views/Migration/MigrateToDevice.swift b/apps/ios/Shared/Views/Migration/MigrateToDevice.swift index 9afd0dd406..e290537b46 100644 --- a/apps/ios/Shared/Views/Migration/MigrateToDevice.swift +++ b/apps/ios/Shared/Views/Migration/MigrateToDevice.swift @@ -448,6 +448,9 @@ struct MigrateToDevice: View { case .rcvFileError: alert = .error(title: "Download failed", error: "File was deleted or link is invalid") migrationState = .downloadFailed(totalBytes: totalBytes, link: link, archivePath: archivePath) + case .chatError(_, .error(.noRcvFileUser)): + alert = .error(title: "Download failed", error: "File was deleted or link is invalid") + migrationState = .downloadFailed(totalBytes: totalBytes, link: link, archivePath: archivePath) default: logger.debug("unsupported event: \(msg.responseType)") } From 34dee32def7c57f0d4a55f0ae72394e0608bdce4 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 11 Apr 2024 19:19:00 +0700 Subject: [PATCH 018/147] android, desktop: sound prompts and vibration (#3997) * android, desktop: sound prompts and vibration * moved audio playing to js * Revert "moved audio playing to js" This reverts commit a9355c2d88261a5f3a3e25f5c95b02956eab4e4c. * sound from speaker/earpiece * better * changes * license of audio * reorder lines * loop fix * awaiting call receipt * desktop * new line --- .../simplex/common/helpers/SoundPlayer.kt | 90 ++++++++++++++++-- .../common/platform/RecAndPlay.android.kt | 1 + .../common/views/call/CallView.android.kt | 19 +++- .../androidMain/res/raw/connecting_call.mp3 | Bin 0 -> 7104 bytes .../src/androidMain/res/raw/in_call.mp3 | Bin 0 -> 63425 bytes .../chat/simplex/common/model/SimpleXAPI.kt | 4 + .../simplex/common/platform/RecAndPlay.kt | 9 ++ .../simplex/common/views/call/CallView.kt | 20 ++++ .../common/platform/RecAndPlay.desktop.kt | 36 ++++++- .../common/views/call/CallView.desktop.kt | 20 +--- .../resources/media/connecting_call.mp3 | Bin 0 -> 7104 bytes .../desktopMain/resources/media/in_call.mp3 | Bin 0 -> 63425 bytes 12 files changed, 175 insertions(+), 24 deletions(-) create mode 100644 apps/multiplatform/common/src/androidMain/res/raw/connecting_call.mp3 create mode 100644 apps/multiplatform/common/src/androidMain/res/raw/in_call.mp3 create mode 100644 apps/multiplatform/common/src/desktopMain/resources/media/connecting_call.mp3 create mode 100644 apps/multiplatform/common/src/desktopMain/resources/media/in_call.mp3 diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/SoundPlayer.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/SoundPlayer.kt index ff83c10df3..d567b3f7f9 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/SoundPlayer.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/SoundPlayer.kt @@ -2,17 +2,16 @@ package chat.simplex.common.helpers import android.media.* import android.net.Uri -import android.os.VibrationEffect -import android.os.Vibrator +import android.os.* import androidx.core.content.ContextCompat import chat.simplex.common.R -import chat.simplex.common.platform.SoundPlayerInterface -import chat.simplex.common.platform.androidAppContext +import chat.simplex.common.platform.* +import chat.simplex.common.views.helpers.withApi import kotlinx.coroutines.* object SoundPlayer: SoundPlayerInterface { private var player: MediaPlayer? = null - var playing = false + private var playing = false override fun start(scope: CoroutineScope, sound: Boolean) { player?.reset() @@ -32,7 +31,7 @@ object SoundPlayer: SoundPlayerInterface { scope.launch { while (playing) { if (sound) player?.start() - vibrator?.vibrate(effect) + vibrator?.vibrateApiVersionAware(effect) delay(3500) } } @@ -43,3 +42,82 @@ object SoundPlayer: SoundPlayerInterface { player?.stop() } } + +object CallSoundsPlayer: CallSoundsPlayerInterface { + private var player: MediaPlayer? = null + private var playingJob: Job? = null + + private fun start(soundPath: String, delay: Long, scope: CoroutineScope) { + playingJob?.cancel() + player?.reset() + player = MediaPlayer().apply { + setAudioAttributes( + AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_VOICE_COMMUNICATION_SIGNALLING) + .build() + ) + setDataSource(androidAppContext, Uri.parse(soundPath)) + prepare() + } + if (delay < 1000) { + player?.isLooping = true + player?.start() + return + } + playingJob = scope.launch { + while (isActive) { + player?.start() + delay(delay) + } + } + } + + override fun startConnectingCallSound(scope: CoroutineScope) { + // Taken from https://github.com/TelegramOrg/Telegram-Android + // https://github.com/TelegramOrg/Telegram-Android/blob/master/LICENSE + start("android.resource://" + androidAppContext.packageName + "/" + R.raw.connecting_call, 0, scope) + } + + override fun startInCallSound(scope: CoroutineScope) { + start("android.resource://" + androidAppContext.packageName + "/" + R.raw.in_call, 2000, scope) + } + + override fun vibrate(times: Int) { + val vibrator = ContextCompat.getSystemService(androidAppContext, Vibrator::class.java) + val effect = VibrationEffect.createOneShot(20, VibrationEffect.DEFAULT_AMPLITUDE) + vibrator?.vibrateApiVersionAware(effect) + repeat(times - 1) { + withApi { + delay(50) + vibrator?.vibrateApiVersionAware(effect) + } + } + } + + override fun stop() { + playingJob?.cancel() + player?.stop() + } +} + +private fun Vibrator.vibrateApiVersionAware(effect: VibrationEffect) { + if (Build.VERSION.SDK_INT >= 33) { + vibrate( + effect, + VibrationAttributes.Builder() + .setUsage(VibrationAttributes.USAGE_ALARM) + .build() + ) + } else if (Build.VERSION.SDK_INT >= 29) { + vibrate( + effect, + AudioAttributes.Builder() + .setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION) + .setUsage(AudioAttributes.USAGE_ALARM) + .build() + ) + } else { + vibrate(effect) + } +} diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt index 5b0d3c778f..5cb10ff070 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt @@ -296,6 +296,7 @@ actual object AudioPlayer: AudioPlayerInterface { } actual typealias SoundPlayer = chat.simplex.common.helpers.SoundPlayer +actual typealias CallSoundsPlayer = chat.simplex.common.helpers.CallSoundsPlayer class CryptoMediaSource(val data: ByteArray) : MediaDataSource() { override fun readAt(position: Long, buffer: ByteArray, offset: Int, size: Int): Int { diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index b0c4beded0..af261e2a98 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -69,6 +69,8 @@ fun activeCallDestroyWebView() = withApi { @SuppressLint("SourceLockedOrientationActivity") @Composable actual fun ActiveCallView() { + val call = remember { chatModel.activeCall }.value + val scope = rememberCoroutineScope() val audioViaBluetooth = rememberSaveable { mutableStateOf(false) } val proximityLock = remember { val pm = (androidAppContext.getSystemService(Context.POWER_SERVICE) as PowerManager) @@ -78,6 +80,13 @@ actual fun ActiveCallView() { null } } + val wasConnected = rememberSaveable { mutableStateOf(false) } + LaunchedEffect(call) { + if (call?.callState == CallState.Connected && !wasConnected.value) { + CallSoundsPlayer.vibrate(2) + wasConnected.value = true + } + } DisposableEffect(Unit) { val am = androidAppContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager var btDeviceCount = 0 @@ -107,6 +116,10 @@ actual fun ActiveCallView() { } am.registerAudioDeviceCallback(audioCallback, null) onDispose { + CallSoundsPlayer.stop() + if (wasConnected.value) { + CallSoundsPlayer.vibrate() + } dropAudioManagerOverrides() am.unregisterAudioDeviceCallback(audioCallback) if (proximityLock?.isHeld == true) { @@ -122,8 +135,6 @@ actual fun ActiveCallView() { if (proximityLock?.isHeld == false) proximityLock.acquire() } } - val scope = rememberCoroutineScope() - val call = chatModel.activeCall.value Box(Modifier.fillMaxSize()) { WebRTCView(chatModel.callCommand) { apiMsg -> Log.d(TAG, "received from WebRTCView: $apiMsg") @@ -136,6 +147,9 @@ actual fun ActiveCallView() { val callType = CallType(call.localMedia, r.capabilities) chatModel.controller.apiSendCallInvitation(callRh, call.contact, callType) updateActiveCall(call) { it.copy(callState = CallState.InvitationSent, localCapabilities = r.capabilities) } + setCallSound(call.soundSpeaker, audioViaBluetooth) + CallSoundsPlayer.startConnectingCallSound(scope) + activeCallWaitDeliveryReceipt(scope) } is WCallResponse.Offer -> withBGApi { chatModel.controller.apiSendCallOffer(callRh, call.contact, r.offer, r.iceCandidates, call.localMedia, r.capabilities) @@ -144,6 +158,7 @@ actual fun ActiveCallView() { is WCallResponse.Answer -> withBGApi { chatModel.controller.apiSendCallAnswer(callRh, call.contact, r.answer, r.iceCandidates) updateActiveCall(call) { it.copy(callState = CallState.Negotiated) } + CallSoundsPlayer.stop() } is WCallResponse.Ice -> withBGApi { chatModel.controller.apiSendCallExtraInfo(callRh, call.contact, r.iceCandidates) diff --git a/apps/multiplatform/common/src/androidMain/res/raw/connecting_call.mp3 b/apps/multiplatform/common/src/androidMain/res/raw/connecting_call.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fc425bab97663f579a8274758bb5a7a580441b70 GIT binary patch literal 7104 zcmeZtF=l1}0WmO%LHvKLZ~!RC6a$jk!m^QpVNwnQ!>a#O2S9rQVfJ7e&Z6MNW3YmQ z`HA`j{^$0Oo+z}<-`&_?AjZb(FeCFp@|C3jrOVg^oi9k7<2{ftg|)F^gC850gZxVo zcWKGljVoCl*hJ@7$VMkD0QqMP6VyKmk*^!?&&pz3c_jb;gCriq#^wSov1zIdKUf>% z|Nor1b9oZOwo@uA7NwYM+S}pu=a4{K(9GP~eL}^-ZgZDyIvgxgz{{cZ?Cy=!zrEgT z%hseB>podJW%`x_3MvdBd;W_ZV2WXM0Qzc%2>T2T!5J|UGb&tro7F@ZGQM;koun67 zF-5Z6(%|j9Z2iAarv&#$9)N=^4U zw^=pMDS(BG>xzSdp^4?BKrxU#@1z>5sv-}*VE(n`+U_4-i$ia6#j6J&W8th%51*Jh z%`$bmWkpnWkwBx=nVBnCrn5Rud^yqi((6dk|5N{;0VW^5m(zTBCBJ`ux8d*eHP*or zd9@enb@sj4_)f+vW6ScU^*^fxxv9Fz?cU)F`HWSfG8?A{KuMt{Xr2LH67drNKl438U?7#|05r(P`u*>gwYW8P#5Hj{}8dwtTL@xk~jbF>G@BA`uTNPt0m2y)-Nn%-!oXxw4+4T>m#m(!Qa%8zZ zzZa|0;$0`@E1wmrPCR9}&Cir!!)~4(i4vi#f41KQ*>hPkF{@gFrDB50x>py2LN`uI zzBYNLIx~w*pm)FK&gog7H_dD-Wzk8`HB4H2Guw26>&ru{Ivl2UsU1n}|I)=+KE0bK z#PzQ8q~@ik;;ndQ9?b07Wvw`sznHV=%+8rth1MCcHk}07b3!6AYqA7)$pmGUQ}e7U zR(tO5+)}YzCt(G<&Y4MN^Ol8gK3soC`_g%PK53f-t&S~B;>Nu}%q;!P3l^>3vh3^f ztsPpjt@|g)csYx=DPOv2-SPYQqD>Y@jz))ZGceQ{`<|WuX%WbtgW`;7%@W*Y6W9M= zeZD@qa^uP!Gqj8}_!{-D2n$R+omsHGFZx+{uHD+s#tkl?*jbJ(NIjv(qL6SgQE!Uq zQmgzUt^X?GkMF!&yZF;7jVo>v&G%V6CF`5F;`gZp4HVrkc@k!weH*L`K7nm{7u0GqS=BG|EU702)_@ Ok6Tj3MC^vp%N_vuAz$nO literal 0 HcmV?d00001 diff --git a/apps/multiplatform/common/src/androidMain/res/raw/in_call.mp3 b/apps/multiplatform/common/src/androidMain/res/raw/in_call.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1049be4462aa3b39240ffc4e958179748250b2ab GIT binary patch literal 63425 zcmeI42Uru^+NjeY0YYz~haw`PP7=D5(2D_SD%c1F5v(W{tVswUV31}BhysF&ii&`W zWlKU6BvJ%>13^SZrP)BpodLIdpZomz?|<((JNumbWIY<NqVuyx|O!*=7LA+{)I@(b?6*ld{k+aB=Xml~h{9 z>b2`OZr-we=WcpDD=B&ZfsE|KoTJC{PZXa%TY9m);_CGqw|KP;jm<5s9S$d1WZ2Sj&aFD;NfBJvV|38fSA0PKWi9fjB z|Fr(0fBjnjf1J>N%sZ>STb_Tv9~|EZ`;p_NGnm>YkCR*}9lpv)FBl$UTWT!PhEma) zvEzHJ9OA{=FRssdfAL%T=GHJinWpjs^4GG zl#F04M#L&*^aeTLt!Y`#p$*^*Z@P z1W+o5sqFnba~c$4RaWHfl(Las|FxcBruC!0Hibq1s#IQxzpoIUqQqUN7xf+;Oe?B? zHm`{ZBt2U$-5`VM24-2A;=*B#8hf@QGW=F0mLAu3Qx6H*{k4~;q4t@?#`l@rupU*~ ztoiguluQr3bl0zgs+q!*VK7^=gObfw#UN`{wseD<`l%H;?k!5EF-pco36UI?q^igOLw1)ad|4bSAIIh@T0Ph}2FL~{|3Q`ld4g0R9mHK{ISlXrOJ7>xhh>)mynzM;BskQh`)e=^fEj^vTe+WHrmv% zIz&l^+#kfZKgSF_CW9Ni%%JFc1AciZ$>4X^x5z+HT+A`V5o0ZUY6}%(ESo2zY;C%} zrGD$XZFE7M1`K8`p^9mW*p0o29q2l)Nm=pc(S*zq+0_>YI`1y+Y){w6w!fiv&&+5I z=zQ47dF-6Q%S3Sj6CT4ZN_UHh zx)VCmb>?S0%|7pQX~`m=6~j9yr)US9ce5)Led>;-^;uz6RVWfDHUj3qo}iJSMc8|H z&2{M&5ln8Fozsid*L=Xa3}BQ|aW|mz^)XEL>|AB7?cT zC~NLlM6a_%H}e_NpD}=PVj3Zs3<}J}V!`Ka@=R*YE_x$fAou{hh(`cxT$>5+y&Z|4 zJS)u02kDN?FFw}eA^Xkq`H6&w&fP#_T_OSEKfoZCsOh@c;|7D`13zy}v6g0=o}Nc9 zhTBRWT=Z#_;aryu3^<xjT4c0$nk>Gey2U|ewidn|HP ziG=K(fs`VfRj3p@7{d8?1HJVwR>0Sxk?<%4P2CgALM@l8*kxBAE5SjBQE>)+uweL_ z4DKh`bCtQ{g0J9*p8%-~-UF7rErh_tHsBcS3h{gm8PJxJHJ94W100#&Gho(rQ4%U# zbr|{C`5ATGH84+W7{!}w5S@gKlX#asD(D9fF}6rJ=>K;^3K()X19M??z}}fg5XfvI z-Z^>HG21S3s5l((+rXbnJ&AE$!f6!Ne&Q`98E( z1F?s1W&-b-w~F>#(@y0VsnW9{q$j1DIR(^ z9_HSSj`_rZq0RIq!5AwI?lS^X%(8jdd5KCUFu zs3$E)4<|oFzTmYEcnX$4$e{6AQaZ^dxi40IAM8pbv6hZ*@cU|PK%UoteWbDayzBaf z?gwtI!Zd_p%sf2lpXpO`z!!fR|EduVo+poU3J>HQe(s`IEZN7&V_-Yh+J8A{+Ww#QL03eE(tn8t$cjPD#p?hwu>Je0HU*%BRZv@eI|)POUl z)*U~x>7k?c9j_beTB+PoyZFcX?UVTnr}a*x{^EaDWP@bNxb2q>%QL7&4EU0iwVGL& z8A_xT)kS^}vS+c2^icTver&v=-s^Bm?sxFRLj3FGhpwS(SRj8(#@8~CKRQDnB`aVs z-lBA!ss|MEr_N`!;0H5*QBq_wN3QD!PQ!T)$LEEomQ9Hv$5{Uq4#T*TE8%}lM%xoV zyY7W|Q*rUb=VOjj6DL~*-;u$WWD}JEic=l1Eis*#u*2JNu=O{ftELZF2iGA4vdC7J zpAEP8TidjoyxkDmM6Y-%5NzBin8+6_bjm39KbY8*|8}TqNlxZPhfSX)SM1oAB;Ov- zmpF5Uh0}k0^t7h4#>x8qGZ(nzUz`X9O+Tb~;@`yn{9&;O#X&?WjWilztyoJ)?W}X$ z?+o#8kRQ5>abo57E7)|SGh)Y4=mdR~9G%MOLB3$V9Ppe+z;fGw6^uQ$qzWAmg1e!D zJrF!ZT~j(ie+QoDgH?)`3MGu+D(ewVX@(iryH_yU!m=26Y7q?Bvc`DjDe4_3T4u7^ z)~)%aDoz>-Dw>GEJZzALj%j*+et|S6p331^!ItWkKE7C%>o;+V%}tg`m_3_-jB zy?o{zlwOUvRQ2@D=m7591=W1jSIcqHU9UOw$=h_(qOVrvmbV`{n&XPQp@yY%veTK6VtmX9|^q#uyor@`p4tQLg zW#HvmWgPnzj9U)6UQHi5GQIvyyS{Q`$CV@pK>H&ICqH3L*`FKF1%mB#a6!@E6Fo-M z1^_&-8K5OB22RKAu$|R{18QsE18d=1>|ZM9)2&~-?3!nFGPA@>hw&BkhDB2-1d|1jDFgOj4w-|wOaV*vi>x%3(MB_jU7TlW*uVLc`}Pqz z|Nr9ZnwKZsKi|U$ZSA>3)HXljD4AACa6*uPDDIdQO<5M=e_MX2AI(G3yYRM5bjC(- z{o^738%~DoPwRk!imkiy5>HE$?wKK5|IzsxV6siUd&rp`%you(XV;TH2j|x+WXw>O z=#?%QycbkN_Ayssd9p#@dwbjwv?ziK@UNh_q0sIQ0chj(_6|}TQJx7CFEG?PB}6Z; z2^RM;16x?uu0fgM2{$rB27j9Nr$uVWz!^^5Msp(B_i3~O2KTV9~dow{C`Uys)Ov$qYNvjDgP@OJiY$!gZ>w^KhU{AW3osJ?t*vk za8PhbT9<7A7ZiQ{meQeAqGu=>p-AewWmUooTSbbfwa-wqDs~*J7SN|-c|i$ph3xhL z?kjXKZ5C1z#hoY>o!?$pu zUW|U(?)b9?A^UbTwb%1^X~aL%BrxAepLw%IyCSoRbF`qnx=`M&ao)&y^-Jipg5$I4 zFa9EPzmOtQE~hC|8TJF;180ys;EwNDq%@Q=%G{a-x6>F|*hVlB&y6=Ah~NMn>8OVDVh#3|T=#ZuozFSa zRS9|(C--r7h56!4$x(S4?Wt5d4w9HIHGG-AlGL%28Z|bB_51Y$UQbkmfw2I(*97gq`2QDnL1ZFA zX#kPB#9Vu`HMq)J?#^|*<$i+@?1Wd6=^Y5*|K$I8YW?GF;nV)tL~qLeyg=zf{`X{_ zKZB=2*|tjiY{loPTRViU-<{12DJ*oVPtZ6(L}Us~wP)>*MCPzCh)X?}bG6RwBdV$K zNOPX_UwjXRuTzQNWI4+}f1l)tU;glJTEoSqdy6w;!p-70Q2XHQJ=^-Oe~H4n+a6za z&%pUmJv|fzI9?6D2tpF5*V2)N$NNKS4uz$om99;!S=yZ%sqmOpDW(6uC(kVUB1z+H z(@F0X?Z5WKuJKmb`#gf zyMh!J)fqu@)pb9pa6__s;h4SNl>Lz(O8gmrc1^{fl6BMZ|EuZvM=-ht#PC57ouL$- z!Ga&e2O?uU4HahQR3w*9vKDrSGq*(L`+8FSzb6XM^PKJ)?1zw$x<8wRfb2?Uw~ z`d={qd_V1fS%5FM)T+2bOWPtb*2>nRF>F=HHpj=4F9py5gLGqO`BO`>8j|%^WA7x{ z^=_Ow?(dOgSU~8L^+fG+ErSIRPsYv)Hjic+=B}exOjLs_+Yy{OMyYf%k869LsQl#` zf1RQ1!u`})6ldyup3{EqtnNc|z(N}8+Z@!%6V;Ex3sy#O6eQ#22-=h#RE5@IUM$6j zJeQ(bHp{o0+@^_L#NLFdi#R?%Z6fqNcxcFW2|7i){{OhiVsyjYd8;%rCIE5PRAa`2k*^*_+OJBx`A;uKi(VI!hLR^=CU)v;!CV6nOMc6jgezN z(bm6At-P^S;o_YVN^!%KY1Jq8_~LZP0wn=`M2|tr?T;=UGTnzTc2rih0xSGg#Ku zy055Lt=6$pC5O_JQjkwExC?PrR=N%UaNQED+$ME^jI*I3-bH z(;%IZXl&|uY@gW^DPygu;3QPWoLAQHceVSpEo&;63v>@;JlWn`Jv9*oGKM{5%&sKd zRbF(!@(g8tPK$iD5}V>P$i!-qiM~c;p4?p>YWu;vYAPX1mugQZchKC)9>Ye~ywnPB z|DGcz%J{`{ML+Vkb*Kzz*Gfc5m1*K;EaxxAz7689ay@Wn^W;k~NC1r`IQsvt_5a76 z@DJ~ZC0%WZkk0wiB%sf{ycPU@5bO^bB?1 zgcP8Lec?vp3EYk(=Rgiy`{Llh)Eo6U41=IO&=d}NQJ?(${f5wnkCr%;oiYFLM zoHX?#M>jqc=d|a?(aF^TdNU6lRd}y+F}mgYF@zKE@KNTs(c%N#U892O?Dwfa5M6M% zZ{vQPJRHT*I}wj_Sm||CzVQT3ig}YG%RQ(y5nYwWy6ua?bjx6hBbMZk(IJ3>Nhtqa zFwbY6CO`o5U#jbIVA%GwEi9`XFhy1aGkM{}S^jH!5_GH;iw*>7re%iEd+DGyaDaEf z-&Owkby(%m}z(?+tAb}j1rvGMNJtrx>m*ml%K6x^Wl z0Wz7Z!j4|o*pAJ`dmiS@m`+k5OcQ;6S~&yj);ooK3wO7KJ)GGDo8_)uCY9i1lUJ^o zX@UuG_f7C)Uk&Yy(8owUL)_C{t{MJGVfpUGlFmB`)@yMGR^i*i7?srIT#PKN*f3NT zG;}}5faur%G{IOwUQAsu`f?dl8yNhbF!wd}Ymk1NMY!fM8dB;IZwK z`53ubz-8nuV5QRy`<9}DWZOmA@s?JL3!|z|mMt8mpYDL>fg|i#z4R`Q6zo0D(7=|% zT+ykO=W&zc>vRf-r#2l|XSQ2vzs>ngPOGV1W%qRbd1~5f!QWDUo-+96(rtYI4tO2j z5UH>*TlI8lZLphBhlGli3p`F$S+CN{0FT>rLo#oc##H|W^uOhx{{`(2*xj7Ue}nWT zWd&5mo9X)VA@vo1E+zX{%6eG<7B!Z@`ouFt8TxYDu0S-h>V|a zbC__}sn8mjCswetUrzZ#(Rad>so?% z+m~7yCEb^=W^{5+^Ee&!^;2UE8>`7aXh0dVlkGZ1aruf%XAODqJMO+iI1!9h5J~Bg!?@IjC~E1T*r__y_F2 zfc)|EozM)>|4I((Px;^H3A#}IM?*=vcO=M1CkRujwm^rqVo}H#zueTEq0$u=J1WmU z)IQPrDkGQg9V1K8WGKt~bl!VL35%P1O8>}O^^o7|2q2Hr8UWkCw7wgNeSW8)&TXyP z*j3H8It|nSuLk+;!^quZqqh&RFJtc%)+f(SoywS}@V^IKXA&|Pq!lx*#(W9htByG8 zG{+O%YV3iHOgo3&fy{lDZnX=1EHIf7UU5+QdAnfZB{Wmy^=HC~b+!I3h&;nU35774 zdi9HnsyPP8n>&^L^n1wd6?2+LboTYkaEUca8alDrgF2OXz~sxnsQ><7uI>LuNEl=hBQB75hUQ<+62?pBIao`{0d z3BViRB{Xx4eG1bk;7b+6VigE}lzFX>4>Z>v<}c_PU~83yE<9KD)=2I*%BuruuQPV; zRa~b$q4yT-{!Tyz*NTZGIt=?BkcU?SL{~TvVYAJ0Ci^|mjMN5fdB54M?K!a0CaWR_ zZ&`jK>YBuedhbxBaGpN%X(3{(SZ<;e=gH zTM+HqI#sgP8n^J-J1_(&XDg0`@dvUzCaoy${O=ob1e2* z5~WSfIX;uBBG|xR0-;>4H4~7|g!qI0_uaJr{TY9v&8PF<*O341S18fTH7z``K*pq* zML!3vXYe)vi@Yyr1@|HzqgG!!9wReAV_8n_(ZW!}9T4}Zd5qng$qd&XBY$FLk!Gse zjNjY8AW^XD94tpk!=xPV$hhaCfh5V?e%T3RZnW2T4lM`f#V-Rtc#!M7K37+z9s{A%JMX>4@ z|NkaF`Ir9+3uvOUHm+*_@i5XYLUrGVcGJjNF{bX=Z`yC}daloG7@mx{Pp-!dv-RhV^D?3@A-soqGv7hY->C?6vIyH)E7=xnphxo*1R|Gp8kV1d zXIDEQy_PC_E3?e@A?Ld&>&4gN>v^yCI<0H%7c4vtRxd$!Gm$?)%#Gr;Rlwr(Y7wsf zB&6Yc!|=B%Box=)5Sf5eKGAPuYE6Nas@?J)J&VyWzAtPB)8|V`jo;LgV@K%0$?R_ zl&WX4cR%N?@&4TbgG@l*&B8a*W~BzY__NYaD{C23Yx{~%Wy=Q1^ho&0#I9E}@{+!+ z5ieCxlcpc?>C5z932@>l?wz@YCplMoy*9p!Q~zO1?^4lz4u^UVM;q^PNu5l#HA(sKGVFq^F zvMp8TTC$QBX0+P-z{V?{w6w=p_QW6b z3wKOdNo_?0?;W41rMrRMa3VF@?^UzX;KK1g9QV>+_D7T^AKU<85{MlHG@R}NL8v;Q zdMClgv!xHXQM(85fhX7rVsmV)T#B~Nv8o&DPl5Pz(}ya4`rm>n|BJSR{BJxN%zq*O ztC9anu>A(Kq`(UhnJE{(hpZ4ok#bUF%jg>W%&NGBRW0k}%X9@FSYq_DvjvEG=Hk=1 zC0EH~SM|%ONszZFZCgOHx{XD18GPkSiEPUQbMJoZMPX-CE9&7}NKY!lkXB^nSZ!-p zgvnz?P~p@7v#(DUhAQ_r8zM9CBy_1yt;W%;5$;=gmRtcb7G|3dk%NBk17`rL&~;An>B8|9j27J17Ubd*K z3lE0#35eY$XwUF)_$%rOM&-u%22@74XCE<{mVu}>zfE5<#xJojkBfT&3;bMwjphLh z4|j!8oVw)s8VX9Sa864OR(AOz*f~^JDwI1+k1x1nX;#LFeS#s&KUS1SI>8w7vUpM?F3?^QkbhPB@BOd2)am$h_jLcam317-e}5tvi{}lo zXJ{NvWnTX+I_=oHu+g}nlmQi|tEM3Z9`H=mru3d!`{6_TBgkddW@x?fYS3$sPtEl| zT%+N5jj1g+6u-gXOiE!_SWDH8S&3CT@c1X#S^c}U4?1<6JlcNgw==Q}>gPZ{^iSDu zXb>*mfr>y`Q)N>xP&4<~Mg72kp{~JTscTppwyoSpezxWHX{eExF+;oAkPpoO1-wa)#3D(oTAt2SK4YLK-? z)v5yGU!Oj7ecJxmP(lAYp@5E?u0MZ7P1S$0OrmAK{wW1!d0$NPQU$aBejqeqJAtyZ z!S1*A8Nh%`8Q=%kLk!xuE_`1*@J#SkOGmZx6S$Xo>LP$Zz@5zc2NOe1%<`{lf1LgX zv+1+3OG@%)MP_`bME~W-2%EgK8uz@8*6i2$eIFGxb3)QKEh$JLGBw9T$=TTTDQTa; z^GcsSW}drTfx^tCo5RhFjXNWxjUDG2*)N&SnA$q(;F;SN&MIo1qIUE4EfFXe>ul1{`M1_s=4 z44s+)zI^6bVmXg&HOhA#^>@L2jCq}(R8)n_r9S4&f$h=td3=SJThpF*I;S}5(#f*c z_fQS_D;=CSSplny#mOM89&{xA#?sR5js3FxT#-uWtU$?Nm0H1w?UIhYD=qE^E>BUT z9*L))|D*nVLB#w4Mc7eEgf-PN!IF9s^C)cM+k@E1f**9;Q

v^nb|m1 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 literal 0 HcmV?d00001 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 3ce9b68b5e..7848f9942e 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 @@ -20,6 +20,7 @@ import com.charleskorn.kaml.YamlConfiguration import chat.simplex.res.MR import com.russhwolf.settings.Settings import kotlinx.coroutines.* +import kotlinx.coroutines.channels.Channel import kotlinx.coroutines.sync.withLock import kotlinx.datetime.Clock import kotlinx.datetime.Instant @@ -350,6 +351,8 @@ object ChatController { var ctrl: ChatCtrl? = -1 val appPrefs: AppPreferences by lazy { AppPreferences() } + val messagesChannel: Channel = Channel() + val chatModel = ChatModel private var receiverStarted = false var lastMsgReceivedTimestamp: Long = System.currentTimeMillis() @@ -481,6 +484,7 @@ object ChatController { if (msg != null) { val finishedWithoutTimeout = withTimeoutOrNull(60_000L) { processReceivedMsg(msg) + messagesChannel.trySend(msg) } if (finishedWithoutTimeout == null) { Log.e(TAG, "Timeout reached while processing received message: " + msg.resp.responseType) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/RecAndPlay.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/RecAndPlay.kt index 0e0f769487..1e902b5d88 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/RecAndPlay.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/RecAndPlay.kt @@ -39,4 +39,13 @@ interface SoundPlayerInterface { fun stop() } +interface CallSoundsPlayerInterface { + fun startConnectingCallSound(scope: CoroutineScope) + fun startInCallSound(scope: CoroutineScope) + fun stop() + fun vibrate(times: Int = 1) +} + expect object SoundPlayer: SoundPlayerInterface + +expect object CallSoundsPlayer: CallSoundsPlayerInterface diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/CallView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/CallView.kt index 2f4ffbb836..e4a6691d49 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/CallView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/CallView.kt @@ -1,6 +1,26 @@ package chat.simplex.common.views.call import androidx.compose.runtime.Composable +import chat.simplex.common.model.* +import chat.simplex.common.model.ChatModel.controller +import chat.simplex.common.platform.* +import kotlinx.coroutines.* @Composable expect fun ActiveCallView() + +fun activeCallWaitDeliveryReceipt(scope: CoroutineScope) = scope.launch(Dispatchers.Default) { + for (apiResp in controller.messagesChannel) { + val call = chatModel.activeCall.value + if (call == null || call.callState > CallState.InvitationSent) break + val msg = apiResp.resp + if (apiResp.remoteHostId == call.remoteHostId && + msg is CR.ChatItemStatusUpdated && + msg.chatItem.chatInfo.id == call.contact.id && + msg.chatItem.chatItem.content is CIContent.SndCall && + msg.chatItem.chatItem.meta.itemStatus is CIStatus.SndRcvd) { + CallSoundsPlayer.startInCallSound(scope) + break + } + } +} diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt index 50d143aaf5..21a2ccd196 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt @@ -213,7 +213,7 @@ actual object SoundPlayer: SoundPlayerInterface { override fun start(scope: CoroutineScope, sound: Boolean) { val tmpFile = File(tmpDir, UUID.randomUUID().toString()) tmpFile.deleteOnExit() - SoundPlayer::class.java.getResource("/media/ring_once.mp3").openStream()!!.use { it.copyTo(tmpFile.outputStream()) } + SoundPlayer::class.java.getResource("/media/ring_once.mp3")!!.openStream()!!.use { it.copyTo(tmpFile.outputStream()) } playing = true scope.launch { while (playing && sound) { @@ -228,3 +228,37 @@ actual object SoundPlayer: SoundPlayerInterface { AudioPlayer.stop() } } + +actual object CallSoundsPlayer: CallSoundsPlayerInterface { + private var playingJob: Job? = null + + private fun start(soundPath: String, delay: Long, scope: CoroutineScope) { + playingJob?.cancel() + val tmpFile = File(tmpDir, UUID.randomUUID().toString()) + tmpFile.deleteOnExit() + SoundPlayer::class.java.getResource(soundPath)!!.openStream()!!.use { it.copyTo(tmpFile.outputStream()) } + playingJob = scope.launch { + while (isActive) { + AudioPlayer.play(CryptoFile.plain(tmpFile.absolutePath), mutableStateOf(true), mutableStateOf(0), mutableStateOf(0), true) + delay(delay) + } + } + } + + override fun startConnectingCallSound(scope: CoroutineScope) { + // Taken from https://github.com/TelegramOrg/Telegram-Android + // https://github.com/TelegramOrg/Telegram-Android/blob/master/LICENSE + start("/media/connecting_call.mp3", 3000, scope) + } + + override fun startInCallSound(scope: CoroutineScope) { + start("/media/in_call.mp3", 5000, scope) + } + + override fun vibrate(times: Int) {} + + override fun stop() { + playingJob?.cancel() + AudioPlayer.stop() + } +} diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt index 87c2d3e8f2..d3bf1bf01e 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/call/CallView.desktop.kt @@ -1,30 +1,15 @@ package chat.simplex.common.views.call -import androidx.compose.foundation.* -import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.* import androidx.compose.runtime.* import androidx.compose.runtime.snapshots.SnapshotStateList -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.clip -import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalUriHandler -import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.unit.dp import chat.simplex.common.model.* import chat.simplex.common.platform.* -import chat.simplex.common.ui.theme.* -import chat.simplex.common.views.chat.item.ItemAction import chat.simplex.common.views.helpers.* import chat.simplex.res.MR -import dev.icerock.moko.resources.compose.painterResource -import dev.icerock.moko.resources.compose.stringResource import kotlinx.coroutines.delay import kotlinx.coroutines.flow.* import kotlinx.datetime.Clock -import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import org.nanohttpd.protocols.http.IHTTPSession import org.nanohttpd.protocols.http.response.Response @@ -45,6 +30,7 @@ actual fun ActiveCallView() { if (call != null) withBGApi { chatModel.callManager.endCall(call) } } BackHandler(onBack = endCall) + val scope = rememberCoroutineScope() WebRTCController(chatModel.callCommand) { apiMsg -> Log.d(TAG, "received from WebRTCController: $apiMsg") val call = chatModel.activeCall.value @@ -56,6 +42,8 @@ actual fun ActiveCallView() { val callType = CallType(call.localMedia, r.capabilities) chatModel.controller.apiSendCallInvitation(callRh, call.contact, callType) chatModel.activeCall.value = call.copy(callState = CallState.InvitationSent, localCapabilities = r.capabilities) + CallSoundsPlayer.startConnectingCallSound(scope) + activeCallWaitDeliveryReceipt(scope) } is WCallResponse.Offer -> withBGApi { chatModel.controller.apiSendCallOffer(callRh, call.contact, r.offer, r.iceCandidates, call.localMedia, r.capabilities) @@ -64,6 +52,7 @@ actual fun ActiveCallView() { is WCallResponse.Answer -> withBGApi { chatModel.controller.apiSendCallAnswer(callRh, call.contact, r.answer, r.iceCandidates) chatModel.activeCall.value = call.copy(callState = CallState.Negotiated) + CallSoundsPlayer.stop() } is WCallResponse.Ice -> withBGApi { chatModel.controller.apiSendCallExtraInfo(callRh, call.contact, r.iceCandidates) @@ -121,6 +110,7 @@ actual fun ActiveCallView() { // After the first call, End command gets added to the list which prevents making another calls chatModel.callCommand.removeAll { it is WCallCommand.End } onDispose { + CallSoundsPlayer.stop() chatModel.activeCallViewIsVisible.value = false chatModel.callCommand.clear() } diff --git a/apps/multiplatform/common/src/desktopMain/resources/media/connecting_call.mp3 b/apps/multiplatform/common/src/desktopMain/resources/media/connecting_call.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fc425bab97663f579a8274758bb5a7a580441b70 GIT binary patch literal 7104 zcmeZtF=l1}0WmO%LHvKLZ~!RC6a$jk!m^QpVNwnQ!>a#O2S9rQVfJ7e&Z6MNW3YmQ z`HA`j{^$0Oo+z}<-`&_?AjZb(FeCFp@|C3jrOVg^oi9k7<2{ftg|)F^gC850gZxVo zcWKGljVoCl*hJ@7$VMkD0QqMP6VyKmk*^!?&&pz3c_jb;gCriq#^wSov1zIdKUf>% z|Nor1b9oZOwo@uA7NwYM+S}pu=a4{K(9GP~eL}^-ZgZDyIvgxgz{{cZ?Cy=!zrEgT z%hseB>podJW%`x_3MvdBd;W_ZV2WXM0Qzc%2>T2T!5J|UGb&tro7F@ZGQM;koun67 zF-5Z6(%|j9Z2iAarv&#$9)N=^4U zw^=pMDS(BG>xzSdp^4?BKrxU#@1z>5sv-}*VE(n`+U_4-i$ia6#j6J&W8th%51*Jh z%`$bmWkpnWkwBx=nVBnCrn5Rud^yqi((6dk|5N{;0VW^5m(zTBCBJ`ux8d*eHP*or zd9@enb@sj4_)f+vW6ScU^*^fxxv9Fz?cU)F`HWSfG8?A{KuMt{Xr2LH67drNKl438U?7#|05r(P`u*>gwYW8P#5Hj{}8dwtTL@xk~jbF>G@BA`uTNPt0m2y)-Nn%-!oXxw4+4T>m#m(!Qa%8zZ zzZa|0;$0`@E1wmrPCR9}&Cir!!)~4(i4vi#f41KQ*>hPkF{@gFrDB50x>py2LN`uI zzBYNLIx~w*pm)FK&gog7H_dD-Wzk8`HB4H2Guw26>&ru{Ivl2UsU1n}|I)=+KE0bK z#PzQ8q~@ik;;ndQ9?b07Wvw`sznHV=%+8rth1MCcHk}07b3!6AYqA7)$pmGUQ}e7U zR(tO5+)}YzCt(G<&Y4MN^Ol8gK3soC`_g%PK53f-t&S~B;>Nu}%q;!P3l^>3vh3^f ztsPpjt@|g)csYx=DPOv2-SPYQqD>Y@jz))ZGceQ{`<|WuX%WbtgW`;7%@W*Y6W9M= zeZD@qa^uP!Gqj8}_!{-D2n$R+omsHGFZx+{uHD+s#tkl?*jbJ(NIjv(qL6SgQE!Uq zQmgzUt^X?GkMF!&yZF;7jVo>v&G%V6CF`5F;`gZp4HVrkc@k!weH*L`K7nm{7u0GqS=BG|EU702)_@ Ok6Tj3MC^vp%N_vuAz$nO literal 0 HcmV?d00001 diff --git a/apps/multiplatform/common/src/desktopMain/resources/media/in_call.mp3 b/apps/multiplatform/common/src/desktopMain/resources/media/in_call.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..1049be4462aa3b39240ffc4e958179748250b2ab GIT binary patch literal 63425 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

v^nb|m1 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 literal 0 HcmV?d00001 From b84ef0ce353dfd8df4416a74a50a59ab6789846d Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 11 Apr 2024 19:26:24 +0700 Subject: [PATCH 019/147] android: network observer (#3992) * android: network observer * removed unused code * rename * rename * new line * rename * changes in logic * adapted to ios logic * change * change * change * networkLost * item in settings * reorder * changes --------- Co-authored-by: Evgeny Poberezkin --- .../main/java/chat/simplex/app/SimplexApp.kt | 7 +- .../src/androidMain/AndroidManifest.xml | 1 + .../simplex/common/helpers/NetworkObserver.kt | 104 ++++++++++++++++++ .../chat/simplex/common/model/ChatModel.kt | 1 + .../chat/simplex/common/model/SimpleXAPI.kt | 31 ++++++ .../chat/simplex/common/platform/Core.kt | 2 +- .../chat/simplex/common/platform/Platform.kt | 1 + .../simplex/common/views/helpers/Utils.kt | 1 - .../views/usersettings/NetworkAndServers.kt | 15 ++- .../commonMain/resources/MR/base/strings.xml | 8 ++ 10 files changed, 165 insertions(+), 6 deletions(-) create mode 100644 apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/NetworkObserver.kt diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt index f29aa39607..83105c678a 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/SimplexApp.kt @@ -16,8 +16,7 @@ import androidx.work.* import chat.simplex.app.model.NtfManager import chat.simplex.app.model.NtfManager.AcceptCallAction import chat.simplex.app.views.call.CallActivity -import chat.simplex.common.helpers.APPLICATION_ID -import chat.simplex.common.helpers.requiresIgnoringBattery +import chat.simplex.common.helpers.* import chat.simplex.common.model.* import chat.simplex.common.model.ChatController.appPrefs import chat.simplex.common.model.ChatModel.updatingChatsMutex @@ -291,6 +290,10 @@ class SimplexApp: Application(), LifecycleEventObserver { activeCallDestroyWebView() } + override fun androidRestartNetworkObserver() { + NetworkObserver.shared.restartNetworkObserver() + } + @SuppressLint("SourceLockedOrientationActivity") @Composable override fun androidLockPortraitOrientation() { diff --git a/apps/multiplatform/common/src/androidMain/AndroidManifest.xml b/apps/multiplatform/common/src/androidMain/AndroidManifest.xml index 74520465ae..eeb822503d 100644 --- a/apps/multiplatform/common/src/androidMain/AndroidManifest.xml +++ b/apps/multiplatform/common/src/androidMain/AndroidManifest.xml @@ -1,4 +1,5 @@ + diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/NetworkObserver.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/NetworkObserver.kt new file mode 100644 index 0000000000..825bc8b846 --- /dev/null +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/helpers/NetworkObserver.kt @@ -0,0 +1,104 @@ +package chat.simplex.common.helpers + +import android.net.* +import android.util.Log +import androidx.core.content.getSystemService +import chat.simplex.common.model.ChatModel.controller +import chat.simplex.common.model.UserNetworkInfo +import chat.simplex.common.model.UserNetworkType +import chat.simplex.common.platform.* +import chat.simplex.common.views.helpers.withBGApi +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay + +class NetworkObserver { + private var prevInfo: UserNetworkInfo? = null + + // When having both mobile and Wi-Fi networks enabled with Wi-Fi being active, then disabling Wi-Fi, network reports its offline (which is true) + // but since it will be online after switching to mobile, there is no need to inform backend about such temporary change. + // But if it will not be online after some seconds, report it and apply required measures + private var noNetworkJob = Job() as Job + private val networkCallback = object: ConnectivityManager.NetworkCallback() { + override fun onCapabilitiesChanged(network: Network, networkCapabilities: NetworkCapabilities) = networkCapabilitiesChanged(networkCapabilities) + override fun onLost(network: Network) = networkLost() + } + private val connectivityManager: ConnectivityManager? = androidAppContext.getSystemService() + + fun restartNetworkObserver() { + if (connectivityManager == null) { + Log.e(TAG, "Connectivity manager is unavailable, network observer is disabled") + val info = UserNetworkInfo( + networkType = UserNetworkType.OTHER, + online = true, + ) + prevInfo = info + setNetworkInfo(info) + return + } + try { + connectivityManager.unregisterNetworkCallback(networkCallback) + } catch (e: Exception) { + // do nothing + } + val initialCapabilities = connectivityManager.getNetworkCapabilities(connectivityManager.activeNetwork) + if (initialCapabilities != null) { + networkCapabilitiesChanged(initialCapabilities) + } else { + networkLost() + } + try { + connectivityManager.registerDefaultNetworkCallback(networkCallback) + } catch (e: Exception) { + Log.e(TAG, "Error registering network callback: ${e.stackTraceToString()}") + } + } + + private fun networkCapabilitiesChanged(capabilities: NetworkCapabilities) { + connectivityManager ?: return + val info = UserNetworkInfo( + networkType = networkTypeFromCapabilities(capabilities), + online = capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) && capabilities.hasCapability(NetworkCapabilities.NET_CAPABILITY_VALIDATED), + ) + if (prevInfo != info) { + prevInfo = info + setNetworkInfo(info) + } + } + + private fun networkLost() { + Log.d(TAG, "Network changed: lost") + val none = UserNetworkInfo(networkType = UserNetworkType.NONE, false) + prevInfo = none + setNetworkInfo(none) + } + + private fun setNetworkInfo(info: UserNetworkInfo) { + Log.d(TAG, "Network changed: $info") + noNetworkJob.cancel() + if (info.online) { + withBGApi { + if (controller.hasChatCtrl() && controller.apiSetNetworkInfo(info)) { + chatModel.networkInfo.value = info + } + } + } else { + noNetworkJob = withBGApi { + delay(3000) + if (controller.hasChatCtrl() && controller.apiSetNetworkInfo(info)) { + chatModel.networkInfo.value = info + } + } + } + } + + private fun networkTypeFromCapabilities(capabilities: NetworkCapabilities): UserNetworkType = when { + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_ETHERNET) -> UserNetworkType.ETHERNET + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI) -> UserNetworkType.WIFI + capabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR) -> UserNetworkType.CELLULAR + else -> UserNetworkType.OTHER + } + + companion object { + val shared = NetworkObserver() + } +} 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 a8a5797d71..0e15079ac5 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 @@ -118,6 +118,7 @@ object ChatModel { val simplexLinkMode by lazy { mutableStateOf(ChatController.appPrefs.simplexLinkMode.get()) } val clipboardHasText = mutableStateOf(false) + val networkInfo = mutableStateOf(UserNetworkInfo(networkType = UserNetworkType.OTHER, online = true)) val updatingChatsMutex: Mutex = Mutex() val changingActiveUserMutex: Mutex = Mutex() 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 7848f9942e..484990bfc0 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 @@ -358,6 +358,8 @@ object ChatController { var lastMsgReceivedTimestamp: Long = System.currentTimeMillis() private set + fun hasChatCtrl() = ctrl != -1L && ctrl != null + private suspend fun currentUserId(funcName: String): Long = changingActiveUserMutex.withLock { val userId = chatModel.currentUser.value?.userId if (userId == null) { @@ -879,6 +881,9 @@ object ChatController { } } + suspend fun apiSetNetworkInfo(networkInfo: UserNetworkInfo): Boolean = + sendCommandOkResp(null, CC.APISetNetworkInfo(networkInfo)) + suspend fun apiSetMemberSettings(rh: Long?, groupId: Long, groupMemberId: Long, memberSettings: GroupMemberSettings): Boolean = sendCommandOkResp(rh, CC.ApiSetMemberSettings(groupId, groupMemberId, memberSettings)) @@ -2413,6 +2418,7 @@ sealed class CC { class APIGetChatItemTTL(val userId: Long): CC() class APISetNetworkConfig(val networkConfig: NetCfg): CC() class APIGetNetworkConfig: CC() + class APISetNetworkInfo(val networkInfo: UserNetworkInfo): CC() class APISetChatSettings(val type: ChatType, val id: Long, val chatSettings: ChatSettings): CC() class ApiSetMemberSettings(val groupId: Long, val groupMemberId: Long, val memberSettings: GroupMemberSettings): CC() class APIContactInfo(val contactId: Long): CC() @@ -2555,6 +2561,7 @@ sealed class CC { is APIGetChatItemTTL -> "/_ttl $userId" is APISetNetworkConfig -> "/_network ${json.encodeToString(networkConfig)}" is APIGetNetworkConfig -> "/network" + is APISetNetworkInfo -> "/_network info ${json.encodeToString(networkInfo)}" is APISetChatSettings -> "/_settings ${chatRef(type, id)} ${json.encodeToString(chatSettings)}" is ApiSetMemberSettings -> "/_member settings #$groupId $groupMemberId ${json.encodeToString(memberSettings)}" is APIContactInfo -> "/_info @$contactId" @@ -2692,6 +2699,7 @@ sealed class CC { is APIGetChatItemTTL -> "apiGetChatItemTTL" is APISetNetworkConfig -> "apiSetNetworkConfig" is APIGetNetworkConfig -> "apiGetNetworkConfig" + is APISetNetworkInfo -> "apiSetNetworkInfo" is APISetChatSettings -> "apiSetChatSettings" is ApiSetMemberSettings -> "apiSetMemberSettings" is APIContactInfo -> "apiContactInfo" @@ -5531,3 +5539,26 @@ enum class AppSettingsLockScreenCalls { } } } + +@Serializable +data class UserNetworkInfo( + val networkType: UserNetworkType, + val online: Boolean, +) + +enum class UserNetworkType { + @SerialName("none") NONE, + @SerialName("cellular") CELLULAR, + @SerialName("wifi") WIFI, + @SerialName("ethernet") ETHERNET, + @SerialName("other") OTHER; + + val text: String + get() = when (this) { + NONE -> generalGetString(MR.strings.network_type_no_network_connection) + CELLULAR -> generalGetString(MR.strings.network_type_cellular) + WIFI -> generalGetString(MR.strings.network_type_network_wifi) + ETHERNET -> generalGetString(MR.strings.network_type_ethernet) + OTHER -> generalGetString(MR.strings.network_type_other) + } +} diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt index f1a6d35e45..00370f5231 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt @@ -9,7 +9,6 @@ import chat.simplex.common.views.helpers.DatabaseUtils.randomDatabasePassword import chat.simplex.common.views.onboarding.OnboardingStage import chat.simplex.res.MR import kotlinx.coroutines.* -import kotlinx.serialization.decodeFromString import java.io.File import java.nio.ByteBuffer @@ -88,6 +87,7 @@ suspend fun initChatController(useKey: String? = null, confirmMigrations: Migrat Log.d(TAG, "Unable to migrate successfully: $res") return } + platform.androidRestartNetworkObserver() controller.apiSetTempFolder(coreTmpDir.absolutePath) controller.apiSetFilesFolder(appFilesDir.absolutePath) if (appPlatform.isDesktop) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Platform.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Platform.kt index 5ca6dbdeb3..f61c5bc83e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Platform.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Platform.kt @@ -23,6 +23,7 @@ interface PlatformInterface { fun androidStartCallActivity(acceptCall: Boolean, remoteHostId: Long? = null, chatId: ChatId? = null) {} fun androidPictureInPictureAllowed(): Boolean = true fun androidCallEnded() {} + fun androidRestartNetworkObserver() {} @Composable fun androidLockPortraitOrientation() {} suspend fun androidAskToAllowBackgroundCalls(): Boolean = true @Composable fun desktopScrollBarComponents(): Triple, Modifier, MutableState> = remember { Triple(Animatable(0f), Modifier, mutableStateOf(Job())) } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt index ae09163591..182861c0d6 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt @@ -15,7 +15,6 @@ import chat.simplex.res.MR import com.charleskorn.kaml.decodeFromStream import dev.icerock.moko.resources.StringResource import kotlinx.coroutines.* -import kotlinx.serialization.decodeFromString import kotlinx.serialization.encodeToString import java.io.* import java.net.URI diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt index e1f050b0b6..4d33040e29 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/NetworkAndServers.kt @@ -2,6 +2,7 @@ package chat.simplex.common.views.usersettings import SectionBottomSpacer import SectionCustomFooter +import SectionDividerSpaced import SectionItemView import SectionItemWithValue import SectionView @@ -21,12 +22,12 @@ import androidx.compose.ui.text.* import androidx.compose.ui.text.font.* import androidx.compose.ui.text.input.* import androidx.compose.desktop.ui.tooling.preview.Preview +import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.common.model.* -import chat.simplex.common.platform.ColumnWithScrollBar -import chat.simplex.common.platform.chatModel +import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* import chat.simplex.common.views.chat.item.ClickableText import chat.simplex.common.views.helpers.* @@ -190,6 +191,16 @@ fun NetworkAndServersView() { SectionView(generalGetString(MR.strings.settings_section_title_calls)) { SettingsActionItem(painterResource(MR.images.ic_electrical_services), stringResource(MR.strings.webrtc_ice_servers), { ModalManager.start.showModal { RTCServersView(m) } }) } + + if (appPlatform.isAndroid) { + SectionDividerSpaced() + SectionView(generalGetString(MR.strings.settings_section_title_network_connection).uppercase()) { + val info = remember { chatModel.networkInfo }.value + SettingsActionItemWithContent(icon = null, info.networkType.text) { + Icon(painterResource(MR.images.ic_circle_filled), stringResource(MR.strings.icon_descr_server_status_connected), tint = if (info.online) Color.Green else MaterialTheme.colors.error) + } + } + } SectionBottomSpacer() } } 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 5595f319ea..eafe959640 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1017,6 +1017,7 @@ THEMES MESSAGES AND FILES CALLS + Network connection Incognito mode EXPERIMENTAL Use from desktop @@ -1925,4 +1926,11 @@ Check your internet connection and try again Warning: the archive will be deleted.]]> Error verifying passphrase: + + + No network connection + Cellular + WiFi + Wired ethernet + Other \ No newline at end of file From 0deb6a4eb1cfbb163e32a078b250ee3585017d3c Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 11 Apr 2024 16:58:56 +0400 Subject: [PATCH 020/147] ui: forward types (#4008) * ios: forward types * android * move --- apps/ios/SimpleXChat/APITypes.swift | 1 + apps/ios/SimpleXChat/ChatTypes.swift | 13 +++++++++++++ .../chat/simplex/common/model/ChatModel.kt | 17 ++++++++++++++++- .../chat/simplex/common/model/SimpleXAPI.kt | 2 ++ 4 files changed, 32 insertions(+), 1 deletion(-) diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index c0ff697a1d..c599b720ae 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -1717,6 +1717,7 @@ public enum ChatErrorType: Decodable { case fallbackToSMPProhibited(fileId: Int64) case inlineFileProhibited(fileId: Int64) case invalidQuote + case invalidForward case invalidChatItemUpdate case invalidChatItemDelete case hasCurrentCall diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index ed62b5c9ac..7d8ae53ce0 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -2546,6 +2546,7 @@ public struct CIMeta: Decodable { public var itemStatus: CIStatus public var createdAt: Date public var updatedAt: Date + public var itemForwarded: CIForwardedFrom? public var itemDeleted: CIDeleted? public var itemEdited: Bool public var itemTimed: CITimed? @@ -2713,6 +2714,17 @@ public enum CIDeleted: Decodable { } } +public enum MsgDirection: Decodable { + case rcv + case snd +} + +public enum CIForwardedFrom: Decodable { + case unknown + case contact(chatName: String, msgDir: MsgDirection, contactId: Int64?, chatItemId: Int64?) + case group(chatName: String, msgDir: MsgDirection, groupId: Int64?, chatItemId: Int64?) +} + public enum CIDeleteMode: String, Decodable { case cidmBroadcast = "broadcast" case cidmInternal = "internal" @@ -3751,6 +3763,7 @@ public enum ChatItemTTL: Hashable, Identifiable, Comparable { public struct ChatItemInfo: Decodable { public var itemVersions: [ChatItemVersion] public var memberDeliveryStatuses: [MemberDeliveryStatus]? + public var forwardedFromChatItem: AChatItem? } public struct ChatItemVersion: Decodable { 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 0e15079ac5..9636199a14 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 @@ -1884,6 +1884,7 @@ data class ChatItem ( status: CIStatus = CIStatus.SndNew(), quotedItem: CIQuote? = null, file: CIFile? = null, + itemForwarded: CIForwardedFrom? = null, itemDeleted: CIDeleted? = null, itemEdited: Boolean = false, itemTimed: CITimed? = null, @@ -2258,6 +2259,19 @@ sealed class CIDeleted { @Serializable @SerialName("moderated") class Moderated(val deletedTs: Instant?, val byGroupMember: GroupMember): CIDeleted() } +@Serializable +enum class MsgDirection { + @SerialName("rcv") Rcv, + @SerialName("snd") Snd; +} + +@Serializable +sealed class CIForwardedFrom { + @Serializable @SerialName("unknown") object Unknown: CIForwardedFrom() + @Serializable @SerialName("contact") class Contact(val chatName: String, val msgDir: MsgDirection, val contactId: Long? = null, val chatItemId: Long? = null): CIForwardedFrom() + @Serializable @SerialName("group") class Group(val chatName: String, val msgDir: MsgDirection, val groupId: Long? = null, val chatItemId: Long? = null): CIForwardedFrom() +} + @Serializable enum class CIDeleteMode(val deleteMode: String) { @SerialName("internal") cidmInternal("internal"), @@ -3252,7 +3266,8 @@ sealed class ChatItemTTL: Comparable { @Serializable class ChatItemInfo( val itemVersions: List, - val memberDeliveryStatuses: List? + val memberDeliveryStatuses: List?, + val forwardedFromChatItem: AChatItem? ) @Serializable 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 484990bfc0..b70c970623 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 @@ -4772,6 +4772,7 @@ sealed class ChatErrorType { is FallbackToSMPProhibited -> "fallbackToSMPProhibited" is InlineFileProhibited -> "inlineFileProhibited" is InvalidQuote -> "invalidQuote" + is InvalidForward -> "invalidForward" is InvalidChatItemUpdate -> "invalidChatItemUpdate" is InvalidChatItemDelete -> "invalidChatItemDelete" is HasCurrentCall -> "hasCurrentCall" @@ -4850,6 +4851,7 @@ sealed class ChatErrorType { @Serializable @SerialName("fallbackToSMPProhibited") class FallbackToSMPProhibited(val fileId: Long): ChatErrorType() @Serializable @SerialName("inlineFileProhibited") class InlineFileProhibited(val fileId: Long): ChatErrorType() @Serializable @SerialName("invalidQuote") object InvalidQuote: ChatErrorType() + @Serializable @SerialName("invalidForward") object InvalidForward: ChatErrorType() @Serializable @SerialName("invalidChatItemUpdate") object InvalidChatItemUpdate: ChatErrorType() @Serializable @SerialName("invalidChatItemDelete") object InvalidChatItemDelete: ChatErrorType() @Serializable @SerialName("hasCurrentCall") object HasCurrentCall: ChatErrorType() From ee53377070833feafa1eaa0e383f4839fedb93c8 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:55:04 +0400 Subject: [PATCH 021/147] core: fix forwarded item deletion (#4018) --- src/Simplex/Chat.hs | 8 ++++---- src/Simplex/Chat/Messages.hs | 11 +++++++---- src/Simplex/Chat/Store/Messages.hs | 4 ++-- tests/ChatTests/Forward.hs | 22 ++++++++++++++++++++++ 4 files changed, 35 insertions(+), 10 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index ffb04dc9c3..441b7994b6 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -787,8 +787,8 @@ processChatCommand' vr = \case CTContactConnection -> pure $ chatCmdError (Just user) "not supported" APIDeleteChatItem (ChatRef cType chatId) itemId mode -> withUser $ \user -> case cType of CTDirect -> withContactLock "deleteChatItem" chatId $ do - (ct, CChatItem msgDir ci@ChatItem {meta = CIMeta {itemSharedMsgId, editable}}) <- withStore $ \db -> (,) <$> getContact db vr user chatId <*> getDirectChatItem db user chatId itemId - case (mode, msgDir, itemSharedMsgId, editable) of + (ct, CChatItem msgDir ci@ChatItem {meta = CIMeta {itemSharedMsgId, deletable}}) <- withStore $ \db -> (,) <$> getContact db vr user chatId <*> getDirectChatItem db user chatId itemId + case (mode, msgDir, itemSharedMsgId, deletable) of (CIDMInternal, _, _, _) -> deleteDirectCI user ct ci True False (CIDMBroadcast, SMDSnd, Just itemSharedMId, True) -> do assertDirectAllowed user MDSnd ct XMsgDel_ @@ -799,8 +799,8 @@ processChatCommand' vr = \case (CIDMBroadcast, _, _, _) -> throwChatError CEInvalidChatItemDelete CTGroup -> withGroupLock "deleteChatItem" chatId $ do Group gInfo ms <- withStore $ \db -> getGroup db vr user chatId - CChatItem msgDir ci@ChatItem {meta = CIMeta {itemSharedMsgId, editable}} <- withStore $ \db -> getGroupChatItem db user chatId itemId - case (mode, msgDir, itemSharedMsgId, editable) of + CChatItem msgDir ci@ChatItem {meta = CIMeta {itemSharedMsgId, deletable}} <- withStore $ \db -> getGroupChatItem db user chatId itemId + case (mode, msgDir, itemSharedMsgId, deletable) of (CIDMInternal, _, _, _) -> deleteGroupCI user gInfo ci True False Nothing =<< liftIO getCurrentTime (CIDMBroadcast, SMDSnd, Just itemSharedMId, True) -> do assertUserGroupRole gInfo GRObserver -- can still delete messages sent earlier diff --git a/src/Simplex/Chat/Messages.hs b/src/Simplex/Chat/Messages.hs index 2aa781d45e..a6d5761b5f 100644 --- a/src/Simplex/Chat/Messages.hs +++ b/src/Simplex/Chat/Messages.hs @@ -344,6 +344,7 @@ data CIMeta (c :: ChatType) (d :: MsgDirection) = CIMeta itemEdited :: Bool, itemTimed :: Maybe CITimed, itemLive :: Maybe Bool, + deletable :: Bool, editable :: Bool, forwardedByMember :: Maybe GroupMemberId, createdAt :: UTCTime, @@ -353,13 +354,14 @@ data CIMeta (c :: ChatType) (d :: MsgDirection) = CIMeta mkCIMeta :: forall c d. ChatTypeI c => ChatItemId -> CIContent d -> Text -> CIStatus d -> Maybe SharedMsgId -> Maybe CIForwardedFrom -> Maybe (CIDeleted c) -> Bool -> Maybe CITimed -> Maybe Bool -> UTCTime -> ChatItemTs -> Maybe GroupMemberId -> UTCTime -> UTCTime -> CIMeta c d mkCIMeta itemId itemContent itemText itemStatus itemSharedMsgId itemForwarded itemDeleted itemEdited itemTimed itemLive currentTs itemTs forwardedByMember createdAt updatedAt = - let editable = case itemContent of + let deletable = case itemContent of CISndMsgContent _ -> case chatTypeI @c of - SCTLocal -> isNothing itemDeleted && isNothing itemForwarded - _ -> diffUTCTime currentTs itemTs < nominalDay && isNothing itemDeleted && isNothing itemForwarded + SCTLocal -> isNothing itemDeleted + _ -> diffUTCTime currentTs itemTs < nominalDay && isNothing itemDeleted _ -> False - in CIMeta {itemId, itemTs, itemText, itemStatus, itemSharedMsgId, itemForwarded, itemDeleted, itemEdited, itemTimed, itemLive, editable, forwardedByMember, createdAt, updatedAt} + editable = deletable && isNothing itemForwarded + in CIMeta {itemId, itemTs, itemText, itemStatus, itemSharedMsgId, itemForwarded, itemDeleted, itemEdited, itemTimed, itemLive, deletable, editable, forwardedByMember, createdAt, updatedAt} dummyMeta :: ChatItemId -> UTCTime -> Text -> CIMeta c 'MDSnd dummyMeta itemId ts itemText = @@ -374,6 +376,7 @@ dummyMeta itemId ts itemText = itemEdited = False, itemTimed = Nothing, itemLive = Nothing, + deletable = False, editable = False, forwardedByMember = Nothing, createdAt = ts, diff --git a/src/Simplex/Chat/Store/Messages.hs b/src/Simplex/Chat/Store/Messages.hs index 11068ff5cb..2e4ee6e48f 100644 --- a/src/Simplex/Chat/Store/Messages.hs +++ b/src/Simplex/Chat/Store/Messages.hs @@ -1874,7 +1874,7 @@ updateGroupChatItemModerated db User {userId} GroupInfo {groupId} ci m@GroupMemb WHERE user_id = ? AND group_id = ? AND chat_item_id = ? |] (deletedTs, groupMemberId, toContent, toText, currentTs, userId, groupId, itemId) - pure $ ci {content = toContent, meta = (meta ci) {itemText = toText, itemDeleted = Just (CIModerated (Just deletedTs) m), editable = False}, formattedText = Nothing} + pure $ ci {content = toContent, meta = (meta ci) {itemText = toText, itemDeleted = Just (CIModerated (Just deletedTs) m), editable = False, deletable = False}, formattedText = Nothing} updateGroupCIBlockedByAdmin :: DB.Connection -> User -> GroupInfo -> ChatItem 'CTGroup d -> UTCTime -> IO (ChatItem 'CTGroup d) updateGroupCIBlockedByAdmin db User {userId} GroupInfo {groupId} ci deletedTs = do @@ -1891,7 +1891,7 @@ updateGroupCIBlockedByAdmin db User {userId} GroupInfo {groupId} ci deletedTs = WHERE user_id = ? AND group_id = ? AND chat_item_id = ? |] (DBCIBlockedByAdmin, deletedTs, currentTs, userId, groupId, itemId) - pure $ ci {meta = (meta ci) {itemDeleted = Just (CIBlockedByAdmin $ Just deletedTs), editable = False}, formattedText = Nothing} + pure $ ci {meta = (meta ci) {itemDeleted = Just (CIBlockedByAdmin $ Just deletedTs), editable = False, deletable = False}, formattedText = Nothing} pattern DBCINotDeleted :: Int pattern DBCINotDeleted = 0 diff --git a/tests/ChatTests/Forward.hs b/tests/ChatTests/Forward.hs index 6aea8447b9..4bd75d0e5b 100644 --- a/tests/ChatTests/Forward.hs +++ b/tests/ChatTests/Forward.hs @@ -25,6 +25,7 @@ chatForwardTests = do it "preserve original forward info" testForwardPreserveInfo it "quoted message is not included" testForwardQuotedMsg it "editing is prohibited" testForwardEditProhibited + it "delete for other" testForwardDeleteForOther describe "forward files" $ do it "from contact to contact" testForwardFileNoFilesFolder it "with relative paths: from contact to contact" testForwardFileContactToContact @@ -307,6 +308,27 @@ testForwardEditProhibited = alice ##> ("/_update item @3 " <> msgId <> " text hey edited") alice <## "cannot update this item" +testForwardDeleteForOther :: HasCallStack => FilePath -> IO () +testForwardDeleteForOther = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + connectUsers alice bob + connectUsers alice cath + + bob #> "@alice hey" + alice <# "bob> hey" + + alice `send` "@cath <- @bob hey" + alice <# "@cath <- @bob" + alice <## " hey" + cath <# "alice> -> forwarded" + cath <## " hey" + + msgId <- lastItemId alice + alice ##> ("/_delete item @3 " <> msgId <> " broadcast") + alice <## "message marked deleted" + cath <# "alice> [marked deleted] hey" + testForwardFileNoFilesFolder :: HasCallStack => FilePath -> IO () testForwardFileNoFilesFolder = testChat3 aliceProfile bobProfile cathProfile $ From 29941729d2078b8a1facf852278e816c61f65e17 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 12 Apr 2024 12:56:09 +0400 Subject: [PATCH 022/147] ui: forwarded item header (#4017) --- apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift | 6 ++++-- apps/ios/Shared/Views/Chat/ChatItemView.swift | 2 +- apps/ios/Shared/Views/Chat/ChatView.swift | 2 +- .../kotlin/chat/simplex/common/model/ChatModel.kt | 9 +++++++-- .../kotlin/chat/simplex/common/views/chat/ChatView.kt | 2 +- .../chat/simplex/common/views/chat/item/ChatItemView.kt | 2 +- .../simplex/common/views/chat/item/FramedItemView.kt | 9 +++++++-- .../common/src/commonMain/resources/MR/base/strings.xml | 1 + .../src/commonMain/resources/MR/images/ic_forward.svg | 1 + 9 files changed, 24 insertions(+), 10 deletions(-) create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_forward.svg diff --git a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift index 3475e7a8b6..3e292c131b 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift @@ -65,6 +65,8 @@ struct FramedItemView: View { } } } + } else if chatItem.meta.itemForwarded != nil { + framedItemHeader(icon: "arrowshape.turn.up.forward", caption: Text("forwarded").italic()) } ChatItemContentView(chat: chat, chatItem: chatItem, revealed: $revealed, msgContentView: framedMsgContentView) @@ -353,9 +355,9 @@ private struct MetaColorPreferenceKey: PreferenceKey { func onlyImageOrVideo(_ ci: ChatItem) -> Bool { if case let .image(text, _) = ci.content.msgContent { - return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && text == "" + return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && ci.meta.itemForwarded == nil && text == "" } else if case let .video(text, _, _) = ci.content.msgContent { - return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && text == "" + return ci.meta.itemDeleted == nil && !ci.meta.isLive && ci.quotedItem == nil && ci.meta.itemForwarded == nil && text == "" } return false } diff --git a/apps/ios/Shared/Views/Chat/ChatItemView.swift b/apps/ios/Shared/Views/Chat/ChatItemView.swift index da9dc523e1..8fe2b71d09 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemView.swift @@ -46,7 +46,7 @@ struct ChatItemView: View { let ci = chatItem if chatItem.meta.itemDeleted != nil && (!revealed || chatItem.isDeletedContent) { MarkedDeletedItemView(chat: chat, chatItem: chatItem, revealed: $revealed) - } else if ci.quotedItem == nil && ci.meta.itemDeleted == nil && !ci.meta.isLive { + } else if ci.quotedItem == nil && ci.meta.itemForwarded == nil && ci.meta.itemDeleted == nil && !ci.meta.isLive { if let mc = ci.content.msgContent, mc.isText && isShortEmoji(ci.content.text) { EmojiItemView(chat: chat, chatItem: ci) } else if ci.content.text.isEmpty, case let .voice(_, duration) = ci.content.msgContent { diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index cd2aa55bc3..21b9fa00b3 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -296,7 +296,7 @@ struct ChatView: View { } private func voiceWithoutFrame(_ ci: ChatItem) -> Bool { - ci.content.msgContent?.isVoice == true && ci.content.text.count == 0 && ci.quotedItem == nil + ci.content.msgContent?.isVoice == true && ci.content.text.count == 0 && ci.quotedItem == nil && ci.meta.itemForwarded == nil } private func chatItemsList() -> some View { 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 9636199a14..bdda519c2b 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 @@ -1892,7 +1892,7 @@ data class ChatItem ( ) = ChatItem( chatDir = dir, - meta = CIMeta.getSample(id, ts, text, status, itemDeleted, itemEdited, itemTimed, editable), + meta = CIMeta.getSample(id, ts, text, status, itemForwarded, itemDeleted, itemEdited, itemTimed, editable), content = CIContent.SndMsgContent(msgContent = MsgContent.MCText(text)), quotedItem = quotedItem, reactions = listOf(), @@ -1976,6 +1976,7 @@ data class ChatItem ( itemStatus = CIStatus.RcvRead(), createdAt = Clock.System.now(), updatedAt = Clock.System.now(), + itemForwarded = null, itemDeleted = null, itemEdited = false, itemTimed = null, @@ -1997,6 +1998,7 @@ data class ChatItem ( itemStatus = CIStatus.RcvRead(), createdAt = Clock.System.now(), updatedAt = Clock.System.now(), + itemForwarded = null, itemDeleted = null, itemEdited = false, itemTimed = null, @@ -2097,6 +2099,7 @@ data class CIMeta ( val itemStatus: CIStatus, val createdAt: Instant, val updatedAt: Instant, + val itemForwarded: CIForwardedFrom?, val itemDeleted: CIDeleted?, val itemEdited: Boolean, val itemTimed: CITimed?, @@ -2120,7 +2123,7 @@ data class CIMeta ( companion object { fun getSample( id: Long, ts: Instant, text: String, status: CIStatus = CIStatus.SndNew(), - itemDeleted: CIDeleted? = null, itemEdited: Boolean = false, itemTimed: CITimed? = null, itemLive: Boolean = false, editable: Boolean = true + itemForwarded: CIForwardedFrom? = null, itemDeleted: CIDeleted? = null, itemEdited: Boolean = false, itemTimed: CITimed? = null, itemLive: Boolean = false, editable: Boolean = true ): CIMeta = CIMeta( itemId = id, @@ -2129,6 +2132,7 @@ data class CIMeta ( itemStatus = status, createdAt = ts, updatedAt = ts, + itemForwarded = itemForwarded, itemDeleted = itemDeleted, itemEdited = itemEdited, itemTimed = itemTimed, @@ -2145,6 +2149,7 @@ data class CIMeta ( itemStatus = CIStatus.SndNew(), createdAt = Clock.System.now(), updatedAt = Clock.System.now(), + itemForwarded = null, itemDeleted = null, itemEdited = false, itemTimed = null, 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 702dd9fec5..4761b938b9 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 @@ -962,7 +962,7 @@ fun BoxWithConstraintsScope.ChatItemsList( @Composable fun ChatItemView(cItem: ChatItem, range: IntRange?, prevItem: ChatItem?) { - val voiceWithTransparentBack = cItem.content.msgContent is MsgContent.MCVoice && cItem.content.text.isEmpty() && cItem.quotedItem == null + val voiceWithTransparentBack = cItem.content.msgContent is MsgContent.MCVoice && cItem.content.text.isEmpty() && cItem.quotedItem == null && cItem.meta.itemForwarded == null if (chat.chatInfo is ChatInfo.Group) { if (cItem.chatDir is CIDirection.GroupRcv) { val member = cItem.chatDir.groupMember diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index 64741f7466..b4f7410da2 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -304,7 +304,7 @@ fun ChatItemView( MarkedDeletedItemView(cItem, cInfo.timedMessagesTTL, revealed) MarkedDeletedItemDropdownMenu() } else { - if (cItem.quotedItem == null && cItem.meta.itemDeleted == null && !cItem.meta.isLive) { + if (cItem.quotedItem == null && cItem.meta.itemForwarded == null && cItem.meta.itemDeleted == null && !cItem.meta.isLive) { if (mc is MsgContent.MCText && isShortEmoji(cItem.content.text)) { EmojiItemView(cItem, cInfo.timedMessagesTTL) } else if (mc is MsgContent.MCVoice && cItem.content.text.isEmpty()) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt index 641e6affab..3535c8fe26 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt @@ -96,6 +96,7 @@ fun FramedItemView( .fillMaxWidth() .padding(start = 8.dp, top = 6.dp, end = 12.dp, bottom = if (ci.quotedItem == null) 6.dp else 0.dp), horizontalArrangement = Arrangement.spacedBy(4.dp), + verticalAlignment = Alignment.CenterVertically ) { if (icon != null) { Icon( @@ -184,7 +185,7 @@ fun FramedItemView( } val transparentBackground = (ci.content.msgContent is MsgContent.MCImage || ci.content.msgContent is MsgContent.MCVideo) && - !ci.meta.isLive && ci.content.text.isEmpty() && ci.quotedItem == null + !ci.meta.isLive && ci.content.text.isEmpty() && ci.quotedItem == null && ci.meta.itemForwarded == null val sentColor = CurrentColors.collectAsState().value.appColors.sentMessage val receivedColor = CurrentColors.collectAsState().value.appColors.receivedMessage @@ -219,7 +220,11 @@ fun FramedItemView( } else if (ci.meta.isLive) { FramedItemHeader(stringResource(MR.strings.live), false) } - ci.quotedItem?.let { ciQuoteView(it) } + if (ci.quotedItem != null) { + ciQuoteView(ci.quotedItem) + } else if (ci.meta.itemForwarded != null) { + FramedItemHeader(stringResource(MR.strings.forwarded_description), true, painterResource(MR.images.ic_forward)) + } if (ci.file == null && ci.formattedText == null && !ci.meta.isLive && isShortEmoji(ci.content.text)) { Box(Modifier.padding(vertical = 6.dp, horizontal = 12.dp)) { Column( 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 eafe959640..c4d9e191c6 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -46,6 +46,7 @@ invalid message format LIVE moderated + forwarded invalid chat invalid data error showing message diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_forward.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_forward.svg new file mode 100644 index 0000000000..7ad0b14b70 --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_forward.svg @@ -0,0 +1 @@ + \ No newline at end of file From e10c63dc64f37fed61f5b23cd322e58d66a3d3fb Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 12 Apr 2024 13:10:47 +0400 Subject: [PATCH 023/147] ui: deletable field (#4019) --- apps/ios/Shared/Views/Chat/ChatView.swift | 2 +- apps/ios/SimpleXChat/ChatTypes.swift | 11 ++++++++--- .../kotlin/chat/simplex/common/model/ChatModel.kt | 11 +++++++++-- .../simplex/common/views/chat/item/ChatItemView.kt | 2 +- 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 21b9fa00b3..34565193ff 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -667,7 +667,7 @@ struct ChatView: View { Button("Delete for me", role: .destructive) { deleteMessage(.cidmInternal) } - if let di = deletingItem, di.meta.editable && !di.localNote { + if let di = deletingItem, di.meta.deletable && !di.localNote { Button(broadcastDeleteButtonText, role: .destructive) { deleteMessage(.cidmBroadcast) } diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index 7d8ae53ce0..7990f1caea 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -2372,10 +2372,10 @@ public struct ChatItem: Identifiable, Decodable { } } - public static func getSample (_ id: Int64, _ dir: CIDirection, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, quotedItem: CIQuote? = nil, file: CIFile? = nil, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, editable: Bool = true) -> ChatItem { + public static func getSample (_ id: Int64, _ dir: CIDirection, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, quotedItem: CIQuote? = nil, file: CIFile? = nil, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, deletable: Bool = true, editable: Bool = true) -> ChatItem { ChatItem( chatDir: dir, - meta: CIMeta.getSample(id, ts, text, status, itemDeleted: itemDeleted, itemEdited: itemEdited, itemLive: itemLive, editable: editable), + meta: CIMeta.getSample(id, ts, text, status, itemDeleted: itemDeleted, itemEdited: itemEdited, itemLive: itemLive, deletable: deletable, editable: editable), content: .sndMsgContent(msgContent: .text(text)), quotedItem: quotedItem, file: file @@ -2466,6 +2466,7 @@ public struct ChatItem: Identifiable, Decodable { itemDeleted: nil, itemEdited: false, itemLive: false, + deletable: false, editable: false ), content: .rcvDeleted(deleteMode: .cidmBroadcast), @@ -2487,6 +2488,7 @@ public struct ChatItem: Identifiable, Decodable { itemDeleted: nil, itemEdited: false, itemLive: true, + deletable: false, editable: false ), content: .sndMsgContent(msgContent: .text("")), @@ -2551,6 +2553,7 @@ public struct CIMeta: Decodable { public var itemEdited: Bool public var itemTimed: CITimed? public var itemLive: Bool? + public var deletable: Bool public var editable: Bool public var timestampText: Text { get { formatTimestampText(itemTs) } } @@ -2567,7 +2570,7 @@ public struct CIMeta: Decodable { itemStatus.statusIcon(metaColor) } - public static func getSample(_ id: Int64, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, editable: Bool = true) -> CIMeta { + public static func getSample(_ id: Int64, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, deletable: Bool = true, editable: Bool = true) -> CIMeta { CIMeta( itemId: id, itemTs: ts, @@ -2578,6 +2581,7 @@ public struct CIMeta: Decodable { itemDeleted: itemDeleted, itemEdited: itemEdited, itemLive: itemLive, + deletable: deletable, editable: editable ) } @@ -2593,6 +2597,7 @@ public struct CIMeta: Decodable { itemDeleted: nil, itemEdited: false, itemLive: false, + deletable: false, editable: false ) } 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 bdda519c2b..8233a7cc5d 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 @@ -1888,11 +1888,12 @@ data class ChatItem ( itemDeleted: CIDeleted? = null, itemEdited: Boolean = false, itemTimed: CITimed? = null, + deletable: Boolean = true, editable: Boolean = true ) = ChatItem( chatDir = dir, - meta = CIMeta.getSample(id, ts, text, status, itemForwarded, itemDeleted, itemEdited, itemTimed, editable), + meta = CIMeta.getSample(id, ts, text, status, itemForwarded, itemDeleted, itemEdited, itemTimed, deletable, editable), content = CIContent.SndMsgContent(msgContent = MsgContent.MCText(text)), quotedItem = quotedItem, reactions = listOf(), @@ -1981,6 +1982,7 @@ data class ChatItem ( itemEdited = false, itemTimed = null, itemLive = false, + deletable = false, editable = false ), content = CIContent.RcvDeleted(deleteMode = CIDeleteMode.cidmBroadcast), @@ -2003,6 +2005,7 @@ data class ChatItem ( itemEdited = false, itemTimed = null, itemLive = true, + deletable = false, editable = false ), content = CIContent.SndMsgContent(MsgContent.MCText("")), @@ -2104,6 +2107,7 @@ data class CIMeta ( val itemEdited: Boolean, val itemTimed: CITimed?, val itemLive: Boolean?, + val deletable: Boolean, val editable: Boolean ) { val timestampText: String get() = getTimestampText(itemTs) @@ -2123,7 +2127,8 @@ data class CIMeta ( companion object { fun getSample( id: Long, ts: Instant, text: String, status: CIStatus = CIStatus.SndNew(), - itemForwarded: CIForwardedFrom? = null, itemDeleted: CIDeleted? = null, itemEdited: Boolean = false, itemTimed: CITimed? = null, itemLive: Boolean = false, editable: Boolean = true + itemForwarded: CIForwardedFrom? = null, itemDeleted: CIDeleted? = null, itemEdited: Boolean = false, + itemTimed: CITimed? = null, itemLive: Boolean = false, deletable: Boolean = true, editable: Boolean = true ): CIMeta = CIMeta( itemId = id, @@ -2137,6 +2142,7 @@ data class CIMeta ( itemEdited = itemEdited, itemTimed = itemTimed, itemLive = itemLive, + deletable = deletable, editable = editable ) @@ -2154,6 +2160,7 @@ data class CIMeta ( itemEdited = false, itemTimed = null, itemLive = false, + deletable = false, editable = false ) } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index b4f7410da2..6f6deeb6a4 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -724,7 +724,7 @@ fun deleteMessageAlertDialog(chatItem: ChatItem, questionText: String, deleteMes deleteMessage(chatItem.id, CIDeleteMode.cidmInternal) AlertManager.shared.hideAlert() }) { Text(stringResource(MR.strings.for_me_only), color = MaterialTheme.colors.error) } - if (chatItem.meta.editable && !chatItem.localNote) { + if (chatItem.meta.deletable && !chatItem.localNote) { Spacer(Modifier.padding(horizontal = 4.dp)) TextButton(onClick = { deleteMessage(chatItem.id, CIDeleteMode.cidmBroadcast) From 182225a5b10cb93130ac3cff189f1ec6d4a7be53 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 12 Apr 2024 11:29:58 +0100 Subject: [PATCH 024/147] ios: role-based preferences, SimpleX links preference (#4021) * ios: role-based preferences, SimpleX links preference * disable some options --- apps/ios/Shared/Model/ChatModel.swift | 18 +++ .../Chat/ChatItem/CIChatFeatureView.swift | 11 +- apps/ios/Shared/Views/Chat/ChatItemView.swift | 8 +- .../Chat/ComposeMessage/ComposeView.swift | 67 +++++++-- .../Chat/ComposeMessage/SendMessageView.swift | 4 +- .../Chat/Group/GroupMemberInfoView.swift | 4 +- .../Chat/Group/GroupPreferencesView.swift | 42 +++++- apps/ios/SimpleXChat/ChatTypes.swift | 138 ++++++++++++++---- 8 files changed, 235 insertions(+), 57 deletions(-) diff --git a/apps/ios/Shared/Model/ChatModel.swift b/apps/ios/Shared/Model/ChatModel.swift index 90a9406627..a4651e1d42 100644 --- a/apps/ios/Shared/Model/ChatModel.swift +++ b/apps/ios/Shared/Model/ChatModel.swift @@ -779,6 +779,24 @@ final class Chat: ObservableObject, Identifiable { var viewId: String { get { "\(chatInfo.id) \(created.timeIntervalSince1970)" } } + func groupFeatureEnabled(_ feature: GroupFeature) -> Bool { + if case let .group(groupInfo) = self.chatInfo { + let p = groupInfo.fullGroupPreferences + return switch feature { + case .timedMessages: p.timedMessages.on + case .directMessages: p.directMessages.on(for: groupInfo.membership) + case .fullDelete: p.fullDelete.on + case .reactions: p.reactions.on + case .voice: p.voice.on(for: groupInfo.membership) + case .files: p.files.on(for: groupInfo.membership) + case .simplexLinks: p.simplexLinks.on(for: groupInfo.membership) + case .history: p.history.on + } + } else { + return true + } + } + public static var sampleData: Chat = Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []) } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIChatFeatureView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIChatFeatureView.swift index 03afa30331..5c9ea0f6d8 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIChatFeatureView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIChatFeatureView.swift @@ -11,6 +11,7 @@ import SimpleXChat struct CIChatFeatureView: View { @EnvironmentObject var m: ChatModel + @ObservedObject var chat: Chat var chatItem: ChatItem @Binding var revealed: Bool var feature: Feature @@ -18,7 +19,7 @@ struct CIChatFeatureView: View { var iconColor: Color var body: some View { - if !revealed, let fs = mergedFeautures() { + if !revealed, let fs = mergedFeatures() { HStack { ForEach(fs, content: featureIconView) } @@ -47,7 +48,7 @@ struct CIChatFeatureView: View { } } - private func mergedFeautures() -> [FeatureInfo]? { + private func mergedFeatures() -> [FeatureInfo]? { var fs: [FeatureInfo] = [] var icons: Set = [] if var i = m.getChatItemIndex(chatItem) { @@ -67,8 +68,8 @@ struct CIChatFeatureView: View { switch ci.content { case let .rcvChatFeature(feature, enabled, param): FeatureInfo(feature, enabled.iconColor, param) case let .sndChatFeature(feature, enabled, param): FeatureInfo(feature, enabled.iconColor, param) - case let .rcvGroupFeature(feature, preference, param): FeatureInfo(feature, preference.enable.iconColor, param) - case let .sndGroupFeature(feature, preference, param): FeatureInfo(feature, preference.enable.iconColor, param) + case let .rcvGroupFeature(feature, preference, param, role): FeatureInfo(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor, param) + case let .sndGroupFeature(feature, preference, param, role): FeatureInfo(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor, param) default: nil } } @@ -103,6 +104,6 @@ struct CIChatFeatureView: View { struct CIChatFeatureView_Previews: PreviewProvider { static var previews: some View { let enabled = FeatureEnabled(forUser: false, forContact: false) - CIChatFeatureView(chatItem: ChatItem.getChatFeatureSample(.fullDelete, enabled), revealed: Binding.constant(true), feature: ChatFeature.fullDelete, iconColor: enabled.iconColor) + CIChatFeatureView(chat: Chat.sampleData, chatItem: ChatItem.getChatFeatureSample(.fullDelete, enabled), revealed: Binding.constant(true), feature: ChatFeature.fullDelete, iconColor: enabled.iconColor) } } diff --git a/apps/ios/Shared/Views/Chat/ChatItemView.swift b/apps/ios/Shared/Views/Chat/ChatItemView.swift index 8fe2b71d09..c2adcacbfe 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemView.swift @@ -102,9 +102,9 @@ struct ChatItemContentView: View { case let .rcvChatPreference(feature, allowed, param): CIFeaturePreferenceView(chat: chat, chatItem: chatItem, feature: feature, allowed: allowed, param: param) case let .sndChatPreference(feature, _, _): - CIChatFeatureView(chatItem: chatItem, revealed: $revealed, feature: feature, icon: feature.icon, iconColor: .secondary) - case let .rcvGroupFeature(feature, preference, _): chatFeatureView(feature, preference.enable.iconColor) - case let .sndGroupFeature(feature, preference, _): chatFeatureView(feature, preference.enable.iconColor) + CIChatFeatureView(chat: chat, chatItem: chatItem, revealed: $revealed, feature: feature, icon: feature.icon, iconColor: .secondary) + case let .rcvGroupFeature(feature, preference, _, role): chatFeatureView(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor) + case let .sndGroupFeature(feature, preference, _, role): chatFeatureView(feature, preference.enabled(role, for: chat.chatInfo.groupInfo?.membership).iconColor) case let .rcvChatFeatureRejected(feature): chatFeatureView(feature, .red) case let .rcvGroupFeatureRejected(feature): chatFeatureView(feature, .red) case .sndModerated: deletedItemView() @@ -149,7 +149,7 @@ struct ChatItemContentView: View { } private func chatFeatureView(_ feature: Feature, _ iconColor: Color) -> some View { - CIChatFeatureView(chatItem: chatItem, revealed: $revealed, feature: feature, iconColor: iconColor) + CIChatFeatureView(chat: chat, chatItem: chatItem, revealed: $revealed, feature: feature, iconColor: iconColor) } private var mergedGroupEventText: Text? { diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift index 604e0a276d..24fe983661 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift @@ -161,6 +161,16 @@ struct ComposeState { } } + var attachmentPreview: Bool { + switch preview { + case .noPreview: false + case .linkPreview: false + case let .mediaPreviews(mediaPreviews): !mediaPreviews.isEmpty + case .voicePreview: false + case .filePreview: true + } + } + var empty: Bool { message == "" && noPreview } @@ -234,6 +244,7 @@ struct ComposeView: View { @Binding var keyboardVisible: Bool @State var linkUrl: URL? = nil + @State var hasSimplexLink: Bool = false @State var prevLinkUrl: URL? = nil @State var pendingLinkUrl: URL? = nil @State var cancelledLinks: Set = [] @@ -260,6 +271,16 @@ struct ComposeView: View { if chat.chatInfo.contact?.nextSendGrpInv ?? false { ContextInvitingContactMemberView() } + let simplexLinkProhibited = hasSimplexLink && !chat.groupFeatureEnabled(.simplexLinks) + let fileProhibited = composeState.attachmentPreview && !chat.groupFeatureEnabled(.files) + let voiceProhibited = composeState.voicePreview && !chat.chatInfo.featureEnabled(.voice) + if simplexLinkProhibited { + msgNotAllowedView("SimpleX links not allowed", icon: "link") + } else if fileProhibited { + msgNotAllowedView("Files and media not allowed", icon: "doc") + } else if voiceProhibited { + msgNotAllowedView("Voice messages not allowed", icon: "mic") + } contextItemView() switch (composeState.editing, composeState.preview) { case (true, .filePreview): EmptyView() @@ -278,7 +299,7 @@ struct ComposeView: View { .padding(.bottom, 12) .padding(.leading, 12) if case let .group(g) = chat.chatInfo, - !g.fullGroupPreferences.files.on { + !g.fullGroupPreferences.files.on(for: g.membership) { b.disabled(true).onTapGesture { AlertManager.shared.showAlertMsg( title: "Files and media prohibited!", @@ -303,6 +324,7 @@ struct ComposeView: View { }, nextSendGrpInv: chat.chatInfo.contact?.nextSendGrpInv ?? false, voiceMessageAllowed: chat.chatInfo.featureEnabled(.voice), + disableSendButton: simplexLinkProhibited || fileProhibited || voiceProhibited, showEnableVoiceMessagesAlert: chat.chatInfo.showEnableVoiceMessagesAlert, startVoiceMessageRecording: { Task { @@ -337,13 +359,18 @@ struct ComposeView: View { } } } - .onChange(of: composeState.message) { _ in + .onChange(of: composeState.message) { msg in if composeState.linkPreviewAllowed { - if composeState.message.count > 0 { - showLinkPreview(composeState.message) + if msg.count > 0 { + showLinkPreview(msg) } else { resetLinkPreview() + hasSimplexLink = false } + } else if msg.count > 0 && !chat.groupFeatureEnabled(.simplexLinks) { + (_, hasSimplexLink) = parseMessage(msg) + } else { + hasSimplexLink = false } } .onChange(of: chat.userCanSend) { canSend in @@ -610,6 +637,18 @@ struct ComposeView: View { } } + private func msgNotAllowedView(_ reason: LocalizedStringKey, icon: String) -> some View { + HStack { + Image(systemName: icon).foregroundColor(.secondary) + Text(reason).italic() + } + .padding(12) + .frame(minHeight: 50) + .frame(maxWidth: .infinity, alignment: .leading) + .background(Color(uiColor: .tertiarySystemGroupedBackground)) + .padding(.top, 8) + } + @ViewBuilder private func contextItemView() -> some View { switch composeState.contextItem { case .noContextItem: @@ -818,7 +857,7 @@ struct ComposeView: View { func checkLinkPreview() -> MsgContent { switch (composeState.preview) { case let .linkPreview(linkPreview: linkPreview): - if let url = parseMessage(msgText), + if let url = parseMessage(msgText).url, let linkPreview = linkPreview, url == linkPreview.uri { return .link(text: msgText, preview: linkPreview) @@ -947,7 +986,7 @@ struct ComposeView: View { private func showLinkPreview(_ s: String) { prevLinkUrl = linkUrl - linkUrl = parseMessage(s) + (linkUrl, hasSimplexLink) = parseMessage(s) if let url = linkUrl { if url != composeState.linkPreview?.uri && url != pendingLinkUrl { pendingLinkUrl = url @@ -964,13 +1003,17 @@ struct ComposeView: View { } } - private func parseMessage(_ msg: String) -> URL? { - let parsedMsg = parseSimpleXMarkdown(msg) - let uri = parsedMsg?.first(where: { ft in + private func parseMessage(_ msg: String) -> (url: URL?, hasSimplexLink: Bool) { + guard let parsedMsg = parseSimpleXMarkdown(msg) else { return (nil, false) } + let url: URL? = if let uri = parsedMsg.first(where: { ft in ft.format == .uri && !cancelledLinks.contains(ft.text) && !isSimplexLink(ft.text) - }) - if let uri = uri { return URL(string: uri.text) } - else { return nil } + }) { + URL(string: uri.text) + } else { + nil + } + let simplexLink = parsedMsg.contains(where: { ft in ft.format?.isSimplexLink ?? false }) + return (url, simplexLink) } private func isSimplexLink(_ link: String) -> Bool { diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift index 8f7b23c888..f9e5b1c2b1 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift @@ -20,6 +20,7 @@ struct SendMessageView: View { var nextSendGrpInv: Bool = false var showVoiceMessageButton: Bool = true var voiceMessageAllowed: Bool = true + var disableSendButton = false var showEnableVoiceMessagesAlert: ChatInfo.ShowEnableVoiceMessagesAlert = .other var startVoiceMessageRecording: (() -> Void)? = nil var finishVoiceMessageRecording: (() -> Void)? = nil @@ -184,7 +185,8 @@ struct SendMessageView: View { !composeState.sendEnabled || composeState.inProgress || (!voiceMessageAllowed && composeState.voicePreview) || - composeState.endLiveDisabled + composeState.endLiveDisabled || + disableSendButton ) .frame(width: 29, height: 29) .contextMenu{ diff --git a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift index 999617dde7..766aaf6577 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift @@ -83,7 +83,7 @@ struct GroupMemberInfoView: View { Section { if let contactId = member.memberContactId, let chat = knownDirectChat(contactId) { knownDirectChatButton(chat) - } else if groupInfo.fullGroupPreferences.directMessages.on { + } else if groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) { if let contactId = member.memberContactId { newDirectChatButton(contactId) } else if member.activeConn?.peerChatVRange.isCompatibleRange(CREATE_MEMBER_CONTACT_VRANGE) ?? false { @@ -110,7 +110,7 @@ struct GroupMemberInfoView: View { Label("Share address", systemImage: "square.and.arrow.up") } if let contactId = member.memberContactId { - if knownDirectChat(contactId) == nil && !groupInfo.fullGroupPreferences.directMessages.on { + if knownDirectChat(contactId) == nil && !groupInfo.fullGroupPreferences.directMessages.on(for: groupInfo.membership) { connectViaAddressButton(contactLink) } } else { diff --git a/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift b/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift index 7ab4bf4ece..b4e1992848 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupPreferencesView.swift @@ -9,6 +9,12 @@ import SwiftUI import SimpleXChat +private let featureRoles: [(role: GroupMemberRole?, text: LocalizedStringKey)] = [ + (nil, "all members"), + (.admin, "admins"), + (.owner, "owners") +] + struct GroupPreferencesView: View { @Environment(\.dismiss) var dismiss: DismissAction @EnvironmentObject var chatModel: ChatModel @@ -24,10 +30,12 @@ struct GroupPreferencesView: View { List { featureSection(.timedMessages, $preferences.timedMessages.enable) featureSection(.fullDelete, $preferences.fullDelete.enable) - featureSection(.directMessages, $preferences.directMessages.enable) + featureSection(.directMessages, $preferences.directMessages.enable, $preferences.directMessages.role) featureSection(.reactions, $preferences.reactions.enable) - featureSection(.voice, $preferences.voice.enable) - featureSection(.files, $preferences.files.enable) + featureSection(.voice, $preferences.voice.enable, $preferences.voice.role) + featureSection(.files, $preferences.files.enable, $preferences.files.role) + // TODO enable simplexLinks preference in 5.8 + // featureSection(.simplexLinks, $preferences.simplexLinks.enable, $preferences.simplexLinks.role) featureSection(.history, $preferences.history.enable) if groupInfo.canEdit { @@ -64,7 +72,7 @@ struct GroupPreferencesView: View { } } - private func featureSection(_ feature: GroupFeature, _ enableFeature: Binding) -> some View { + private func featureSection(_ feature: GroupFeature, _ enableFeature: Binding, _ enableForRole: Binding? = nil) -> some View { Section { let color: Color = enableFeature.wrappedValue == .on ? .green : .secondary let icon = enableFeature.wrappedValue == .on ? feature.iconFilled : feature.icon @@ -87,6 +95,16 @@ struct GroupPreferencesView: View { ) .frame(height: 36) } + if enableFeature.wrappedValue == .on, let enableForRole { + Picker("Enabled for", selection: enableForRole) { + ForEach(featureRoles, id: \.role) { fr in + Text(fr.text) + } + } + .frame(height: 36) + // remove in v5.8 + .disabled(true) + } } else { settingsRow(icon, color: color) { infoRow(Text(feature.text), enableFeature.wrappedValue.text) @@ -94,10 +112,26 @@ struct GroupPreferencesView: View { if timedOn { infoRow("Delete after", timeText(preferences.timedMessages.ttl)) } + if enableFeature.wrappedValue == .on, let enableForRole { + HStack { + Text("Enabled for").foregroundColor(.secondary) + Spacer() + Text( + featureRoles.first(where: { fr in fr.role == enableForRole.wrappedValue })?.text + ?? "all members" + ) + .foregroundColor(.secondary) + } + } } } footer: { Text(feature.enableDescription(enableFeature.wrappedValue, groupInfo.canEdit)) } + .onChange(of: enableFeature.wrappedValue) { enabled in + if case .off = enabled { + enableForRole?.wrappedValue = nil + } + } } private func savePreferences() { diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index 7990f1caea..9db0468d95 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -543,6 +543,7 @@ public protocol Feature { var iconFilled: String { get } var iconScale: CGFloat { get } var hasParam: Bool { get } + var hasRole: Bool { get } var text: String { get } } @@ -569,6 +570,8 @@ public enum ChatFeature: String, Decodable, Feature { } } + public var hasRole: Bool { false } + public var text: String { switch self { case .timedMessages: return NSLocalizedString("Disappearing messages", comment: "chat feature") @@ -694,6 +697,7 @@ public enum GroupFeature: String, Decodable, Feature { case reactions case voice case files + case simplexLinks case history public var id: Self { self } @@ -705,6 +709,19 @@ public enum GroupFeature: String, Decodable, Feature { } } + public var hasRole: Bool { + switch self { + case .timedMessages: false + case .directMessages: true + case .fullDelete: false + case .reactions: false + case .voice: true + case .files: true + case .simplexLinks: true + case .history: false + } + } + public var text: String { switch self { case .timedMessages: return NSLocalizedString("Disappearing messages", comment: "chat feature") @@ -713,6 +730,7 @@ public enum GroupFeature: String, Decodable, Feature { case .reactions: return NSLocalizedString("Message reactions", comment: "chat feature") case .voice: return NSLocalizedString("Voice messages", comment: "chat feature") case .files: return NSLocalizedString("Files and media", comment: "chat feature") + case .simplexLinks: return NSLocalizedString("SimpleX links", comment: "chat feature") case .history: return NSLocalizedString("Visible history", comment: "chat feature") } } @@ -725,6 +743,7 @@ public enum GroupFeature: String, Decodable, Feature { case .reactions: return "face.smiling" case .voice: return "mic" case .files: return "doc" + case .simplexLinks: return "link.circle" case .history: return "clock" } } @@ -737,6 +756,7 @@ public enum GroupFeature: String, Decodable, Feature { case .reactions: return "face.smiling.fill" case .voice: return "mic.fill" case .files: return "doc.fill" + case .simplexLinks: return "link.circle.fill" case .history: return "clock.fill" } } @@ -781,6 +801,11 @@ public enum GroupFeature: String, Decodable, Feature { case .on: return "Allow to send files and media." case .off: return "Prohibit sending files and media." } + case .simplexLinks: + switch enabled { + case .on: return "Allow to send SimpleX links." + case .off: return "Prohibit sending SimpleX links." + } case .history: switch enabled { case .on: return "Send up to 100 last messages to new members." @@ -819,6 +844,11 @@ public enum GroupFeature: String, Decodable, Feature { case .on: return "Group members can send files and media." case .off: return "Files and media are prohibited in this group." } + case .simplexLinks: + switch enabled { + case .on: return "Group members can send SimpleX links." + case .off: return "SimpleX links are prohibited in this group." + } case .history: switch enabled { case .on: return "Up to 100 last messages are sent to new members." @@ -958,20 +988,22 @@ public enum FeatureAllowed: String, Codable, Identifiable { public struct FullGroupPreferences: Decodable, Equatable { public var timedMessages: TimedMessagesGroupPreference - public var directMessages: GroupPreference + public var directMessages: RoleGroupPreference public var fullDelete: GroupPreference public var reactions: GroupPreference - public var voice: GroupPreference - public var files: GroupPreference + public var voice: RoleGroupPreference + public var files: RoleGroupPreference + public var simplexLinks: RoleGroupPreference public var history: GroupPreference public init( timedMessages: TimedMessagesGroupPreference, - directMessages: GroupPreference, + directMessages: RoleGroupPreference, fullDelete: GroupPreference, reactions: GroupPreference, - voice: GroupPreference, - files: GroupPreference, + voice: RoleGroupPreference, + files: RoleGroupPreference, + simplexLinks: RoleGroupPreference, history: GroupPreference ) { self.timedMessages = timedMessages @@ -980,36 +1012,40 @@ public struct FullGroupPreferences: Decodable, Equatable { self.reactions = reactions self.voice = voice self.files = files + self.simplexLinks = simplexLinks self.history = history } public static let sampleData = FullGroupPreferences( timedMessages: TimedMessagesGroupPreference(enable: .off), - directMessages: GroupPreference(enable: .off), + directMessages: RoleGroupPreference(enable: .off, role: nil), fullDelete: GroupPreference(enable: .off), reactions: GroupPreference(enable: .on), - voice: GroupPreference(enable: .on), - files: GroupPreference(enable: .on), + voice: RoleGroupPreference(enable: .on, role: nil), + files: RoleGroupPreference(enable: .on, role: nil), + simplexLinks: RoleGroupPreference(enable: .on, role: nil), history: GroupPreference(enable: .on) ) } public struct GroupPreferences: Codable { public var timedMessages: TimedMessagesGroupPreference? - public var directMessages: GroupPreference? + public var directMessages: RoleGroupPreference? public var fullDelete: GroupPreference? public var reactions: GroupPreference? - public var voice: GroupPreference? - public var files: GroupPreference? + public var voice: RoleGroupPreference? + public var files: RoleGroupPreference? + public var simplexLinks: RoleGroupPreference? public var history: GroupPreference? public init( timedMessages: TimedMessagesGroupPreference? = nil, - directMessages: GroupPreference? = nil, + directMessages: RoleGroupPreference? = nil, fullDelete: GroupPreference? = nil, reactions: GroupPreference? = nil, - voice: GroupPreference? = nil, - files: GroupPreference? = nil, + voice: RoleGroupPreference? = nil, + files: RoleGroupPreference? = nil, + simplexLinks: RoleGroupPreference? = nil, history: GroupPreference? = nil ) { self.timedMessages = timedMessages @@ -1018,16 +1054,18 @@ public struct GroupPreferences: Codable { self.reactions = reactions self.voice = voice self.files = files + self.simplexLinks = simplexLinks self.history = history } public static let sampleData = GroupPreferences( timedMessages: TimedMessagesGroupPreference(enable: .off), - directMessages: GroupPreference(enable: .off), + directMessages: RoleGroupPreference(enable: .off, role: nil), fullDelete: GroupPreference(enable: .off), reactions: GroupPreference(enable: .on), - voice: GroupPreference(enable: .on), - files: GroupPreference(enable: .on), + voice: RoleGroupPreference(enable: .on, role: nil), + files: RoleGroupPreference(enable: .on, role: nil), + simplexLinks: RoleGroupPreference(enable: .on, role: nil), history: GroupPreference(enable: .on) ) } @@ -1040,6 +1078,7 @@ public func toGroupPreferences(_ fullPreferences: FullGroupPreferences) -> Group reactions: fullPreferences.reactions, voice: fullPreferences.voice, files: fullPreferences.files, + simplexLinks: fullPreferences.simplexLinks, history: fullPreferences.history ) } @@ -1051,11 +1090,37 @@ public struct GroupPreference: Codable, Equatable { enable == .on } + public func enabled(_ role: GroupMemberRole?, for m: GroupMember?) -> GroupFeatureEnabled { + switch enable { + case .off: .off + case .on: + if let role, let m { + m.memberRole >= role ? .on : .off + } else { + .on + } + } + } + public init(enable: GroupFeatureEnabled) { self.enable = enable } } +public struct RoleGroupPreference: Codable, Equatable { + public var enable: GroupFeatureEnabled + public var role: GroupMemberRole? + + public func on(for m: GroupMember) -> Bool { + enable == .on && m.memberRole >= (role ?? .observer) + } + + public init(enable: GroupFeatureEnabled, role: GroupMemberRole?) { + self.enable = enable + self.role = role + } +} + public struct TimedMessagesGroupPreference: Codable, Equatable { public var enable: GroupFeatureEnabled public var ttl: Int? @@ -1280,7 +1345,7 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat { case .timedMessages: return prefs.timedMessages.on case .fullDelete: return prefs.fullDelete.on case .reactions: return prefs.reactions.on - case .voice: return prefs.voice.on + case .voice: return prefs.voice.on(for: groupInfo.membership) case .calls: return false } case .local: @@ -1323,7 +1388,7 @@ public enum ChatInfo: Identifiable, Decodable, NamedChat { return .other } case let .group(groupInfo): - if !groupInfo.fullGroupPreferences.voice.on { + if !groupInfo.fullGroupPreferences.voice.on(for: groupInfo.membership) { return .groupOwnerCan } else { return .other @@ -1975,7 +2040,7 @@ public struct GroupMemberIds: Decodable { var groupId: Int64 } -public enum GroupMemberRole: String, Identifiable, CaseIterable, Comparable, Decodable { +public enum GroupMemberRole: String, Identifiable, CaseIterable, Comparable, Codable { case observer = "observer" case author = "author" case member = "member" @@ -2759,8 +2824,8 @@ public enum CIContent: Decodable, ItemContent { case sndChatFeature(feature: ChatFeature, enabled: FeatureEnabled, param: Int?) case rcvChatPreference(feature: ChatFeature, allowed: FeatureAllowed, param: Int?) case sndChatPreference(feature: ChatFeature, allowed: FeatureAllowed, param: Int?) - case rcvGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?) - case sndGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?) + case rcvGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?, memberRole_: GroupMemberRole?) + case sndGroupFeature(groupFeature: GroupFeature, preference: GroupPreference, param: Int?, memberRole_: GroupMemberRole?) case rcvChatFeatureRejected(feature: ChatFeature) case rcvGroupFeatureRejected(groupFeature: GroupFeature) case sndModerated @@ -2794,8 +2859,8 @@ public enum CIContent: Decodable, ItemContent { case let .sndChatFeature(feature, enabled, param): return CIContent.featureText(feature, enabled.text, param) case let .rcvChatPreference(feature, allowed, param): return CIContent.preferenceText(feature, allowed, param) case let .sndChatPreference(feature, allowed, param): return CIContent.preferenceText(feature, allowed, param) - case let .rcvGroupFeature(feature, preference, param): return CIContent.featureText(feature, preference.enable.text, param) - case let .sndGroupFeature(feature, preference, param): return CIContent.featureText(feature, preference.enable.text, param) + case let .rcvGroupFeature(feature, preference, param, role): return CIContent.featureText(feature, preference.enable.text, param, role) + case let .sndGroupFeature(feature, preference, param, role): return CIContent.featureText(feature, preference.enable.text, param, role) case let .rcvChatFeatureRejected(feature): return String.localizedStringWithFormat("%@: received, prohibited", feature.text) case let .rcvGroupFeatureRejected(groupFeature): return String.localizedStringWithFormat("%@: received, prohibited", groupFeature.text) case .sndModerated: return NSLocalizedString("moderated", comment: "moderated chat item") @@ -2820,10 +2885,25 @@ public enum CIContent: Decodable, ItemContent { NSLocalizedString("This chat is protected by end-to-end encryption.", comment: "E2EE info chat item") } - static func featureText(_ feature: Feature, _ enabled: String, _ param: Int?) -> String { - feature.hasParam - ? "\(feature.text): \(timeText(param))" - : "\(feature.text): \(enabled)" + static func featureText(_ feature: Feature, _ enabled: String, _ param: Int?, _ role: GroupMemberRole? = nil) -> String { + ( + feature.hasParam + ? "\(feature.text): \(timeText(param))" + : "\(feature.text): \(enabled)" + ) + + ( + feature.hasRole && role != nil + ? " (\(roleText(role)))" + : "" + ) + } + + private static func roleText(_ role: GroupMemberRole?) -> String { + switch role { + case .owner: NSLocalizedString("owners", comment: "feature role") + case .admin: NSLocalizedString("admins", comment: "feature role") + default: NSLocalizedString("all members", comment: "feature role") + } } public static func preferenceText(_ feature: Feature, _ allowed: FeatureAllowed, _ param: Int?) -> String { From 86fe2212c3a8eb16c563e7ee8d4124b9a92f023a Mon Sep 17 00:00:00 2001 From: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com> Date: Sat, 13 Apr 2024 11:32:43 +0300 Subject: [PATCH 025/147] chat: forward files with streaming re-encryption (#4022) * chat: forward files with streaming re-encryption * refactor --- src/Simplex/Chat.hs | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 441b7994b6..92dc294d4b 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -83,6 +83,7 @@ import Simplex.Chat.Types.Preferences import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Chat.Util (encryptFile, liftIOEither, shuffle) +import qualified Simplex.Chat.Util as U import Simplex.FileTransfer.Client.Main (maxFileSize, maxFileSizeHard) import Simplex.FileTransfer.Client.Presets (defaultXFTPServers) import Simplex.FileTransfer.Description (FileDescriptionURI (..), ValidFileDescription) @@ -932,7 +933,7 @@ processChatCommand' vr = \case forwardCIFF ChatItem {meta = CIMeta {itemForwarded = Just ciff}} _ = Just ciff forwardCIFF _ ciff = ciff forwardCryptoFile :: ChatItem c d -> CM (Maybe CryptoFile) - forwardCryptoFile ChatItem {file = Just CIFile {fileName, fileStatus, fileSource = Just fromCF@CryptoFile {filePath}}} + forwardCryptoFile ChatItem {file = Just CIFile {fileName, fileStatus, fileSource = Just fromCF@CryptoFile {filePath, cryptoArgs = fromArgs}}} | ciFileLoaded fileStatus = chatReadVar filesFolder >>= \case Nothing -> @@ -948,14 +949,31 @@ processChatCommand' vr = \case cfArgs <- if encrypt then Just <$> (atomically . CF.randomArgs =<< asks random) else pure Nothing let toCF = CryptoFile fsNewPath cfArgs -- to keep forwarded file in case original is deleted - liftIOEither $ runExceptT $ withExceptT (ChatError . CEInternalError . show) $ do - lb <- CF.readFile (fromCF {filePath = fsFromPath} :: CryptoFile) - CF.writeFile toCF lb + liftIOEither $ runExceptT $ withExceptT (ChatError . CEInternalError . show) $ copyCryptoFile (fromCF {filePath = fsFromPath} :: CryptoFile) toCF pure $ Just (toCF {filePath = takeFileName fsNewPath} :: CryptoFile) ) (pure Nothing) | otherwise = pure Nothing forwardCryptoFile _ = pure Nothing + copyCryptoFile :: CryptoFile -> CryptoFile -> ExceptT CF.FTCryptoError IO () + copyCryptoFile fromCF@CryptoFile {filePath = fsFromPath, cryptoArgs = fromArgs} toCF@CryptoFile {cryptoArgs = toArgs} = do + fromSizeFull <- getFileSize fsFromPath + let fromSize = fromSizeFull - maybe 0 (const $ toInteger C.authTagSize) fromArgs + CF.withFile fromCF ReadMode $ \fromH -> + CF.withFile toCF WriteMode $ \toH -> do + copyChunks fromH toH fromSize + forM_ fromArgs $ \_ -> CF.hGetTag fromH + forM_ toArgs $ \_ -> liftIO $ CF.hPutTag toH + where + copyChunks :: CF.CryptoFileHandle -> CF.CryptoFileHandle -> Integer -> ExceptT CF.FTCryptoError IO () + copyChunks r w size = do + let chSize = min size U.chunkSize + chSize' = fromIntegral chSize + size' = size - chSize + ch <- liftIO $ CF.hGet r chSize' + when (B.length ch /= chSize') $ throwError $ CF.FTCEFileIOError "encrypting file: unexpected EOF" + liftIO . CF.hPut w $ LB.fromStrict ch + when (size' > 0) $ copyChunks r w size' APIUserRead userId -> withUserId userId $ \user -> withStore' (`setUserChatsRead` user) >> ok user UserRead -> withUser $ \User {userId} -> processChatCommand $ APIUserRead userId APIChatRead (ChatRef cType chatId) fromToIds -> withUser $ \_ -> case cType of From 433b3652fbae16faf91c8aa0ed2167e4d8cedab0 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 12 Apr 2024 23:28:52 +0100 Subject: [PATCH 026/147] core: simplexmq 5.6.2.2 --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cabal.project b/cabal.project index f60b834a84..af464c7320 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 3b1dd6dff924d915274963f27e053c95741caf07 + tag: 5e783396e05ced83b22914c172d2f2e8e14e5be2 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 54e52c723c..cc8003b551 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."3b1dd6dff924d915274963f27e053c95741caf07" = "1b61n33nbbx7bqgwscvv0a8yy628b4y397s7ydyg22hdw3dg009q"; + "https://github.com/simplex-chat/simplexmq.git"."5e783396e05ced83b22914c172d2f2e8e14e5be2" = "1bxbhy5vddczspan0xzcwk2jvkial6n84m0s5wznqbg03i4y7j1y"; "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"; From de81434b36060b0066e9833a7ce1d657c6874d84 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sat, 13 Apr 2024 17:51:10 +0700 Subject: [PATCH 027/147] android, desktop: role-based preferences, SimpleX links preference (#4023) * android, desktop: role-based preferences, SimpleX links preference * disable for now * different way of disabling send button * mic icon filled * icons * braces * colors --------- Co-authored-by: Evgeny Poberezkin --- .../chat/simplex/common/model/ChatModel.kt | 44 ++++++++-- .../chat/simplex/common/model/SimpleXAPI.kt | 75 ++++++++++++++--- .../chat/simplex/common/views/TerminalView.kt | 1 + .../simplex/common/views/chat/ComposeView.kt | 80 +++++++++++++++---- .../simplex/common/views/chat/SendMsgView.kt | 9 ++- .../views/chat/group/GroupMemberInfoView.kt | 4 +- .../views/chat/group/GroupPreferences.kt | 75 ++++++++++++----- .../views/chat/item/CIChatFeatureView.kt | 13 +-- .../common/views/chat/item/ChatItemView.kt | 14 ++-- .../simplex/common/views/helpers/Section.kt | 4 +- .../commonMain/resources/MR/base/strings.xml | 12 +++ 11 files changed, 258 insertions(+), 73 deletions(-) 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 8233a7cc5d..d0a02c332f 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 @@ -805,6 +805,24 @@ data class Chat( val id: String get() = chatInfo.id + fun groupFeatureEnabled(feature: GroupFeature): Boolean = + if (chatInfo is ChatInfo.Group) { + val groupInfo = chatInfo.groupInfo + val p = groupInfo.fullGroupPreferences + when (feature) { + GroupFeature.TimedMessages -> p.timedMessages.on + GroupFeature.DirectMessages -> p.directMessages.on(groupInfo.membership) + GroupFeature.FullDelete -> p.fullDelete.on + GroupFeature.Reactions -> p.reactions.on + GroupFeature.Voice -> p.voice.on(groupInfo.membership) + GroupFeature.Files -> p.files.on(groupInfo.membership) + GroupFeature.SimplexLinks -> p.simplexLinks.on(groupInfo.membership) + GroupFeature.History -> p.history.on + } + } else { + true + } + @Serializable data class ChatStats(val unreadCount: Int = 0, val minUnreadItemId: Long = 0, val unreadChat: Boolean = false) @@ -1240,7 +1258,7 @@ data class GroupInfo ( ChatFeature.TimedMessages -> fullGroupPreferences.timedMessages.on ChatFeature.FullDelete -> fullGroupPreferences.fullDelete.on ChatFeature.Reactions -> fullGroupPreferences.reactions.on - ChatFeature.Voice -> fullGroupPreferences.voice.on + ChatFeature.Voice -> fullGroupPreferences.voice.on(membership) ChatFeature.Calls -> false } override val timedMessagesTTL: Int? get() = with(fullGroupPreferences.timedMessages) { if (on) ttl else null } @@ -2319,8 +2337,8 @@ sealed class CIContent: ItemContent { @Serializable @SerialName("sndChatFeature") class SndChatFeature(val feature: ChatFeature, val enabled: FeatureEnabled, val param: Int? = null): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("rcvChatPreference") class RcvChatPreference(val feature: ChatFeature, val allowed: FeatureAllowed, val param: Int? = null): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("sndChatPreference") class SndChatPreference(val feature: ChatFeature, val allowed: FeatureAllowed, val param: Int? = null): CIContent() { override val msgContent: MsgContent? get() = null } - @Serializable @SerialName("rcvGroupFeature") class RcvGroupFeature(val groupFeature: GroupFeature, val preference: GroupPreference, val param: Int? = null): CIContent() { override val msgContent: MsgContent? get() = null } - @Serializable @SerialName("sndGroupFeature") class SndGroupFeature(val groupFeature: GroupFeature, val preference: GroupPreference, val param: Int? = null): CIContent() { override val msgContent: MsgContent? get() = null } + @Serializable @SerialName("rcvGroupFeature") class RcvGroupFeature(val groupFeature: GroupFeature, val preference: GroupPreference, val param: Int? = null, val memberRole_: GroupMemberRole?): CIContent() { override val msgContent: MsgContent? get() = null } + @Serializable @SerialName("sndGroupFeature") class SndGroupFeature(val groupFeature: GroupFeature, val preference: GroupPreference, val param: Int? = null, val memberRole_: GroupMemberRole?): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("rcvChatFeatureRejected") class RcvChatFeatureRejected(val feature: ChatFeature): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("rcvGroupFeatureRejected") class RcvGroupFeatureRejected(val groupFeature: GroupFeature): CIContent() { override val msgContent: MsgContent? get() = null } @Serializable @SerialName("sndModerated") object SndModerated: CIContent() { override val msgContent: MsgContent? get() = null } @@ -2352,8 +2370,8 @@ sealed class CIContent: ItemContent { is SndChatFeature -> featureText(feature, enabled.text, param) is RcvChatPreference -> preferenceText(feature, allowed, param) is SndChatPreference -> preferenceText(feature, allowed, param) - is RcvGroupFeature -> featureText(groupFeature, preference.enable.text, param) - is SndGroupFeature -> featureText(groupFeature, preference.enable.text, param) + is RcvGroupFeature -> featureText(groupFeature, preference.enable.text, param, memberRole_) + is SndGroupFeature -> featureText(groupFeature, preference.enable.text, param, memberRole_) is RcvChatFeatureRejected -> "${feature.text}: ${generalGetString(MR.strings.feature_received_prohibited)}" is RcvGroupFeatureRejected -> "${groupFeature.text}: ${generalGetString(MR.strings.feature_received_prohibited)}" is SndModerated -> generalGetString(MR.strings.moderated_description) @@ -2390,11 +2408,23 @@ sealed class CIContent: ItemContent { private val e2eeInfoNoPQStr: String = generalGetString(MR.strings.e2ee_info_no_pq_short) - fun featureText(feature: Feature, enabled: String, param: Int?): String = - if (feature.hasParam) { + fun featureText(feature: Feature, enabled: String, param: Int?, role: GroupMemberRole? = null): String = + (if (feature.hasParam) { "${feature.text}: ${timeText(param)}" } else { "${feature.text}: $enabled" + }) + ( + if (feature.hasRole && role != null) + " (${roleText(role)})" + else + "" + ) + + private fun roleText(role: GroupMemberRole?): String = + when (role) { + GroupMemberRole.Owner -> generalGetString(MR.strings.feature_roles_owners) + GroupMemberRole.Admin -> generalGetString(MR.strings.feature_roles_admins) + else -> generalGetString(MR.strings.feature_roles_all_members) } fun preferenceText(feature: Feature, allowed: FeatureAllowed, param: Int?): String = when { 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 b70c970623..4e239598fb 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 @@ -3430,6 +3430,7 @@ interface Feature { @Composable fun iconFilled(): Painter val hasParam: Boolean + val hasRole: Boolean } @Serializable @@ -3449,6 +3450,7 @@ enum class ChatFeature: Feature { TimedMessages -> true else -> false } + override val hasRole: Boolean = false override val text: String get() = when(this) { @@ -3549,6 +3551,7 @@ enum class GroupFeature: Feature { @SerialName("reactions") Reactions, @SerialName("voice") Voice, @SerialName("files") Files, + @SerialName("simplexLinks") SimplexLinks, @SerialName("history") History; override val hasParam: Boolean get() = when(this) { @@ -3556,6 +3559,18 @@ enum class GroupFeature: Feature { else -> false } + override val hasRole: Boolean + get() = when (this) { + TimedMessages -> false + DirectMessages -> true + FullDelete -> false + Reactions -> false + Voice -> true + Files -> true + SimplexLinks -> true + History -> false + } + override val text: String get() = when(this) { TimedMessages -> generalGetString(MR.strings.timed_messages) @@ -3564,6 +3579,7 @@ enum class GroupFeature: Feature { Reactions -> generalGetString(MR.strings.message_reactions) Voice -> generalGetString(MR.strings.voice_messages) Files -> generalGetString(MR.strings.files_and_media) + SimplexLinks -> generalGetString(MR.strings.simplex_links) History -> generalGetString(MR.strings.recent_history) } @@ -3575,6 +3591,7 @@ enum class GroupFeature: Feature { Reactions -> painterResource(MR.images.ic_add_reaction) Voice -> painterResource(MR.images.ic_keyboard_voice) Files -> painterResource(MR.images.ic_draft) + SimplexLinks -> painterResource(MR.images.ic_link) History -> painterResource(MR.images.ic_schedule) } @@ -3586,6 +3603,7 @@ enum class GroupFeature: Feature { Reactions -> painterResource(MR.images.ic_add_reaction_filled) Voice -> painterResource(MR.images.ic_keyboard_voice_filled) Files -> painterResource(MR.images.ic_draft_filled) + SimplexLinks -> painterResource(MR.images.ic_link) History -> painterResource(MR.images.ic_schedule_filled) } @@ -3616,6 +3634,10 @@ enum class GroupFeature: Feature { GroupFeatureEnabled.ON -> generalGetString(MR.strings.allow_to_send_files) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.prohibit_sending_files) } + SimplexLinks -> when(enabled) { + GroupFeatureEnabled.ON -> generalGetString(MR.strings.allow_to_send_simplex_links) + GroupFeatureEnabled.OFF -> generalGetString(MR.strings.prohibit_sending_simplex_links) + } History -> when(enabled) { GroupFeatureEnabled.ON -> generalGetString(MR.strings.enable_sending_recent_history) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.disable_sending_recent_history) @@ -3647,6 +3669,10 @@ enum class GroupFeature: Feature { GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_files) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.files_are_prohibited_in_group) } + SimplexLinks -> when(enabled) { + GroupFeatureEnabled.ON -> generalGetString(MR.strings.group_members_can_send_simplex_links) + GroupFeatureEnabled.OFF -> generalGetString(MR.strings.simplex_links_are_prohibited_in_group) + } History -> when(enabled) { GroupFeatureEnabled.ON -> generalGetString(MR.strings.recent_history_is_sent_to_new_members) GroupFeatureEnabled.OFF -> generalGetString(MR.strings.recent_history_is_not_sent_to_new_members) @@ -3760,11 +3786,12 @@ enum class FeatureAllowed { @Serializable data class FullGroupPreferences( val timedMessages: TimedMessagesGroupPreference, - val directMessages: GroupPreference, + val directMessages: RoleGroupPreference, val fullDelete: GroupPreference, val reactions: GroupPreference, - val voice: GroupPreference, - val files: GroupPreference, + val voice: RoleGroupPreference, + val files: RoleGroupPreference, + val simplexLinks: RoleGroupPreference, val history: GroupPreference, ) { fun toGroupPreferences(): GroupPreferences = @@ -3775,17 +3802,19 @@ data class FullGroupPreferences( reactions = reactions, voice = voice, files = files, + simplexLinks = simplexLinks, history = history ) companion object { val sampleData = FullGroupPreferences( timedMessages = TimedMessagesGroupPreference(GroupFeatureEnabled.OFF), - directMessages = GroupPreference(GroupFeatureEnabled.OFF), + directMessages = RoleGroupPreference(GroupFeatureEnabled.OFF, role = null), fullDelete = GroupPreference(GroupFeatureEnabled.OFF), reactions = GroupPreference(GroupFeatureEnabled.ON), - voice = GroupPreference(GroupFeatureEnabled.ON), - files = GroupPreference(GroupFeatureEnabled.ON), + voice = RoleGroupPreference(GroupFeatureEnabled.ON, role = null), + files = RoleGroupPreference(GroupFeatureEnabled.ON, role = null), + simplexLinks = RoleGroupPreference(GroupFeatureEnabled.ON, role = null), history = GroupPreference(GroupFeatureEnabled.ON), ) } @@ -3794,21 +3823,23 @@ data class FullGroupPreferences( @Serializable data class GroupPreferences( val timedMessages: TimedMessagesGroupPreference? = null, - val directMessages: GroupPreference? = null, + val directMessages: RoleGroupPreference? = null, val fullDelete: GroupPreference? = null, val reactions: GroupPreference? = null, - val voice: GroupPreference? = null, - val files: GroupPreference? = null, + val voice: RoleGroupPreference? = null, + val files: RoleGroupPreference? = null, + val simplexLinks: RoleGroupPreference? = null, val history: GroupPreference? = null, ) { companion object { val sampleData = GroupPreferences( timedMessages = TimedMessagesGroupPreference(GroupFeatureEnabled.OFF), - directMessages = GroupPreference(GroupFeatureEnabled.OFF), + directMessages = RoleGroupPreference(GroupFeatureEnabled.OFF, role = null), fullDelete = GroupPreference(GroupFeatureEnabled.OFF), reactions = GroupPreference(GroupFeatureEnabled.ON), - voice = GroupPreference(GroupFeatureEnabled.ON), - files = GroupPreference(GroupFeatureEnabled.ON), + voice = RoleGroupPreference(GroupFeatureEnabled.ON, role = null), + files = RoleGroupPreference(GroupFeatureEnabled.ON, role = null), + simplexLinks = RoleGroupPreference(GroupFeatureEnabled.ON, role = null), history = GroupPreference(GroupFeatureEnabled.ON), ) } @@ -3819,6 +3850,26 @@ data class GroupPreference( val enable: GroupFeatureEnabled ) { val on: Boolean get() = enable == GroupFeatureEnabled.ON + + fun enabled(role: GroupMemberRole?, m: GroupMember?): GroupFeatureEnabled = + when (enable) { + GroupFeatureEnabled.OFF -> GroupFeatureEnabled.OFF + GroupFeatureEnabled.ON -> + if (role != null && m != null) { + if (m.memberRole >= role) GroupFeatureEnabled.ON else GroupFeatureEnabled.OFF + } else { + GroupFeatureEnabled.ON + } + } +} + +@Serializable +data class RoleGroupPreference( + val enable: GroupFeatureEnabled, + val role: GroupMemberRole? = null, +) { + fun on(m: GroupMember): Boolean = + enable == GroupFeatureEnabled.ON && m.memberRole >= (role ?: GroupMemberRole.Observer) } @Serializable diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt index 1cd85ae7f9..1f49a98728 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/TerminalView.kt @@ -85,6 +85,7 @@ fun TerminalLayout( isDirectChat = false, liveMessageAlertShown = SharedPreference(get = { false }, set = {}), sendMsgEnabled = true, + sendButtonEnabled = true, nextSendGrpInv = false, needToAllowVoiceToContact = false, allowedVoiceByPrefs = false, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt index a438ea2bfc..1c8b32d467 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt @@ -1,6 +1,7 @@ @file:UseSerializers(UriSerializer::class) package chat.simplex.common.views.chat +import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.* @@ -11,6 +12,8 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.ImageBitmap +import androidx.compose.ui.graphics.painter.Painter +import androidx.compose.ui.text.font.FontStyle import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.unit.dp @@ -18,8 +21,7 @@ import chat.simplex.common.model.* import chat.simplex.common.model.ChatModel.controller import chat.simplex.common.model.ChatModel.filesToDelete import chat.simplex.common.platform.* -import chat.simplex.common.ui.theme.Indigo -import chat.simplex.common.ui.theme.isSystemInDarkTheme +import chat.simplex.common.ui.theme.* import chat.simplex.common.views.chat.item.* import chat.simplex.common.views.helpers.* import chat.simplex.res.MR @@ -115,6 +117,15 @@ data class ComposeState( } } + val attachmentPreview: Boolean + get() = when (preview) { + ComposePreview.NoPreview -> false + is ComposePreview.CLinkPreview -> false + is ComposePreview.MediaPreview -> preview.content.isNotEmpty() + is ComposePreview.VoicePreview -> false + is ComposePreview.FilePreview -> true + } + val empty: Boolean get() = message.isEmpty() && preview is ComposePreview.NoPreview && contextItem is ComposeContextItem.NoContextItem @@ -243,10 +254,23 @@ fun ComposeView( attachmentOption: MutableState, showChooseAttachment: () -> Unit ) { + val cancelledLinks = rememberSaveable { mutableSetOf() } + fun isSimplexLink(link: String): Boolean = + link.startsWith("https://simplex.chat", true) || link.startsWith("http://simplex.chat", true) + + fun parseMessage(msg: String): Pair { + if (msg.isBlank()) return null to false + val parsedMsg = parseToMarkdown(msg) ?: return null to false + val link = parsedMsg.firstOrNull { ft -> ft.format is Format.Uri && !cancelledLinks.contains(ft.text) && !isSimplexLink(ft.text) } + val simplexLink = parsedMsg.any { ft -> ft.format is Format.SimplexLink } + return link?.text to simplexLink + } + val linkUrl = rememberSaveable { mutableStateOf(null) } + // default value parsed because of draft + val hasSimplexLink = rememberSaveable { mutableStateOf(parseMessage(composeState.value.message).second) } val prevLinkUrl = rememberSaveable { mutableStateOf(null) } val pendingLinkUrl = rememberSaveable { mutableStateOf(null) } - val cancelledLinks = rememberSaveable { mutableSetOf() } val useLinkPreviews = chatModel.controller.appPrefs.privacyLinkPreviews.get() val saveLastDraft = chatModel.controller.appPrefs.privacySaveLastDraft.get() val smallFont = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.onBackground) @@ -255,15 +279,6 @@ fun ComposeView( AttachmentSelection(composeState, attachmentOption, composeState::processPickedFile) { uris, text -> CoroutineScope(Dispatchers.IO).launch { composeState.processPickedMedia(uris, text) } } - fun isSimplexLink(link: String): Boolean = - link.startsWith("https://simplex.chat", true) || link.startsWith("http://simplex.chat", true) - - fun parseMessage(msg: String): String? { - val parsedMsg = parseToMarkdown(msg) - val link = parsedMsg?.firstOrNull { ft -> ft.format is Format.Uri && !cancelledLinks.contains(ft.text) && !isSimplexLink(ft.text) } - return link?.text - } - fun loadLinkPreview(url: String, wait: Long? = null) { if (pendingLinkUrl.value == url) { composeState.value = composeState.value.copy(preview = ComposePreview.CLinkPreview(null)) @@ -283,7 +298,9 @@ fun ComposeView( fun showLinkPreview(s: String) { prevLinkUrl.value = linkUrl.value - linkUrl.value = parseMessage(s) + val parsed = parseMessage(s) + linkUrl.value = parsed.first + hasSimplexLink.value = parsed.second val url = linkUrl.value if (url != null) { if (url != composeState.value.linkPreview?.uri && url != pendingLinkUrl.value) { @@ -387,7 +404,7 @@ fun ComposeView( fun checkLinkPreview(): MsgContent { return when (val composePreview = cs.preview) { is ComposePreview.CLinkPreview -> { - val url = parseMessage(msgText) + val url = parseMessage(msgText).first val lp = composePreview.linkPreview if (lp != null && url == lp.uri) { MsgContent.MCLink(msgText, preview = lp) @@ -563,8 +580,16 @@ fun ComposeView( } else { textStyle.value = smallFont if (composeState.value.linkPreviewAllowed) { - if (s.isNotEmpty()) showLinkPreview(s) - else resetLinkPreview() + if (s.isNotEmpty()) { + showLinkPreview(s) + } else { + resetLinkPreview() + hasSimplexLink.value = false + } + } else if (s.isNotEmpty() && !chat.groupFeatureEnabled(GroupFeature.SimplexLinks)) { + hasSimplexLink.value = parseMessage(s).second + } else { + hasSimplexLink.value = false } } } @@ -700,6 +725,16 @@ fun ComposeView( } } + @Composable + fun MsgNotAllowedView(reason: String, icon: Painter) { + val color = CurrentColors.collectAsState().value.appColors.receivedMessage + Row(Modifier.padding(top = 5.dp).fillMaxWidth().background(color).padding(horizontal = DEFAULT_PADDING_HALF, vertical = DEFAULT_PADDING_HALF * 1.5f), verticalAlignment = Alignment.CenterVertically) { + Icon(icon, null, tint = MaterialTheme.colors.secondary) + Spacer(Modifier.width(DEFAULT_PADDING_HALF)) + Text(reason, fontStyle = FontStyle.Italic) + } + } + @Composable fun contextItemView() { when (val contextItem = composeState.value.contextItem) { @@ -743,7 +778,17 @@ fun ComposeView( if (nextSendGrpInv.value) { ComposeContextInvitingContactMemberView() } + val simplexLinkProhibited = hasSimplexLink.value && !chat.groupFeatureEnabled(GroupFeature.SimplexLinks) + val fileProhibited = composeState.value.attachmentPreview && !chat.groupFeatureEnabled(GroupFeature.Files) + val voiceProhibited = composeState.value.preview is ComposePreview.VoicePreview && !chat.chatInfo.featureEnabled(ChatFeature.Voice) if (composeState.value.preview !is ComposePreview.VoicePreview || composeState.value.editing) { + if (simplexLinkProhibited) { + MsgNotAllowedView(generalGetString(MR.strings.simplex_links_not_allowed), icon = painterResource(MR.images.ic_link)) + } else if (fileProhibited) { + MsgNotAllowedView(generalGetString(MR.strings.files_and_media_not_allowed), icon = painterResource(MR.images.ic_draft)) + } else if (voiceProhibited) { + MsgNotAllowedView(generalGetString(MR.strings.voice_messages_not_allowed), icon = painterResource(MR.images.ic_mic)) + } contextItemView() when { composeState.value.editing && composeState.value.preview is ComposePreview.VoicePreview -> {} @@ -764,7 +809,7 @@ fun ComposeView( modifier = Modifier.padding(end = 8.dp), verticalAlignment = Alignment.Bottom, ) { - val isGroupAndProhibitedFiles = chat.chatInfo is ChatInfo.Group && !chat.chatInfo.groupInfo.fullGroupPreferences.files.on + val isGroupAndProhibitedFiles = chat.chatInfo is ChatInfo.Group && !chat.chatInfo.groupInfo.fullGroupPreferences.files.on(chat.chatInfo.groupInfo.membership) val attachmentClicked = if (isGroupAndProhibitedFiles) { { AlertManager.shared.showAlertMsg( @@ -871,6 +916,7 @@ fun ComposeView( chat.chatInfo is ChatInfo.Direct, liveMessageAlertShown = chatModel.controller.appPrefs.liveMessageAlertShown, sendMsgEnabled = sendMsgEnabled.value, + sendButtonEnabled = sendMsgEnabled.value && !(simplexLinkProhibited || fileProhibited || voiceProhibited), nextSendGrpInv = nextSendGrpInv.value, needToAllowVoiceToContact, allowedVoiceByPrefs, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt index 456e2a538b..14bcf7dfb7 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt @@ -39,6 +39,7 @@ fun SendMsgView( isDirectChat: Boolean, liveMessageAlertShown: SharedPreference, sendMsgEnabled: Boolean, + sendButtonEnabled: Boolean, nextSendGrpInv: Boolean, needToAllowVoiceToContact: Boolean, allowedVoiceByPrefs: Boolean, @@ -75,7 +76,8 @@ fun SendMsgView( val showDeleteTextButton = rememberSaveable { mutableStateOf(false) } val sendMsgButtonDisabled = !sendMsgEnabled || !cs.sendEnabled() || (!allowedVoiceByPrefs && cs.preview is ComposePreview.VoicePreview) || - cs.endLiveDisabled + cs.endLiveDisabled || + !sendButtonEnabled PlatformTextField(composeState, sendMsgEnabled, sendMsgButtonDisabled, textStyle, showDeleteTextButton, userIsObserver, onMessageChange, editPrevMessage, onFilesPasted) { if (!cs.inProgress) { sendMessage(null) @@ -430,7 +432,7 @@ private fun SendMsgButton( .padding(4.dp) .alpha(alpha.value) .clip(CircleShape) - .background(if (enabled) sendButtonColor else MaterialTheme.colors.secondary) + .background(if (enabled) sendButtonColor else MaterialTheme.colors.secondary.copy(alpha = 0.75f)) .padding(3.dp) ) } @@ -552,6 +554,7 @@ fun PreviewSendMsgView() { isDirectChat = true, liveMessageAlertShown = SharedPreference(get = { true }, set = { }), sendMsgEnabled = true, + sendButtonEnabled = true, nextSendGrpInv = false, needToAllowVoiceToContact = false, allowedVoiceByPrefs = true, @@ -586,6 +589,7 @@ fun PreviewSendMsgViewEditing() { isDirectChat = true, liveMessageAlertShown = SharedPreference(get = { true }, set = { }), sendMsgEnabled = true, + sendButtonEnabled = true, nextSendGrpInv = false, needToAllowVoiceToContact = false, allowedVoiceByPrefs = true, @@ -620,6 +624,7 @@ fun PreviewSendMsgViewInProgress() { isDirectChat = true, liveMessageAlertShown = SharedPreference(get = { true }, set = { }), sendMsgEnabled = true, + sendButtonEnabled = true, nextSendGrpInv = false, needToAllowVoiceToContact = false, allowedVoiceByPrefs = true, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt index ebb35a4468..e90efa7d1b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupMemberInfoView.kt @@ -309,7 +309,7 @@ fun GroupMemberInfoLayout( SectionView { if (contactId != null && knownDirectChat(contactId) != null) { OpenChatButton(onClick = { openDirectChat(contactId) }) - } else if (groupInfo.fullGroupPreferences.directMessages.on) { + } else if (groupInfo.fullGroupPreferences.directMessages.on(groupInfo.membership)) { if (contactId != null) { OpenChatButton(onClick = { openDirectChat(contactId) }) } else if (member.activeConn?.peerChatVRange?.isCompatibleRange(CREATE_MEMBER_CONTACT_VRANGE) == true) { @@ -335,7 +335,7 @@ fun GroupMemberInfoLayout( val clipboard = LocalClipboardManager.current ShareAddressButton { clipboard.shareText(simplexChatLink(member.contactLink)) } if (contactId != null) { - if (knownDirectChat(contactId) == null && !groupInfo.fullGroupPreferences.directMessages.on) { + if (knownDirectChat(contactId) == null && !groupInfo.fullGroupPreferences.directMessages.on(groupInfo.membership)) { ConnectViaAddressButton(onClick = { connectViaAddress(member.contactLink) }) } } else { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt index 607efb9a3b..265d0cdeae 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupPreferences.kt @@ -6,7 +6,6 @@ import SectionDividerSpaced import SectionItemView import SectionTextFooter import SectionView -import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.material.MaterialTheme import androidx.compose.material.Text @@ -20,13 +19,20 @@ import chat.simplex.common.views.usersettings.PreferenceToggleWithIcon import chat.simplex.common.model.* import chat.simplex.common.platform.ColumnWithScrollBar import chat.simplex.res.MR +import dev.icerock.moko.resources.compose.painterResource + +private val featureRoles: List> = listOf( + null to generalGetString(MR.strings.feature_roles_all_members), + GroupMemberRole.Admin to generalGetString(MR.strings.feature_roles_admins), + GroupMemberRole.Owner to generalGetString(MR.strings.feature_roles_owners) +) @Composable -fun GroupPreferencesView(m: ChatModel, rhId: Long?, chatId: String, close: () -> Unit,) { +fun GroupPreferencesView(m: ChatModel, rhId: Long?, chatId: String, close: () -> Unit) { val groupInfo = remember { derivedStateOf { val ch = m.getChat(chatId) val g = (ch?.chatInfo as? ChatInfo.Group)?.groupInfo - if (g == null || ch?.remoteHostId != rhId) null else g + if (g == null || ch.remoteHostId != rhId) null else g }} val gInfo = groupInfo.value ?: return var preferences by rememberSaveable(gInfo, stateSaver = serializableSaver()) { mutableStateOf(gInfo.fullGroupPreferences) } @@ -81,7 +87,7 @@ private fun GroupPreferencesLayout( val onTTLUpdated = { ttl: Int? -> applyPrefs(preferences.copy(timedMessages = preferences.timedMessages.copy(ttl = ttl))) } - FeatureSection(GroupFeature.TimedMessages, timedMessages, groupInfo, preferences, onTTLUpdated) { enable -> + FeatureSection(GroupFeature.TimedMessages, timedMessages, null, groupInfo, preferences, onTTLUpdated) { enable, _ -> if (enable == GroupFeatureEnabled.ON) { applyPrefs(preferences.copy(timedMessages = TimedMessagesGroupPreference(enable = enable, ttl = preferences.timedMessages.ttl ?: 86400))) } else { @@ -90,33 +96,45 @@ private fun GroupPreferencesLayout( } SectionDividerSpaced(true, maxBottomPadding = false) val allowDirectMessages = remember(preferences) { mutableStateOf(preferences.directMessages.enable) } - FeatureSection(GroupFeature.DirectMessages, allowDirectMessages, groupInfo, preferences, onTTLUpdated) { - applyPrefs(preferences.copy(directMessages = GroupPreference(enable = it))) + val directMessagesRole = remember(preferences) { mutableStateOf(preferences.directMessages.role) } + FeatureSection(GroupFeature.DirectMessages, allowDirectMessages, directMessagesRole, groupInfo, preferences, onTTLUpdated) { enable, role -> + applyPrefs(preferences.copy(directMessages = RoleGroupPreference(enable = enable, role))) } SectionDividerSpaced(true, maxBottomPadding = false) val allowFullDeletion = remember(preferences) { mutableStateOf(preferences.fullDelete.enable) } - FeatureSection(GroupFeature.FullDelete, allowFullDeletion, groupInfo, preferences, onTTLUpdated) { - applyPrefs(preferences.copy(fullDelete = GroupPreference(enable = it))) + FeatureSection(GroupFeature.FullDelete, allowFullDeletion, null, groupInfo, preferences, onTTLUpdated) { enable, _ -> + applyPrefs(preferences.copy(fullDelete = GroupPreference(enable = enable))) } SectionDividerSpaced(true, maxBottomPadding = false) val allowReactions = remember(preferences) { mutableStateOf(preferences.reactions.enable) } - FeatureSection(GroupFeature.Reactions, allowReactions, groupInfo, preferences, onTTLUpdated) { - applyPrefs(preferences.copy(reactions = GroupPreference(enable = it))) + FeatureSection(GroupFeature.Reactions, allowReactions, null, groupInfo, preferences, onTTLUpdated) { enable, _ -> + applyPrefs(preferences.copy(reactions = GroupPreference(enable = enable))) } SectionDividerSpaced(true, maxBottomPadding = false) val allowVoice = remember(preferences) { mutableStateOf(preferences.voice.enable) } - FeatureSection(GroupFeature.Voice, allowVoice, groupInfo, preferences, onTTLUpdated) { - applyPrefs(preferences.copy(voice = GroupPreference(enable = it))) + val voiceRole = remember(preferences) { mutableStateOf(preferences.voice.role) } + FeatureSection(GroupFeature.Voice, allowVoice, voiceRole, groupInfo, preferences, onTTLUpdated) { enable, role -> + applyPrefs(preferences.copy(voice = RoleGroupPreference(enable = enable, role))) } SectionDividerSpaced(true, maxBottomPadding = false) val allowFiles = remember(preferences) { mutableStateOf(preferences.files.enable) } - FeatureSection(GroupFeature.Files, allowFiles, groupInfo, preferences, onTTLUpdated) { - applyPrefs(preferences.copy(files = GroupPreference(enable = it))) + val filesRole = remember(preferences) { mutableStateOf(preferences.files.role) } + FeatureSection(GroupFeature.Files, allowFiles, filesRole, groupInfo, preferences, onTTLUpdated) { enable, role -> + applyPrefs(preferences.copy(files = RoleGroupPreference(enable = enable, role))) } + + // TODO enable simplexLinks preference in 5.8 +// SectionDividerSpaced(true, maxBottomPadding = false) +// val allowSimplexLinks = remember(preferences) { mutableStateOf(preferences.simplexLinks.enable) } +// val simplexLinksRole = remember(preferences) { mutableStateOf(preferences.simplexLinks.role) } +// FeatureSection(GroupFeature.SimplexLinks, allowSimplexLinks, simplexLinksRole, groupInfo, preferences, onTTLUpdated) { enable, role -> +// applyPrefs(preferences.copy(simplexLinks = RoleGroupPreference(enable = enable, role))) +// } + SectionDividerSpaced(true, maxBottomPadding = false) val enableHistory = remember(preferences) { mutableStateOf(preferences.history.enable) } - FeatureSection(GroupFeature.History, enableHistory, groupInfo, preferences, onTTLUpdated) { - applyPrefs(preferences.copy(history = GroupPreference(enable = it))) + FeatureSection(GroupFeature.History, enableHistory, null, groupInfo, preferences, onTTLUpdated) { enable, _ -> + applyPrefs(preferences.copy(history = GroupPreference(enable = enable))) } if (groupInfo.canEdit) { SectionDividerSpaced(maxTopPadding = true, maxBottomPadding = false) @@ -134,10 +152,11 @@ private fun GroupPreferencesLayout( private fun FeatureSection( feature: GroupFeature, enableFeature: State, + enableForRole: State? = null, groupInfo: GroupInfo, preferences: FullGroupPreferences, onTTLUpdated: (Int?) -> Unit, - onSelected: (GroupFeatureEnabled) -> Unit + onSelected: (GroupFeatureEnabled, GroupMemberRole?) -> Unit ) { SectionView { val on = enableFeature.value == GroupFeatureEnabled.ON @@ -151,7 +170,7 @@ private fun FeatureSection( iconTint, enableFeature.value == GroupFeatureEnabled.ON, ) { checked -> - onSelected(if (checked) GroupFeatureEnabled.ON else GroupFeatureEnabled.OFF) + onSelected(if (checked) GroupFeatureEnabled.ON else GroupFeatureEnabled.OFF, enableForRole?.value) } if (timedOn) { val ttl = rememberSaveable(preferences.timedMessages) { mutableStateOf(preferences.timedMessages.ttl) } @@ -165,6 +184,18 @@ private fun FeatureSection( onSelected = onTTLUpdated ) } + if (enableFeature.value == GroupFeatureEnabled.ON && enableForRole != null) { + ExposedDropDownSettingRow( + generalGetString(MR.strings.feature_enabled_for), + featureRoles, + enableForRole, + // remove in v5.8 + enabled = remember { mutableStateOf(false) }, + onSelected = { value -> + onSelected(enableFeature.value, value) + } + ) + } } else { InfoRow( feature.text, @@ -175,6 +206,14 @@ private fun FeatureSection( if (timedOn) { InfoRow(generalGetString(MR.strings.delete_after), timeText(preferences.timedMessages.ttl)) } + if (enableFeature.value == GroupFeatureEnabled.ON && enableForRole != null) { + InfoRow(generalGetString(MR.strings.feature_enabled_for), featureRoles.firstOrNull { it.first == enableForRole.value }?.second ?: generalGetString(MR.strings.feature_roles_all_members), textColor = MaterialTheme.colors.secondary) + } + } + } + KeyChangeEffect(enableFeature.value) { + if (enableFeature.value == GroupFeatureEnabled.OFF) { + onSelected(enableFeature.value, null) } } SectionTextFooter(feature.enableDescription(enableFeature.value, groupInfo.canEdit)) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt index a9a4963c96..68a8eb44a4 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt @@ -16,6 +16,7 @@ import chat.simplex.common.platform.onRightClick @Composable fun CIChatFeatureView( + chatInfo: ChatInfo, chatItem: ChatItem, feature: Feature, iconColor: Color, @@ -23,7 +24,7 @@ fun CIChatFeatureView( revealed: MutableState, showMenu: MutableState, ) { - val merged = if (!revealed.value) mergedFeatures(chatItem) else emptyList() + val merged = if (!revealed.value) mergedFeatures(chatItem, chatInfo) else emptyList() Box( Modifier .combinedClickable( @@ -70,7 +71,7 @@ private fun Feature.toFeatureInfo(color: Color, param: Int?, type: String): Feat ) @Composable -private fun mergedFeatures(chatItem: ChatItem): List? { +private fun mergedFeatures(chatItem: ChatItem, chatInfo: ChatInfo): List? { val m = ChatModel val fs: ArrayList = arrayListOf() val icons: MutableSet = mutableSetOf() @@ -78,7 +79,7 @@ private fun mergedFeatures(chatItem: ChatItem): List? { if (i != null) { val reversedChatItems = m.chatItems.asReversed() while (i < reversedChatItems.size) { - val f = featureInfo(reversedChatItems[i]) ?: break + val f = featureInfo(reversedChatItems[i], chatInfo) ?: break if (!icons.contains(f.icon)) { fs.add(0, f) icons.add(f.icon) @@ -90,12 +91,12 @@ private fun mergedFeatures(chatItem: ChatItem): List? { } @Composable -private fun featureInfo(ci: ChatItem): FeatureInfo? = +private fun featureInfo(ci: ChatItem, chatInfo: ChatInfo): FeatureInfo? = when (ci.content) { is CIContent.RcvChatFeature -> ci.content.feature.toFeatureInfo(ci.content.enabled.iconColor, ci.content.param, ci.content.feature.name) is CIContent.SndChatFeature -> ci.content.feature.toFeatureInfo(ci.content.enabled.iconColor, ci.content.param, ci.content.feature.name) - is CIContent.RcvGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enable.iconColor, ci.content.param, ci.content.groupFeature.name) - is CIContent.SndGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enable.iconColor, ci.content.param, ci.content.groupFeature.name) + is CIContent.RcvGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enabled(ci.content.memberRole_, (chatInfo as ChatInfo.Group).groupInfo.membership).iconColor, ci.content.param, ci.content.groupFeature.name) + is CIContent.SndGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enabled(ci.content.memberRole_, (chatInfo as ChatInfo.Group).groupInfo.membership).iconColor, ci.content.param, ci.content.groupFeature.name) else -> null } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index 6f6deeb6a4..fe70139d91 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -442,11 +442,11 @@ fun ChatItemView( MsgContentItemDropdownMenu() } is CIContent.RcvChatFeature -> { - CIChatFeatureView(cItem, c.feature, c.enabled.iconColor, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.feature, c.enabled.iconColor, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.SndChatFeature -> { - CIChatFeatureView(cItem, c.feature, c.enabled.iconColor, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.feature, c.enabled.iconColor, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.RcvChatPreference -> { @@ -454,23 +454,23 @@ fun ChatItemView( CIFeaturePreferenceView(cItem, ct, c.feature, c.allowed, acceptFeature) } is CIContent.SndChatPreference -> { - CIChatFeatureView(cItem, c.feature, MaterialTheme.colors.secondary, icon = c.feature.icon, revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.feature, MaterialTheme.colors.secondary, icon = c.feature.icon, revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.RcvGroupFeature -> { - CIChatFeatureView(cItem, c.groupFeature, c.preference.enable.iconColor, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.groupFeature, c.preference.enabled(c.memberRole_, (cInfo as ChatInfo.Group).groupInfo.membership).iconColor, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.SndGroupFeature -> { - CIChatFeatureView(cItem, c.groupFeature, c.preference.enable.iconColor, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.groupFeature, c.preference.enabled(c.memberRole_, (cInfo as ChatInfo.Group).groupInfo.membership).iconColor, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.RcvChatFeatureRejected -> { - CIChatFeatureView(cItem, c.feature, Color.Red, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.feature, Color.Red, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.RcvGroupFeatureRejected -> { - CIChatFeatureView(cItem, c.groupFeature, Color.Red, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.groupFeature, Color.Red, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.SndModerated -> DeletedItem() diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Section.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Section.kt index d930a2841e..c96a277fb8 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Section.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Section.kt @@ -254,12 +254,12 @@ fun TextIconSpaced(extraPadding: Boolean = false) { } @Composable -fun InfoRow(title: String, value: String, icon: Painter? = null, iconTint: Color? = null) { +fun InfoRow(title: String, value: String, icon: Painter? = null, iconTint: Color? = null, textColor: Color = MaterialTheme.colors.onBackground) { SectionItemViewSpaceBetween { Row { val iconSize = with(LocalDensity.current) { 21.sp.toDp() } if (icon != null) Icon(icon, title, Modifier.padding(end = 8.dp).size(iconSize), tint = iconTint ?: MaterialTheme.colors.secondary) - Text(title) + Text(title, color = textColor) } Text(value, color = MaterialTheme.colors.secondary) } 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 c4d9e191c6..b0287ed9fc 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -348,6 +348,9 @@ Files and media prohibited! Only group owners can enable files and media. Send direct message to connect + SimpleX links not allowed + Files and media not allowed + Voice messages not allowed Image @@ -1532,6 +1535,7 @@ Message reactions Voice messages Files and media + SimpleX links Visible history Audio/video calls \nAvailable in v5.1 @@ -1589,6 +1593,8 @@ Prohibit messages reactions. Allow to send files and media. Prohibit sending files and media. + Allow to send SimpleX links. + Prohibit sending SimpleX links Send up to 100 last messages to new members. Do not send history to new members. Group members can send disappearing messages. @@ -1603,6 +1609,8 @@ Message reactions are prohibited in this group. Group members can send files and media. Files and media are prohibited in this group. + Group members can send SimpleX links. + SimpleX links are prohibited in this group. Up to 100 last messages are sent to new members. History is not sent to new members. Delete after @@ -1625,6 +1633,10 @@ offered %s offered %s: %2s cancelled %s + all members + admins + owners + Enabled for What\'s new From 638fd3756a8fe2fef699a936bcf016b75f2febdf Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Sat, 13 Apr 2024 14:52:39 +0400 Subject: [PATCH 028/147] core: correctly populate data for items forwarded from groups (#4025) --- src/Simplex/Chat/Store/Messages.hs | 6 +++--- tests/ChatTests/Forward.hs | 18 ++++++++++++++++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/src/Simplex/Chat/Store/Messages.hs b/src/Simplex/Chat/Store/Messages.hs index 2e4ee6e48f..2b31a215da 100644 --- a/src/Simplex/Chat/Store/Messages.hs +++ b/src/Simplex/Chat/Store/Messages.hs @@ -411,7 +411,7 @@ createNewChatItem_ db User {userId} chatDirection msgId_ sharedMsgId ciContent q Just CIFFContact {chatName, msgDir, contactId, chatItemId} -> (Just CIFFContact_, Just chatName, Just msgDir, contactId, Nothing, chatItemId) Just CIFFGroup {chatName, msgDir, groupId, chatItemId} -> - (Just CIFFContact_, Just chatName, Just msgDir, Nothing, groupId, chatItemId) + (Just CIFFGroup_, Just chatName, Just msgDir, Nothing, groupId, chatItemId) ciTimedRow :: Maybe CITimed -> (Maybe Int, Maybe UTCTime) ciTimedRow (Just CITimed {ttl, deleteAt}) = (Just ttl, deleteAt) @@ -1468,8 +1468,8 @@ toCIForwardedFrom :: ChatItemForwardedFromRow -> Maybe CIForwardedFrom toCIForwardedFrom (fwdFromTag, fwdFromChatName, fwdFromMsgDir, fwdFromContactId, fwdFromGroupId, fwdFromChatItemId) = case (fwdFromTag, fwdFromChatName, fwdFromMsgDir, fwdFromContactId, fwdFromGroupId, fwdFromChatItemId) of (Just CIFFUnknown_, Nothing, Nothing, Nothing, Nothing, Nothing) -> Just CIFFUnknown - (Just CIFFContact_, Just chatName, Just msgDir, contactId, Nothing, chatId) -> Just $ CIFFContact chatName msgDir contactId chatId - (Just CIFFGroup_, Just chatName, Just msgDir, Nothing, groupId, chatId) -> Just $ CIFFGroup chatName msgDir groupId chatId + (Just CIFFContact_, Just chatName, Just msgDir, contactId, Nothing, ciId) -> Just $ CIFFContact chatName msgDir contactId ciId + (Just CIFFGroup_, Just chatName, Just msgDir, Nothing, groupId, ciId) -> Just $ CIFFGroup chatName msgDir groupId ciId _ -> Nothing type GroupQuoteRow = QuoteRow :. MaybeGroupMemberRow diff --git a/tests/ChatTests/Forward.hs b/tests/ChatTests/Forward.hs index 4bd75d0e5b..8638076ab2 100644 --- a/tests/ChatTests/Forward.hs +++ b/tests/ChatTests/Forward.hs @@ -5,6 +5,7 @@ module ChatTests.Forward where import ChatClient import ChatTests.Utils +import Control.Concurrent (threadDelay) import qualified Data.ByteString.Char8 as B import System.Directory (copyFile, doesFileExist) import Test.Hspec hiding (it) @@ -158,18 +159,35 @@ testForwardGroupToGroup = bob #> "#team hey" alice <# "#team bob> hey" + threadDelay 1000000 + alice `send` "#club <- #team hi" alice <# "#club <- you #team" alice <## " hi" cath <# "#club alice> -> forwarded" cath <## " hi" + threadDelay 1000000 + alice `send` "#club <- #team hey" alice <# "#club <- #team" alice <## " hey" cath <# "#club alice> -> forwarded" cath <## " hey" + -- read chat + alice ##> "/tail #club 2" + alice <# "#club <- you #team" + alice <## " hi" + alice <# "#club <- #team" + alice <## " hey" + + cath ##> "/tail #club 2" + cath <# "#club alice> -> forwarded" + cath <## " hi" + cath <# "#club alice> -> forwarded" + cath <## " hey" + testForwardGroupToNotes :: HasCallStack => FilePath -> IO () testForwardGroupToNotes = testChat2 aliceProfile bobProfile $ From fe639eed4818a365e2a8029fc82108b5cf7c99f4 Mon Sep 17 00:00:00 2001 From: artur Date: Sat, 13 Apr 2024 13:12:21 +0200 Subject: [PATCH 029/147] docs: Add Polish translation (#4001) * docs: Add polish translation * README: Add link to polish translation * docs: Polish version of README - Fix links * docs: Add links to polish translation, fix * docs: Fix polish translation thanks to support team * docs: Add links to polish translation in english version of docs * fix links --------- Co-authored-by: Evgeny Poberezkin --- README.md | 2 +- docs/ANDROID.md | 2 +- docs/CLI.md | 2 +- docs/CONTRIBUTING.md | 2 +- docs/SERVER.md | 2 +- docs/SIMPLEX.md | 2 +- docs/TRANSLATIONS.md | 2 +- docs/WEBRTC.md | 2 +- docs/lang/cs/ANDROID.md | 2 +- docs/lang/cs/CLI.md | 2 +- docs/lang/cs/CONTRIBUTING.md | 2 +- docs/lang/cs/README.md | 2 +- docs/lang/cs/SERVER.md | 2 +- docs/lang/cs/SIMPLEX.md | 2 +- docs/lang/cs/TRANSLATIONS.md | 2 +- docs/lang/cs/WEBRTC.md | 2 +- docs/lang/fr/ANDROID.md | 2 +- docs/lang/fr/CLI.md | 2 +- docs/lang/fr/CONTRIBUTING.md | 2 +- docs/lang/fr/README.md | 2 +- docs/lang/fr/SERVER.md | 2 +- docs/lang/fr/SIMPLEX.md | 2 +- docs/lang/fr/TRANSLATIONS.md | 2 +- docs/lang/fr/WEBRTC.md | 2 +- docs/lang/pl/ANDROID.md | 58 +++++ docs/lang/pl/CLI.md | 244 ++++++++++++++++++ docs/lang/pl/CONTRIBUTING.md | 121 +++++++++ docs/lang/pl/README.md | 435 +++++++++++++++++++++++++++++++ docs/lang/pl/SERVER.md | 485 +++++++++++++++++++++++++++++++++++ docs/lang/pl/SIMPLEX.md | 102 ++++++++ docs/lang/pl/TRANSLATIONS.md | 104 ++++++++ docs/lang/pl/WEBRTC.md | 158 ++++++++++++ 32 files changed, 1731 insertions(+), 24 deletions(-) create mode 100644 docs/lang/pl/ANDROID.md create mode 100644 docs/lang/pl/CLI.md create mode 100644 docs/lang/pl/CONTRIBUTING.md create mode 100644 docs/lang/pl/README.md create mode 100644 docs/lang/pl/SERVER.md create mode 100644 docs/lang/pl/SIMPLEX.md create mode 100644 docs/lang/pl/TRANSLATIONS.md create mode 100644 docs/lang/pl/WEBRTC.md diff --git a/README.md b/README.md index 28b40d0c1b..d1ac0b676d 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![Join on Reddit](https://img.shields.io/reddit/subreddit-subscribers/SimpleXChat?style=social)](https://www.reddit.com/r/SimpleXChat) ![Follow on Mastodon](https://img.shields.io/mastodon/follow/108619463746856738?domain=https%3A%2F%2Fmastodon.social&style=social) -| 30/03/2023 | EN, [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md) | +| 30/03/2023 | EN, [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md), [PL](/docs/lang/pl/README.md) | SimpleX logo diff --git a/docs/ANDROID.md b/docs/ANDROID.md index fa8921c827..61f81d1a40 100644 --- a/docs/ANDROID.md +++ b/docs/ANDROID.md @@ -3,7 +3,7 @@ title: Accessing files in Android app revision: 07.02.2023 --- -| 07.02.2023 | EN, [CZ](/docs/lang/cs/ANDROID.md), [FR](/docs/lang/fr/ANDROID.md) | +| 07.02.2023 | EN, [CZ](/docs/lang/cs/ANDROID.md), [FR](/docs/lang/fr/ANDROID.md), [PL](/docs/lang/pl/ANDROID.md) | # Accessing files in Android app diff --git a/docs/CLI.md b/docs/CLI.md index baf79bb3bc..d4f799c7af 100644 --- a/docs/CLI.md +++ b/docs/CLI.md @@ -3,7 +3,7 @@ title: Terminal CLI revision: 31.01.2023 --- -| Updated 31.01.2023 | Languages: EN, [FR](/docs/lang/fr/CLI.md), [CZ](/docs/lang/cs/CLI.md) | +| Updated 31.01.2023 | Languages: EN, [FR](/docs/lang/fr/CLI.md), [CZ](/docs/lang/cs/CLI.md), [PL](/docs/lang/pl/CLI.md) | # SimpleX Chat terminal (console) app for Linux/MacOS/Windows diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index aaf452af00..bc013cd7eb 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -3,7 +3,7 @@ title: Contributing guide revision: 31.01.2023 --- -| Updated 31.01.2023 | Languages: EN, [FR](/docs/lang/fr/CONTRIBUTING.md), [CZ](/docs/lang/cs/CONTRIBUTING.md) | +| Updated 31.01.2023 | Languages: EN, [FR](/docs/lang/fr/CONTRIBUTING.md), [CZ](/docs/lang/cs/CONTRIBUTING.md), [PL](/docs/lang/pl/CONTRIBUTING.md) | # Contributing guide diff --git a/docs/SERVER.md b/docs/SERVER.md index e476c7250c..c29a805452 100644 --- a/docs/SERVER.md +++ b/docs/SERVER.md @@ -3,7 +3,7 @@ title: Hosting your own SMP Server revision: 31.07.2023 --- -| Updated 05.06.2023 | Languages: EN, [FR](/docs/lang/fr/SERVER.md), [CZ](/docs/lang/cs/SERVER.md) | +| Updated 05.06.2023 | Languages: EN, [FR](/docs/lang/fr/SERVER.md), [CZ](/docs/lang/cs/SERVER.md), [PL](/docs/lang/pl/SERVER.md) | # Hosting your own SMP Server diff --git a/docs/SIMPLEX.md b/docs/SIMPLEX.md index 7ed01efa3c..ec25afaf88 100644 --- a/docs/SIMPLEX.md +++ b/docs/SIMPLEX.md @@ -3,7 +3,7 @@ title: SimpleX platform revision: 07.02.2023 --- -| Updated 07.02.2023 | Languages: EN, [FR](/docs/lang/fr/SIMPLEX.md), [CZ](/docs/lang/cs/SIMPLEX.md) | +| Updated 07.02.2023 | Languages: EN, [FR](/docs/lang/fr/SIMPLEX.md), [CZ](/docs/lang/cs/SIMPLEX.md), [PL](/docs/lang/pl/SIMPLEX.md) | # SimpleX platform - motivation and comparison ## Problems diff --git a/docs/TRANSLATIONS.md b/docs/TRANSLATIONS.md index 85b24b368e..d5c1cdef0b 100644 --- a/docs/TRANSLATIONS.md +++ b/docs/TRANSLATIONS.md @@ -3,7 +3,7 @@ title: Contributing translations to SimpleX Chat revision: 19.03.2023 --- -| 19.03.2023 | EN, [CZ](/docs/lang/cs/TRANSLATIONS.md), [FR](/docs/lang/fr/TRANSLATIONS.md) | +| 19.03.2023 | EN, [CZ](/docs/lang/cs/TRANSLATIONS.md), [FR](/docs/lang/fr/TRANSLATIONS.md), [PL](/docs/lang/pl/TRANSLATIONS.md) | # Contributing translations to SimpleX Chat diff --git a/docs/WEBRTC.md b/docs/WEBRTC.md index 7978d21ec7..8ce31bf959 100644 --- a/docs/WEBRTC.md +++ b/docs/WEBRTC.md @@ -3,7 +3,7 @@ title: Using custom WebRTC ICE servers in SimpleX Chat revision: 31.01.2023 --- -| Updated 31.01.2023 | Languages: EN, [FR](/docs/lang/fr/WEBRTC.md), [CZ](/docs/lang/cs/WEBRTC.md) | +| Updated 31.01.2023 | Languages: EN, [FR](/docs/lang/fr/WEBRTC.md), [CZ](/docs/lang/cs/WEBRTC.md), [PL](/docs/lang/pl/WEBRTC.md) | # Using custom WebRTC ICE servers in SimpleX Chat diff --git a/docs/lang/cs/ANDROID.md b/docs/lang/cs/ANDROID.md index 4edfc3018c..3c401f1d1b 100644 --- a/docs/lang/cs/ANDROID.md +++ b/docs/lang/cs/ANDROID.md @@ -2,7 +2,7 @@ title: Přístup k souborům v aplikaci Android revision: 07.02.2023 --- -| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/ANDROID.md) | +| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/ANDROID.md), [PL](/docs/lang/pl/ANDROID.md) | # Přístup k souborům v aplikaci Android diff --git a/docs/lang/cs/CLI.md b/docs/lang/cs/CLI.md index aa5a2ba281..9cbce8e6fe 100644 --- a/docs/lang/cs/CLI.md +++ b/docs/lang/cs/CLI.md @@ -2,7 +2,7 @@ title: SimpleX Chat terminálová revision: 31.01.2023 --- -| Aktualizováno 31.01.2023 | Jazyky: CZ, [EN](/docs/CLI.md), [FR](/docs/lang/fr/CLI.md) | +| Aktualizováno 31.01.2023 | Jazyky: CZ, [EN](/docs/CLI.md), [FR](/docs/lang/fr/CLI.md), [PL](/docs/lang/pl/CLI.md) | # SimpleX Chat terminálová (konzolová) aplikace pro Linux/MacOS/Windows diff --git a/docs/lang/cs/CONTRIBUTING.md b/docs/lang/cs/CONTRIBUTING.md index 26c746e7d2..17574bed4a 100644 --- a/docs/lang/cs/CONTRIBUTING.md +++ b/docs/lang/cs/CONTRIBUTING.md @@ -2,7 +2,7 @@ title: Průvodce přispíváním revision: 31.01.2023 --- -| Aktualizováno 31.01.2023 | Jazyky: CZ, [EN](/docs/CONTRIBUTING.md), [FR](/docs/lang/fr/CONTRIBUTING.md) | +| Aktualizováno 31.01.2023 | Jazyky: CZ, [EN](/docs/CONTRIBUTING.md), [FR](/docs/lang/fr/CONTRIBUTING.md), [PL](/docs/lang/pl/CONTRIBUTING.md) | # Průvodce přispíváním diff --git a/docs/lang/cs/README.md b/docs/lang/cs/README.md index 9423cc96b8..764499cdae 100644 --- a/docs/lang/cs/README.md +++ b/docs/lang/cs/README.md @@ -1,4 +1,4 @@ -| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/README.md), [FR](/docs/lang/fr/README.md) | +| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/README.md), [FR](/docs/lang/fr/README.md), [PL](/docs/lang/pl/README.md) | SimpleX logo diff --git a/docs/lang/cs/SERVER.md b/docs/lang/cs/SERVER.md index f8258909bc..3dd2f3780c 100644 --- a/docs/lang/cs/SERVER.md +++ b/docs/lang/cs/SERVER.md @@ -2,7 +2,7 @@ title: Hostování vlastního serveru SMP revision: 05.06.2023 --- -| Aktualizováno 05.06.2023 | Jazyky: CZ, [EN](/docs/SERVER.md), [FR](/docs/lang/fr/SERVER.md) | +| Aktualizováno 05.06.2023 | Jazyky: CZ, [EN](/docs/SERVER.md), [FR](/docs/lang/fr/SERVER.md), [PL](/docs/lang/pl/SERVER.md) | # Hostování vlastního serveru SMP diff --git a/docs/lang/cs/SIMPLEX.md b/docs/lang/cs/SIMPLEX.md index 33d45cec65..0d32fd06d9 100644 --- a/docs/lang/cs/SIMPLEX.md +++ b/docs/lang/cs/SIMPLEX.md @@ -2,7 +2,7 @@ title: Platforma SimpleX revision: 07.02.2023 --- -| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/SIMPLEX.md), [FR](/docs/lang/fr/SIMPLEX.md) | +| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/SIMPLEX.md), [FR](/docs/lang/fr/SIMPLEX.md), [PL](/docs/lang/pl/SIMPLEX.md) | # Platforma SimpleX - motivace a srovnání diff --git a/docs/lang/cs/TRANSLATIONS.md b/docs/lang/cs/TRANSLATIONS.md index b260bd12a6..c22979bdfc 100644 --- a/docs/lang/cs/TRANSLATIONS.md +++ b/docs/lang/cs/TRANSLATIONS.md @@ -2,7 +2,7 @@ title: Přispívání překladů do SimpleX Chat revision: 07.02.2023 --- -| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/TRANSLATIONS.md) | +| Aktualizováno 07.02.2023 | Jazyky: CZ, [EN](/docs/TRANSLATIONS.md), [PL](/docs/lang/pl/TRANSLATIONS.md) | # Přispívání překladů do SimpleX Chat diff --git a/docs/lang/cs/WEBRTC.md b/docs/lang/cs/WEBRTC.md index 77df920255..df63c3205e 100644 --- a/docs/lang/cs/WEBRTC.md +++ b/docs/lang/cs/WEBRTC.md @@ -2,7 +2,7 @@ title: Použití vlastních serverů WebRTC ICE v SimpleX Chat revision: 31.01.2023 --- -| Aktualizováno 31.01.2023 | Jazyky: CZ, [EN](/docs/WEBRTC.md), [FR](/docs/lang/fr/WEBRTC.md) | +| Aktualizováno 31.01.2023 | Jazyky: CZ, [EN](/docs/WEBRTC.md), [FR](/docs/lang/fr/WEBRTC.md), [PL](/docs/lang/pl/WEBRTC.md) | # Použití vlastních serverů WebRTC ICE v SimpleX Chat diff --git a/docs/lang/fr/ANDROID.md b/docs/lang/fr/ANDROID.md index 0f710542a8..1d100c5c04 100644 --- a/docs/lang/fr/ANDROID.md +++ b/docs/lang/fr/ANDROID.md @@ -2,7 +2,7 @@ title: Accès aux fichiers dans l'application Android revision: 07.02.2023 --- -| 07.02.2023 | FR, [EN](/docs/ANDROID.md), [CZ](/docs/lang/cs/ANDROID.md) | +| 07.02.2023 | FR, [EN](/docs/ANDROID.md), [CZ](/docs/lang/cs/ANDROID.md), [PL](/docs/lang/pl/ANDROID.md) | # Accès aux fichiers dans l'application Android diff --git a/docs/lang/fr/CLI.md b/docs/lang/fr/CLI.md index 6fe9c86d75..bb596491f1 100644 --- a/docs/lang/fr/CLI.md +++ b/docs/lang/fr/CLI.md @@ -2,7 +2,7 @@ title: Application de terminal revision: 31.01.2023 --- -| 31.01.2023 | FR, [EN](/docs/CLI.md), [CZ](/docs/lang/cs/CLI.md) | +| 31.01.2023 | FR, [EN](/docs/CLI.md), [CZ](/docs/lang/cs/CLI.md), [PL](/docs/lang/pl/CLI.md) | # Application de terminal (console) SimpleX Chat pour Linux/MacOS/Windows diff --git a/docs/lang/fr/CONTRIBUTING.md b/docs/lang/fr/CONTRIBUTING.md index 81515b09b2..ea6dcb5ca3 100644 --- a/docs/lang/fr/CONTRIBUTING.md +++ b/docs/lang/fr/CONTRIBUTING.md @@ -2,7 +2,7 @@ title: Guide pour contribuer revision: 31.01.2023 --- -| 31.01.2023 | FR, [EN](/docs/CONTRIBUTING.md), [CZ](/docs/lang/cs/CONTRIBUTING.md) | +| 31.01.2023 | FR, [EN](/docs/CONTRIBUTING.md), [CZ](/docs/lang/cs/CONTRIBUTING.md), [PL](/docs/lang/pl/CONTRIBUTING.md) | # Guide pour contribuer diff --git a/docs/lang/fr/README.md b/docs/lang/fr/README.md index 2f11fe9539..1a69630e03 100644 --- a/docs/lang/fr/README.md +++ b/docs/lang/fr/README.md @@ -4,7 +4,7 @@ [![Join on Reddit](https://img.shields.io/reddit/subreddit-subscribers/SimpleXChat?style=social)](https://www.reddit.com/r/SimpleXChat) [![Follow on Mastodon](https://img.shields.io/mastodon/follow/108619463746856738?domain=https%3A%2F%2Fmastodon.social&style=social)](https://mastodon.social/@simplex) -| 30/03/2023 | FR, [EN](/README.md), [CZ](/docs/lang/cs/README.md) | +| 30/03/2023 | FR, [EN](/README.md), [CZ](/docs/lang/cs/README.md), [PL](/docs/lang/pl/README.md) | SimpleX logo diff --git a/docs/lang/fr/SERVER.md b/docs/lang/fr/SERVER.md index ac9cec7eb9..7bbe315273 100644 --- a/docs/lang/fr/SERVER.md +++ b/docs/lang/fr/SERVER.md @@ -2,7 +2,7 @@ title: Héberger votre propre serveur SMP revision: 05.06.2023 --- -| 05.06.2023 | FR, [EN](/docs/SERVER.md), [CZ](/docs/lang/cs/SERVER.md) | +| 05.06.2023 | FR, [EN](/docs/SERVER.md), [CZ](/docs/lang/cs/SERVER.md), [PL](/docs/lang/pl/SERVER.md) | # Héberger votre propre serveur SMP diff --git a/docs/lang/fr/SIMPLEX.md b/docs/lang/fr/SIMPLEX.md index a7134205d0..aacc645054 100644 --- a/docs/lang/fr/SIMPLEX.md +++ b/docs/lang/fr/SIMPLEX.md @@ -2,7 +2,7 @@ title: Plateforme SimpleX revision: 07.02.2023 --- -| 07.02.2023 | FR, [EN](/docs/SIMPLEX.md), [CZ](/docs/lang/cs/SIMPLEX.md) | +| 07.02.2023 | FR, [EN](/docs/SIMPLEX.md), [CZ](/docs/lang/cs/SIMPLEX.md), [PL](/docs/lang/pl/SIMPLEX.md) | # Plateforme SimpleX - motivation et comparaison diff --git a/docs/lang/fr/TRANSLATIONS.md b/docs/lang/fr/TRANSLATIONS.md index e85a4a8513..1e216900e7 100644 --- a/docs/lang/fr/TRANSLATIONS.md +++ b/docs/lang/fr/TRANSLATIONS.md @@ -2,7 +2,7 @@ title: Contribuer aux traductions de SimpleX Chat revision: 19.03.2023 --- -| 19.03.2023 | FR, [EN](/docs/TRANSLATIONS.md), [CZ](/docs/lang/cs/TRANSLATIONS.md) | +| 19.03.2023 | FR, [EN](/docs/TRANSLATIONS.md), [CZ](/docs/lang/cs/TRANSLATIONS.md), [PL](/docs/lang/pl/TRANSLATIONS.md) | # Contribuer aux traductions de SimpleX Chat diff --git a/docs/lang/fr/WEBRTC.md b/docs/lang/fr/WEBRTC.md index 47296274b3..381677b3f6 100644 --- a/docs/lang/fr/WEBRTC.md +++ b/docs/lang/fr/WEBRTC.md @@ -2,7 +2,7 @@ title: Utilisation de serveurs WebRTC ICE personnalisés dans SimpleX Chat revision: 31.01.2023 --- -| 31.01.2023 | FR, [EN](/docs/WEBRTC.md), [CZ](/docs/lang/cs/WEBRTC.md) | +| 31.01.2023 | FR, [EN](/docs/WEBRTC.md), [CZ](/docs/lang/cs/WEBRTC.md), [PL](/docs/lang/pl/WEBRTC.md) | # Utilisation de serveurs WebRTC ICE personnalisés dans SimpleX Chat diff --git a/docs/lang/pl/ANDROID.md b/docs/lang/pl/ANDROID.md new file mode 100644 index 0000000000..ce422ab3b5 --- /dev/null +++ b/docs/lang/pl/ANDROID.md @@ -0,0 +1,58 @@ +--- +title: Dostęp do plików w aplikacji Androidowej +revision: 07.02.2023 +--- + +| 07.02.2023 | PL, [EN](/docs/ANDROID.md), [CZ](/docs/lang/cs/ANDROID.md), [FR](/docs/lang/fr/ANDROID.md) | + +# Dostęp do plików w aplikacji Androidowej + +SimpleX wykorzystuje bazy danych i przechowuje ustawienia w prywatnym katalogu w systemie Android. Katalog ten zawiera: + +- bazy danych +- wysłane i odebrane pliki +- pliki tymczasowe, które zostaną usunięte, gdy nie są już potrzebne +- ustawienia użytkownika. + +Jeśli chcesz zobaczyć, co jest przechowywane w katalogu SimpleX, musisz mieć: + +- System operacyjny oparty na systemie Unix (lub [MinGW](https://www.mingw-w64.org/downloads/) na Windowsie) +- narzędzie ADB (Android Debug Bridge) zainstalowane na komputerze ([pobierz je tutaj](https://developer.android.com/studio/releases/platform-tools) i zainstaluj) +- urządzenie podłączone przez USB lub Wi-Fi do komputera. + +## Proces: + +- otwórz SimpleX, przejdź do `Hasło do bazy danych i eksport`, włącz `Kopia zapasowa danych aplikacji`. To sprawi, że następne kroki będą działać. +- _opcjonalnie_: jeśli chcesz wyświetlić zawartość bazy danych, zmień hasło bazy danych z losowego na swoje. Aby to zrobić, zatrzymaj czat na ekranie `Hasło do bazy danych i eksport`, otwórz `Hasło do bazy danych`, wprowadź nowe hasło i potwierdź je, a następnie zatwierdź. Nie zapomnij go, w przeciwnym razie utracisz wszystkie dane w przypadku, gdy zostaniesz ponownie poproszony o hasło. +- otwórz emulator terminala (Windows CMD/Powershell nie zadziała) i zmień katalog na ten, którego chcesz użyć do przechowywania kopii zapasowej: + +```bash +cd /tmp # to tylko przykład +``` +Następne uruchom: +```bash +adb -d backup -f chat.ab -noapk chat.simplex.app && +tail -n +5 chat.ab > chat.dat && +printf "\x1f\x8b\x08\x00\x00\x00\x00\x00" | cat - chat.dat > chat.gz && +tar -xvzf chat.gz +``` + +Teraz odblokuj urządzenie i potwierdź operację tworzenia kopii zapasowej bez użycia hasła do szyfrowania, w przeciwnym razie polecenia nie będą działać. + +Po tym kopia zapasowa powinna zostać zrobiona. Jeśli pojawi się błąd `tar: Error is not recoverable: exiting now`, ale wcześniej pojawiło się kilka nazw plików, nie martw się, wszystko jest w porządku. + +Teraz zapisane pliki będą w `./apps/chat.simplex.app/`. + +Pamiętaj, że jeśli korzystasz z nowej wersji SimpleX, bazy danych będą zaszyfrowane i nie będziesz w stanie przeglądać ich zawartości bez użycia aplikacji `sqlcipher` oraz gdy nie znasz hasła deszyfrującego (musisz najpierw zmienić je na swoje z losowo wygenerowanego w aplikacji). + +## Odszyfrowywanie baz danych + +Aby wyświetlić dane bazy danych, należy je najpierw odszyfrować. Zainstaluj `sqlcipher` używając ulubionego menedżera pakietów i uruchom następujące polecenia w katalogu z bazami danych: +```bash +sqlcipher files_chat.db +pragma key="youDecryptionPassphrase"; +# Upewnij się, że to działa +select * from users; +``` + +Jeśli zobaczysz `Parse error: no such table: users`, upewnij się, że wprowadzono prawidłowe hasło i zostało ono zmienione z losowego w aplikacji na Androida (jeśli oczywiście pobrano tę bazę danych z urządzenia z Androidem). diff --git a/docs/lang/pl/CLI.md b/docs/lang/pl/CLI.md new file mode 100644 index 0000000000..585eca3e31 --- /dev/null +++ b/docs/lang/pl/CLI.md @@ -0,0 +1,244 @@ +--- +title: Aplikacja konsolowa +revision: 31.01.2023 +--- + +| Updated 31.01.2023 | Języki: PL, [EN](/docs/CLI.md), [FR](/docs/lang/fr/CLI.md), [CZ](/docs/lang/cs/CLI.md) | + +# Terminalowa (konsolowa) aplikacja SimpleX Chat dla systemów Linux/MacOS/Windows + +## Spis treści + +- [Funkcje czatu w terminalu](#funkcje-czatu-w-terminalu) +- [Instalacja](#🚀-instalacja) + - [Pobieranie klienta czatu](#pobieranie-klienta-czatu) + - [Linux i MacOS](#linux-i-macos) + - [Windows](#windows) + - [Budowanie z kodu źródłowego](#budowanie-z-kodu-źródłowego) + - [Używając dockera](#using-docker) + - [Używając Haskella na dowolnym systemie operacyjnym](#używając-haskella-na-dowolnym-systemie-operacyjnym) +- [Używanie](#używanie) + - [Używanie klienta czatu](#używanie-klienta-czatu) + - [Dostęp do serwerów wiadomości przez Tor](#dostęp-do-serwerów-wiadomości-przez-tor) + - [Jak używać czatu SimpleX](#jak-używać-czatu-simplex) + - [Grupy](#grupy) + - [Wysyłanie plików](#wysyłanie-plików) + - [Adresy kontaktowe użytkowników](#adresy-kontaktowe-użytkowników) + +## Funkcje czatu w terminalu + +- Konwersacje 1 na 1 z wieloma osobami w tym samym oknie terminala. +- Wiadomości grupowe. +- Wysyłanie plików do kontaktów i grup. +- Adresy kontaktowe użytkowników - nawiązywanie połączeń za pomocą linków kontaktowych wielokrotnego użytku. +- Wiadomości przechowywane w lokalnej bazie danych SQLite. +- Automatycznie wypełniana nazwa odbiorcy - po nawiązaniu połączenia wystarczy po prostu napisać wiadomość, aby odpowiedzieć nadawcy. +- Dostępne wstępnie skonfigurowane przykładowe serwery SMP - można też użyć [własnego serwera](https://github.com/simplex-chat/simplexmq#using-smp-server-and-smp-agent). +- Żadna globalna tożsamość ani nazwy użytkowników nie są widoczne dla serwera (serwerów), co zapewnia pełną prywatność kontaktów i rozmów. +- Dwie warstwy szyfrowania E2E (double-ratchet dla połączeń dwukierunkowych, przy użyciu negocjacji klucza X3DH z efemerycznymi kluczami Curve448 i NaCl crypto_box dla kolejek SMP, przy użyciu kluczy Curve25519) oraz przekazywanie kluczy odbiorców za pomocą komunikacji out-of-band (zobacz [Jak używać czatu SimpleX](#how-to-use-simplex-chat)). +- Weryfikacja integralności wiadomości (poprzez uwzględnienie hashu poprzedniej wiadomości). +- Uwierzytelnianie każdego polecenia/wiadomości przez serwery SMP za pomocą automatycznie generowanych kluczy Ed448. +- Szyfrowanie transmisji przy użyciu TLS 1.3. +- Dodatkowe szyfrowanie wiadomości z serwera SMP do odbiorcy aby utrudnić możliwość korelacji ruchu. + +Klucze publiczne biorące udział podczas wymiany kluczy nie są używane jako tożsamość, są one generowane losowo dla każdego kontaktu. + +Aby uzyskać szczegółowe informacje techniczne zobacz [używane metody szyfrowania](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md#encryption-primitives-used). + + + +## 🚀 Instalacja + +### Pobieranie klienta czatu + +#### Linux i MacOS + +By **zainstalować** lub **zaktualizować** `simplex-chat`, należy uruchomić skrypt instalacyjny. Aby to zrobić, użyj następującego polecenia cURL lub Wget: + +```sh +curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash +``` + +```sh +wget -qO- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash +``` + +Po pobraniu klienta czatu można go uruchomić za pomocą polecenia `simplex-chat`. + +Możesz również ręcznie pobrać plik binarny czatu dla swojego systemu z [najnowszej stabilnej wersji](https://github.com/simplex-chat/simplex-chat/releases) i uczynić go uruchamialnym w sposób pokazany poniżej. + +```sh +chmod +x +mv ~/.local/bin/simplex-chat +``` + +(lub użyj innej preferowanej lokalizacji w `PATH`). + +Na MacOS musisz również [zezwolić Gatekeeperowi, by go uruchomić](https://support.apple.com/en-us/HT202491). + +#### Windows + +```sh +move %APPDATA%/local/bin/simplex-chat.exe +``` + +### Budowanie z kodu źródłowego + +> **Uwaga:** aby zbudować aplikację użyj [wersji stabilnej](https://github.com/simplex-chat/simplex-chat/tree/stable). + +#### Używając Dockera + +Na Linuxie, aby zbudować plik wykonywalny możesz użyć [docker build z customowym outputem](https://docs.docker.com/engine/reference/commandline/build/#custom-build-outputs): + +```shell +git clone git@github.com:simplex-chat/simplex-chat.git +cd simplex-chat +git checkout stable +DOCKER_BUILDKIT=1 docker build --output ~/.local/bin . +``` + +> **Uwaga:** Jeśli napotkasz błąd `` version `GLIBC_2.28' not found ``, przebuduj go z obrazem bazowym `haskell:8.10.7-stretch` (zmień go w Twoim lokalnym pliku [Dockerfile](Dockerfile)). + +#### Używając Haskella na dowolnym systemie operacyjnym + +1. Zainstaluj [Haskell GHCup](https://www.haskell.org/ghcup/), GHC 9.6.3 i cabal 3.10.1.0: + +```shell +curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh +``` + +Możesz użyć polecenia `ghcup tui`, aby sprawdzić lub dodać wersje GHC i cabal. + +2. Sklonuj kod źródłowy: + +```shell +git clone git@github.com:simplex-chat/simplex-chat.git +cd simplex-chat +git checkout stable +# lub aby zbudować konkretną wersję: +# git checkout v5.3.0-beta.8 +``` + +`master` to branch deweloperski, może on zawierać niestabilny kod. + +3. Przygotowywanie systemu: + +Na Linuxie: + +```shell +apt-get update && apt-get install -y build-essential libgmp3-dev zlib1g-dev +cp scripts/cabal.project.local.linux cabal.project.local +``` + +Na Macu: + +``` +brew install openssl@1.1 +cp scripts/cabal.project.local.mac cabal.project.local +``` + +Może być konieczna zmiana cabal.project.local, aby wskazać poprawną lokalizację openssl + +4. Budowanie aplikacji: + +```shell +cabal update +cabal install simplex-chat +``` + +## Używanie + +### Używanie klienta czatu + +Aby uruchomić klienta, uruchom w terminalu polecenie `simplex-chat`. + +Domyślnie katalog z danymi aplikacji jest tworzony w katalogu domowym (`~/.simplex`, lub `%APPDATA%/simplex` na Windowsie), a dwa pliki danych SQLite `simplex_v1_chat.db` i `simplex_v1_agent.db` są w nim zainicjowane. + +Aby wskazać inny prefiks ścieżki dla plików bazy danych, należy użyć polecenia `-d`: + +```shell +$ simplex-chat -d alice +``` + +Uruchomienie powyższego przykładu spowoduje utworzenie plików baz danych `alice_v1_chat.db` i `alice_v1_agent.db` w bieżącym katalogu. + +Trzy domyślne serwery SMP są hostowane na Linode - są one [wstępnie skonfigurowane w aplikacji](https://github.com/simplex-chat/simplex-chat/blob/stable/src/Simplex/Chat/Options.hs#L42). + +Jeśli posiadasz własny serwer(y) SMP, możesz skonfigurować klienta poprzez opcję `-s`: + +```shell +$ simplex-chat -s smp://LcJUMfVhwD8yxjAiSaDzzGF3-kLG4Uh0Fl_ZIjrRwjI=@smp.example.com +``` + +Ciąg zakodowany w Base64url poprzedzający adres serwera to odcisk palca certyfikatu offline serwera, który jest weryfikowany przez klienta podczas handshake'a TLS. + +Po konfiguracji innego serwera w swoim kliencie nadal możesz rozmawiać z ludźmi używającymi domyślnego lub dowolnego innego serwera - ustawienie to wpływa tylko na lokalizację kolejki wiadomości podczas nawiązywania połączenia (a kolejka odpowiedzi może znajdować się na zupełnie innym serwerze, zgodnie z ustawieniami klienta rozmówcy). + +Polecenie `simplex-chat -h` pokazuje wszystkie dostępne opcje. + +### Dostęp do serwerów wiadomości przez Tor + +Zainstaluj Tor i uruchom go jako proxy SOCKS5 na porcie 9050, przykład dla MacOS: + +``` +brew install tor +brew services start tor +``` + +Użyj opcji `-x`, aby uzyskać dostęp do serwerów przez Tor: + +``` +simplex-chat -x +``` + +Możesz także użyć opcji `--socks-proxy=ipv4:port` lub `--socks-proxy=:port`, aby skonfigurować adres i port serwera proxy SOCKS5, przykładowo jeśli uruchamiasz go na innym hoście lub porcie. + +### Jak używać czatu SimpleX + +Po uruchomieniu czatu zostaniesz poproszony o podanie swojej "nazwy wyświetlanej" oraz opcjonalnej "pełnej nazwy" w celu utworzenia lokalnego profilu czatu. Nazwa wyświetlana jest aliasem, za pomocą którego kontakty mogą się do ciebie odnosić - nie jest ona unikalna i nie służy jako globalna tożsamość. Jeśli kilka kontaktów wybrało tę samą nazwę wyświetlaną, klient czatu dodaje numeryczną końcówkę (sufiks) do ich lokalnej nazwy wyświetlanej. + +Poniższy schemat przedstawia sposób łączenia się z kontaktem i wysyłania do niego wiadomości: + +

+ +
+ +Gdy już skonfigurujesz swój profil lokalny, wpisz `/c` (oznaczające `/connect`), aby utworzyć nowe połączenie i wygenerować zaproszenie. Wyślij to zaproszenie do swojego kontaktu za pośrednictwem dowolnego innego kanału komunikacji. + +Możesz utworzyć wiele zaproszeń, kilkukrotnie wpisując `/connect` i wysłać te zaproszenia do kontaktów, z którymi chcesz się połączyć. + +Zaproszenie może być użyte tylko jeden raz i nawet jeśli zostanie ono przechwycone, atakujący nie będzie mógł go użyć do wysłania do Ciebie wiadomości za pośrednictwem tej kolejki, gdy Twój kontakt potwierdzi, że połączenie zostało nawiązane. Zobacz omówienie protokołu agenta dla [formatu zaproszeń](https://github.com/simplex-chat/simplexmq/blob/master/protocol/agent-protocol.md#connection-request). + +Kontakt, który otrzymał zaproszenie powinien wpisać `/c `, aby zaakceptować połączenie. Spowoduje to nawiązanie połączenia, a obie strony zostaną o tym powiadomione. + +Następnie można użyć komendy `@ ` do wysłania wiadomości. Możesz także po prostu zacząć pisać wiadomość, aby wysłać ją do kontaktu, który był ostatni. + +Użyj `/help` na czacie, by uzyskać listę pozostałych dostępnych komend. + +### Grupy + +Aby utworzyć grupę, użyj `/g `, a następnie dodaj do niej kontakty za pomocą `/a `. Możesz wysyłać wiadomości do grupy wpisując `# `. Użyj `/help groups`, by uzyskać listę pozostałych dostępnych komend. + +![simplex-chat](../images/groups.gif) + +> **Uwaga**: informacje o grupach nie są przechowywane na żadnym serwerze, są one zapisywane jako lista członków w bazie danych aplikacji klientów, do których będą wysyłane wiadomości. + +### Wysyłanie plików + +Możesz wysłać plik do kontaktu za pomocą `/f @ <ścieżka_do_pliku>` - odbiorca będzie musiał go zaakceptować przed rozpoczęciem wysyłania. Użyj `/help files`, by uzyskać listę pozostałych dostępnych komend. + +![simplex-chat](../images/files.gif) + +Możesz wysyłać pliki do grupy za pomocą `/f # <ścieżka_do_pliku>`. + +### Adresy kontaktowe użytkowników + +Alternatywą dla jednorazowych linków zapraszających są adresy długoterminowe. Możesz je utworzyć za pomocą `/ad` (oznaczające `/address`). Utworzony adres może być następnie udostępniony za pośrednictwem dowolnego innego kanału komunikacji i użyty przez innych użytkowników jako link do prośby o kontakt używając `/c `. + +Prośby o kontakt możesz przyjąć za pomocą komendy `/ac ` oraz odrzucić za pomocą `/rc `. + +"Długoterminowy" adres użytkownika jest długoterminowy w tym sensie, że jest to link wielokrotnego użytku - może być używany do momentu usunięcia go przez użytkownika. Po usunięciu wszystkie nawiązane połączenia pozostaną aktywne (w przeciwieństwie do tego, jak działa to w przypadku poczty e-mail, gdy zmiana adresu powoduje, że ludzie nie mogą już wysyłać do siebie wiadomości). + +Użyj `/help address`, by uzyskać listę pozostałych dostępnych komend. + +![simplex-chat](../images/user-addresses.gif) diff --git a/docs/lang/pl/CONTRIBUTING.md b/docs/lang/pl/CONTRIBUTING.md new file mode 100644 index 0000000000..4f62217479 --- /dev/null +++ b/docs/lang/pl/CONTRIBUTING.md @@ -0,0 +1,121 @@ +--- +title: Poradnik wspierania projektu +revision: 31.01.2023 +--- + +| Updated 31.01.2023 | Języki: PL, [EN](/docs/CONTRIBUTING.md) [FR](/docs/lang/fr/CONTRIBUTING.md), [CZ](/docs/lang/cs/CONTRIBUTING.md) | + +# Poradnik wspierania projektu + +## Kompilacja z włączonym szyfrowaniem SQLCipher + +Dodaj `cabal.project.local` do katalogu głównego projektu z lokalizacją nagłówków i bibliotek OpenSSL oraz flagą ustawiającą tryb szyfrowania: + +``` +cp scripts/cabal.project.local.mac cabal.project.local +# lub +# cp scripts/cabal.project.local.linux cabal.project.local +``` + +## OpenSSL na MacOS + +MacOS ma domyślnie zainstalowany LibreSSL, OpenSSL musi być zainstalowany, aby skompilować SimpleX z kodu źródłowego. + +OpenSSL można zainstalować za pomocą `brew install openssl@1.1` + +Będziesz musiał dodać `/opt/homebrew/opt/openssl@1.1/bin` do swojego PATH, aby wszystko działało poprawnie + + +## Branche projektu + +**W repo simplex-chat** + + +- `stable` - stabilne wydanie aplikacji, może być używane do aktualizacji poprzedniego stabilnego wydania (GHC 9.6.3). + +- `stable-android` - używane do budowania stabilnej biblioteki rdzenia Androida z Nix (GHC 8.10.7) - tylko dla Androida armv7a. + +- `stable-ios` - używane do budowania stabilnej biblioteki rdzenia iOS z Nix (GHC 8.10.7) - ten branch powinien być taki sam jak `stable-android` z wyjątkiem plików konfiguracyjnych Nix. Przestarzałe. + +- `master` - branch dla wydań wersji beta (GHC 9.6.3). + +- `master-ghc8107` - branch dla wydań wersji beta (GHC 8.10.7). Przestarzałe. + +- `master-android` - używane do budowania biblioteki rdzenia Androida w wersji beta z Nix (GHC 8.10.7) - tylko dla Androida armv7a. + +- `master-ios` - służy do budowania biblioteki rdzenia beta iOS z Nix (GHC 8.10.7). Przestarzałe. + +- `windows-ghc8107` - branch do kompilacji głównej biblioteki Windows (GHC 8.10.7). Przestarzałe? + +Branche `master-ios` i `windows-ghc8107` powinny być takie same jak `master-ghc8107` z wyjątkiem plików konfiguracyjnych Nix. + +**W repo simplexmq** + +- `master` - używa GHC 9.6.3, jego commit powinien być użyty w branchu `master` repo simplex-chat. + +- `master-ghc8107` - jego commit powinien być użyty w branchu `master-android` (i `master-ios`) repo simplex-chat. Przestarzałe. + +## Development i proces wydawania + +1. Tworzenie PR-ów do brancha `master` _tylko_ dla repozytoriów simplex-chat i simplexmq. + +2. Jeśli repozytorium simplexmq zostało zmienione, aby skompilować mobilne biblioteki rdzenia należy połączyć jego branch `master` z branchem `master-ghc8107`. + +3. Aby skompilować podstawowe biblioteki dla Androida, iOS i Windows: + +- scal branch `master` z branchem `master-android`. + +- Zaktualizuj kod, aby był kompatybilny z GHC 8.10.7 (patrz niżej). + +- push do GitHuba. + +4. Wszystkie biblioteki powinny być budowane z brancha `master`, Android armv7a - z brancha `master-android`. + +5. Aby zbudować aplikacje Desktop i CLI, należy utworzyć tag w branchu `master`, pliki APK powinny być dołączone do wydania. + +6. Po publicznym wydaniu w App Store i Play Store, scal: + +- `master` do `stable` + +- `master` do `master-android` (i skompiluj/zaktualizuj kod) + +- `master-android` do `stable-android`. + +7. Branch `master` repo simplexmq powinien zostać niezależnie scalony z branchem `stable` w wydaniach stabilnych. + + +## Różnice pomiędzy GHC 8.10.7 i GHC 9.6.3 + +1. Główna różnica związana jest z rozszerzeniem `DuplicateRecordFields`. + +W GHC 9.6.3 nie jest już możliwe określenie typu podczas korzystania z selektorów, zamiast tego używane jest rozszerzenie OverloadedRecordDot i składnia, które muszą zostać usunięte w GHC 8.10.7: + +```haskell +{-# LANGUAGE DuplicateRecordFields #-} +-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne +{-# LANGUAGE OverloadedRecordDot #-} + +-- syntax GHC 9.6.3 +let x = record.field + +-- syntax GHC 8.10.7 usunięty w GHC 9.6.3 +let x = field (record :: Record) +``` + +Nadal możliwe jest określenie typu podczas korzystania ze składni aktualizacji rekordu, użyj tej reguły, aby wyłączyć ostrzeżenie kompilatora: + +```haskell +-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne +{-# OPTIONS_GHC -fno-warn-ambiguous-fields #-} + +let r' = (record :: Record) {field = value} +``` + +2. Większość funkcji monad musi być teraz importowana z `Control.Monad`, a nie z konkretnych modułów monad (np. `Control.Monad.Except`). + +```haskell +-- Użyj tego w GHC 9.6.3, gdy jest to potrzebne +import Control.Monad +``` + +[Ten PR](https://github.com/simplex-chat/simplex-chat/pull/2975/files) opisuje wszystkie różnice. diff --git a/docs/lang/pl/README.md b/docs/lang/pl/README.md new file mode 100644 index 0000000000..1fa9aa20eb --- /dev/null +++ b/docs/lang/pl/README.md @@ -0,0 +1,435 @@ +[![build](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml/badge.svg?branch=stable)](https://github.com/simplex-chat/simplex-chat/actions/workflows/build.yml) +[![Pobieranie z GitHuba](https://img.shields.io/github/downloads/simplex-chat/simplex-chat/total)](https://github.com/simplex-chat/simplex-chat/releases) +[![Wydanie na Githubie](https://img.shields.io/github/v/release/simplex-chat/simplex-chat)](https://github.com/simplex-chat/simplex-chat/releases) +[![Dołącz na Reddicie](https://img.shields.io/reddit/subreddit-subscribers/SimpleXChat?style=social)](https://www.reddit.com/r/SimpleXChat) +![Śledź na Mastodonie](https://img.shields.io/mastodon/follow/108619463746856738?domain=https%3A%2F%2Fmastodon.social&style=social) + +| 30/03/2023 | PL, [EN](/README.md), [FR](/docs/lang/fr/README.md), [CZ](/docs/lang/cs/README.md) | + +SimpleX logo + +# SimpleX - pierwszy komunikator bez jakichkolwiek identyfikatorów użytkowników - w 100% prywatny z założenia! + +[](http://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html)     [](https://www.privacyguides.org/en/real-time-communication/#simplex-chat)     [](https://www.kuketz-blog.de/simplex-eindruecke-vom-messenger-ohne-identifier/) + +## Witamy w SimpleX Chat! + +1. 📲 [Zainstaluj aplikację](#zainstaluj-aplikację). +2. ↔️ [Połącz się z naszym zespołem](#połącz-się-z-naszym-zespołem), [dołącz do grup użytkowników](#dołącz-do-grup-użytkowników) oraz [śledź nasze aktualizacje](#śledź-nasze-aktualizacje). +3. 🤝 [Wykonaj prywatne połączenie](#wykonaj-prywatne-połączenie) ze znajomym. +4. 🔤 [Pomóż w tłumaczeniu SimpleX Chat](#pomóż-nam-przetłumaczyć-simplex-chat). +5. ⚡️ [Kontrybuuj](#kontrybuuj) i [wesprzyj nas dotacjami](#wesprzyj-nas-dotacjami). + +[Dowiedz się więcej na temat SimpleX Chat](#informacje). + +## Zainstaluj aplikację + +[Aplikacja iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084) +  +[![Android app](https://github.com/simplex-chat/.github/blob/master/profile/images/google_play.svg)](https://play.google.com/store/apps/details?id=chat.simplex.app) +  +[F-Droid](https://app.simplex.chat) +  +[iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu) +  +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) + +- 🖲 Chroni Twoje wiadomości i metadane - z kim rozmawiasz i kiedy. +- 🔐 Szyfrowanie end-to-end double ratchet, z dodatkową warstwą szyfrowania. +- 📱 Aplikacje mobilne dla Androida ([Google Play](https://play.google.com/store/apps/details?id=chat.simplex.app), [APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk)) oraz [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084). +- 🚀 [TestFlight dla iOS](https://testflight.apple.com/join/DWuT2LQu) z nowymi funkcjami na tydzień-dwa wcześniej - **limitowane do 10,000 użytkowników**! +- 🖥 Dostępny jako terminalowa (konsolowa) [aplikacja / CLI](#zap-quick-installation-of-a-terminal-app) na Linuxa, MacOSa, Windowsa. + +## Połącz się z naszym zespołem + +Możesz połączyć się z naszym zespołem za pośrednictwem aplikacji, korzystając z przycisku "czat z deweloperami" który dostępny jest w przypadku gdy nie masz konwersacji na swoim profilu, opcji "wysyłaj pytania i pomysły" w ustawieniach aplikacji lub za pośrednictwem naszego [adresu SimpleX](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion). Please connect to: + +- by zadać dowolne pytania +- by zasugerować dowolne ulepszenia +- by udostępnić nam wszystko co istotne + +Odpowiadamy na pytania manualnie, więc nie jest to natychmiastowe - może to potrwać do 24 godzin. + +Jeśli jesteś zainteresowany pomocą w integracji otwartoźródłowych modeli językowych i [dołączeniem do naszego zespołu](./docs/lang/pl/JOIN_TEAM.md), skontaktuj się z nami. + +## Dołącz do grup użytkowników + +Możesz dołączyć do grup utworzonych przez innych użytkowników za pośrednictwem nowej [usługi katalogowej](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). Nie jesteśmy odpowiedzialni za treści udostępniane w tych grupach. + +**Uwaga**: Poniższe grupy zostały utworzone, aby użytkownicy mogli zadawać pytania, zgłaszać sugestie i zadawać pytania dotyczące wyłącznie SimpleX Chat. + +Możesz również: +- krytykować aplikację i dokonywać porównań z innymi komunikatorami. +- udostępniać nowe komunikatory, które Twoim zdaniem mogą być interesujące z punktu widzenia prywatności, o ile nie spamujesz. +- udostępniać niektóre publikacje związane z prywatnością, raczej dość rzadko. +- po wstępnym zatwierdzeniu przez administratora w prywatnej wiadomości, udostępnić link do utworzonej grupy, ale tylko raz. Gdy grupa ma więcej niż 10 członków, może zostać przesłana do [SimpleX Directory Service](./docs/DIRECTORY.md), gdzie nowi użytkownicy będą mogli ją odkryć. + +Musisz: +- być uprzejmym wobec innych użytkowników. +- unikać spamu (zbyt częstych wiadomości, nawet jeśli są istotne). +- unikać ataków osobistych lub wrogiego nastawienia. +- unikać dzielenia się treściami, które nie są związane z powyższymi kwestiami (co obejmuje między innymi dyskusje na temat polityki lub innych aspektów życia społecznego niż prywatność, bezpieczeństwo, technologia i komunikacja, dzielenie się treściami, które mogą zostać uznane za obraźliwe przez innych użytkowników itp.). + +Wiadomości nieprzestrzegające tych zasad będą usuwane, prawo do wysyłania wiadomości może zostać odebrane ich autorom, a dostęp nowych członków do grupy może zostać tymczasowo ograniczony, aby zapobiec ponownemu dołączeniu pod inną nazwą - nasza niedoskonała moderacja grupy nie ma obecnie lepszego rozwiązania. + +Jeśli chcesz zadać jakieś pytania, możesz dołączyć do anglojęzycznej grupy użytkowników: [#SimpleX users group](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2Fos8FftfoV8zjb2T89fUEjJtF7y64p5av%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAQqMgh0fw2lPhjn3PDIEfAKA_E0-gf8Hr8zzhYnDivRs%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22lBPiveK2mjfUH43SN77R0w%3D%3D%22%7D) + +Istnieje również [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2F6eHqy7uAbZPOcA6qBtrQgQquVlt4Ll91%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAqV_pg3FF00L98aCXp4D3bOs4Sxv_UmSd-gb0juVoQVs%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22XonlixcHBIb2ijCehbZoiw%3D%3D%22%7D) dla deweloperów, którzy na bazie platformy SimpleX tworzą: + +- czatboty i automatyzacje +- integracje z innymi aplikacjami +- aplikacje społecznościowe i serwisy +- itp. + +Istnieją grupy w innych językach, na które przetłumaczyliśmy interfejs aplikacji. Grupy te służą do testowania i zadawania pytań innym użytkownikom SimpleX Chat: + +[\#SimpleX-DE](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FkIEl7OQzcp-J6aDmjdlQbRJwqkcZE7XR%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAR16PCu02MobRmKAsjzhDWMZcWP9hS8l5AUZi-Gs8z18%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22puYPMCQt11yPUvgmI5jCiw%3D%3D%22%7D) (German-speaking), [\#SimpleX-ES](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FaJ8O1O8A8GbeoaHTo_V8dcefaCl7ouPb%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEA034qWTA3sWcTsi6aWhNf9BA34vKVCFaEBdP2R66z6Ao%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22wiZ1v_wNjLPlT-nCSB-bRA%3D%3D%22%7D) (Spanish-speaking), [\#SimpleX-FR](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fhpq7_4gGJiilmz5Rf-CswuU5kZGkm_zOIooSw6yALRg%3D%40smp5.simplex.im%2FvIHQDxTor53nwnWWTy5cHNwQQAdWN5Hw%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAPdgK1eBnETmgiqEQufbUkydKBJafoRx4iRrtrC2NAGc%253D%26srv%3Djjbyvoemxysm7qxap7m5d5m35jzv5qq6gnlv7s4rsn7tdwwmuqciwpid.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%221FyUryBPza-1ZFFE80Ekbg%3D%3D%22%7D) (French-speaking), [\#SimpleX-RU](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FXZyt3hJmWsycpN7Dqve_wbrAqb6myk1R%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAMFVIoytozTEa_QXOgoZFq_oe0IwZBYKvW50trSFXzXo%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22xz05ngjA3pNIxLZ32a8Vxg%3D%3D%22%7D) (Russian-speaking), [\#SimpleX-IT](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2F0weR-ZgDUl7ruOtI_8TZwEsnJP6UiImA%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAq4PSThO9Fvb5ydF48wB0yNbpzCbuQJCW3vZ9BGUfcxk%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22e-iceLA0SctC62eARgYDWg%3D%3D%22%7D) (Italian-speaking). + +Możesz do nich dołączyć otwierając te linki w aplikacji lub otwierając je w przeglądarce na komputerze i skanując kod QR. + +## Śledź nasze aktualizacje + +Nasze aktualizacje i wydania publikujemy za pośrednictwem: + +- [Reddita](https://www.reddit.com/r/SimpleXChat/), [Twittera](https://twitter.com/SimpleXChat), [Lemmy](https://lemmy.ml/c/simplex), [Mastodona](https://mastodon.social/@simplex) oraz [Nostr](https://snort.social/p/npub1exv22uulqnmlluszc4yk92jhs2e5ajcs6mu3t00a6avzjcalj9csm7d828). +- [profilu zespołu](#connect-to-the-team) w aplikacji SimpleX. +- [bloga](https://simplex.chat/blog/) oraz [feedu RSS](https://simplex.chat/feed.rss). +- [listy mailingowej](https://simplex.chat/#join-simplex), bardzo rzadko. + +## Wykonaj prywatne połączenie + +Aby nawiązać połączenie i rozpocząć wysyłanie wiadomości, należy udostępnić znajomemu łącze lub zeskanować kod QR z jego telefonu, osobiście lub podczas połączenia wideo. + +Kanał, za pośrednictwem którego udostępniasz link, nie musi być bezpieczny - wystarczy, że możesz potwierdzić, kto wysłał Ci wiadomość i że połączenie SimpleX zostało nawiązane. + +Wykonaj prywatne połączenie Conversation Połączenie wideo + +Po wykonaniu połączenia możesz [zweryfikować kod bezpieczeństwa połączenia](./blog/20230103-simplex-chat-v4.4-disappearing-messages.md#connection-security-verification). + +## Poradnik dla użytkownika (NOWE) + +Przeczytaj o funkcjach i ustawieniach aplikacji w nowym [Przewodniku użytkownika](./docs/guide/README.md). + +## Pomóż nam przetłumaczyć SimpleX Chat + +Dzięki naszym użytkownikom i [Weblate](https://hosted.weblate.org/engage/simplex-chat/), aplikacje SimpleX Chat, strona internetowa i dokumenty są tłumaczone na wiele innych języków. + +Dołącz do naszych tłumaczy, aby pomóc SimpleX w rozwoju! + +|region|język |kontrybutor|[Android](https://play.google.com/store/apps/details?id=chat.simplex.app) i [iOS](https://apps.apple.com/us/app/simplex-chat/id1605771084)|[strona](https://simplex.chat)|dokumenty na GitHubie| +|:----:|:-------:|:---------:|:---------:|:---------:|:---------:| +|🇬🇧 en|English | |✓|✓|✓|✓| +|ar|العربية |[jermanuts](https://github.com/jermanuts)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/ar/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/ar/)
-|[![website](https://hosted.weblate.org/widgets/simplex-chat/ar/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/ar/)|| +|🇧🇬 bg|Български | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/bg/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/bg/)
[![ios app](https://hosted.weblate.org/widget/simplex-chat/ios/bg/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/bg/)||| +|🇨🇿 cs|Čeština |[zen0bit](https://github.com/zen0bit)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/cs/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/cs/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/cs/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/cs/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/cs/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/cs/)|[✓](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/cs)| +|🇩🇪 de|Deutsch |[mlanp](https://github.com/mlanp)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/de/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/de/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/de/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/de/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/de/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/de/)|| +|🇪🇸 es|Español |[Mateyhv](https://github.com/Mateyhv)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/es/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/es/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/es/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/es/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/es/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/es/)|| +|🇫🇮 fi|Suomi | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/fi/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/fi/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/fi/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/fi/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/fi/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/fi/)|| +|🇫🇷 fr|Français |[ishi_sama](https://github.com/ishi-sama)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/fr/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/fr/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/fr/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/fr/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/fr/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/fr/)|[✓](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang/fr)| +|🇮🇱 he|עִברִית | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/he/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/he/)
-||| +|🇭🇺 hu|Magyar | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/hu/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/hu/)
-||| +|🇮🇹 it|Italiano |[unbranched](https://github.com/unbranched)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/it/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/it/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/it/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/it/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/it/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/it/)|| +|🇯🇵 ja|日本語 | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/ja/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/ja/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/ja/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/ja/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/ja/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/ja/)|| +|🇳🇱 nl|Nederlands|[mika-nl](https://github.com/mika-nl)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/nl/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/nl/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/nl/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/nl/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/nl/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/nl/)|| +|🇵🇱 pl|Polski |[BxOxSxS](https://github.com/BxOxSxS)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/pl/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/pl/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/pl/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/pl/)||| +|🇧🇷 pt-BR|Português||[![android app](https://hosted.weblate.org/widgets/simplex-chat/pt_BR/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/pt_BR/)
-|[![website](https://hosted.weblate.org/widgets/simplex-chat/pt_BR/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/pt_BR/)|| +|🇷🇺 ru|Русский ||[![android app](https://hosted.weblate.org/widgets/simplex-chat/ru/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/ru/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/ru/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/ru/)||| +|🇹🇭 th|ภาษาไทย |[titapa-punpun](https://github.com/titapa-punpun)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/th/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/th/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/th/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/th/)||| +|🇹🇷 tr|Türkçe | |[![android app](https://hosted.weblate.org/widgets/simplex-chat/tr/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/tr/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/tr/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/tr/)||| +|🇺🇦 uk|Українська| |[![android app](https://hosted.weblate.org/widgets/simplex-chat/uk/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/uk/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/uk/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/uk/)|[![website](https://hosted.weblate.org/widgets/simplex-chat/uk/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/uk/)|| +|🇨🇳 zh-CHS|简体中文|[sith-on-mars](https://github.com/sith-on-mars)

[Float-hu](https://github.com/Float-hu)|[![android app](https://hosted.weblate.org/widgets/simplex-chat/zh_Hans/android/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/)
[![ios app](https://hosted.weblate.org/widgets/simplex-chat/zh_Hans/ios/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/ios/zh_Hans/)
 |

[![website](https://hosted.weblate.org/widgets/simplex-chat/zh_Hans/website/svg-badge.svg)](https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/)|| + +Trwają prace nad wersjami językowymi: Arabski, japoński, koreański, portugalski i [inne](https://hosted.weblate.org/projects/simplex-chat/#languages). Będziemy dodawać kolejne języki, gdy niektóre z już dodanych zostaną ukończone - zasugeruj nowe języki, przejrzyj [przewodnik po tłumaczeniach](./docs/lang/pl/TRANSLATIONS.md) i skontaktuj się z nami! + +## Kontrybuuj + +Chcielibyśmy, abyś przyczynił się do naszego rozwoju! Możesz nam pomóc: + +- [dzieląc się motywem kolorystycznym](./docs/THEMES.md), którego używasz w aplikacji na Androida! +- pisząc samouczki lub poradniki, które dotyczą hostowania serwerów, automatyzacji czatbotów itp. +- współtworząc bazy wiedzy SimpleX Chat. +- rozwijając funkcje - skontaktuj się z nami za pośrednictwem czatu, abyśmy mogli pomóc Ci zacząć. + +## Wesprzyj nas dotacjami + +Ogromne podziękowania dla wszystkich, którzy wsparli projekt SimpleX Chat! + +Na pierwszym miejscu stawiamy prywatność i bezpieczeństwo użytkowników - byłoby to niemożliwe bez waszego wsparcia. + +Naszą obietnicą wobec użytkowników jest to, że protokoły SimpleX są i pozostaną otwarte i w domenie publicznej - tak więc każdy może stworzyć przyszłe implementacje klientów i serwerów. Budujemy platformę SimpleX opartą na tych samych zasadach, co poczta e-mail i Internet, ale znacznie bardziej prywatną i bezpieczną. + +Twoje darowizny pomogą nam zebrać więcej funduszy - każda kwota, nawet koszt filiżanki kawy, będzie dla nas ogromną pomocą. + +Możesz nas wesprzeć za pomocą: + +- [GitHuba](https://github.com/sponsors/simplex-chat) - jest to dla nas wolne od prowizji. +- [OpenCollective](https://opencollective.com/simplex-chat) - pobiera prowizję, a także przyjmuje darowizny w kryptowalutach. +- Monero: 8568eeVjaJ1RQ65ZUn9PRQ8ENtqeX9VVhcCYYhnVLxhV4JtBqw42so2VEUDQZNkFfsH5sXCuV7FN8VhRQ21DkNibTZP57Qt +- Bitcoin: 1bpefFkzuRoMY3ZuBbZNZxycbg7NYPYTG +- BCH: 1bpefFkzuRoMY3ZuBbZNZxycbg7NYPYTG +- USDT: + - BNB Smart Chain: 0x83fd788f7241a2be61780ea9dc72d2151e6843e2 + - Tron: TNnTrKLBmdy2Wn3cAQR98dAVvWhLskQGfW +- Ethereum: 0x83fd788f7241a2be61780ea9dc72d2151e6843e2 +- Solana: 43tWFWDczgAcn4Rzwkpqg2mqwnQETSiTwznmCgA2tf1L + +Dziękuję, + +Evgeny + +Twórca SimpleX Chat. + +## Informacje + +- [Dlaczego prywatność ma znaczenie](#dlaczego-prywatność-ma-znaczenie) +- [Podejście SimpleXa do problemu prywatności i bezpieczeństwa](#podejście-simplexa-do-problemu-prywatności-i-bezpieczeństwa) + - [Kompletna prywatność Twojej tożsamości, profilu, kontaktów i metadanych.](#kompletna-prywatność-twojej-tożsamości-profilu-kontaktów-i-metadanych) + - [Najlepsza ochrona przed spamem i nadużyciami](#najlepsza-ochrona-przed-spamem-i-nadużyciami) + - [Pełna kontrola i bezpieczeństwo Twoich danych](#pełna-kontrola-i-bezpieczeństwo-twoich-danych) + - [Użytkownicy są właścicielami sieci SimpleX](#użytkownicy-są-właścicielami-sieci-simplex) +- [Często zadawane pytania](#często-zadawane-pytania) +- [Newsy i aktualizacje](#newsy-i-aktualizacje) +- [Szybka instalacja terminalowej wersji aplikacji](#zap-szybka-instalacja-terminalowej-wersji-aplikacji) +- [Budowa Platformy SimpleX](#budowa-platformy-simplex) +- [Prywatność i bezpieczeństwo: szczegóły techniczne i ograniczenia](#prywatność-i-bezpieczeństwo-szczegóły-techniczne-i-ograniczenia) +- [Dla deweloperów](#dla-deweloperów) +- [Roadmapa](#roadmapa) +- [Ostrzeżenia, Kontakt w sprawie bezpieczeństwa, Licencja](#ostrzeżenia) + +## Dlaczego prywatność ma znaczenie + +Każdy powinien dbać o prywatność i bezpieczeństwo swojej komunikacji - nieszkodliwe rozmowy mogą narazić Cię na niebezpieczeństwo, nawet jeśli nie masz nic do ukrycia. + +Jedną z najbardziej wstrząsających historii jest doświadczenie [Mohamedou Ould Salahi](https://en.wikipedia.org/wiki/Mohamedou_Ould_Slahi). opisane w jego pamiętniku i pokazane w filmie Mauretańczyk (2021). Został on umieszczony w obozie Guantanamo, bez procesu, i był tam torturowany przez 15 lat po telefonie do swojego krewnego w Afganistanie, pod zarzutem udziału w atakach 9/11, mimo że przez poprzednie 10 lat mieszkał w Niemczech. + +Używanie szyfrowanego komunikatora end-to-end nie jest wystarczające. Powinniśmy używać komunikatorów, które zapewniają prywatność naszym powiązaniom, czyli tym z kim jesteśmy jakkolwiek połączeni. + +## Podejście SimpleXa do problemu prywatności i bezpieczeństwa + +### Kompletna prywatność Twojej tożsamości, profilu, kontaktów i metadanych. + +**W przeciwieństwie do innych komunikatorów, SimpleX nie posiada żadnych identyfikatorów przypisanych do użytkowników**. Nie posiada nawet numerów generowanych losowo. Zapewnia to prywatność tego, z kim się komunikujesz, ukrywając jego tożsamość oraz fakt komunikacji przed serwerami platformy SimpleX i wszelkimi obserwatorami [Czytaj więcej](./docs/lang/pl/SIMPLEX.md#full-privacy-of-your-identity-profile-contacts-and-metadata). + +### Najlepsza ochrona przed spamem i nadużyciami + +Ponieważ na platformie SimpleX nie masz identyfikatora ani stałego adresu, nikt nie może się z Tobą skontaktować, chyba że udostępnisz jednorazowy lub tymczasowy adres użytkownika, w postaci kodu QR lub linku. [Czytaj więcej](./docs/lang/pl/SIMPLEX.md#the-best-protection-against-spam-and-abuse). + +### Pełna kontrola i bezpieczeństwo Twoich danych + +SimpleX przechowuje wszystkie dane użytkownika na urządzeniach klienckich, wiadomości są przechowywane tymczasowo na serwerach przekaźnikowych SimpleX do momentu ich odebrania, po czym są trwale usuwane. [Czytaj więcej](./docs/lang/pl/SIMPLEX.md#complete-ownership-control-and-security-of-your-data). + +### Użytkownicy są właścicielami sieci SimpleX + +Możesz używać SimpleX na własnych serwerach i nadal komunikować się z ludźmi za pomocą serwerów, które są wstępnie skonfigurowane w aplikacjach lub z dowolnymi innymi serwerami SimpleX. [Czytaj więcej](./docs/lang/pl/SIMPLEX.md#users-own-simplex-network). + +## Często zadawane pytania + +1. _W jaki sposób SimpleX może dostarczać wiadomości bez jakichkolwiek identyfikatorów użytkownika?_ Zobacz [ogłoszenie wydania v2](./blog/20220511-simplex-chat-v2-images-files.md#the-first-messaging-platform-without-user-identifiers) wyjaśniające jak SimpleX działa. + +2. _Dlaczego po prostu nie mogę używać Signal?_ Signal to scentralizowana platforma, która wykorzystuje numery telefonów do identyfikacji użytkowników i ich kontaktów. Oznacza to, że podczas gdy treść wiadomości w Signal jest chroniona solidnym szyfrowaniem end-to-end, istnieje duża ilość metadanych widocznych dla Signal - to, z kim rozmawiasz i kiedy. + +3. _Czym to się różni od Matrix, Session, Ricochet, Cwtch itp., które również nie wymagają tożsamości użytkownika?_ Mimo że te platformy nie wymagają _prawdziwej tożsamości_, to polegają na anonimowych tożsamościach użytkowników w celu dostarczania wiadomości - może to być na przykład klucz tożsamości lub liczba losowa. Korzystanie z trwałej tożsamości użytkownika, nawet anonimowej, stwarza ryzyko, że informacje na temat powiązań użytkownika staną się znane obserwatorom i/lub dostawcom usług, co może prowadzić do deanonimizacji poszczególnych użytkowników. Jeśli ten sam profil użytkownika jest używany do łączenia się z dwiema różnymi osobami za pośrednictwem dowolnego komunikatora innego niż SimpleX, wspomniane dwie osoby mogą stwierdzić, czy są rozmawiają z tą samą osobą - w wiadomościach używają tego samego identyfikatora użytkownika. W SimpleX nie ma metadanych wspólnych dla rozmów z różnymi kontaktami - jest to cecha, której nie ma żaden inny komunikator. + +## Newsy i aktualizacje + +Najnowsze i ważne wiadomości: + +[Mar 23, 2024. SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration.](./blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md) + +[Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md) + +[Jan 24, 2024. SimpleX Chat: free infrastructure from Linode, v5.5 released with private notes, group history and a simpler UX to connect.](./blog/20240124-simplex-chat-infrastructure-costs-v5-5-simplex-ux-private-notes-group-history.md) + +[Nov 25, 2023. SimpleX Chat v5.4 released: link mobile and desktop apps via quantum resistant protocol, and much better groups](./blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md). + +[Sep 25, 2023. SimpleX Chat v5.3 released: desktop app, local file encryption, improved groups and directory service](./blog/20230925-simplex-chat-v5-3-desktop-app-local-file-encryption-directory-service.md). + +[Jul 22, 2023. SimpleX Chat: v5.2 released with message delivery receipts](./blog/20230722-simplex-chat-v5-2-message-delivery-receipts.md). + +[May 23, 2023. SimpleX Chat: v5.1 released with message reactions and self-destruct passcode](./blog/20230523-simplex-chat-v5-1-message-reactions-self-destruct-passcode.md). + +[Apr 22, 2023. SimpleX Chat: vision and funding, v5.0 released with videos and files up to 1gb](./blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.md). + +[Mar 1, 2023. SimpleX File Transfer Protocol – send large files efficiently, privately and securely, soon to be integrated into SimpleX Chat apps.](./blog/20230301-simplex-file-transfer-protocol.md). + +[Nov 8, 2022. Security audit by Trail of Bits, the new website and v4.2 released](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md). + +[Sep 28, 2022. v4.0: encrypted local chat database and many other changes](./blog/20220928-simplex-chat-v4-encrypted-database.md). + +[All updates](./blog) + +## :zap: Szybka instalacja terminalowej wersji aplikacji + +```sh +curl -o- https://raw.githubusercontent.com/simplex-chat/simplex-chat/stable/install.sh | bash +``` + +Po pobraniu klienta czatu można go uruchomić za pomocą polecenia `simplex-chat`. + +![simplex-chat](./images/connection.gif) + +Przeczytaj więcej o [instalowaniu i używaniu terminalowej wersji czatu](./docs/lang/pl/CLI.md). + +## Budowa Platformy SimpleX + +SimpleX to sieć typu klient-serwer z unikatową topologią sieciową, która wykorzystuje redundantne, jednorazowe węzły przekazywania wiadomości do asynchronicznego przekazywania wiadomości za pośrednictwem jednokierunkowych (simpleksowych) kolejek wiadomości, zapewniając anonimowość odbiorcy i nadawcy. + +W przeciwieństwie do sieci P2P, wszystkie wiadomości są przekazywane przez jeden lub kilka węzłów serwera, które nawet nie muszą być trwałe. Obecna implementacja [serwera SMP](https://github.com/simplex-chat/simplexmq#smp-server) wykorzystuje przechowywanie wiadomości w pamięci, utrzymując jedynie rejestr kolejki. SimpleX zapewnia lepszą ochronę metadanych niż projekty P2P, ponieważ żadne globalne identyfikatory uczestników nie są używane do dostarczania wiadomości i pozwala to uniknąć [różnych problemów związanych z sieciami P2P](./docs/lang/pl/SIMPLEX.md#comparison-with-p2p-messaging-protocols). + +W przeciwieństwie do sieci sfederowanych, węzły serwera **nie posiadają danych użytkowników**, **nie komunikują się ze sobą** i **nie przechowują wiadomości** po ich dostarczeniu do odbiorców. Nie ma możliwości na odkrycie pełnej listy serwerów działających w sieci SimpleX. Taka konstrukcja pozwala uniknąć problemu związanego z widocznością metadanych, z którym borykają się wszystkie sieci sfederowane i pozwala ona na lepszą ochronę przed atakami obejmującymi całą sieć. + +Informacje o użytkownikach, ich kontaktach i grupach znajdują się wyłącznie na urządzeniach klienckich. + +Przeczytaj [whitepaper SimpleX](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md) po więcej informacji o zadaniach platformy oraz by dowiedzieć się jak wygląda koncepcja techniczna modelu. + +Zobacz [Protokół Czatu SimpleX](./docs/protocol/simplex-chat.md) by dowiedzieć się o formacie wiadomości wysyłanych między klientem czatu za pośrednictwem [Protokołu Wiadomości SimpleX](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/simplex-messaging.md). + +## Prywatność i bezpieczeństwo: szczegóły techniczne i ograniczenia + +Prace nad SimpleX Chat wciąż trwają - udostępniamy nowe ulepszenia, gdy tylko będą gotowe. To Ty musisz zdecydować, czy obecny stan jest wystarczająco dobry dla Twojego przypadku zastosowania. + +Stworzyliśmy [słownik pojęć](./docs/GLOSSARY.md) używany do opisu systemów komunikacyjnych, aby pomóc zrozumieć niektóre z poniższych pojęć oraz aby pomóc Ci w porównaniu zalet i wad różnych systemów komunikacyjnych. + +Co zostało już wprowadzone: + +1. Zamiast identyfikatorów użytkownika używanych przez wszystkie inne platformy, nawet te najbardziej prywatne, SimpleX używa [pairwise per-queue identifiers](./docs/GLOSSARY.md#pairwise-pseudonymous-identifier) (2 adresy dla każdej jednokierunkowej kolejki wiadomości, z opcjonalnym trzecim adresem dla powiadomień push na iOS, 2 kolejki w każdym połączeniu między użytkownikami). Sprawia to, że trudniej jest w ten sposób obserwować przebieg połączeń sieciowych na poziomie aplikacji, ponieważ dla `n` użytkowników może istnieć do `n * (n-1)` kolejek wiadomości. +2. [Szyfrowanie end-to-end](./docs/GLOSSARY.md#end-to-end-encryption) w każdej kolejce wiadomości używając [cryptoboxa NaCl](https://nacl.cr.yp.to/box.html). Zostało to dodane, aby umożliwić redundancję w przyszłości (przekazywanie każdej wiadomości przez kilka serwerów), aby uniknąć posiadania tego samego ciphertext w różnych kolejkach (które byłyby widoczne tylko dla atakującego, w przypadku przejęcia TLS). Klucze szyfrujące używane do tego szyfrowania nie są rotowane, zamiast tego planujemy rotować kolejki. Do negocjacji kluczy używane są klucze Curve25519. +3. Szyfrowanie end-to-end [double ratchet](./docs/GLOSSARY.md#double-ratchet-algorithm) w każdej rozmowie między dwoma użytkownikami (lub członkami grupy). Jest to ten sam algorytm, który jest używany w Signal i wielu innych komunikatorach; zapewnia on komunikację OTR z [forward secrecy](./docs/GLOSSARY.md#forward-secrecy) (każda wiadomość jest szyfrowana własnym kluczem efemerycznym) i [break-in recovery](./docs/GLOSSARY.md#post-compromise-security) (klucze są często renegocjowane w ramach wymiany wiadomości). Dwie pary kluczy Curve448 są używane do początkowego [key agreement](./docs/GLOSSARY.md#key-agreement-protocol), strona inicjująca przekazuje te klucze przez link połączenia, a strona akceptująca - w nagłówku wiadomości potwierdzającej. +4. Dodatkowa warstwa szyfrowania przy użyciu NaCL cryptobox dla wiadomości dostarczanych z serwera do odbiorcy. Warstwa ta pozwala uniknąć wspólnego szyfrogramu między wysyłanym i odbieranym ruchem serwera wewnątrz TLS (i nie ma też wspólnych identyfikatorów). +5. Kilka poziomów [content padding](./docs/GLOSSARY.md#message-padding) w celu utrudnienia ataków na rozmiar wiadomości. +6. Wszystkie metadane wiadomości, w tym czas odebrania wiadomości przez serwer (zaokrąglony do sekundy), są wysyłane do odbiorców w zaszyfrowanej postaci, więc nawet jeśli TLS zostanie przejęty, nie można ich zobaczyć. +7. Dozwolone są tylko TLS 1.2/1.3 dla połączeń klient-serwer, z ograniczeniem do algorytmów kryptograficznych: CHACHA20POLY1305_SHA256, Ed25519/Ed448, Curve25519/Curve448. +8. Aby zapobiec atakom typu replay, serwery SimpleX wymagają [tlsunique channel binding](https://www.rfc-editor.org/rfc/rfc5929.html) jako identyfikatora sesji w każdym poleceniu klienta podpisanym kluczem efemerycznym dla każdej kolejki. +9. Aby ochronić swój adres IP, wszystkie klienty SimpleX Chat obsługują dostęp do serwerów komunikacyjnych za pośrednictwem Tora - zobacz [v3.1 release announcement](./blog/20220808-simplex-chat-v3.1-chat-groups.md) po więcej szczegółów. +10. Lokalne szyfrowanie bazy danych z hasłem - kontakty, grupy oraz wszystkie wysłane i odebrane wiadomości są przechowywane w postaci zaszyfrowanej. Jeśli korzystałeś z SimpleX Chat przed wersją v4.0, musisz włączyć szyfrowanie w ustawieniach aplikacji. +11. Izolacja transportu - różne połączenia TCP i obwody Tor używane są dla ruchu różnych profili użytkowników, opcjonalnie - dla różnych kontaktów i połączeń członków grupy. +12. Ręczne obracanie kolejki wiadomości w celu przeniesienia konwersacji do innego przekaźnika SMP. +13. Wysyłanie zaszyfrowanych plików end-to-end przy użyciu [protokołu XFTP](https://simplex.chat/blog/20230301-simplex-file-transfer-protocol.html). +14. Szyfrowanie plików lokalnych. + +Planujemy dodać: + +1. Przekaźniki SMP nadawców i przekaźniki XFTP odbiorców w celu zmniejszenia ruchu i w celu ukrycia adresów IP przed przekaźnikami wybranymi i potencjalnie kontrolowanymi przez drugą stronę. +2. Post-kwantowa wymiana kluczy w protokole Double Ratchet. +3. Automatyczna rotacja kolejek wiadomości i redundancja. Obecnie kolejki utworzone między dwoma użytkownikami są używane, dopóki kolejka nie zostanie ręcznie zmieniona przez użytkownika lub dopóki kontakt nie zostanie usunięty. Planujemy dodać automatyczną rotację kolejek, aby te identyfikatory były tymczasowe i rotowały w oparciu o pewien harmonogram TBC (np. co X wiadomości lub co X godzin/dni). +4. "Mieszanie" wiadomości - dodanie opóźnienia do dostarczania wiadomości, w celu ochrony przed korelacją ruchu według czasu wiadomości. +5. Reprodukowalne kompilacje - ograniczeniem jest tu stos deweloperski, ale będziemy starali się rozwiązać ten problem. Użytkownicy nadal mogą tworzyć wszystkie aplikacje i usługi z kodu źródłowego. + +## Dla deweloperów + +Możesz: + +- korzystać z biblioteki SimpleX Chat w celu zintegrowania funkcji czatu z aplikacjami mobilnymi. +- tworzyć boty i usługi czatu w języku Haskell - zobacz [prosty](./apps/simplex-bot/) i bardziej [zaawansowany przykład bota czatu](./apps/simplex-bot-advanced/). +- tworzenie chat botów i usług w dowolnym języku z wykorzystaniem terminala CLI SimpleX Chat jako lokalnego serwera WebSocket. Zobacz [TypeScript SimpleX Chat client](./packages/simplex-chat-client/) i [JavaScript chat bot example](./packages/simplex-chat-client/typescript/examples/squaring-bot.js). +- uruchomić [simplex-chat w terminal ](./docs/lang/pl/CLI.md), aby wykonywać poszczególne polecenia czatu, np. wysyłać wiadomości w ramach wykonywania skryptu powłoki. + +Jeśli chcesz rozwijać platformę SimpleX, skontaktuj się z nami, aby uzyskać porady i wsparcie. + +Dołącz również do grupy [#simplex-devs](https://simplex.chat/contact#/?v=1-2&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2F6eHqy7uAbZPOcA6qBtrQgQquVlt4Ll91%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAqV_pg3FF00L98aCXp4D3bOs4Sxv_UmSd-gb0juVoQVs%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion&data=%7B%22type%22%3A%22group%22%2C%22groupLinkId%22%3A%22XonlixcHBIb2ijCehbZoiw%3D%3D%22%7D), aby zadawać pytania i dzielić się swoimi sukcesami. + +## Roadmapa + +- ✅ Łatwy do utworzenia serwer SimpleX z przechowywaniem wiadomości w pamięci, bez żadnych dependency. +- ✅ Terminalowa (konsolowa) wersja klienta z obsługą grup oraz plików. +- ✅ Utworzenie serwera SimpleX na Linode zaledwie jednym kliknięciem. +- ✅ Szyfrowanie end-to-end używając protokołu double-ratchet z dodatkową warstwą szyfrowania. +- ✅ Pierwsza wersja aplikacji na Androida i iOS. +- ✅ Zachowujące prywatność natychmiastowe powiadomienia na Androida przy użyciu usługi działającej w tle. +- ✅ Przykłady czatbota w Haskellu. +- ✅ v2.0 - wsparcie dla zdjęć oraz plików w aplikacjach mobilnych. +- ✅ Manualne usuwanie historii czatu. +- ✅ Szyfrowane end-to-end encrypted audio oraz wideo rozmowy przy użyciu WebRTC w aplikacjach mobilnych. +- ✅ Zachowujące prywatność natychmiastowe powiadomienia na iOS przy użyciu usługi Apple Push Notification. +- ✅ Eksportowanie oraz importowanie bazy danych czatu. +- ✅ Konwersacje grupowe w aplikacjach mmobilnych. +- ✅ Łączenie się z serwerami wiadomości przez Tor. +- ✅ Podwójne adresy serwerów w celu uzyskania dostępu do serwerów wiadomości jako ukrytych usług v3. +- ✅ Serwer czatu i SDK klienta w języku TypeScript do tworzenia interfejsów czatu, integracji i botów czatu (gotowe do ogłoszenia). +- ✅ Tryb incognito do udostępniania nowej losowej nazwy każdemu kontaktowi. +- ✅ Szyfrowanie bazy danych czatu. +- ✅ Automatyczne usuwanie historii czatu. +- ✅ Linki umożliwiające dołączanie do grup i poprawienie ich stabilności. +- ✅ Wiadomości głosowe (z opcją rezygnacji odbiorcy dla każdego kontaktu). +- ✅ Podstawowe uwierzytelnianie dla serwerów SMP (w celu autoryzacji tworzenia nowych kolejek). +- ✅ Wyświetlanie usuniętych wiadomości, pełne usuwanie wiadomości przez nadawcę (z wyrażeniem zgody przez odbiorcę dla każdego kontaktu). +- ✅ Blokowanie zrzutów ekranu i wyświetlania zawartości aplikacji w "ostatnich aplikacjach". +- ✅ Zaawansowana konfiguracja serwera. +- ✅ Znikające wiadomości (z możliwością wyboru przez odbiorcę dla każdego kontaktu). +- ✅ Wiadomości "na żywo". +- ✅ Weryfikacja kontaktu za pośrednictwem oddzielnego kanału out-of-band. +- ✅ Wiele profili użytkowników w tej samej bazie danych czatu. +- ✅ Opcjonalnie unikanie ponownego użycia tej samej sesji TCP dla wielu połączeń. +- ✅ Zachowywanie wersji roboczych wiadomości. +- ✅ Serwer plików do optymalizacji wydajnego i prywatnego wysyłania dużych plików. +- ✅ Ulepszone połączenia audio i wideo. +- ✅ Obsługa starszego systemu operacyjnego Android i 32-bitowych procesorów. +- ✅ Ukryte profile czatu. +- ✅ Wysyłanie i odbieranie dużych plików przez [protokół XFTP](./blog/20230301-simplex-file-transfer-protocol.md). +- ✅ Wiadomości wideo. +- ✅ Kod dostępu do aplikacji. +- ✅ Ulepszenie interfejsu Androidowej aplikacji. +- ✅ Opcjonalne alternatywne hasło dostępu. +- ✅ Reakcje na wiadomości +- ✅ Historia edytowania wiadomości +- ✅ Zmniejszenie zużycia baterii i transferu danych w dużych grupach. +- ✅ Potwierdzenie dostarczenia wiadomości (z opcją rezygnacji nadawcy dla każdego kontaktu). +- ✅ Klient desktopowy. +- ✅ Szyfrowanie plików lokalnych przechowywanych w aplikacji. +- ✅ Korzystanie z profili mobilnych z poziomu aplikacji komputerowej. +- ✅ Prywatne notatki. +- ✅ Usprawnienie wysyłania filmów (w tym szyfrowanie lokalnie przechowywanych filmów). +- ✅ Post-kwantowa wymiana kluczy w protokole double ratchet. +- 🏗 Poprawienie stabilności i zmniejszenie zużycia baterii. +- 🏗 Poprawienie odczuć dla nowych użytkowników. +- 🏗 Duże grupy, społeczności i kanały publiczne. +- 🏗 Przekaźnik dostarczania wiadomości dla nadawców (w celu ukrycia adresu IP przed serwerami odbiorców i zmniejszenia ruchu). +- Suwak prywatności i bezpieczeństwa - prosty sposób na ustawienie wszystkich ustawień za jednym zamachem. +- Redundancja i rotacja kolejek SMP (obsługiwana ręcznie). +- Dołączanie opcjonalnej wiadomości do żądania połączenia wysyłanego za pośrednictwem adresu kontaktowego. +- Ulepszona nawigacja i wyszukiwanie w konwersacji (rozwijanie i przewijanie do cytowanej wiadomości, przewijanie do wyników wyszukiwania itp.) +- Kanały/transmisje. +- Efemeryczne/znikające/jednorazowe konwersacje z istniejącymi kontaktami. +- Prywatne udostępnianie swojej lokalizacji. +- Widżety internetowe dla niestandardowej interaktywności w czatach. +- Programowalne automatyzacje czatów / reguły (automatyczne odpowiedzi / przekazywanie / usuwanie / wysyłanie, przypomnienia itp.) +- Chroniący prywatność serwer tożsamości dla opcjonalnych adresów kontaktów/grup opartych na DNS w celu uproszczenia połączenia i odnajdywania, ale nieużywany do dostarczania wiadomości: + - zachowanie wszystkich kontaktów i grup nawet w przypadku utraty domeny. + - Serwer nie posiada informacji o kontaktach i grupach użytkownika. +- Wielowęzłowe przekaźniki SMP o dużej pojemności. + +## Ostrzeżenia + +[Protokoły i model bezpieczeństwa SimpleX](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md) zostały poddane przeglądowi i zawierały wiele istotnych zmian i ulepszeń w wersji v1.0.0. + +Audyt bezpieczeństwa został przeprowadzony w październiku 2022 r. przez [Trail of Bits](https://www.trailofbits.com/about), a większość poprawek została wydana w wersji 4.2.0 - zobacz [ogłoszenie](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md). + +SimpleX Chat jest nadal na stosunkowo wczesnym etapie rozwoju (aplikacje mobilne zostały wydane w marcu 2022 r.), więc możesz odkryć pewne błędy i brakujące funkcje. Będziemy bardzo wdzięczni za poinformowanie nas o wszystkim, co wymaga naprawy lub ulepszenia. + +Domyślne serwery skonfigurowane w aplikacji są dostarczane na zasadzie najlepszych starań. Obecnie nie gwarantujemy żadnych umów SLA, chociaż historycznie nasze serwery miały ponad 99,9% czasu pracy. + +Nigdy nie udostępnialiśmy ani nie byliśmy proszeni o dostęp do naszych serwerów lub jakichkolwiek informacji z naszych serwerów przez osoby trzecie. Jeśli kiedykolwiek zostaniemy poproszeni o zapewnienie takiego dostępu lub informacji, będziemy postępować zgodnie z odpowiednim procesem prawnym. + +Nie rejestrujemy adresów IP użytkowników i nie przeprowadzamy żadnej korelacji ruchu na naszych serwerach. Jeśli bezpieczeństwo na poziomie transportu jest krytyczne, musisz użyć Tor lub innej podobnej sieci, aby uzyskać dostęp do serwerów wiadomości. Będziemy ulepszać aplikacje klienckie, aby zmniejszyć możliwości korelacji ruchu. + +Więcej informacji można znaleźć w [Warunkach i polityce prywatności](./PRIVACY.md). + +## Kontakt w sprawie bezpieczeństwa + +Aby zgłosić podatność wyślij nam wiadomość e-mail na adres chat@simplex.chat. Będziemy wspólnie pracować nad poprawką i ujawnieniem szczegółów. NIE zgłaszaj luk w zabezpieczeniach za pośrednictwem zgłoszeń GitHub. + +Prosimy o traktowanie wszelkich ustaleń dotyczących możliwych ataków korelacji ruchu umożliwiających skorelowanie dwóch różnych konwersacji z tym samym użytkownikiem, innych niż objęte [modelem zagrożeń](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#threat-model), jako luk w zabezpieczeniach i postępowanie zgodnie z tym procesem ujawniania. + +## Licencja + +[AGPL v3](./LICENSE) + +[iOS app](https://apps.apple.com/us/app/simplex-chat/id1605771084) +  +[![Android app](https://github.com/simplex-chat/.github/blob/master/profile/images/google_play.svg)](https://play.google.com/store/apps/details?id=chat.simplex.app) +  +[F-Droid](https://app.simplex.chat) +  +[iOS TestFlight](https://testflight.apple.com/join/DWuT2LQu) +  +[APK](https://github.com/simplex-chat/simplex-chat/releases/latest/download/simplex.apk) diff --git a/docs/lang/pl/SERVER.md b/docs/lang/pl/SERVER.md new file mode 100644 index 0000000000..72cb51a4bf --- /dev/null +++ b/docs/lang/pl/SERVER.md @@ -0,0 +1,485 @@ +--- +title: Hostowanie własnego serwera SMP +revision: 31.07.2023 +--- + +| Updated 05.06.2023 | Języki: PL, [EN](/docs/SERVER.md), [FR](/docs/lang/fr/SERVER.md), [CZ](/docs/lang/cs/SERVER.md) | + +# Hostowanie własnego serwera SMP + +## Informacje ogólne + +Serwer SMP to serwer przekaźnikowy używany do przekazywania wiadomości w sieci SimpleX. Aplikacje SimpleX Chat mają wstępnie ustawione serwery (dla aplikacji mobilnych są to smp11, smp12 i smp14.simplex.im), ale można łatwo zmienić konfigurację aplikacji, aby korzystać z innych serwerów. + +Klienty SimpleX określają tylko, który serwer jest używany do odbierania wiadomości, oddzielnie dla każdego kontaktu (lub połączenia grupowego z członkiem grupy), a serwery te są tylko tymczasowe, ponieważ adres dostawy może ulec zmianie. + +_Uwaga_: gdy zmienisz serwery w ustawieniach aplikacji, wpłynie to tylko na to, który serwer będzie używany dla nowych kontaktów, istniejące kontakty nie zostaną automatycznie przeniesione na nowe serwery, ale możesz przenieść je ręcznie za pomocą przycisku ["Zmień adres odbiorczy"](../blog/20221108-simplex-chat-v4.2-security-audit-new-website.md#change-your-delivery-address-beta) na stronie z informacjami kontaktu/członka - wkrótce zostanie to zautomatyzowane. + +## Instalacja + +1. Najpierw zainstaluj `smp-server`: + + - Manualna instalacja (patrz niżej) + + - Półautomatyczna instalacja: + - [Oficjalny skrypt instalacyjny](https://github.com/simplex-chat/simplexmq#using-installation-script) + - [Kontener Dockera](https://github.com/simplex-chat/simplexmq#using-docker) + - [Linode Marketplace](https://www.linode.com/marketplace/apps/simplex-chat/simplex-chat/) + +Instalacja ręczna wymaga kilku kroków wstępnych: + +1. Zainstaluj binarkę: + + - Używając oficjalnych binarek: + + ```sh + curl -L https://github.com/simplex-chat/simplexmq/releases/latest/download/smp-server-ubuntu-20_04-x86-64 -o /usr/local/bin/smp-server && chmod +x /usr/local/bin/smp-server + ``` + + - Budowanie z kodu źródłowego: + + Zobacz [Build from source: Using your distribution](https://github.com/simplex-chat/simplexmq#using-your-distribution) + +2. Utwórz użytkownika i grupę dla `smp-server`: + + ```sh + sudo useradd -m smp + ``` + +3. Utwórz niezbędne katalogi i przypisz uprawnienia: + + ```sh + sudo mkdir -p /var/opt/simplex /etc/opt/simplex + sudo chown smp:smp /var/opt/simplex /etc/opt/simplex + ``` + +4. Zezwól na port `smp-server` w firewallu: + + ```sh + # Dla Ubuntu + sudo ufw allow 5223/tcp + # Dla Fedory + sudo firewall-cmd --permanent --add-port=5223/tcp && \ + sudo firewall-cmd --reload + ``` + +5. **Opcjonalnie** - Jeśli używasz dystrybucji z `systemd`, utwórz plik `/etc/systemd/system/smp-server.service` z następującą zawartością: + + ```sh + [Unit] + Description=SMP server systemd service + + [Service] + User=smp + Group=smp + Type=simple + ExecStart=/usr/local/bin/smp-server start +RTS -N -RTS + ExecStopPost=/usr/bin/env sh -c '[ -e "/var/opt/simplex/smp-server-store.log" ] && cp "/var/opt/simplex/smp-server-store.log" "/var/opt/simplex/smp-server-store.log.bak"' + LimitNOFILE=65535 + KillSignal=SIGINT + TimeoutStopSec=infinity + + [Install] + WantedBy=multi-user.target + ``` + + I uruchom `sudo systemctl daemon-reload`. + +## Instalacja Tora + +smp-server można również zainstalować jako serwer działający w sieci [tor](https://www.torproject.org). Uruchom następujące polecenia jako użytkownik `root`. + +1. Zainstaluj Tor: + + Zakładamy, że używasz dystrybucji opartych na Ubuntu/Debian. Jeśli nie, zapoznaj się z [oficjalną dokumentacją tor](https://community.torproject.org/onion-services/setup/install/) lub poradnikiem dla Twojej dystrybucji. + + - Skonfiguruj oficjalne repozytorium Tor PPA: + + ```sh + CODENAME="$(lsb_release -c | awk '{print $2}')" + echo "deb [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main + deb-src [signed-by=/usr/share/keyrings/tor-archive-keyring.gpg] https://deb.torproject.org/torproject.org ${CODENAME} main" > /etc/apt/sources.list.d/tor.list + ``` + + - Zimportuj klucz repozytorium: + + ```sh + curl --proto '=https' --tlsv1.2 -sSf https://deb.torproject.org/torproject.org/A3C4F0F979CAA22CDBA8F512EE8CBC9E886DDD89.asc | gpg --dearmor | tee /usr/share/keyrings/tor-archive-keyring.gpg >/dev/null + ``` + + - Zaktualizuj indeks repozytorium: + + ```sh + apt update + ``` + + - Zainstaluj paczkę `tor`: + + ```sh + apt install -y tor deb.torproject.org-keyring + ``` + +2. Skonfiguruj tor: + + - Konfiguracja pliku: + + Otwórz konfigurację tora w wybranym edytorze (`nano`,`vim`,`emacs`, itp.): + + ```sh + vim /etc/tor/torrc + ``` + + I umieść następujące linie na dole konfiguracji. Zwróć uwagę na linie zaczynające się od `#`: są to komentarze dotyczące poszczególnych opcji. + + ```sh + # Włącz logowanie (w przeciwnym razie tor nie wyda adresu onion). + Log notice file /var/log/tor/notices.log + # Włącz routowanie single hop (2 opcje poniżej są zależne od trzeciej). Zmniejszy to opóźnienie w zamian za anonimowość (jako że tor działa równolegle z serwerem smp i adres onion będzie wyświetlany w klientach, jest to całkowicie w porządku). + SOCKSPort 0 + HiddenServiceNonAnonymousMode 1 + HiddenServiceSingleHopMode 1 + # Katalog hostów i mapowanie portów usługi ukrytej smp-server + HiddenServiceDir /var/lib/tor/simplex-smp/ + HiddenServicePort 5223 localhost:5223 + ``` + + - Utwórz katalogi: + + ```sh + mkdir /var/lib/tor/simplex-smp/ && chown debian-tor:debian-tor /var/lib/tor/simplex-smp/ && chmod 700 /var/lib/tor/simplex-smp/ + ``` + +3. Uruchom tor: + + Włącz usługę `systemd` oraz uruchom tor. Oficjalny `tor` jest nieco kłopotliwy przy pierwszym uruchomieniu i może nie utworzyć adresu hosta cebuli, więc na wszelki wypadek uruchamiamy go ponownie. + + ```sh + systemctl enable tor && systemctl start tor && systemctl restart tor + ``` + +4. Wyświetla onionowego hosta: + + Wykonaj następujące polecenie, aby wyświetlić adres onionowego hosta: + + ```sh + cat /var/lib/tor/simplex-smp/hostname + ``` + +## Configuration + +Aby zobaczyć, jakie opcje są dostępne, wykonaj `smp-server` bez flag: + +```sh +sudo su smp -c smp-server + +... +Available commands: + init Initialize server - creates /etc/opt/simplex and + /var/opt/simplex directories and configuration files + start Start server (configuration: + /etc/opt/simplex/smp-server.ini) + delete Delete configuration and log files +``` + +Możesz uzyskać dalszą pomoc, wykonując polecenie `sudo su smp -c "smp-server -h"` + +Następnie musimy skonfigurować `smp-server`: + +### Interaktywnie + +Wykonaj poniższe polecenie: + +```sh +sudo su smp -c "smp-server init" +``` + +Istnieje kilka opcji, które należy rozważyć: + +- `Enable store log to restore queues and messages on server restart (Yn):` + + Wpisz `y`, aby włączyć zapisywanie i przywracanie połączeń i wiadomości po ponownym uruchomieniu serwera. + + _Uwaga_: ważne jest, aby użyć SIGINT do ponownego uruchomienia serwera, ponieważ w przeciwnym razie niedostarczone wiadomości nie zostaną przywrócone. Połączenia zostaną przywrócone niezależnie od sposobu ponownego uruchomienia serwera, ponieważ w przeciwieństwie do wiadomości są one dodawane do dziennika append-only. + +- `Enable logging daily statistics (yN):` + + Wpisz `y`, aby włączyć logowanie statystyk w formacie CSV, mogą one być przykładowo użyte do pokazania wykresów użycia w `Grafana`. + +Statystyki te obejmują dzienną liczbę utworzonych, zabezpieczonych i usuniętych kolejek, wysłanych i odebranych wiadomości, a także dzienną, tygodniową i miesięczną liczbę aktywnych kolejek (tj. kolejek, które były używane do wysyłania wiadomości). Uważamy, że informacje te nie zawierają niczego, co pozwoliłoby na skorelowanie różnych kolejek jako należących bezpośrednio do użytkowników, ale prosimy o poufne poinformowanie nas, jeśli uważasz, że można to w jakikolwiek sposób nadużyć. + +- `Require a password to create new messaging queues?` + + Wpisz `r` lub dowolne hasło, aby zabezpieczyć hasłem `smp-server`, lub `n`, aby wyłączyć ochronę hasłem. + +- `Enter server FQDN or IP address for certificate (127.0.0.1):` + + Wprowadź domenę lub adres IP, na którym działa Twój smp-server - zostanie on zamieszczony w certyfikatach serwera, a także wyświetlony jako część adresu serwera. + +### Za pomocą opcji wiersza poleceń + +Wykonaj poniższe polecenie: + +```sh +sudo su smp -c "smp-server init -h" + +... +Available options: + -l,--store-log Enable store log for persistence + -s,--daily-stats Enable logging daily server statistics + -a,--sign-algorithm ALG Signature algorithm used for TLS certificates: + ED25519, ED448 (default: ED448) + --ip IP Server IP address, used as Common Name for TLS online + certificate if FQDN is not supplied + (default: "127.0.0.1") + -n,--fqdn FQDN Server FQDN used as Common Name for TLS online + certificate + --no-password Allow creating new queues without password + --password PASSWORD Set password to create new messaging queues + -y,--yes Non-interactive initialization using command-line + options + -h,--help Show this help text +``` + +Powinieneś określić, które flagi są potrzebne dla Twojego zastosowania, a następnie wykonać `smp-server init` z flagą `-y` dla nieinteraktywnej inicjalizacji: + +```sh +sudo su smp -c "smp-server init -y - " +``` + +Przykładowo, uruchom: + +```sh +sudo su smp -c "smp-server init -y -l --ip 192.168.1.5 --password test" +``` + +aby zainicjować konfigurację `smp-server` z: + +- przywracaniem połączeń i wiadomości po ponownym uruchomieniu serwera (flaga `-l`), +- adresem IP `192.168.1.5`, +- zabezpieczeniem `smp-server` hasłem `test`. + +--- + +Po tym instalacja jest ukończona i powinieneś zobaczyć coś takiego: + +```sh +Certificate request self-signature ok +subject=CN = 127.0.0.1 +Server initialized, you can modify configuration in /etc/opt/simplex/smp-server.ini. +Run `smp-server start` to start server. +---------- +You should store CA private key securely and delete it from the server. +If server TLS credential is compromised this key can be used to sign a new one, keeping the same server identity and established connections. +CA private key location: /etc/opt/simplex/ca.key +---------- +SMP server v3.4.0 +Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss= +Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@ +``` + +Powyższy adres serwera powinien być użyty w konfiguracji klienta, a jeśli dodałeś hasło serwera, powinno ono być udostępnione innym osobom tylko wtedy, gdy chcesz zezwolić im na korzystanie z Twojego serwera do odbierania wiadomości (wszystkie Twoje kontakty będą mogły wysyłać wiadomości, ponieważ nie wymaga to hasła). Jeśli podałeś adres IP lub nazwę hosta podczas instalacji, zostanie to wyświetlone jako część adresu serwera, w przeciwnym razie zastąp `` rzeczywistymi adresami serwerów. + +## Dokumentacja + +Wszystkie niezbędne pliki dla `smp-server` znajdują się w folderze `/etc/opt/simplex/`. + +Przechowywane wiadomości, połączenia, statystyki i dziennik serwera znajdują się w folderze `/var/opt/simplex/`. + +### Adres serwera SMP + +Adres serwera SMP ma następujący format: + +``` +smp://[:]@[,] +``` + +- `` + + To odcisk palca certyfikatu Twojego `smp-server`. Odcisk palca certyfikatu możesz sprawdzić w `/etc/opt/simplex/fingerprint`. + +- **opcjonalnie** `` + + To ustawione przez Ciebie hasło Twojego `smp-server`. Możesz sprawdzić to hasło w pliku `/etc/opt/simplex/smp-server.ini`, w sekcji `[AUTH]` w polu `create_password:`. + +- ``, **optional** `` + + To skonfigurowane przez Ciebie nazwy hosta Twojego `smp-server`. Nazwy hostów możesz sprawdzić w pliku `/etc/opt/simplex/smp-server.ini`, w sekcji `[TRANSPORT]` w polu `host:`. + +### Komendy systemd + +Aby uruchomić `smp-server` przy starcie hosta, uruchom: + +```sh +sudo systemctl enable smp-server.service + +Created symlink /etc/systemd/system/multi-user.target.wants/smp-server.service → /etc/systemd/system/smp-server.service. +``` + +Aby uruchomić `smp-server`, uruchom: + +```sh +sudo systemctl start smp-server.service +``` + +Aby sprawdzić status `smp-server`, uruchom: + +```sh +sudo systemctl status smp-server.service + +● smp-server.service - SMP server + Loaded: loaded (/etc/systemd/system/smp-server.service; enabled; vendor preset: enabled) + Active: active (running) since Sat 2022-11-23 19:23:21 UTC; 1min 48s ago + Main PID: 30878 (smp-server) + CGroup: /docker/5588ab759e80546b4296a7c50ffebbb1fb7b55b8401300e9201313b720989aa8/system.slice/smp-server.service + └─30878 smp-server start + +Nov 23 19:23:21 5588ab759e80 systemd[1]: Started SMP server. +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: SMP server v3.4.0 +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss= +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@ +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Store log: /var/opt/simplex/smp-server-store.log +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Listening on port 5223 (TLS)... +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: not expiring inactive clients +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires password +``` + +Aby zatrzymać `smp-server`, uruchom: + +```sh +sudo systemctl stop smp-server.service +``` + +Aby sprawdzić zawartość dziennika `smp-server`, uruchom: + +```sh +sudo journalctl -fu smp-server.service + +Nov 23 19:23:21 5588ab759e80 systemd[1]: Started SMP server. +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: SMP server v3.4.0 +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Fingerprint: d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss= +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Server address: smp://d5fcsc7hhtPpexYUbI2XPxDbyU2d3WsVmROimcL90ss=:V8ONoJ6ICwnrZnTC_QuSHfCEYq53uLaJKQ_oIC6-ve8=@ +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Store log: /var/opt/simplex/smp-server-store.log +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: Listening on port 5223 (TLS)... +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: not expiring inactive clients +Nov 23 19:23:21 5588ab759e80 smp-server[30878]: creating new queues requires password +``` + +### Monitorowanie + +Możesz włączyć statystyki `smp-server` dla dashboardu `Grafana` ustawiając wartość `on` w `/etc/opt/simplex/smp-server.ini`, w sekcji `[STORE_LOG]` w polu `log_stats:`. + +Logi będą przechowywane jako plik `csv` w `/var/opt/simplex/smp-server-stats.daily.log`. Pola dla pliku `csv` to: + +```sh +fromTime,qCreated,qSecured,qDeleted,msgSent,msgRecv,dayMsgQueues,weekMsgQueues,monthMsgQueues +``` + +- `fromTime` - timestamp; data i godzina zdarzenia + +- `qCreated` - int; utworzone kolejki + +- `qSecured` - int; ustanowione kolejki + +- `qDeleted` - int; usunięte queues + +- `msgSent` - int; wysłane wiadomości + +- `msgRecv` - int; odebrane wiadomości + +- `dayMsgQueues` - int; aktywnych kolejek podczas dnia + +- `weekMsgQueues` - int; aktywnych kolejek w tygodniu + +- `monthMsgQueues` - int; aktywnych kolejek w miesiącu + +Aby zaimportować `csv` do `Grafana` należy: + +1. Zainstalować wtyczkę Grafana: [Grafana - CSV datasource](https://grafana.com/grafana/plugins/marcusolsson-csv-datasource/) + +2. Zezwolić na tryb lokalny, dołączając następujące elementy: + + ```sh + [plugin.marcusolsson-csv-datasource] + allow_local_mode = true + ``` + + ... do `/etc/grafana/grafana.ini` + +3. Dodaj źródło danych CSV: + + - W menu bocznym kliknij zakładkę Configuration (ikona koła zębatego) + - Kliknij Add data source (Dodaj źródło danych) w prawym górnym rogu zakładki Data Sources (Źródła danych). + - Wpisz "CSV" w polu wyszukiwania, aby znaleźć źródło danych CSV. + - Kliknij wynik wyszukiwania z napisem "CSV". + - W polu URL wprowadź plik wskazujący na zawartość CSV. + +4. Gotowe! Teraz możesz utworzyć własny pulpit nawigacyjny ze statystykami. + +Dalsza dokumentacja znajduje się na stronie: [CSV Data Source for Grafana - Documentation](https://grafana.github.io/grafana-csv-datasource/). + +# Aktualizowanie twojego serwera SMP + +Aby zaktualizować smp-server do najnowszej wersji, wybierz metodę instalacji i postępuj zgodnie z instrukcjami: + + - Manualnie + 1. Zatrzymaj serwer: + ```sh + sudo systemctl stop smp-server + ``` + 2. Zaktualizuj binarkę: + ```sh + curl -L https://github.com/simplex-chat/simplexmq/releases/latest/download/smp-server-ubuntu-20_04-x86-64 -o /usr/local/bin/smp-server && chmod +x /usr/local/bin/smp-server + ``` + 3. Uruchom serwer: + ```sh + sudo systemctl start smp-server + ``` + + - Używając [oficjalnego skryptu instalacyjnego](https://github.com/simplex-chat/simplexmq#using-installation-script) + 1. Uruchom: + ```sh + sudo simplex-servers-update + ``` + 2. Gotowe! + + - Używając [kontenera Dockera](https://github.com/simplex-chat/simplexmq#using-docker) + 1. Zatrzymaj i usuń kontener: + ```sh + docker rm $(docker stop $(docker ps -a -q --filter ancestor=simplexchat/smp-server --format="\{\{.ID\}\}")) + ``` + 2. Pobierz najnowszą wersję kontenera: + ```sh + docker pull simplexchat/smp-server:latest + ``` + 3. Uruchom nowy kontener: + ```sh + docker run -d \ + -p 5223:5223 \ + -v $HOME/simplex/smp/config:/etc/opt/simplex:z \ + -v $HOME/simplex/smp/logs:/var/opt/simplex:z \ + simplexchat/smp-server:latest + ``` + + - [Linode Marketplace](https://www.linode.com/marketplace/apps/simplex-chat/simplex-chat/) + 1. Pobierz najnowsze obrazy: + ```sh + docker-compose --project-directory /etc/docker/compose/simplex pull + ``` + 2. Zrestartuj kontenery: + ```sh + docker-compose --project-directory /etc/docker/compose/simplex up -d --remove-orphans + ``` + 3. Usuń niepotrzebne obrazy: + ```sh + docker image prune + ``` + +### Konfigurowanie aplikacji do korzystania z serwera + +Aby skonfigurować aplikację do korzystania z serwera wiadomości, skopiuj jego pełny adres, w tym hasło, i dodaj go do aplikacji. Możesz używać swojego serwera razem z predefiniowanymi serwerami lub bez nich - możesz je usunąć lub wyłączyć. + +Możliwe jest również udostępnienie adresu swojego serwera znajomym, pozwalając im zeskanować kod QR z ustawień serwera - będzie on zawierał hasło serwera, dzięki czemu będą mogli również otrzymywać wiadomości za pośrednictwem twojego serwera. + +_Uwaga_: Do obsługi haseł wymagany jest serwer SMP w wersji 4.0. Jeśli już posiadasz serwer, możesz dodać hasło do niego poprzez wpisanie hasła do pliku INI serwera. + +       diff --git a/docs/lang/pl/SIMPLEX.md b/docs/lang/pl/SIMPLEX.md new file mode 100644 index 0000000000..ff7106d84c --- /dev/null +++ b/docs/lang/pl/SIMPLEX.md @@ -0,0 +1,102 @@ +--- +title: Platfoma SimpleX +revision: 07.02.2023 +--- + +| Updated 07.02.2023 | Języki: PL, [EN](/docs/SIMPLEX.md), [FR](/docs/lang/fr/SIMPLEX.md), [CZ](/docs/lang/cs/SIMPLEX.md) | +# Platfoma SimpleX - motywacja i porównanie + +## Problemy + +Istniejące komunikatory oraz protokoły borykają się ze wszystkimi lub kilkoma podanymi problemami: + +- Brak zachowania prywatności profilu i kontaktów użytkownika (zachowanie poufności metadanych). +- Brak ochrony (lub jedynie opcjonalna ochrona) przed atakami MITM przez dostawcę usług przy użyciu szyfrowania [end to end](1) +- Niechciane wiadomości (spam i nadużycia). +- Brak własności danych i ich ochrony. +- Dla nietechnicznych użytkowników używanie niescentralizowanych protokołów jest skomplikowane. + +Koncentracja komunikacji na niewielkiej liczbie scentralizowanych platform sprawia, że rozwiązanie tych problemów jest dość trudne. + +## Proponowane rozwiązanie + +Proponowany zestaw protokołów pozwala rozwiązać te problemy poprzez przechowywanie zarówno wiadomości, jak i kontaktów wyłącznie na urządzeniach klienckich, redukując rolę serwerów do zwykłych przekaźników wiadomości. Wymagają one jedynie autoryzacji wiadomości wysyłanych do kolejek, ale NIE wymagają uwierzytelniania użytkowników - dzięki temu chronione są nie tylko wiadomości, ale także metadane, ponieważ użytkownicy nie mają przypisanych do siebie żadnych identyfikatorów - w przeciwieństwie do innych platform. + +Zobacz [whitepaper](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md) po więcej informacji o zadaniach platformy oraz by dowiedzieć się jak wygląda koncepcja techniczna modelu. + +## Dlaczego SimpleX + +## SimpleX podchodzi do problemu prywatności i bezpieczeństwa w unikalny sposób + +Każdy powinien zwracać uwagę na prywatność i bezpieczeństwo swojej komunikacji - nawet zwykłe rozmowy mogą narazić Cię na niebezpieczeństwo. + +### Pełna prywatność Twojej tożsamości, profilu, kontaktu i metadanych + +**W przeciwieństwie do innych komunikatorów, SimpleX nie posiada żadnych identyfikatorów przypisanych do użytkowników** - nie wymaga użycia numeru telefonu (jak Signal czy Whatsapp), adresu opartego o domenę (jak email, XMPP czy Matrix), nazw użytkownika (jak Telegram), kluczy publicznych czy nawet losowych numerów (jak pozostałe komunikatory) do identyfikowania użytkowników - nie wiemy nawet ile osób używa SimpleX. + +Do dostarczania wiadomości zamiast identyfikatorów użytkowników, których używają wszystkie inne platformy, SimpleX wykorzystuje adresy jednokierunkowych (simpleksowych) kolejek wiadomości. Korzystanie z SimpleX jest jak posiadanie innego adresu e-mail lub numeru telefonu dla każdego kontaktu, ale bez kłopotów z zarządzaniem tymi wszystkimi adresami. W niedalekiej przyszłości aplikacje SimpleX będą również automatycznie zmieniać kolejki wiadomości, przenosząc konwersacje z jednego serwera na drugi, aby zapewnić użytkownikom jeszcze lepszą prywatność. + +Takie podejście chroni prywatność tego, z kim się komunikujesz, ukrywając jego tożsamość oraz fakt komunikacji przed serwerami platformy SimpleX i wszelkimi obserwatorami. Prywatność komunikacji można dodatkowo zwiększyć, konfigurując dostęp do sieci w taki sposób, by łączyć się z serwerami SimpleX za pośrednictwem sieci transportowej typu overlay, np. sieci Tor. + +### Najlepsza ochrona przed spamem i nadużyciami + +Ponieważ nie masz żadnego identyfikatora na platformie SimpleX, nie można się z Tobą skontaktować, chyba że udostępnisz jednorazowy link z zaproszeniem lub opcjonalny tymczasowy adres użytkownika. Nawet przy użyciu opcjonalnych adresów użytkownika, które mogą być wykorzystywane do wysyłania spamu z prośbami o kontakt, można je zmienić lub całkowicie usunąć bez utraty jakichkolwiek połączeń (kontaktów). + +### Pełna kontrola i bezpieczeństwo Twoich danych + +SimpleX przechowuje wszystkie dane użytkownika na urządzeniach klienckich, wiadomości są przetrzymywane tylko tymczasowo na serwerach przekaźnikowych SimpleX do momentu ich odebrania, po czym są trwale usuwane. + +Używamy przenośnego formatu bazy danych, który może być używany na wszystkich obsługiwanych urządzeniach - wkrótce dodamy możliwość eksportu bazy danych czatu z aplikacji mobilnej, aby można było jej używać na innym urządzeniu. + +W przeciwieństwie do serwerów sieci federowanych (e-mail, XMPP lub Matrix), serwery SimpleX nie przechowują kont użytkowników, a jedynie przekazują wiadomości do odbiorców, chroniąc prywatność obu stron. Nie ma żadnych identyfikatorów ani zaszyfrowanych wiadomości występujących wspólnie z wysłanym i odbieranym ruchem serwera, dzięki dodatkowej warstwie szyfrowania dostarczanych wiadomości. Jeśli więc ktoś obserwuje ruch na serwerze, nie może łatwo określić, kto komunikuje się z kim (sprawdź [SimpleX whitepaper](https://github.com/simplex-chat/simplexmq/blob/master/protocol/overview-tjr.md) by dowiedzieć się o znanych atakach korelacji ruchu). + +### Użytkownicy są właścicielami sieci SimpleX + +Możesz używać SimpleX na własnych serwerach i nadal komunikować się z ludźmi za pomocą serwerów, które są wstępnie skonfigurowane w aplikacjach lub z dowolnymi innymi serwerami SimpleX. + +Platforma SimpleX korzysta z otwartego protokołu i zapewnia zestaw SDK do tworzenia czatbotów, umożliwiając implementację usług, z którymi użytkownicy mogą wchodzić w interakcje za pośrednictwem aplikacji SimpleX Chat - naprawdę nie możemy się doczekać, aby zobaczyć, jakie usługi oparte o SimpleX można stworzyć. + +Jeśli rozważasz stworzenie czegoś w oparciu o platformę SimpleX, niezależnie od tego, czy chodzi o usługi czatbotów dla użytkowników aplikacji SimpleX, czy też integrację biblioteki SimpleX Chat z aplikacjami mobilnymi, skontaktuj się z nami, aby uzyskać porady i wsparcie. + +## Porównanie z innymi protokołami + +| | SimpleX Chat | Signal, duże platformy | XMPP, Matrix | Protokoły P2P | +| :---------------------------------------------------------- | :----------------------: | :--------------------: | :-------------: | :-------------: | +| Wymaga identyfikatorów użytkownika | Nie = prywatny | Tak1 | Tak2 | Tak3 | +| Możliwość ataku MITM | Nie = bezpieczny | Tak4 | Tak | Tak | +| Polega na DNS | Nie = odporny na cenzurę | Tak | Tak | Nie | +| Pojedynczy operator lub sieć | Nie = zdecentralizowany | Tak | Nie | Tak5 | +| Scentralizowanie lub możliwość ataku obejmującego całą sieć | Nie = odporny na cenzurę | Tak | Tak2 | Tak6 | + +1. Zwykle opiera się na numerze telefonu, w niektórych przypadkach na nazwie użytkownika. +2. Bazuje na DNS. +3. Klucz publiczny lub inny globalnie unikalny identyfikator. +4. Jeśli serwery operatora zostaną przejęte. +5. Mimo że sieci P2P i sieci oparte na kryptowalutach są rozproszone, nie są w pełni zdecentralizowane - działają jako pojedyncza sieć, z pojedynczą przestrzenią nazw adresów użytkowników. +6. Sieci P2P albo mają jakiś centralny serwer, albo cała sieć może zostać przejęta - patrz następna sekcja. + +## Porównanie z komunikatorami [P2P][9] + +Istnieje kilka protokołów czatu/wiadomości P2P i implementacji, które mają na celu rozwiązanie problemu prywatności i centralizacji, ale mają one swój własny szereg problemów, które sprawiają, że są mniej niezawodne niż proponowany projekt, są bardziej skomplikowane w implementacji i analizie oraz są bardziej podatne na ataki. + +1. Sieci [P2P][9] korzystają z jakiegoś rodzaju [DHT][10] do routowania wiadomości/zapytań po sieci. Implementacje DHT mają złożone konstrukcje, muszą równoważyć niezawodność, gwarancję dostawy i czas oczekiwania. Proponowany model zapewnia zarówno większą gwarancję dostarczalności, jak i mniejsze opóźnienia (wiadomość jest przekazywana wiele razy równolegle, za każdym razem przez jeden węzeł, przy użyciu serwerów wybranych przez odbiorcę, podczas gdy w sieciach P2P wiadomość jest przekazywana przez `O(log N)` węzłów sekwencyjnie, przy użyciu węzłów wybranych przez algorytm). + +2. Proponowany model, w przeciwieństwie do większości sieci P2P, nie posiada żadnych globalnych identyfikatorów użytkowników, nawet tymczasowych. + +3. P2P samo w sobie nie rozwiązuje problemu [ataku MITM][2], a większość istniejących rozwiązań nie wykorzystuje komunikacji out-of-band do początkowej wymiany kluczy. Proponowany projekt wykorzystuje wiadomości out-of-band lub (w niektórych przypadkach) istniejące wcześniej bezpieczne i zaufane połączenia do początkowej wymiany kluczy. + +4. Implementacje P2P mogą być blokowane przez niektórych dostawców Internetu (tak jak [BitTorrent][11]). Proponowany model jest niezależny od rodzaju transmisji - może działać na standardowych protokołach sieciowych, a serwery mogą działać na tych samych domenach, co strony internetowe. + +5. Wszystkie znane sieci P2P mogą być podatne na [atak typu Sybil][12], ponieważ każdy węzeł jest wykrywalny, a sieć działa jako całość. Znane środki mające na celu zmniejszenie prawdopodobieństwa ataku typu Sybil wymagają zastosowania scentralizowanego komponentu lub kosztownego [proof of work][13]. Proponowany model, przeciwnie, nie ma możliwości wykrycia serwera - serwery nie są połączone, nie są znane sobie nawzajem i wszystkim klientom. Sieć SimpleX jest pofragmentowana i działa jako wiele odizolowanych połączeń. Uniemożliwia to ataki na całą sieć SimpleX - nawet jeśli niektóre serwery są zagrożone, inne części sieci mogą działać normalnie, a dotknięci atakiem użytkownicy mogą przełączyć się na inne serwery bez utraty kontaktów lub wiadomości. + +6. Sieci P2P są prawdopodobnie [podatne][14] na [atak DRDoS][15]. W proponowanym modelu klienci przekazują tylko ruch ze znanych zaufanych połączeń i nie mogą być wykorzystywani do odbijania i wzmacniania ruchu w całej sieci. + +[1]: https://pl.wikipedia.org/wiki/Szyfrowanie_od_ko%C5%84ca_do_ko%C5%84ca +[2]: https://pl.wikipedia.org/wiki/Atak_man_in_the_middle +[9]: https://pl.wikipedia.org/wiki/Peer-to-peer +[10]: https://pl.wikipedia.org/wiki/Rozproszona_tablica_mieszaj%C4%85ca +[11]: https://pl.wikipedia.org/wiki/BitTorrent +[12]: https://en.wikipedia.org/wiki/Sybil_attack +[13]: https://pl.wikipedia.org/wiki/Proof_of_Work +[14]: https://www.usenix.org/conference/woot15/workshop-program/presentation/p2p-file-sharing-hell-exploiting-bittorrent +[15]: https://pl.wikipedia.org/wiki/DRDoS diff --git a/docs/lang/pl/TRANSLATIONS.md b/docs/lang/pl/TRANSLATIONS.md new file mode 100644 index 0000000000..36daa5a148 --- /dev/null +++ b/docs/lang/pl/TRANSLATIONS.md @@ -0,0 +1,104 @@ +--- +title: Współtworzenie tłumaczenia SimpleX Chat +revision: 19.03.2023 +--- + +| 19.03.2023 | PL, [EN](/docs/TRANSLATIONS.md), [CZ](/docs/lang/cs/TRANSLATIONS.md), [FR](/docs/lang/fr/TRANSLATIONS.md)| + +# Współtworzenie tłumaczenia SimpleX Chat + +Dziękujemy za zainteresowanie się tłumaczeniem SimpleX Chat - to bardzo pomaga w uczynieniu go dostępnym dla szerszego grona użytkowników i naprawdę doceniamy Twoją pomoc. + +Wymaga to znacznej inwestycji czasu - większość ludzi tego początkowo nie docenia - oraz stałej opieki w miarę rozwoju aplikacji. + +Ten dokument został stworzony, po to by przyspieszyć ten proces i podzielić się kilkoma ważnymi "gafami", które odkryliśmy podczas pracy z Weblate - platformą, której używamy do tłumaczeń interfejsu. + +## Zanim rozpoczniesz tłumaczenie + +1. Utwórz konto w Weblate, używając tego samego adresu e-mail, którego używasz na platformie GitHub - dzięki temu Twój wkład będzie powiązany z kontem GitHub, co może okazać się dla Ciebie przydatne w niektórych przypadkach. Gdy tłumaczenie zostanie udostępnione użytkownikom, dodamy nazwę twojego konta do [listy tłumaczy] (https://github.com/simplex-chat/simplex-chat#translate-the-apps), chyba że poprosisz nas, abyśmy tego nie robili. + +2. Przed rozpoczęciem tłumaczenia należy podpisać prostą umowę licencyjną za pośrednictwem Weblate - ma to na celu uniknięcie konfliktów związanych z prawami własności intelektualnej. Kopia tej umowy jest również [dostępna tutaj](https://github.com/simplex-chat/cla/blob/master/CLA.md). + +3. Możemy również dodać Cię do grupy tłumaczy w przypadku jakichkolwiek pytań i aktualizacji - skontaktuj się z programistami za pośrednictwem czatu (po zainstalowaniu aplikacji lub później, poprzez "Wyślij pytania i pomysły" w ustawieniach aplikacji). + +## Proces tłumaczenia + +Najłatwiej jest najpierw przetłumaczyć aplikację na Androida, a dopiero później aplikację na iOS, ponieważ przetłumaczone ciągi Androidowej aplikacji są skonfigurowane jako słownik dla iOS. + +Kroki są następujące: + +1. [Tłumaczysz aplikację na Androida](#translating-android-app) w Weblate. +2. [Sprawdzamy i publikujemy tłumaczenia aplikacji na Androida](#releasing-android-app-translations). +3. Sprawdzasz tłumaczenia w aplikacji i poprawiasz ewentualne błędy. +4. [Tłumaczysz aplikację iOS w Weblate](#translating-ios-app). +5. Sprawdzamy i publikujemy tłumaczenia aplikacji iOS. + +### Tłumaczenie aplikacji na Androida + +1. Zacznij od [aplikacji na Androida](https://hosted.weblate.org/projects/simplex-chat/android/), zarówno podczas wykonywania najbardziej czasochłonnego tłumaczenia wstępnego, jak i dodawania ciągów później. Ze względu na to, że po pierwsze, ciągi w systemie iOS mogą pojawiać się w Weblate z pewnym opóźnieniem, ponieważ wymagają ręcznego zatwierdzenia z naszej strony, zanim będą widoczne, a po drugie, aplikacja na Androida jest skonfigurowana jako słownik dla aplikacji na iOS. 2/3 wszystkich ciągów wymaga tylko kliknięcia, aby przenieść je z Androida na iOS (nadal zajmuje to trochę czasu, Weblate niestety tego nie automatyzuje). + +2. Niektóre ciągi nie wymagają tłumaczenia, ale nadal trzeba je skopiować - w interfejsie użytkownika weblate znajduje się odpowiedni przycisk: + +weblate: copy source to translation + +3. Weblate posiada również automatyczne sugestie, które mogą przyspieszyć ten proces. Czasami mogą być używane w niezmienionej formie, a czasami wymagają edycji - kliknij, aby użyć ich w tłumaczeniach. + +4. Zwróć również uwagę na Klucz ciągu (znajduje się po prawej stronie ekranu) - może on dać ci podpowiedź, co ten ciąg oznacza, gdy jego znaczenie jest niejasne. Przykładowo, klucz dla " Dodatkowy akcent" ( nie wiadomo) to "color_primary_variant" (nieco bardziej jasne, że odnosi się do koloru używanego w aplikacji). + +5. Gdy wszystkie ciągi w aplikacji na Androida zostaną przetłumaczone, przejrzyj je, aby zapewnić spójny styl i język, tak aby te same słowa były konsekwentnie używane do podobnych działań użytkownika, tak samo jak w języku angielskim. Czasami będziesz musiał użyć różnych słów w przypadkach, gdy angielski ma tylko jedno, spróbuj użyć tych wyborów spójnie w podobnych kontekstach, aby uprościć obsługę użytkownikom końcowym. + +Prosimy również o sprawdzenie tłumaczeń przy użyciu przeglądarki Chrome i funkcji *Tłumacz na angielski* w trybie _Przeglądaj_ w weblate - tak będziemy sprawdzać tłumaczenia przed ich opublikowaniem. Popraw wszelkie błędy i dodaj komentarze w przypadkach, gdy uzasadnione jest użycie różnych tłumaczeń - znacznie przyspieszy to weryfikację. + +### Udostępnianie tłumaczeń dla aplikacji na Androida + +Gdy aplikacja na Androida zostanie przetłumaczona, poinformuj nas o tym. + +My wtedy: + - przejrzymy wszystkie tłumaczenia i zasugerujemy ewentualne poprawki - to również zajmie trochę czasu :) + - scalimy je z kodem źródłowym - w tym czasie weblate będzie ustawiony na blokadę zmian. + - stworzymy wersje beta aplikacji na iOS i Androida - możemy również dodać Cię do wewnętrznych grup testerów, abyś mógł zainstalować aplikacje przed innymi. + - udostępnimy ją naszym użytkownikom korzystającym z wersji beta - już ponad tysiąc osób korzysta z wersji beta. + - wydamy aplikację i uwzględnimy nowy język w ogłoszeniu. + +### Tłumaczenie aplikacji iOS + +1. Podczas tłumaczenia [aplikacji iOS](https://hosted.weblate.org/projects/simplex-chat/ios/) duża część ciągów jest dokładnie taka sama - można je skopiować jednym kliknięciem w sekcji słowniczka. Wskazówką jest podświetlenie całego ciągu źródłowego na żółto. Wiele innych ciągów jest bardzo do siebie podobnych, różnią się jedynie składnią lub sposobem pogrubienia czcionki - wymagają one minimalnej edycji. Istnieją jednak pewne ciągi które są unikalne dla platformy iOS - należy je przetłumaczyć osobno + +2. Przejrzyj tłumaczenia na iOS w taki sam sposób jak na Androida i daj nam znać, kiedy będą gotowe do sprawdzenia - powtórzymy ten sam proces dla aplikacji na iOS. + +Serdecznie dziękujemy! To ogromny wysiłek i wielka pomoc dla rozwoju sieci SimpleX. + +weblate: automatic suggestions + +## Częste błędy w tłumaczeniu + +1. Słowo "chat" jest używane w kilku znaczeniach, w zależności od kontekstu. Może ono oznaczać "aplikację SimpleX Chat" (np. w opcji Rozpocznij/zatrzymaj czat) lub "pojedynczą rozmowę". Jeśli nie jest to jasne, zapytaj się nas, a my dodamy więcej uwag dotyczących tłumaczenia. + +2. Prosimy o używanie liczby mnogiej i pojedynczej tak jak w oryginalnych ciągach, w przeciwnym razie może to zmienić ich znaczenie. Przykładowo, niektóre ustawienia mają zastosowanie do wszystkich kontaktów, a niektóre tylko do jednego kontaktu, będzie to mylące dla użytkownika, jeśli użyjesz liczby mnogiej w obu przypadkach. + +3. Aplikacja używa "Passcode" do zapewnienia dostępu, a nie "hasła" ("password") - w wielu językach jest to tłumaczone jako "kod dostępu". Baza danych używa "Passphrase" - w wielu językach jest to tłumaczone jako "hasło". Prosimy o spójne używanie tych słów. + +4. "Rola" użytkownika. To słowo odnosi się do zestawu uprawnień posiadanych przez użytkownika, może to być "właściciel", "administrator", "członek" lub "obserwator" (najniższe uprawnienie, które pozwala tylko na czytanie wiadomości i dodawanie reakcji na wiadomości). Tłumaczenie tego jako "tożsamość" lub "funkcja" może być nieprawidłowe. + +5. "Moderate" / "moderated" ("moderować" / "zmoderowany"). Te słowa oznaczają odpowiednio "usunięcie wiadomości innego użytkownika" i "usunięcie przez administratora". Ta funkcja jest używana, gdy członek wysyła wiadomość, która nie jest odpowiednia dla grupy. Wiele języków ma podobne słowa. + +## Jak sprawdzamy tłumaczenia + +Aby zweryfikować poprawność tłumaczeń, sprawdzamy tłumaczenia poprzez przeglądanie stron Weblate w przeglądarce Google Chrome w trybie "Tłumacz na angielski". Na przykład, aby sprawdzić niemieckie tłumaczenia interfejsu Androida, ktoś z naszego zespołu przewinął [te 68 stron] (https://hosted.weblate.org/browse/simplex-chat/android/de/). + +Nie oczekujemy, że odwrócone tłumaczenie będzie dokładnie takie samo jak oryginał, rzadko się to zdarza, ale że będzie ogólnie poprawne. + +Znacznie ułatwiłoby to recenzję, gdybyś mógł wcześniej sprawdzić to w ten sam sposób i skomentować wszystkie przypadki, w których odwrócone tłumaczenia są zupełnie inne (mogą istnieć uzasadnione przypadki). + +## Co dalej + +1. W miarę aktualizowania aplikacji będziemy publikować aktualizacje w grupie tłumaczy. Nie masz absolutnie żadnego obowiązku tłumaczenia tych dodatkowych ciągów. Niemniej jednak bardzo docenimy, jeśli to zrobisz, ponieważ sprawia to, że użytkownicy mają o wiele lepsze wrażenia, gdy polegają na Twoich tłumaczeniach, niż gdyby jakaś nowa część aplikacji nie została przetłumaczona. + +2. Możesz jeszcze bardziej pomóc w popularyzacji SimpleX w swoim kraju / grupie językowej, tłumacząc [naszą stronę internetową](https://simplex.chat) (również [przez weblate](https://hosted.weblate.org/projects/simplex-chat/website/)) i/lub [dokumenty GitHub](https://github.com/simplex-chat/simplex-chat/tree/master/docs/lang) (jest to możliwe tylko przez git)! + +3. Ponadto, jeśli chcesz być moderatorem / administratorem grupy użytkowników w swoim języku, po przetłumaczeniu aplikacji możemy hostować taką grupę - przygotowujemy wytyczne dla społeczności i dodajemy kilka narzędzi moderacyjnych do aplikacji, która zostanie wydana w wersji 4.6 w marcu. + + +Jeszcze raz bardzo dziękujemy za pomoc w rozwoju SimpleX Chat! + +Evgeny, założyciel SimpleX Chat. diff --git a/docs/lang/pl/WEBRTC.md b/docs/lang/pl/WEBRTC.md new file mode 100644 index 0000000000..d279491fb8 --- /dev/null +++ b/docs/lang/pl/WEBRTC.md @@ -0,0 +1,158 @@ +--- +title: Korzystanie z niestandardowych serwerów WebRTC ICE w SimpleX Chat +revision: 31.01.2023 +--- + +| Updated 31.01.2023 | Języki: PL, [EN](/docs/WEBRTC.md), [FR](/docs/lang/fr/WEBRTC.md), [CZ](/docs/lang/cs/WEBRTC.md) | + +# Korzystanie z niestandardowych serwerów WebRTC ICE w SimpleX Chat + +## Instalacja serwera STUN/TURN + +W tym poradniku będziemy używać najbardziej funkcjonalnej i przetestowanej w boju implementacji serwera STUN/TURN - [`coturn`](https://github.com/coturn/coturn) i [Ubuntu 20.04 LTS`](https://ubuntu.com/download/server) dystrybucji Linuksa. + +0. Uzyskaj certyfikaty `stun.$TWOJA_DOMENA` i `turn.$TWOJA_DOMENA`. + + Używamy [Let's Encrypt](https://letsencrypt.org/getting-started/). + +1. Zainstaluj pakiet `coturn` z głównego repozytorium. + +```sh +apt update && apt install coturn` +``` + +2. Odkomentuj `TURNSERVER_ENABLED=1` z `/etc/default/coturn`: + +```sh +sed -i '/TURN/s/^#//g' /etc/default/coturn +``` + +3. Skonfiguruj `coturn` w `/etc/turnserver.conf`: + + Zobacz również komentarze dotyczące poszczególnych opcji. + +```sh +# Nasłuchuj również na porcie 443 dla tls +alt-tls-listening-port=443 +# Używaj odcisków palców w komunikatach TURN +fingerprint +# Użyj mechanizmu poświadczeń długoterminowych +lt-cred-mech +# Twoje poświadczenia +user=$YOUR_LOGIN:$YOUR_PASSWORD +# Domena Twojego serwera +server-name=$YOUR_DOMAIN +# Domyślny obszar, który ma być używany dla użytkowników, gdy nie znaleziono wyraźnej relacji pochodzenie/obszar +realm=$YOUR_DOMAIN +# Ścieżka do Twoich certyfikatów. Upewnij się, że są one czytelne dla użytkownika/grupy procesu cotun. +cert=/var/lib/turn/cert.pem +pkey=/var/lib/turn/key.pem +# Użyj predefiniowanego klucza DH TLS o długości 2066 bitów +dh2066 +# Logowanie do journalctl +syslog +# Użytkownik/grupa, która będzie uruchamiać usługę coturn +proc-user=turnserver +proc-group=turnserver +# Wyłącz słabe szyfrowanie +no-tlsv1 +no-tlsv1_1 +no-tlsv1_2 +``` + +4. Uruchom i włącz serwis `coturn`: + +```sh +systemctl enable coturn && systemctl start coturn +``` + +5. Opcjonalnie, jeśli używasz firewalla `ufw`, otwórz odpowiednie porty: + +- **3478** – "czysty" TURN/STUN; +- **5349** – TURN/STUN over TLS; +- **443** – TURN/STUN over TLS, który może omijać firewalle; +- **49152:65535** – zakres portów, który Coturn będzie domyślnie wykorzystywał dla przekaźnika TURN. + +```sh +# Dla Ubuntu +sudo ufw allow 3478 && \ +sudo ufw allow 443 && \ +sudo ufw allow 5349 && \ +sudo ufw allow 49152:65535/tcp && \ +sudo ufw allow 49152:65535/udp + +# Dla Fedory +sudo firewall-cmd --permanent --add-port=443/tcp && \ +sudo firewall-cmd --permanent --add-port=443/udp && \ +sudo firewall-cmd --permanent --add-port=5349/tcp && \ +sudo firewall-cmd --permanent --add-port=5349/udp && \ +sudo firewall-cmd --permanent --add-port=49152:65535/tcp && \ +sudo firewall-cmd --permanent --add-port=49152:65535/udp && \ +sudo firewall-cmd --reload +``` + +## Konfiguracja aplikacji mobilnych + +Aby skonfigurować aplikację mobilną do korzystania z serwera: + +1. Otwórz `Ustawienia / Sieć i serwery / Serwery WebRTC ICE` i przełącz przełącznik `Konfiguruj serwery ICE`. + +2. Wprowadź wszystkie adresy serwerów w polu, po jednym na linię, na przykład jeśli serwery znajdują się na porcie 5349: + +``` +stun:stun.example.com:5349 +turn:username:password@turn.example.com:5349 +``` + +To tyle - teraz możesz wykonywać połączenia audio i wideo za pośrednictwem własnego serwera, bez udostępniania jakichkolwiek danych naszym serwerom (poza wymianą kluczy z kontaktem w szyfrowanych wiadomościach E2E). + +## Rozwiązywanie problemów + +- **Określ czy Twój serwer jest dostępny**: + + Uruchom to polecenie w terminalu: + + ```sh + ping + ``` + + Jeśli pakiety są transmitowane, serwer działa! + +- **Określ czy porty są otwarte**: + + Uruchom to polecenie w terminalu: + + ```sh + nc -zvw10 443 5349 + ``` + + Powinno się pojawić: + + ``` + Connection to 443 port [tcp/https] succeeded! + Connection to 5349 port [tcp/*] succeeded! + ``` + +- **Test połączenia STUN/TURN**: + + 1. Wejdź na [IceTest](https://icetest.info/). + + 2. W sekcji **Build up ICE Server List** dodaj: + + + + - `STUN: stun::` kliknij `Add STUN` + - `TURN: turn::`, `Username: `, `Credential: ` kliknij `Add TURN` + + Gdzie `` to 443 lub 5349. + + 3. Powinieneś zobaczyć swoje serwery w sekcji **ICE server list**. Jeśli wszystko jest skonfigurowane poprawnie, naciśnij `Start test`: + + + + 4. W sekcji **Results** powinieneś zobaczyć coś takiego: + + + + Jeśli wyniki pokazują `srflx` i `relay`, wszystko jest skonfigurowane poprawnie! + From 76a33a374312a65750b2d016e386bb2b2bf3d87a Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 14 Apr 2024 16:12:34 +0100 Subject: [PATCH 030/147] Force include hs_init_with_rtsopts (#4028) Co-authored-by: Moritz Angermann --- flake.nix | 3 +++ 1 file changed, 3 insertions(+) diff --git a/flake.nix b/flake.nix index e5e635a223..420f4c70df 100644 --- a/flake.nix +++ b/flake.nix @@ -367,6 +367,7 @@ "-threaded" # "-debug" "-optl-lffi" + "-optl-lHSrts_thr" ] # This is fairly idiotic. LLD will strip out foreign exported # symbols (a GHC bug? Codegen bug?). So we need to pass `-u ` @@ -391,6 +392,8 @@ "chat_valid_name" "chat_json_length" "chat_write_file" + # We also need to keep the rts init method around. + "hs_init_with_rtsopts" ]; postInstall = '' set -x From 35b7f2cb1c013470d44f1bf42eb2c59eb51b7a55 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sun, 14 Apr 2024 22:42:04 +0700 Subject: [PATCH 031/147] scripts: ghc version update (#4010) --- .github/workflows/build.yml | 8 ++++---- Dockerfile | 2 +- docs/CLI.md | 2 +- docs/CONTRIBUTING.md | 20 ++++++++++---------- scripts/desktop/build-lib-linux.sh | 2 +- scripts/desktop/build-lib-mac.sh | 2 +- 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a5a07a8722..0b11716605 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,22 +55,22 @@ jobs: ghc: "8.10.7" cache_path: ~/.cabal/store - os: ubuntu-20.04 - ghc: "9.6.3" + ghc: "9.6.4" cache_path: ~/.cabal/store asset_name: simplex-chat-ubuntu-20_04-x86-64 desktop_asset_name: simplex-desktop-ubuntu-20_04-x86_64.deb - os: ubuntu-22.04 - ghc: "9.6.3" + ghc: "9.6.4" cache_path: ~/.cabal/store asset_name: simplex-chat-ubuntu-22_04-x86-64 desktop_asset_name: simplex-desktop-ubuntu-22_04-x86_64.deb - os: macos-latest - ghc: "9.6.3" + ghc: "9.6.4" cache_path: ~/.cabal/store asset_name: simplex-chat-macos-x86-64 desktop_asset_name: simplex-desktop-macos-x86_64.dmg - os: windows-latest - ghc: "9.6.3" + ghc: "9.6.4" cache_path: C:/cabal asset_name: simplex-chat-windows-x86-64 desktop_asset_name: simplex-desktop-windows-x86_64.msi diff --git a/Dockerfile b/Dockerfile index 6c60195f97..29f3381726 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ FROM ubuntu:${TAG} AS build RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev llvm-12 llvm-12-dev libnuma-dev libssl-dev # Specify bootstrap Haskell versions -ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.3 +ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.4 ENV BOOTSTRAP_HASKELL_CABAL_VERSION=3.10.1.0 # Install ghcup diff --git a/docs/CLI.md b/docs/CLI.md index d4f799c7af..cc74d29db9 100644 --- a/docs/CLI.md +++ b/docs/CLI.md @@ -102,7 +102,7 @@ DOCKER_BUILDKIT=1 docker build --output ~/.local/bin . #### In any OS -1. Install [Haskell GHCup](https://www.haskell.org/ghcup/), GHC 9.6.3 and cabal 3.10.1.0: +1. Install [Haskell GHCup](https://www.haskell.org/ghcup/), GHC 9.6.4 and cabal 3.10.1.0: ```shell curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index bc013cd7eb..d6c11daf7f 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -30,13 +30,13 @@ You will have to add `/opt/homebrew/opt/openssl@1.1/bin` to your PATH in order t **In simplex-chat repo** -- `stable` - stable release of the apps, can be used for updates to the previous stable release (GHC 9.6.3). +- `stable` - stable release of the apps, can be used for updates to the previous stable release (GHC 9.6.4). - `stable-android` - used to build stable Android core library with Nix (GHC 8.10.7) - only for Android armv7a. - `stable-ios` - used to build stable iOS core library with Nix (GHC 8.10.7) – this branch should be the same as `stable-android` except Nix configuration files. Deprecated. -- `master` - branch for beta version releases (GHC 9.6.3). +- `master` - branch for beta version releases (GHC 9.6.4). - `master-ghc8107` - branch for beta version releases (GHC 8.10.7). Deprecated. @@ -50,7 +50,7 @@ You will have to add `/opt/homebrew/opt/openssl@1.1/bin` to your PATH in order t **In simplexmq repo** -- `master` - uses GHC 9.6.3 its commit should be used in `master` branch of simplex-chat repo. +- `master` - uses GHC 9.6.4 its commit should be used in `master` branch of simplex-chat repo. - `master-ghc8107` - its commit should be used in `master-android` (and `master-ios`) branch of simplex-chat repo. Deprecated. @@ -77,28 +77,28 @@ You will have to add `/opt/homebrew/opt/openssl@1.1/bin` to your PATH in order t 7. Independently, `master` branch of simplexmq repo should be merged to `stable` branch on stable releases. -## Differences between GHC 8.10.7 and GHC 9.6.3 +## Differences between GHC 8.10.7 and GHC 9.6.4 1. The main difference is related to `DuplicateRecordFields` extension. -It is no longer possible in GHC 9.6.3 to specify type when using selectors, instead OverloadedRecordDot extension and syntax are used that need to be removed in GHC 8.10.7: +It is no longer possible in GHC 9.6.4 to specify type when using selectors, instead OverloadedRecordDot extension and syntax are used that need to be removed in GHC 8.10.7: ```haskell {-# LANGUAGE DuplicateRecordFields #-} --- use this in GHC 9.6.3 when needed +-- use this in GHC 9.6.4 when needed {-# LANGUAGE OverloadedRecordDot #-} --- GHC 9.6.3 syntax +-- GHC 9.6.4 syntax let x = record.field --- GHC 8.10.7 syntax removed in GHC 9.6.3 +-- GHC 8.10.7 syntax absent in GHC 9.6.4 let x = field (record :: Record) ``` It is still possible to specify type when using record update syntax, use this pragma to suppress compiler warning: ```haskell --- use this in GHC 9.6.3 when needed +-- use this in GHC 9.6.4 when needed {-# OPTIONS_GHC -fno-warn-ambiguous-fields #-} let r' = (record :: Record) {field = value} @@ -107,7 +107,7 @@ let r' = (record :: Record) {field = value} 2. Most monad functions now have to be imported from `Control.Monad`, and not from specific monad modules (e.g. `Control.Monad.Except`). ```haskell --- use this in GHC 9.6.3 when needed +-- use this in GHC 9.6.4 when needed import Control.Monad ``` diff --git a/scripts/desktop/build-lib-linux.sh b/scripts/desktop/build-lib-linux.sh index c27b672e40..528e7b9f91 100755 --- a/scripts/desktop/build-lib-linux.sh +++ b/scripts/desktop/build-lib-linux.sh @@ -8,7 +8,7 @@ function readlink() { OS=linux ARCH=${1:-`uname -a | rev | cut -d' ' -f2 | rev`} -GHC_VERSION=9.6.3 +GHC_VERSION=9.6.4 if [ "$ARCH" == "aarch64" ]; then COMPOSE_ARCH=arm64 diff --git a/scripts/desktop/build-lib-mac.sh b/scripts/desktop/build-lib-mac.sh index 2b0fd5376f..12067a9b53 100755 --- a/scripts/desktop/build-lib-mac.sh +++ b/scripts/desktop/build-lib-mac.sh @@ -5,7 +5,7 @@ set -e OS=mac ARCH="${1:-`uname -a | rev | cut -d' ' -f1 | rev`}" COMPOSE_ARCH=$ARCH -GHC_VERSION=9.6.3 +GHC_VERSION=9.6.4 if [ "$ARCH" == "arm64" ]; then ARCH=aarch64 From c6af2c285abdb9f6f34aa1e56d7cf4de6bda271a Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 14 Apr 2024 17:31:56 +0100 Subject: [PATCH 032/147] core: 5.7.0.0 (#4027) --- package.yaml | 2 +- simplex-chat.cabal | 2 +- src/Simplex/Chat/Remote.hs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.yaml b/package.yaml index 3e187c5653..e844c52c26 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.6.1.1 +version: 5.7.0.0 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/simplex-chat.cabal b/simplex-chat.cabal index dcf9061370..aac942c6b3 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: 5.6.1.1 +version: 5.7.0.0 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat diff --git a/src/Simplex/Chat/Remote.hs b/src/Simplex/Chat/Remote.hs index 819c1cd670..75602c1e18 100644 --- a/src/Simplex/Chat/Remote.hs +++ b/src/Simplex/Chat/Remote.hs @@ -50,7 +50,7 @@ import Simplex.Chat.Store.Files import Simplex.Chat.Store.Remote import Simplex.Chat.Store.Shared import Simplex.Chat.Types -import Simplex.Chat.Util (liftIOEither, encryptFile) +import Simplex.Chat.Util (encryptFile, liftIOEither) import Simplex.FileTransfer.Description (FileDigest (..)) import Simplex.Messaging.Agent import Simplex.Messaging.Agent.Protocol (AgentErrorType (RCP)) @@ -76,7 +76,7 @@ minRemoteCtrlVersion = AppVersion [5, 6, 0, 0] -- when acting as controller minRemoteHostVersion :: AppVersion -minRemoteHostVersion = AppVersion [5, 6, 0, 0] +minRemoteHostVersion = AppVersion [5, 7, 0, 0] currentAppVersion :: AppVersion currentAppVersion = AppVersion SC.version From f606e5742c7af7b3abed91c2867400cf1813830d Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 14 Apr 2024 19:11:15 +0100 Subject: [PATCH 033/147] ios: update library --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index d7ca3e1cb5..7c820893b5 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -94,11 +94,6 @@ 5CB346E52868AA7F001FD2EF /* SuspendChat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB346E42868AA7F001FD2EF /* SuspendChat.swift */; }; 5CB346E72868D76D001FD2EF /* NotificationsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB346E62868D76D001FD2EF /* NotificationsView.swift */; }; 5CB346E92869E8BA001FD2EF /* PushEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB346E82869E8BA001FD2EF /* PushEnvironment.swift */; }; - 5CB39FD52BC7F13A0000FE16 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD02BC7F13A0000FE16 /* libgmp.a */; }; - 5CB39FD62BC7F13A0000FE16 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD12BC7F13A0000FE16 /* libffi.a */; }; - 5CB39FD72BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD22BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a */; }; - 5CB39FD82BC7F13A0000FE16 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD32BC7F13A0000FE16 /* libgmpxx.a */; }; - 5CB39FD92BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CB39FD42BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a */; }; 5CB634A829E437960066AD6B /* PasscodeEntry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB634A729E437960066AD6B /* PasscodeEntry.swift */; }; 5CB634AD29E46CF70066AD6B /* LocalAuthView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB634AC29E46CF70066AD6B /* LocalAuthView.swift */; }; 5CB634AF29E4BB7D0066AD6B /* SetAppPasscodeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CB634AE29E4BB7D0066AD6B /* SetAppPasscodeView.swift */; }; @@ -115,6 +110,11 @@ 5CC1C99527A6CF7F000D9FF6 /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */; }; 5CC2C0FC2809BF11000C35E3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FA2809BF11000C35E3 /* Localizable.strings */; }; 5CC2C0FF2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FD2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings */; }; + 5CC83D1A2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */; }; + 5CC83D1B2BCC504B00A0C558 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D162BCC504B00A0C558 /* libgmpxx.a */; }; + 5CC83D1C2BCC504B00A0C558 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D172BCC504B00A0C558 /* libgmp.a */; }; + 5CC83D1D2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */; }; + 5CC83D1E2BCC504B00A0C558 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D192BCC504B00A0C558 /* libffi.a */; }; 5CC868F329EB540C0017BBFD /* CIRcvDecryptionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */; }; 5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */; }; 5CD67B8F2B0E858A00C510B1 /* hs_init.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD67B8D2B0E858A00C510B1 /* hs_init.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -383,11 +383,6 @@ 5CB346E42868AA7F001FD2EF /* SuspendChat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuspendChat.swift; sourceTree = ""; }; 5CB346E62868D76D001FD2EF /* NotificationsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationsView.swift; sourceTree = ""; }; 5CB346E82869E8BA001FD2EF /* PushEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushEnvironment.swift; sourceTree = ""; }; - 5CB39FD02BC7F13A0000FE16 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5CB39FD12BC7F13A0000FE16 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 5CB39FD22BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a"; sourceTree = ""; }; - 5CB39FD32BC7F13A0000FE16 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5CB39FD42BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a"; sourceTree = ""; }; 5CB634A729E437960066AD6B /* PasscodeEntry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PasscodeEntry.swift; sourceTree = ""; }; 5CB634AC29E46CF70066AD6B /* LocalAuthView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAuthView.swift; sourceTree = ""; }; 5CB634AE29E4BB7D0066AD6B /* SetAppPasscodeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetAppPasscodeView.swift; sourceTree = ""; }; @@ -407,6 +402,11 @@ 5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheet.swift; sourceTree = ""; }; 5CC2C0FB2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 5CC2C0FE2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; + 5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a"; sourceTree = ""; }; + 5CC83D162BCC504B00A0C558 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5CC83D172BCC504B00A0C558 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a"; sourceTree = ""; }; + 5CC83D192BCC504B00A0C558 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIRcvDecryptionError.swift; sourceTree = ""; }; 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavStackCompat.swift; sourceTree = ""; }; 5CD67B8D2B0E858A00C510B1 /* hs_init.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hs_init.h; sourceTree = ""; }; @@ -523,13 +523,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5CB39FD82BC7F13A0000FE16 /* libgmpxx.a in Frameworks */, + 5CC83D1D2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a in Frameworks */, + 5CC83D1B2BCC504B00A0C558 /* libgmpxx.a in Frameworks */, + 5CC83D1C2BCC504B00A0C558 /* libgmp.a in Frameworks */, + 5CC83D1A2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a in Frameworks */, + 5CC83D1E2BCC504B00A0C558 /* libffi.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5CB39FD72BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a in Frameworks */, - 5CB39FD52BC7F13A0000FE16 /* libgmp.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 5CB39FD62BC7F13A0000FE16 /* libffi.a in Frameworks */, - 5CB39FD92BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -592,11 +592,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5CB39FD12BC7F13A0000FE16 /* libffi.a */, - 5CB39FD02BC7F13A0000FE16 /* libgmp.a */, - 5CB39FD32BC7F13A0000FE16 /* libgmpxx.a */, - 5CB39FD42BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP-ghc9.6.4.a */, - 5CB39FD22BC7F13A0000FE16 /* libHSsimplex-chat-5.6.1.1-CxOyGEtPyjQ6Yv6ZFTxGdP.a */, + 5CC83D192BCC504B00A0C558 /* libffi.a */, + 5CC83D172BCC504B00A0C558 /* libgmp.a */, + 5CC83D162BCC504B00A0C558 /* libgmpxx.a */, + 5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */, + 5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */, ); path = Libraries; sourceTree = ""; From 24e3806b255693e7658214b8a2e420b22e279ff6 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Mon, 15 Apr 2024 01:18:12 +0700 Subject: [PATCH 034/147] webrtc: updated credentials (#4011) * webrtc: updated credentials * no udp * change * stuns * added stun back --------- Co-authored-by: Evgeny Poberezkin --- apps/ios/Shared/Views/Call/WebRTC.swift | 7 ++++--- apps/ios/Shared/Views/Call/WebRTCClient.swift | 8 ++++---- .../kotlin/chat/simplex/common/views/call/WebRTC.kt | 7 ++++--- .../common/src/commonMain/resources/assets/www/call.js | 5 +++-- packages/simplex-chat-webrtc/src/call.ts | 5 +++-- website/src/call/call.js | 3 ++- 6 files changed, 20 insertions(+), 15 deletions(-) diff --git a/apps/ios/Shared/Views/Call/WebRTC.swift b/apps/ios/Shared/Views/Call/WebRTC.swift index 919b1e14e7..333dc082d5 100644 --- a/apps/ios/Shared/Views/Call/WebRTC.swift +++ b/apps/ios/Shared/Views/Call/WebRTC.swift @@ -431,17 +431,18 @@ struct RTCIceServer: Codable, Equatable { } // the servers are expected in this format: -// stun:stun.simplex.im:443?transport=tcp -// turn:private:yleob6AVkiNI87hpR94Z@turn.simplex.im:443?transport=tcp +// stuns:stun.simplex.im:443?transport=tcp +// turns:private2:Hxuq2QxUjnhj96Zq2r4HjqHRj@turn.simplex.im:443?transport=tcp func parseRTCIceServer(_ str: String) -> RTCIceServer? { var s = replaceScheme(str, "stun:") + s = replaceScheme(s, "stuns:") s = replaceScheme(s, "turn:") s = replaceScheme(s, "turns:") if let u: URL = URL(string: s), let scheme = u.scheme, let host = u.host, let port = u.port, - u.path == "" && (scheme == "stun" || scheme == "turn" || scheme == "turns") { + u.path == "" && (scheme == "stun" || scheme == "stuns" || scheme == "turn" || scheme == "turns") { let query = u.query == nil || u.query == "" ? "" : "?" + (u.query ?? "") return RTCIceServer( urls: ["\(scheme):\(host):\(port)\(query)"], diff --git a/apps/ios/Shared/Views/Call/WebRTCClient.swift b/apps/ios/Shared/Views/Call/WebRTCClient.swift index 834af4a2c1..ff36241daf 100644 --- a/apps/ios/Shared/Views/Call/WebRTCClient.swift +++ b/apps/ios/Shared/Views/Call/WebRTCClient.swift @@ -65,14 +65,14 @@ final class WebRTCClient: NSObject, RTCVideoViewDelegate, RTCFrameEncryptorDeleg self.localRendererAspectRatio = localRendererAspectRatio rtcAudioSession.useManualAudio = CallController.useCallKit() rtcAudioSession.isAudioEnabled = !CallController.useCallKit() - logger.debug("WebRTCClient: rtcAudioSession has manual audio \(self.rtcAudioSession.useManualAudio) and audio enabled \(self.rtcAudioSession.isAudioEnabled)}") + logger.debug("WebRTCClient: rtcAudioSession has manual audio \(self.rtcAudioSession.useManualAudio) and audio enabled \(self.rtcAudioSession.isAudioEnabled)") super.init() } let defaultIceServers: [WebRTC.RTCIceServer] = [ - WebRTC.RTCIceServer(urlStrings: ["stun:stun.simplex.im:443"]), - WebRTC.RTCIceServer(urlStrings: ["turn:turn.simplex.im:443?transport=udp"], username: "private", credential: "yleob6AVkiNI87hpR94Z"), - WebRTC.RTCIceServer(urlStrings: ["turn:turn.simplex.im:443?transport=tcp"], username: "private", credential: "yleob6AVkiNI87hpR94Z"), + WebRTC.RTCIceServer(urlStrings: ["stuns:stun.simplex.im:443"]), + //WebRTC.RTCIceServer(urlStrings: ["turns:turn.simplex.im:443?transport=udp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj"), + WebRTC.RTCIceServer(urlStrings: ["turns:turn.simplex.im:443?transport=tcp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj"), ] func initializeCall(_ iceServers: [WebRTC.RTCIceServer]?, _ mediaType: CallMediaType, _ aesKey: String?, _ relay: Bool?) -> Call { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt index 754878e9fb..4991cf13bc 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt @@ -187,10 +187,11 @@ data class ConnectionState( ) // the servers are expected in this format: -// stun:stun.simplex.im:443?transport=tcp -// turn:private:yleob6AVkiNI87hpR94Z@turn.simplex.im:443?transport=tcp +// stuns:stun.simplex.im:443?transport=tcp +// turns:private2:Hxuq2QxUjnhj96Zq2r4HjqHRj@turn.simplex.im:443?transport=tcp fun parseRTCIceServer(str: String): RTCIceServer? { var s = replaceScheme(str, "stun:") + s = replaceScheme(s, "stuns:") s = replaceScheme(s, "turn:") s = replaceScheme(s, "turns:") val u = runCatching { URI(s) }.getOrNull() @@ -198,7 +199,7 @@ fun parseRTCIceServer(str: String): RTCIceServer? { val scheme = u.scheme val host = u.host val port = u.port - if (u.path == "" && (scheme == "stun" || scheme == "turn" || scheme == "turns")) { + if (u.path == "" && (scheme == "stun" || scheme == "stuns" || scheme == "turn" || scheme == "turns")) { val userInfo = u.userInfo?.split(":") val query = if (u.query == null || u.query == "") "" else "?${u.query}" return RTCIceServer( diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js index 5ea2f062b0..a2cc4a2f27 100644 --- a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js +++ b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js @@ -36,9 +36,10 @@ var localizedState = ""; var localizedDescription = ""; const processCommand = (function () { const defaultIceServers = [ + { urls: ["stuns:stun.simplex.im:443"] }, { urls: ["stun:stun.simplex.im:443"] }, - { urls: ["turn:turn.simplex.im:443?transport=udp"], username: "private", credential: "yleob6AVkiNI87hpR94Z" }, - { urls: ["turn:turn.simplex.im:443?transport=tcp"], username: "private", credential: "yleob6AVkiNI87hpR94Z" }, + //{ urls: ["turns:turn.simplex.im:443?transport=udp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj" }, + { urls: ["turns:turn.simplex.im:443?transport=tcp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj" }, ]; function getCallConfig(encodedInsertableStreams, iceServers, relay) { return { diff --git a/packages/simplex-chat-webrtc/src/call.ts b/packages/simplex-chat-webrtc/src/call.ts index accbebb22d..f3b9af784b 100644 --- a/packages/simplex-chat-webrtc/src/call.ts +++ b/packages/simplex-chat-webrtc/src/call.ts @@ -245,9 +245,10 @@ const processCommand = (function () { } const defaultIceServers: RTCIceServer[] = [ + {urls: ["stuns:stun.simplex.im:443"]}, {urls: ["stun:stun.simplex.im:443"]}, - {urls: ["turn:turn.simplex.im:443?transport=udp"], username: "private", credential: "yleob6AVkiNI87hpR94Z"}, - {urls: ["turn:turn.simplex.im:443?transport=tcp"], username: "private", credential: "yleob6AVkiNI87hpR94Z"}, + //{urls: ["turns:turn.simplex.im:443?transport=udp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj"}, + {urls: ["turns:turn.simplex.im:443?transport=tcp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj"}, ] function getCallConfig(encodedInsertableStreams: boolean, iceServers?: RTCIceServer[], relay?: boolean): CallConfig { diff --git a/website/src/call/call.js b/website/src/call/call.js index b247431f4b..8104470686 100644 --- a/website/src/call/call.js +++ b/website/src/call/call.js @@ -24,8 +24,9 @@ var TransformOperation; let activeCall; const processCommand = (function () { const defaultIceServers = [ + { urls: ["stuns:stun.simplex.im:443"] }, { urls: ["stun:stun.simplex.im:443"] }, - { urls: ["turn:turn.simplex.im:443"], username: "private", credential: "yleob6AVkiNI87hpR94Z" }, + { urls: ["turns:turn.simplex.im:443"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj" }, ]; function getCallConfig(encodedInsertableStreams, iceServers, relay) { return { From 0eae7f56f371062499583258c1b06ac53bcb9c0f Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 14 Apr 2024 21:14:15 +0100 Subject: [PATCH 035/147] 5.7-beta.0: ios 207, android 196, desktop 37 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 24 +++++++++++----------- apps/multiplatform/gradle.properties | 8 ++++---- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 7c820893b5..9ed03affd7 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -1540,7 +1540,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 206; + CURRENT_PROJECT_VERSION = 207; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1565,7 +1565,7 @@ "@executable_path/Frameworks", ); LLVM_LTO = YES_THIN; - MARKETING_VERSION = 5.6.1; + MARKETING_VERSION = 5.7; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; SDKROOT = iphoneos; @@ -1589,7 +1589,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 206; + CURRENT_PROJECT_VERSION = 207; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1614,7 +1614,7 @@ "@executable_path/Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.6.1; + MARKETING_VERSION = 5.7; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; SDKROOT = iphoneos; @@ -1675,7 +1675,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 206; + CURRENT_PROJECT_VERSION = 207; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -1690,7 +1690,7 @@ "@executable_path/../../Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.6.1; + MARKETING_VERSION = 5.7; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1712,7 +1712,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 206; + CURRENT_PROJECT_VERSION = 207; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -1727,7 +1727,7 @@ "@executable_path/../../Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.6.1; + MARKETING_VERSION = 5.7; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1749,7 +1749,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 206; + CURRENT_PROJECT_VERSION = 207; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1775,7 +1775,7 @@ "$(PROJECT_DIR)/Libraries/sim", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.6.1; + MARKETING_VERSION = 5.7; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; @@ -1800,7 +1800,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 206; + CURRENT_PROJECT_VERSION = 207; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1826,7 +1826,7 @@ "$(PROJECT_DIR)/Libraries/sim", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.6.1; + MARKETING_VERSION = 5.7; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index 9918dadee1..74629c8b9b 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -26,11 +26,11 @@ android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=5.6.1 -android.version_code=193 +android.version_name=5.7-beta.0 +android.version_code=196 -desktop.version_name=5.6.1 -desktop.version_code=36 +desktop.version_name=5.7-beta.0 +desktop.version_code=37 kotlin.version=1.9.23 gradle.plugin.version=8.2.0 From bda09177873f2772b96e84d9782d2e7b3c7346bc Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Mon, 15 Apr 2024 09:51:24 +0000 Subject: [PATCH 036/147] github: fix cla action (#4030) --- .github/workflows/cla.yml | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/cla.yml b/.github/workflows/cla.yml index 72a7cf2b94..b396c9a289 100644 --- a/.github/workflows/cla.yml +++ b/.github/workflows/cla.yml @@ -5,14 +5,20 @@ on: pull_request_target: types: [opened, closed, synchronize] +permissions: + actions: write + contents: write + pull-requests: write + statuses: write + jobs: CLAssistant: runs-on: ubuntu-latest steps: - name: "CLA Assistant" - if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request' + if: (github.event.comment.body == 'recheck' || github.event.comment.body == 'I have read the CLA Document and I hereby sign the CLA') || github.event_name == 'pull_request_target' # Beta Release - uses: cla-assistant/github-action@v2.1.3-beta + uses: cla-assistant/github-action@v2.3.0 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # the below token should have repo scope and must be manually added by you in the repository's secret @@ -33,4 +39,4 @@ jobs: #custom-pr-sign-comment: 'The signature to be committed in order to sign the CLA' #custom-allsigned-prcomment: 'pull request comment when all contributors has signed, defaults to **CLA Assistant Lite bot** All Contributors have signed the CLA.' #lock-pullrequest-aftermerge: false - if you don't want this bot to automatically lock the pull request after merging (default - true) - #use-dco-flag: true - If you are using DCO instead of CLA \ No newline at end of file + #use-dco-flag: true - If you are using DCO instead of CLA From 7ff4b05c9078cd91e6068df429583e71b6c86e4b Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 15 Apr 2024 17:19:37 +0400 Subject: [PATCH 037/147] core: remember new origin for received forwarded messages (#4032) --- src/Simplex/Chat.hs | 8 +++++--- tests/ChatTests/Forward.hs | 29 +++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 92dc294d4b..41c744850a 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -930,10 +930,12 @@ processChatCommand' vr = \case forwardMC ChatItem {content = CIRcvMsgContent fmc} = pure (fmc, MDRcv) forwardMC _ = throwChatError CEInvalidForward forwardCIFF :: ChatItem c d -> Maybe CIForwardedFrom -> Maybe CIForwardedFrom - forwardCIFF ChatItem {meta = CIMeta {itemForwarded = Just ciff}} _ = Just ciff - forwardCIFF _ ciff = ciff + forwardCIFF ChatItem {meta = CIMeta {itemForwarded}} ciff = case itemForwarded of + Nothing -> ciff + Just CIFFUnknown -> ciff + Just prevCIFF -> Just prevCIFF forwardCryptoFile :: ChatItem c d -> CM (Maybe CryptoFile) - forwardCryptoFile ChatItem {file = Just CIFile {fileName, fileStatus, fileSource = Just fromCF@CryptoFile {filePath, cryptoArgs = fromArgs}}} + forwardCryptoFile ChatItem {file = Just CIFile {fileName, fileStatus, fileSource = Just fromCF@CryptoFile {filePath}}} | ciFileLoaded fileStatus = chatReadVar filesFolder >>= \case Nothing -> diff --git a/tests/ChatTests/Forward.hs b/tests/ChatTests/Forward.hs index 8638076ab2..d49c6df955 100644 --- a/tests/ChatTests/Forward.hs +++ b/tests/ChatTests/Forward.hs @@ -24,6 +24,7 @@ chatForwardTests = do it "from notes to notes" testForwardNotesToNotes -- TODO forward between different folders when supported describe "interactions with forwarded messages" $ do it "preserve original forward info" testForwardPreserveInfo + it "received forwarded message is saved with new forward info" testForwardRcvMsgNewInfo it "quoted message is not included" testForwardQuotedMsg it "editing is prohibited" testForwardEditProhibited it "delete for other" testForwardDeleteForOther @@ -276,6 +277,34 @@ testForwardPreserveInfo = dan <# "#team alice> -> forwarded" dan <## " hey" +testForwardRcvMsgNewInfo :: HasCallStack => FilePath -> IO () +testForwardRcvMsgNewInfo = + testChat4 aliceProfile bobProfile cathProfile danProfile $ + \alice bob cath dan -> do + connectUsers bob dan + createCCNoteFolder alice + connectUsers alice bob + connectUsers alice cath + + dan #> "@bob hey" + bob <# "dan> hey" + + bob `send` "@alice <- @dan hey" + bob <# "@alice <- @dan" + bob <## " hey" + alice <# "bob> -> forwarded" + alice <## " hey" + + alice `send` "* <- @bob hey" + alice <# "* <- @bob" + alice <## " hey" + + alice `send` "@cath <- * hey" + alice <# "@cath <- @bob" + alice <## " hey" + cath <# "alice> -> forwarded" + cath <## " hey" + testForwardQuotedMsg :: HasCallStack => FilePath -> IO () testForwardQuotedMsg = testChat3 aliceProfile bobProfile cathProfile $ From c2169f7813d1c0d20ee261a2773764c38c77b782 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:22:40 +0700 Subject: [PATCH 038/147] desktop: fix video calls in Firefox (#4034) * desktop: fix video calls in Firefox * one more play() --- .../common/src/commonMain/resources/assets/www/call.js | 10 ++++++++-- .../commonMain/resources/assets/www/desktop/call.html | 2 -- packages/simplex-chat-webrtc/src/call.ts | 8 +++++++- packages/simplex-chat-webrtc/src/desktop/call.html | 2 -- 4 files changed, 15 insertions(+), 7 deletions(-) diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js index a2cc4a2f27..9d9782e90c 100644 --- a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js +++ b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js @@ -38,7 +38,7 @@ const processCommand = (function () { const defaultIceServers = [ { urls: ["stuns:stun.simplex.im:443"] }, { urls: ["stun:stun.simplex.im:443"] }, - //{ urls: ["turns:turn.simplex.im:443?transport=udp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj" }, + //{urls: ["turns:turn.simplex.im:443?transport=udp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj"}, { urls: ["turns:turn.simplex.im:443?transport=tcp"], username: "private2", credential: "Hxuq2QxUjnhj96Zq2r4HjqHRj" }, ]; function getCallConfig(encodedInsertableStreams, iceServers, relay) { @@ -376,6 +376,9 @@ const processCommand = (function () { // setupVideoElement(videos.remote) videos.local.srcObject = call.localStream; videos.remote.srcObject = call.remoteStream; + // Without doing it manually Firefox shows black screen but video can be played in Picture-in-Picture + videos.local.play(); + videos.remote.play(); } async function setupEncryptionWorker(call) { if (call.aesKey) { @@ -448,7 +451,9 @@ const processCommand = (function () { codecs.splice(selectedCodecIndex, 1); codecs.unshift(selectedCodec); for (const t of call.connection.getTransceivers()) { - if (((_a = t.sender.track) === null || _a === void 0 ? void 0 : _a.kind) === "video") { + // Firefox doesn't have this function implemented: + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396922 + if (((_a = t.sender.track) === null || _a === void 0 ? void 0 : _a.kind) === "video" && t.setCodecPreferences) { t.setCodecPreferences(codecs); } } @@ -486,6 +491,7 @@ const processCommand = (function () { replaceTracks(pc, videoTracks); call.localStream = localStream; videos.local.srcObject = localStream; + videos.local.play(); } function replaceTracks(pc, tracks) { if (!tracks.length) diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/www/desktop/call.html b/apps/multiplatform/common/src/commonMain/resources/assets/www/desktop/call.html index 59ca2b58b0..2600062b02 100644 --- a/apps/multiplatform/common/src/commonMain/resources/assets/www/desktop/call.html +++ b/apps/multiplatform/common/src/commonMain/resources/assets/www/desktop/call.html @@ -10,7 +10,6 @@ diff --git a/packages/simplex-chat-webrtc/src/call.ts b/packages/simplex-chat-webrtc/src/call.ts index f3b9af784b..1d68b83f73 100644 --- a/packages/simplex-chat-webrtc/src/call.ts +++ b/packages/simplex-chat-webrtc/src/call.ts @@ -577,6 +577,9 @@ const processCommand = (function () { // setupVideoElement(videos.remote) videos.local.srcObject = call.localStream videos.remote.srcObject = call.remoteStream + // Without doing it manually Firefox shows black screen but video can be played in Picture-in-Picture + videos.local.play() + videos.remote.play() } async function setupEncryptionWorker(call: Call) { @@ -652,7 +655,9 @@ const processCommand = (function () { codecs.splice(selectedCodecIndex, 1) codecs.unshift(selectedCodec) for (const t of call.connection.getTransceivers()) { - if (t.sender.track?.kind === "video") { + // Firefox doesn't have this function implemented: + // https://bugzilla.mozilla.org/show_bug.cgi?id=1396922 + if (t.sender.track?.kind === "video" && t.setCodecPreferences) { t.setCodecPreferences(codecs) } } @@ -690,6 +695,7 @@ const processCommand = (function () { replaceTracks(pc, videoTracks) call.localStream = localStream videos.local.srcObject = localStream + videos.local.play() } function replaceTracks(pc: RTCPeerConnection, tracks: MediaStreamTrack[]) { diff --git a/packages/simplex-chat-webrtc/src/desktop/call.html b/packages/simplex-chat-webrtc/src/desktop/call.html index 59ca2b58b0..2600062b02 100644 --- a/packages/simplex-chat-webrtc/src/desktop/call.html +++ b/packages/simplex-chat-webrtc/src/desktop/call.html @@ -10,7 +10,6 @@ From 5e71d00acee466f7d9e5758f402336b600bf2409 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Tue, 16 Apr 2024 14:38:46 +0700 Subject: [PATCH 039/147] android, desktop: workaround of missing stuns support in calls (#4033) * android, desktop: workaround of missing stuns support in calls * const --- .../src/commonMain/resources/assets/www/call.js | 12 +++++++++++- packages/simplex-chat-webrtc/src/call.ts | 12 +++++++++++- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js index 9d9782e90c..9e7d29189f 100644 --- a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js +++ b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js @@ -111,7 +111,17 @@ const processCommand = (function () { }); } async function initializeCall(config, mediaType, aesKey) { - const pc = new RTCPeerConnection(config.peerConnectionConfig); + var _a; + let pc; + try { + pc = new RTCPeerConnection(config.peerConnectionConfig); + } + catch (e) { + console.log("Error while constructing RTCPeerConnection, will try without 'stuns' specified: " + e); + const withoutStuns = (_a = config.peerConnectionConfig.iceServers) === null || _a === void 0 ? void 0 : _a.filter((elem) => typeof elem.urls === "string" ? !elem.urls.startsWith("stuns:") : !elem.urls.some((url) => url.startsWith("stuns:"))); + config.peerConnectionConfig.iceServers = withoutStuns; + pc = new RTCPeerConnection(config.peerConnectionConfig); + } const remoteStream = new MediaStream(); const localCamera = VideoCamera.User; const localStream = await getLocalMediaStream(mediaType, localCamera); diff --git a/packages/simplex-chat-webrtc/src/call.ts b/packages/simplex-chat-webrtc/src/call.ts index 1d68b83f73..41241e22c2 100644 --- a/packages/simplex-chat-webrtc/src/call.ts +++ b/packages/simplex-chat-webrtc/src/call.ts @@ -321,7 +321,17 @@ const processCommand = (function () { } async function initializeCall(config: CallConfig, mediaType: CallMediaType, aesKey?: string): Promise { - const pc = new RTCPeerConnection(config.peerConnectionConfig) + let pc: RTCPeerConnection + try { + pc = new RTCPeerConnection(config.peerConnectionConfig) + } catch (e) { + console.log("Error while constructing RTCPeerConnection, will try without 'stuns' specified: " + e) + const withoutStuns = config.peerConnectionConfig.iceServers?.filter((elem) => + typeof elem.urls === "string" ? !elem.urls.startsWith("stuns:") : !elem.urls.some((url) => url.startsWith("stuns:")) + ) + config.peerConnectionConfig.iceServers = withoutStuns + pc = new RTCPeerConnection(config.peerConnectionConfig) + } const remoteStream = new MediaStream() const localCamera = VideoCamera.User const localStream = await getLocalMediaStream(mediaType, localCamera) From 77f5c678d5a4af25abb1b90cd684e1c1dcad2cbc Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Tue, 16 Apr 2024 12:28:39 +0400 Subject: [PATCH 040/147] ios: forward ui (#4024) * wip * wip * fixes * improvements * info * fix * dont cleanup file * info design, text * text * rework with LazyVStack * delay * refactor * move delay * fix * refactor * refactor 2 * keep current message * forward with quote, context icons * info * preserve draft * remove newline * improve search * info * layout --------- Co-authored-by: Evgeny Poberezkin --- apps/ios/Shared/Model/SimpleXAPI.swift | 16 +- .../Views/Chat/ChatItem/FramedItemView.swift | 8 +- .../Views/Chat/ChatItemForwardingView.swift | 152 ++++++++++++++++++ .../Shared/Views/Chat/ChatItemInfoView.swift | 89 ++++++++++ apps/ios/Shared/Views/Chat/ChatView.swift | 34 +++- .../Chat/ComposeMessage/ComposeView.swift | 58 ++++++- .../Chat/ComposeMessage/ContextItemView.swift | 31 ++-- .../Chat/ComposeMessage/SendMessageView.swift | 4 +- .../ios/SimpleX NSE/NotificationService.swift | 3 - apps/ios/SimpleX.xcodeproj/project.pbxproj | 4 + apps/ios/SimpleXChat/APITypes.swift | 3 + apps/ios/SimpleXChat/ChatTypes.swift | 20 ++- 12 files changed, 391 insertions(+), 31 deletions(-) create mode 100644 apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 69b660ad3c..65e24eeb25 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -353,11 +353,20 @@ func apiGetChatItemInfo(type: ChatType, id: Int64, itemId: Int64) async throws - throw r } +func apiForwardChatItem(toChatType: ChatType, toChatId: Int64, fromChatType: ChatType, fromChatId: Int64, itemId: Int64) async -> ChatItem? { + let cmd: ChatCommand = .apiForwardChatItem(toChatType: toChatType, toChatId: toChatId, fromChatType: fromChatType, fromChatId: fromChatId, itemId: itemId) + return await processSendMessageCmd(toChatType: toChatType, cmd: cmd) +} + func apiSendMessage(type: ChatType, id: Int64, file: CryptoFile?, quotedItemId: Int64?, msg: MsgContent, live: Bool = false, ttl: Int? = nil) async -> ChatItem? { - let chatModel = ChatModel.shared let cmd: ChatCommand = .apiSendMessage(type: type, id: id, file: file, quotedItemId: quotedItemId, msg: msg, live: live, ttl: ttl) + return await processSendMessageCmd(toChatType: type, cmd: cmd) +} + +private func processSendMessageCmd(toChatType: ChatType, cmd: ChatCommand) async -> ChatItem? { + let chatModel = ChatModel.shared let r: ChatResponse - if type == .direct { + if toChatType == .direct { var cItem: ChatItem? = nil let endTask = beginBGTask({ if let cItem = cItem { @@ -397,7 +406,7 @@ func apiCreateChatItem(noteFolderId: Int64, file: CryptoFile?, msg: MsgContent) } private func sendMessageErrorAlert(_ r: ChatResponse) { - logger.error("apiSendMessage error: \(String(describing: r))") + logger.error("send message error: \(String(describing: r))") AlertManager.shared.showAlertMsg( title: "Error sending message", message: "Error: \(String(describing: r))" @@ -1803,7 +1812,6 @@ func processReceivedMsg(_ res: ChatResponse) async { } case let .sndFileCompleteXFTP(user, aChatItem, _): await chatItemSimpleUpdate(user, aChatItem) - Task { cleanupFile(aChatItem) } case let .sndFileError(user, aChatItem, _): if let aChatItem = aChatItem { await chatItemSimpleUpdate(user, aChatItem) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift index 3e292c131b..3b10bcad55 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift @@ -65,8 +65,8 @@ struct FramedItemView: View { } } } - } else if chatItem.meta.itemForwarded != nil { - framedItemHeader(icon: "arrowshape.turn.up.forward", caption: Text("forwarded").italic()) + } else if let itemForwarded = chatItem.meta.itemForwarded { + framedItemHeader(icon: "arrowshape.turn.up.forward", caption: Text(itemForwarded.text(chat.chatInfo.chatType)).italic(), pad: true) } ChatItemContentView(chat: chat, chatItem: chatItem, revealed: $revealed, msgContentView: framedMsgContentView) @@ -165,7 +165,7 @@ struct FramedItemView: View { ) } - @ViewBuilder func framedItemHeader(icon: String? = nil, caption: Text) -> some View { + @ViewBuilder func framedItemHeader(icon: String? = nil, caption: Text, pad: Bool = true) -> some View { let v = HStack(spacing: 6) { if let icon = icon { Image(systemName: icon) @@ -180,7 +180,7 @@ struct FramedItemView: View { .foregroundColor(.secondary) .padding(.horizontal, 12) .padding(.top, 6) - .padding(.bottom, chatItem.quotedItem == nil ? 6 : 0) // TODO think how to regroup + .padding(.bottom, pad || (chatItem.quotedItem == nil && chatItem.meta.itemForwarded == nil) ? 6 : 0) .overlay(DetermineWidth()) .frame(minWidth: msgWidth, alignment: .leading) .background(chatItemFrameContextColor(chatItem, colorScheme)) diff --git a/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift b/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift new file mode 100644 index 0000000000..f575b6f9a2 --- /dev/null +++ b/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift @@ -0,0 +1,152 @@ +// +// ChatItemForwardingView.swift +// SimpleX (iOS) +// +// Created by spaced4ndy on 12.04.2024. +// Copyright © 2024 SimpleX Chat. All rights reserved. +// + +import SwiftUI +import SimpleXChat + +struct ChatItemForwardingView: View { + @EnvironmentObject var chatModel: ChatModel + @Environment(\.dismiss) var dismiss + + var ci: ChatItem + var fromChatInfo: ChatInfo + @Binding var composeState: ComposeState + + @State private var searchText: String = "" + @FocusState private var searchFocused + + var body: some View { + NavigationView { + forwardListView() + .toolbar { + ToolbarItem(placement: .navigationBarLeading) { + Button("Cancel") { + dismiss() + } + } + ToolbarItem(placement: .principal) { + Text("Forward") + .bold() + } + } + } + } + + @ViewBuilder private func forwardListView() -> some View { + VStack(alignment: .leading) { + let chatsToForwardTo = filterChatsToForwardTo() + if !chatsToForwardTo.isEmpty { + ScrollView { + LazyVStack(alignment: .leading, spacing: 8) { + searchFieldView(text: $searchText, focussed: $searchFocused) + .padding(.leading, 2) + let s = searchText.trimmingCharacters(in: .whitespaces).localizedLowercase + let chats = s == "" ? chatsToForwardTo : chatsToForwardTo.filter { filterChatSearched($0, s) } + ForEach(chats) { chat in + Divider() + forwardListNavLinkView(chat) + .disabled(chatModel.deletedChats.contains(chat.chatInfo.id)) + } + } + .padding(.horizontal) + .padding(.vertical, 8) + .background(Color(uiColor: .systemBackground)) + .cornerRadius(12) + .padding(.horizontal) + } + .background(Color(.systemGroupedBackground)) + } else { + emptyList() + } + } + } + + private func filterChatsToForwardTo() -> [Chat] { + var filteredChats = chatModel.chats.filter({ canForwardToChat($0) }) + if let index = filteredChats.firstIndex(where: { $0.chatInfo.chatType == .local }) { + let privateNotes = filteredChats.remove(at: index) + filteredChats.insert(privateNotes, at: 0) + } + return filteredChats + } + + private func filterChatSearched(_ chat: Chat, _ searchStr: String) -> Bool { + let cInfo = chat.chatInfo + return switch cInfo { + case let .direct(contact): + viewNameContains(cInfo, searchStr) || + contact.profile.displayName.localizedLowercase.contains(searchStr) || + contact.fullName.localizedLowercase.contains(searchStr) + default: + viewNameContains(cInfo, searchStr) + } + + func viewNameContains(_ cInfo: ChatInfo, _ s: String) -> Bool { + cInfo.chatViewName.localizedLowercase.contains(s) + } + } + + private func canForwardToChat(_ chat: Chat) -> Bool { + switch chat.chatInfo { + case let .direct(contact): contact.sendMsgEnabled && !contact.nextSendGrpInv + case let .group(groupInfo): groupInfo.sendMsgEnabled + case let .local(noteFolder): noteFolder.sendMsgEnabled + case .contactRequest: false + case .contactConnection: false + case .invalidJSON: false + } + } + + private func emptyList() -> some View { + Text("No filtered chats") + .foregroundColor(.secondary) + .frame(maxWidth: .infinity) + } + + @ViewBuilder private func forwardListNavLinkView(_ chat: Chat) -> some View { + Button { + dismiss() + if chat.id == fromChatInfo.id { + composeState = ComposeState( + message: composeState.message, + preview: composeState.linkPreview != nil ? composeState.preview : .noPreview, + contextItem: .forwardingItem(chatItem: ci, fromChatInfo: fromChatInfo) + ) + } else { + composeState = ComposeState.init(forwardingItem: ci, fromChatInfo: fromChatInfo) + chatModel.chatId = chat.id + } + } label: { + HStack { + ChatInfoImage(chat: chat) + .frame(width: 30, height: 30) + .padding(.trailing, 2) + Text(chat.chatInfo.chatViewName) + .foregroundColor(.primary) + .lineLimit(1) + if chat.chatInfo.incognito { + Spacer() + Image(systemName: "theatermasks") + .resizable() + .scaledToFit() + .frame(width: 22, height: 22) + .foregroundColor(.secondary) + } + } + .frame(maxWidth: .infinity, alignment: .leading) + } + } +} + +#Preview { + ChatItemForwardingView( + ci: ChatItem.getSample(1, .directSnd, .now, "hello"), + fromChatInfo: .direct(contact: Contact.sampleData), + composeState: Binding.constant(ComposeState(message: "hello")) + ) +} diff --git a/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift b/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift index 8dd43cc01b..0d1f99f3bd 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift @@ -11,6 +11,7 @@ import SimpleXChat struct ChatItemInfoView: View { @EnvironmentObject var chatModel: ChatModel + @Environment(\.dismiss) var dismiss @Environment(\.colorScheme) var colorScheme var ci: ChatItem @Binding var chatItemInfo: ChatItemInfo? @@ -21,6 +22,7 @@ struct ChatItemInfoView: View { enum CIInfoTab { case history case quote + case forwarded case delivery } @@ -68,9 +70,20 @@ struct ChatItemInfoView: View { if ci.quotedItem != nil { numTabs += 1 } + if chatItemInfo?.forwardedFromChatItem != nil { + numTabs += 1 + } return numTabs } + private var local: Bool { + switch ci.chatDir { + case .localSnd: true + case .localRcv: true + default: false + } + } + @ViewBuilder private func itemInfoView() -> some View { if numTabs > 1 { TabView(selection: $selection) { @@ -93,6 +106,13 @@ struct ChatItemInfoView: View { } .tag(CIInfoTab.quote) } + if let forwardedFromItem = chatItemInfo?.forwardedFromChatItem { + forwardedFromTab(forwardedFromItem) + .tabItem { + Label(local ? "Saved" : "Forwarded", systemImage: "arrowshape.turn.up.forward") + } + .tag(CIInfoTab.forwarded) + } } .onAppear { if chatItemInfo?.memberDeliveryStatuses != nil { @@ -275,6 +295,75 @@ struct ChatItemInfoView: View { : Color(uiColor: .tertiarySystemGroupedBackground) } + @ViewBuilder private func forwardedFromTab(_ forwardedFromItem: AChatItem) -> some View { + ScrollView { + VStack(alignment: .leading, spacing: 16) { + details() + Divider().padding(.vertical) + Text(local ? "Saved from" : "Forwarded from") + .font(.title2) + .padding(.bottom, 4) + forwardedFromView(forwardedFromItem) + } + .padding() + } + .frame(maxHeight: .infinity, alignment: .top) + } + + private func forwardedFromView(_ forwardedFromItem: AChatItem) -> some View { + VStack(alignment: .leading, spacing: 8) { + Button { + Task { + await MainActor.run { + chatModel.chatId = forwardedFromItem.chatInfo.id + dismiss() + } + } + } label: { + forwardedFromSender(forwardedFromItem) + } + + if !local { + Divider().padding(.top, 32) + Text("Recipient(s) can't see who this message is from.") + .font(.caption) + .foregroundColor(.secondary) + } + } + } + + @ViewBuilder private func forwardedFromSender(_ forwardedFromItem: AChatItem) -> some View { + HStack { + ChatInfoImage(chat: Chat(chatInfo: forwardedFromItem.chatInfo)) + .frame(width: 48, height: 48) + .padding(.trailing, 6) + + if forwardedFromItem.chatItem.chatDir.sent { + VStack(alignment: .leading) { + Text("you") + .italic() + .foregroundColor(.primary) + Text(forwardedFromItem.chatInfo.chatViewName) + .foregroundColor(.secondary) + .lineLimit(1) + } + } else if case let .groupRcv(groupMember) = forwardedFromItem.chatItem.chatDir { + VStack(alignment: .leading) { + Text(groupMember.chatViewName) + .foregroundColor(.primary) + .lineLimit(1) + Text(forwardedFromItem.chatInfo.chatViewName) + .foregroundColor(.secondary) + .lineLimit(1) + } + } else { + Text(forwardedFromItem.chatInfo.chatViewName) + .foregroundColor(.primary) + .lineLimit(1) + } + } + } + @ViewBuilder private func deliveryTab(_ memberDeliveryStatuses: [MemberDeliveryStatus]) -> some View { ScrollView { VStack(alignment: .leading, spacing: 16) { diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 34565193ff..6651b7cc5a 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -83,7 +83,11 @@ struct ChatView: View { initChatView() } .onChange(of: chatModel.chatId) { cId in - if cId != nil { + showChatInfoSheet = false + if let cId { + if let c = chatModel.getChat(cId) { + chat = c + } initChatView() } else { dismiss() @@ -251,7 +255,8 @@ struct ChatView: View { } } } - if chatModel.draftChatId == cInfo.id, let draft = chatModel.draft { + if chatModel.draftChatId == cInfo.id && !composeState.forwarding, + let draft = chatModel.draft { composeState = draft } if chat.chatStats.unreadChat { @@ -342,8 +347,8 @@ struct ChatView: View { .onChange(of: searchText) { _ in loadChat(chat: chat, search: searchText) } - .onChange(of: chatModel.chatId) { _ in - if let chatId = chatModel.chatId, let c = chatModel.getChat(chatId) { + .onChange(of: chatModel.chatId) { chatId in + if let chatId, let c = chatModel.getChat(chatId) { chat = c showChatInfoSheet = false loadChat(chat: c) @@ -539,6 +544,7 @@ struct ChatView: View { @State private var revealed = false @State private var showChatItemInfoSheet: Bool = false @State private var chatItemInfo: ChatItemInfo? + @State private var showForwardingSheet: Bool = false @State private var allowMenu: Bool = true @@ -693,6 +699,14 @@ struct ChatView: View { }) { ChatItemInfoView(ci: ci, chatItemInfo: $chatItemInfo) } + .sheet(isPresented: $showForwardingSheet) { + if #available(iOS 16.0, *) { + ChatItemForwardingView(ci: ci, fromChatInfo: chat.chatInfo, composeState: $composeState) + .presentationDetents([.fraction(0.8)]) + } else { + ChatItemForwardingView(ci: ci, fromChatInfo: chat.chatInfo, composeState: $composeState) + } + } } private func showMemberImage(_ member: GroupMember, _ prevItem: ChatItem?) -> Bool { @@ -775,6 +789,9 @@ struct ChatView: View { if ci.meta.editable && !mc.isVoice && !live { menu.append(editAction(ci)) } + if ci.meta.itemDeleted == nil && !ci.isLiveDummy && !live { + menu.append(forwardUIAction(ci)) + } if !ci.isLiveDummy { menu.append(viewInfoUIAction(ci)) } @@ -826,6 +843,15 @@ struct ChatView: View { } } + private func forwardUIAction(_ ci: ChatItem) -> UIAction { + UIAction( + title: NSLocalizedString("Forward", comment: "chat item action"), + image: UIImage(systemName: "arrowshape.turn.up.forward") + ) { _ in + showForwardingSheet = true + } + } + private func reactionUIMenuPreiOS16(_ rs: [UIAction]) -> UIMenu { UIMenu( title: NSLocalizedString("React…", comment: "chat item menu"), diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift index 24fe983661..6cf9df782b 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ComposeView.swift @@ -23,6 +23,7 @@ enum ComposeContextItem { case noContextItem case quotedItem(chatItem: ChatItem) case editingItem(chatItem: ChatItem) + case forwardingItem(chatItem: ChatItem, fromChatInfo: ChatInfo) } enum VoiceMessageRecordingState { @@ -72,6 +73,13 @@ struct ComposeState { } } + init(forwardingItem: ChatItem, fromChatInfo: ChatInfo) { + self.message = "" + self.preview = .noPreview + self.contextItem = .forwardingItem(chatItem: forwardingItem, fromChatInfo: fromChatInfo) + self.voiceMessageRecordingState = .noRecording + } + func copy( message: String? = nil, liveMessage: LiveMessage? = nil, @@ -102,12 +110,19 @@ struct ComposeState { } } + var forwarding: Bool { + switch contextItem { + case .forwardingItem: return true + default: return false + } + } + var sendEnabled: Bool { switch preview { case let .mediaPreviews(media): return !media.isEmpty case .voicePreview: return voiceMessageRecordingState == .finished case .filePreview: return true - default: return !message.isEmpty || liveMessage != nil + default: return !message.isEmpty || forwarding || liveMessage != nil } } @@ -153,7 +168,7 @@ struct ComposeState { } var attachmentDisabled: Bool { - if editing || liveMessage != nil || inProgress { return true } + if editing || forwarding || liveMessage != nil || inProgress { return true } switch preview { case .noPreview: return false case .linkPreview: return false @@ -667,6 +682,14 @@ struct ComposeView: View { contextIcon: "pencil", cancelContextItem: { clearState() } ) + case let .forwardingItem(chatItem: forwardedItem, _): + ContextItemView( + chat: chat, + contextItem: forwardedItem, + contextIcon: "arrowshape.turn.up.forward", + cancelContextItem: { composeState = composeState.copy(contextItem: .noContextItem) }, + showSender: false + ) } } @@ -688,6 +711,11 @@ struct ComposeView: View { } if chat.chatInfo.contact?.nextSendGrpInv ?? false { await sendMemberContactInvitation() + } else if case let .forwardingItem(ci, fromChatInfo) = composeState.contextItem { + sent = await forwardItem(ci, fromChatInfo) + if !composeState.message.isEmpty { + sent = await send(checkLinkPreview(), quoted: sent?.id, live: false, ttl: nil) + } } else if case let .editingItem(ci) = composeState.contextItem { sent = await updateMessage(ci, live: live) } else if let liveMessage = liveMessage, liveMessage.sentMsg != nil { @@ -733,7 +761,15 @@ struct ComposeView: View { } } } - await MainActor.run { clearState(live: live) } + await MainActor.run { + let wasForwarding = composeState.forwarding + clearState(live: live) + if wasForwarding, + chatModel.draftChatId == chat.chatInfo.id, + let draft = chatModel.draft { + composeState = draft + } + } return sent func sending() async { @@ -854,6 +890,22 @@ struct ComposeView: View { return nil } + func forwardItem(_ forwardedItem: ChatItem, _ fromChatInfo: ChatInfo) async -> ChatItem? { + if let chatItem = await apiForwardChatItem( + toChatType: chat.chatInfo.chatType, + toChatId: chat.chatInfo.apiId, + fromChatType: fromChatInfo.chatType, + fromChatId: fromChatInfo.apiId, + itemId: forwardedItem.id + ) { + await MainActor.run { + chatModel.addChatItem(chat.chatInfo, chatItem) + } + return chatItem + } + return nil + } + func checkLinkPreview() -> MsgContent { switch (composeState.preview) { case let .linkPreview(linkPreview: linkPreview): diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift index 3eb128cded..2777d8321c 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/ContextItemView.swift @@ -15,6 +15,7 @@ struct ContextItemView: View { let contextItem: ChatItem let contextIcon: String let cancelContextItem: () -> Void + var showSender: Bool = true var body: some View { HStack { @@ -23,7 +24,7 @@ struct ContextItemView: View { .aspectRatio(contentMode: .fit) .frame(width: 16, height: 16) .foregroundColor(.secondary) - if let sender = contextItem.memberDisplayName { + if showSender, let sender = contextItem.memberDisplayName { VStack(alignment: .leading, spacing: 4) { Text(sender).font(.caption).foregroundColor(.secondary) msgContentView(lines: 2) @@ -48,14 +49,26 @@ struct ContextItemView: View { } private func msgContentView(lines: Int) -> some View { - MsgContentView( - chat: chat, - text: contextItem.text, - formattedText: contextItem.formattedText, - showSecrets: false - ) - .multilineTextAlignment(isRightToLeft(contextItem.text) ? .trailing : .leading) - .lineLimit(lines) + contextMsgPreview() + .multilineTextAlignment(isRightToLeft(contextItem.text) ? .trailing : .leading) + .lineLimit(lines) + } + + private func contextMsgPreview() -> Text { + return attachment() + messageText(contextItem.text, contextItem.formattedText, nil, preview: true, showSecrets: false) + + func attachment() -> Text { + switch contextItem.content.msgContent { + case .file: return image("doc.fill") + case .image: return image("photo") + case .voice: return image("play.fill") + default: return Text("") + } + } + + func image(_ s: String) -> Text { + Text(Image(systemName: s)).foregroundColor(Color(uiColor: .tertiaryLabel)) + Text(" ") + } } } diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift index f9e5b1c2b1..ae0394475d 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift @@ -110,6 +110,7 @@ struct SendMessageView: View { } else if showVoiceMessageButton && composeState.message.isEmpty && !composeState.editing + && !composeState.forwarding && composeState.liveMessage == nil && ((composeState.noPreview && vmrs == .noRecording) || (vmrs == .recording && holdingVMR)) { @@ -225,7 +226,8 @@ struct SendMessageView: View { @ViewBuilder private func sendButtonContextMenuItems() -> some View { if composeState.liveMessage == nil, - !composeState.editing { + !composeState.editing, + !composeState.forwarding { if case .noContextItem = composeState.contextItem, !composeState.voicePreview, let send = sendLiveMessage, diff --git a/apps/ios/SimpleX NSE/NotificationService.swift b/apps/ios/SimpleX NSE/NotificationService.swift index efd8f33dd8..faa7f4f44c 100644 --- a/apps/ios/SimpleX NSE/NotificationService.swift +++ b/apps/ios/SimpleX NSE/NotificationService.swift @@ -586,9 +586,6 @@ func receivedMsgNtf(_ res: ChatResponse) async -> (String, NSENotification)? { cleanupDirectFile(aChatItem) } return nil - case let .sndFileCompleteXFTP(_, aChatItem, _): - cleanupFile(aChatItem) - return nil case let .callInvitation(invitation): // Do not post it without CallKit support, iOS will stop launching the app without showing CallKit return ( diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 9ed03affd7..f3841f43cf 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -172,6 +172,7 @@ 646BB38E283FDB6D001CE359 /* LocalAuthenticationUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 646BB38D283FDB6D001CE359 /* LocalAuthenticationUtils.swift */; }; 647F090E288EA27B00644C40 /* GroupMemberInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 647F090D288EA27B00644C40 /* GroupMemberInfoView.swift */; }; 648010AB281ADD15009009B9 /* CIFileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648010AA281ADD15009009B9 /* CIFileView.swift */; }; + 648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */; }; 649BCDA0280460FD00C3A862 /* ComposeImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */; }; 649BCDA22805D6EF00C3A862 /* CIImageView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 649BCDA12805D6EF00C3A862 /* CIImageView.swift */; }; 64AA1C6927EE10C800AC7277 /* ContextItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64AA1C6827EE10C800AC7277 /* ContextItemView.swift */; }; @@ -464,6 +465,7 @@ 646BB38D283FDB6D001CE359 /* LocalAuthenticationUtils.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LocalAuthenticationUtils.swift; sourceTree = ""; }; 647F090D288EA27B00644C40 /* GroupMemberInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupMemberInfoView.swift; sourceTree = ""; }; 648010AA281ADD15009009B9 /* CIFileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIFileView.swift; sourceTree = ""; }; + 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemForwardingView.swift; sourceTree = ""; }; 6493D667280ED77F007A76FB /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/Localizable.strings; sourceTree = ""; }; 649BCD9F280460FD00C3A862 /* ComposeImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComposeImageView.swift; sourceTree = ""; }; 649BCDA12805D6EF00C3A862 /* CIImageView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIImageView.swift; sourceTree = ""; }; @@ -585,6 +587,7 @@ 5CBE6C11294487F7002D9531 /* VerifyCodeView.swift */, 5CBE6C132944CC12002D9531 /* ScanCodeView.swift */, 64C06EB42A0A4A7C00792D4D /* ChatItemInfoView.swift */, + 648679AA2BC96A74006456E7 /* ChatItemForwardingView.swift */, ); path = Chat; sourceTree = ""; @@ -1161,6 +1164,7 @@ 5C10D88828EED12E00E58BF0 /* ContactConnectionInfo.swift in Sources */, 5CBE6C12294487F7002D9531 /* VerifyCodeView.swift in Sources */, 3CDBCF4227FAE51000354CDD /* ComposeLinkView.swift in Sources */, + 648679AB2BC96A74006456E7 /* ChatItemForwardingView.swift in Sources */, 64466DC829FC2B3B00E3D48D /* CreateSimpleXAddress.swift in Sources */, 3CDBCF4827FF621E00354CDD /* CILinkView.swift in Sources */, 5C7505A827B6D34800BE3227 /* ChatInfoToolbar.swift in Sources */, diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index c599b720ae..e27e280e40 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -50,6 +50,7 @@ public enum ChatCommand { case apiDeleteChatItem(type: ChatType, id: Int64, itemId: Int64, mode: CIDeleteMode) case apiDeleteMemberChatItem(groupId: Int64, groupMemberId: Int64, itemId: Int64) case apiChatItemReaction(type: ChatType, id: Int64, itemId: Int64, add: Bool, reaction: MsgReaction) + case apiForwardChatItem(toChatType: ChatType, toChatId: Int64, fromChatType: ChatType, fromChatId: Int64, itemId: Int64) case apiGetNtfToken case apiRegisterToken(token: DeviceToken, notificationMode: NotificationsMode) case apiVerifyToken(token: DeviceToken, nonce: String, code: String) @@ -195,6 +196,7 @@ public enum ChatCommand { case let .apiDeleteChatItem(type, id, itemId, mode): return "/_delete item \(ref(type, id)) \(itemId) \(mode.rawValue)" case let .apiDeleteMemberChatItem(groupId, groupMemberId, itemId): return "/_delete member item #\(groupId) \(groupMemberId) \(itemId)" case let .apiChatItemReaction(type, id, itemId, add, reaction): return "/_reaction \(ref(type, id)) \(itemId) \(onOff(add)) \(encodeJSON(reaction))" + case let .apiForwardChatItem(toChatType, toChatId, fromChatType, fromChatId, itemId): return "/_forward \(ref(toChatType, toChatId)) \(ref(fromChatType, fromChatId)) \(itemId)" case .apiGetNtfToken: return "/_ntf get " case let .apiRegisterToken(token, notificationMode): return "/_ntf register \(token.cmdString) \(notificationMode.rawValue)" case let .apiVerifyToken(token, nonce, code): return "/_ntf verify \(token.cmdString) \(nonce) \(code)" @@ -343,6 +345,7 @@ public enum ChatCommand { case .apiConnectContactViaAddress: return "apiConnectContactViaAddress" case .apiDeleteMemberChatItem: return "apiDeleteMemberChatItem" case .apiChatItemReaction: return "apiChatItemReaction" + case .apiForwardChatItem: return "apiForwardChatItem" case .apiGetNtfToken: return "apiGetNtfToken" case .apiRegisterToken: return "apiRegisterToken" case .apiVerifyToken: return "apiVerifyToken" diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index 9db0468d95..d1f1fc06d1 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -2784,15 +2784,29 @@ public enum CIDeleted: Decodable { } } -public enum MsgDirection: Decodable { - case rcv - case snd +public enum MsgDirection: String, Decodable { + case rcv = "rcv" + case snd = "snd" } public enum CIForwardedFrom: Decodable { case unknown case contact(chatName: String, msgDir: MsgDirection, contactId: Int64?, chatItemId: Int64?) case group(chatName: String, msgDir: MsgDirection, groupId: Int64?, chatItemId: Int64?) + + var chatName: String { + switch self { + case .unknown: "" + case let .contact(chatName, _, _, _): chatName + case let .group(chatName, _, _, _): chatName + } + } + + public func text(_ chatType: ChatType) -> LocalizedStringKey { + chatType == .local + ? (chatName == "" ? "saved" : "saved from \(chatName)") + : "forwarded" + } } public enum CIDeleteMode: String, Decodable { From 4eafdc3723365899baf5c3e6c3a2a8c9a480a886 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 16 Apr 2024 20:18:22 +0100 Subject: [PATCH 041/147] blog: metadata in messengers (#4038) * blog: metadata in messengers * readme * call.js * picture * revert call.js --- ...40416-dangers-of-metadata-in-messengers.md | 52 ++++++++++++++++++ blog/README.md | 8 +++ blog/images/20240416-metadata.png | Bin 0 -> 104162 bytes blog/images/20240416-whatsapp.jpg | Bin 0 -> 1465896 bytes .../src/_includes/blog_previews/20240416.html | 5 ++ 5 files changed, 65 insertions(+) create mode 100644 blog/20240416-dangers-of-metadata-in-messengers.md create mode 100644 blog/images/20240416-metadata.png create mode 100644 blog/images/20240416-whatsapp.jpg create mode 100644 website/src/_includes/blog_previews/20240416.html diff --git a/blog/20240416-dangers-of-metadata-in-messengers.md b/blog/20240416-dangers-of-metadata-in-messengers.md new file mode 100644 index 0000000000..3b30003798 --- /dev/null +++ b/blog/20240416-dangers-of-metadata-in-messengers.md @@ -0,0 +1,52 @@ +--- +layout: layouts/article.html +title: "The dangers of metadata in messengers" +date: 2024-04-16 +previewBody: blog_previews/20240416.html +image: images/20240416-metadata.png +imageWide: true +permalink: "/blog/20240416-dangers-of-metadata-in-messengers.html" +--- + +# The dangers of metadata in messengers + +**Published:** Apr 16, 2024 + +_By [Esra'a al Shafei](https://mastodon.social/@alshafei)_ + +In many countries around the world, phone numbers are attached to biometrics data and personal IDs. Telecommunications companies are either government owned or are heavily regulated, privately owned monopolies who comply with most government requests for backdoors or user data. The idea that today, we still need to give out our phone numbers as primary identifiers to be able to use the leading messaging apps should be frowned upon and actively challenged. It’s necessary to advocate for private alternatives in messaging that do not rely on user IDs of any kind - and yes, it’s possible. + +Messaging is still not where it needs to be. Privacy is confused with security, when both are not synonymous, and there are major gaps in helping users understand the fundamental differences. + + + +For example, while WhatsApp messages are [end-to-end encrypted](https://faq.whatsapp.com/820124435853543), let’s consider what you give up when you use it, per its own listings in app stores: + +- App activity (app interactions, in-app search history, and other user-generated content) +- Location +- Financial information (user payment info and payment history) +- Contacts and their phone numbers +- Groups you’re a member of +- When you use the app and how often you use it +- Device and other IDs +- Personal info (email address, user IDs, phone number) + +This is called [metadata](https://en.wikipedia.org/wiki/Metadata). It reveals a wealth of information about you and your connections, and in the hands of a centralized monopoly, this can and does get misused in incredibly dangerous ways. Once such metadata is logged, it can create very detailed profiles about who you are, everywhere you’ve been, and everyone you’ve ever spoken to. In settling for apps that normalize this while giving you the illusion of privacy in their marketing, we are doing ourselves a disservice by accepting this as the default. Collectively, we aren’t doing enough to protect ourselves and our social graph from this invasive overreach. + +When stored, aggregated and analyzed, this metadata provides ample information that could potentially incriminate someone or be submitted to authorities. When WhatsApp and Facebook Messenger enabled end-to-end encryption for messages, of course it was a welcome and widely celebrated change. But it’s important to remember that not all end-to-end encryption utilizes the same standards, [some implementations are more secure](https://simplex.chat/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.html#how-secure-is-end-to-end-encryption-in-different-messengers) than others, so it’s something that shouldn’t necessarily be accepted at face value. More importantly: collecting and storing an obscene amount of metadata should invite global scrutiny, considering this data is often combined with whatever other information companies like Meta harvest about your identity (which is [a lot](https://www.vox.com/recode/23172691/meta-tracking-privacy-hospitals).) + + + +This is one of the many reasons why we need to resist giving out our phone numbers just to access an app, especially to do something as personal and intimate as private messaging. Even though users can sometimes mask their numbers with a username, their identity on the app is still fundamentally tied to their phone number. App operators have access to this, as well as user contacts. Additionally, with a simple modification to the app's source code, the contacts may also gain access in some cases. This should raise more concerns about privacy, and it makes the need for anonymity difficult to achieve. + +Everyone has a different threat model (and if you don’t yet, now is a good time to [create one](https://www.privacyguides.org/en/basics/threat-modeling/#creating-your-threat-model)). For many users today, WhatsApp and other apps may be sufficient for their specific needs, especially in connecting with families and friends who are already on the app and unlikely to migrate elsewhere. If that suits your life and needs, and if you’re aware and consciously accept the risks, great. + +But we also need to acknowledge that the world is becoming increasingly dangerous in the way AI is being used to [supercharge surveillance](https://www.forbes.com/sites/forbestechcouncil/2024/02/02/artificial-intelligence-the-new-eyes-of-surveillance/?sh=cd57bc214f27), and we need to be educated and aware of the risks this is already having on our lives and what it subjects others in your network to when you choose metadata-heavy apps as your primary form of communication. Having alternatives will always be important, even if it’s not what you default to for everyday messaging. Recognize who in your social circles might require the extra privacy, anonymity and security, so that you can play a role in protecting vulnerable individuals who need it most. The messaging app you choose implicates others as well, not just yourself, and while you personally may not require complete privacy, others might have their lives depend on it. + +End-to-end encryption is a solid start, but it's just the beginning of our pursuit for true privacy and security. True privacy means that even when legal demands come knocking, there's no useful metadata to hand over. It's not enough to just protect the content of messages; we need consistent innovation in protecting metadata too. + +Changing ingrained habits is tough, but your privacy is always worth the fight. Although giants like WhatsApp and Telegram may dominate global messaging for now, increasing concerns about data harvesting and AI-driven surveillance are fueling demand for alternatives. SimpleX Chat aims to be one of those strong alternatives, hence its radical focus on a decentralized framework with no user identifiers (in other words, nothing that uniquely identifies users on the protocol level to their contacts or to the relays) and extra optionality (self-hosting an [SMP server](https://simplex.chat/docs/server.html) or [XFTP server](https://simplex.chat/docs/xftp-server.html), access via Tor, [chat profiles](https://simplex.chat/docs/guide/chat-profiles.html) with incognito mode, etc.) + +As of today, most messaging alternatives, including SimpleX, will have some limitations. But with the limited resources we have, we are committed to daily progress towards creating a truly private messenger that anyone can use while maintaining the features that users have come to know and love in messaging interfaces. We want to be the prime example of a messenger that achieves genuine privacy without compromising it for convenience. We need to be able to reliably move away from small and niche use cases to endorsing and enforcing global standards for privacy and making it accessible for all users regardless of their technical expertise. + +We’re grateful for the users and [donors](https://github.com/simplex-chat/simplex-chat#help-us-with-donations) who have been following along on this journey thus far and helping with feedback, anything from bug reports to identifying potential risks. Building in the open has always been a necessity for transparency and ongoing [auditability](https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html), because we don’t want anyone to just take our word for it. [See for yourself](https://github.com/simplex-chat) and engage in the discussions. We fully expect you to hold us accountable to our word. diff --git a/blog/README.md b/blog/README.md index cf93260676..78cd0709ad 100644 --- a/blog/README.md +++ b/blog/README.md @@ -1,5 +1,13 @@ # Blog +Apr 16. 2024 [The dangers of metadata in messengers](./20240416-dangers-of-metadata-in-messengers.md) + +_By [Esra'a al Shafei](https://mastodon.social/@alshafei)_ + +It's important not to be complacent with the current standards of messaging, where metadata aggregation is still normalized in apps falsely and dangerously marketed as "private". This is a post exploring the fundamental differences between privacy and security. + +--- + Apr 4. 2024 [Why I joined SimpleX Chat](./20240404-why-i-joined-simplex-chat-esraa-al-shafei.md) _By [Esra'a al Shafei](https://mastodon.social/@alshafei)_ diff --git a/blog/images/20240416-metadata.png b/blog/images/20240416-metadata.png new file mode 100644 index 0000000000000000000000000000000000000000..743930bf15b4df60fc4b7c2b33e836431298016e GIT binary patch literal 104162 zcmd42RahKR(=|G{I}8p9?(XjH?ruSXySuwP1PwYk!JR;G2@o8DI|KrOz~6b_@9uo( zzc^RtB2Su3nC`uI)vC2tRmZBS$f6+=A%j35G7VsC6 zi=4hY2!w+D?+?_%X3z@=^!6q%C9dW3!m_w?@M&X`HC^&mh ztpJStw?i%z%xF?B_JMw3j|B-VhbRxh z@8;b0y*pGUOOm2Um7~Ir&G^FxH zew1Xi`EQjISs^MVaS6%EraeAQ`T6;^wP#oTZ|GN&aCt2=VW)oBC&KYPo8LiPf~JJ* z)QhSzA@`vo6(F=&o5^1$lu4+U+x?=dMM6MyL|zPp!eD*bx-lH_O!VC~cW|?R5X0`~ zfCTPg$=JvU1ffwWK=kGTWeM|k zOxP8E84)z}-+p0NOh@#-+&DQs&68CtlS#C&v?TnLDpy{I+3tH?w_CQ-AN*$6@v$k2 zZLyHiqT-BEiGa~KCX4+C+tbp;dI!0XPYTqJ7ULzQQZz4EXXmToXpH=xT$|4$b9Y+` ziV4yonG<+~j>E&lvxS1*z>~Ot?((_$gjBZ!+U^d(2Z0@B6N%usY1qJy@pz12Qqn?w zk@v^v7Q2nc-84a_Rf~i9_$)?d>nSNIT>ZEz;2EOHmr;CEG4(>Y!T7hoSHaifW~_d= z^5smPrt(y20Z+GhbZVf$Epcⅈl!ZT72)8-7LsvUY=Ie;ZQ&HT94u;+%k$5WhWlW zc9XHs`E-rNHpCW|MEwEUeG7>%OIo0Nyir+CXAPZEl3L1BL&=+L4kqP$2 z{^Nzo&ru=^z6kjZA6G$$jGo4js0@X z@>+{65Hat!_$^gQFUeV}6|-4fToA;sEq;DYb^AiHujfRLQ%n+4^>DH7eZJb%D|hju zExf+-+G)K#(%Z$bN`*9ClhLGykFDYYogECngQ|~N>!Wsmy39{RO_kc*xsQPHj%!v< zHz_Fz((8Gab)hp?K65VjkF?6=x;oPDjPL9{!Xwu7Z5^CFN z9ePUCz4)$L=td%!eDNhZTtmMA&N_&?SR~MX-oflbV<&dI$5-=3v#YC1LNQvD`n~`O z!lCTbQE%E$My6HGdRv8DY?#vB?Z4d@NUM}HAjfE#5NQfq2oDa4%z-mJN32})7ps~t z4u1VmHu;Sf5rYw2gsb&^3hVyy#*#RYuWr<=+i9KW5m)eCkBhr|x8FU3a2%CJ7BtwA z&}nM^n?A))mGHZDHCR_k+`FZZ5fG%_9otUq*a>=_Hw`t|Pc z#cqp9uit%JdC=cKgAWtwv|xSMeh1(nTwpu->R1vJ6WfZTAq7<`h4$a;a(xF&-jJ;M zf?oK@67Pc+58j72rc79c!=qW$%coLEzr4KE-B;Wct~8p?=5eF^nS}&T=W*`}{5n}g z=m7GF`$W2h9L1Y}%?#AT=duGD79r+QB1jnK*vf=dJI_bHM{IecsLHU ze^{&pGlJR8nhweHR@)p_ULW_99Tpe5JkQMhe}2XCh=X9U`0QR?nbsR{yK|UnSNlX@ zA;%h4TN1LH35OREq^DU{c-;P!Uyb(UxcN#cn>6y#JZ}Z;U(^3`i_)z?bAX!+)7jNE zv=aN*zSQ05pRrtXOBWe{PF|mV*(_V0C+}O9FuNWxdhBx&4%!6Zw*BoIkml>mq zb%31%=^l1T++gl(bgrtm%PuSIILYqNA}6Jukc#sI9j;oS~^VH^Bt zS9dPv|8O2Ei%72Jj|k(uhE6H~L08@%OH|Bch>VUT4!qp>vX{%iGO{L2#j*^06M2q3|f<`IF?5M5z{c(^XjB*cJgVC3vOS&5uWEJd=DnfuT zRWwo%3wY3N6#@v&y#{q!lF6v6Q>`Yh^yeB{vibaEvE=9kfC@ZDorq@whbjNxmrh$f zxzfsmD96Hjb;!yLti-7&YH()nzhyGombuAuvU9ncDi;aq3z5X$Ap87r8Rb*A!3T(* zXNWa+xHWqiLh+jQx2&d;M;@miF~#0E=ESI(#OvGJ+vMobn{1W_&3xv{1$8K}n@g*! zdVFv`uD3rY=rt?NM6;gU{?%w_0I>1eYjx_wHb0e>nG@sV+b$Gy-Jrh5-E-9&$9V27 z2pp^{NC}K8?5wJ?O?X!wQOZ^v^yjmWTvD%y&vl8@81{G#1~HG4kuS&W#)@gM6S~;B zomv!m@XJlhtVoNpx=S@s1XS1;69_qXPR)tUH6%tv9{EN798;#Js=)_e)9^?xxzh|x zlI#}3dgEp_?#GGU@`sH28GKI|Dz8=bCo0^ROM z=#gFNa#v6g$P6Ke6{0P5P_A$bpGeGL8NeA1>&68oH!GIy{eK+~CS4sJjrXo2V%3%~ zc|jBNIDVakzmL7JU+ck%*}%lc)~Hk>WG83iRRT)rvb|@X{vQaD)@Lof;_w=sdi!RK zfNucir67({Mtx}L4fVMHb)xyWo6-=6$N0V5+gZm+V%R*_7hPs zrlqAtcsjzD^Vc-*cFZPhA~Ek)lcg*G`K!X9#wO`9gF+A^P6Y2C0K&#Bpj8U^2E(Y= z>dZFyxwvqPRw|>RjSmaz`&4Ln1JUg z2uy$qpH7n!xk85<=XNm3K8^&+YU^~4XV<&-SkI}*F&VSaCx&<;i2uer6RR#$DH1}u zI==V&o@p)EqRA->y9yQkaNXS5*_pv&oEI5191raI51iAaD$`mWW}&|f+BG}b7CQ*f zj$&eBvDnljuT=o2q0dxcij|fKYm8#RI#M6{FjV#W`s}<)c%;574vEF`RvyJi(=^G= zURznw6=Ea8!h#wNx#DnTF>nyS&QS~MQS*r=5%56V`gMEj=I%bMXz*EsI(|TwVqmfp z!QpDF_px)xYo)<>?<2YY4tvN6fF_SU=5+%AGhQHB84lp7P{qS2wZr4VHwg9nYP)!MhOX!tfEhjMhm)#eiD`7%yWhW~4Pc(#=Pp`!GV`P; ztSQWzz)hz8K}M%;=ympC?V7dAL(ihGkCgF!Vff4jt&rV8Xz@mQAz0t5E#Y(p$@5eW z^)4c_4RTK1-4vrPf%HA$^)`p`KRyoM>q3zUC0SF%4cqK9ZFF5v%&=Cl)X+cpfKH6*Mo&trdS3VEt`j4S92?U|as3ZvfhhYDHFe~5f1`u6(kwSjI z>>fLXHE9TqcYiGmMWVD^KO~F3<`g2%C=O7|uvHgJYyzBWIvlP8S8)j~4ZE!#e#1X(0s=&vhd!-9+_ltj4u`-o7`8h`2^Oj` z_;^T4NX&Idd5&~!2ccZSSc>1ElZ#9hxmRDZ2W-9i1Ov!sGGK8dGuKPVZI7E@PvO;3 zXV{T6jXwO2_}E(i>~*&a1krl58nxiEFM^2U;k8#5scn> zo@0UBVBhg^b4NCUceYq`7MsGy$EPRg?~m6<qw-J5J zFQ=&f5C)yPoGr3>?KP*t)kemYHIb5EI`CDb4Ju1@o@%nvGp%KftHT8}Cu<95Qdc5SP?;w=fz{9Cr znzGynqu^tVmR*}p3q2mxO&BXHB=u54Y{8$$=2SqYtqzD<(iD)}I&s4k2!>0>IjYnp zGN5*-l|o(zKWkQXcIa}N-J^T-<08W~;}gerh@!#5)Nxo(mVX=k7KhvxqQww-iG`ap z%@vA|L#t9C?Ee6)-v$xe_KBGHBS}xc@10H37_xl%6g*Sj^w_up!Q=|@Z0MYW7Il48qvt;=vx2rvmi7$h~$r(bUfHv z(m6*EGm@~J4ZGH5cj#L-D}Hfh+oCPK4=C1gDREDLq!A*$@=j-kk3ZGgwlnxmq=6JR zcr*mFfHQ*d`htANG9ap1|gWe+!D(`|($wdlU z$a>ANAdZcLk=z9N8F%MvoHLgj`B%_-ju9w#$(*WN0Lkt%!aT&stj|@fa`X0y1S9j9(g^ z3OXya;*g3FKW^8Zlp4TB7|q9sZsDg7e171T-$`nM9@V5SdR%O=odrOv0Z6*`@nrIj z7G!_ffuY6_O*0k8^waKvb!=NG8$6G}Ft{(js03+J<=V+7Vqy^MtUz!({jaaDOqS#V zay#Z$EDZo!B$A6338%rpqe9q=XDG~e7oCps_*qSQAX!Q87lrls67Kuo{wBXqa@yq% z{h`E?Z3v71Qw5MT{_Ub~FPygS5};oZYhmO7B2nC5JW#m};>WjA}nC}O{3m@*K(y*>EWZcA?fTlZ_s z%p4DdLGS=KT890w)V|s69liB)Z#4d*(M6t0BQG;eqI3Y>e=3K)F6!p~9?l0_G-OUC znSdRdvJXh580Q}<6qdu`aCo>RPLJ2SluRe_tbHLDQE0?$dK8x8mk%)Dd}G-4P#A=` z@afWm&T}rWCnfL~1Sw$K8U6I@*j)S2{qnueSIzg`%%5s?8(GLSa92DZ&y;f5#Eo)w ztJO+1YJ`M^m07qc>&Fs_Tb78upuq)g!jch=2z-63<4EOt0L^2FKePtmj^?mx0e*M#5&RLXdVwjc0yzh)?YYRDp$ zQo{9i0lXwO8!M6)t;+%m3JMbV?(6zG@i6{%Pf0Peh$~QF=rgemQwU%>T$xQa-qX?1 zv1yl3>gTs5uwTOs_)#{Av z=AAS_y+ldrY5n9%=_YP4kdDU;Do7aU=xK#AjUs&jvmU>(TMfT zL{27dB%QDURFCrZP-JRKD~#$bL; z;3TGyV((65JU^KcWJd>$u*R=Xy^U^xS1KVT(vz4LJe2q>UyTBP(#+MU*iijHOq z_s`?GaACkC<$&sKH0?h;PZGe#d2a|sRwP;N=OP0667+O{pXK7YP%iJ%%vX{7Pqc4F zsxE#_rEHQQ;Iu)_&VvILao-6*rF#vT9?cdzW0>hHaUsVHBxN0H@So&aKd_K7d1T(7 zui+rahCq9M_?E?78s$h|4J>MoIid^K#F7-9`wr0Hj#Lg`r3N_o4e}m`5K*;&lfJoc z+78zS#P%1XqC*M_zVedA6CgfDed1u~l@3?qw!_@v?AA!2>y(a}ETZrNR+(%Fu^L;K zzqs4>C<_Y-mEhYoi@ei8b}`&<)f2J-Dz+nj**`Eh1so|Ie=?!?kVw<$*{Hv{8~QS_ zfLe)FhG)@lrlOs^D56V~DWlh_#uP~`4!Dig_}mIsRiH>+U<`0$N6zZgLQ<1*9~ zgo+P@`$ig~c;KRsfYIyB?#sHY=@e`t^?oGI4qU2M-{aE-8O7g2_{}x}+pZuj53NeCcA=?l z!M;t;@#P(l9m-zD~q@% za-G$#)iEb{=U8fLQDlefz25pE-N$K$*Lh1X9%_6YKO{jpB~{p9fvzu!tQf>bHYIn(+6|CQl&~R6VYNbZIS-zB#9!mncu7lZ?FH)Y3*+eJue$K zSt&I-To4z59TXnrJ7}?RdF^57UDpgu#v>rMkW@K`$(XV#q1ySHK!b?kM*1`wN-UGj zoQ|syD1<}oEik&i2*6gXCeoNb>+KFjHX41gcy8V=28AzVPLRg;0?ehoi?iTlrckin z8h1#{zjJZ5!iLoIlpnwa5wlp@y{7!zsa(#6h6W~6#FrJTEOL_CkK=@tneVOuw>b8?Ci z)~X2>*B3zn-6C5=NHU%$qS>D0Gj7pIej3Ku%!yS^sWt*xzdN>V|u z*21bdC@zoic~VgE>3Rq2mH{7T!fJGd^)_Hc;J6ZicbJ&-CI1uPdm~6=;JN$IZsiTQ z-3a)}kf`DF*}wUPyuKWLS;6M*P%I zpqX4hsq18G*J#Bue{@!{gc$b)@Y|4%Ks^V)K1G+s$YIm_gT4dI=KQn!r%#_;+(Z!5 zoouAZk%+GV4rq38a(Q`qbd-I#iu0hg-tH7nYOwmfMq803+wxG=VXc0yB}w}i(Bfb& zO7+cyhu52Oh%~mKUItj=4+StmC4K>i5Y_WX8_4t%1T9* zNOl}9P6s_9?%?+nOwZ>|ecu~+4$@*8|F~E z83Cf#fsh>;Qq?SIO=UR@Q8^!4d#6J@PGl)?_|bSiZ6JF>PA5jK=)JYB!J#xZD4Dk6ZX z$4`be5(D+c{ikH$R}OrG+S3~iK+2>ue?ucD=eEyy>a0RCQ!W-M45bW6y%5s#2@`WW z4~q|7|4{{bpTq5t#b^0ishscFEdg}XKKMfbkR2bZ*@fGf2B-|5->+kUn}vr5I$onM zRVd=KaQ8zd{>JfAETJ%|xcq~xTsdYDpE>?v0{5kV0{`WmKlJXtnCB{?r>iT_Uo6|{Vw>!P;Oy*N{j{sh~iF_5C{Sf=HU%%+8k@@rI369UQCak{d4MeJmtEC76`$5Jubr)71im-|5QA_U zRr5&Db>64Oo+k@%q~BZ+hLw?$aSZpOKHTh$<_s*V*kG5b<~b0#T&4Jr1t5wVBUp7C z1J3x*iFBYd0^Qzn!xh($UL^B~sB_S&f*zZp&%FRBnVf!F<$)ntRvw-#?nE&OOCJ6H?{&jAZ` zwXsFLeiwhbP%u03Z{X|GQ9(s{)VqQ|w(NpJVeeX@9hab^vDjC`E1bqsm}nwC|h=+*Fz$y9k=_0qdKw~wCw?7jETAXA__z~JLig6 zl|0B$rCNMw=Me^Cw3G;DotbA#jgF44syf0DeR0_tfFgn3*TC29h+^F*$_2_zsB$~sns?l|QOqvReE3Elo@ACV-zVI8mTE9Hrv>O85uZOGcSt3Wl@C~S; zksv?RK`#AyI4J0CeAW-V9>;2e>&CEU*Visa7AQ%afM*4!{aEH>J6jalN-35)+H-|4$*jF=}#krd0m=od;)^w%gdPt z(AWyL8J1bEW+FUk9UwuwT60rXx*Fe}-9yPKPH|nnmuScw*VOkhq{!NAB zVPg*o>4E77Unl{IY3924q4LAP?|Z+$S$S)nug;9sQP3)Db`M zVy%F#rI7%o|G82j+vDVWuSWD;q;Og1?$7z>*Gog=^})_ei$sm`ZHA&UuV9kBKX zK5X^+>uxB;)Qa%YuOd7+0!=ABy`02crNdXwg65UanzSzsU)+y=lxPdF+9j8CU`W0e%)8!q1&n4e`VW_z-A0(W^0mvSnsDS1^**+D@8KT8 zE^-^lDj)aX5tGrR??SJxc||`MBijg?!^VOb_gM;HIp-nxu~L3-%UFjB1V95u25}dc zlX#jeX=ebP({@HGSP5tkeQDj><5%~B3DBfTpI}CMg*7~!pLMx^d^P+?teLvNgzA=g z5rUb{J+go|pK5X`uUpQaMGJ#(L{dl5CtOWR^=~kyoP_m;1CSZtfmSWIzWSCyII_P= z9@ht8#e;)`53P+;iB@TE6M32u^-2X>nVV~}BX{Qe|zv31?QvU-uV895ol?~wiJ+qjSeu48>?0=?W4$RoA zo1=?I(pAn2swDnr#^wYDo08#qzgzzQ(|k-Fy>V{JRz6>zuH&gh$UC18P2Yu%LwUeH}CO)DPVBF;2Fc3Ydowa#%IaLViDnUq2 z21lYogF3y|ZD(sJJ%bR-a{2sjbIw;s3&MAtuOpdmmOW4nquni7=Ksclfa4Hhs>aSz zlVAFf0n#+PmLS82iwHHs#>dNoR#M+39LPH#);rjq zH{B^5zX=GLe}hnN1d943&*3YvNHT>oqyE)CMJb5y@E%yTN2GH0)sx^W6H4E|K?}QM zzczohpgw8Ok?R~0NHl0%Tz!>}Y5niKQpTqKqy?oD*O(+{qxwW-lqvMwfXrXF3VenZ zwlm`>B2CG`p^$~2uIjg|bV2c8MyRn!Qz?>L=^W|*%u&rKN>b zB;1%q`Sj|%PgI|@$ZRHf|5GR-vLIg)4@;Y8wo+nZ)Q{LkH@zU9NhxK zh&E5ybm9#>cV)7|`r~Fq&M(}!p&OC7l1b~-`}1+-r_!<~d@+M_GM{fhU#P~*N2HP@ zI{&j>ComrRy`$Q(NH_4p-^K`OC*NgOsy{A8^XJgDdFoyVu@)MP>J!ORZT%-8%QxV) zX^bjX?70}=T=2e4J&}(Yr5{w%`R{tg&3(|~38R zd|H9F8O`6=!fpBQk-ib?>Te+YsPPFmDboO{&_A7Pvfp;nwTEmPzB0J!r&`C8UKQ^zZ#^hw+h6D({oZV$s6&Hu3J+>;$q^MXzLqt@@(T1 zsTj)H;d^IfGTz_(cONRko0PWLCp4|m@)4`Py6JBrczi_4sc3t&Q%e;8PhfuNuDhP5 z689r5E=SHTVV~8MW|Dq@N~A)*@c9@w9d0`0mkRVAgRv(_6wQZ9@+eEb6K-4SgotCRS6e2d*u z+pvkP9rcA8yx7jA)?=vhu9$ykb|6vBvG$&wUA$K3Rv(Yb{P2u=J;t0CxXoiZTXEKa z;fuy1v<X@T3X&0g{6y1__PG3Z&~7~(K8AEFtD8Ai&mM=YEX*&T7R>$ zf&vFoB40~r5H~cFM#H_<+VLy2?&nO7DGgG5X~N}+udl>YLw#t5kvM*Wb}t+;NHRnM zQ{tIU78ak_JwsinnExyTBb8siJB(7lJ)>_o#_`%|xz!s?80ko9Sy`>w|6;>y*O;v&P`Nf}vLXo$4K)qC*9KbRv{N{r6oJs66jrm|YvVZfG)PpSPPUwH<0DMz1lIVh zDw-iJTaCvNf59bf_xI@DNkSs*@eeRubr($@M5o(e1k9aHX3*aOzOt0K$CrN(0$rm= zBbgM>dz`UA&_~WRc%MnBWCN{{E+dom_cNmoc8$&?ngm#26`6JE2ELd7L#pao?^7)( zKj$0rygfiLfI)~^%C8d>NbURM$+Wa!C@{UPd**~GnqQ%Kqq08E^@X_D9s@^nK{vXp z(diIUju2dttIxu&FYjkUIepy&Xl80ED#&lZP+0(Gk!rMS!N53P%;ex8)EtBJR?jt2 zJGEj~xoHI87`1#sHW@$jlnEEvD$%@VsbzDGg8RTFjz_5f(a1``dPLNSJ~5W}m|lpH zvBn78i*7V(q%%K14-hLmfLs=7K^YuiAraOB-tsR=OtVzCG0Bg8G$rg?AY(mWBQ8}f z`V%qwkA(^6!xAhbbyQfoSeDiby5MN&(QH>hA^`sE-LJZcciJUlLA1280me(4_0o&* z2*H1w;%t2bs(_g+4|YJ$@=ut;sRo42=XBBR81mP~)PDUcG9`rp(Vp0kFd7{DNmcv# z3h~Q%qvvRortM6@2{0~~&0>73r(vy{Eb0G!<4&NU8c|6@xK6W$0qWm&BDmnyVwSR2 zXfrM&>m%z*M{AA<5E8ESXNJtJ#HB|NdI-eN=Z@$-pyI|zt^jkBz{KbpK#bE%#a4Cd z)VwCbSiK#M+FhqD-tuMnFD#`;3S(?_m(+jTFIP*1NCVMC7=~a{r9NRnMKh@VFB`40 zWKf6E{G8I*`Z6;Z-XSO)r&P{4SaT6sa{ymFjtpk9+pBYPbNh3d|6v@%NlX5cXzwLm z8zVhKd{T~l;?7~7wReAOBf-ZjGYS#dk+rRGYOQ$G`hQ#Tl_Rf*OQJr-Eel#e)aobp zk&zibm5@*m;8?J*uvj$Q)*av6_r#hi6MNn^G8;+6@QkrO+$SDqo2aukgpc;@%_Fyq z8F#RdGwJux33MSsfEZqLQcCewqopATt^L`Q)^P-bt(%&fx;Cm;3C3$!tlp-m!N_b~ zeY!n^R5mz6;vL7pDv{Op23W1HIDf-GF$xA zv`UBj7ElSP%@|s{!Tf`Qq_bt(Mj3pp)$&Pd92^|Y9u=Mg0#aD`Xr3sJXnyqs)grKC z*w3{iQ0IVwT*z)IgC|Y{6Q+o-a`{ zqHnkS_z03aqVR<}WQ^(xmL->*xdd`{(m)>aBPnW<7z8Nb1NG{C;=BX*p65F^{emn$ zak@{LkE*o5fdf(s2vOxud$azAm6^-?zH8z+>?9auK5N1nsmt24D89FC??zWQkCBW^ z*#F#az&g^IhK7n@AI;354O>!k)Ey@F-}yAp)MqLfnBT5eOPQB5d86XzNoMl>?vg3H zd3X>36dWKhG}FT3=4vF@E4>@YI3~&LEMEqI1yO3P$uM#Orymw2_lDBkY$aJEDHWGl)tCNUyE#?wf;NrhF5*GMjQ z6!f%eM5zG@3>~0%^ELcm4&9PvUX!boY3$sZbD_)0JOmw!4~~1hIk2aenl+`d`Tb#% zwz~<{zq#?d`@uxq)uuNmponJAMsPhEiGmL}Ua7p!Ch64Bxs^(f=i^sLFRgBUG(ULd z31L?wknpDvV0XFChq2jL30QDpvRYa+`vRU`U+z?8f&fLKQTg1^3FIj|*0I8Q+owqY z!Gt>-smvQGBuzgJo>`S8DRL2bGWZZcwWM@>t-rr=DWyUsP^?n_u&fZSa`)YXqy_)Y zd^zu3Or})XJTPTb4Rm>d-aOZhZbbsTfPmMb`V!FwnUh*=j z^qir-%aRAeQd9lL1Hd;O0rqBkWCXTN1I&oTJz*!!Oirku4$F(2XDx!LR2_ z?k)mRAJHFin#fzJ(c2B0@upu07g;jsjfZBRStSelN3bn(LI0wXDQZ0(fJQ=c%%2hR zVeq}^HB^Uf6s;7L{>5O@8yb3(ZvPc8N7B;!X#_VHI<*oIPnN}UoxbJNacVI6^VyEG zKRW3n+Qq7AFvt_ihS0MnLW|Q5mtY7EG|r?evUykzXUl+3LmYS3HD%3|j*3EaNnWq> z40OVZ1w8-FXMjt6&9+%qW-sphAluI`&LGu4ozDyt#^$91XM9_GH$b5g%JDALp@cUL={M#~-SKAbi(h~*BbUtfN{IcI#noC6vMiWASH_dyl{x$-I!A-2?VkVH7SK;aN z`zh)iQKl>vu09+P%Guf39Ub0)n*&TBO#~6y($d0O7|TqKd}(vlI8J{$w54xubcdp(vv!T13fEsYQI7Azjl=d6 z#s$W5|0%`+t=LDV1F_R{9s6J6DAp#vHisfG&X+vx|NguB!#9KReiR~df41zxs==46 z4CTqsf0Ns(3`zKGm_5T7{5W%U$=q0r?`+gf@@pV_AG#}K`j;pih>9}W&(dGSd8Xm_%>vx2cZ}LK@NN_F16-6A- zsWS`yP4O|4@rHV^`;+Vn&mX>EGY%XKoiHJ@#UG7G{|fijY3H7XE(R{i4cKyf+BRz7QLb66^A7rE?He;7FWQCgUvwNh&sIC$I(k-aCW3x>IC<5 zFKvrsfR!!>$@8Gj?oWqYJULgwf&=%lJ2vfH^P+yF1upb>F2B1C&@33$U5)VA+(6d8 zVG?!IBR6dvMv4>jToN{-NU^Tvh^Bg3=OcQSmnbQ5!IP9+4$^S!W za(4#9PTv6}chZ6`^gW@z7mAzigoV9UV^aNQ6gfWiSD2x2)>QoM}F%`kX8laSBU zzaiX_57-9NZK6}p_J67^q~mcJb;_%|4JWXr>%TNJA@@=i6=hZ`7YcoxI!4+bi*Y>P zT;H0IVa~=a9x@pMi(#H7lJJJAa~)u^D;84S+T=zI9 zPi`PH>wMU~A*|zQXr1mxcqcHTSv)^<#TcFavznp)?0TqvZ^(&8a9r!bvPA@M7;Md` zB%!0DLvVtOm z>tZ<-1XPb-4IXd{pEH}%)Dk-0QBr=>38}~$|6ZdHlh*}IfNpmMVCG9^{YJ#U85O7g zF2+C^$ah}`)Trwn#@*S52$5dcE7M2YqZfTk{2*?!c6Zx^C$ISoooQlzetrQ#LH>A| zy1Ii_F4wUHLhjo$>AR!pT;bqLU6jM=(2LjJ?t7xq{-x3IY!foZ(3TVwSRAJ;QHp%A zoDYs!JJTFUp{khjM)5O;@?lfJwkKu?h!s&AdKJ( z4fozg{eE%|IH-?(Nc8c-Q?Ow71fRp$&Ddc5bFWhug!y7h3-?A!e|Az(ev1mx?goqY zEkc4WV0}R<&&~7jC}>p0^TY-p?Ggrmns-!`cC@nh6&$L^eI|GPQ+0iKH_-AP%GOl0 ztJ7*Qo3koFz0D1d-7D8`uzLSDz%oa;oBajl`lpzGM<@cgYub9|K&!z z@BXYIkF#03=bg-IpU(rINiCNhZY;crwXTwVWy5b%)+Pd^&T|4QFy4bgS&D@7ug9Bx z;0=ql4(IJz(Kn-ZM|}qe=&%~?`cALWm#W{Y+x<7$0FzR1!)IY-v7mhAUr^LFyH0n_ z8+W%!h;q&qb*Pg;T(^*o_wkBc6z1=Fvt=4Pp)_Q74S%$O_&CQX4uLkyjOc}CfMA4Y zj-0nE|DFzTFnHZqN?x3V8{`j4AE$#QWwO?V^vIVvDrs2!WI3I!cOi2@Kz71lzBr_M z9 zZYVTpFc1+ut-v?piVV@oX=fOgvd*$BoMi>3ZMQuymKcN{;}{mAzYOlc1y~MTSaLgP z%@m9FhldZRJ(<#c)_5^I;V5Bz+!T(S`1h_tlS)+?Q`x`iyDtg}I`)xDawB3M(lS|` zLV87b!jFTMkah6Ut}U`#(>Z90iZy5Pj7Tg;Ms5byFofBP_3>(Le|?s09p3BD*DS^= zZw%s%GCTKA z8sYR}QN+NuYD%AI6CKHV-|O!Fwq;t%#%##Ns$E0X^|_$1aMVZ}a1H|VX{PgeLhiI> z{!rD1?c@=Zzcxb*UB1*&>-*pnjgiaYc&Z{+biMy%C4!0)6u-P32nXlx>FMh7)$o(g zJZ%u|!EVRm{RO0jVowF2ixrA^(UNUW>se)IY!Rjz%I?it(sD!faho?fzso4 zSii=Zwd$xahw*NAS`tl$m2Jh_ps-{KOpX6lP zyz{NAtu|1rL%?xVr%Gq}&%M1~c)bi7vB%Z-Hp}RTLIE#K!y^?^b3qp|QGj=tief|= zBo;5^l-OoDE`7+vtMKqgi=2zbpvtiIjCCJ8oJ9kx^RqY;5-96h;1YR|* z%S4|21h7F~R??l;WKZ@Wmu7-@a4S@QDs(HwGM_TDBR7-413#>cZMk-sJ(qe9l~3ct zkJ?{aVZ&Qp$Ya?EhrDhum$I1i@;DTmtQ8Gtqk-XzIGsKDQF(cJhDfdYjKA?Z^BISL zM~3jz9%%d@57y{bb-jP+afKrikM?yRnqk4YHzr`*RRo!O5V_ zbfiBIBU^c{dvC8DjYj;V-?TXN?=w3w`%6oAN6+8DD}pwKARS6IT?$p>7)>$bxK6r4 z1!ODm3*WW+&R@^7pgM!LxJL*&x-Y3FWi2x9SJO6y(Kx)xz;3(A?O?}+u}6s}?)g4| z9LKVyzgsMw9Qrw^yVXc;YK2rgrHjEe3G;BFhg9M834h_+m=r5(%Vg=pwH7t#qOrfcazq{w1B$JbLhK3b`>316Lpp3q!SMRAd z+?8lQVVF+9mW)Qt<1^prWG@>}B>lTwNBCYftO!9=A#O!s$fQujHDEG3eFW({J4&rj z{Q>g9w+20)v#BO0khTj2;DCVQ=Rdhm2vlR6N_Nr!uFKrQYhi7g76!F*BN-i2(eNxw z0nZ1%4BxLIA4zDRZCPN@KnNmh%H-mM;zALMnl8%*^0TT~=x88ldRi_LFS61pO_9q%7Fd^Kho zf2gE)z5IC9m;1fcNfY0eb|s7jGCHNv(7SlWEP2fqYg5PBTWSQx3FOTgDQ;7YwWX5*Q!MIOoiAsfV?qE`JU`xhFgh|n zoGpH|8IKDuK(f?WYl8K7x*G{()#10JxzB-|pt}BtH`swVTA#gH(;ZTW!K?rHGhFZp zPpv-mO**?=@+k>SM-A!ec5{x~&4k9>&))SaYOpqDCVJ>$%#Qn(CO5wMT4~({hwPQ- zY0-D6H@CaKLBt*+R6BJ)pYDzG`}2ifIU)L*{m1k5^-peG7Ofnv-uyqOzb!Bh6o=G~ zC6e%Y?p*`)J|^&B`UCl0>}}+T`n>+t=Vp=8Sz?u!;*)|~e4sJ+!oSbh0 zeWa9V82ZvefrROW08%7aWWxFLQ=@=w_0RRCs0$oT0vXB8x&7vk<&as}Dl*kvfGQ=O zLFE+V|8r<37>sv=ad2>!6bPRhfVDxHU2J{9%j-&V%BQ~N9BMeS=xP@IV6Sl5kZqDM z-~uN+z*Ke)MRN(Qr~yx18)gDu`1aDWmC&RyS1Mgbi4deCyU9KB#7J=o(v?O+qUT`j zkfU7jm2e)>~!*q))%lE zpr`gDUP>dwNR9P$nX{V|{bSQs0yHt~7eJ3RQ6aRY+kND;#$tGBf+-Pg{ym{|=eR>A z%F%3SWrOh<4N_dl25v~EG(FX)SLKb&A(H`Bq}zdq`uulXzm9)A%q&Y@W9?u}@utS| z*K*vH??`zx1=%J!G5$0FW@@vO&sN56Rr9&R7KI0;UiOx0ixG+}8FzQ`A*xnim*Wn; z@$voibZ7MVIX5QIRs(JJg-`Hey^lj3%PvR|>mRXYvb6y^MQUFyEUDk7{Y=gkoro*% zVPFatK3h!zT*Iv=%an#Eb=ImZCO#~1BwjZqH895)5{J(SuUzP#I;1;uK0o$&c=>*) z&a4s80tJUR*YAZR`KYSSjvicpjO(YiFf4BB%J_;Mp);4P60a~Rs34xqwbS>I34bCV z`x0N^OAiytbVYY~0IenQ8&6cyV%s1oUay1Vpuf#QhZ`x7@?TizE@(3tP}?uZb*wNZ z`V=!!dx?CuVz>9LlMWX>S#~S>l$MC(*H%2s-0JWB5mxxRkUh};tuGM%*V*%0%3vvL zv8#O4YR8diT56zO3*w;AWTv7%-p7?1SZT43Xl}C$ax}`V&K)!LJ49eNW`c*GZX5Z; z>~F@$U4PP+jv!oA zUeY=8|8R5-4wW`tJR93)V>jEb&6`~}YqM?JHaDA_ZP#Xdv+eqx_xlg-b7$tvIX{hH zyHc6(3P1%p*=+HVdtBZ}(doKYrWJzt@1Q{OLCjW{plQNi2ZvJL!{_#p}#ELJH9fVS^cXO$htVrq)go{ zLUpnEK#9dA@(TX{-e$j`p{7qbW4YNH$w z`lVcpA;Bt7%eWDz7AUIX@t|K&pbq@K=G>9Mdr~m0?tI5Tm#uqi zh;3X(hQWKG94C7h1wlf19T3+KUb#EMXd3bBviw*3i|8$W&Rih8_<|qWj zQo#rsS}1gb3;&Kld1}cB3p6RvKk+uYZ;!xrdMHp&8-I;m4eI$kG>%}&5wN(f_q6W8 z&}XpSoi=|CTyj4*Q1`n%1Ry}iqWD2OOAMo&_iuH?4NCz(?t#>^HUg90;r&fOmTi)3 z;@uCEo-6&q>YeE1hp8zg)q@_a4@^(rV1uzi^TigIQi+=C#CeVqD&h=w4(53H>5+r6 z^z#;9eoR}aLe2rT(V2Pz%h4-2>wi#`z(9O2RDmK9K6x|;vUziwHVqG%N=ed?B_^Nr zvC6gP{xSOSC-=kB^*7%fUT?!~Kc8rPU+vEV50{uNA&GK_XBN!yWQ$wL&iHp8)YBCk zP|br8tjoK}4U;}a?eiY&B)%YAlj9Id7I*#Dgre;)=^Wzuo38~(~=1v6w< z4xiOT4+Dc-4D}bvr~Vis0Vq)%bX=(@K*9i__I&deFmSHLDXAv-{c!>IYhdu8&66U% z&r^+Si5aPEYHjr`yWG3kzH0-stJ%FpjzIHt6h8X^-&g?iVu2@RR6UrCV&;Ly-u04~ zU@A~WPDKXj1jIZ~+|ni6pniPuqv_O)DOMhBDRk>@Z?4wmIds1Nny0$PQFZ>Stgjk+ zJefhaO;oXVlQ0wcWYgovl3Kr~D~OIOzXwa^Co>665ap1(*$?TK#^L3Ux$dLe$s~hp zO*W_@VN@)u&T3tmn59`N(iPZ~UK({ZGivG0Tb@cO!VA)Iz%y2NqA+6mQ4&i4LcJ^{ zyR1KQ2Fr7A7$TEkx1EiXMo<=mCD`n)>yR)nq;2jC#$&Hk9&F&dP_7rP1K2nFatU(= z$hdkg`LlQ2L_x~`&S>pln$0}*pGE_%JiYmSdi}h@5oKl!LZFNsLhYF7z(VmUAKwb~J&sx_pa123g=B3*)cu}Iz9KL<}LrM+e_Y%^K z(naAKBOt;I&Ymd7T0#ydxS@!6*vK5CBl&IxYb;r^eMzG+vG?Osom9U2 z(?;Xd$J@GA1z^n(Fr93G?Z{9ia50~6aF`P9@yC+I^{j{62o^$)9t*dF8gE9ral(ii zKPuQL%yAgGT(5y;8YKL7Fw_0<^KXTDQruY}A(_=eN4(HU?rZUvdId|a#>$@`>5g-3 zaKYWAa-6Za%F~2fQ{{KWUD@!au)v_=-r;r4=H<9wzmievIX2P`lv+SNKp$KuV4Yit z^p&yJ$Og>7F8002s3@`En_35eu#f`ZHfF7mOfs@+eeU@>REaxhI+?~{w3-xrd+2hy z%I*8{HZ?VMAiBSMrn25?w?;wS_|YPFI^-PcwTcC@*cl*=d~UhC?rFUi18{gsyKhI-mDvC7q ziwAuT{65w(2%yu}sLi__Gj7<47KqBTZR6g%WL!r9gY71|Gnd-W zV_R(5RyV^`im}wHcB|1r2Y%fL5`bwlR7Nu> zqQUrqI9O9ABdl6%1@(ajOD=pg^sfG?onH0XH~*)7#06CB38K)seuH)(i~*QRD+!n; zLW!uEf085AKb3WVyjTK`zAf)ZLTP`a{I}=Z%n4lo2qVz+gL24Y2G>7j{Umbb5Xig< zw2)5|6Vz^%Hs(l1)6aaHYPT2wx4*OCu9o{5B_{5dOn8K#AdY{YS&G#6mU3)NXCRi^ zzBF}aY_jk3k_TQkh`4K%7BPp%F+cUQ9cKMb|<$A5j%*z6ztBo#-r!e@oXLLOn zl}J8W+*ZUg?W23`GM4(QLC_1!kykuf@bB_7V0!T=mvIU4K1&mJ%bw%Q5VWMb)!zWp zB!CJ@+uo2AEnlWW(^Ce-)x41(0f|Vm8Ekb~t~53J`P+9qs6B@gk>)lL&Xnw3=@N?H$<-a}-D$8GKY1DC z6ECmZ2bvhONee&R>4TH>xqHu)7XCgN}T z*bUbacL(cO9D0Iz%^ey!9g03tyP|^RQ(S3y+wnfl;4HJ%b=+)e(Iekc#@{xaZiT6> zM4k80;qH8$9o6%vW93uqA*k)>?EH_X+k}{XHh&gxcdR0wx|@T^ z)02~OWhwRuu8DB5|L`&>RBsuJ(Y z*n6Xo1h!#V^nGwu+Eh~sD(&U_`@KluF7f@Wt5b_k$~nyQ(c#`eck5Q0r1`sa0>B-L zuZ1FOCMdS1^H7@>GrLAely-J@ASO?O5>yz331cEU{O&w}VkDi~nu?SM_}BZc=Ws=g zw&Ex<4g3Q{fVF~y!{M-6&JzlRK_P(Cva}rkH+ia0B%xaFHe+}Z%rAv~xlyMv{UGb< zY_?e8J%`rGd!;c$c?Dm35QWQhd)}d}5${K{##0B%2}3ZJMwsqU-V*2xB!r|al z6po5Sw7}(Z9q)@2EuvpHhxG)b>`bW-eGjzx(WLfvui=Ln*EgobVCX?ff&p&A|LS!8 z;2r-qWn>o>I*^n1Q|R_!5)e+U2f?GmAmQk*VJ9={b&&<@Ahu%#Wt8ScD(|%|v^75$ zI!1=*XnL;~kzeKsOU!owv_v6%8FwjI6_eMANFJ3ZljYR1|5d(Ws}d+#y+V`y$v%#Z zAtIm-n6oxF0DZ=g^!sPClQ_Uy+P`lz=RP8OdT5|q8zA#)BR!qfS^p5EKx|-=gCLqk zd1+{u{`0Vxg=vTG{*xn%3+?sC0pZ}eHV|S{y z(bqAR(S3(yUBLDX@M4JA3{b#m44Cf#GQw9tXwjdh#!?7-7y>#^U3Gb(Xp-_i#B0^$ zqQ#$8{9#bi3y}ip0Gk6Q;;Vx~udnI*X(3wC@0ac0V{FF#r9NQUd$6w96sWhc-npCn zJE>6!zG8B8z_sP7oe<0l<*D~HDVdfsO>&$Vdpgw76<-R6L0KGNt1kAEB~ag(7uoP! z@48$RbUsn02k5Y@urVbrEL3ago;ou^p|bo7!1cjNtv71#thao1pLk$lLjmAXO2n3$ z%qwVSq8%s}3_4uT13P+A!qtv4nBczmtuAl^s`)Lveo1_9E-?@K%%AxTi)Ao6mT$8PQBYK*5!S^I=b57urbuY3@4-pR9i|O#Z#~Pw63JD|TSkUp;*6zg{ z->>f*_oqHGY^BuqRJh=a?KlKihpLE7Tbz&-6A*JPiW`EDRnn5MBy11$wQDz5yk)$Z z^e~s(V6g}J+~{1BM)=Y%Bn#&GUNu<<4Xj)|Sbo@DOP>Sl(&ODZs|8wGTtKkjV3V!x zM}ITx$~Edo8;=l?U+c&Y9GDhBdd0y;jva#2zRCUUS$S?41{bUIZy-4D4Y;u^@Ydt+ zPyps97wUsa0(4vlRXmSd9kS{(a5_Oj!T&COC%DUGAPwXGcy5?OuufZnt^T*^Yq8aJ766M$ApX8c@<^g<&d0Pe zA~$HkG8i{OW+ki*;!|3ZWjRTYdfaGpQlM`gH@);4mFPt!d@8F&@YH2(+uh>!wDQd7 zW156UC!ekX#|IEn7_UN$eS}{BLt!GFQnjLhC%;?M*!=|Ep>d*09cEhqNNM+ZMw#P< zM~Cc`Ra-Kk3w|ct-u6>ip+UvcdI^zT_+?^Li26Z;*nUs9EpwisYDbqWPfq`)WG9p` zJ2vrg;nxU^wf`aTp23b_sx+!VOdPWrk8e2vRQfzH_@z{86nWiC5#5)2#^C-np6IF8 zN2EY`Ho2)4>kII99KJS5aE+Ke{x*JQ_UOY-i6bHunO>l6-&R`gK!##T^>=2}r@* zujCP?@vw-U0$JB9Io5()SXBB%`UuH|i3NKXRa^LtvBO?7TN@jbUbzs^H;5=D_VB_z zY8kyt0qO@X%X8yXQ*v-F5~$Vk3NY?^%dv_NdC+>%@@o81aIHgcNfchY)uB?6SVWF7~4UKxxOk;9Tn1v#T+Y0l%m|h3Bld0g8v%6Cqat zw$R~fqq$PI?qtZlCHqsUNn|lH(Z*}&9A8t4rwrM|1)rl6?FW{^vB4~(6I74nu@ZWn z37Y6g@BQ;Q5_yzll)4Qfb(*9C6r58` zq?Dk@NI%%~L~&m2nKkG=GLzlGH9 z&rknqyKEr=6WZ0sl|WW+PnRF_N6TFru{PGvSt!?}U^4F>&I3YhDyJ#Lj9P5a>X)NV zs8|H(%K-NSH}MPA$UtBLpnSUZcnXw)9Vk+(tugY$P=Xm~NYQbKO}%d*!vhtZY+ z-px++fgmZVHP@b!_8iaon_h<03#fi z^&2F|?E>%sAo?|O07A_V`~GyX$4uq6PB?O2wOvisECJVaS%ltdC|Am1>C0hFcpIf= zTKaH2oB-oeAZ^LxAM+KQw9A@zLHp4f?CI>V-*+}P!89sVmbwW;$fr+R@2~;^pM)GO zp;?bi#>KFahp6}cnByipzXga_$J2N!W>#mw5)xEVLlFf^Ao@ru8ye>FTha4%Jt#7o2tRX@CsHId@)~ua3av;DN76p6O06)$D#WZMocv?fVa%AYNJ%}QY?d1|K(ekrz~)14Z{EY zmZP&U@N{f+NxazJe58IRQPM z!r4e%g-|AO0)Z5 zmoapTU?rA>f|5ziw>Mmspdr4urq!&M?9-4mjE!E?!=QvTQ;EME$QSq4a|El0a2OYBfpX|2y;qtg6Ms zAH~|>r5`XjRhW$Thx4%@K4la4+9$>F<=4Z{O@FU&`k#B^&Rcw4-=_!+KB%dfAW{NF zHUXst9DG~Qi1((Y8|;r-$It^lnuUrw*H?r*)zRBiyMPR{t;A4H$fLYhi<1EZJEgvL zNs^{e941(?rxpW3E*}%){yz8|0G?Qn#Gv>OOd5I010s-?y_3~jWOvN%?H#iCDi7D| zAgM=%V?a=N*&v*`opRR z7$e9d0FxB1$f8E(BSvLt_1xR_2e|%P6)oXa`mQ!2o;==K^&qD2p`<%@LR^#Imh(>$ zsVFs<>sxG7%1MiJqta9vG!Tax-UP7UAMmDMQxo2r*aI{c&0Ae5diXn%iZ39 zM0QEcgWa>cZt^)mcSrS9M2F-G^Zcd*1kC;$+}D%uCsyoGar`yXXehQ3bf)&a?FA?o zeb!!z{Lix)H^bTa2E)Y&65mBOuw{PQ8`j}{)`-CR*O~nvb?`VwU?vyB zxp#D?PdgAcnCMn5a&WI3KGKm2K$8~q5yVFA0^pdP>6-JcMvDa?CtV&-Ak{xOo(l{` zKx4k{v%!@}UvXU)C-yET-!I>fB&^df9|Ke94B;mlR1tMR@Mh6B{qRxKd`Y(Aw6y&2 znE@=%BFW21@ykxm%ghb##ak*o|AC+l)Ad8H#|M|k3m4zlskg0Xh#!X^xh1EOD-sVo z+gypV6{GPX5WbkTasTkf_lR^qZ6Z3@tTKx;92EQ-=AqzEE^MCb#iAC^%84A^wYe9i zS2XbV{4=P?HH3H=Yx{@|$ThRi{#ephBvV!NrX{xu92b82^+_4}o+=6Q*Q1`c0VWWi z=Z|kBwY~U;;8iY*MMMbBd;hk3TuZ*$mSOpi@VyTv8H&=8oy0UuG%G26hEsT zQvFtj%%*y44g)2AA0}mXjKV8wwudaJsH!}IrZ=1sf?U+guUH%l8k%h(?&hv!$=k=o zH?nthbg*~uabZ49R*^i6 zvKL6yq&)JwTNvWaZqlXc`+1F7l6!Z*eP&KgXW5txbp3obiHRetG8Em*jSMU@$W~rm zcHiDNi?<2n%y8P0+nk;TlQviKM~z&q3kL$aqJiVS;q&?S`Z|aAUC|QAUzM`o+*r*w z`$f%x4e3??`|kRyv$0BvzR%f+fZtb{(w&DdAL+=);xDvYLcPMz2ny6U2e>}79zF+m z)ROUs6}o&@be?Z)=WPKUNJU1})MJGF{}M5tEoBYZ3YhunA9nMh9k2AI!XkS;UaY2N zD!b_z1W(mUw{%qo^}phOd)Y`u1AKeltId7VJmrbT6wK!|1H<9Hq#m9nQU1~5o!VCB z1&VmJFwh{GcV%OfmdxlSxkLri@#|lyFg6TR_nPGbyy^Y$=4hw<*mdhxNawOkiY2f2 zmP<~}oT=D{b0Hw7w>4h=f*CV2yKOsK(86;(d$8h7BIWPjF{hbG<3>IV#mi-FG7#J2!cu#q^u2#Meja6q}e4~h;b_j@0ZO+fMe^R#h z_iV{vmxB z)2xR4a5~ejih>Mc(?>?AC0n=daJ50Puh%a79TkXRz@l9QFVB;(aKUEOx#WYa26Mp? zVshH}k23mj=RmWHTac5!x~sT8f}uZuPw+2INxL;DdtEWdyh?`aA)XjE{&Mf4=C6hR zP~Yd6WSel~kSFI*{@>r}R>^ZJM7fy0qqEwmp7&m#`~JJ@?e5e|e!?U<#qaQ?Nx9CJ zMKL@II~d&N>5}OBB0<4WKK!@LG(3UowP6hW#`fw{zEi`)i0#y5bQqqOrUZXOEkmN| z##&ijo4)SbOiPuf(SXB77vii)4=t}kS=!`(W)2q<^N0zG}R`30d~+aV2t zj}P#BgEe}*^rQkVU_-)tA;Dt}`oX|%0MW7IoPAR$plV|}M8V=#T!V3g%IlYhe%sqI zK#N z>%z4Et-pUj5sx~2%b00N*;Y0ENBiU>w-xT(-X|%)ZkC;MbFuWsXECWijxKMMx2w&= zO6y8%=pkMHe_&ZVg3hUein8<@Bn`AeTq24-g@q2eHs-$=v zPry)7IU8g&bh2mmW@H1=fTD*8DvaTkvJLhqjV!9^#FbPx@%N-#w~7)ChOQ$%q!ZJ~ z$ElED|82zeo%WCMV?FD26RUqgr~CPA<2cp>Hhu~t1VjOhTm59+_i=;U@@Z69j)kSa zCdf{2o{%=ECl%v}xrguwEWAS#xvbVBm~?FX2}wA-<=FJSxDKSf5t}RxZl!e8!7cD1L({%J-9puYeqso`M38=xAOueS`xku4w%O+)6~<8_&wO zuU{{L%s1HGTG2^W=sSYB2vOmnNJ3@-CK2ocbOWq;ia%rJR4fMmH>qcRaLt{f#2m98 z53L?y=`C-RAiMo$OGFxw0I%$~b*n}5vR!I%Nt=Y4PHLTS_6aAkQnjIqRGg|=m84{k zy{ht@n2ceU0&p2N?MhB=n~fh~Am;@qax7rqKv(1!{!mGBFI%%{GXVY;C^{jb4}tws z3C`(lJ3f-+gPSMxTqxwf_vtj;0q`kSG_jtCvgGU2__KWw**~#m!&_iYGii76rHCQh zMYo=>FBWVsbzZR!a2`MTqUls6%k3M*n4^vDldcbVm-JP;NOTv((i~cMs=3eW!N%yO zI@k0FF$KcO&03J7e-WRO+QXfqhroS%+Ff2Rtl$~Ps?up> zesi_f=rWtCs7JkV#7(P9GNl1asrOJWpBX7#oyFx$ue@WdeQg1(#$)webM);05r9zR9`vMjf{8>c8I0wRe zw9ybws_}W<@y+^IjuO6AHwJquImTWt z0XiP?5~Cv2^KueL0P$n0ZGLJssVzTEh==_S$>XO}?ZyOD zWiSmR?^=7io{Ot%|3cyr9bWBA_TN$O(FAgD2rQU*s&&gc*NRQEdK}A;03^i~k;V7F zWQ%dEDVdWL(744GgOm4CZ`fG>vbj~26m8aLdZM>{JDw*#Wd!eZO1?8zlkj3;gYsF% zeIKzXr8@;MEBUn+gFP>8%1bcmcs{BW)$RhW>%A{8bhvV)72-ZW8f{^}AtL|y3S6`m z>SlI8=G@Tlf%D1Y=(eauE44Hdo@>^+B@~$^Wug~ZGFU>W=Qy8W zB(9F{%#W_7HX;O&ZuOgDm35X^W)<|bWM>wn9r8)TVJZbM=$=e)aB%KY$p%_$I*-9! zwE~mzxY&&PZ^SlTD9j?oh82D%qnr1|tYSKMVPPI9=dfSTD#L2wY1%Q@4xcJNJN0s0euQjRmVKU-VzQfMxJ*m|1l z3Och@d-HLDzP(F12*`pklj$4nHK=znFJ)~QAq*s=hii%G*9iP$#Z(AWGs7%u4HfO0 zR@pnpJY0&}(#rJ!DlgG?td>Kt8bt_pH~3>~KOvBYEgp|{t|bbikUFXfF@7)|w{cjz zGWCn!vTtT(46KD-zqvK>c@=hPs+pa0KCXX**=#m{Z|hgUef`G90&a~Xt@AvurE+PC zuZT_Xf;QUcaH~;1S)W59rPwCVoLcfgu^_1nTgsr$$3E+Pirx1w9YHiz9!zWs#WZsNA$Bm~9KOm&W%jWf?K4f5AF zv%7P*%(#E%`%PybsbP$~?b2(u2hgaZJnFCulX3fBOA?fa>WV?8DB#9DnJkOh%@K~2&P-8H9lysJ7 zwB--LBWR=%Gw@I0{uoMP&;AjG#0pem=N&QMXmbWJ^o;lKTUg`N4hM{VHGEpl3~ATM ztkj99Zw^{Ev*ks{rfvIbY4(qH`g{n>V|AYX(g`~J?v$Y@_7PL;^)a!EKVhg1#H8C<$DdOOr~QfR1aRh1+JQPMvc>e!!cb6@Huks%@4 z8CLa{Q&IQ4DuumdjKw^twc!9q$)_QxuC9(Bxe0h>&fsf{E3IWVFRNmUWn@iYdTA{Q zLzCGBTMvZcKRoLdre&t(MzPD6;|;|_LL~L+m%py`c}l8EKNKf^I1LVg{0x~GV^-7& zI%}B5#uwCFBPI%S?8EFJC&6dhFze>QHlHd zt|fA8)bzDZy~soscRaOxH|DHvZB|UBJ38!*1Rf-cOz@YLR$no>l6`;hs->wO3Fp)} z)=H>CgH4~g8vzakm`3Lrtz#0r;`Y=8L+QOu;3qjPZsV3LKn~}#!9ML1S!P<5z2vYP z)|}Ryt5@5VM$&3Or58V5=JkJ6y!|9LX~op=U}rK>1W!}V#Y^&9DC^cWmsZ`k`+~*E ziH*9V^o>b>Ydj{UJ|EjDKQ89c8-uigtUVFOk^9*JjB!Lz!yj1xIjiB_dgYQ)aY4!rKCwAio3L5FHz{|mFO zbSDUw-|CQNbZ5}>Pgvf@0sBRh_*BYWSRZGL7Iz&KAEd&*4WyYd9O4<T@mBMm-tvMSd$OQk=14^+n$V61y=O!IJgfIPRHd-}>c zZ1+S3-z+THS~G=?k4k2tELzH&V)(+Y-7k**2VNJy*Z>uN(R`GBZFY2>~*A^R9`cAjCH zi3;__3Sq>%SxnzWu$u zZHxMAHG~A$7ymn#IndYnPD4WWrge_E*BWVaR3W?%n7P|d zloX*(2>UIZrf4QQ&}#KrEh6)aD1O@6MfDjRaA$0x&?}j*13P!6G}-5UyLA&uXh93N5NIYKcWHxm%17^TaD`mK%`h%yM`L5@jki(Q=bu(%I^y6uKN{s+d1eWkptB13pv*_b?FV`-f)4y2Ua`bKcul51_ zDwTT{!TTDDWdWg@xE>KAX++D`sB`C|erIug3-lN(^&dPj8R8N792Mm+s#+MzI$uyEXEJt1Hm*SiMWgjW0Z9w$#6<+$)Yyi~gdTXm{h;lTqg3_uYRbyO1)I!oSbj68dDDP?k*8>sHYD%R z9P}9$1aDX)Wv8bg|M4>3wy`Yy%@^3%lNEW}h~`y~F467wPdO38ZJ*Xs$cM-Rw})D) zes_Q8-`;-yD%$QIbOYtf`HWoaiAo{?RMx-{h%2I&hnnQ%4bYz}&dWA5UI%5GuOR=>JY`!X|bpeGkYd2 z#sN>jtn6ngqr1%e3h#-up#d-Wl5T@K$?_@q4enY@UO+O2d(MsBF?y~3tHGoOd@4m0 zcBrwaXpoK0M|s&9VJ6K3C2>l;%=6<<*M4M>mHYWnn}udC-mxFFGVk%r<;6veG02W# z*}98)Iew$kzj2j+eZk}XMr?v~E@SMKKt|%sPS}EJd$YUggLq@~f|iyvd?xWE-&v@cFW5R^Bqf-zor_kiDioM3!jA%9 zu%sY?+UA^_RlP{KW?d@oCISI6`?a8g<@-5p+q%6pHW+M9QdH&uMtdK~AyXo=b2yp9 zfiOsmHH62iDXJp+Q$;0>eLcGpHK--%<#K~~8xD==2LW1UI*YjP5V| zfjKkw$`BY(4MIfbRZ|fZ)d{p7Jd6ZpH%@#ctRtQe?m>|&l={EJprdfSUqknZpTTuH zXYc|w1?j}o)b8f+KF$n0Wm#I|nJ*1i?V0?F zFvJM(&g_QkN;}%PUptO*#&%`RT?@2DxinihHx6A^rC;;ZqwT!^ZVA}*TuH0$*3BH- z-8qkW$#?gIOBz4QTg6)}KKsLbJjbz5PYFhXhV~mA3x}SDj@7(x0RAg_(f1h*0@r{qi-OzswQ#?xrUoYTmh z)h0q^{4TYxd)X^9BvKEpV5RK-_E>`A^-$+)@>bN_4CYY-7Fq6od1ltHX_`?dUK$Xb z>*49i>+uauM5pk3Ul`qQ^Ggha*f8U!t-&$3NhKMvXe_ioj2++h)okZDl9}UJB!|+x z-r?7Y+Y686p=Tf0U$<}RN_Gr74Kmbyj_gbdrn*pl3POeQ21)Y3HdYots?+CJsp1-) z*me?wABqeF>S>qTzvv-O&YJ3Ip5lGT5M`$Dr~@=00H~SkZTH|Dm~(LfI0GL8bxa%H$Y5M*0_-1KE(+dcxEG3BKppGr-x=b z6FgVN`J><@V5F(MaIt(~vApmg;t3eS2PC@bRC0px-47}P&)G*mTk2N+(tzf(Zie%5 zErTG`BqU(LQmW`(LJoHi_wASKN$qOH1j(@GLNGp3Lo@NGWoX%x0H{~oDBzPu)4&uz z&GUlkq3#>cyO5g==k=DcW-gKTSLviUNIq~(9YG+~0DUozNQvk$m-tvDJvhNeRn)V0 z@$7x)qQaw1{tKr143h30e7B~~FHviKddqM0N# zrJtI=dLgd-q_DsK!rE5``mvPGZn~+s{{(wvgO_Zhd7YOXcG5R=7y%Z21`GT=cOiv?2)wQm@uB~l%PMjbu zuoJYIR%f#RHDWU^f{RPM?f@A!2S(RQr6$~paeOdB&(p=mfX$RN*)aZf&(jo^!NK=Y z*Q%OMfnE762@l<=zdzLB#)rDC%QL@JkZYx;#SZ^sJ!Q8(p< zmahrDtKgFvE%IwM7;&dd8kfyN0~?6h^W+!w3VcLj(JxA=)pQH-j}wJlJnd9GmH2JF zWSk$Zfhl(ms#M1Yc`tvqEw@0^*#iFXyu@Gfm+mjEcAm$eeAOsK*bzbJ$KLX|Wixj5 z!ErdWVbsDsEe~0>DV6WFVE5urUn}PVpz-EJ^c&AxckH__`ETovVUNQA*H5dTUKI5oKr{Zp!MqkmSFUmA+qSSSe z={(TR6oymu)(liyR>9ey%job@oL;Y0-0uG7WKvU%VoYYBiy|Weq?^h3 zp?nnNq)6Y@)4$m9sch*lOwfDW?tU(7C1dzepjc%iFeCibsNiPBfQ+m7(#$ke!FIfN zGdtE+9+47)C+^CNmR*I+j)~KlT%__!kJoVY1S^i_(rggVnx4DN>B*owqmO6C}w(@uZx@h z#J*a%jsu!PW8=c_1H(Q{h3FD`n%KZYruG*)5r#;rbPi=!omRnabFj`dBxJy1xI)CwD~QL~4KbwlG6n{W22&NuPd+-{V7wS)4jeCV;%U?AR{(;I3V*LU67{bg7q) z1E!z~bkDhX>+$$lJFOW{Wsd00A+vj8h-96rhb);qw9^^Oaaa%pi(8(Gn3_i+&_W9% z=(wYxt(bg0>08HYoe!hXD)ylEircxYD9V*D$C%{MRnd({KSf!w2z|Q)7B*H44QxWF zn|Rf`iV>=}(yPaEnH`m)4kkoiHz;HYeBZ+KBsVvPX1NUE3?!|r6=eWaz}LL-%jEub z>!^Be;RihG)qYYcb(aw(cYRH}KvfeHo&r)z6r2k#7eHkQ@N75skC{!Fq17?xGhMQ7 zcLOx&ihE?oJv#>|_@`97vG=HvAB|Hpo4`s}m@`$kLvD;g?iNkJn_CEsBT zFP;1KKMq1L{O;xQ`*falSJL`-_d;j`o3$8mh5Q zt($+FU!5@*Gw3UO5l|gqVhSDX%;vyKn-{G5dpM8-6>EPL4*grderDWrVI+3pjn&bQxTdLz!+%l0W)zLlV|d3# z{`Ph|J<1|)Q;xDaWQJK}bU#FwFZ6p)4f|BKFW~K|LbuB-=5lKCGg^x7yBMn0H~jwO zd2>X$+aX8v^vwW+Q0-%l+-xRF`{QOvQOjG(+Tn|;EIXJ9ruZv| zaS&S}w67!Z3<3BunO9#x$1+dcDp=jjTeI)-OtvpvD4C&+{laWnRKhoM=GR*B9Qufn z4g+hcFQ=sXzK#ghE`MUghPNyN7FG=9+M;$J z1!;F?^^|zieAM@^uky<1P^x#YZbCV`I9L97oGs6g^$F)pH34Ox+}$<(K!!gG`fg4! zQR&*FKDH<95Y>SHs-=#tI#m6_d8vdD#jym2^rDufIAUze4EMg+O+o4GGRhm87)>!z5`B_)0JgS%X2psPMi4nM)D#eSkvm!vGCDx7PKLNKj@rP*y z(P?LqkKz9)ItRB*|0aru&A-gew%cm6z18L?+ty~=wl?d@wry_SwAps={r&}AS9Q;K z=FI2JX*|Ff;uBhHGCBAA^|yh8<<0mL86L!eO{ExYFWY$rpRAsM_A_NPy8ioT>;~&z zQv;16zVjnZN9Mk8WZhMjA*8OnL}Eoo2s-Zx;xt#LrC&S$cXNB&P6L$Gounj)9$`B( zEo)<2&AF(pO|qlk#vsJnb}i&PE^-4pI)&+(PED03^(7?%daQgVqP0tEPQ8s0TPbr} z#JA(~_M8{>3HjVb(Hp5D=K@eg6T6bnbtk|=q#VkB9%l`>4zYnZ5dt#&+q?O`LL#l$ za9U89(y!!pCR<|;#|=PHr29jiMut%zE_HZ!yTzB}pjt&4FDDLQmoLB=E|8KfORv>@ zE&-bb{>ZC-MJe>!`5G^3J;$h?{Y>8hq*+8_8huyA_T60H0gi`)+Xgsa$k-pfyq^O~ z?mK>XwR&vono726bU9Rnj)*wL+9$`yN{@!YdgSzHhqc8svW%%a!RuhIWA+qOJLVBv zPv&LV&j9iK1}ZZBRs8CGBeH4ILu{su{18UT69LyF!F$U-bD_<^tz3tODt>DtKOgAV z#k$$ZE;@=v{;j{Fejmfw3lbsv#YAZ=sXZ>^7*7#aDM_EBS=YPUxwcm6Ga)iMKOEWv zgZuaEBAxcq**wl%U>pracF!ExH)?q(u=Jy_4TK|`sgXu^_z6J*2UeA<>BLYo8q~0= zH0TPYrjEWNf%i}DZBOnV+v8*`ENN*e5A}sG(^%hh=dK@VL6TYjU1@B0S~C=Ko}MEW zMC1o9$pHP8N)Lr_WoY8cSUo1>pZ(D`2%*0-e|=Z9Qb5{RM6R!JDbF0`vW|j!TW5n4 zz~kk9P6MjqnOGCe8}HkE+rwi0dMtm%Mnyz~@CYG0P*B+e2SY!)`!e|?*EL1dm{z`w zCE1WkN@_5)Da5_+A5sPv=J)`%G!}PfxA%lrD%QD$D3fhHOI^Xd!Yex+qVUVpUYY=4T7cZ`)#7Jn4JDu=g2Q1^ z`AzMO@CVW7`v5{t^Rd@@#$-CV7!e|!%ub**i2;hNhiA$GbgwKju(NYc)Cj*lb84dN zrG+kqe@(3SmNR;XXyDBY9?@Cxd1hb;ulx&w))J}xPk}O(vObaoU&U7o`ahN%r`Z!< zd`NI@63omf$$fS?tB~R;Br>h}Mt11L1M6&hK&B>T4|evxK%KjPp1rjS z6K7*Q3UBD#m&(c%C@|6TFbl!L-;xCmGg!zhG@tF^IM#Ct*$OI@FCD!cm^8Av&j+l{ zBRoFjgv?htO>~f3C?@x0xW$Bu2}!^vZ0+X_-VtK!KA`LjRD?S&Zw$&u~8bP!taYe@@S(JVkSJ?)l2wm z_>3hyzGCfb89n>Yl}zqIc(B0>~Hd9`JeY(*qOV1D7% zP-hB%W`$uU{yX=4J>ynPMx&Tf7l)l%7pXi&APslRE44<rt<3@2~tsdjt|foqv96%bWs8 zUyi@2eaF{o4||ud62AkY1PXaD8v>q?!<^T!crpNyaJ%kQPY!l(s9jAi!b_A083JXy zl&2wOR$SO~_sQedeA`q_MhOL}A#-BazXk2j&pkJ{Mze1v&>N%Dm>G9eR`e@0=s2(@ zWX{fhVSd!9YQQFWU}|b;%^0rvGpq)sNsX$0DGsyBDYJplh8uO3{xB!Y9J-WQHG@wp z{q)$UXK=!9wZ(^6--X9(@&<5O;wr4Yu?P$GI+{KZk$}fD$>ns|ncwbmp>SsTp>P79 zwjnD=TJy`A>%o-`L7W=jjlP}+B{WomB3$2|9En@mlg!Zu8B;PM!vx&!=!}$7KoFpk z({%acQiar;RZG!G&}X1HnKde51u}{a&$U5Teq#}(YoK~Ef%X=KzEU!DkutH=QUVG9$Kur>PUHPhS=+39q`K)`E^8gHrf%AEQ8Zw)BA3}~K?oe`egK#9dpTgOMav#6p&t!>x}f$QC7iSi zLZ+&#!ba$McffibYg{S{hT&yX)JLpOc}|Fa$YzNP+2&!TIhF<5bK~Q^wuaJO0oYvP zD#p7k28``z3iRB1c4b_@kH#kUy5uwCbSziFkDa!)ehV-&iTWhDe>vO0TEG7qE5H3r zI#+RVVwXFi6gm|An$707eMB4xbt&6%U^ca@Rw_lw6zu9@Iq57M2g}sNr0@Luf6a56 zqBw6a&AwZCRPQ5?wNeS4xUfwQY;p*Y^-|f4r+wVVm%R>@V*pVYi6%>GJgQZyDqXMkQ7q0Mn6rF<7>+SKuy-iW{&GR4#&E+#&w;` zI2JdbuXdsSA#i)~k6NM!5hlw9|D;~fVlptH(<&AF0@56epl2gKY;mddl_-OeZSgro zd2jm3cyIeFlb|N{-Wf2U;IBM80;{%^@Z?oj|CGX-|8*4FZVH80WFLj&aoaFNdUe^S zkAATHf%=>QCfGZpi*DjjqvB%WCR{;kM((1FEb#8glLYG&NJoGGC#sEYwXsWcZ$==o zhV;m5i9ufqF@B>=M0vyib_42!z-0)-Lc%?jkoJ>%zLr)tEIUVLps1e5O zQdBg7v1C*)l%O3S-sVi`dI@2`*z{WZeUbb(rX2dP{lQQ-@taCEm>&{Ixcf0e8-{SdK25tYYv+r2zqsCeXWK-`g^WsjL*d7p_GjR93D1wz!0sQ+1U? zh}iBq1cK0@XghchLT_pTzzrfIqUY!5`T6-L=b^0pRh56_8#XVMgZ(J8`O~Qf1Wk_5 zj>h6=Q_F2@otLH{fAx#zP+t_Y+8i%Nu3nDQCRMTrts{NGe?RkxR}xx;7Hz3`z58>I zkEbnW5E$ZaS)$21g*$S^At;%&DHYX3uCJYjbXGRSQ&gu1+;i^#*dqwz?5b`{xH&;S}9Mr++iLbt#cvrvR0yYW>zY?OQa3KVCu^&e-nUWlbj6B1pyJ( z2&mZ7*_ELqoTZ2{(ygCR2AxXzONs;sd<%ij6?s2i+#YM!|}Q`!iTMGEIKd ziq)?Xo<#j332j&e_EsgA&-_7yM#$c}f+FWG(t-{kdI)Pr>ulJbHCqOU(Kr`h2wePW zD)jh&M0LSqIo-eE0&NLEIdF=9#L`NHRlb(*k@4C7cv!I~qc6K5QA$;6l9;n__V?Ae zGS^lk?|hpu?rW7%**A@Jx>&@L%#X9sR+~@J7sACN^@hCWX4m{>Wc}|dlm8x;v2!A) zn(}Yy>HA-35M*rS4G9dT-mfJc;jNw+PvqLfn)aSUe+l&p)9<`MW}K+y?3SIElpM6x zgIGUEtvF;V=AL4;)zAbI$9K}!*7nLBhy((67h0z>@o(Ej<$`?JQ){|beR1WM+7?(7 zzUa%`B2NfJpv+#%QQh9yXd@&iIMDz)p6Y=2HsA zT21~ZZDPop*K`YQnZU_(qY+k3gZ^A3hf^yDtaNj30i6rhx&Kxs#yFJXj zY-LH69Pe=u)jc|eX4fNFgT^pNzVOsoP$KQD;)p@LJ})rkg`GTd;h(cP|Al+gKs!!y z98gnqgB^e3FVY$5?jtN*@yvF-H%N_38mrg65Uty8ggo?ZeL97 z?6{%~Qi{iU4C{l#k|WkglsE#_4!J)^&*iS`BnW#n?Lm`|`UdLWTMDDrdIS2! zMd%&sfPle2Ov({c8r^cba8Z??q}cZow`eZm#7KpbOh0p17lSMYz6GPH1g|s2lwpxg z_dMwvsd@v{nKQWCfv@()2hEK|ZyndwG zR#aBdGvH&ii<*NoBj+!O(XGF*FT+uw(esTRuhbc1(kK*lYY%p9Bi;jE3_%~MjNuEf z7GCYI4v$BADkjuVJn1~P3x0k_h!!(r$|PJ%%KB2-oqeV$wx0B$h@2(mB>NeJfo31I zh=3us?iJ+ttf;Pr_oC~900o9Mr+$Mv?|S|ym)^C|-O@yfkwY{- z)q0YP7y^*)KqE9ypb`nafDP{9rR!aDhwOga;d#}0cjU^98GCAAKE3kWqfDmy{5~SFtRVn05rvE&TUVO^XH7eW!N&> zI)}PC zl-lf!1y581aL3jmx!W5~A2-~@alEGaRQ8;Xz5peiD7_p=O)?ymj7^0M`t(7MlEw0U zzyFg&E#DttygvokgF34wMD)9EQDAb(^SbkRW+TtkJ1RcVDebYP9ba zb#z>ooKg8877{gD`Q6)#_}M#D-_RqYB!?21__1q=U6 z%cfs$^YguP6crLpW#y<9Bk4gY3f>lf!~3%s%gREmPCxUh*xx3^dSkjEO>!}My6g2C zbHC5?G+@;en+n^?13g(#MR@e|Duuqggf3my#-GdB*#1{3=j}8juDpgJd-h;DH}pnP zL-#~5E@v_B<;akPl>Rqc#i4V-r{@D9tn+BtB@BCvGKePfi!{x zL2t=Krcm^7fFCS1aLMf0(@~`RIN7?B0%#-$mVTZk`j3;{=kI6Tf3a2{mHJMO;Xi(N zQ$9?m)WCdsg6A+NOy}{zhggoM1=%R8yJ;MbV%13&083j(Yiou{AVF(N>l~%G@$XPY zk2o2`vM;XnfLaYNS2#R^=lN4u7$&(c@Yy~#{p~dEN=nPMG(yLhiRv`J=Vw zC4NC_3<1_T2!R+vLTAt|-s*qR(0;EPzVBzIK#u!E zm7}p#Lu}82ehu`f@^hd&Qzt9O2P&C}uR9sapU;m)NJ%+$fUyn-5PHDY)t?j?2-R=G zjPQKm@q#S*xRAm-h{wD6?*v%c4tzlaRpg;Rj+{<4eGd-)Ql0$?HF5jN1%reFUr6VS z-S($?y~!$ZAXmVjVA}sM?k!J<66%977Qxfq?s6v2?){#lQf5!8M+gzeT7$d*W9E?5$qCl@LGh$q<^Y-?3_we9BXbQeUhlxkrFb;4T8V5b4 zn=mpgwaL;NUEerl*@G?&C+>*e`CJ(*b`hnJJkMFT>J52N%bOsWj3nm1And@;EcFUt zBYdH3It;ENa}4`UE)VmRB!5Hpz94p@5@f9s2+D_sKo|K#6`6s zY`DLGrf38zTo9X4{ZN^nMdsPQZh4|%%~6R~{UMz-Cya-%F(Q#1OdQS1q*wHEi~9GU zNm1vSg_%nW=N~nIRqUrqYMw6GW2zBYp&ywQ{;Z(~_?ybq$Y8)_QP+mo>+<|(rd_N4 z%=Sku8WgEzWM_0dTAvJ!Ai@`S0N`F%O4_X*!0K7w|C41LbCKwTAtjr)5oFrUODvj8 zAVpRq?BMJS-PEW-^Y`gp4id6ELOBsev&9OrAXKc6yxxg(EI_b>7QWXfTR^O?fw_rW zw+<5LOhNX}9s(3}NC1Kc(*Q*tpaM+fhLzegWr5aByHp@4l2eO=t134tL!>@72@d6t z(8^iHoA{`2EDLdpV3&TP8|uH_>X$|U3222o+$G7zL`U~DW#ZyT#BpS2WU;igE5ZgR z0BN(rIy%`e#|k<82`1&fVVJNNn1)oL-Cz9PP8&<>WCW87v1`#8755j7Uhy*FPLDk?3~h@< z4OPlcWhHkExlBZ6TtLd!jx+Fr(@FqkF~0Zq_h=Eqe(s&p=nog?29cCCG6bUzO?xlq zFxpqL7n3>O-;}txBj+T)7CZGyCC(LOz$EeH|JFY=e8>%g&@TgZT^zl(O~iG_+}&GS zG;QkY>VJgC(6cZbxHR1-|C(3EA+ldOTU~Kj*oHg>3R*eKegK+A`SmVRiaBhxER1N0Iasp7+Pb= z@Rm5BB-{n{e1E^23OnbN5%YD}nuU2=g?7?`8is!QtHYm`^4i;C*RwYYHJ zRXzX-`Y}lk^HH6kasJUKUBUosd5N+BoVVLal-Vq^WXZ+7u#(5)zFXoS`Ll)ffh)ln zXeJq>oW)IaJ{P9mXGDZ8ZAz9zbPA{Gswf$>37sQ#v~=; zm2;jzb8##c9nY2aVkzwB%d`(tNH0iJX{uc^=eD12;kPN96eFln@RIossg6}Gf#BDhHUu?~%oJHbLGDYs{% zw^T$Vgo9$8(+WjSn)CW_C3h)kys3MMme+>UDW2pyp zeS4?u$b=7BH>p$XiKX#~)5oBPOcS6HHYqN~mm@(<%JXu(5a@-PVDf|qxf>T277trY zLAo5>60Kr^pWqHd#rs54ZL4Gv@Bbo&WsYVbB80;uwex6&KAodnHKX1+_Fg^KKi+O2 z1fXJ&yz^29KjN6Gq3(!5UWNFh#?B=p=+hW&rC;;Ehn7Ym2XFD(F2{=5Of^8(;#)I> zRg8B13GeSe2yIVLKNl>(W*lU6xyuvu;dM=->>W8ZHJ>kS;Y)3YyQp($W=BKE_|07B zHOZam&-rcX!iM_H-=&+6o5B)OOJoJVrk)*S*d>E|;K>_xuTf^G#+RyFHJ7QCh7sJ4 zokGD7d(RYcy`;nXmD{~*`VKNO6&7WZ%lGrzOvKmjgod7l0_Ui)-#)JSQ;#Sej<2S- z&OMys>c73A{4I&2_b8BH^da0kk!ySbu!~^4I}B^DzH^3y8jb5xF|fz@gEK_Rwr{@anc&#q>3$PbJALv-yHd{6P(uD? z8&zIIyQ_=0O$g3Iy_cMxy5%SVIsXzBd*oZnNMC*l6bgJFTa1q+@8oHeaac_Xnpz!- z#gb0KtXf_u?K7ZW0M7tv;N$tjuT5rp^1)D*?7=~ioRRcpqlM)5wahDT&PJNb-2RBf zYINYwKM#o{!Dw)DbYuZsA$VIuf990`=fG`!_v^CCI6pij$9XhzUP%sj8ga!|fs59A zM3xb!3o#28!|%eG)pf0;M_Ei$$~L#G_BW|eO?2|$uE)Z`k0k9L9oMOO7+_Kcl{PsP zK9Gw*npHkW>`6@QMik*$OGeXPC?HO@{~P|{)TjGAA*ImJ-3YewO^^0}e=ECR!h#mnnybHu?h?0-19^E27B}j_haSVoPx{-n?Yki5 zC29LA*&lvyd^EU@83059Gpd~I40qsR`G<;X82C!rG9#29OKzS@E&mvfWfw7kNT#&d zkWVR3|AoPj8n9@M?*T^A)E84Ff0(O3`tvc!wb6GPWCqA%l8MGh#C^;vN*`M6)p5UL zm#*fpe`BBRP05u4Hb96XSkeohiv68~g8)BDTW5zmN5LV&*sQ1pz(SILgMaR$5(YK9-Jb(Ed47Uc^tz53}2^JpiU7l^!U`=X(Pnied-8K(@+Q{ zLv|E@YN7d3V8lun(|3b?YjkkQEo=gM(jz`v5al~7PYFBQZzev*_jX|0;d)j!zy;`u zIec~s2jo7r4P=ONtRuuB&=ANr+A5NxQylAUAaL8PYv36v-H~AnR(u^ZReIAL*(79; z9{){h25DsMx$tBytR6A52xRWM&{>(!=JgH>oB9WZ(b2AEeNTSsiOt@U99NZU7^vGF z#UM2~7;ilTNx?#PAz6?g3sPfYdO7r=r2XN*lh8>TNvkn%X$^FHb-~1ljb9WP@|Blf z5iWg6hnR&sbJ6CfB< zQXJY!XfvH;ENFdn^f4x0aKM**gb)GE@DSbrKwnlNm0hzqcT^_hA=kTR)r{_s@!)0w zw_8VaWoYZR=|xbX$EwCax()P*aDKV4;$~Ctea3ov#CpVLcOEcoE5DP_AHxcRU`!Lj zWAZ3SHf-^MY=nxnuB;zl=Ma~}36xgWfZ3uyJ1UAt`G-fSXjubQZE}qdN%}u)d(T

9q!Yyd#4t$!bFbl8G!(6KT0$2v}x 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 literal 0 HcmV?d00001 diff --git a/blog/images/20240416-whatsapp.jpg b/blog/images/20240416-whatsapp.jpg new file mode 100644 index 0000000000000000000000000000000000000000..399235347a4637c350568db7d1a8e33be57f0410 GIT binary patch literal 1465896 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≈U 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̻A1icc`_IIf;snC2J*n#h_Zk+ze~G|9OFD)esE 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 z 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/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%0AyC=t2oOyVT?1Sjrs~WFXKfn3T{ABI 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 z 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 sT6pxc>P^V+UL#^4rV(yQ!d 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�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¨jmtsoqS>yiQt z0Cq2TNY`2wPxjZEs;NM-&YLFeSonhM%&@m}`mL}h`QH*Y==#~hAK?mFM^6k8Y98tZ+V>Vw~xvRSWFRODqa9mo!vP?ko`IJNrv=wVBIW5J#@$hc|) zApL)eDB3lHa=~(5ZxIlFA1(V|Y!b3?x;@Q2U$Q<;E>-_j*Iy3o^)~)(K13SW7sOWL z&-vg*lI>X)#Epi{`y-$k?8^F*fDp^tB(O>7D+0CSaPJ`cPXnV;bBiVQWDd&fhAkXF z$iq|AuC<|YJ>nRrD$zs=UT-|c62Df<8ecxM)l&bmHn;K6<{nhoT9JB45ynoMR2M>* zAnsP#D(@+lcNsXlOx0yyIf~eeF$F!2-^& zJg&~tXbdN=aqKajyqfw5%D%#3QKg%vpzsHvL@IVnIX9hT-xkFael3#0cee=-i#Q?GH6w>Lr zDEtJcRj~lA3{y4`ELmxo;HU`YV?kP-wncMko-? z7>QUtNV)(jYFnxjgfvwJys#}x4cEYj94W^SxVdFH7}`qA982c53i2ECB0$V9T~UBa zfjber+%`hUzNgSt5G;m?y##ti|Aewcg^g@|yi< z*#9F@-`SllPY@@0&-t|DiE)wYD-paU#zJUK=JZ^K7gvKqH<__*67pZKcCE@R{`PT| zpH~hN;*T_d_gltfC16~8S?}1Mno4dWWKtx0I@rMOtcG+r`Z5aLkKOI}!(G%To@_rG z)l+?gb?Rxv?8E>D4F317s>*&tyL;*1Pps&KHE>MvaND%~-2rO1VN`}<#5l6`;5(uH z`d`9s!nkn=LFG%|a~T^V!+#_!%kfk(QbbHeiw&KXfW^^UuhnzjNpV{Rb?K>F+5r#g z;*^a5{RZSPT(7UPIHpxYAl&xZ*42?rP^d~!z*3LnjY`?LaQ>6cPoKFl+O^RKbGA7d zJsf|BZhMGxGhuRa&nG(9D~zAfY-KQTcZ0_)XKK-BQcqRqTiAnk64Od^g&TAorWh;- zJ4ABMdJQ1SAu{tPLx@AL!qz8;&|+?v_&JX07nH^6>YB<7u0}m_eKQxj>^_$R|McEC zd)eS(|GHg#kM&J#EFLzgwxW4u*7MG$wjHJ7@-+$8aw8DG-_edPC)!!ut(@r`3w8^? z(~?4+CpR?vy(cY^DZ%(T-{2X#xtzgHN`Y-hX74W45GAknwoFrk){>n3*@9LHlcgSy z;)JUlg)a-){tIo#^35#={Qinb_apT}R#A(T=QcD}l(L5c@X6FKHSv{z{A0MGfT?Bqf(t+t1y=QNd0D?g9(gw?7=KbHckIf-Uz zaYTIo{cWz~FmQ9@$F)Bu8WSUv#e-(#K_zKUeqzBqp7x~$r$^0X;C`TETiFt#qV>G~ zhQ-f^A;Ca+LxYEvq_gamW%iCVI%K4CXyz#kEQQ*> zg*}wyF9N4G!?iNs30<$w^cr{ywv;v~ML8Q%#*zH|m2uOLH7hJ7DXc8rQy=`zt%Mg_ zhMm*1RS+OQFUg`jA4=g#qmr(`i%4a0mB&3puI1iR(B@6+N4ABef4>$ZP6SsJm`8nI zKh$?}U{9E2P@{9{#DM-JCGb!s6k$xF5amq1-+qE$9-^#L5;h3oI|d^E4!kGZ5M4I4 zu((#L2M>FM)W%gpTRi=+H8(cnPrx&Nb(3{N)X(z&a_!XFJWB8Li8)_|U;9DRe$X#3 zbmbT8%*SEpbL|%d9!9us3=wF%1l1@9QIe%Ln9*RDvyy$VjNuVQJ{gQQIYjmxgL-$2ryw~I8@glau_dp;62cP$X(h0ZO(&@T<d_y$}Dz&wlij5 z5V8(n)E!H~nc>2)B3Dfi<6e~n0|S^qdA5d=_SLGJ`jc%HtNqZoiCiCgju`e_x**IA)0PG`Qv@F zc9EL;saCBJTRSxkrr}bPFrl$pfd)UV)xZ4hUUpZZEeN zSHOzC7XyopwpQB84fC1L<4U@JdS!wEgsg5A65^GquG#QbAi7rG3Au$GsM$|TNA`Uy zrYc%Z58+LkR^y`$ex(xe3ciHrO;@k2xDIpbrFxwySR2T>Li5`K^4Zz3_0`LG!Y$*L z6{hUhHCAr%_2Xf=0-M(}unj^{S}AmOaLz>JckMsU!2jD?r2f|6a!<@CS-Y2h^IhJ0 zvXsfOwC?pSizu2}|NlrJpJ3Xn4{%o3vQW@^F2wXgsq@4 zR)Z|iXxC=NI1*R_4?TbMvdwDf6H^&}(lkCv?%t{#M>c}%r4^wCvi=2Dr*-gpbAN=) z2t8X|;$*zgSDJo^_0bG&(9vc1fULqWJ<mltz=vm%C9gBgNVzXj9MO0d`qq z&`XYX=758u*B#Wo`k;PVhVylMgQEuY`b`RavZDor6KcRSE)gjwuFXSLC(jQ(RCrxd z)!5Tl`o%5ZdrwxE7%nAffOd{qdk9aNZu1)Sl@4Gyhz{Fq`vi9g3Iv(A${vmGYW4-c z?U*?qQIo@Su3b~@_(Co8t^Xt0+fPF+azsD|oD&4Q?ft}aM!e>9QO2mNX*FbF1Xd2H`=CAH2XZ3JaZjfvKJ$hG@E^tD zXd=xTAwKHKMEPyim=~A^I)@aZp)=+wLEcp!cAQn&!EpS=R(RnZPmak|&#n#HQ|>^| z-hX=y8s7D4KO*fP6_D@%*+fLxXXP|>K-Mt1ocpov{%7kEDSXl#Ds2IPvN%$K41bpC zVR*LR!Nxa0Xpa9#ObDJtnq$JJI;vD@McQnSjuk2!neeF&wCC7C%mzRj2+RUhoBj6L zc<5V()sau8q;tg{(AW&(7f2OTYWrH8s?F`3j%? zM{?N+fQ^S(UrGz4`Ur zw>+95`)9;7C{9UFPaT;*I;pXiNAxFt=|EcoR5yXSgQg9jSlI(&ZKsE7A|E$TxUm=y*jQ)VU{?Yh9sdw0%Kj#h?6Mot-UlWeT3N^X2b{j!|{x!5u zd24$Sk+pf|8Y2T(jqb+$;@*{6zW?V+>b)z$7qXrUL+f?SgUtw;p(-dngFoi_`GNlS zRAbVyrbqTW^1OFS>eG&1*@lgsG}=VK=@{;MNc?5s$+x8j4VEF%27io3jg@xab7LED zCfAez+~wvB@YnsMKyn-PQO_XD0{@Zxdp)dsO$yAclxXG1_p$B~23BRCk1+EAV}p{8 zYUBC;NciSqj-C|D_npLdAZSJ+a~RA4L7gMF=s*IihIMt!HIES~0Z7lyojVBobs9R? zKtK|)w0#Y2aEufF9G?%RP$TibGyup+IGxP!={Xzx{ae5s#5<1S7*n0*tgSa@X z<*YQ7LsL_t{mYfFo2Lk@SPdbfV;%0b;fAODDWQC~4S0cYbi_MWXe}%ojvLK$wP!=J zTc-LCJNTKLRQc3wh#vgUpawE%^q7znE{JP+VF9`Ae6o`MCjXB2SW|D9*yh-LBnsJ? zM6v|k=~1-k%YcI~b8c~8&0T4Q17$Z_*m`<6Def&ODV!Hh=bXV>Rq)4Jv9cE_e`RtC zym=Jlz#M6JI7o002pdNz6Ylw-VC+CO_W!rp|90jrVD`V__l=%)}R|P55X3q z8)C$c>pI9?e3qVW4%1P&lgYI76qG+L@UfwTt!KjPAw9rYEuh_9;mqm#&zniV*z@9x zmns4qAZQ(%MPJQ2xh!n7^z9BP0G6^@1K}ANJ6GkWIvfcQwYgSFUr*MBh@vyz2faY` zgcD+S%my7?-5#A(IDAnie;Ewd*-01UETy>oV{mZ+U8eNW}L>w|ZUj6ai3(X%q}&pb>?19Q^;j~_iU;=h{XRS zyxyyX7kxkR`6<0`vmf$*&Ip*0;y=PPzi+OQFr2xuKw)GCzYRpbQLw6uPUp%{t@3{X z=3VN;sE3gx{$zzZ6+T?7w)o_4=iChEhv(|hqJ*ltsE6H)^&Sq*ZPgZE-phJt5%_`E zp%*IrXN|7I?U>oQow6ozu*aquNgaB7nsL`Ad)uDF{4kX(cJ`6f*Ozoy?G`|6-TjT? zo$fkYssT^Mom{D7EBh+f9Crmv9}S=8pS&qM+N#@+RMRYnb6*L4+UU3oMfTROGK{|% z@DF^X#z8id^PXbgW>Tvgfs=(`2QZ%9*D%(7MVe(ptG-lq@`o?`!dx$Raa1UIWfe@4 z+MIa7$t?IfP&DM7hQbJ}W)9Ejx+x0dfH=5=dhYJ=zhtRLt8G8%XM2wN>09L;LkyUM zqup!{4P5WQ4_v!;e*H%xRGmts$sts3ijG4A_MR%d2uZ=sUFGbV*VWY!F_gk>4sZq_ z@%qDS0%=GoEr6x09V!5`ZASPFvqMCgK-fZqHk`{3L`SJM<$2akHd8~@X2mLp-|>E+ zV^ipo5>`kMn4k$AIYX; zVjj*FwO`}OJaPNZ`SLQYD-z;lumIXb98971$Eb1tkvwVtt?K~Z8DZD(2n#kD4d=nI z)NHuB&;+V|UvF;k_w$oiuyzfa-ZrONaDf4K=s-BH=N{_1o(fW1ARAB zP5CTw^3bVz)69yJpXF@IL4~Sy{zTKs6I`w;$HJ`@YnjR zs(|&J26l>KmlG9rm64vBhkb0Q)`co&k92V6hqn<*ME|idiS#AbteNkN@>&WMu_Iqr z;#IvW6;vLVwZ$yty0FBW8o=Xc(^_2x1pBv)b`riwWXShEV_GMicw}>7%#)Y;UIg=; zNB@0Rwj=ch5V;C5`=haTmUky3rK}`?ePOZb#euL0IcX(^?*kbj?~ravX29y;OTe=^ z5*Rbtvt-R0-j6vFHhn*4!~#2aG-l*Wv6p0(tTIjD(nFJfT@hd8Kd%NPDF1n+XW(rw zoGuVbnlp9GrsZ3$8eQmV=3K4orZ<&<{5h_>T;XKA!NR6E_c(of@g7&gT$}xFvvb6H ztDUV(omh)*XYkF}U%c-e8jrfd+fx<{ysh{b1s)#Rj~KfOAipKH{US?>kWMW&pGurz z3W|oi)L*>{81-PU%1yi7xJl|m5ln&*eM6TKJM+7aRW}OqXvT@p`DOlBTNN6Yc?*@2 zb+i-Nlh;43$_4DmR_Qazb8t^55#hWVLX4|3^|D-X>|x zBX5`Vmus9{s&?<^N)ScPYyu*y^aj_}H2UeQx0hvx;rok zPQ~sDY`JT89>3nH`KUFA2qx)nY%plaDcLuhG#l`ca_?8s^Ru>er%T4unfEkBpk}n` z8hJ>VSXt7yT~#+eZS1j|2ie_Ow*65O+QeM_WINroz>q{fuhJ=9jLLIyN5I6!*@r!R zxI1gp4$$7J;}K$4@NDb-}aY<>-^d*G`;;X$cMHymSptw=7j12SyFoGlIT%{0$uPpaae*k zC2_{QiLcx5rZJM1!lmx6K%!a2*Jnd%yH?R3&$MN}8#5)NM{=$ley@LcGx;CMWV>zF znP*f4c?aXS@Qr`qpE;UoW80iWDqSGo^TcfchtLS7mJ(f~S3jNZ+VP-$Jm8l;u}P>y z5f5}>DL#anhRL$wwKu+tft*$bu2-&2w1LYuP!3O~&O(EYOpcHNnY#t|2evzshhXzc zn}z4G){FldJloVlt9B}anKp0M$-SzDRJYLKl)5d`u&YkyE_5$*?o0qg>d0mZ)aSa& zlp;wL3K_iJlWP*t(-Fkl4X z&~pc{^Tvo|#x$VW=z9S|2hR1%vc+|0y}^So-E43|fynA_#NlT4!@slGY~XL!;7-Gv z+*J=?OCn6W?fHMhl6GS~aZ1;l)S(hlXEn#MgVV6}W6uO55pMc^ojP7Ton;z*(i`=6@tpQaWhj z+XXBnABKw?+T8wrvIq^)&)5gLh-hf>p=ew+gwi>x<9jM_TPqz79@(96M*!n-%VzFs} z@biWQ3y6OihP`7w=RXpjEkle`U^Gt(?7U3t|C8?wEJw-_vA;F`imk-g=!mO$Uu6f+ z)pV_&npPL5I_$y*L+H`v=2T^!y|IQ9SnHuQ64UzO0mXpqCHq;AKLY(Z%E_P64v7_r@C535B=> z4S;=l0TNVEoB0~?_9bfnpL)%g_b}Qi3)v2|Hn)X=-lUoIb;x1i7+Ylb@?|zan2p#V z&T@R!ByZ1>;b&*aS)Zd4#xth^mY@O>CD1R#wFL*yU7IlHHMEXrZNk)U3y@qDh3#wF z-~<}7RQ1F@V|AEK(Ah$7_(yZ# z(!I*oP0?8mqsqxNpm2cJO^`+2m5sIgzc4i*e_S{lqf4`l9|R=NwGJ6BV?qsno%V%d z%P%|De*ocRT}pyhUsizv@!$~f#r_D~uRSkeBI(>GdU_#}59<^tB#8?X+u@&7%rL$s z`UoOw4|MCrG?z9ptCa?Xz~J&Vz~3NomQ2?A(TqK^{1|vhUI$u-DqD+u=W*)I3m~JL z(E_$u{lraYR;&=^{>iK6@uz-<5I#oY9l7hrR&PB*ZA$WhCdC+0=55FNPY_pyq*zCM zor$Lb5YqH@Sf>&xL-OY1M}7po$1bRMpr3FO3WrM4@fIuLZ98|oXf;#?L(jvKxnJ=OQ2EA%xf_DNMXLh=0? z=Qa|oPY%N&vQ_WSYZUDnj>rX35?udvFs@jx%`2*tQFDd44unb-E$yDP*fgZ~#-JM8 zQbLg(dvfC=9#!UOI`dms&Z>+vv+pR=CuYJ6I8L+ScRLFX7YF-8Qq8U!dT7M24X!!l z1^Xs%IqQG_-v4!MXUP<2g8~k$xD3U@9)?ySlPzkrHsW_HCEBRZe5KiZ_kDMctrxJB zoOe2dA4A+4J`ZZY>4ja*sa3vqlEYQ^!Z|qZZJmTO)L0f+=$Zc4F8Bc7!GL@C*yYkk+}*8 zzw8Z-=hfrDdDgtmx4V;$P0R{H6{Zt*7CpaxG()usmJ@L{%Ur+nS_FtA7 zP~aflfqKjbqTTye&p{N*^py)V?Dr$_hdsio@XE z_bF~E3R)=z;H8bcI3k_Pv#CEN0K8A9xQ(g8pzCYqVHQH0O$JT}OHZT8n{GtLb zt41fJe_(5?O^fOC*3W*QHw z{&)16rp3=wEw@wGTevknYgc5=<9=5wwm@syv2{ObHC;1j>N2IXM@I8BX(g>lCu}Fz zSbEk?;MUI7u2-40Ib3A3aaDjiM6s2#`S;&V8f^TzV366=SsYll{WE}7*3a0Om;SE8 zOYy7HgE(!y!VM0hnk!@#%uk!D6bkux0v*#iv;9S-6n5b#nqT*7GE~r(^7?f*Jhjkq zkNB#Z^VI-F{A5RFVwke!g?W`RfB&v^dX8_A=D!ciIcxsDL=x3H>KBT%A2dQG=!v<=e$FToU8sL z$?xT-%Q(-Y@DzEXheM5H#HCEe<=mZTu%o@+;3cZ&0P zbk&&tvpiZzFDtk)nq7sol1j5VQ{O!sm&Cm2YK&gyuBqa}ma#PJeL=W zuX8bbO8XlrYZL#V(ji&w(2bBg*tq^hC5WIF01mZ!G)WOEPOEx;OGs@a`~G(Q+C!!0 zxqB$*BkH6ZKmN$?T7UCZs3k3rdb}U|3sZg>^nzh|Tq&QiOBP*`cl|UM4DQJ=3C#G9 zWTC#|W1oB_cEL76@;7O2U8-QLY(5tEXE&C@H)5*Rx%N_>LOvBS+fWCPpgjyF^gGP= z4B4oo?D>5N&f*pKY_TPYY5~Oo6v+#w20Z!L5>no*^N@Yk#;F^NcRAgi7R}~sIs3VR z@?Y8gjRxn#>}{ludjI9svDVz1M)B5mDB=ZrHNVnqQ8f4isaBoetYKN@Wa3bST8!A2acPM7 zEs~(I7!QFcq59|u=!j1{E4oGn*XnkpoV9xn-OBRb@hT0TGsqv}u50`jocNVgW;Tff zIZhV4Er@n6+@vZAF4?sTDD+m++9vDd1`BJot@w0VZgLqtzoYiNG2$M{#x1YKzEp3e zuVf;6!G&AZY%$lxSH|uwlo(FZUR4Kj@}v!!hW&>cyX4*5v7y!&zr2_X6kB7Moq+<=N~h;lDZ0;<276gs5vZ$ zX;tSsv0$F3D5H`8adeddQ9fT61O!w-K#=ZGQo2h7q(nejdZinrn>dbYPray!U`{GfU@U*QHQ93 zaQ+s-_mlnIER5OTKuqTqruu|nX241 zUoIIRJ9_WoAS0cb=?c@1nrb6-JRV*5imZwusw?5lYmN3-Mmk_EcofSNprKN zGSnKX5Mz-~f08z1&M#r^V|*?D0t!gGEm5Hl%q5@Xn-z~FlLroS?)|A=RtZ%m*LZ_Z zp-lUOk59TZ+;uvbDRn>_7aBg`URB)V>nFPT_$1@3kTmbj>)qRGN!xE?K?ZC%s~u%GrZ8ZJd>H8yD`g(OKv9q=f$wlP3P{N`^5`sI!bq<(A% zGj*mb5HJ1%)sD2e%qMuWeiKI~@*fj|hoSpH24(Ie-052}OQvD(H=TFhix>z0KH|J#FIj^RvMI~UQu-|o4HCiEu+Fdd$Xh}d0(qvG z1+yX+BMsKrXfla0#nsy5UNoYdViYydy_F zaj~JtcgGGnkpg^!JJi*`jaq1MxC58>S<{Ebb_THQd7E}uv0+u(;hToz8kUyxsC!w> zbmBKHy9-Z}N|sTJaeJH;s>!TX*&T4)2&|X|0k(2y4S^ex;;Xj77w#Dc&c*}$>0$e4 zTEED=YKD|D{$$OqNQpFSHJW0yP>M{SZ)C&Q=*bxz%Jp@9Ye6ZSnnz8REtc^)B}G>9v}1e{ zFnc~ewwy2hW}q;@Z-|dNrV#UKFoP=p(HH&w-z~GttEWv5A*DMRQl%s6eL1t(ZJ&8l z_?+JNP_wiRd6G1&a6u@!hcjI2hVLU;YpW-eI&*A?zhDhuvEMWcuBAuP1~o#9CO9tG zjY8&I(JJA*)IBl|AO(=h2_RQewf*|(NbT@+ElV81NP5URH)x=u?vwL&U1gN8xpE%y z#2JUt7ZPI-k)QcB-H2dck=^XioYhR0TxD)&jV1C_@4{ao*8?Vc~X0s zgN~+KS7;x2E?KdJmZ9s%q^m}!&O&2YpOa38wgx}94w%Ny8@Wy0z|>%g-_pTCHWIsEsVYbYLIFKSxqvU4wgvgEmY5&_M4wC z@)qoC5(x>DjHEP3b&KNC^j zYy6nx)j8~CEgpB3NCJv%$7vOT=efo9;T1H$3Fn#;2f3Ui?VQzq0c_V`(G~5M#vc!; zFyj@I57X#kv2iJoV!7rEy?iik#%_}Mw9_W4q^9uh(aQ15mnzn>4Ka1^N?iOF>gz+; z$xFEWW+lVU=c632IMNiLePczPN}KA%Ny%RooTv(W<^bod z@`2lqk^H>fk9cDgXU>JBBX4vw&a3qUlkIPyl6CbD9gB#d;`UcvlXohurVZG=rXR*U z_XZZ{FCqdKOS~W%H9xtH-&f7j?YGMiQ!%ffegFcipy%Smue*k~{x*%SQ^s=3AtJ}# z3(0~BFK`bX#&4;3d0q6>brXEeF68Mu8@G-B)GD_yx$7HdMgNb=y8~)i5`&Ij&C<+e zu`C)hk0#60Vi-xQlF5j7#@yTfy=CK#&uG3;PbO+w5(mCf8GdzG)G}d@)wzW{SgjSn z!g5f)^Xcfl&K^E9K1(TvJ=b_II|sP!Xyi;Ut~&EHU{4=4M~!IM?9x{Vfs$0c88>mF z#;1!~Lk0iJoG2rHIW-F$)V#nRGI)Nf_u<>z!@k2OfxI5psL|MW5ns0I=d0GA4b#{x z2MfNdCnR*fowDl{)u?$md7WaGsCpoh$HCy&x^pB?xmcEvh8xvsKc&^b;VFA&xta~T zXUm%Zo>cp>>^|NQt6Tc=LzhOtnR6)f^WUks!2K9czTNOjB>4sTz zq=bCOb`2CY!NcuFIOZVv^c|_PAo_%FTXpzq4-7~O*}PZeg{G0<&Z(M9y4MSAb-}B{ zdYh6yB%OnVE zDuP~#;}rkbitrm_xg2rMDo?+6>z?yH_bT=WyG=;@rm4`zio&vbZPr_1cP6Q$E!8~2 zsLCcHqE?^G3=`SU8LSfwjph=dVNc^d+kJU=v2B7xFk{CAN9*XYx@Jobo+nKVzc-=B zrn|BC(#qFi&K%&U?0TdIzUlT*3qR~doxcgDt5TvfHMaERfG+BWF7 zH+^Dk36r~N#cx9@kNw0p?1u#ztHS@V>}qTm?4Y`h)0Q*_@x@cB?IF7$$1!(S{zv&y zm#hz#baz$R>RPrYBV`;dgWpIZSiukTH0jqg=H)r*_~ z!TH4U)wFMkEjAf{E(>U*lcxT;8wF7&C~zw^G)r6OFI3JO{jzeF)p6Ayb=&sgE1(lJ zwl+IE(NBMu0R4<#Oym|hi z1fmjFs_N~fT_ftZ2h4;}*(niPtCS1+rWEtn{Ujonlu>O~eWg?&HV`0fT#Xsdd(a_M zFvgC$%%uV^udQ<}13;J0LKR9TGVKE{YSp@w?<DdbRSu$#VlI+KcO+ zBNMs)^nfz@ZR6Da4$QcWwwX}BAiiP4e(y7)XA|?IUYM5fc1i`6W7gM>j4|FPg z@Ua+_4De!EKEUN4)wmR`$Wx`6Af#=Jufhrlq&cQ>2#mW)Xx$Mx(hH(#oIMR%V*VTa z70>XJJ@aJGSee}JSZd+(<|x6=FD%EMP_AwK=gZi&PbJHqN#GypXS62#dDrL4l;m)< zX4pG!#KI0(2hhM{!72t8jybIZf|danRfP-B8@z0YGOmnT8ws5Cq<+hJ`9OWUr!9VT zOf`=aZnyBdf0!!;T_8`3q>q^vr zSkF#Cvo}&V^ByW@d)a3bIuiTcUXabCT)5FjRBjFbz>rI$di)s?j$x`);9J@>UWx{4 z+6<9X`Qd7=hD^yXkZQi)pX|h(Rz`v#IN)6qU`i{l+ws6%an>NjU#jdQ=?cKu(3n_) zVV<}k>4O09iTL0W{AYrqr>y^Ono`Frl3tNaXU z%vDteYB)mOgtpgRBVsR!ydmcnO$We*1q`&|CzvNMmK*ZuGdy+~9&lJ1`?cPh$KS9a zN=gHC5!59=)Ui!ur<+<3!lA+!?X@jw-Z zsz4ieJLE2{Y=e8cm-=*P9M}EZ*+ajGHSLTvcS2J52hn8rZxJQiPmQ+1F_T#sN3GlH zV>ho>XYPDV3j{6?eWH|y=~;g|XTf;+Q2fqlqeSEw0yi`=5#70yolVpEIEwrm_;!IG zKr3I*HH-pGh=o3+)N35o$H~t;aBN7M7W(mTjlNU>2xl7O*KuHs zY-{YW{O+(4igo8z-QEv^R;{vmvjt~?$P0UjU;|_F&0KuvK7TRqPf@7R5^wpv!f*}PF zi^LBwX+;=Z{^qa$Yo_{y)A;Lq=#kXj06MEdYenS`<+9@y<#k@n9!bEHE5oFmB7b4X zGn$tJ-L$r;VOmWs91O|?XC`C;$_pjBY%`w6-2Xf$A)6ajoF=Cb4Wg9`-$_RhR?P+=vTFsvM$xL_d>Iw^j{?*|s~Oo3x%_MPwvyR(Yr={SU6n&w}syo>4EZn65_E|gDAfq`ZK zY}R4q%cJSa#5J(E>DRZ3upMyp2K*~OiY)C8guq9#oiLJj(DKwecmYN2!%N2}#FJWV zewQGcjzPD03lzLsguCL`({VS|1Nx)+8D);60UMI`jCvc=oby+pindaerhRsd)eDb> zgi6won2Kj;?zEpMnAzsS3{sCopolm)f4-h6WbN@3E8W~JZIX|GWKM4F!p_Ms9BItNCu zl);tjk-AGhF0d2Ax(t1_$WL_j0#s;jG#$hlieRxhoj_U!5SlQ4m|4)AH60NmUm7g^ z>t*?+n#A;`voX3k5u?~9WH79FG1;k)x~z||zaJnO3Z6Ahzg`|@NijpvfsnMAF);j-3xWfDR+wr^kFcw>Gh9ReC5V4EUzTG2 z=2$%@2DI;udcln$`iV|~*fEm$ByYp|UOR7InoJLSTDZ70ez9Zx9mDXeH09&1+}M+i z0n?WYj=vk{EqK{1_GKhNV%tU22lYth1o*f5Of^T&D~#CShpu)Whql9 zLF1&Run`JvU`5(3{C#>Kvd$ed!pysu$r|zCy0bRyl z+R0=hL{6K!YdFt%J-+79b^)SA0B7jQEkM0WB_m%3ZGcIB1D%K`fgD$u^(D5>5Z(d?19AEuxrDMHg<6cJ7qBy$ z{LA0Zf|leW&ijKVMIAC1AZGlrIe1f?ms&q=j?T;*B)EC3R2f>1Azc4qIo85ww#LW8 z6lUO3ff;guOF27G=&Od*z3h`?!2AWoi1w3<6d%_XubAV7izo&B+o4EnFn0o8k!&sb zO;f+Qefz#R>kbN;$R_)58JMqqRSs&rFM*LPa`tzLUgD?0lc=j3IUG&_fikU6z_M%J%M1ohpiZe$DexRDPV3v4GAWUd|Krwt~$r}d1xZN zn9d}Mq6IPgf~udwX1+-*>=1KH=Q zwcwlm{OBF6-l6A}qDjvHcUy3A8$XIP${Po1cWyBOkgZKSAwVTPl+lOwqmo_Y(+2Sa zBJ~W5Nt8whqI|~^A`-@e0Jv$bgMf7@svrfkLo-fOqrM8{x?hLz^1e^eU#B20Xngg6x57(#d8AzVY}bO{YP zcX)b18h#2k@F-w$`0h98S{Y-E|HIniXiU_*!py5XVqv8KiJE{Ggzj*@<{4=?_0D=X zlo7!th9XnBbAgwfo>Zgsr!EZVPc$?W*?gXS_22FecQU7_o87Db9?fR+sO@!o@~HbE zJ|eTYXs9_#ln?eaSW9GXcl*-e3cpJWilVLr=$1yX-f#?=> z=c5MkF$hq+J%tpaa26m|i=Gwgw1m#n;yvpXS(`SE>U_tl{b_vqmoV^D?%5fT z_cEeWrG<)2eN?u1yu{p{Y)8@;!h7)P{1&c+E^!8ud`e1A(k6Dmj?__|5V>bI;D0(cT|H_!zbA=^=yFuIcWH1;&{PsIYR8~y=!A)*hAcnv+3gL`l72GNBBCJS*QpImq>gJn~;gQS6n zYA|RRw6ZmIOKZ+HG}wco7}HVI2_)GU`U8fm#>cr-!K?u6Nzw0u_o~eJdRPQq2kBu1 zj#?zRHm4cRa(A-59)_+ce;A>j*37f=J;=F5z^X87-FTQ+8ywl2$VJTTc_E-6js)ES z92s2a#B*7k4Pz-ve#xAmlmVRrvEud&6%0Wn5^KforKEHGmM+e!@+XO8uhkeo&;#HF z*y91Qo*=>i{~Y||e^}%J^zcG;qLid}hvn|U4|2dcwPbv5kFPrAEb`oSH{U!c1tSlE zyMkhj1~=fk8!r(dar;)0?u%z*PT`qu!h!Jv*`HHvLckYJbPK+e;s4?i7{&w-WzD(A zphRQWD%|KfoDyTu#zy@`->b$d8dXp1ltks_TbkN$@u7S-!v(p+PZY^x5>26SoeNdC z%Yc(GqUu>{`oc|3uS_Q?elaXHG{`pWIq|VsE1zPJu%D#41*%rU!I0sPV~0rByKYj zRjjTVsnhXQzF>>__WEcMxvNk0=ur9}TB%`E9y_ zYy8qsbmYLQx7IhM6d*##N1_H^^vhf0gk)VNn+D{an?^iz04uBq>}R4J#eY~|v|_|E z*n4@$Vn%FYZVXf~D zh4;}K$%`Jmp7et5M{I*nFMvm#?4>kyNjWVeRoahT+dv>C4|vHO0<6k`pEzhq@)j0!)T3Wne08iz;0x>|PsXkc2?Xni$Y};i1qdNj zHX)Bz?dO{y9RdQh@+S|V{{OJ*HiA(&mo^~L<~vQ6M;m>MGyw028d!A24yj9g)lB6% zn;2GRoOr`)k}$cZrdYUzp8p#5?-c!%=(9oN+x8O5Ej?c*w*jg06a?VFQPD+U$ zUnI%r)9NhR>?b^F%_Rar<_SYgoNK7TiT$sLu4C%)C>E3CiLJHCbpi6*eWVGpt$|ZZK){`q5VJZoRMilUd>oEdY zzH;B>p2@ya_ub^y;@+Du#V)@DJ{aGi((Ubr$8W3{5r%%_kEx{^2+|Mm1j1vwLvBOv z59^LgeT4(dx!z2T%xv&?lu%({D$c8C20>;~TBHc0K5~=Nt6-K6es#pc?<0703&*-V zveDurqR6GHEWK+(sHD;PNQ#0o{+JO%bUo?Vy;b3ubR{ghy_(=NsIcALY35q;_P0oq zi1r`aa6Cxj#3_(6;{jRR>E|j~B|@7_{TuFMM?l&k@SqyfGo9N|b;Yu{yuwv_a`F#E zp&|Y2caq9KTZo;VZ%<3K+(rClna=s2tE555=G*SkHOS_^%d+9VdwSkM?)89YYA)Oz zbOyG2nNqZ5)ZPM<@hy#`0WAg`{*%Ixu*1ibD^R|0?;n+3W3G=gK0O5Nh$9!F+r+%w zI@xn%_);zSb^}4k0Dp8{7hBMpDSt%29QB;uCu5RrYP&p=(r;<#Z%@30LnW7 zl_+OM&5nOKSYd=a;`ggxgyq6NE_8SP;@NJQS$=FcK0C~rFYOJzwXMBWiKuq`(w>A_ zjMN6pn!C5y%y$oFtPC`FKfP`7oWNDTQ%|Q8Pm=qYT_Vor1)Tx{8(tl{N@rw2wKFl5 zTYR2s$x^yJ#`4;@(at0^Q0wLiuzls2d07SoH5^A9j!yYYp}XF9A;7PuU?#g8zBWvwyqPKI!CazOA7*ATpZ}s> zqC0~`Q8;s&2ceNy028()j+;{<<28`coAD#mI=DcXw|d`5b8i8)bRt-E2fGV(s*}#N z2o8J95EjlV0F-e79Dh6ry0|!gJmXx6=dmj{C=DQZKbb)qAo?^idxyPwyzZaq`l%_B z%evz3wnS+1A6OpCrUVy#8xK1mn`(3_`uAxN8Td z9*X+Vv4CL)iwv}NB+8dD{9ztm7QdkwGhIVeZ0i+!^8a|5{NZz0T1vEl#6-ZQX-J`| zk2MU=<4l zezCW~$P1?*>hLz71DXqS* z(ahT|surLPWeE^McdqF4AUZ=}KnMSlqqfg2R0^)tJc~G-S$9yUXqYVFY}0^Q<>Jtl zTfWU(7<}9T_2V2cxdX1nPd_KD*=O8d#UzIa?QmX}_~2ungk4^2-uFu}z5qLT>nPZ- zL`hfvx!%aQ=9+TR)gShdo8KACIIqedpqLAN7#6_U1!6+1147Fr4b-^e5lffz&Ab~( zp%+Oo#76Lg{>;bljX_Xjb9gV{XC_8Re2Y{BTvPc-P~-=nn&LEF1||(nn?HTVg$NkO zg|$xZoiC!3<9OuK-H+zGhx{?b^oVa5ZgfY0NuF>Brl(XKM`8eyuXXkm*!^8}XcrYq zc-C`+$Y+o?`!fs2I$5r7yq5OE!h<2CN4`t6`-~Z>=TotLTj5)ClBR5Fbrh=QJa=f8 zlA+9N8=xP{Ms$_acu2z-(MY6BpZY_;W`bgXYOEuZPv!4phYOM=u-3Fll?ap_mPwcX zWPR?~z0keUeY;argjZ&H5b_gxUy&WU{oYyUm=!tn!}U~Q+~JgexxH^$HaZY*EfqKU zfLRMN(xos%CL|=Cg(YV=Ui9{NWl&LywQbJ zjin(roeYL`E)Dv(Zs&KGz0Hre;^4)@*4*(;l^V;fxMO7e@8K0w1k8(X#ega<%XPYA zVTZ9V{u`trH`EzJhSIJzI^+JRwXVF0las{&%Q*IEy{VG)BCk7lUe)vJv?|%i^H;@k z^u&J*bX;pJEamn_peSrGMDDX5v@-5HC8yQQ5vntD=jTphE~!f69|q`h)i4ZQtN~J& zpgzVICO*0YqV>zhhONp53Hd|f7g7IVxt_6tCyL`ID6t6>#^qMIVb)DXmO(+Ku9i; zccu$Yx4GdN^+vv$*{!@Ym(ap)$9M!A>`W6$?~rWhv!R&!s$dxR(Jr*?1e_+8nwH^F z<>F7P#B|d76=HaJpd;jwrF8?Ku%X((8*M5>Iloc`K6BUEp1Q4GldwDz-N5rLB*`@f zbTEf6}wK=bSW0vDCK`x{X&w>twIt|n86ppkUiHD$r_cZNZ(cLE9=8K0oOnP zPjv)O^BFf1$ERyUXOf>0RHsWdc6!+h%=-$SwHy6q;O4u9<>d?A=5&^+B5 z9lvbUr_Z8njOM21usaNtUT14#BT&U}Qm7c+MjMXvj`yR5z|ZV+8x4)Z(AhL^#w8iy zm6qrV&yxXxN>Ze&LDQ5y;d$V3fNSL%9Z&A-9SY|agSm7{KCFA_gg4+tt#%gu{(0-6 zfUfFg@^&Lizp>ub&Q!@?IOs=lLCNY+?J*gjDi&%HN``I|=@jY%*Xcn6Ed+mlK(=o# z4C(r$?I>4nus0FzggOjDoE8wx7Dz&e=A1X*e>ajbW{D|`iEwDugH*;La2MDB{nP#& zW<);y&1E0gdM^K%Q&H;~c=AK@_631m#?K_v@z4)najd%|HxMjxfJ{X3}simzV|8gJTOC+&qwXKxls!1 z+IJh101r5Cx~yaAd(06urmEXwg3S2Y+Jsx-Ei<5CREB?QAyp%2V*FeZwSo34jA?ZY zRN+74-HcWeRN??&6bF$Jb)>nE?P^tHgP_eWay50@j%?{TwU(eaNml#FRKsZT z$lVcTi2&Om-}}@(Y7*NPFA#qSm-_{+6z={Grs*d&K6&|LYUcn3neTMpk_ny_k#OSG zW>tKRL+1^(L3Ce+Z9-4iwzLrHm^b!`c1@Ir289W`Sdv*FB}uo0)_6)de=k3+3IyF+ zy;f-$Anx9=gYA1B$o&urfL9saE)(H~D!o9803bMfw-z*gDv$3v)2D?4!fA+A9!&j+3{r7>N`;DGBk;2IkUCY3W*q!pri z!SIrzX2!!dU7c(FQOrlW1Th-)1+Y;hK=A4aqN<;4a9QrV%Vx0&UB7g8lZ(Ab%ZP6$I#0Q{_)OrNI1DK=p;y#I(ax9&sl7mvf$!wdkth+nK!*ZW z2d~TWVLrvs#bbOK&A`m^08s>XrGb_mWk$ic+?!Wi=(A%rONZe|-ngeUTb{IwtO0Kq z@mmJIj(0?T8s7m%YYOew&^st`PX1!u0NPv0!R-%bFC zEY4@g{aM#ppoBw^q$!kh>F0MYDNvmcgfc_pp0tLmd@U%YQPz6g_Z`rvB8TARKy*9D z(;iKeri&0hmbw}PXVMtLPdQo+RxI&~Rc1p-_*E!Z|aJIW}E%Jebd4=BI+A2RV+QVNE*Huh}urq4Qk<@0dgo&kj=?8F`c;Ue#zLm z*?OK-R)W*_^xR0VOK4aC`OX<1V8Aq?(cInKq8vNWug=u>%r(KbJu)keyH2iWew*;j zN_2s=;X}l;I07bQSSa_61BS2%m=XaxPtI&3HseD(yxG8CQ}p-_y9@~Ng2PziUxjA& z#vouY{4+m71lId6r>s1{6rDnLb#<*RXrgKVo)pGB{0FDG2=ZKx24elc6sfLc;2S(* zfL>IcJ5xPa)=DZ!*UBdw zEHkY>ZT1?RD+hPUzPJN=j7gMQblZjgcCDIsUCpOg7jeBhaP5Kewbf>V=v_+{x`$-& zM923f&c|9N(xP_b&vO*Ny5=Yduh73A+_OM-PBeb4b;~Yner~W@J*jq2L1UWltvk}K z_NT3@A&0V+DAhEy7NniB^sZpW@aXOVevwF_Q)?q_{kWzL zfwN^BQdu-);lUUobP2#ot z=lQp}OQFZKwJK0uBa4%0X1!!OAXb*XvcLA+KD&R$xIS%2-j;e~fYMp@C)vk?g(7dt zdV@8No8!k4)f$eWx~}AwVz{59MM51aE1qX-&4)4^sHfEHpxt#>%12)X+?HClhw!>d zSRE2s9_d=26((%n(U+3WjJj}~RSI^Nmwg{ScmCv6QB~UW#3k#t9P~0(qsyw@nIl-B zL*cr=T-ANXf&Gi9Kbrp{&i&qAwUIEN zEhMVMi8PzK;B2}ODK)_`EE#_!Pvd8GJ@zxf{X}=Hlu?KZ*_iu6mjdtcqUgcm5}}^rG6->HMXEG{DCD# zE>Cg(4(!MLks|6ywC3Tvt#QAl<~bHUH{ZKA?~8>(3h;e-K6Zg!0K!1`e2RRR z1-NHUJORU;0%`|)KF5ocrz951OdPz#JlQI=H5Eb>5T{j_WHjBEk97JDm1D4`rP+%P z^(IAr2iKM|ayoMZ>J%bnG8<>K{*JjFq^o7r75|h=crbL~^kH9>CaMJt+Wy`gRgu`v zZ2Y;~*{e6s*}~&lF8N-VdkSAJ{SPbn$<2kC(oRE&C{9! zM`Ltkp7rGoV%t6^9~!{{?X*psM+hiU;h+XIBD-H#l2d>Bi;0s@6bQ+krd^WAyxd?3bw{+t?%QgXSW*WQasG*?*J4 zUYNO~Cor8FGYB;dkEs$Z<2|15z(7_)TOX;c0p_z^hn%zdhT~u3yTaqzQr5}Je0Xf8 zb5pp$t+uKRCbVw*m9FfF0IFhyY~y3&&&(93f+ErFe@Di?4zMbI;7+sc&j$Kuz4|i} zviT^Jqo@SR^ln3mVlR`=Wry@ikXw+R_EX4OdhLff?FzoIPgCawdSOG1JpO^AQNy|V z)7C#CS>wN6G=LJ>i%=1}yzy0z`bQs!_N)^kaEd?;X|70Nk2KOA?l7|I^+x;Gze9O{ zR6KyF*~1G6q0dEOC-zS^#*~!Uldb(qAbIug6H@hiT&UcOUo5WT2IA6q`=yH8nv&8m zVRro-F?Qpb05QwjDim?Rz(YEtv;7#lGw1i8wlAfpTqY{BWG@im!!^fIpNQM-QrCH$ zBr=TT^Ku3p=!I23Qf=eoFPECy*26+u$2%%A%z4_9>2Q1y@r>@fIo#W+SoO6VLbF3A~!n*sh<(d|kJi#FI^N8|>Xy z`P`xLO2*ZwdD$tGKMk8V@zC}lurGy5QNKA-I^6N5uWm>pvMMUj@OSlGoC3v$`O{tR{Y{oFXi79k43YL^!U6ZRPymLta38j{ zL5`w9IKbOKObTPgk|dOuGO`h`>LrH?>Bwx4_N>2I&=7zz-&onT8|0f%VcL%Kwi5mlFFXZr{OFHcMleb=5H|U9D@5r2d3i=Cl^a7Pu-f!J2 zr4>wvJM?yLd2Vv=E?h8A?dqS#+VnTAEX2kDU67q5K!qYS^?9O|znyS!KqbL`w{U|T zf|DPXd9vld6Z_%ym4fs8e+$c91n3_PCY0;URj<503MzUI=uGBV95Oz_Oy*EFcH5dq zNvK`YKEbHVZEnl`(A@bCi*D66sf@saSdJkD9T~t2NRQDkJET^)+O-DsQ{h8dy5n6C z5+!{Z_`pTPo*$utl3+|E*DoN=wV&o`sD|+8KCaAfvdd3#4?i*;D_iHyUOycC6L>O! zdcnt2l=OZjbalbkpQqV~Cdk#W`Kvvw>gZle=JyyYS*~H=&S2s%(F>f*YIW5Pk9r21 ze{DJU+DQU?3R6b}hrA*!8FF0nOjWBd4FmiCyjO;VZ!ocYsBCR5AtIXFwSm|HkWOsG_c%ORrYb9rH zX3*YWZdc)3f`kHUys_b3f5wJVC-}c zVtqTrSiC+5-MY*CSfg$ie?Ge(`))0kS3%Fi&YX?E%Dss}N3-jVIu77AtSsu_PG>_J z_eN@-@)w)Bz&FmI275khuTWpZC95a;^Xyj-?oT&cAZn+l1-3gIun%}{Y11(FDZ%Ua znycyK*UQ1mLYe~lv|>?jaf8W-KySAe@WTuwdn;0UdhYU+kZdVDYUgVcjB0;#>?|EC zeV)RKOl!!fq>IG0wKvr8eufx7BJpbpUgJam&C$Nyp(rSKPTIJ4h@eY0K932}SDnqd zodh=w+q4q8X=&MiQ7YbWW>RyHI_4K)rq7RKa#NwI))}EH#14N+F}=E?JU=pgmAD=( z-Tg5#jCxOk?WQ_HRmzyUHPYzxYXRJ9fP{bvDf$QU>$i`C zp9c>;R^89^@ak)ni>|hZJS$gl?Q*@!cr=#ToLZ|KWc(#2W0&RUfYcyr_tGTww}tz+ z2X|w8Fg`|u>3yf3chH@y>cBe8)ZsQ=(K%wHOLVkVB^wgUns<8wUHQ?5^KgmYw_&b z#NikSE;ewsYGNh+c>Q{dZ#bXo6`IN??M8OY)hqgF)sa~DS zJ6&>;r($^_FWYV@zWaM58kcEb`yuBJ9jkNX1XabIl_e+fWy(8>5AGw8Z433JR9I)I z^8R&Q*qs=)*?Kl!oqR_Q5f-y6j}_gfN70POt`G{gUXW}@WonQ9ITDOVEsU*b^dFWo zi^i_UfZ4nLc(Gy!=xh~hXM_YbMHtxt^A%#mRh|O(xEh=KzB*%F-R2|9M@D*wtPJKC zx%|RwGw+s63G;|nLRlVL?nVu_&1&}I4o-6sTD6DE1Rr=yl#{oz5$^|!@Z>!kJX(Q| zd5Fg2y!!~H7&R0wZLxZAur%@2d#5aGk2RQL5&e-}(kANADph>v`h_R(H@?417EU78 zd}FM6knR_Sl~C4_F5M9_saGJ#V`lJGO3#%-E>1&N++^{2E-wmpyu`nmS@;>?vGA3tht z>Wgu}NwPd~ThkD!&93x3(J^mqznekUPL+q)bOVotS>keQ%kJ0#D}g@^){>XeH}coZ z{q6>WXV+pwgsf5Xo!?oNZ2d7QNvC6+X*pVcxN~EZr(bkm4i9|nb`fM`%Z5>peb}~& z{hTSHtlfU^urMF|J}7mRCVeD0(0=!DGT>C~Rk2aeD~;UDqYv%v-;6}sagyc#9@0_I zolUS^$#8q!4r_@3PCK+BNfOP)SZD{ebBAQgc_0;T@P^p7K7Xf{^KE`1)hr(C+1a}Ezu93t|Ii3U1E>hOMp^WPcOpQ{C|tX49DgyV$)>- z93RWhO`XTbS$sQLC+Cw%)EgDQO!e@$#hR;LrMI5e8aBE1B9G!yygd)%Wri72x-Qvb zBT4W(-I|VE>B2_!oDW16hAw5ZI}=h(TZ#aQbx5?s-`*ws>1JNO48gn{zc~o8-Q}@i z=F`$&y3*E7BAx6W$jPY!JXjI;&q8(YviHvk7Q8!Y-d(U2Q$P0pH%~Z=C1<0=rR8q& z#J~jRbXVaujMFG^&4S*g1)ZMER9W?4ljE+$=vk~E$H0PA8Rn)8(8aradk>euO)q`A zYw7L{-7fK5FQrnlt?{$F>iCZUjFw6e!CF?lWM^&8mhe@J(eSPFmJLpSjz!a^zaB%0 zJ?^@jnC>J9;$FD6g10C>=m%o?=W)U<9JMH;^oVlEQMbj}*i+;YOXvQ>8!QaJ+EHbL zRA#9c?5ZUHL|Zd|wTCI>&7WJA3@;qwHA`O;<8x!Urb$c7*Wc1ujZ6AI&Y+0D$-xqX zl5_OBs@KV*&D5-6Q2|55k}s0fvy>MNTPsS{6<^>y^PgXfh`31Ds~)yiIPZQfOvo5 z{Q5BHP&&gPrH?B}yk_4zbx|$ErnU&SKV+Te6s>3zG>pE(`PF5+R!dc(_j1gER={ww zWy*!>TZoqITouW;3(gr+FZ{3gG1{dJkU$TB_z##m+_Z!gSh~)udcM!3MWy0T8~Vq#qy*A z1=LQ7?U!GI(p5$gL~*gMP7HPX|))?^RwEDy@6YmIw@p^qE#;G%g4 zWAd)KYK^{I*=jtmaliNhgYBh{T)SijOH?H_T^lAzP*oU0zTG;hfwbFMODLvR5sXGN zr(x2L?wH}?!bt}Da#c1VN1UkULU5(q*=DlochAj0wO#y0cg#_h5o5R*H~zBd*1wwy zopXFVztBw*i5h(I>M+$QCHOT3s-_^`FB>J|O@EN+5kW5$bt^~WW60j{cXXIew+*My z^WaH9u%K?tJbi3_YeGc8bM9qngH4B)p_VXq)l+WncL<2LyX!t($OcRD7k5d+!m!ib zn+wgZ8PtA{Bldddhl4+428+^@U)ugXsj}IkEhDvPIq+_L&tUw|7qG3++itz9K`IUD z_#8VN6~i@uriN34vRs!tj$HtW@jCfOfOl{dR!;)}(M{eDcD&kMkSnu`iar=z8iwZI z0Dv>86&=?nZjyBGYDGP`@t`;9vv(3W>#2D@EwzeF+OzjnUennY1eQG_M{O!$NqTFq z=xCV;B&>a&}_~#DF zL0Y%`%-Ko&iL_-&?uW!HzpPLH41O7;z8|8G^}}rwTr^Fu?)nnQ-P8m>|0UAl9Bk2L zivz2+@cMRcO5}Q0*dgYBxsNZs(0)QAti6W&gM^bV3J~XRs-LLic_lN3<=d58R3BSf z=v^ftZ05;a8|lr^N^$toYuPg@+IA#uobYj#En$hi{owYw((>rZda@VJXk3_o$!orE zC1urqwgK7eYV`fL6gO4q`DmGMi4kx0FRwwAZ5;8e=X}A8ccmI6V$(MVsgKSJYY#O= zl-9}{UfNo|byztQHo;^5lk*0$Udj7GlbJ7|(38n^Ru^Zqs~pQ#%J4BtAR%usm+CJ%JV&w&&4J3NT?bnGtX!TKWI9dBFwieNFJqGpiYXW z`Gs3JEZn&)WE*GV$q%(ri9_GewmAI-lNWjrzAfU5A`e#|wY^|=5~$i4+w6^Rbd<8obZ4uMWe>7{CQ>u z2LtQ0vC@Ny?-{~_B`o1py(?!KLI81%lA8sBvtc4SlTgy>)eL^oAwy?GV}@;>6DO_IaE*^9+a_@ z3Yk;f@=n@ndTl&YEzRmqJg-r6G4M4PK1D;2kasAx|H~8k_DK7WWvIf#G)|``CDLp0 zC$w4Z7t6Kr5Zo3|AazB(1UM0G9DIp~w&8UIo=(NDMY&4i=x^{r>*lYxmr9&pG$p^E}TxSRETY?)N%h zvu)F!JD#ivtfqvxB2avrX~rJ^1Ys7hK{#jV&1B<|k1;0iAivF=xK+?LTRd(0US^45 zpSP6i$!;?G!A8t;m%jEr_>Zh5J7m0w7H{ZxzAZF2c`RB-agnUbs+)FG`=CfGAi|yI z@BEAUxPvzz5O?>8rLCT9k-^>4OzH+8xJcr*0BZxX=+-+(_1`PEq+-iQt==8`YmHTm zU%cJs*6$flY$ERL5DSA$J+2Lku>_aJK|w)|L)<*oF@sZ2EE^~PRtR3w=}vm5qehSF*6RCc&2Uul&B)TS$`TuFD5CXdPpm- ze`_zw`Br7EHZSv;33o@qE=AH*TY1lwX6uWrbdtA-Y^TNBCleV@P)lNpA``XZayX$c z@mt+e-@MjZBh4ly+}ya8*%vsIJ+0s$x$-+Y4*?O1PnI^yJjl9{rZEUg0a?N?F<1Wk zIKj=TZF%D;$144d8PJFE2gNdQaO79?(H>@Aj8i-t{8gKB=I{O3?-JHV4n1 zb>$jd41LTsY@*Z=^c)Rz#g=?W*XdGCPsd=|p6Lk9#Fd{(=KZE3C6%kj6FgTG9yQ7y zsTt&!EmqWOmlS++*&A+C+Sg@!1_Wy;O=J{2YF&>~=(V2!8~M?{`MK|&m$!^)wa?4U ze4`+}cV2C&5)Z@By{Po2|H!oQBZ{K|%6^bJ7cWoet=-+KyKemk-ijBT?0SI9ODyyw zwuTeAd!2=;NFwWDEpb_!_S&!J=0D92YY#)1W9%BedSz`AJw|Cbx4BP2%z`&ZceREy z|M8g!>ThuH{+tgzaO8MlLxOuSC-Pe9;I(<-_AAR4}bAq2djHR+w}@^*<%)kiI&D{tTT|zWRne9t=OKtoVrx$2rGSN%yu`_% z;Fj#EW?S!GWEFN*K7)B%+~>+SLBBq)!^cgrB6&wF{lcC3?}Hr9%;C`Y(bY_Q){~J0 zZb=u_MpVzRRQUU13y1x$)??Z8F-LG!!SbI?)|m(wK-?R=Y`Z~y6p6Ri*n~y->A95q z)(-@?m>D;!Wgq6=JdTY8&)!|nRrE)_cCXk?7kJXA!aT6sWO$vRfi~@By0PR}+^Lie zzi2zUC&g+1mWGj>Y#sf~rLmC%`9Vh|g#kHrWW0 zg*z`M6KL#EZF;0@%qu_n!$6xF6MEFKr*iAMHZhfYWx{YSPf3`4IHVeU7O zDA}#Xfi3e^3iLMspBV7Ur{=z)F_8zczB0a4y9jkqRqm7){c+UbnYWh|B6g6AQz+kJ zP~tdZy@5?$UtL+*_+^!^4I2UB{x{Nx;@DLW+f*5Lno2iNki+h^J9TrmAgKYW zlYH2L3-&fKUsA>1-L^pA!^|>6dtpZGER0ItQhz*?t{ zno}eJK5oLNYp8+0z^NAtT5*SBoea*nf9@hw5$nHAxDin*dWaL^#y~ui3~Wm zcy~0m@AL_s9$jtH<@`9ZJ~#YhkjA>$aP$l-w=%=kyb!zwF42!!Bo;|TmXA{oC*6@e zHC4om=#(GiHv9{d8TRK1p50~JBj)#hAWfQTbt70Lio&*BYQsUs*6KhZUHP+^xGDAm z=N|0S@}Pnmd$LLGk($8)_+YM=ihN>wJ+5JW^N=MjdW8b;^9o2K_796Md!ASY zdk0~SX|hsLMsLSp89x*%E;9=A5*^XR)$Po0HE-j-mIBh%S-^ZM9{s>-&AD>g=gg}C z>=k;n9g49`2$|+4b_oFezoyInDZ=SUhNXwNRg6(@Sp8<_txG7r^fnah;8N1Ro48kS==5t*TR7q&U-lM*J~UmevB<)) zxv*JtGc9?w;h~C`H422c!m<3@G$gRv2Z4(2CF{l0^^-B2hneDzAX96+xqt^HsMTfouG243M z2P(E8h-}s!GM?`|b~?aUorQ<|t}Cl=D%`Lo-X|$QMxm5Y$5AFc^%h5DrR+eGuE>(H z=kqI5bPX^F&i`vimQTcDmZU}+{x`L%2^FYyl>0`p!(YJbkXs4O8{uHK>}tFkQ@148PZdq3w-|A&N@0H#vkTP!x) zd{h4Dt$0pSfzzN+M|Jv1vi1ba<87~flj4I5vd1;|4j7=8EzAnQKy^CW2a zHIfTrC`UVQz|pktR3GK|!44z0icuGMPSOOj7JhDZ3m023>|4IjFSXpQ;KaPBelO0O z8d#Bc5CFu{z0dti&h3^7LSUZtVo^new5L#gEbC3rZuWk6v&~jkj9x#Oaa+pIQnSZ-LqC8NB1pxtf(irRy0&dkAoGM6jlq`F{N0qgD|ay$4}r*22wq zZZKRLqT2gO^vr1LZl`uWv$6GrF7+`mUGP5wFEzU0dDP-^WnJ;}Xld)w-E06>a+6po zt4DJ|Pm3zlVSCsGpi$xjZUOrQ)gEMFX^AS~bVy)+*O(;hQzJ1zY@GwIH-RZz4Y@c5 zU6@sAg8&ssw73_EUJ?x%J9t(fu@uCMzPK!xB=C6Q?H(`N&j1nd0MMj0P@4Jbg7_Fc zU^;s~GhPBFyw-E2oW!=51J7Fqz@TYwzA>*tVlQFxZNO}e`e_zE>V1Dp)ptIu7wF3@ zX_oe@f8_!hld{%-WcHRh07Z&wJ;=QQic3GhCIkX^;bvi32udZCSB?a`@4En#q^ zr|f0`z`^IRHjOZ8m{d{VdbR#A2�Y3&zOc3SnMJ$XeRsG*_r;; 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

Zo^JiAyyCz7COb- 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

hC{3XV2b`0yQFttbFcfgVQ zMC6i(<`No}^-u6FiTORI!MC?MLpr1zdQ{Cxktm+VVjt$i^#Q@f%9DPpL4ccmwekJi z+E2Q(n(+kf!o&W2j~HUE_RE>MpA$3de6jH~Bhd}>tTi2=)<;&xk1QrGj(X*u=dNWX zcbu+Kae~1VIKK7_>for3(jUfO-$@Qgr!P_E_3MtCO^@F<&LjFO!pTA`7U7WQ`7>*o z^e|P@BBm^ke&29rCFg-(%6eMT=^OH3FKpdU+?unN(DpFsiKLi~eSXtT@R4y?*$|`6 zH@}Eo>Vf-#5^D)Bt*=>hQL+4bESqmyD|??*!M@#k>3y@l(|avqA+2T9sr04)<$B|^fOOKl_DEY=O_5_k z?Ok7n3jT!Fv~8Lho7r*W#USoil-`HE>SGI{^xy1YGx-g{^Gam&ecst2`K?WQ52M~a zZwb(Hm2a;7!ZExh!V=?+PkTD@t)j%rle@{O$~(7Temvzbq5ma^GxtPHR_lJdW6a|p zZOGCG(RgFza}cu@eY&oTBB#&z{bkq3KbNg2(gTeRZN*3G*`Mt$lg6@KhsxjQ&+d8k zkZ38`C!JvQQR(4M!5y!c1P!=-*%>eP#5E;?C0a?=%U_=E^sqq$Yg>xwUF*TzypA=} zW_uK`C~UAOhh*-V=MIeZW9aif+c(qankC*L+sAsgq*Bsy-;UE`cl=A~k;L@*oxG;z z%x1NQZ<;LxMug1Eu6}XiCNtBwr3W56eF;|65A$pxk~Z|6A}n)Qxcf#zwl>PQUOEs?)=VdP{PQ)7I+27$7vylM4z%Pxzm9&kz|1PRI7Z~NXYr2B&T~e@sPAf53PjE zfqQez^sz)g-W_2$CN?=F4(P1=gL1|Cb%inlqXzL;y;+Yus3%J~YC9 zZ=pEynoWl3AtKP{i;1}D@aMZZCO4RwuvnRY`sS?YB3g|*_ma&o%cKmfg)Enuco=%6 zp6@8gyo_k?CknQm>f?wYbEn~~=;S=AX30={JXXbd{?c|ka9_XkZfZeAOMqurnf|9$ z(*`hl9e$REOYOF0Lu#wqcE$|}M+muqkBi`!Mr{d40S^w2u@Li25N5pu3j`My^xOXt zgqI%b{E)RkvGjpY_sfg*d0hX3p3&QK!M$pFy0+)^4nXbId;RE{2nFVgp_14{^-oIjM zv98?z^gwD;dTZ{Y8SvKl57Io_*c->|<0IFC=I72FknQpfk&=JE42k*H(EN2#Iv5)l z6h}0f$I^@J*4hkhUN$&Y_dIWXVa$?^4tS$&Bhj&Mw774uxkA5hz)J$`EKU* zPOCz z`xNaB@yz(XABp{sK-8Aa+miPpFWBIQxmRE-lJFOs`w&XJ`_-!Wuk>CZ(bk@uW(f*q zHf<9>Gio?j@l}^2ucD3eAh;@ucjY*2M;l}@c}ECO!D&8WHi^S>Kjwzg97o>B9oZ_m zd{bcIdsU%3I=R5Jm@AoZ`2>Brj$%vT$c#JRH{AJys`}^7Z@R2Ac9^5zzmzH5`Z<*( z8)i=+3M_(ko47Xv_B>Tg8xo`c!!k_lmJt;vBpG1-M8U^?{C&cyvGbe8IK#9});2TT zV9ZQnJDs1dVSlGbIi3Cuz_uVM;8=Z%K&L>d0AduTsi#3GOqL ztS#!~cFy@-bC#iw>Jir#<>l1JUc;<{yswQ721!K4q_xb2I+oI&&vP*>YBGGD&59w< z*hJP`Cu@Z+mh}E`%QCx_zgknF8xkgBe8jg;H+k|kcXTPv)?)Ne<-4lQe}C%}JR&R^ zXmSddyYJm!aG-Fo`mo=;YmP3*lj?*jp0r{)l9KirCzz6RH zlV$Wlt7zb<*%>OH(1Jmmd_%Q!H}u25EEK!=7yNO?E_TzGzq$R@#e?@OAZ`3(0mKF> zcDpudgi=DBxCb}si2m%H4)UauJA)|8 zsL+_$-rsIQteNd-VPu&-T*FvplLewZE702Rj~h_Nw9rc+18f5dYR z&lX9Nkxedf3L9)OkP9)Y*GgOtCbqp2l)c)pdyk)E^0+8UM)bSBG6pr)drW7&$uEIi6Z!r@wJK`F$Z&{Z20rJ#5 zSx&DKa*F^tx`BQzkIB9re%0qjzA3L*Z^TE6xqyI;} zJI|?G?E6aQx8>}Guy_WE;*!ZAekZma?MRK?p6nnBn1bjE~;@I zRq@DULCyR-gxhyv>m_=ZzB%qLE!2Jfd|ccr+OOJJy>z>uwIsVxYPY4}hcT9^udFU3!S=tltKnW zGAn;8vM1__-IC2q^Uk?vuP`N3S05<32>werC*ys?{lgu?I{pi$-gJkSghXminDUJi zLY6A_v*nLRuhVOvy!4{!%M&=V2vRhzeYdLFMn}-~ozge*LdC$23A`e)rJWlt7b`4s zi{oqTPNAteEK|0iTCTL<$miQSTe2}5Q5P52@0ymDv#{?zvXXWyek~hQjLy0-e&d&V zcmYshere9$uV*}|+{xy0A(1ILVk5Un*uR>%31#I^K|;Q}Iq=PVjdvihk~ueyoIP%l z&wT%y_43hAy@z)7R2fhKzlBr7*`I|LUD4@#?xEqfJrw2(N=}x&9Rs<)Z==T>hTw^t zy!(+i%|IVFE7>1stMBSAcKcq&28sGYmqX}`?qg5t2gu&y zc&c#~)n@3%T}d2aRx9NodB2(q#f4iJ;Z~4MZtR$u6$(8OWXEgGx7(MrvZMn<~=(64``$}!_(?U|_P5Fx+RvNlzQy*V#O3`6=8~JsY z`Ez7@*&1lYN`y(A@P1F6pF_4LzP0^QS?fi^7Fk1|@rmy1b$L5R)J}0$0!ijx4(<8) zq?Y!)&i^}ssWqds;@yi8gE==IyEg{Jamq<=)19Bs%RMWLF}>X!I$Q6My|{A@ifrKz zw+Upba5k2+`U4YdTmII8f+^oFY1Sledy2;V>uMQ-Ad8K8iTrl+dGmWFwshLas+(|U zP3NcD4$@*K`F=g+YCh(8I+VljZaK&7C;RCUSpH3>?K5tI$ULcg36m<`4n&-CPpjPs z7=uSwY9l)Ml$fYspegy8)xL=m+m<_*(D;e3UqudZFjri`Ev6iv z#x4z5bRzV3pC%nq(?pPbF^FFt_~z0;_%C0bHH@;JSK(}>-YmOxRvsgI#H6Oq57unT zQhghB=etCKlCMk?zdLcH;qXflcR{k_s9l}`cAVWHR`rhxv(*rrc$x3;$Evyoul^CU z14er~zM<*K25Y|j)aYU)n)4(R z>&o-+V@**+xd0{u&C$~|NPy`U*1U7aX0_Phw)Mj%`s;zOPlGMY2)Ft;en~t zI|4HUPjL#tX88{C;CrsL{dLuGFXqbV-dfFH`a(cedJ)~x>HUq!?UW0(t4!|@39%xl zl6Q4)2`Mvmq#aMnEqO({JpS$pU|6X(oydkBNk;8(RKSUS8wJg+Vnq`vC26j?w&73S zXj62KxcDHt%lM9%dOnIU6l)34`p2bRjM%*i7pF@w)!KDF)j5@YY9qzSuXWRG+AL_c z{!*v@35euh3XHf@icB(Kf>r5yU$dB7jCx>lN*|@Q=OIwJTVSu#=B3sto?2NV%)rv? zk;Q;4D~p|Y8ke@%s{5vdG|HtUNQ3u}@_oAS3#RPOpFu&B^|dlGk0$c$E#V(rD!9kH zJ$>?ujJjPdX*Ho7#=FINrGB8oZrQ^1dX`x+g;hU zi>_hwf)2mfMmh=6WJ`S5Zp=Hj7rPslksooKTis&6$>n_k|1E80!KW%<;3Go%_CEsB z+g>+}x4j=uEDY7T({iqZJZtS+D)qx(%1(IlC%|6q<6q3#Td0t@1U_sosct~G%4R%T zGIIPCbew)Fj3u^_4lsP{QLoKn`yJM0M9wB^X~{GD{UvksIg4CxIy@rNKUDO|VXs^P znqPC8i`wv!_o*?;W^IW@;>I@nS^1b!oLpVJ+}X)#Qe?RsbMyw5Yt45^l!qs1+_V+( zsV+fReo&2mU-vpf+86T40#RA!F9rE|=ib!clf8{=#Nq+)n!6f{B-yG$Bs@vqb zcoN^*^{RKvdA8I}Jgpv7HD8j2V4uy;@GOZDs-q6vG*My-y>s zFJ8-^l`AqJXpU2TX5+}M#w_$ettKPV;;xlKj4#Hm#Q2&h4UYW6z5gsLuG*aSn@f&0 z_3&T_$+Bs+!WEGtv#iKPkyXnix0(<)_D7-n7a_{skJZ-sdO}|mehC}fWj1@g zZ;szg|4tE80b&qPwNmr7*A3$llbxVBT3B5ivYb6+V|hJmvGwl#Q(F4Va>vDuJy%-N znaO(59xY0xoJFDaqlJ)So4UnJ%YS>`QBxeVE#f-J7<`(?h|{^eQper4l*n$4TBH6( z;>DEGoqwF>1Aru|-fhW#^5@a`=@3J1FH@;R`@K}@S)`4)RWScy5g z)s)IMk#ow@8a%P$#adJEV$jkq?LDFytEz6+CXqort;K)1@{UvFr*6Gdayq>9eZUA4 z)as$hpBv2?yG+H-WUAP<%Mpa{3gYIhaVtvA46*=%u3rnp%RSF1u8|fpeL0U{qCUq zN>{%ZP3d9nk5k(y=7b-2e_N4CFwQkc)g+qlpPT@(OPKeI=~F0zfGOI!?2-_l}%-MP1aCcM8yEs0c}e2gH*vH0Rb~eT}+5 zO3gXO`=$ln9jN4wl&O57qwoHrVf|q8o$w7?B&<8Q;3d! zKu3FR@+6^I{_D`SD-n9=U!uB;n=SOJ0bA_&F%@9JQw{|SPa_^&ly81Q zQiM9~U`zHW{6~nf)Ud1kYKW+em>Tw8u?2vN_~Pfp|08IsnbL%I=zotgk}tf0@#*fR z`)6-_SXpfP!Ban#Ezo0r4KKWCM{`*nca{yy4i)shIBaV51mK@w5&VizaEVfZTpR++ z>+kGwPi`1{o~EPYfM_)_K6t)Vng03Phky=i2vQETl!||jP^)L{nRBPZKGeAyYU#4A zqwQ2M6tj?aN}xud)^{dyO#Kp{5kh zro#(+_n% zIfTVyMp5?3A(=?3wS{5UTV|cBsXQP8WdeA0U;TW89DVG3Z8zt(ihjy=q*17UGW(>7 zBDR}tvRq;*xnkcDN+P`3u+vbf>r8%K!0j1Ut2XtmbMY-Y|n^r^Ip+#y4X>>Vnmr8nB32>N!Duu?$Ck1 zkZ+%6T*W_V#t0a+q3t)vnhMaGO#t&}_?7XrsmSsIJ29p>powgSZ zdPEMZat^gfl~2vElL9SLC~X{}LcXy=)*F!ojgdU8-jpuC^>wUo0u}t?R}%igCWc?$ zb6J3oxQTRT>OX?7r}IZ8`b`Ga^=iLfU`rI|GFH-+BWoAI!(hm?G}K;c?qzd{_4%yg zU@(A~mSPb8|fT_Lz%^iBOMT(CFuceD8sUTxY)gZ7N9f6f!2jls1h&c4K@6Cr0 zR>8|>XNuv{a5kimnkvl<#p+v zpG=8Lp#t~w-IKNR50_kdjks+<^C-YpYN1WyK^Caq)FLx$)2}MZ`XX?xmOP&=SA4y&QER4{e4Yf?V%y|5j8%HeBpR2x55XQqAq z32M8g$|#uCN$8cMLYdq9okXSO+mMZdDA}_VoEQq;dn`)9B$w249_SYo zNN@$uaV!sw7F_xGQ6$-uovBiHC?mxSh~-(E;pUo)24h}HS9(5ix?^F4@t4a~&G)d9CkbwD6j%u}|aB2=KE=q@}NR{vAA@6Ln3$R3q|Yg5Z0i)aup# zmA^&}>>G7qAED!9I;Kq*c4C9#oJJeBWmGxtO{0B#z;`Ymyx__#E`)VQUW}1r?;>;C zSf~%43om8_BO-5$Wa+)S9$QX_zLT4_nyePaQg4{qRzM!>PNRasePx=~j%0t%Yhg#% z_SuVXrA_F!e06LrFp_&7Jy&rP@N;n{_?Gq$t;l`? zKp{^djI~+kPt`+^EBFA$6h`n8&fxbR%4{5M>>a_5kdDkh`S>^B#7nBzN2|UIV>ji> z>>Q=3PQQtkIYg@hmUMtC8OD@tXQQs2vh^ex`8XXPCM$qm-S7;@vxtR7E4{y=D+hRj z&Jh^HfH4SNo8aL?bh>p&6~CF}nDkV%R!sIv+^HF!q6^pBMvYa%#rwU$ycqDkmjz!} z;flJR47B8-*BUs4l(yHhVIM7BaR40EfCYcxbWFUqC$@z9^KsIQ6Vx$xLx~@TQny=! z7d$uf6a3erA{?9?giUWet8zpE40qXF=bAbf+UW*V3@TozIB+|>?uCbv(3$(zKg=PD zr!Z6J<7za-mq0Dz<`GvGxbIky@7n3Y;oExTXq-EHLxUDOuLX%esR>Oql@xjj1j7gz8l*d4%jtbpr`j??wg`BQ2t zneMvs4{qc6n6tX7EAgS}ZS_dks~6}8wG?eJ>#zs&&+F=}Ggwd=n}Yn%X6yqwlx#=oa3pKhFGNt zAv;AFkk{d6c-Jb`qMtsRQ`0M4#Xq%wVcsKQ+W$iUFuv+P0?PKaQV3G}5JJwzrq^wr z#W1#zI9_A(gafaCr*o{;c7jrW9;X2SFh+oZDF>6vKEaYrLchXT76)>?3c8R(;H#MB z5|-Bagb32+xPP1ZP*Qv#)CP{`)B$)b%&>35H(qb|UhXWj*1ECH=?!@HHtl zV0(Z7rSpB;y~9^98o2$_ir4lUh}h2Gt0t6u;Ap{QH@K5d(qTc51RwD$q}8-#r9o;oe`Lzq zV8uOG*XnPR6W;bqaLmtb@*HIVi*duj!Dg-Y=#cf)LY^kG#5s%HG09!-a0(&Y-(y$d zvllYp9!C2``4YMeC%$BJ84{BaNL+vr@Cu~RPTm&pjTn`_fBa}WGtWX>YKHQBE6nI8 zC240!_ilLm+5rsB506?`fl}_@I&`5}(Z>(AE_T}Ha2epW5-8FT5}h8UZ>#SgKUr(F z@*>%suV5-p`DYTR1+>!)FYPA>{K`kKE)Ws0t&&&`y3m@p;AHzFu79R+^aSv?qx@TA zXdW1r`37TvWkOF`fsb9wjM1lW8u#Eu+l?`LM3I!UL`ZpH1ZEAeI!Ex@Uocg>Eocea(|*T%rgt@5nxe3N zzV5k5-BePr%)Nk6wD8qkT%F(3arEoigZGnzp&h@1K1&d|_S#@2fcLzQezmzFbJ_!q za(c0Bo9JEr8xz3;*U)gYjO%41z)#X@voc36swlCU5E9M-Y>tn>i!gbrBY#=LjrIbZ zFrK6Y!?1s)oGNN~Cn&y$oN;~vycPwiv_EGMD(6}Tc|uUdJN(*EJ|E#@@$3)9k_}Tk zpAoITK)wQ4f6&Vn{$qz+72Xa>=DCZq4Jeued_9+0`~nMNG#QzV z;@Di)*%t2+4mM_+b>C@1PQ)v`aAb?|o$ENAr!zt~F;1zfE1OA;osC#?9FNH1NfR*A z2)mu$KT0j%2sqNuTGjBR-N*y>ZdGL7CV>}UZrnDc23ARjWr{#j_bh&tmBbZfDIPHs zNA<^BecLj(y45-O2NV|*u>w2$&0ry~Jv=YICzIu<5oaTAB5sDBO~aGcuG_%uvmUh( zSI*m##i4oIB3#32kuwJ&^Q8FcWAIui6#1!|K~-4;fw9wB10KWz?R;UM*Y(j8qzA-^ zthrLHaT|9bXkK%2!~n89Tdm467eID{GnQ@E`lWe`?#$uz;3q2GWkFC^!=RXI|n>bfQ`LDR29h=F0P`4_K5y}G6obfYcKpgHZR9` ziG1@qs{Ur~I?4ptb%3-Y*ygCWCdBbIH5*!|6IQ2yeVBB`jcO0yMd@@m(ohs9zIA8b zL>9WpDOKONR|DU#)HO1Az*W(ZBok0OY70SX9x~*uvi@=jIm<=QV7UA^(IVxm){80( zoHdp#KQ`L+mY1lHBp7s{DKTy(f-}@KWekwnb1Eta@gd)>x*7!djV^TYBx$ zi)oz;rN05w?UiGZM{8NWUUf}(SDTCrkR{O{xujm8Hm?BT1$X180inN~muA>764&(A z^*}fh2@rjC9;3MdHuWA0E?1TxeSQ@KZ2h74pVg6B#v9)pE*WaRX3ilY~CTKddbY4K#6L399Ve}Jx~0WTOm z2cZUAg(Z~d+zS?AQj)%)LDTVs_!+I=oVc}m+`mg$v#x4GZ>^s)HtQ75Du9mJj1d6F zv4~a#F{=I`W4-UIEtH4R!B3>K45w@Q&=&B^D~IbEFng})q~UwpYq$O*AZ(Fi%_w|I z0p_c6GW-qHANrTv7Ne;#iunF^K+%Mc&1%J~n7MhsEtbeGU2G{&6- zA|STcrwc>tYM}*ayIgdN39H*-QoM+s##_wTTH{|8T^RniUa7Wb6p?nL<>km9(h+bN@%h0AAq7)8NpUg z5$(ic6t4zn>8#YVX_y-B{~4(|f&TQU&OY#wE~B{+W_r>`?*gW*P0RNR@5y3pa97aw zYdP&TpsqB`y`8+5bvON5n*=(ujBHpM!XEI$JR>3O2=i&Dr!+GPl6Kuj8;o0ZF>@kH z*w;jaxgARg&NS2fRv46`Mt@!jgX%%5PLDQGo>#%hMX&1a^z4Vr1RW{;K*>AlK3)bt zz{c1{ftEk)S==eCkCz+WVg}jov=rb;HUW`{BAvR98JE_1qPI04{(0oM34rU5fEW- zEa+dw*;=(Hez0Kr!QJ+P?I8f8k9d}JbyIKWP(%aN1$Ysxhw3LKd$;aXX=d$6ncz9F zq95RG-cxdT>QT$B!>715_Z#rvbM)h$_Az~zZG`s?k$H=?YS6v^-IIi#%hg4{c&C)W zB}(hKQev$6C=&e1641{ozb|c1S5?HBB031OYWLdca1B8AJC0hpo{lalS8%ioqGf@C1yv_=D!Z`T7i6Ao^;Qf>t zqU8v6fJ7u>XI+PLDhTE>{~Z8?@7&eTKkl-`-g5;bld* z{i4gE?1Wq6FhqCr>L+?B;01TiGoJhp-`J2p(F}-_QG!C)1}IoC?K;1FAZULGm9r^S zhN+*S7n0n_PU>r?Dkr|RxRJfwhNE;ke?TYZgZT~p^pP@0cgW%owFX01VrOMEdZ+N` z$0N;$MvocWdvw3v5qnw^D>>qYM5nDQ#%^+aow1P>*q5rPs{GXb^5(NE$G@j2g&u=< z(uW%zv%>(*@ZNg4lKxFE{*`rVF?l(Hg;(wPPPV8$MTq(&qty&8^pW%zYwrfh+b`}Y zFoI5_S&TP>V^PODt^2TL|^wwJk?vMJl5JlhipokiY$(5 zwWXX#;Igq2bkvO_>d-hwU58oW%-hIc#C)>RvQJSxKNEM3!~Ct2^ij;4W`@kS8!dO) z770JPFZemfz10D)`+FJv&aW!e`6I zc)v+;S7Vbh><3)7ES2qF%)4obIdqw5`VrQ@u3}`^A?~fNei|aG{qcNlv|?yG1G{J5 z(TTc;jHf)HsO4A)(!Z*6gMUBIVh!kEIl=?LMQ{%gAAd~hUYsdC<&3KLwPKL=(b=AD zMyh;4`FBH}f<#77M_a~>(R3St>3Mz7Oz{2rNYFTG!0-ecd=VOIie9z+$59h!+ppr+ z4fbi%MK@x=tJYCm%OXb$nVIhJ*JuTd(*cB1Kq0)0KqUY17LYwuf*%762xKbnQ|Hvr zkeh@AR_T6qYb$)(_jmrt0=&8Fhk|Mo59}4IA#aDnDTU*ZEv{WlC-IC zv>^UN+KZ}OjO>-*)Kopqh7c!YaMMO6)wH3tc&&S|(gBiWk4nRPKzy5hzW z3J3`K9y(8aWrxdaudzZe2quj=ggERr7$#l94@$bBNTsoPtFGC7=G0re&@U5ndC>IT zuG2-HO=ySFJEk$B0hyNg3Ta}3&4kIeL7+F0?YKlV??;oB{XJtg@MwzCGR({sNA?oP z<^o+V|7MqCRFo??p>^4si*ZLPfEPMHmDAf6VZj8))(ADgH&)lKkLxjp=$wv6htP*C zb6`<>0VbL=XrB|B&l92IebOTMXXG2p1NBd*dFFYZmZULpM+H}ZP;^*o%#{|}*Sm0U zd|u6+Q}o9y!{e&9so49zbI1~muAj{WUcyg1)rq7aF@KXp6vWh4dv+ZWz>al6@0Yx= z)uD6!Wx%B(X_$_gx)KAEte zloEdy)d2P${GI8gW1o{h-9iYhcIkx%R%pHw|?eZUp$}u53ShWWBIWB&h zLC_83cL%qQr|CRgr372N{9e8>mAx!UAPOA20Il8)RYo1%r)~bNz*IIPPGZH@1fAnj z&A6NW{|M&t_eFBY)X>MMlC`+5GH&yU8frfIQgQjlU1m2L>^OcBOd|%14tSQO2HLCt z(ox>~RwFt<3&%QyJnfKWpNxeSF7uZLo-B7<-p&A7J0G-8exG*FyJ2W+&9q*QF57?u zEL7TvWj=G?lfCjJyfpyGBXx>nDT=(rJ9QX)FD$t|N9Q&f;7#RtVn6Zdh&+sF1&e5K zu~(fMrPqt@Q&6Z!%~y&pX|@a?HnE;zOM=ycf`suLe(zem)-3N@b}n_obD*ZD^JAU* z^*=ZoQEs1;31}br6|klFvUOqfWS<<=PxU{QyTcg)6r5}t_csZolhxE|Ajp4H&e7xD z|2o8!z#IYMz*t;-3)Pm9u}y^u;++rB3u64jq93DK~+$ zw2LuABZZI(`*X}F__xWjmsv+5wM46XT4vmH*W1~NprnY~F=v$3m1iKy^T)E5v4Jh|Kr^k~SL)4>Dt zMxqCX^Wma$S;pr{i^8g$!ieev=zQsSGEXEDyv0`KP*H2p@M~4?#~L|E8WLMPa{xOU zw!zaa<0F;9bfYJ3bzcK7cFYE9w~sMioG_g|nXkAsg_fC~eD80h<(A5%9uP~|0EVMt_|>4? zeoe7`DH!4>x4Rf?KRL9Zx3d#VYG#Bp(~go?XZhTf3HlNvt8ZPofR5dm*yz9i>Klk* zr#;yzY88meWAIOmR3FBZaB|)SNx)&HVh+$jx;oEl-T?ukP;*#c8GrZ_+&nsGlkG?^ zzx^sK&cVKFm%TL78@o3SUCRZM#n}5r1^X!Wh}R~age-?>cO*Dk%t%htK<3kx>$%x4 z5PEKpu6yt&eCv{m>gT0t?fT+aXuE}-)2g1zLryC~ z2k-Kt4e-LMs+>J{^xtcy4}w0_aJkb4ptn_)<{??$q$43~Btfa50iN`7t=^+Pt=rSZ zDrOzrp|fj(sy|w;@($ap;0bE9MPPYg1ax?r9VVHFt!xl1*N~x!}4y#Jhd@NAT6%iJSErZu7gsw5x#w%#hWDiOMma>X%yt%%cUGB z&0xu`g)O7mH1-6S4>qM>>ys6NLC~HBxLD$4jC11f@*EJw^uQMCdsZnfaZP2R4ceo) zT+nEHsT@WV%TrfrZND3n%QCunL%liH3kicfzTmycNQuzvyp#M)@^;p*w1F)$iyT++ z68gOfgymptjZUI@SJ<8J9C_x?b`==c`yauhZdelq z>_{beBzHptGVaHeX5}GSu&4}$PPIk7>y?xdF0%ra4ge<%5R{d^G zWX#AYtaM3&l!RRVUO+0of3bI{(~=Tud4O^8X>ar$gz_JZoh|g*PF}o-HfEZ74g|1yUXqAOhVBa@|Ns?nYYi(3X1OA~ltpo~!_CvJ&s8Fe=>)g3Qeq7&>9El^fKO|q4_Htm7f#Xp!f@D)f&a{=~ zwAOA_@VY$xs`Ax}kYyy`r5_dW?>|85OE7*San#^jdB0{IrECh?eY1Tjyf;87NYK4x zz>;?N8AAk7Yzpc$O7^KCx?1mbPj2oc^TQT$O^j497>?7xlPMr2IjC&)4Xc_xS7u8V zpq+X^#fpQWchWv(MtjSeJA6y(C}HJIy&4DY+U36fRU2!~?6-DncS88^2mS8y-er7k zIiS|ys+IGb)341wYyFbBfRdgb!Lrw(mA@iADJh`bfCE!-Nrn*JPZQ8!S)O&@?Q(e6 z6XePdLo*Z{363*?OZmsp0@oe$TPuHTP9MSFwm@Snm!X~CWa$iqx(f!;rwNcj0B#$K zI2+&(l%X()Tb~)UTrqy9L3llZ`mE;BI&= z1^33YnxWsrietv@$~bC3Mo$AKwErWhRXe8QI66ai6bZ%nfijp<70MMnMT5h`AW-&jq({Eyx zLYs4)qus9I1#M4l)0J(=Z2UTnCYX{AA;Pu+97tS?1A`yc3IA>hzj7Z^M_z1Nq~w9p zSYaX91MC;FBTd@dfP#kq>mfzfF9eL8{}aMds3tWkzI{qtvSLRctIxD@=wc{ygFUgJ-&s)1d`_azUF>z#_0KlN9IoC_U1 zu&xylEp{>s^dZe72Us|55cziI-OesV;nClC$89V>rHuv-V{7< zF@*EkMg_RqUF=H&qE&~Fj_;YA2{-Inqg-<=0sKAYovLL6bHhz*2_uW>Ia!1AMVWz@ zlLc;>om_)bQ}=nV417T+P%1s<;y(hh`?Gh5zi9WR715H5bkZMdNVT(z`L*Sq^XtK1{zijO^%x>$15e3A z!|hG3@&$9|tiC4S#+_KU*H2PqYl8)LTA`vBxO+^AvV$MkS~)_r9fh^$y(iE2zlfDi z1RTf`?5jGw9Ae9OrI?d)C&s;4VK;1S&}X_pFGgcqf-ui~869vSF52186Iq7)UOM>T z4ew%yV|PhZk#zl;^x@lqf=dK#$=$kWekAAQ@++W;*J+c9gxR_#s8&!-#IGRhssK zLzFyy1CI=a`nVgJwY^`JtR;(Dt4_m2*28`mx-ucl7mmBS^7XjYe`8;C-(vS)c%D<% zev*<*+6jgIDM9VexyXM;_C@X8<7v=#;ufg|ebG)FFkci%vm+e&!1ec(R2F%tACHh} zay0xJt?}_=>ksLzFb`tFMBDL-=6+v~wKL+vQjLPVks=%Vo5qa_X}b-7we|XL2ZN38 zH~$g58Rrlk^d~sf?=<{9rZX?Y8uC|jC^O@wtim} zV-QZ(&k|@10wKw?nrERCf%U&VCD>iU+J~jCD3KQdoWSh`|98&__0KEV@*U{keKmXo zd>XcRji>xF+it@~x$MV>oK7hJ<(gT=J$Dl(rPB*RDpAm>pdi@CYMoh6D~yGlTJ|GO zRK7f`u}uxX^+J=Ws&cHqXSAk&xI}{}pgF_!VJu(+Yw_Ke@Ty^6ha4k)#KLppg1c?6 zn`6wg+|vqIKGaBL?Z#ncCh!xePm?Ea&xv_1;nOAe_#Fc;$wmUK{J=jEDCJ3^CDiTQ zerua_E&m>``s6!s7#mvR%)}LCdN%pu{E0@KE#3)Fukb&TzB-_(_xm3eL68vXoU}>_ zNXJyV1VlQffYbz}YcLV%5)n{DCfy8>PU#M*(H#OCY#=aT+xvGv-`~I6z1#CV_qpes z=bYE;yo!{aG;Nrbv&{e90K!maXd)#>x@3NoRN+7#3cc9Cim7TP}LM}BpbR{%uX zmlZ6zW>|`*FMZ!he<1tU`*tYa<03CZSz7_6n6qqwuY|mb7jA31 zd@ea+a>B)>cWn=Chnn~@jHXp5$nU&UG#%z-pS*K|`1EJ!eR<3g{dbVbw2489@f7?1 zO}ASkw2dkC*(c(vPhZTu@3~^GGGTg^a9*hKdh5E=#h0^+Lf;^=L#+appCUZ;3i%X| z!hK@GjE#m_jy{FS6n=WFm0kFyGfC$sP0z2y4;QblD^AR!Si$0fRvopxYa57kBSA<3 z*$ZvpO3r5g;_aIIbM(mtuDaLlRx=`L$RG!1 z?zO#f+shZ^nPufRTAm-xF3n!OUQ)W~ZDv^bc5RqlfZbz;+?$xIxqLCbN&Y&pKbUOn zv*E9FsqCV-UFW0?bFp6$6PX7r_wyYDQ6k2*&lq<^qSPjg^qeJ~i z3GeCTnQNld-`5{~Ib)75(`P^pDr{y_$rnYvd?jF{fGk#JvMk5mPHd}&D9Zf)#I}1w zrECuwm2tgaoslss>)I2ZAE9o4=rgiU6Yoos*)U}Oxe7?9$)NqDrQ4giF1}R19=`ba zn&MYBM~)=VG&%obo$5rn)>4FtrIuOU-8;u3_y0;i;YjIcP@oi;z}3PUbVt9NPhmND zBM!{@rq|N%Ilj^$)7u^z(l#+t=6s?I^g6S%W?}o{z-7YMR@3~YZ@FdSCP>WwUU+k1 zgJXt3fq}|sgX9D1P`8ADVGsQv%9Zz`!=9jYJIPU>yGQBnDb6Bhhp?w~CmtWKyA`zO zFuh>mHVh`~;40#ilG1Q_2>XpGy{*9 zm`Hp*s-lugV=d`h=~1Z$6W;j5Z&V0PX^qs+JzjoJ^_%%(7bp}Ut~kQ_eI6HhpS^em zIyVU24hm(O)OZANP{yFg-$}QL8$JNMV(vh%)HZat73N=Q`8iDD}Ky7P{kWMC!=Tb#*gb$_9JQC7q(+D zU5i{oO)d?0wvZ$3%LhY8FkUbJQQlnkh? znLFZKA6o!k?zQF!h&c^XZW(rJFqudWzDyrBsL41gO*0UEc&e5CC6_)rk%NNKtxE9gAo2Al8h@d?j5yT=OS$^*yfQymncmzJHIt$V zdD*IOEdKp(s6vozxX**6{g>+e>_V*>J=r%u_`9OtoH)Rr2O?DrW2TmL$rpSp@aE3$ zI7y6{s=KVYjc@0FWE`>fxjduUlI1X=#!Lsn(#EBC&qa7VBhITdzKA_gd4hZwzwyt2 z*YrJs>Gr~vOab;r}k3QKy|UVqn7qRvT^z-8QF2q2gR2omUg`eEr`t0 zClc;acb$&s8=37Y?I}@_9lZ*lvy{XJdUChpWaAr%JxdcPyiOF;p$}j&C<4bn;YlxN z0vEj$MK90T1*#xI>KDmu#ZCcn@Z)po$L5lEw{Y6vq=Tn(f03}ceuyXu^^dIg$yhF$jre2zC1-U}+%hRYBguFp^B`4Qp z>8y#pLO^(d9A5)))Ww~xOJ(1j`2?ieD1h5l>+a4_jLX#3SJgbXe8Pk)>17aOVB8BNEPMwy2y;nwD?SFM-hy_OkSfTPUk|IlJpf9wHw_I6;W<%+v8BcD9 z1to!Db(1TGLvP7>2I#TmOya`f!tS377 z=NuisE?}f}gZWaR1FJ2O&>;0T^vTV=A00%u{l@@%MYtCOi}^X5E(=Caw;F|rAkxmW z?@ztFh=Ogdv~KqBh+_$f%^|;Up$)?Rx+1Wi$^BG2Cmt|8Hj}vu|9S}41CeyfZYoh% zY?GZI2eATGgAt+p8}!i?n?p9dd_~hFzQ1z$51*GM70D3qExAd zcGg?;vmJ#ko_N_*yO~GHm5V}#ekI}^Yx5xH`4h?*F^do}iSnh4+a7S)Oy{^(v7N}c zJvM}ittl!=ng7i#>+ikEaiqA~4!mq$-=p>uq%{oywYR+lp5U+Gz8o?jniVVBh$e_= z*lqo70B4NjEkX1@wB`O}1!s1(0YzVV@3V8)@FfmXF@RWIn`5)TD8wYbecuFsV8MOfz)8`oo+`mium)398XMOZg*vKY;cIh- z*G7diFB4-uc3pveQwv_30}4Aq*5KOmC)}!PBqm}FsA=``YJ9WZFisW7E~T5h^w2$W zoh7OK$rpP0iQyE9R+PZYf;+XpqfCC$ql*Y49^)k1Dr`XwTCoB_JO;>qC~dnV_`wl4 zkrT=Om-VCQ=SmGjcVu8lE=B=~f$9R|_Elw{yR(pn$@;pr9ZX95D+|ItNq#?Dde>4^ z3OrwO+3EHG(TzbSw1S+xLaIQ)b)e){_T3#SW1u@WvBw792?Xv=gA;k$dcqH3nD%D`M0pxs9t;plXr3pl$V)0GvV&eitU%@B5-KG}7lJ@ISI=O{v%Y zn2ET-|9|=TWf`qJ-G5~M<-k&6wG8JNb-&6GqrQ4g-$iU{H8{LXA+Wlxh)irK?X=Jo z)%kfHTna8wHZ%fVlshcIYZ+jyK^fFg$beo~EV->o z%tw^Ap!Cwy5LXfyWz~)7E)6oLt!LqEd#Lj`{(L)Q`_lYe#S^%8hxpMqo%kQwnc4bS zKoNenCami}vMPOL1KE^hH9mNvv#8$FQ{Ut@obSPaBXRO1d!@Dp5ASUNi{4Q%`>Uz- z4|(LjdL{`B+h>tiXG#;82EeLBflEk(t60O~2mNUQd79bT_V7fto+=>4cE=uXi@SRo z^Q$2(b~pJyGE+-PB$yfVC1@%j)Ccq=bAwRX2E|JNQG#+K>7n zV`Qz9*Xo!dF2`Qnyh;nJsCpM>F`Y3GDx|R_nZ4K9e%B=liCQ+7$7q2B|lN1;9U)w6K%Y{O< zNy8mnP9u{ROOjkCnWQ5DtQ=Zb`W@_PZu);@mBTj6sA#amu%#4CC+{ZkLCIuB-Ro0d zI2|r*7|bI>&TjVVb;ycz_|0BDWGqocB`9YvE)wR4u;c2%o$=h@ifbamu&ofx`t*`Y(78jg3 z_yb_vc;Fr)@sfOj4n`MI@OXmA+3^&Kjv7yui${!+256(Uj@S+$rY;DqmnV8Ez`n+y zu(^u6fQ|IBt#p5|J+a&P|>87lEBOPY-l7P1h-E}6zv1iB)T#D^|SSk^;;dz{6B*?WRQ3z$htHm z%l9>Fe9T{+QJ(3v=K*tAz|w!rR>F?(Up)({XxxAKuR;s}G+UNI6Xfh{D&g}ozhU}- z87>9nEfn-1G{~ba7NYLoL35@B{Kl?U`BC6roo8k|a#9 zP&7b3xUgQpWNunF@s|u`5{6LVwS$9;JQoZB99&e-`5zh54hkl4OKd{-=u-+HJ<|Q7 zz_OLrwuIdbVG7%_f_L5|D1X(FDQWRzUjCo$^y~=t6QK3mpfbTCcLM-mYy?7;xBr{_ zTTeYWQ1nJszSt$v`QcA}PF!cL;*gb_BpGq(;Cx|?0B|7y0EqA-aVr7o`;Vnw|ClSF z!1zvJO5yJT-d)XA1zZfkH+7DIYu&iiGvB`^{Q(R?V#nH!;X<}y=HuzA&~f~qLGhAQ zG{P5dZUkJ~2B)-oDmWf1B;Y^y2-@^NC@l?)srsW9vCxtK>JRGpCYZq0bY=4RErSfR zw`5j!#}A(rc;~=>WcBKm7OMFNi{wCclqEwu6)i~UKP8sJJITZD+6>vPT1Z|2UmchN zMT&dlUEg(XjFw(R5c82+W^lX$<=O8Aspd?^rBsqkL@_Xq-qrfZ;~@V@Hz>XVKUsT4 z`=TCAnn1(XVgUA*dwsq+)je*V1T!=UtK}KVA)5P|#w7fJ4Y>h87uWtHTRheP;HhuM z%G=fD)<1P~VeY{|teLol#g zU4bZ)7jY(re`P_AHI2Bo)CKP97|R4|D?m=K?{KYFvAv2db$-;O5xBDt7^~&3Cq5n8 zJSjo+0RnTY=Q1GAHm1FTiT}v7Yl(>@=3Kxv-BQgCJlK-Jn;PhyIT8^t71kdc^t5}k zIl&~12w@4nj)r3`-SszydsOc!Y;HxV**F6;UCRMr+!BoH6Zi-VoIvrin)RSLdYdqO z#8KD++T&TJ@30@xIVrF0@md_R!I|-6CD37Bf^C(VKjBl4ktbZqXNABRzmGpi%SY|J z-32>;uF(6xhTJc9K`ovPz(PB%*u2=zIMF)d{NFD&c;%CNIiy1KUK+@}^!AQ_f72^7 zqjwxHbQYD!J=&Mb6+w(do~X9r0l#@uwjIK6!o!zlT?`FU;O^HQjRqE@p7^iJ*09?O zvxvBSErEaGriYPeqpSwrH+>0O(j)|HK+E}(l_T;ju>sr@A8xk_!lVGUsVVXX{H+T^ zIB?l)$1rK!n20>=xoW)ZG@s!y)?_NA*4DjX=i9=RGreK#NCL+X+@$#;Kp1>^qn$d%Y#lJ8FT&(gs{$+M zK(>V?&EQcy{amj*`kFBu!m?T$X7%9V-KV)D}U~2xh?x57--*jw7)Es{jJ~`sU-` zEx5!K0_}@D1NV1+dwJrUB)VTS>Tf@}u*3smLnN84%Oe6e_a=Lxob2UWHAFKKq6;|L z?8`0pZ^{mi@HL?pZaESyP0~`V1kBKp)M zQ*N*e8aTzwmL@9Ne!s}zz(V!l5b29BKw>8%67G7{wBYFai7_h(V?>Xa*E{490DTdhsGA1 z-)fb>>Ts5VGKbpPbRrH%W)SN@jsHKgeyED3itdqZ%TjcjR2|$-5)d!|1b(vI>vztz zd3HUSHxNMKd~IoUKB5bK;u>IOvqnQmpg*qQr?%z$BVFRxgl|~`x=^Hi4IWI`MLCz&*pHB4=r-6 z)JYQkw2yFdrDH9=dj$qayf>E?+hm@KDMZEf=-deLDfFT6#WBhaK2f~bZ8arM&TN-vrRi}>l5I73I3Bl@jB%5(qrgn1_dLM@m{@&=AI5^WJ7WvY0 zp1ql2G-ieUrujLR~wT z{b!xTpA5fA%bA7_W=_NkxJ$_F{mha5qN?I*@sumeD;<~5i+k0a+)od?#M#*ZJ#1`I zcL?;pvV&(p#m0ib7w*+Wn8j+XVQ+NoCaR9znVxv0`xe3J>37?-{&?%e9N)H|$x-BR znU767>N0?I8!I`Rh7p6;t>B&|)Q#X>8NwGUK-w?oEdAG1oh5I=F{>~$ zjPMd)=Xd)e^H*wi)8ps?_=|JOwP?Y*f5Hk}Kw|PBZPtTy*TCgo!)(e>b`#)vP{)^u zyJ3R)J*uUX&NGP+5F?4d4Bmf*n{y_(xQIDivf;SEbd{Bp@}4i$Z?NA`AVOEcPJ61i z1Jz7{_7|4Z_rejMY_3gqd@Tbftf+)biY?w%@v$}{nBe1!*DH>GT-%Hrb8(#`P4N?d zf}O2Jq&W`!hwz>E5>N;zgo{MAuU?0Y@6ng%wCYG6Y_;9&PnOzuZ#)GGUr1BN9v*o! zdWxT8hAL22eb^beyeaG4@zh_sH!XkH=w}JHC9aJBq!>DtGt< zO)DB4oh&|A-SRGUun0Z03ogB{496BeP@Qt#K*-QHWS<3ejd1zyfnIuz23lJXB(|$pY1OblQsBPaYU+ zzCR_WCRtf+_WKOhc`kaDQL5v%hf=)!$8H^&eJUT{KVAj4OIF2iCma*q^6@G$I0uXw z$5IdNIk2f@glv9OQ3&U(SX-J-7gEg0lX=wc>>g;wt+Em{2;`f*a3E~ zaO%HOg|@tC;(k&InBucE;*VA>4}Ols=5%gWZZF6X4j;5p2x@8^JS%I4N5BF+??-WV zMWZGwbgr9$Uv;=u(67a2_xFWSO!KCn3Y<7HI4JuJ0xYnOxnUA@2{!L{hEX7Y|E0l~ zK0fBkLo%n|n{9Aq6b}#X-?v|FEmFviqB_TUm|#nLyWUQ!!y&uy+^i{w!?yD|Jq|>o zX1cV=1)vAS3-B+Z6%>HYqWzCG&dDcdeIf)~Ww>f^|=hX#b|m zt}rT6W3KE(Lk~+PPYAFNSaIHK)}{3G9ODzN)dDzGHe=tvz5C5rV>R` zx}_~j<(^k4ay;DIfS@m|f^y!z?fd<3>mE775#%SNffZx9F2Mr36R(YZ8z*i~cJY=9 zEG`Xs9}J2+O~$Z`dpf$xDI6?hCZ5rmPoJ0k3;Z{4x3Ns-&)%mrYZ4f5S7&-x{5BU4 z&_p9AFjY+!8dAJIcdgsMBEF3KHl&I*y(ZsTp$}?d!u{yew$kRWSX?aalLh@tKeoy7= z838oDI~J(V6h4#4v|O$i!HB<|8(_Sm(i-!5WF_rbYQf3?pZ6zK>cjpU6>t#1Scc$5 zb`#)lJy}-<*MIOx(7KjelFKHUa%MMjnQvmoBZcdmTz>RX+!D?yi0|GAiYzzyBsr@3 zqRHL_I%?8``m>N5bS_;#!)^H$wP%Pv0bI!_J_qM9xd@r5*r}@%kYBs=WOu5~8AkRe zjNWolt8)J=g|mgM{5IF!?uxJ;m?GdP(gGRR$0IQWX?Lf;DdHn#j=?7N5#H#~jw?pI z^g0OreI4%$=Lod#H*3_SG3asYSqq6HDgYf5A_!7b=mbT|kL9Au)#2NGNk1gxNC7b5 zoxVwdx89&qUG{l z@to8bDX#mHi=hVJbU>A1;y@D-acFuWo9N1_aH%Y9pnE??8rSerOjOR?*aO_P)1d-L z+{R*cr`Kx@AJfV6{Q~mCYsIUSnG|~5RJrHN2hSzn!b=a1OY_rskwr7o=7ymsUd%9}f_L68 zPfrBN{D-_}BXqPdY!HhN(L6DclS&9(hdhDtS51>RZF)m!ocOb3<=L3=Q=!0wN+&9X zdKAUF`hwrP{Xh{|L&bY**^U zH@3hAtp-}QUmJ-)4t%^VlDU4`vg zeWB&D@@;y%2IwyaZ63vPIQLl3o$9#9DTD=ty8PlO4EqXHEndN0N|<^*i&x&--3Z$G z0fa?2J@98qJe#I13Vl8gfb%4wYery-zuK~bkB*G26ve7s#&@xIn=jc|O9b=_9H`6> z-0~WqTzWs*3MCwW@BryB1vG8}$3yPCv6i@vPdc_NST_}XJ=>8f(o&q(t*JohsPHud zu_;5bhkT5b;4lL?l zrNZR7TlZ&%e?fe+GwBUeaOuFBBH~$snG|K_8@)^K0F=1x zse5pSY0~#TQ0{sjaLN6hjnu}H9cH$lN-OCz@2a22h{XQS{q&AcCt%N^u{=Klh z6uCKF6g~f3ByS2Pya8q0k*!clNVvW%axn>nJ|Ch9x-FdU0!?Zdo4Rq#I&MtsPse7yM8iS}m_&`Q0k_k+# zn>RD$%uUj{W`Vk@Mi~Fn)2)@dp32}?C(jo+G_#}sKx%i<%fcT#K|Po1BPm0M18ro; z)LL4ljfYI3^gRvD-cbt2S>cyv=P^L%FD{twq`K8eP5HfdNIM13jS9PYE9;QN->JuO zU0z})8b|TLlnJLQFaFfIn}r(u1}T^8AXnk@NVeK7J3#vy8ccYWrjI(rv{REEaNl+?1$$e{<3A2Wa89vCX4>Y0gN2IC_vAkSAz! z{;evBhYMA3FYmO~Pee;y53>t4#~l?B9Agwo4Ee(nA|-w%X;_JFA>VpT2%=+)wQ@3b)YJsO~^(p%zg=0DQp zV2XUFo7pwFQCFXgxwv{+gNx#(su-mn8rM%;o30@-4P4IvFd{nh22yB%oA(QvJ$Y*4Q4V@T1QB+tsPrVgCMLr>hTRH zVo!sd;aOlMJCj$qX{9g5jtUSTYbo+U~ z)~>MQ+lc1SJ)gT%)~x00HEDy{MutF_!?lm^6UbE4x+)`!L1}E)X(<7 zdq2jQW0Wi=Lz8-qGMYzyodec+{TLSUn zf@}hv-5X&QoXuyvhtE*E%6`J7%(T?|B7b@}8+5yRFjt1ZSEGyL=7fDg<8=8@sWfKX zYTI15(b1eXxhvnD!^ZPR_&Bq;`BDM7r)*w92E)awn2}zhvd!I8So_yfXYD95)}tG< z-&Lbh798c-9vYS+V9#Ci@K%VKe-Q5Lxn;RD^C(zT4kl1hjk|r2pt4=8F?ifWmLvi-nR?t(!eql&bvuIO zV>}Wr5KI}Ns`N}CN+gSd?7GOZpJ9x@RbS-0<_{u$xF0{0-S9KD67*_(23)%I)s?wN zRv$J-EH$aoY;2Ex_)Q(QS2+YLDl4QG2>DIm3fDl14W5ei;r#h;jFZjoKHX+hE1~r- zs8lq9h_hMuB71J>(R~b_GNAn%s@cJOudQzNT@L-8UQuAjv*}k*Xzs`NVJ4HUO5N>3 z6C48;D~n+lS|cODv-z9dJ1lMQZ+?kL+9}lC0CXqirtC<6ICNbdsHegs|Bb?-|I3=W zBw7QqqJ!%LVyOFK<5@ar6(}AEoIkkX{rh_n_0ExxZ8gDC4-TI{y#yTiGl@l|GdSL8 zwOaP4d+k=-Axi&KSxSQJ!g}#(wK4ccD=pBf&AIQ0R^))CzClXqRrz~486Xi%+hKnc z0l8~hN%KhkP@AEY4tk-3MPVM4!I*JOmj?A0>Woc84Q!MJVU45_5Y}W=3ajZv`{uFe zHF5m1R-1ig@*-z4Ubz3aJIDO&PS>m}(>o5yER=*Wx&WQ$KKISY~^_SDx zhbE5cq@%rnzGtdbFa~TjRQn&TN}M<65W74N`L%EaGJi^JxqTwbzJolBcQJ6&5O<2^Xg%(Y zl79ivf6P|6XM9B}C|IIaVGPB0Lq%{$X9f5-Ir#7W=9z`bcY9lLap)qWA!D$pxVW;m zSXIMk$$l=>Ac*~RH9niotHedfKk>N^4fJ1xB_3Y#SKoL|N<4ToZbPC~#<{p}HuK}t zJe8MmN0Gh>LG%Nho(m@%{%O1oP3Z=>EUuL3b*^wSi?6Xp32Y#AHU}r%b zVii;f;}+wDGAhmr7}T9Ip0`H?kkz0ZfI1!6;%=rD*PzO`q7y`<(%1@ohje(FHY65I zHd!is1>g)2jj>09ZvUrM4%xdr?*&B#1h2*;w_6@5fZ7CO*^oPyVsxdk+(mQ{fa-q< z0X8$x<_y^lj>t?V2z(l78GN(!=vJ@Kv~iP}>P=!p*yF(dwfjBL0J`-x_&x7-(;k#o4p;#=2tXHCxdM@!XTQpAUC#MNCG<3SH5W94BPLsm%oG!X zUj~@rQut|@cV*h{3(@`{tkxO!-T3l(e;vH$l;gR;xl#VNvLS#oS$G$`X(yyS8#C-3 zt)jbiR}|FeuGT7%{tH?W$_B-KJbT-3GVnU%R?{DbUpA+PMHG$(2uWYn z31pcO+IjIgE+yn)9PRP1I)!An!c0FFe!9O@;*RY$3R12mzY}cV?Ai{3{7nbDwa`%( zIR0H_Y&GFQl5-@b`rY;RzWDLPUeR27qfMe;5w@SrGbQdvek7nhLb)Xp^IZeK9ZJ!7}9I=kw0y#MT=}N?pI{3H~`RpWf$kN>UYo`cLUM zpU(M`V@@~`9(8H5b+{HiA114`oLLMc0HjPh5}_aZLL3^HQ;xIG}U zPD3Z}4P|P+(NRjlUgOF;cMK~a;(?uMrHMr`s)BCb%f3#k_aXY;zZ|8S2b9Av| zZSP2=P#(y2GC{nf^}?(fCZ0=4Hefvpq7GsNz*l0fm=}UQzZ)BIr=>wysN4$)&lNfR zj317^2O{FO-|)1Bwy(Ji9t{Rf9R-5TQj{d-fep3+4TUk{3YmC3!)5d@FYdx4WvqCI zfk4~c3mdj+B_E{F=v(D`z3j#tX8huBH`hfDvXciYZB?W zwFnvT`;r<0S-)p5KnUsT#-!`$?smv*xqB}pXr3!kQ3|zjuG9ZcjsvlJa_Zm% z@|WGj(eGw)zy2fRH5PuQR3Xx1d~^BE3;K39$JVx{ww^m4v`g^IvJh)x92{y$3#4(K z5!7y@B3XR#{-W9hk*p?SI*?SLy)Nx1{NZ$)YV4?{p6oxecIdZhjeL)NMfc^pnx&2TCMY&X|Y-k46t-0j{-S`(Qn%%o=1f#TMVUJWv3SR z^V2+hOhZMG)T-66IByB{7?s-)(0ur$-zKxK1xGdkQ$Ds{5Zfv^_8IIA><$EN=4yHf z{5d6~@Ybh!1b(=Q>fsTnYLeynu56HG8byC#%3dhclD$}Y5NsF&;|}nRNzvmtX07hm zCAI;DOebXppGwlqxzytIRc9Br&Fqh;lf~DRDeDy)W=~c;M|}GECxh3X~|D(VkttDF9Ssazy<{49qYw5>baO|#&7YR6y`Un{Y6NT}~ z5-IBwG1{G=0$9Ia$k(_=gx~K+w{DTm_Fyg!y#Mly| z<9aJRoJL+KH~rX2G%5JcNc2eZ*VVI-)^;%N>~D0Ek{Rfa z)YJZ}xF0rAZ00nG(UPKbgxyC}=eL{*m59&>*Q{2z8PnS8n7OB;%^7g<7bI8qyh4wF6WC^70NFua0#pP0>m_`F0$7UqAg2 z==H(({(caj+1muuz(XsuIXcPbS$%Q((E&xXU!yd0Hsm8S9|LE_Y+LNxMK2 zA?q;zMa()HZIFk{%{ zgy&SBZl`a1RwaWWOvc~8?$+)5e2q$pFV-FB^6NvU%SsK%RSj0hTMD$f9hT-boBTLK zUY2>e%ddQ*ao`sDd=fUp#+dviTczx0Ep^q$#KxbEnMQ2Px-?>r@iiRkX#qF))N6u* z1k9`<{M8z4ojYF#dna31kGsx#?~L;bvb{Phzx{oJ-j1q51TMSDDEGQo^}X0gOlP{} zz&@0xH{UfbO29eX%Ckx!=Q(GagGIHu0FMR(YE>rSr;)ABS_eViZyMYTwJv@9>Njic{ z&yRwMqF5Aq=1S?W>~FYzFE6CPm*}d&jm@7Y!50G1Iag2I%K2(1g!$*p3-=&ZTK&V* zmY%+@dE{_k#2#d21OPmQ-Bo4nzJ$qc`IDJckXZ1lzge2%_~I9D0BuVZuQ)shCTWH z3;+E1a&|#xkt=J>CsK6=9|^ol)g}@Irp(UQwq-0;o5|;qVCa~$u_b6P$os~EU7Gxm z*M<2&aDJG{$k*W?GpFaDIkhu9SKg4)Z~#`<6fLn$eoBFK3`+LtYbCcKnEj%GZx;c4 zS!=JDiL>7%(~AIX9cdNkF>pqwbpR=m6rWk#i_3)ENnT?l(RqFl0ViB0UUt`NARhXUxcbBZR{7e|Q9StHX+?a<@O0{M zBgGR+wu&ju7jddf@qG)H_xd^`yhF=;0})TtRmR`lNy=@ffiT)ER$JWZ`?;A}bGeeE z{N%w~9v`#vH}?@R3pX>?#A9umusUuGv1l=TD zxfT~qKNp^GXD(5N$}ztw(2U^+4==RRz@B}iUul%zWzQqA$W&kWr!!r!zT0+gxEO44 zEZXLNs2(UJpV%At5q?*+W4mT8Wcrw(J~bDV{+n)zBUWuh!O%_TXOhjXzsQp{kR<&& z>hfX z(Ytqvr;b06gvq;*qh|7)R0^(xfG8x_pG|7qSI(Wls&;Eld1nk_n$$#gd_a)EssET^RwAQwi^jki#@XYvWH}-L9f85ox$tY6gJ1frvNx|U0~YE_NXz! z@DnWhze!T1F>R^bk8z>aRU;}d|Lx@GAKG|!^!pZ@8GD0Hw;c5$H!6e89PPFRqi@IH zOIkY~ku$r=XF|Ri-h0XD@$oYSeK7UgID9`1kDa_sh69H-rbS6hH`8+A$y4^S^!+HY z_pdUk9(qWYF>g85ROVPbMR<-L+1@6t!|J)As)um!ooj4WE7w&_~n9ON4g z<#)@!TPDj)e9eg(VOylNM5UiAMcf;6E9(uAWRQLG^E0Hbx&G;I?$G_#%&S~?{Wy@p zH%2M0@RtjnkZog~7N(Tfr}J-~Sa8L;?Pt_z?L3g*GolrDn5y%zTI`!`SC2s07=6vG z4p*)LGLaYG3(WM0+OjJ%b9x02sL4iOhDx}IB|V5iaxXnwlKvo2SR3oZ@?6coxF}+~ zi)My*=T^J~Hq&5^R-5k&aYs4WbhWErs|Y5rikz{BFk9wNx+jq-8EZTZ0P^v_ ziBaN$H?9nylX-QC1tXxVeYz^gJFk33H`4Fi5`ST~7E z;mXNI;;7>1lh8!}1pu}Q02O)~(_Ym^%>kGLbF?ZFFm-oGgL<4|KgP0^yy8x1%}I1Z zM1*_3w5yz~deV0Q4XQe-W%V z+>N=xRZQdSr|VjyD@{JYFP?@?X6l9_`wX4WUIp`?Bo~AT17LqNhVDM+m9X9~hloGP zkg;|eTrz=cag*DjXA+vC!P%P?bNdHk?ECJXS69T9nd%W1Xdlg9H*mv%hg%ir^m{Zo znV>db(9d&K_kz;q5pq-sf>)gCKLfynZz8(Ss>8#Z4240FY7zu)AKZOeaJBoux!c{6 z`OFZ3Q?9Ox+b4_Z?6voyY-epa7?MvSHHo zI=Z_)!LaGTj(=knugJP_Sblpk(0>^+Em`E&_BD%vNY)G7twv0B2beknMT_silSM!w zULb7fCOj}nnlypjc>#1ob|mHoFgULt*o9=sBuWstimtSmK08mmVke=afTk%VBcu3z zxS=@+s}7onj?%JV5l0oFg4hVsEw!uL2anj5U$W2n^0?9OLi#W$0+;*Mvn9Vtev`if zGQIn&*mnqwQpq-N1UfFHU*!5j+lT*=4LB?6pvR9M!#l47N>XU>=KRUQZh>nzFj#IN z8|7n#Oye#CNF~{Oklj_FllLsKpwKDPKojFLr;jfLF1y)B%ykY$aa3$LOagE}jwGwq z6ZG)@>I!&*!w}C)PXJ1OV&sm_)oHY^fOg%_lILFhKaQ?Ctf{vRqlkzoArewkK~hQy z$*CYA!Vo2-rl53(G!u{z>5!DEh)7Pl8AuC=&||JbM0$`;gc75p8Xds_IRy8_6$Y@k!!_1RucB z`Bmimt^lb9xPM{SsXybGB((>t-WhMB=VQ=6N}F;myHrpo8=0v24NyGk+pYXfQjRgr z?Vk9UIGQMFvQ0CT`hmL2hYmOl&wtkFd0Sum2--q~&c~v0u*=WCheHp?#5F+&b|jhY z=MW-**tzl06%5xHS2cFz2_As=aE`+6o#x6#4hQA=K8_8+4z`vE%k$mYq>s z5hUg{8d)tEPk^myF*y&m%}9D^*$2#!Iew@3f!4=f!cT}}lT@jY$=W1m82e_%R>+Vr zaXb-oV*ONQ@UY+qQGj&y9*Z_yM?Ch$*Y{*c-N8s`1xE^fw)@GQd(;`>6U;IHGe>ys z;Jcj;Zs@z9dx~CNl3yX?&60idDDvfW6NBW<+^eS=dFo+sBD=SewC*B2dJJ-#@Z8RJK)4tzB0vGdHC)p{?Vtx+a^m9e^obK`#tI zaVERsgAL^vnoVj89A7d7o;M6UZ~lO2ZA+B-+}g|JcvDmr7*tF)&joRt!p2EGZ%1OA zXqi~518N-Fo}z8eC|@AVr5aIRuTsweVMwQIyDwNiE^o7Y<)z$d@D(ofd;vzU z;&-=6^5Y@jUOmtMXl{`o5~KsFiO97G(4^XpaIG3HuTvVmyVv~`%u!eewS&V^yDnPf zV6PLAJ620(AyLoQEAC5G#aTWn3+iQNUo$fSbb-|KE+uBi120Ove=Depf^ijAY?NeA zq&leEhft!#+?IefgTq*P+k$u)8VtKfZ8e_%o(>99eZ-0HYJuDiM9hElHBmDfPbxaM zf0Q}Z%nu;4jg+P`m$99#!y7i351S7+kI|=tQ#s}`DQ_$hZGnJQE;`Z`zP!EnnVQzI zfy99z+r)*gU-9kyq0laLS{$ed|3s;BMJ(Mo`|Xp@a)ZeidnC>Yvn>$R>gcuc`0OTz zEN1bgWrP%G_>RKxZ-BW84q2DszJ%x1D*@?bUInlY*x@-gUC-Z2SoUK!dNOwk{=U6R zZ?%iI{Owrdc;I-P&G74foFiFTJoib3t(*AdNx?V_WO~Akl1^TMV)|Y*PCq)EMPjm> zSBhvNf|y@so(SRGuR2?=37NG(C>@K#z}w&35=sn4bzpjwanPT&`QQ_1kW$U^NM|jn zSw7~55@bNCPJdRbWdjXpZnk#0lN@A217FfooYcChOrb25zDSh!p*nVZMH z;xd4CWs&2%?Tgx}7ca&B1{>sUiUH$hm7!tYEZp-Vb17Ke@ItihH+9#@-TpPEnG2Zg z4WRkGIosdAo3I~IYyWc#lPyfUFQ$N&5rKgSu)$W^C95}FbK)DNrfMCNN9&!FaTyWUGSAW ziyc9in*G}>?-2IKgV}V4Kce>(Ak^kyJ3Fure$-#%kAeODcHiiX?^6iYgok>OmXgJ| z1AC{m7&>tkLXvwSgvxu_kQfY0l!DHKRLTpixLu$_llKwDDQpZezc4rLNMl=xt`Je| zK9)P-fsnaHNpfA;^c^m4dl0NygBzLKh@`N-=a0g(nWapoBJf5k!)u)bIy)gyzgjAj zGNp0lO{blg(+ppc{~*>%7Qi(z_0?5=5 zZCwc5q6oTGrsO^@0N1e2j(Q1CA!H-(EH^TbFiG5@es1yo>In$y#Ay^OjOO}zL$kJZsZ9TLd!nOs zssac0YC^+bAZhm`;8ezGAdn;-E{xYoZxb#8RK#-t1bs&md?xMRr01ztgvOdTAjmw2 zB;H9|MHThi*fBP;qfwx0-`vxLrArW^6q0;7lgYJ=TlR1V-_g-@*Nx>c1`2-1><3d?e(h=Q;! zCmR;i8?_(PNq9<^Q9< z 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
  • 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 z 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 z z!^J3*$}FGP7exa&7R72t>iQ+m8K{o?dj8CK)At49VV3Rp3+v!FHhk9bLtoLYO|59D zluyf$RzLVt5yqm3=a+qjW^?4gRQI`=1x00?5eX4ofeCj?N_lx4`?lXegEfY?QRnx; zcRu_2yNB71lkr|k`?yNgJK)JzsYSR4GKP{atGJ>&`v1b50IiaTDJ$x1YPuQ;tjqpV zu*di)n}u^}Yow{Qsw#xN^wEU3)bV`ZVahXd-usslj#<4zFCol&x4DZ{g(c+c8puAj-(y%nnQ3$zCNZ>~U|r{o3uNt3Jsx(<^tVpYJZ@3C-aSPLjrQ zofj?C;yE}@dv1DC)vvoCE(teTf1*X7G~N=TZczG(+DM2)e1HfMZR^O^GrtPmVIp6~ zRpeeBggqTHUbs~rcpM;(XQY;Cr_>P;#a*1U_RGq*N!l!&vFeEn__JQM_xL7NSi+S0 zhib0qYwg*BIkp|ns$!%H8oX3(`}D?t2a%&L$tC&w)1ET!7lL}FprMu~(6hu|qvdHJ z+Hev#(0{h9{J@2A-N|nCeOB*;L0t4W%D+0NdAC@xDQR2t^QS$&rCRN`;&UZVx%Wja zT^kZN(*-0@3u$(bem$zR$|La*{(IQ>-;6KLbYR64#o`<3K#CI1s#5<{kh=$z*dXV4 z*G0{v8Bj7tq^>yuPp1GET(8V|-^Y8q7g8n#SDrnU_=}=Sz#_1Qj4H2_MTq}G{;IIn z7WqO$nb)btDbp?R9WAl=Z~U{-koNlH;+EJkHu{-!ExN;XqTjWADo={c!ljzTkK!}d z`>u8WUAXk|jNg}WGK!`K!K8DMO8;WnaP}e6qFqKoPGpOU*JM*Bhn(cf9f>}JSAXt{ zpdS+os{0KEuw$9N_fM*8Tw6>TLLHm>dOTZ+haQmk&t)m-^9=`=3Lmpwc64)*1>Flg zQHrD6!EMO2f^U(A8>?QzstsicCiqx^`TpxgX(XpzES@d(m zPU%axwmV;F>1*Rw9fv?OuzB{jz0ImiPxHE=i)P2i%4p`Z)TH)tN*t1*155IJl##~o zEvxprKsW4K-W~?5hd0BkC5(^7TeG)WeLKYG@b_F+X)juyC^ga7S3zC^ZJ}74VZ_Cz za3f}qg$w${A;&k_s+>bZtc7DA0dyY6)~q!pxS7&Tb!viDA&YeMR_YNNu4K z$!B&;#_y|O!-4j;>{^`n)K9^l+M{{vhztvssu7zJ%|HEDb%P1pD?imJ){5AM=QFfH*Mw53hwl z-Yn=omcJG67kS7>MYp)!*nWVF0}ipk(pRx{N-f&(ok0i@W3s1{1|aZDs!ONUBw`B& z{)D#m41U$}l)KbO$U$l3Q2h=EzL&;p=}WXb)1gJPj@NpXT~BKtt%p1%<^H^IxAYc6 z)2;i-pGV7?KL$MOJ)6A$K2OhfvncOcv?;MZa^F>j<2_xiYGk)LxghH8uMO*KWnv_u zL*a(C+?gyYQa(~{#NqbqI`ca0f{PA*rq@{$0>$TLlS==RUFyL?*+72ovf zrvh1l*jI*Dj)$i={uI(**i#a_PQh@F^9`X==1H$$eQ{=|Q=Ky&ch$bM99gN)x>qq= z#d^|^!(ZT8Y^K`$qKW!Da+d`9^y@=78C08(zac+Szs@KuDwJvP_w_m|W-#osI5AGi zaVRLixMI+pS@k=Tc?P6jJ+GJ0Q$Fw*Q>Rd3U8P#AFAjG4;6eXp6!WAMX^X;zr6`kj znPLOGf_(^SyQHN_3w_@XG5B9%dKitzA!}pIPdefZ>mB_`7Um1OP*5`hptla6gLtP+ zeLY%H$a9-sjY|BuvP|j?nuDXF?r-1Oc5bK9k>Xzt`nC0wjA+w2X1B_7+YQO`Z(6jo z*O`gQ`Rn*n_3xQ#Pg@>WvzC9zU?$QFsB#p4Mu{}ReuQqbS>nZ}8o5`1ev2sgzk5kw z1K{EH!Dg5+T;$ zQ!wd4uH3udKhWJ7SWg-1-Uv~ue&7f_1T8Aiv9U*c)%&T8Y%?#r{E}>zJzs(#mK6wZ z`~K3L?PQZ@mMN6nYR;<#BlL4bS3))jIm-xYC40%=d0=vm{s&Io2gZp-r>$DrUGb$= zkZydk62Qj*U2S$JLREW-e0%fjDjhi_kELEqj(l=o%8wx~S^!vIF}9LVC^yqDvNPj= z80QA}MnO>Rbo-fnA)%Btu(ylSE???p-l>c}Jcm4J2xFeCr|=xT^Qr#tKVr7KL)EQ= zl$ci4Ky-Tg_$PT|n02=3{)wxDyszG=r`~15+1JE5_TDa!&gWo#?pBg;v)? zH{GdIIL+F3QjZyk{5A{){GFr5guYl_OJ?A!!`8Pi^F{Y1m?F9~#V3CDKO0 z<77dPS}2-JAR?V-tko+HSb^pnzR)V#6?#VP1iHP#vwsr0NQt>@T$Cv}E2~eI`_pF~ zmR+g!*CiP&YHq5r-BC5Vsb46lw3Pn_?es(R zLaxPC&KljTYy?0S`96*y8Nm4DEu1T(qgC9IE%VLk?3jIhu-_QL8_tk$Q%6lZ1hit` zVG5sbiihM4iqLrJJiKj5L}o(9Lv2Elc`}m&wUkeoXT*oIZ}$^O*SL5W=NtE{j8;qDkQ4eKM)@-c!@P-QEZ|oVs6{bt4IfHzX3O5i&d`Ozn)m)i zF6Es=UP?_adxO9-5z0-pRuoXk)?vGp>o*>wwSaxcrTnv&v|YzAE@{dwIlpPrqEXW0 z3(AHxGHXj&YLT3#PVV3H3QHzoblxZmHq`n=9BI@gF=*Xo9bx34&dEsIEIyTz7fQJ7 z56@p?3NcbHN7>@TEF;41J2315TS=fK`jNhlqDuP^v0`uk$Fc~&d1ILid@31%U?FTW zN+j`~>gNl7Y>MFZh;_=O6Hip9oH*E=A{)t4;~N!UOT|*e&foEBzkb*YRG9q}`b>lE znk^>hG|g)^trEh{iz@!x3n7_drINJv@T z6X=pI3n7m`hqy{_kIOm^I{Oken4FfhKu6Bs&}Pc}bR{Um5f4;p)?j^qJ=cB(5&C3~ zRzMN1z)co4iEF%3%x`;<(276$6|t*!^UNJ<$f8zdVntj))B&uQOODA=0G{aN2-+W1 zT-utkly87JlrvvdLE47399W7ER^!I%MLXu%FHXNKi~LWmk@>NwUxY3YQP)}?kveh) zouiR2vmz~Pj_K-yGCBBZzSC_7^PDqi6__(Vd2=E_RW`HI*e%=ZoxWH3Rzvx=L} z1T+6(F>*)q_FK0zYATV+zv*ob^t|8C=PS{~>Lt-q7?=57Zu8RT>ol97Nf7}Ibb?n- zcEbiYQh>NfS3th`AZf4Ws%bQ;3L|}z7XP8knAy$T-UKAW1URA!Py9lVSd18+2Xnvv z!XGt_qcqoGY^J!HJ${McVPa%xv(cxBmmy)fn)X!@>Kq47YxZYRR@cXWrqzh<03?k8 zro?f&(dOsSrh#bf*ib+K;|EGT@QzNc>r>wk;}h}g4M*y0AC|?+W7H(ZJ?8=1#wBlL z*k&Djo5f}&4eMswN&g$Q#7#_Hva(F+rp$=k6521;XhoFG6XArHGAknrd^$ECt^#@Q z=nKHUA+5p$>;8mO6kK3aWsQ{s&Y=$^Vn1IPF_jMuBX9=wA}Wq&H< zVH8vFUq1f@`k0PfF|%e^0)7QUXcX-TWz(rKvUx$*biWleDsTj%n(;<8pcyMF|AgeM zNP$z|a(tgzACC^4Nx>^_v=HuX_Z6AnOs8R}b(x{BFNF4ui%1+h%l_>%kQ z#+6u87j^5zT1L!n{o~uth&CUI%d6JsEvyTfEtH`rqQeTx5OKy!A;J#MDV35*O2B=- z{pAN^1Rv|xpuV3Mh zN(YhqoI~c;MlmuNHO&UAOw`vg78J57P5wFvUdE{qj&|84{t?2+c)D*CMXMpw*0Qkw zrfie4!nz@}!Z7)J^L>Y*b4Q3~yx|S%NRuzAQZJL(X{=as{*O)V#r}z4ol%=}bL;Lz z<|U6d{}(v=`P4;)(GT$i__;?d@$j72*idy@r0WE~zB1oxyu_F%Ha2O6^AXTrq1?l+ z5v#iGRZ1i|xFxhAt*qV6Fi!OiaF(898O2p%&MF<-Yx5?7L-!g}u!}u%we^XH&$NXC ziafr=p<8o2T{iue3LL@Rfr#W52^zf7@pa84&*dG(XJS_eMisMf*3q{Sx#rDQVsVon zx{wGd>x?PfQ}dGM1P$q@?k2N)xOizS7@X?)JS!sqQ88ph^Oiu-Mqb|~Pg*rW zp}UQ&L-@V>PFUu7`jedy;Tzx6HK#TH6ric1sEs_kPu#DH0Eiw&eZG$X(EB7->n@2? zQFa%!#)5>rHvGH*|C;fqe3tfW{D817YOZ>F@ zMSsOSH1H~K6YTx5rNEP4I@Iz z)Tm3Hu}2=ZzMS-t)K}D8Wm=Lg_d&(ROieQ4?wG zi*Hhqx6}31JR{u6k4tj$lJeFmbCz$g&*<|2yn0XCdi{S=6H-5gSR`~#)nI=C#B;QIX8z zae;WK!Ss@1^UhmJcoeteKokJEf# z<>{#mwx35Umq}@K!_1w&`Sfqc<%K$FOjKmLVC^Su#mK7|HMm>H&UgI)Q<81Qv;$6l z8$u~q?4&DR%sP4ycU&|$4pvSw{1PAX_TA4zeV@Sle-4LMDQ^cPWi*T0f09d9w**oU zQ*sX?Ma3*G$93->?+duGB=bJk+{iKEF$7a<7P9|7V<_XbZPjeQ(DU*`+3l>|bC9Wl zz^tw?18?F!hB^Y$xXNGHjLxxm#MYNnA(DRM?drkqHViN4sYBplD?r!*xg{MDco59>0D_tGBA zDJ;HZjQjXebLXbkpN=LA`~LfFhUW6)ZgJ*r z5eQkIMl=^*aP^pqdZKLQ&oxg>UaEBn8g)k2suKR6!M#KcalZa)x9@j7D2-dxWK&U# zY7f;a2QrUuAW?cG#rMwi8(u1t8R;yp|F}o`a$n#Y-KmsaGFTFaL1GpKAoRzX+2LtE z0r!3eLnqUpiL(@VAny1kJoOs4*|xe=d$#rmPliM8+LY7U#nMb)s+yl+Qv7{AE&K#M zfLgL->Q#Sn=(YWqmp1bYHYwJd&(b)y& zFHK{b(u*n*TJb zhj+4Uv-hD@M(jzMtJ{+t#|eD7Y*Gt>+y+SlYV<-_b@A^2nQKcX*1r=5Mte+^^#VR^ zXZt^&sw_`YE1?;h#$G?`4dsqvKT_qCw30uE+pO%_4|zTJ`MYoJvytv>cRoJ)C!Rlw zQzEshdc}OQ>v7LN5Fmq0NlC;WK4Amv=N9=Yc68BGt z#!BRt0UDM6d2@@-7s@7DUTbxHsGw-plAtxS`f& zFzo5sr)y|Hg9t3gl%Bp;zoPOkQ^|48o$Uj~T z{Y_50s#2@dH?w|hxc23l7%7MUCzev^R8DhHA88Gg_%Pz+HAFBrWIgNZ@u|25VmT zH@Bl)m+6%fq*$h_>>z%z0h7;89Ns?WvANpqUt?&0e&s6-Vj~TrzN^jZSAUYmu;0|m z$ro4i_;Fuj^NuZ{GwneaiOhy$Z53fQ!-!K7_o4 ziJgi@zY1%`2&5<8ch({Fel2XcAqC$^+GzTNcA3f}%8_DUkR*hSN!QO{&#x`?1*p&v4=GMjEj%Va?Jg-Z{Iy6&6R$u9J*#Q z^;4vRUfZ?ktj{CG_!brGmV!fN|K0!E?scRCV)AY1zDEh;NfrG9=OX`AtI?(7j&;Cv z3l^-y#2d%J0^r+|;%_$zS71c3zGepi?k#YWmnfJL#(i`Pnl2oQs=Qb9 zV8J7pXrM^v5nKp~e0~1!?Zpm1CLrf8n)C=@W%Q$W20+2;Kl=3_Ur;qaAENYMQ661L zh32h+c65+ac^*!CJb-e~P}z>I}1TYyh>_Kf6y=_o_>V+-9d~uT!9$!G=|Y<1F`|vVW*slY>iJ(QnWW%Kbb*4R9~Jr>C=mhg0aBVa@3R z+KOT&r}q22lIDa-prJYn6sOOfWJ5&F@{CZ|p-xUu4qWiE5BGO2|ZRb|n&I z?SDAZ(f(-mugyB_>g{D$OGq2B&><_<+5GQ1U(H4LYCueoOmJx0P7H?<4FUV>`MjWs z;$a$bT(DsKkM?4W@`?5Ew4lra?QgzU928#J4az*n;U}ycQ7SXaa=g8sjVXOsp$(9=eD)kBbaY`ec<6^Rz*cw6O3U zcW^jpbJ|CJ5J;}#g9b0fp^mpe_WL~G^CZ3bDZ@32Dz5~PNpVx*z5n^*wLGPeH)RMw zpW2RLee2rU3jAA=-7|-04o~b;Rv6zDPAbYwy~Aq5s4pHe0KMA5H178!>4sblCePwF z{psM{ldRtkpL3E$1VblLT{$){GW~~wM)Bob{c>irS{Ut{dNf12XUJ2~zX|XJe37e3 z;}wFFiVv6V=PI4gt(eKC!T-J*P#d1eWfU>h8(3;;SRDn|ozTtt| zqmSd4oCQO99kqfShRu-@XTo%`kj?b+(O?Z1bSzZFGQ2YXyF~-K{s#0{wcvaVo)6`o zRF$k%a_4)qgZkwfgR2`MJL`rUbm%vsY~}m@0~>N5Am`NOq-~Hr$+Le~zRv{cQtKUS z7iy|^xB>dha3qQkd2Q!*9t~`JQAxr@@=9JxLNq76^@xX@Z;+q;dfv?3ezs4E4x@Gn z96(?FgplNz3KN)9zAJDpl!I*3vK5Z|82x??V`!}`-k+E~^`O#KHb8^g3k|5+*HC*O zT8NJgk~PM9H|cV0JjiLH%4bXb0C)1>}I5PJaPv!b>$l(F*!_2z#pe21F0?&yURA@bs) z9j4EyIlglabwBU=vlUeCW6u^<$NzmTH&cx>4Fg772g=))!#LUX-zjsIj5z$OsJ3$- ztM84ww7}9hHptg%s3Esc)_w`(8+E9FhTq0Z8uVS>cRai`P0?j!N}WEP_WHj)cE?>r zDKC-7Z?$s>rH5a~0*{(|Z;M7{=V49{*+4N9eP1cXV|8#<}YcWSQytVwL!C1@L=w~}9xnAdl z@9U*cbBPRct_0b3Wxk4wzg8KeMa!&^?~!4fdT8T+-MpS7l5rh~QQqAS8Xk9N7uhsR zm;13)!-rl7nJ*_cA4CK#RMGx*Gkb9oFSp%qSV1b9&JS(AaCp6N*kN(P2vXL}mOF^R zsi5d*JSdszdMkgO*lNIh)>eRv9$^l?JSpvEwmPZ{tGvdvC#c0!?=c-DGr)jtJPu!c z-c-H8KP#MliJPJs)Qh2B!Vr%ZVTkwMPNTs5Ryjcz-a;TccFtP82F#|My^qgrFs=Sb z%*h$qzH;b?qU(jKH$)S73hy<%!+QZZoO(&C-Od${e6C*0<#Q2BLanw}0k5Gq5Ks9) zTb^H-)!r$p_r)W`C5R@E)vExxD=d|9=hw^OyC5czaN?9wda;GznhJ6+9y3HMllr+J$t$?@a>L> zt|3Oqfb$&4yqUBk?e*=cntoLwdf^@9td-t*KmnG3tzS3mWInsd>hvhS=?H~~Q;hgu zoD>Tp2W{a!PeQ??QH=>S$B~5b-$fwoIzgnCy*#(>9kpkIJUbyX!PICN=8ry6W`?U! z*yH>(>{ane%pVRyJO}W%>&RcOUOgKBV>wb>paaJ6x`OMb-qrRZ}TiuOddudIA)IBCT+%M5p$>Xp_2s!Ci^gnGV5bDZQ9LdCZ$v4 zmfOFSqSN!?lc}xsT4d%_XkDI@fU5%Irzw~fQRdmn+ctw4FYgeG9^n^0A&wOZJ)Alv zh0)9*YW4Ono#rJ=;_FlpPyJqK=Z%TF4>@#e6A^Q#L8x?WhI+*DElO4GH0T82xdndc zV0@Cfykj#!d`5e#RdL!5%?iW|Z8~g+r$6w~4DZ%alf`IRgQaXv0?ge_^a2)NIu^Qe zIdh8SmX?{1->|1in$p)ZO@zEz^oXB4yfL zMDFjE6Lm@l|A3@1+-^8}vX;X2Qh}VLpImQj5Enj?;mveXooi_;@4YohX*P_VaJoHL1gv zL5Lax8z`<`;vXbK#s!DB1R7~fRQ>hUXnx+v5o7^dtM*Ch_>36fyCk)Xf7-s6PQyyJZ(MDu%WCGo! zh)43P8`EXo8!5`T&8cb1C?iJd;Sxo3LIprLc0k$>zDetXb5<`(mA2~i`Y+EyTHCOI z6-3D%xnjWkenpJ-ubQ)vfUo%aQJj8x_zY0Jk22yNL3wp+68WT`;y=ZrwAf||ECBl{ z&cm_${@xulr2g+qHPHA1ZmO6f(b>;Xp5)n;4t$W|Sq^BDCT=S6f|hL?0kKLSIE>K?cxY)u(x;^BHmrGD$AyMAc(t}S=Sf=VDL>6^QIc7QFxbS# zz9oR2fTrErgrm!--la6*)|L=dr7X&`3R+3+GCjhx0RWzWA8W}7DQhu&V1#Dj}F#$ zIF|OXR3$;s8ts^gLy#%j-!((|_~1bSAc=7{_wiv&Mg-(<`PRR3+;Lk>TG|M}2OZ z*K>4J3*@L4y?giwbMImTXI43=-q6pW7wZ3IdBtydE@@i4#-;~^$zZx(il8=@`X_J zv9F++^Xm*H;_uN2{6f_HG3PS}@6M=s!&gK=I(2-uAvIN21+!m(1?@gdzDpWc$FAu8 z;kpQf8~Nf)_A=7#^-s3%?U|oPZNW?k(E0tbvojAh&_AHfcqviv)0(5A#_gp2|7Z!u z$!K7BC)CNb{WyMOZAY&MEMNqj$sR&-S2%m*LZk{-5*=dxFG!JQ{-!h4KsG$$d#Ib^Z zxTSuCE?0Kuj~%Dg`sn#$t%`v40`T*ByuD21oO<K8DPd`!eqo*v_MUn5uihWOR!aJVY}ZG>Zd&WcbTZQrOm+>Ls4u#? zO3|m(q%(qZu~$R+C_eswEK|dj$5be3n4nBb4z>+-9{%rH{lk$6ppi;8ab zNurR7M>(Fd@T7sXcAl~liM|HCh;SC#&ry=yflO^cNt)1!p~-;Jl&-Lh@aJHXjyW87ju6rV z)TFZcid{M9czB2%Rg`(sly);foqP(O;+YiR!> zgj!)IYqlQ8l=q!$HlK-5&FKr$3!1=}+Y|X0xkC*_B*qm!Zx)4AQust84^}A%u&z2= z7S~M!727Cf{p@^KYrHbg*gV!6gH(2G9LayRE*`0V)|h|hCA+nmwAvlG6ipl~7v=xs z=(^*f{{OhLDk0hP6j3fDdtQ>2kd(bLv$MAg+2cZXToFQCcIMfaUG`pQX5AU*xbgjc z`u*kcIQRM7d%WK7*LuF5FF#NmS)dN<)H~=nhOX}0=5VmyokD7ofox}|F8OlcnP%J~ zht0#g=cX|}R(%i`@%O=t)%9c2=5L-wDK#hTtlMtdHzH|}4)7?W>Z(##I~MQPujU?j z2lFkDG)jf};8<&WM=JSpJN$-p$gJz_4={}}o*}1fB@$z2w_c{dO1ios$xq}Am;qYba>kmT>y(-kM@wUI# zxZL`LJO!=4Vhdfp-OeGWbRun$23T<=9+g;19H_y_oKE*H4^spepcjLBr+bhyhIF;0B^vqarR zu*6^gyS+jF#ROGyU$Wok{BA=v-(Lv;QK8(Vawq&x@YhJ4e6#hfiQI|Csdnk5KGXVp zi77+?cE;D6Fbv<8X57~#2s!W8%$wGs{5#6*0kv=6rXcyY{Z@mmd>=Kmptr9AJIfN3 zJM(9_zg0_L!3L_&aSL)SOhjR1KwkuVo|8zkkkr_j@ z<<@ zjt!{7aiuw#uDj6Vq1jy5@?+qJPvQP`|5H%HBdFm^+iK@<-=EKwC3Ovqm`K3@rK^A4 ztVvT%9KrEhKXAY?EkB;^%)PviG$TK~KIi^EC_e)`om)YhQ0FgnW&IVe!i2&V#@#o- zPlow{Ta~5^gq0;t0k<#obel7|J)PyN?>S%=5pxyHYZD{x+6ybYXop%B?#!rDWSqDt zM{+rxnghvTTB<;zh8Zs_Gheb5^q(fZLR4d}RY^*bT&y_H`hia@c6s~o^EFyt*Ox8| zpiG`<#fxLjA8MOUC&l7K9!_-7{xwvg1|sTD6WMP)c$CQAvUY&W@U8t(K%4W==-=8j zEd2E>Gl{kN^cz2ctHJZmi-Pxm_HOt{o}tK~GwfUSV`qwpzo$h`z?8}Ov^cIX-XNgx z8A)+)a3aZguzH=^2I`CtfGI54!fc{);Ju`HBr zPfKbhGO~x$IWE{3oL0E|tj@e-cH`84q*R+Pfnuxvt#sU5)2!S}_!m+~Q#X1wpQ=>#j*L#vBk|&g`_%Wt zRU0z2(IijlVF-~u3inR*ryv35DFvLCaODMjY$xU*%~J9$ZJMj?v@Ql2XTz@G-rV-g8~Xm4>rpgOy9n>S zyO$*+h{jixjD_l~?7wc*bz_6sv_xD`eg}5`4b&yE%)~^^52dzc4E|>$MgXOp0_S5G zKooTWyiq@H4jJR7qulo8tzwER*Dk7^uO)k~)8*w!Ntqz+ls@o;38}hXj8*(4AKB|4 zO;4vG#FZo!x_Mf=D}l&mevz?qQ|$<*`m)|LE|>n3t9ua5)=o=qc>kr-;#eZ9EDnJ* z8d!|f6dox*0v^_ex^hQ5hfjxreq>J%%mu_r?M~d>`Mi!}g;(Oo=tUr62SWX&dmlj0 z2Z5jFAt3}`<3d`d`Hr~~040pr_wfRyf|u3!*K;dJ6|3otdgI`*hyDRrM`6HPVi5;BjCs zIRwojrb^SYD^afRlBRQOeH^D1x}^gc9EW|1rOf>mOT5b`zb8Ww+@U7v8|g2asREWQ zgya1dLv(X)*QQpZp4P9Dtj(wNy7o+iqcm$&NBkx52!K53Jix576D23EMV7!0S6`-o z3>-qh`r0*OLw?gPEVOh-OQpUq+1xzu)jjGy$xqkxavAK#Ut>`{u}y5pmLuJe zB}5Cr-N5tLEFeBdI;12gzoWY#<47~&`#SQa4l?(#yd1&+6Q%z-@Mwfriet(7o$z$- z$Xj&{&3#aBL(SBQftRPynGGXvu<>T&zIqUkHO=8Z_u&DeWnZ+ac@#;4*~jg|H$5j0R1uh4*#HlM+s*BkQL(I#yAiE3OGe34v7 z;IgzFdjFY2zRGxSFYB&#YQZV$_SayQbe~S}F@=2D6xQR8VA7>t`yIBiCps1MRSK^< zuhysE6k7`_6wHlzbV#^iUN(kC7Vcp@o_w?UQx_yvv)po^(S~VGvri7h~Iwyz`FVFW!lHj1s~nz z-5Cs17-+Xy@jCr(dU%I9YqWn`q_>UeJ#Z7+qTO<-@y<|s8Tp1tLSfYAt&tGJjrItQ zUokIVId3L#WCr#TPbuqpe$ngL>V$pCl0&n8zZ2JCDREMzwA;kZB=IWmxyW0+u`p+! zt1Y~jpS@2zwFYPhKmV2^2+1PtVRjwVN5aA}n>uRlCtRe*J?JYqH<9 zVXs@Xms@laP0+QAm%5ooz^MePqk)&7m>+Rqy6k@5iczgJH!|UOw5S#?_CS?rOm)$K zWGhV@tLqv)CHh`Izp~;EC*6ulF~QLLv3>aP)$TP5p^eqUNp>psQV?qF`}~hoXz<%$ zqqvsL!dsi%qjc6E09GwI!Mf((_Q^kr^;}Qa?oBNbO|@b-Ifui6@KxtaPs8U~8WEBi zR4*q(cuk!ALm4qgf#SYW3Cv9>vlFn6+)y-Ztkre(dw@)?%Q+=g!pV$Sm94et{HCyU z$Lvl|gWEIqRqX{tKkJy8MMh5L7t#_f&-6Wa(M}(!S;auU$uCaS^8+4E5HSsUxkm3i zBNa(f>zp0NB}lBvQ?d*JAX=jQ_NeA?WkDcCPvi6H5rB`9UcCqp65)sJDojs9F>dQO zmb)u0qWjHz`-!d%X)Q_%X3dZq@f&^oH9yl^#8h%vF=w!S^}c99`e`4Y>3Oo0Q4D9E z9F=jem0W_hRFJ(9SqPzV_lR?QxjKp(gDYj)mkxI7o7bVKC(rI@V@#S#4=w~pg8>{ z&=6&H52NNe?s?}4sDrC@Wl_i7r$#*c))s3eD=IH!Q(;w$lcu45$gwKSb9H%czVE_} z_U(}fIxP&m2a2)AJl}o8dSB_$6T#~@`v5`{17?8?^*HNqx96?sX8OqVjIN{v2op9_Kza(D&w!5!(L} z0u6kr+pIE2;Ms>Rbcw>$^;{&%{RZV{SLP?Qn8@Jg8PTqw+2n#U49(HKm~T_xtsZJT zQkp(aCRn+)^VH+pr&O4pupNSZI8ecO1=QMq6#LvPk#xfvn`*yLs~WW%u?z?Wmu6z} zol)z&Dwi=a;ljUTOWMvcqgE1Dir>^ECS_$*S$7PRbp{8^1XM`i?A)=C3Z&wo;K|N2 zhkJ!To9m5Vs9J&dJ!fHkOMDoaGN&+vUU~HoVXyt%bG>P;W^>Cg-1Pg#w~`)riWLc7 z)3&nuTP%xDqLy!N(Hx= z&R^D6KAATd@YvH;e@A*S4Rxmn^>7UidcPDyf0}Y1-4|ZjSxMbr*WF`WaXs2;eYlCf z8vt4>kL}J%?Y~u@ehK;14a3)S{jC>fqP!?-LEm z%qod*%YSid_$(pQUSb;Bgi1V0-S*^Ix7o}*6MVZI#}4LXUjH(DQuuyy^uIA84XH%1 zp%uRz78EctAO8@_Y;}w=Mr+2X@aWT&aTBpO-YU0Mpy6}u)@j!9W_`tP-^Tlh>z^fu z24LnRMiHVuWa{ z6|`-a#jmdE-l-208+|rMl_k;|l4@4`#o2;<09lC%wp@%QGWV(0dB_Hhu0i|SH?hTI zb5@-^-CiC)5p;lksu1Yq3&IQMevcyAmoH}zhls;&yXGy+s66#8OBMctcjm36YS`L9 zshO*|<~-<@PF!X8+>47Mer0eicY^V~@C37@goj+F0FaUok*LJF3Z|nM3mNN?N^YTP zN%!X@iG+7TFouwKpvy#d&l2Jz?XPK*tXfxpzEuHw)V-=h;N=)`+zC{XOCwPE!1GG{ zuZsk-cq_GNJzB?|1uUkJCOOs?zTC|RYHB=6TT~h!y+$o&9zR3w2dGfw1aS0htMvqV zS-$Ld(CFt#;L1)y+PXiedBc_>aMlRKTSdqZ4nirSAg-})HmAKV+sh0m+BfR1)HqE# zd*7UcRQCXnd<0}g>-J)R!@cym8ECZ24iw`PyLYdY!l^n>U~C2okfyp@2ZD5?WwaeQ z&*s2sZ5WSt)wSAg5lv`!p15GpyihUVyJ?YoWV!68f|ZjBe9GwZp34i6=7@EqFOU@k z@-oEvkR9);f!VvBWt{ubAYy%=utz~=vK~&}imhu2)NZUzLPNUs@t2Cum+Lg&+ddEj z$`c}2yxo=yf|FtpJJ9)#ICkj zs*EO8^B4==ndQa5S%eFP5895cQB8O}=%_tePcmNq9XO~yE=rd?pFZJ>7+Rh+8z4Nv zjE%Oo917DewGaJh_=)9N8(8^xKg71(zaHT;W}sY4X1`O%^lo-8*vo=kk4^StG1oC{ zDbSE0c2r>SvbtwRfFkXC;bqgmPe+zZX zG#>P^Z!xtNPByZh97$O#%J4Ef%Z-gu?Xm+xXhBv=pK zute^g(LwvE>8-kOzI2YUhi?sHv#M~+A7K(2l5+(%S>h;(@#L;{{~hWjl{KY z)tV4Zr#-6PyJlMWom9Fmvjs-IH1tdzeU@-^cs;O4EAkfA9|U1?dulEv)$eUm+9ghu zRKlia{xV*mMD{*w$77ajE5vXBNAv6lV@~j^ z-gHs@0>C9^`TIdnR8y_9*Uw+la`@g)izo{kSm|voq3eKKlbR!RC<9rG6gKKPbgdv1&Y@(0wHS`!%Oc~8DY*t@II0-X8# zhrN7vTL9uBA4ErM&sVP##3~5)bJ788y`L@4vzqsU2ij5br>Nm`z2<2r;U@m^S@&{n z3ViLZ-DUZ3E6w^a)-RSWTO%pIF5PnWt(B4Q z#Gz(=jow@nXjBh^WqT~!<0Bu6&e9=kpVj?~dAxLB3aw#HOG_T|ss)Ps<72N;%G_?O zW^^ccZISnTrc~mae*WugO`ohEPqcg*44(sNy1(7K$B*6sU`cax;nRHA+L9^nQQ#c5 zP7zlyrJc+4!g2It-*RX5u7Fc>PvY7s@oHAncBI3!miE600HyIoUMzZBtsEeGr>-jI zuZfOiP(8v!ij^U5m15@ZOXdfB@&DpHPFT?1{>qy=xwXbC^Av-u>(jKdos5j;JL@y^ zD1l3}_m&>5XU2*;5Oii;f7vISKs>GA78uA_K9gko~FU~KZ*o)_8EeSM_6(gy&opv zNt5MqU)c%EOgQVCAGZ?j7~)^l#e9XaHDlfO-M8i{czmXsWUy68?>XH^wVsR^@op5EH} zv|f;11%N6Mi;DNDuAfNn80Bilo%c5RDl7cyo+C*EjU#fu}m=396jD{9?k>W zW>()gMhW>%`G{RxA{4t*(jX(JQ=^W*k+JF$9F$n8tO|AKsl? zI)#gSb7{gLo&6{Ho*NHPQ}uRuw#Hwz;8jBYOnJdAe3SI2cE7aqyp~{Np>Q#LeYVnr z52fQ{nbEypgRetti7T7Vmq1o7>+s7|Uf~L{1_+{+xW8LJ5|=hfQ1IJo z3qD0g2>BhqTn(?Eye{c#>mZ3%wq8lek#g}}{JVeFZa3_!pucxqjIueCDBjUrAr^eTrszaFL1U(-hn=OI0MX3G0kE`QTzuXWsfzi8v`7*M4<& z*ErG3&D79Cp`iYxCGc@?Rcp6befCjP)v_+$UYbKS?M32lF4QnvA+ZS~KpxaPY|2l7 z5H!BRah7A4PyI)y-CU%HHF(K4KVV`z`J<|-Wa(i2NL~7-v>*=3g&!3$H|?7fo6h~A z4s9YU?7Az^)}V4qoNlD{HS<_VJYo!o5sH1ITbIQXwNI9Y>SIcB9GBeEHk6_L6&GJy zl8rPsiIAFz`d2T)o1|yE3G#STH>0V8+xEO#h!$zkHN4^T4_b}$TDwsu#<`49Cwo#^ zO)6Ue!0I`smevx)1|W-Src%9pt)zRxHycYxnZ!HJA?z8P9(mOT;J@?cqg3%qW#Ys- zUael2-m=g;$1>WLq1_8FTY0kEYE*0|Ax`u{t~8N%NK@m)iVabp74i2{d8Nm%eZhn4x%caQl`+JJp1gjPcO*uLx|r320;;e3o{SqSaqL4 zOaGN!rU_N{xskBR&sZM}c^7_*cqt;Ia4I!^zc<*Z9?OXHd8YqucbEPAV(j8$_by%2 zabG?L(LJY*$Z}_9DmY!*=A-`O&N#o1CLOx1wb^#B$?gsMIMje{+(JQ*T(hUb#lwe# zpVrI;rt0{j&ZWXMo~hKN9-k$JGJR1iZzvO_{+fR1m1-)(#U8`yuYUmQEL!P{9eZ}GZ zKx3{q9al$6_GB>btu7}4(=g~5PLcao7sedmW9Qw|&$XxgfZC}(GfH;g24%weh5paIqHLN z7lynVQUQD&(_L9e%yR&N6s7xtRMGc_;?%4QXi_{%xbbG_1*#V_r16&f3vv76eU3O2 zcfmQc= zHH-L=S8tdlK_FBW141FL&IN9D-z*-k+iiJkkX%1(PInhvGpW@E(`+FXzPLYlT^GeE z0`023O)AROPFQ%-*%BHH8fdR+!US}a^eEhH-lxch79AQnj7GF_-p;P#k9klO$zn_? zDigXaj>5Gh34eU0|AHO9VG+I6d-u-Ic}&!E4jhMh4GKxviMYNE#FFHY1(Wta`$hN7%_Rz=40tD(^%a=O~{Ue>Lbh7YQ;x`?9 z`c^xLuB`wic?hA6$I6^#;JOVLk?kM2e5I*?os`vnyEIY-WH#@jN_kZ$B|7i~kysC) zfJUEBiC)be;~2^}(4;&;Jmw5Zo7pV5V{Le$_+#vJ^+;wkJ43#zYqZm>Gtn*Fba6zL zl~{rTY~0n>w!E&)7JIL2s&%7E4@IV4E~_fpLYlKxI9x}M!%Ako zgFUUWWuomIx(>mPP0bN70PTnYoED7rA>hYk*7xZJew+es^hkX8*pgFjL&w&XA(_>B z_GZZK@Sm`gJF%;w3WY%*7R_V$s%Vd^jQc>;(mVS)<`!lTFZ~A4Y{^h~{ua;)7YA?U zwu21-y!yc7V)?+*Z;{H}j9p<5f~8Qzdr&*A;v`7xBHe2Gtg2{9g%qdF%h$2cz8Zc! z)9Sgn?!xiBB=eFge9OAa2(Zbi*GOMa6&>H3m9tUZyrT@@6^{OafJVq;%RtYv0HrNH zAFqq&H9=zUux+C!qAhrBj~`d|g&V2724UDrUglNZ(~mFI={HL3LC3$nE~d}1fWO`8 z0dZCYD)EI*_u+B?-oP8cmr}=*$}BumHdj1$8h~umHR#OIp8m84v{1CML)2(<$7wPf3h_5`m0M6DL2oSkxS7RIq)6V~joLo+rZsfIKL4o_LpxN@uJpBHgyb zjFifchI-JOJ%ji&(hj%^~3yGVM5y+vy0mj8o) znLu24%|JEnMSi0sSr_Y>F&?jYI6#RFjDp^|aZKwBS70K)`HF`u)E++7>aaQ-@XDGo z(Bn->lU=02@dd#3NQd77z>S5WW}NlB!Q@2?rlTQXrMbwFz=4kDg2j_>|2440!=D$B zE%%2;EHL_&KDOTHhOv?g&c@Hk`E`u%n)`pFC&aBib1C1>Rw19^o$N|_xWY~4ue-KS zpIUl8`jG(E%GH|G+bf{CipXs>#ZH?YGr({T25FR(!=W2~&Qbx7he2j|&lmM3^l=~9 z3{vWk;V9e8skBF>o3E#uAXj%4_Fe!H>?5_~q$ylWi6u}bYt(km^468=R7|4!STEMg z<_rB=?E_&d@WfT4*D#z8GujmFid}N@CSd?iuRxv*_`ykqqR2sqnOiQyA5I> zx?@I=r9oI4?r;lZb=s7ZkOqQ6%(bPWsdfXr`HCEIxt@KV!_BTf>;;+Y_j-!F*`sJ$ zIhLUj+MXrZv6K1O1S&!CMgZMkeexegQaejy!_g+y(-3#as^#!#v{d2|`Sk$03OwWo ze{aQ}aaKGv<%WI4?#GyLA=*vpT;P&q^`NfFQ1P;6@Nvjt%nj$}$T>9$oAn#6)qGS0 z<-*=gW|DJ>R8K25Bf=)3)ZG-`bKzpnS+o){R;W)ke<_~f(T>IBa`ezx(3OdZYL8IU zQcqJBw%4Pqm7tW?U#zz%_-3lCj=Q=w>OAjzq;{5D-N2B`{2*B&e9VGd?IHm4AALc! zyTY!6%|z3ShZNr}4Lj4d1*B8YSyt>5PRt?n+^#Qk7aZOlT7|6Td+36%g54CGSf_Pe zUP~q-BPu!XA82gSMuIWMWV-fUPfYON87PZEdM^3hzBS>g3BsOG)e&A#!~jrE_MJk! zgVe3g+$90nKwGOoU7Gw~&@JF>Db~qLGtN%GK*p%p*7P6#HeNGES=#L_*J%{f&)kuv zx}+&DJccX>>LKowcG)+P5~cIqZ(aY7Vm7adH{6Wue+wg&kA~pyJ`3lZ{BUK7d`Cn> zl^SJsR`zu3`eM#ja~rO@&`i?}XMD@_62%jJnjb3@p}L_zYpQ<|ZKcU+>>!Mu^{k;T zraeMDQFL!D$QRF(8Lt;`S0y7Fph3|lu`GI)6V- zegNpW;L7I76`1)u$hd)BFhwqI`a+#?W*+x4eY0Q+^=5xV)X|FEXI))a{;YwG3J{W) zb)*X69QYz&Zlpn=!r+fOb=dqrQ;mdF$UT5>;MI zTRRYh$^B;6uT{K$9kD#X5@Jd{OZGDgmW>nek~CR3&qrl0uUfJqW0fpJC0V0K(cI8z zXkj>XEm?jZCF^CgK7%rHU{MourjXp5|^|3yjF&0!kS?9>)Q0fqJ4xT_zeEtQX1veMN=eSClzx@4h2ah%TqZg;j?TL+ zq@%9sK}33CI0k&(dWGrJ2hg9Bq;p{uWai*{PHz-r;8dL*{+w|Aal79_ZZPN#fZ1!S zpo4e3xBj8or+M4e^&ZPfr=j@=Xs0q+(c&B9o3~-fQ2*fNeK3LHam&7Abq7!%1t1X7 z7s&kp0{5Kc?FEzasA(HO71bL6o59717lNSj){jL$6OYN#N)Qa-@z@M*^j>p65di!} z>*=<`{bB;=Tv~tGocIreghHr0a;CT4u3`?s``8v<_u3zNuK|M50syii=TtBjRTz+6 zuxhRl#|s4PGkt@J_y6nVxif&qosg3E;^(WnQSSAL|3E-2qz|9v8?jU(nxDUAXb20z zHaDOvagaLuo*ERRa^p25fD-S<#pFjSy^VynS$;J{SJXB%1_LPj~W7}mKOQOE$o-X@>WSNuwUHxgZ=6+vCyi&=-6)N$vq;4lxIm zsWn*FE_J;|Haeo70^TtjYUMwQ%o?*LbC`?#jF03I4FoS6i@s|8a7|9zV}AF=JehtS zAFpukqsHL@5B&$cssyk()V+9TZU+y38xbHG6uD0nkB;K3>}2`0tZE6*1hTy}>%?an zp|b+XMSz6>Y=L<$(Bs^5P5DV&E-NGX95jX0xC1S;gtf0w*u*z2%?13 ztxW0$`V?w$XZ{uyK{%N{56g0|^~qQG1z;XdmjPv7^H<&1L32hOB+$RjHMRoQ>larN zZGX*p<%U7Wj!7w*L3XOxXUkcp8(UQ1rb)Mo#LJ9#KI>8>cqqVum>R+=6L!JTc5=~G$Q86_ypei=DBA*J3NF=gs>q0!8C^}PY;d(; z=msWbRcB77|ADvRep3esXce3keBKQx_^8xyk<>iVo67;AOcp~(3?L?bJC|O6?z()s z{=z#OWCRD=cC4Dcb(etSM)6a*(9Q-VjeX<#_~5Nl-oNyWA?3Ps>@hmT66(7;h68*$dwvsec11r9|OHDL6zF$>2$RO zFY6gkTzJD48xZ&na#^shhIBaCT&d>=ng+ws*4?6qL{>Fi7n1YHNp~UX>EviXaB5Xa zh{}zljgVCMh0CPMaI7SxbsK35o5hG(?{(nLGppvwC;-&=x_TnDHt^%uNwuMe5*w{sjRni-m!1$0#<^~D>yyFVnfL=C7uI`>pZ=pz zt$h1?yZ}RbA<@svOutrJwyA8`SrR?)VB|o7js~h^8G|?m zR>^7q4mkOu9#5N2*aXC*ECAbxUNzvEYui?4Jj{jJiLLH~>_|-9Xi(>kfF4{dIL}8JTy?a$=xt}DMohU zlh!WFzthixk2Zm^tb83koCC-!oC&wg7tS9>92ID(l34-Qw^JV|;!?7gksuFDV^~3n z#Md{^-Tfp%mJ5?U75FNQjQ9bq5^*!PkO0evZv(LcMsre1-H9Om(kfdMAUrG8%hi=F za3vL50wusF&7WwB^(%mmJB9`~0gIBx$g(ThFduI(de8^|5!O32dI%+htO-nJs)V2G z%l~IbGXfDII=Clw9~yY>LXL+3+lV&Zg{$&h;{MQ;GwDZoAJf)!Mx}RQ`uH&%(JNuA2Dsh+2f>?JlkdpuATomvDR)sO9HX-fu!fZbi%H8Ddad5> zewy}1L6^iBGB%z}yIoyn-~Qpj_t%(oy`0wSFaf)IkP#)JD2mKrLi!|TJ{VuZAlILW z+%N-_k2;>)l|9?>gH!4eB?*iNEZS&Uk0KJ6(Zz%zQH<~~$kj}zhSys6Le|8|_0XH%p~B;kjkVLr(-D#3tS-iD%Zqei zSDcteP=$%#1mnKQGMOO+FLEh&qw1;>dJurPzLZ5`d_B9m@_cdmh9%d5(0~Y8l6gfa zmo8}9?J}V6ZWlu?`!c(>gU8I3|Du6lAK`inpt?ShITa3^J{_DS{;M+UJtXpUW7dp- z7AheTK#k=;ko!AL%!^J(u#b0Vh>cMv9<-YAZqz6APs9SSL*;GnHGM8>k-&?xPt0AD z=j^jM0L2I;xqJg+5I*YlW9I=kM>Ol4fIh<>wRrs%IeydIEs_s*$zBFap%Qps4$B3r zARE8u654+fXoaBq0FA5n!dt`z%Q1}L2<>XhL*V7JdMQ$!m1cnVY67n*k6m?&v~Lu5 ze_#_t%QNu@uhtQK<7)U$%t05-J{o9iIpT?zckRo%X=@7fSM>f@PC-;*i_+h8%AS2lli zM*N1mB0oA71c)pW-VnVt=oP@H5Vj1|zx_K31Eg9%{?L~7=a5-}3**h9xzXs#Lq7Hx zoi2~d}Yd@9Lp{I&@_7iNIqjWsj~jE(FIof@CYaytYEXogJJuR1&^s$ zfF{iHM0K>5@BD+`vwbF?e7}!g4@}!NpB!8K{`;|}FiQykmecm+GLaRE%buJb$lZId z#1jC@@B-LnSs>_PtSIkZq}sMwyV~?A*z(5a5|!|e+hsdu1eZ6q=DtR|y?nnc_Aa)= zm!NfY@1zyaWk4Es#BxQ%+##B;PBqcsqxfeamfo&6QJ~7{ z%lAt@2j@wY67ReBb;<7@lv5u+&bWUSt1HPnRV=Pd>;vwcbNYH1%Wb->SeHiqr$bFx zy|M>4EKv2MPnFaDvbS$di4z_X4Vpg`7Zl5P9ttpSnL#iuDx!6&>l5qfA0Gi5HMG_> zsQe20f#y%9e%5%O%D))PUn4!NWG>}gzS!|I>pEzUx$MkE^vL1G_GE=C;VIGN$X~2T zW_(w`c$AN0LYg<2C_4G0!wM{E2{#@0W1@PyB0;)~dm{!b5^t9yzG%@%CurC_>L=|& zlkHToqiYrh+!1BEAH0sW7NH6lZe>ryT&(-+$7A*mF8VC`WwWELy^R8;Q!po{V}Ye& z{4&<_Ra~!7AwdDOBpbXY4Pgt_Pg51fy?@8&wF$x^z~iUMwqPMOHZ`889diSnZ(-Ss zi#OXpPB4jCru2z(guYTevet%O{B^n4>WY0L!*!ug*aIf+MOU@NgSsld6J^QTmQw0v z<5_HUUD0qub!a$Z4VlP%i)mTwy)S7MSmfbmY-2AFO!o_dib>2FRk{1MS$p(Tqm{IVa%?CF^VaCN%5eqvVcHhwu{tvIjj$(G?PK?;Z`UlQ>W73`8=$%x`}bkyS#;BpBaFf;cc)dfP|#6BtLI(Pb(k4X2(6@qPz%QY4;L-{&U2{qo79dcR0Rx| zb`9`{-OtTTNL94+lCq1euvJeW4(0qSE#{ZOz}OET$}d%G;W7> z=rp>F3t3{RPTYOPLR%u-qbqZ= z-w;P^)7mV_TT_WIeSL7-efa=z0YI?@H(SOd7xWocAp*BsKyl%0)loX^H+qz&cqMdu zS%-%1whQ8+Mol-mVujo1s;jJ|zg`YeUu~jF7{vRm(1n!IFTA@d`5S0;)2L&vEIZ(9 z5fPySoKh7RBzAEj%XVzTs}37sZ4i#Sn4D@Ms5={Z-<^FY0rRqcuydhaNk-iJ$#a}Q zpu|aHfZ!m+*;3?g?9y`=VOE<>r^7QMDmKEYchUHG@mv-Pe_O8QuyQ&9pS3G&8rbg%;_{H`bvd z1j-Hw#?o^J-Rs~k`o(tmXk*3tFBty|+t|@|xo`MuqfL#s1`T*H^w!F5n}8wVi6rYa z)WMcii1dOy?9gcqiGt7M;d1d#O6-4n8pWAwh~HxG=z;MYcoc@vT|kYGhdMcJNPnGX z_>&>u#epW9ftq`9cc4^=oaPu6+W)b_w7;Dz4cpRen=77YxJA#8c~ z*;MSzd$RkCQ|f#ES}9K&8ic$}xXh5}I!)v(>aK8pBPRJlA;Lly7JARARL?_H#Yq}C zleaLQNrhASCxdZV`JJOlB)e7MXxF-SX;ApfD5VJFR@yJLkh%0ers+$7n-fUh0!$Qp zd0}L+P_KVrbZN4ZVU-KW?&p;bzM_N^;Xl&ad(jIvlnIr9v~;BoL)&1SBd*(`W+UTT z!2E6u@|}#|v%s$%pay{(`Nep2w8SSy|6}x4((_56L|Dd!Q z$E7k7<66Q?1>73U^B26+os% zW2T>$rhNd<#KKjQ{g~qXGSFqYVQZ@~S&F37ZPxl>XYV=XpNfz!qXM}px1Q988NyMy z7u>i6Jk&ln78jXctgmm@hksR~x^cBM>xvvj$n)R)%Ke%rS`*1^l?TzUzZevW~vOGNPcZoY&cBTHVZJJrOZgby!c zG?@(*U~9z#W`g&%8uu_F-dqedn{QotTaSB{Jc^Ua6kUbLb0X-lQn==+Dz(p=hW)3d zpM4(2M)}ek8ot-Rx9(%nn3DBsT>8?Dkv}`uMuB?cPiw|l)-QMc6bFgrH?FIKnLCRf zZ93%#(mtDLRg1G<1#7O+Mtb_18{X#;Q<(NzsTh{+9;&h8jfe^Mt%9MNM-tbR<$7Jk z0#P)@K#$cUSd5hR>EN=EtsbMD6)_Yfj(eLaJ-?o0B>v9Vq^?bEpMD@J{RH7NrKDD( zTAFQ3DfnFIAk?yA=ZDO9+dRcY8=HbAgg+*r3mnoSzMmL%yx&2EwFo;>QW*m(-z$sJvRjoFJ%}0s4^ltzc1)w&HU3OD@ z%TC=g9fF2jMtRx{8B^2vm@624DGPitz1Q%ZhQhC$3z_8S9zHXxdpSmcnQ@No^&+!{sx%7_tPE2my3-yPawRr`EtP+qlJG)yN8uF*5L;W5o z_BDKO@|1xN+YajKZ+w^&U%sNXrMRRo(bdRO)(|PQd31yG;@YGRID6IPN#H%8(oP~B z4ZWV%!iJ2F7*)0K>>lQGoiAY*;AW6Vs5hAtzOtoUy%`2)*l&EloKmay*7Lq zvNxvjFtI=-W0j9{>}#yGq(wxXQ)Ni=?B9Smw826-nl*ww0wF7v85>}jtGnP_P`|

    4W7Beypsa%6|L9x>>jx(E$m6VYt@hWl2VK2rc2B?A8P8q zNEiuW$sycX7afVKMJ>{T-XVrZ=aL46-;2AmtmIH2#zJ_KA3Umj#||4nN&vSTINc9X z5`z@^wF?h-%`NHeT_6LO-pV+=P?*5#bV}0Smypb$!(WIU=$gE(DGJz#S0FVkn-~B^)P$m zF5O}&F_`}Qr1a)fu_s>HpE(wXZ8e6z|7BpH_j_S(;q)H&y&|6m`*r!od7H?)wXX$Q zVu?cx%#ArmiyC;Z9H%P+}=@_HCYak`H(H+u^9Qpa}`}=d}Iy={PuI+ih&;7if`!)-~ zQ+jw z9+8bU#?mg--KbUyg4tr_v?}Xii~5n<-pbRlN-SZQ!EERGk3IF~-gkPIrt*P?(-{1< zC&hf-@j6R>as6?VHk$|nxxZrexAk7Ih|SXN-=H&)Je|w+5Br&x?H*a3fP7tVbwyYA z&_>B*HSME1ew`_AxUSAkfAyAq<|kIOCUs>~5kEYi!t~eM$rff=8@iw~G9%$LQ6vR| z^runPAbFy}@IQ-ahPItTLOw?x{IVLCCl%WtS|bWi*l&J$g2o2%x%|`44|Jdr8N7>$ zMX2HeAcIbS4C;eH@+~^hn!C>)nV#vb#vfTAoGroM6z(`b@!hbg!CLZPKX|lQUHU-b*$h4f z*YFk^|Hz!CJipHO_g)zNRtcYiBX{${`v!X7Ab-dz;FcV1(AtDL8?q5si0}16%trwS z*J^yaUSB=z;10x%=H0A`^l`h9{I>14(MueQl_P~H=sbN>b1JdgUuZt@TMntF>TU3& zM6z2^JWly?nfSh!iCjoUCzOuRV%O)$B)I4v`5zwH;Dg%B5w{z`jyay~Kh3Ihrxb@? z8UJYY$U~wT!U})evK9P_6oDCZC8ilw(q8{i9kb_#xPN zFVpqd%ExJ{jF5wBvadna;HGkKoVmrRqiZ{FYUY-UGxNl)LeTvHtE@tK@{|0 zJ?BrmDuyCFailz7R5OeAKr(_c>gLrfR{-M_yBR6~IN8qCZ`v0?&05^5bsf3UVf9?o zdbMmO{*SY%Jw?%y=bAOnKAyr3O!z$Jp4DuT_lJ=KA6g%z2 z?Wj5ishH+czLjmbQQP>+Q0##v-?{{Y{U#(jT~z^RY|HubK45+tZu}lKRr^lldJIGv!@jzy09hjj>X=$ z0n?^HL?Q=6Ld@oKtvuT%iyX6(J+PJ<^|~o@UA^Ig4q9`?>xWpgpQX6=jZM?W60PQ&hUx8oSC+ zOL&-=;Y??4Mf?o3bC@(R;aznDZX%0ETUzTC;^6mEIPum|M(h%1`nb-^6c4JPFTh2N zx3{P7&B%z^gjqIM0vq-wvg6&dC3Y*j>^>BW9Yqe+p&Vlkq>JEgNv6vS9~_-oo-9O0 zf-Ivy;4z*(?fq}^-VAJ0XM2RWEl;=n2@_9L_2u2aIWE!+?k#~gS#jQUo*~SzOVVh} zLlru$9>IXnwxU%wmEYaZnZ-0mJlGQ14O!1*JC|$kTUNkCa;q&R#uFfFnw=n%w-|-> zt)jJA)nn_fF-cT8OLd^@49B9x*)zRgu^wPvSl{KEs*P69l{EQaa!i%6_rpeZfwl56*?peQ|Uvb$zv#zoF_CHmL3sQxeyXe{jam~<^-=hEF zeT$4UZi(I2B`IE!2GYFr%%JaE`=IvN%k_JJ+DwJ=m|6-oD~#;qvH~`HJ8)Uj4}9vx zrk>|4lJ5CW4QRgZxo69S*Q(|IcC~iL1^mn@>J1fM;{`(euKFA~3AVnodoxC+rwCR? zWwZ!I+<#eakm{P2v<&oR!ao3v-9BrDtd4v`dB`$~@LkCu4DPDvE8sqch-{Ag5EJJc zaB=#h-GKez*y*L*g8qPB9O{B|#EQX56;t?qe(d?zazBGCU#C7Bnz}qgOs0WX7M#OR z6xmE^dY)=L5S6mO#C1D+D(w82_LG09JYzm}&?b0Bczg#$*Eus{(@fJS`UU5z9rIvX z-ry{;z?DTncqo8<8|k75kdbpm;L6?Vt#;@pYzX;RKCF`B4rGiSGLqL_5{&H2M4GT{ zu;mn}WD2@jpXONN&fSBmCrd`BP)At+t4{@mB=f~Dh^2R3-^gGOe} zQKTPK4z&$cQ^KE%v$>%d9@}Q^4Lp`{{M1h-#P})*Gs6w7v&LZ$KQMqE-l%pu%nO4^ zipldg><%xi&8<2rXj)C2)+I)zs!VyHN>d(-hMyvrosURme9p`5J}z-?@9-2<%=;86 zPOw$?a2NdKBb$6p{?Jd;(e+_*R0xs=!GVRat#`?^crd%qK)&p^07@#nS<01!f_M!H zIqk=w22N`&^EvU+XuC?*&np|A6)JtCH0EMbqU4jD8zz*zKoSl%$Oht;+?aCBUpviN zlb5B#0Q#15UMYfD1+ob^Siwp55EZX&(v4^9{Zd?h)W&0(_ar{9hDy=4RR=VKo#%+k zS|)s}VUs+^WM4#f`^(*tJgl$IPds%kQ>9sKzeTl(aF{6lB_a#nv_tD^V^FYtxbf$n z;!j6V##fun(9U}%`2Q47>+&JeL6Xi3iVu6u@S)fJN7-tA?tO0VFA{H7Oe3Hl=DDpb z;uy2b#F=J`dM{#W^-mj$D0YQSY0stjDR~C?ClE*s(x?@R{3c-mk=!&dvn%9OaLOOf)ORdKxRU3jM;LqKCkI3Qr+up7c-`sj}Go3TJA) zlWf3h=r309&=ukPV8*&hLnx?2_oOgMY%jrBJ!~7z#r~u-gu&;)ID53ruha2RJfkPA zg*BoEYgS|k^qu*vU<7$x>f>e1veEjL-z|TWG`~H1G zz4Ff9U2|L)sKtdRX7=5FkbBu^{4j-ED{HMy8Et&ZE%}3*i+{wC^4;lZU6BEUVvoR! z!>zWxE*SaW)mX8}w~qj**7e>D3o7@NXws`uIn&zq>DqY@zO2t*>Z4xeO?f&$`$r`r z))Jzxut*UN70H!(IM-V>2&)^O-)n9gVqM~6W}G(FnDR8t{QcJj4=G)j@BMn;Bk<*! z9@jnnvVI=WH&RW(A@ZJBnsc_REMUR;v+v3ItJ}Ss7;HzeoisJ}Y1!`ONM;Dld+E@Q zPztp9bcbUa;?P&n4hRF!Rm}N6Qs2K^iThD^lY^rNGK(zDHN=>dog<)tbydbchCh<) zgJ&SMP#SDh-VSblzt)GGKS1 z8A7IVs#V1`vEfCo{MK1#ks%kimp;|&%!xLL*71g}2~qphw9DG!7-M5;kxKf%kM&Y? zs~mmH!6Y`@Dj3Ehdu#tJ65!{CHoyGUtJjdLg}^Qu+;fa+6zmE1 z&eeQ1=G{SFH2>Vwef#xAATFfgMqx+236vVx8@FdN!d3Ap(weR8Bxg6>alIqtGUXm} zv6vrD2$pt}80YABp55+oB`MxR@tYT0(?hPl?c^M5kIfmX*YmSi-0{h;PqfDM2R0}i z5Uz{G94x`#5Z;vI;xYBr6Mj^A?*ImZ0ZV=B=IgU15Oe0uA{2AD!}?W^nawolRKDY zOrHJFN5Dm&M&Nwe3d5hn(EIVgmB2gPEEpdEYlCamWO`-GYvt(X<03ZtH;sstO*=Ed zRm(Cyb<;UJyZ_-eP<8fxtVh_69jD^DmQy76OW>MTCeY#{ZWn6rgE)QQJZHH6aPVeC zSwwM<0NlydMBmC^X&YUUnR7<;=1fR^#N|89_IBdPvmn{~!9f$gi>| zjBA=hAy-wsFo_&#Hn&*U){T^hZ{=g^Uoplx;)4}*%>PP9u!2HF_TPpO0 zW~@M*x#JtAv%l^p&b+r&?iVs`US$93x3lgr_Z0UY_+8g0818QZ zlgtH9Z4NhgSV3R0>FFCU+Ewm^#9Fxo!r)Hv^ z{y)4QNqY5ll-2c5O8K#+C;pqUEc2m2Mhn5Shd3U5vD3`fo^jnMrJ&GcRUM}93 z29fP?r=nN)+`Tosr_dJdE#96h>abN3GFB_3e@|P3e1RIbW~|$p^Gxlw`Z6Jh_sF|1 zz^8P%^eXJtx4n!L1O*linK+aTNltCh(jix|-kqPnWol@&B}_ny;>ZTte@VSLxI7`^ zZQTqMFVCBWu=Qd>iYwMtI=FqW2&==eig^j5yw0DwgYc+U)wMxT;ngD-8D_K-ZI~c` zR(VAr3%Cw>OI6bkejXr&&Fs9Vj9fi%aJGnm)_1R}qgok}_ryZjWG;d^MFgvq^j!cB zne3AB;0C|DE4=-b5ulz~thy|@fkxI}2#^2D*z*RRpYdrY3(ZMpG^V;=drx-YEcj@Y zJgnPqw4yh@PtW60hmrSh8on9GJw}ZqiA;wdrzEV-!ee@a!tvvQ(rm{+FXd;=<4N`m zk%a2M#g;f#O78e@1�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 Esra'a al Shafei + +

    It's important not to be complacent with the current standards of messaging, + where metadata aggregation is still normalized in apps falsely and dangerously marketed as "private". + This is a post exploring the fundamental differences between privacy and security.

    \ No newline at end of file From 6c509027f762739453d48bd21b604d274005263f Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Wed, 17 Apr 2024 13:53:45 +0400 Subject: [PATCH 042/147] docs: IP address protection rfc (#4036) --- docs/rfcs/2024-04-16-ip-address-protection.md | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 docs/rfcs/2024-04-16-ip-address-protection.md diff --git a/docs/rfcs/2024-04-16-ip-address-protection.md b/docs/rfcs/2024-04-16-ip-address-protection.md new file mode 100644 index 0000000000..0019ad87ca --- /dev/null +++ b/docs/rfcs/2024-04-16-ip-address-protection.md @@ -0,0 +1,81 @@ +# IP address protection, support for SMP sending proxies + +## Problem + +IP addresses of senders being visible to recipients' chosen servers, which in case of self-hosting makes it visible to recipients themselves. In case of XFTP files the issue is reversed, with IP addresses of recipients being visible to senders' chosen servers. + +## Solution + +### SMP + +- Agent to support sending proxies +- New network settings configuration "Use SMP proxies" + - Can be set to "always", "never", "for unknown servers" + - Currently configured servers to be considered as "known", including those disabled for new connections + - Initial default is "never" to allow opt-in for testing, to be changed to "for unknown servers" later + - Support in UI +- No alerts about unknown servers are required in UI +- Tor setting to not affect agent decision to use SMP proxy for each given server + +``` haskell +data UseSMPProxies + = SMPPAlways + | SMPPNever + | SMPPUnknown + deriving (Eq, Show) + +data NetworkConfig = NetworkConfig + { ... + useSMPProxies :: UseSMPProxies, + ... + } +``` + +### XFTP + +Some considerations: + +- XFTP proxying is not planned to be implemented initially + - In future it could be done via open socket and with no persistance, and would be required only for FGET command +- Currently XFTP files are automatically set for reception in some cases: + - Images and voice messages + - In background (via "set to receive") +- Agent resumes file reception (download) after app re-start, in case they weren't fully downloaded +- User may change tor setting between and during app sessions, so a file can be "accepted" when app is connected via tor, but resumed when it's no longer + +Solution: + +- Client would make a decision whether to automatically accept file, or alert user about unknown servers +- Add only_via_tor flag to agent rcv_files + pass through APIs: + - add Bool to `ReceiveFile` (with False meaning user hasn't indicated any intent regarding unknown servers) + - can either be automatically accepted, or require alerting user and asking for confirmation (see below) + - add `onlyViaTor` to `xftpReceiveFile` +- Possible scenarios: + 1. XFTP file chunks are fully available on known servers + - Do not show alert, accept automatically (images, voice messages) or without approval (other files) + - `onlyViaTor` is False + 2. Some file chunks are on unknown servers, tor is not enabled + - User accepts manually, show alert to user + - User confirms, indicating it's Ok to proceed even though IP would be visible to unknown servers + - `onlyViaTor` is False + - \* Additional user preference to never ask? -> behavior same as now + 3. Some file chunks are on unknown servers, tor is enabled + - Do not show alert, accept automatically (images, voice messages) or without approval (other files) + - `onlyViaTor` is True +- On file download: + - `onlyViaTor` equal False is ignored + - If `onlyViaTor` is True, and tor is not enabled, throw new "permanent" error + - Permanent for simplicity as this is an edge case + - File record to be removed from agent + - Could analyze whether it's remaining (not yet downloaded) chunks are on unknown servers, and only abort in this case (and instead proceed if remaining chunks are on known servers) + - This requires changing download to load data for all chunks instead of loading only current chunk + - This is another edge case of edge case, as it seems more likely that sender either used only self-hosted servers, or only preset servers + - So it seems as unnecessary complication, and it should be Ok to abort simply based on only_via_tor flag + tor setting + - Error is RFERR XFTP UNKNOWN_NO_PROXY (new constructor) +- Chat to differentiate RFERR, and make file available for re-download on UNKNOWN_NO_PROXY error, similar to when file is cancelled + - New CIFileStatus - CIFSRcvCancelledNoProxy, to differentiate in UI + - Different icon for retry, alert explaining why file was aborted + +### Trusted servers + +We also considered an idea of trusted servers, but it proved to have unnecessarily complex UX, and in case of XFTP had issues on file download continuation after restart (e.g. server "trusted" flag changing, automatically accepting with tor enabled). It requires additional consideration and may be better suited to concept of "server providers". From 065c8f8861b08ca738a05c68db5817448f579a7b Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 19 Apr 2024 13:17:17 +0700 Subject: [PATCH 043/147] ios: fix typing using keyboard suggestions (#4045) --- .../ComposeMessage/NativeTextEditor.swift | 30 ++++++++++++------- .../Chat/ComposeMessage/SendMessageView.swift | 2 -- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/NativeTextEditor.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/NativeTextEditor.swift index 3eead5b0af..f2c7221835 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/NativeTextEditor.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/NativeTextEditor.swift @@ -16,7 +16,6 @@ struct NativeTextEditor: UIViewRepresentable { @Binding var disableEditing: Bool @Binding var height: CGFloat @Binding var focused: Bool - let alignment: TextAlignment let onImagesAdded: ([UploadContent]) -> Void private let minHeight: CGFloat = 37 @@ -30,13 +29,16 @@ struct NativeTextEditor: UIViewRepresentable { func makeUIView(context: Context) -> UITextView { let field = CustomUITextField(height: _height) field.text = text - field.textAlignment = alignment == .leading ? .left : .right + field.textAlignment = alignment(text) field.autocapitalizationType = .sentences field.setOnTextChangedListener { newText, images in if !disableEditing { - // Speed up the process of updating layout, reduce jumping content on screen - if !isShortEmoji(newText) { updateHeight(field) } text = newText + field.textAlignment = alignment(text) + updateFont(field) + // Speed up the process of updating layout, reduce jumping content on screen + updateHeight(field) + self.height = field.frame.size.height } else { field.text = text } @@ -53,10 +55,12 @@ struct NativeTextEditor: UIViewRepresentable { } func updateUIView(_ field: UITextView, context: Context) { - field.text = text - field.textAlignment = alignment == .leading ? .left : .right - updateFont(field) - updateHeight(field) + if field.markedTextRange == nil && field.text != text { + field.text = text + field.textAlignment = alignment(text) + updateFont(field) + updateHeight(field) + } } private func updateHeight(_ field: UITextView) { @@ -73,12 +77,19 @@ struct NativeTextEditor: UIViewRepresentable { } private func updateFont(_ field: UITextView) { - field.font = isShortEmoji(field.text) + let newFont = isShortEmoji(field.text) ? (field.text.count < 4 ? largeEmojiUIFont : mediumEmojiUIFont) : UIFont.preferredFont(forTextStyle: .body) + if field.font != newFont { + field.font = newFont + } } } +private func alignment(_ text: String) -> NSTextAlignment { + isRightToLeft(text) ? .right : .left +} + private class CustomUITextField: UITextView, UITextViewDelegate { var height: Binding var newHeight: CGFloat = 0 @@ -205,7 +216,6 @@ struct NativeTextEditor_Previews: PreviewProvider{ disableEditing: Binding.constant(false), height: Binding.constant(100), focused: Binding.constant(false), - alignment: TextAlignment.leading, onImagesAdded: { _ in } ) .fixedSize(horizontal: false, vertical: true) diff --git a/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift b/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift index ae0394475d..8b528a201c 100644 --- a/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift +++ b/apps/ios/Shared/Views/Chat/ComposeMessage/SendMessageView.swift @@ -54,13 +54,11 @@ struct SendMessageView: View { .padding(.vertical, 8) .frame(maxWidth: .infinity) } else { - let alignment: TextAlignment = isRightToLeft(composeState.message) ? .trailing : .leading NativeTextEditor( text: $composeState.message, disableEditing: $composeState.inProgress, height: $teHeight, focused: $keyboardVisible, - alignment: alignment, onImagesAdded: onMediaAdded ) .allowsTightening(false) From 505c6cb0621cf8094eb457b7aa0d50e3d7403154 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 19 Apr 2024 13:23:13 +0700 Subject: [PATCH 044/147] ios: prevent a crash when exiting the app (#4041) * ios: prevent a crash when exiting the app * log --- apps/ios/SimpleXChat/API.swift | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/apps/ios/SimpleXChat/API.swift b/apps/ios/SimpleXChat/API.swift index cdd1008c13..e2f4adc60f 100644 --- a/apps/ios/SimpleXChat/API.swift +++ b/apps/ios/SimpleXChat/API.swift @@ -87,6 +87,11 @@ public func chatInitControllerRemovingDatabases() { public func chatCloseStore() { + // Prevent crash when exiting the app with already closed store (for example, after changing a database passpharase) + guard hasChatCtrl() else { + logger.error("chatCloseStore: already closed, chatCtrl is nil") + return + } let err = fromCString(chat_close_store(getChatCtrl())) if err != "" { logger.error("chatCloseStore error: \(err)") From 648884044f9e820264e8f32ea6546f6f3291a53d Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 19 Apr 2024 11:31:44 +0400 Subject: [PATCH 045/147] core: prohibit forwarding file if it's not found (#4047) --- src/Simplex/Chat.hs | 51 +++++++++++++++++----------------- src/Simplex/Chat/Controller.hs | 1 + src/Simplex/Chat/View.hs | 1 + 3 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 41c744850a..2e19dd73d9 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -895,7 +895,7 @@ processChatCommand' vr = \case cci <- getDirectChatItem db user fromChatId itemId pure (ct, cci) (mc, mDir) <- forwardMC ci - file <- forwardCryptoFile ci `catchChatError` (\e -> toView (CRChatError (Just user) e) $> Nothing) + file <- forwardCryptoFile ci let ciff = forwardCIFF ci $ Just (CIFFContact (forwardName ct) mDir (Just fromChatId) (Just itemId)) pure (ComposedMessage file Nothing mc, ciff) where @@ -909,7 +909,7 @@ processChatCommand' vr = \case cci <- getGroupChatItem db user fromChatId itemId pure (gInfo, cci) (mc, mDir) <- forwardMC ci - file <- forwardCryptoFile ci `catchChatError` (\e -> toView (CRChatError (Just user) e) $> Nothing) + file <- forwardCryptoFile ci let ciff = forwardCIFF ci $ Just (CIFFGroup (forwardName gInfo) mDir (Just fromChatId) (Just itemId)) pure (ComposedMessage file Nothing mc, ciff) where @@ -918,7 +918,7 @@ processChatCommand' vr = \case CTLocal -> do (CChatItem _ ci) <- withStore $ \db -> getLocalChatItem db user fromChatId itemId (mc, _) <- forwardMC ci - file <- forwardCryptoFile ci `catchChatError` (\e -> toView (CRChatError (Just user) e) $> Nothing) + file <- forwardCryptoFile ci let ciff = forwardCIFF ci Nothing pure (ComposedMessage file Nothing mc, ciff) CTContactRequest -> throwChatError $ CECommandError "not supported" @@ -935,28 +935,29 @@ processChatCommand' vr = \case Just CIFFUnknown -> ciff Just prevCIFF -> Just prevCIFF forwardCryptoFile :: ChatItem c d -> CM (Maybe CryptoFile) - forwardCryptoFile ChatItem {file = Just CIFile {fileName, fileStatus, fileSource = Just fromCF@CryptoFile {filePath}}} - | ciFileLoaded fileStatus = - chatReadVar filesFolder >>= \case - Nothing -> - ifM (doesFileExist filePath) (pure $ Just fromCF) (pure Nothing) - Just filesFolder -> do - let fsFromPath = filesFolder filePath - ifM - (doesFileExist fsFromPath) - ( do - fsNewPath <- liftIO $ filesFolder `uniqueCombine` fileName - liftIO $ B.writeFile fsNewPath "" -- create empty file - encrypt <- chatReadVar encryptLocalFiles - cfArgs <- if encrypt then Just <$> (atomically . CF.randomArgs =<< asks random) else pure Nothing - let toCF = CryptoFile fsNewPath cfArgs - -- to keep forwarded file in case original is deleted - liftIOEither $ runExceptT $ withExceptT (ChatError . CEInternalError . show) $ copyCryptoFile (fromCF {filePath = fsFromPath} :: CryptoFile) toCF - pure $ Just (toCF {filePath = takeFileName fsNewPath} :: CryptoFile) - ) - (pure Nothing) - | otherwise = pure Nothing - forwardCryptoFile _ = pure Nothing + forwardCryptoFile ChatItem {file = Nothing} = pure Nothing + forwardCryptoFile ChatItem {file = Just ciFile} = case ciFile of + CIFile {fileName, fileStatus, fileSource = Just fromCF@CryptoFile {filePath}} + | ciFileLoaded fileStatus -> + chatReadVar filesFolder >>= \case + Nothing -> + ifM (doesFileExist filePath) (pure $ Just fromCF) (throwChatError CEForwardNoFile) + Just filesFolder -> do + let fsFromPath = filesFolder filePath + ifM + (doesFileExist fsFromPath) + ( do + fsNewPath <- liftIO $ filesFolder `uniqueCombine` fileName + liftIO $ B.writeFile fsNewPath "" -- create empty file + encrypt <- chatReadVar encryptLocalFiles + cfArgs <- if encrypt then Just <$> (atomically . CF.randomArgs =<< asks random) else pure Nothing + let toCF = CryptoFile fsNewPath cfArgs + -- to keep forwarded file in case original is deleted + liftIOEither $ runExceptT $ withExceptT (ChatError . CEInternalError . show) $ copyCryptoFile (fromCF {filePath = fsFromPath} :: CryptoFile) toCF + pure $ Just (toCF {filePath = takeFileName fsNewPath} :: CryptoFile) + ) + (throwChatError CEForwardNoFile) + _ -> throwChatError CEForwardNoFile copyCryptoFile :: CryptoFile -> CryptoFile -> ExceptT CF.FTCryptoError IO () copyCryptoFile fromCF@CryptoFile {filePath = fsFromPath, cryptoArgs = fromArgs} toCF@CryptoFile {cryptoArgs = toArgs} = do fromSizeFull <- getFileSize fsFromPath diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index dffaa72ab3..00c2e153f1 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -1121,6 +1121,7 @@ data ChatErrorType | CEInlineFileProhibited {fileId :: FileTransferId} | CEInvalidQuote | CEInvalidForward + | CEForwardNoFile | CEInvalidChatItemUpdate | CEInvalidChatItemDelete | CEHasCurrentCall diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index c136300bc5..89d0136478 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -1968,6 +1968,7 @@ viewChatError logLevel testView = \case CEInlineFileProhibited _ -> ["A small file sent without acceptance - you can enable receiving such files with -f option."] CEInvalidQuote -> ["cannot reply to this message"] CEInvalidForward -> ["cannot forward this message"] + CEForwardNoFile -> ["cannot forward this message, file not found"] CEInvalidChatItemUpdate -> ["cannot update this item"] CEInvalidChatItemDelete -> ["cannot delete this item"] CEHasCurrentCall -> ["call already in progress"] From 918be31f2c2cc7c4a109dbaab454bd7e071566ae Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 19 Apr 2024 21:57:00 +0700 Subject: [PATCH 046/147] desktop: fix freeze that happened when new chat items arrives while scrolling via scrollbar (#4050) --- .../kotlin/chat/simplex/common/views/chat/ChatView.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 4761b938b9..55ee46f1e2 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 @@ -1090,9 +1090,9 @@ private fun ScrollToBottom(chatId: ChatId, listState: LazyListState, chatItems: .collect { try { if (listState.firstVisibleItemIndex == 0 || (listState.firstVisibleItemIndex == 1 && listState.layoutInfo.totalItemsCount == chatItems.size)) { - listState.animateScrollToItem(0) + if (appPlatform.isAndroid) listState.animateScrollToItem(0) else listState.scrollToItem(0) } else { - listState.animateScrollBy(scrollDistance) + if (appPlatform.isAndroid) listState.animateScrollBy(scrollDistance) else listState.scrollBy(scrollDistance) } } catch (e: CancellationException) { /** From 6484e36b820c2fe1b122bac9f82f80408128a90d Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 19 Apr 2024 23:20:31 +0700 Subject: [PATCH 047/147] ios: fix mute/unmute button state (#4046) --- apps/ios/Shared/Views/Chat/ChatView.swift | 24 +++++++++++-------- .../Views/ChatList/ChatListNavLink.swift | 4 ++-- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 6651b7cc5a..5500b0c6e7 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -183,7 +183,7 @@ struct ChatView: View { .disabled(!contact.ready || !contact.active) } searchButton() - toggleNtfsButton(chat) + ToggleNtfsButton(chat: chat) .disabled(!contact.ready || !contact.active) } label: { Image(systemName: "ellipsis") @@ -212,7 +212,7 @@ struct ChatView: View { } Menu { searchButton() - toggleNtfsButton(chat) + ToggleNtfsButton(chat: chat) } label: { Image(systemName: "ellipsis") } @@ -1198,14 +1198,18 @@ struct ChatView: View { } } -@ViewBuilder func toggleNtfsButton(_ chat: Chat) -> some View { - Button { - toggleNotifications(chat, enableNtfs: !chat.chatInfo.ntfsEnabled) - } label: { - if chat.chatInfo.ntfsEnabled { - Label("Mute", systemImage: "speaker.slash") - } else { - Label("Unmute", systemImage: "speaker.wave.2") +struct ToggleNtfsButton: View { + @ObservedObject var chat: Chat + + var body: some View { + Button { + toggleNotifications(chat, enableNtfs: !chat.chatInfo.ntfsEnabled) + } label: { + if chat.chatInfo.ntfsEnabled { + Label("Mute", systemImage: "speaker.slash") + } else { + Label("Unmute", systemImage: "speaker.wave.2") + } } } } diff --git a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift index 7fbc1e4ac8..efe254323e 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListNavLink.swift @@ -92,7 +92,7 @@ struct ChatListNavLink: View { .swipeActions(edge: .leading, allowsFullSwipe: true) { markReadButton() toggleFavoriteButton() - toggleNtfsButton(chat) + ToggleNtfsButton(chat: chat) } .swipeActions(edge: .trailing, allowsFullSwipe: true) { if !chat.chatItems.isEmpty { @@ -181,7 +181,7 @@ struct ChatListNavLink: View { .swipeActions(edge: .leading, allowsFullSwipe: true) { markReadButton() toggleFavoriteButton() - toggleNtfsButton(chat) + ToggleNtfsButton(chat: chat) } .swipeActions(edge: .trailing, allowsFullSwipe: true) { if !chat.chatItems.isEmpty { From 1306c84938fef4a03324fd6256053ac80895b254 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 19 Apr 2024 20:21:35 +0400 Subject: [PATCH 048/147] ios: in item context menu don't show forward button if file doesn't exist, add download button (#4048) --- .../Views/Chat/ChatItem/CIFileView.swift | 18 +++++++-------- apps/ios/Shared/Views/Chat/ChatView.swift | 22 +++++++++++++++++-- apps/ios/SimpleXChat/APITypes.swift | 1 + 3 files changed, 30 insertions(+), 11 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift index c94ba3f830..ae9e09b138 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIFileView.swift @@ -69,19 +69,12 @@ struct CIFileView: View { return false } - private func fileSizeValid() -> Bool { - if let file = file { - return file.fileSize <= getMaxFileSize(file.fileProtocol) - } - return false - } - private func fileAction() { logger.debug("CIFileView fileAction") if let file = file { switch (file.fileStatus) { case .rcvInvitation: - if fileSizeValid() { + if fileSizeValid(file) { Task { logger.debug("CIFileView fileAction - in .rcvInvitation, in Task") if let user = m.currentUser { @@ -143,7 +136,7 @@ struct CIFileView: View { case .sndCancelled: fileIcon("doc.fill", innerIcon: "xmark", innerIconSize: 10) case .sndError: fileIcon("doc.fill", innerIcon: "xmark", innerIconSize: 10) case .rcvInvitation: - if fileSizeValid() { + if fileSizeValid(file) { fileIcon("arrow.down.doc.fill", color: .accentColor) } else { fileIcon("doc.fill", color: .orange, innerIcon: "exclamationmark", innerIconSize: 12) @@ -201,6 +194,13 @@ struct CIFileView: View { } } +func fileSizeValid(_ file: CIFile?) -> Bool { + if let file = file { + return file.fileSize <= getMaxFileSize(file.fileProtocol) + } + return false +} + func saveCryptoFile(_ fileSource: CryptoFile) { if let cfArgs = fileSource.cryptoArgs { let url = getAppFilePath(fileSource.filePath) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 5500b0c6e7..45819851f0 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -785,11 +785,15 @@ struct ChatView: View { } else { menu.append(saveFileAction(fileSource)) } + } else if let file = ci.file, case .rcvInvitation = file.fileStatus, fileSizeValid(file) { + menu.append(downloadFileAction(file)) } if ci.meta.editable && !mc.isVoice && !live { menu.append(editAction(ci)) } - if ci.meta.itemDeleted == nil && !ci.isLiveDummy && !live { + if ci.meta.itemDeleted == nil + && (ci.file == nil || (fileSource != nil && fileExists)) + && !ci.isLiveDummy && !live { menu.append(forwardUIAction(ci)) } if !ci.isLiveDummy { @@ -949,7 +953,21 @@ struct ChatView: View { saveCryptoFile(fileSource) } } - + + private func downloadFileAction(_ file: CIFile) -> UIAction { + UIAction( + title: NSLocalizedString("Download", comment: "chat item action"), + image: UIImage(systemName: "arrow.down.doc") + ) { _ in + Task { + logger.debug("ChatView downloadFileAction, in Task") + if let user = m.currentUser { + await receiveFile(user: user, fileId: file.fileId) + } + } + } + } + private func editAction(_ ci: ChatItem) -> UIAction { UIAction( title: NSLocalizedString("Edit", comment: "chat item action"), diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index e27e280e40..f33bdfbdd8 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -1721,6 +1721,7 @@ public enum ChatErrorType: Decodable { case inlineFileProhibited(fileId: Int64) case invalidQuote case invalidForward + case forwardNoFile case invalidChatItemUpdate case invalidChatItemDelete case hasCurrentCall From a35d392f76503b0de32332f8b8ea98d511b8bc48 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 19 Apr 2024 17:10:31 +0100 Subject: [PATCH 049/147] core: update simplexmq --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cabal.project b/cabal.project index af464c7320..02deb0dbfb 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 5e783396e05ced83b22914c172d2f2e8e14e5be2 + tag: c00c223f3bb295a62d8507e453bbeac61d102e3a source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index cc8003b551..0b264d3628 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."5e783396e05ced83b22914c172d2f2e8e14e5be2" = "1bxbhy5vddczspan0xzcwk2jvkial6n84m0s5wznqbg03i4y7j1y"; + "https://github.com/simplex-chat/simplexmq.git"."c00c223f3bb295a62d8507e453bbeac61d102e3a" = "0zbsz70rjhvrlkkiwnw43v7lg6r05lp5rwk7jmnn21zfjib4l621"; "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"; From f6ceb89c4bd6fc153f055693d81797c212cc7bc0 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 19 Apr 2024 23:36:32 +0700 Subject: [PATCH 050/147] android, desktop: forward ui (#4039) * android, desktop: forward ui * changes * attachment icon * reorder lines * reorder lines * change * inline content + formatted text * fix header padding * fix * fix2 * Revert "fix header padding" This reverts commit 63f2b15f021ad2feb3287fcae2a12d325db517b8. * broken default parameter * changes * more checks for file forwarding * paddings * padding * padding and fix --------- Co-authored-by: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> --- .../Views/Chat/ChatItem/FramedItemView.swift | 2 +- .../java/chat/simplex/app/MainActivity.kt | 21 ++- .../chat/simplex/common/model/ChatModel.kt | 26 +++- .../chat/simplex/common/model/SimpleXAPI.kt | 17 ++- .../common/views/chat/ChatItemInfoView.kt | 120 ++++++++++++++++-- .../simplex/common/views/chat/ChatView.kt | 10 +- .../simplex/common/views/chat/ComposeView.kt | 61 ++++++++- .../common/views/chat/ContextItemView.kt | 48 ++++++- .../simplex/common/views/chat/SendMsgView.kt | 4 +- .../views/chat/item/CIChatFeatureView.kt | 4 +- .../common/views/chat/item/CIFileView.kt | 13 +- .../common/views/chat/item/ChatItemView.kt | 39 +++++- .../common/views/chat/item/FramedItemView.kt | 6 +- .../common/views/chat/item/TextItemView.kt | 8 +- .../common/views/chatlist/ChatPreviewView.kt | 9 +- .../common/views/chatlist/ShareListView.kt | 27 ++-- .../simplex/common/views/helpers/Enums.kt | 3 + .../commonMain/resources/MR/base/strings.xml | 10 ++ 18 files changed, 351 insertions(+), 77 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift index 3b10bcad55..ed724599be 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift @@ -165,7 +165,7 @@ struct FramedItemView: View { ) } - @ViewBuilder func framedItemHeader(icon: String? = nil, caption: Text, pad: Bool = true) -> some View { + @ViewBuilder func framedItemHeader(icon: String? = nil, caption: Text, pad: Bool = false) -> some View { let v = HStack(spacing: 6) { if let icon = icon { Image(systemName: icon) diff --git a/apps/multiplatform/android/src/main/java/chat/simplex/app/MainActivity.kt b/apps/multiplatform/android/src/main/java/chat/simplex/app/MainActivity.kt index 7a1299c612..6ce582cad4 100644 --- a/apps/multiplatform/android/src/main/java/chat/simplex/app/MainActivity.kt +++ b/apps/multiplatform/android/src/main/java/chat/simplex/app/MainActivity.kt @@ -89,11 +89,12 @@ class MainActivity: FragmentActivity() { } override fun onBackPressed() { - if ( - onBackPressedDispatcher.hasEnabledCallbacks() // Has something to do in a backstack - || Build.VERSION.SDK_INT >= Build.VERSION_CODES.R // Android 11 or above - || isTaskRoot // there are still other tasks after we reach the main (home) activity - ) { + val canFinishActivity = ( + onBackPressedDispatcher.hasEnabledCallbacks() // Has something to do in a backstack + || Build.VERSION.SDK_INT >= Build.VERSION_CODES.R // Android 11 or above + || isTaskRoot // there are still other tasks after we reach the main (home) activity + ) && SimplexApp.context.chatModel.sharedContent.value !is SharedContent.Forward + if (canFinishActivity) { // https://medium.com/mobile-app-development-publication/the-risk-of-android-strandhogg-security-issue-and-how-it-can-be-mitigated-80d2ddb4af06 super.onBackPressed() } @@ -104,9 +105,15 @@ class MainActivity: FragmentActivity() { AppLock.laFailed.value = true } if (!onBackPressedDispatcher.hasEnabledCallbacks()) { + val sharedContent = chatModel.sharedContent.value // Drop shared content - SimplexApp.context.chatModel.sharedContent.value = null - finish() + chatModel.sharedContent.value = null + if (sharedContent is SharedContent.Forward) { + chatModel.chatId.value = sharedContent.fromChatInfo.id + } + if (canFinishActivity) { + finish() + } } } } 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 d0a02c332f..ca9056a058 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 @@ -111,7 +111,7 @@ object ChatModel { var draft = mutableStateOf(null as ComposeState?) var draftChatId = mutableStateOf(null as String?) - // working with external intents + // working with external intents or internal forwarding of chat items val sharedContent = mutableStateOf(null as SharedContent?) val filesToDelete = mutableSetOf() @@ -1753,7 +1753,7 @@ data class ChatItem ( val allowAddReaction: Boolean get() = meta.itemDeleted == null && !isLiveDummy && (reactions.count { it.userReacted } < 3) - private val isLiveDummy: Boolean get() = meta.itemId == TEMP_LIVE_CHAT_ITEM_ID + val isLiveDummy: Boolean get() = meta.itemId == TEMP_LIVE_CHAT_ITEM_ID val encryptedFile: Boolean? = if (file?.fileSource == null) null else file.fileSource.cryptoArgs != null @@ -2298,8 +2298,26 @@ enum class MsgDirection { @Serializable sealed class CIForwardedFrom { @Serializable @SerialName("unknown") object Unknown: CIForwardedFrom() - @Serializable @SerialName("contact") class Contact(val chatName: String, val msgDir: MsgDirection, val contactId: Long? = null, val chatItemId: Long? = null): CIForwardedFrom() - @Serializable @SerialName("group") class Group(val chatName: String, val msgDir: MsgDirection, val groupId: Long? = null, val chatItemId: Long? = null): CIForwardedFrom() + @Serializable @SerialName("contact") class Contact(override val chatName: String, val msgDir: MsgDirection, val contactId: Long? = null, val chatItemId: Long? = null): CIForwardedFrom() + @Serializable @SerialName("group") class Group(override val chatName: String, val msgDir: MsgDirection, val groupId: Long? = null, val chatItemId: Long? = null): CIForwardedFrom() + + open val chatName: String + get() = when (this) { + Unknown -> "" + is Contact -> chatName + is Group -> chatName + } + + fun text(chatType: ChatType): String = + if (chatType == ChatType.Local) { + if (chatName.isEmpty()) { + generalGetString(MR.strings.saved_description) + } else { + generalGetString(MR.strings.saved_from_description).format(chatName) + } + } else { + generalGetString(MR.strings.forwarded_description) + } } @Serializable 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 4e239598fb..90d6995504 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 @@ -738,12 +738,16 @@ object ChatController { suspend fun apiSendMessage(rh: Long?, type: ChatType, id: Long, file: CryptoFile? = null, quotedItemId: Long? = null, mc: MsgContent, live: Boolean = false, ttl: Int? = null): AChatItem? { val cmd = CC.ApiSendMessage(type, id, file, quotedItemId, mc, live, ttl) + return processSendMessageCmd(rh, cmd) + } + + private suspend fun processSendMessageCmd(rh: Long?, cmd: CC): AChatItem? { val r = sendCmd(rh, cmd) return when (r) { is CR.NewChatItem -> r.chatItem else -> { if (!(networkErrorAlert(r))) { - apiErrorAlert("apiSendMessage", generalGetString(MR.strings.error_sending_message), r) + apiErrorAlert("processSendMessageCmd", generalGetString(MR.strings.error_sending_message), r) } null } @@ -771,6 +775,13 @@ object ChatController { } } + suspend fun apiForwardChatItem(rh: Long?, toChatType: ChatType, toChatId: Long, fromChatType: ChatType, fromChatId: Long, itemId: Long): ChatItem? { + val cmd = CC.ApiForwardChatItem(toChatType, toChatId, fromChatType, fromChatId, itemId) + return processSendMessageCmd(rh, cmd)?.chatItem + } + + + suspend fun apiUpdateChatItem(rh: Long?, type: ChatType, id: Long, itemId: Long, mc: MsgContent, live: Boolean = false): AChatItem? { val r = sendCmd(rh, CC.ApiUpdateChatItem(type, id, itemId, mc, live)) if (r is CR.ChatItemUpdated) return r.chatItem @@ -1971,7 +1982,6 @@ object ChatController { } is CR.SndFileCompleteXFTP -> { chatItemSimpleUpdate(rhId, r.user, r.chatItem) - cleanupFile(r.chatItem) } is CR.SndFileError -> { if (r.chatItem_ != null) { @@ -2396,6 +2406,7 @@ sealed class CC { class ApiDeleteChatItem(val type: ChatType, val id: Long, val itemId: Long, val mode: CIDeleteMode): CC() class ApiDeleteMemberChatItem(val groupId: Long, val groupMemberId: Long, val itemId: Long): CC() class ApiChatItemReaction(val type: ChatType, val id: Long, val itemId: Long, val add: Boolean, val reaction: MsgReaction): CC() + class ApiForwardChatItem(val toChatType: ChatType, val toChatId: Long, val fromChatType: ChatType, val fromChatId: Long, val itemId: Long): CC() class ApiNewGroup(val userId: Long, val incognito: Boolean, val groupProfile: GroupProfile): CC() class ApiAddMember(val groupId: Long, val contactId: Long, val memberRole: GroupMemberRole): CC() class ApiJoinGroup(val groupId: Long): CC() @@ -2539,6 +2550,7 @@ sealed class CC { is ApiDeleteChatItem -> "/_delete item ${chatRef(type, id)} $itemId ${mode.deleteMode}" is ApiDeleteMemberChatItem -> "/_delete member item #$groupId $groupMemberId $itemId" is ApiChatItemReaction -> "/_reaction ${chatRef(type, id)} $itemId ${onOff(add)} ${json.encodeToString(reaction)}" + is ApiForwardChatItem -> "/_forward ${chatRef(toChatType, toChatId)} ${chatRef(fromChatType, fromChatId)} $itemId" is ApiNewGroup -> "/_group $userId incognito=${onOff(incognito)} ${json.encodeToString(groupProfile)}" is ApiAddMember -> "/_add #$groupId $contactId ${memberRole.memberRole}" is ApiJoinGroup -> "/_join #$groupId" @@ -2677,6 +2689,7 @@ sealed class CC { is ApiDeleteChatItem -> "apiDeleteChatItem" is ApiDeleteMemberChatItem -> "apiDeleteMemberChatItem" is ApiChatItemReaction -> "apiChatItemReaction" + is ApiForwardChatItem -> "apiForwardChatItem" is ApiNewGroup -> "apiNewGroup" is ApiAddMember -> "apiAddMember" is ApiJoinGroup -> "apiJoinGroup" diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatItemInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatItemInfoView.kt index 14bb3543c3..df8e535f82 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatItemInfoView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatItemInfoView.kt @@ -13,9 +13,8 @@ import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip -import androidx.compose.ui.platform.LocalClipboardManager import androidx.compose.ui.graphics.Color -import androidx.compose.ui.platform.LocalUriHandler +import androidx.compose.ui.platform.* import androidx.compose.ui.text.AnnotatedString import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource @@ -29,6 +28,7 @@ import chat.simplex.common.views.chat.item.ItemAction import chat.simplex.common.views.chat.item.MarkdownText import chat.simplex.common.views.helpers.* import chat.simplex.common.ui.theme.* +import chat.simplex.common.views.chatlist.* import chat.simplex.res.MR import dev.icerock.moko.resources.ImageResource @@ -36,10 +36,11 @@ sealed class CIInfoTab { class Delivery(val memberDeliveryStatuses: List): CIInfoTab() object History: CIInfoTab() class Quote(val quotedItem: CIQuote): CIInfoTab() + class Forwarded(val forwardedFromChatItem: AChatItem): CIInfoTab() } @Composable -fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, devTools: Boolean) { +fun ChatItemInfoView(chatRh: Long?, ci: ChatItem, ciInfo: ChatItemInfo, devTools: Boolean) { val sent = ci.chatDir.sent val appColors = CurrentColors.collectAsState().value.appColors val uriHandler = LocalUriHandler.current @@ -151,6 +152,70 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d } } + val local = when (ci.chatDir) { + is CIDirection.LocalSnd -> true + is CIDirection.LocalRcv -> true + else -> false + } + + @Composable + fun ForwardedFromSender(forwardedFromItem: AChatItem) { + @Composable + fun ItemText(text: String, fontStyle: FontStyle = FontStyle.Normal, color: Color = MaterialTheme.colors.onBackground) { + Text( + text, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + style = MaterialTheme.typography.body1, + fontStyle = fontStyle, + color = color, + ) + } + + Row(verticalAlignment = Alignment.CenterVertically) { + ChatInfoImage(forwardedFromItem.chatInfo, size = 57.dp) + Column( + modifier = Modifier + .padding(start = 15.dp) + .weight(1F) + ) { + if (forwardedFromItem.chatItem.chatDir.sent) { + ItemText(text = stringResource(MR.strings.sender_you_pronoun), fontStyle = FontStyle.Italic) + Spacer(Modifier.height(7.dp)) + ItemText(forwardedFromItem.chatInfo.chatViewName, color = MaterialTheme.colors.secondary) + } else if (forwardedFromItem.chatItem.chatDir is CIDirection.GroupRcv) { + ItemText(text = forwardedFromItem.chatItem.chatDir.groupMember.chatViewName) + Spacer(Modifier.height(7.dp)) + ItemText(forwardedFromItem.chatInfo.chatViewName, color = MaterialTheme.colors.secondary) + } else { + ItemText(forwardedFromItem.chatInfo.chatViewName, color = MaterialTheme.colors.onBackground) + } + } + } + } + + @Composable + fun ForwardedFromView(forwardedFromItem: AChatItem) { + Column { + SectionItemView( + click = { + withBGApi { + openChat(chatRh, forwardedFromItem.chatInfo, chatModel) + ModalManager.end.closeModals() + } + }, + padding = PaddingValues(start = 17.dp, end = DEFAULT_PADDING) + ) { + ForwardedFromSender(forwardedFromItem) + } + + if (!local) { + Divider(Modifier.padding(start = DEFAULT_PADDING_HALF, top = 41.dp, end = DEFAULT_PADDING_HALF, bottom = DEFAULT_PADDING_HALF)) + Text(stringResource(MR.strings.recipients_can_not_see_who_message_from), Modifier.padding(horizontal = DEFAULT_PADDING), fontSize = 12.sp, color = MaterialTheme.colors.secondary) + } + } + } + @Composable fun Details() { AppBarTitle(stringResource(if (ci.localNote) MR.strings.saved_message_title else if (sent) MR.strings.sent_message else MR.strings.received_message)) @@ -188,7 +253,7 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d // LALAL SCROLLBAR DOESN'T WORK ColumnWithScrollBar(Modifier.fillMaxWidth()) { Details() - SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = false) + SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = true) val versions = ciInfo.itemVersions if (versions.isNotEmpty()) { SectionView(padding = PaddingValues(horizontal = DEFAULT_PADDING)) { @@ -213,7 +278,7 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d // LALAL SCROLLBAR DOESN'T WORK ColumnWithScrollBar(Modifier.fillMaxWidth()) { Details() - SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = false) + SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = true) SectionView(padding = PaddingValues(horizontal = DEFAULT_PADDING)) { Text(stringResource(MR.strings.in_reply_to), style = MaterialTheme.typography.h2, modifier = Modifier.padding(bottom = DEFAULT_PADDING)) QuotedMsgView(qi) @@ -222,6 +287,22 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d } } + @Composable + fun ForwardedFromTab(forwardedFromItem: AChatItem) { + // LALAL SCROLLBAR DOESN'T WORK + ColumnWithScrollBar(Modifier.fillMaxWidth()) { + Details() + SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = true) + SectionView { + Text(stringResource(if (local) MR.strings.saved_from_chat_item_info_title else MR.strings.forwarded_from_chat_item_info_title), + style = MaterialTheme.typography.h2, + modifier = Modifier.padding(start = DEFAULT_PADDING, end = DEFAULT_PADDING, bottom = DEFAULT_PADDING)) + ForwardedFromView(forwardedFromItem) + } + SectionBottomSpacer() + } + } + @Composable fun MemberDeliveryStatusView(member: GroupMember, status: CIStatus) { SectionItemView( @@ -271,7 +352,7 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d // LALAL SCROLLBAR DOESN'T WORK ColumnWithScrollBar(Modifier.fillMaxWidth()) { Details() - SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = false) + SectionDividerSpaced(maxTopPadding = false, maxBottomPadding = true) val mss = membersStatuses(chatModel, memberDeliveryStatuses) if (mss.isNotEmpty()) { SectionView(padding = PaddingValues(horizontal = DEFAULT_PADDING)) { @@ -297,6 +378,7 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d is CIInfoTab.Delivery -> stringResource(MR.strings.delivery) is CIInfoTab.History -> stringResource(MR.strings.edit_history) is CIInfoTab.Quote -> stringResource(MR.strings.in_reply_to) + is CIInfoTab.Forwarded -> stringResource(if (local) MR.strings.saved_chat_item_info_tab else MR.strings.forwarded_chat_item_info_tab) } } @@ -305,6 +387,7 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d is CIInfoTab.Delivery -> MR.images.ic_double_check is CIInfoTab.History -> MR.images.ic_history is CIInfoTab.Quote -> MR.images.ic_reply + is CIInfoTab.Forwarded -> MR.images.ic_forward } } @@ -316,6 +399,9 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d if (ci.quotedItem != null) { numTabs += 1 } + if (ciInfo.forwardedFromChatItem != null) { + numTabs += 1 + } return numTabs } @@ -326,11 +412,6 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d .fillMaxHeight(), verticalArrangement = Arrangement.SpaceBetween ) { - LaunchedEffect(ciInfo) { - if (ciInfo.memberDeliveryStatuses != null) { - selection.value = CIInfoTab.Delivery(ciInfo.memberDeliveryStatuses) - } - } Column(Modifier.weight(1f)) { when (val sel = selection.value) { is CIInfoTab.Delivery -> { @@ -344,6 +425,10 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d is CIInfoTab.Quote -> { QuoteTab(sel.quotedItem) } + + is CIInfoTab.Forwarded -> { + ForwardedFromTab(sel.forwardedFromChatItem) + } } } val availableTabs = mutableListOf() @@ -354,6 +439,19 @@ fun ChatItemInfoView(chatModel: ChatModel, ci: ChatItem, ciInfo: ChatItemInfo, d if (ci.quotedItem != null) { availableTabs.add(CIInfoTab.Quote(ci.quotedItem)) } + if (ciInfo.forwardedFromChatItem != null) { + availableTabs.add(CIInfoTab.Forwarded(ciInfo.forwardedFromChatItem)) + } + if (availableTabs.none { it.javaClass == selection.value.javaClass }) { + selection.value = availableTabs.first() + } + LaunchedEffect(ciInfo) { + if (ciInfo.forwardedFromChatItem != null && selection.value is CIInfoTab.Forwarded) { + selection.value = CIInfoTab.Forwarded(ciInfo.forwardedFromChatItem) + } else if (ciInfo.memberDeliveryStatuses != null) { + selection.value = CIInfoTab.Delivery(ciInfo.memberDeliveryStatuses) + } + } TabRow( selectedTabIndex = availableTabs.indexOfFirst { it::class == selection.value::class }, backgroundColor = Color.Transparent, 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 55ee46f1e2..0c9a973a69 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 @@ -52,9 +52,11 @@ fun ChatView(chatId: String, chatModel: ChatModel, onComposed: suspend (chatId: val user = chatModel.currentUser.value val useLinkPreviews = chatModel.controller.appPrefs.privacyLinkPreviews.get() val composeState = rememberSaveable(saver = ComposeState.saver()) { + val draft = chatModel.draft.value + val sharedContent = chatModel.sharedContent.value mutableStateOf( - if (chatModel.draftChatId.value == chatId && chatModel.draft.value != null) { - chatModel.draft.value ?: ComposeState(useLinkPreviews = useLinkPreviews) + if (chatModel.draftChatId.value == chatId && draft != null && (sharedContent !is SharedContent.Forward || sharedContent.fromChatInfo.id == chatId)) { + draft } else { ComposeState(useLinkPreviews = useLinkPreviews) } @@ -408,7 +410,7 @@ fun ChatView(chatId: String, chatModel: ChatModel, onComposed: suspend (chatId: clipboard.shareText(itemInfoShareText(chatModel, cItem, ciInfo, chatModel.controller.appPrefs.developerTools.get())) } }) { close -> - ChatItemInfoView(chatModel, cItem, ciInfo, devTools = chatModel.controller.appPrefs.developerTools.get()) + ChatItemInfoView(chatRh, cItem, ciInfo, devTools = chatModel.controller.appPrefs.developerTools.get()) KeyChangeEffect(chatModel.chatId.value) { close() } @@ -956,7 +958,7 @@ fun BoxWithConstraintsScope.ChatItemsList( tryOrShowError("${cItem.id}ChatItem", error = { CIBrokenComposableView(if (cItem.chatDir.sent) Alignment.CenterEnd else Alignment.CenterStart) }) { - ChatItemView(chat.chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, range = range, deleteMessage = deleteMessage, deleteMessages = deleteMessages, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, setReaction = setReaction, showItemDetails = showItemDetails, developerTools = developerTools) + ChatItemView(chat.remoteHostId, chat.chatInfo, cItem, composeState, provider, useLinkPreviews = useLinkPreviews, linkMode = linkMode, revealed = revealed, range = range, deleteMessage = deleteMessage, deleteMessages = deleteMessages, receiveFile = receiveFile, cancelFile = cancelFile, joinGroup = joinGroup, acceptCall = acceptCall, acceptFeature = acceptFeature, openDirectChat = openDirectChat, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember, scrollToItem = scrollToItem, setReaction = setReaction, showItemDetails = showItemDetails, developerTools = developerTools) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt index 1c8b32d467..9ab2b47702 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt @@ -46,6 +46,7 @@ sealed class ComposeContextItem { @Serializable object NoContextItem: ComposeContextItem() @Serializable class QuotedItem(val chatItem: ChatItem): ComposeContextItem() @Serializable class EditingItem(val chatItem: ChatItem): ComposeContextItem() + @Serializable class ForwardingItem(val chatItem: ChatItem, val fromChatInfo: ChatInfo): ComposeContextItem() } @Serializable @@ -79,13 +80,18 @@ data class ComposeState( is ComposeContextItem.EditingItem -> true else -> false } + val forwarding: Boolean + get() = when (contextItem) { + is ComposeContextItem.ForwardingItem -> true + else -> false + } val sendEnabled: () -> Boolean get() = { val hasContent = when (preview) { is ComposePreview.MediaPreview -> true is ComposePreview.VoicePreview -> true is ComposePreview.FilePreview -> true - else -> message.isNotEmpty() || liveMessage != null + else -> message.isNotEmpty() || forwarding || liveMessage != null } hasContent && !inProgress } @@ -109,7 +115,7 @@ data class ComposeState( val attachmentDisabled: Boolean get() { - if (editing || liveMessage != null || inProgress) return true + if (editing || forwarding || liveMessage != null || inProgress) return true return when (preview) { ComposePreview.NoPreview -> false is ComposePreview.CLinkPreview -> false @@ -355,6 +361,7 @@ fun ComposeView( is SharedContent.Media -> shared.uris.map { it.toString() } is SharedContent.File -> listOf(shared.uri.toString()) is SharedContent.Text -> emptyList() + is SharedContent.Forward -> emptyList() } // When sharing a file and pasting it in SimpleX itself, the file shouldn't be deleted before sending or before leaving the chat after sharing chatModel.filesToDelete.removeAll { file -> @@ -401,6 +408,21 @@ fun ComposeView( composeState.value = composeState.value.copy(inProgress = true) } + suspend fun forwardItem(rhId: Long?, forwardedItem: ChatItem, fromChatInfo: ChatInfo): ChatItem? { + val chatItem = controller.apiForwardChatItem( + rh = rhId, + toChatType = chat.chatInfo.chatType, + toChatId = chat.chatInfo.apiId, + fromChatType = fromChatInfo.chatType, + fromChatId = fromChatInfo.apiId, + itemId = forwardedItem.id + ) + if (chatItem != null) { + chatModel.addChatItem(rhId, chat.chatInfo, chatItem) + } + return chatItem + } + fun checkLinkPreview(): MsgContent { return when (val composePreview = cs.preview) { is ComposePreview.CLinkPreview -> { @@ -460,11 +482,18 @@ fun ComposeView( if (liveMessage != null) composeState.value = cs.copy(liveMessage = null) sending() } - clearCurrentDraft() + if (!cs.forwarding || chatModel.draft.value?.forwarding == true) { + clearCurrentDraft() + } if (chat.nextSendGrpInv) { sendMemberContactInvitation() sent = null + } else if (cs.contextItem is ComposeContextItem.ForwardingItem) { + sent = forwardItem(chat.remoteHostId, cs.contextItem.chatItem, cs.contextItem.fromChatInfo) + if (cs.message.isNotEmpty()) { + sent = send(chat, checkLinkPreview(), quoted = sent?.id, live = false, ttl = null) + } } else if (cs.contextItem is ComposeContextItem.EditingItem) { val ei = cs.contextItem.chatItem sent = updateMessage(ei, chat, live) @@ -563,7 +592,15 @@ fun ComposeView( sent = send(chat, MsgContent.MCText(msgText), quotedItemId, null, live, ttl) } } + val wasForwarding = cs.forwarding + val forwardingFromChatId = (cs.contextItem as? ComposeContextItem.ForwardingItem)?.fromChatInfo?.id clearState(live) + val draft = chatModel.draft.value + if (wasForwarding && chatModel.draftChatId.value == chat.chatInfo.id && forwardingFromChatId != chat.chatInfo.id && draft != null) { + composeState.value = draft + } else { + clearCurrentDraft() + } return sent } @@ -745,6 +782,9 @@ fun ComposeView( is ComposeContextItem.EditingItem -> ContextItemView(contextItem.chatItem, painterResource(MR.images.ic_edit_filled)) { clearState() } + is ComposeContextItem.ForwardingItem -> ContextItemView(contextItem.chatItem, painterResource(MR.images.ic_forward), showSender = false) { + composeState.value = composeState.value.copy(contextItem = ComposeContextItem.NoContextItem) + } } } @@ -764,6 +804,10 @@ fun ComposeView( is SharedContent.Text -> onMessageChange(shared.text) is SharedContent.Media -> composeState.processPickedMedia(shared.uris, shared.text) is SharedContent.File -> composeState.processPickedFile(shared.uri, shared.text) + is SharedContent.Forward -> composeState.value = composeState.value.copy( + contextItem = ComposeContextItem.ForwardingItem(shared.chatItem, shared.fromChatInfo), + preview = if (composeState.value.preview is ComposePreview.CLinkPreview) composeState.value.preview else ComposePreview.NoPreview + ) null -> {} } chatModel.sharedContent.value = null @@ -903,6 +947,17 @@ fun ComposeView( chatModel.removeLiveDummy() CIFile.cachedRemoteFileRequests.clear() } + if (appPlatform.isDesktop) { + // Don't enable this on Android, it breaks it, This method only works on desktop. For Android there is a `KeyChangeEffect(chatModel.chatId.value)` + DisposableEffect(Unit) { + onDispose { + if (chatModel.sharedContent.value is SharedContent.Forward && saveLastDraft && !composeState.value.empty) { + chatModel.draft.value = composeState.value + chatModel.draftChatId.value = chat.id + } + } + } + } val timedMessageAllowed = remember(chat.chatInfo) { chat.chatInfo.featureEnabled(ChatFeature.TimedMessages) } val sendButtonColor = diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ContextItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ContextItemView.kt index b53574cfa4..ce34ecf0c3 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ContextItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ContextItemView.kt @@ -4,26 +4,29 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.* import androidx.compose.material.* import androidx.compose.ui.graphics.painter.Painter -import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import androidx.compose.desktop.ui.tooling.preview.Preview -import androidx.compose.ui.text.TextStyle +import androidx.compose.foundation.text.InlineTextContent +import androidx.compose.foundation.text.appendInlineContent +import androidx.compose.runtime.* +import androidx.compose.ui.text.* import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import chat.simplex.common.ui.theme.* import chat.simplex.common.views.chat.item.* import chat.simplex.common.model.* import chat.simplex.res.MR +import dev.icerock.moko.resources.ImageResource import kotlinx.datetime.Clock @Composable fun ContextItemView( contextItem: ChatItem, contextIcon: Painter, + showSender: Boolean = true, cancelContextItem: () -> Unit ) { val sent = contextItem.chatDir.sent @@ -31,16 +34,47 @@ fun ContextItemView( val receivedColor = CurrentColors.collectAsState().value.appColors.receivedMessage @Composable - fun msgContentView(lines: Int) { + fun MessageText(attachment: ImageResource?, lines: Int) { + val inlineContent: Pair Unit, Map>? = if (attachment != null) { + remember(contextItem.id) { + val inlineContentBuilder: AnnotatedString.Builder.() -> Unit = { + appendInlineContent(id = "attachmentIcon") + append(" ") + } + val inlineContent = mapOf( + "attachmentIcon" to InlineTextContent( + Placeholder(20.sp, 20.sp, PlaceholderVerticalAlign.TextCenter) + ) { + Icon(painterResource(attachment), null, tint = MaterialTheme.colors.secondary) + } + ) + inlineContentBuilder to inlineContent + } + } else null MarkdownText( contextItem.text, contextItem.formattedText, + sender = null, toggleSecrets = false, maxLines = lines, + inlineContent = inlineContent, linkMode = SimplexLinkMode.DESCRIPTION, modifier = Modifier.fillMaxWidth(), ) } + fun attachment(): ImageResource? = + when (contextItem.content.msgContent) { + is MsgContent.MCFile -> MR.images.ic_draft_filled + is MsgContent.MCImage -> MR.images.ic_image + is MsgContent.MCVoice -> MR.images.ic_play_arrow_filled + else -> null + } + + @Composable + fun ContextMsgPreview(lines: Int) { + MessageText(remember(contextItem.id) { attachment() }, lines) + } + Row( Modifier .padding(top = 8.dp) @@ -64,7 +98,7 @@ fun ContextItemView( tint = MaterialTheme.colors.secondary, ) val sender = contextItem.memberDisplayName - if (sender != null) { + if (showSender && sender != null) { Column( horizontalAlignment = Alignment.Start, verticalArrangement = Arrangement.spacedBy(4.dp), @@ -73,10 +107,10 @@ fun ContextItemView( sender, style = TextStyle(fontSize = 13.5.sp, color = CurrentColors.value.colors.secondary) ) - msgContentView(lines = 2) + ContextMsgPreview(lines = 2) } } else { - msgContentView(lines = 3) + ContextMsgPreview(lines = 3) } } IconButton(onClick = cancelContextItem) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt index 14bcf7dfb7..58705bd00a 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/SendMsgView.kt @@ -72,7 +72,7 @@ fun SendMsgView( } } val showVoiceButton = !nextSendGrpInv && cs.message.isEmpty() && showVoiceRecordIcon && !composeState.value.editing && - cs.liveMessage == null && (cs.preview is ComposePreview.NoPreview || recState.value is RecordingState.Started) + !composeState.value.forwarding && cs.liveMessage == null && (cs.preview is ComposePreview.NoPreview || recState.value is RecordingState.Started) val showDeleteTextButton = rememberSaveable { mutableStateOf(false) } val sendMsgButtonDisabled = !sendMsgEnabled || !cs.sendEnabled() || (!allowedVoiceByPrefs && cs.preview is ComposePreview.VoicePreview) || @@ -157,7 +157,7 @@ fun SendMsgView( fun MenuItems(): List<@Composable () -> Unit> { val menuItems = mutableListOf<@Composable () -> Unit>() - if (cs.liveMessage == null && !cs.editing && !nextSendGrpInv || sendMsgEnabled) { + if (cs.liveMessage == null && !cs.editing && !cs.forwarding && !nextSendGrpInv || sendMsgEnabled) { if ( cs.preview !is ComposePreview.VoicePreview && cs.contextItem is ComposeContextItem.NoContextItem && diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt index 68a8eb44a4..19cc949543 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIChatFeatureView.kt @@ -95,8 +95,8 @@ private fun featureInfo(ci: ChatItem, chatInfo: ChatInfo): FeatureInfo? = when (ci.content) { is CIContent.RcvChatFeature -> ci.content.feature.toFeatureInfo(ci.content.enabled.iconColor, ci.content.param, ci.content.feature.name) is CIContent.SndChatFeature -> ci.content.feature.toFeatureInfo(ci.content.enabled.iconColor, ci.content.param, ci.content.feature.name) - is CIContent.RcvGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enabled(ci.content.memberRole_, (chatInfo as ChatInfo.Group).groupInfo.membership).iconColor, ci.content.param, ci.content.groupFeature.name) - is CIContent.SndGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enabled(ci.content.memberRole_, (chatInfo as ChatInfo.Group).groupInfo.membership).iconColor, ci.content.param, ci.content.groupFeature.name) + is CIContent.RcvGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enabled(ci.content.memberRole_, (chatInfo as? ChatInfo.Group)?.groupInfo?.membership).iconColor, ci.content.param, ci.content.groupFeature.name) + is CIContent.SndGroupFeature -> ci.content.groupFeature.toFeatureInfo(ci.content.preference.enabled(ci.content.memberRole_, (chatInfo as? ChatInfo.Group)?.groupInfo?.membership).iconColor, ci.content.param, ci.content.groupFeature.name) else -> null } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt index f7909eed12..da766d920e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt @@ -59,18 +59,11 @@ fun CIFileView( } } - fun fileSizeValid(): Boolean { - if (file != null) { - return file.fileSize <= getMaxFileSize(file.fileProtocol) - } - return false - } - fun fileAction() { if (file != null) { when { file.fileStatus is CIFileStatus.RcvInvitation -> { - if (fileSizeValid()) { + if (fileSizeValid(file)) { receiveFile(file.fileId) } else { AlertManager.shared.showAlertMsg( @@ -165,7 +158,7 @@ fun CIFileView( is CIFileStatus.SndCancelled -> fileIcon(innerIcon = painterResource(MR.images.ic_close)) is CIFileStatus.SndError -> fileIcon(innerIcon = painterResource(MR.images.ic_close)) is CIFileStatus.RcvInvitation -> - if (fileSizeValid()) + if (fileSizeValid(file)) fileIcon(innerIcon = painterResource(MR.images.ic_arrow_downward), color = MaterialTheme.colors.primary) else fileIcon(innerIcon = painterResource(MR.images.ic_priority_high), color = WarningOrange) @@ -216,6 +209,8 @@ fun CIFileView( } } +fun fileSizeValid(file: CIFile): Boolean = file.fileSize <= getMaxFileSize(file.fileProtocol) + @Composable fun rememberSaveFileLauncher(ciFile: CIFile?): FileChooserLauncher = rememberFileChooserLauncher(false, ciFile) { to: URI? -> diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index fe70139d91..427f34b2e5 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -19,6 +19,7 @@ import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.* import chat.simplex.common.model.* +import chat.simplex.common.model.ChatModel.controller import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* import chat.simplex.common.views.chat.* @@ -40,6 +41,7 @@ fun chatEventText(eventText: String, ts: String): AnnotatedString = @Composable fun ChatItemView( + rhId: Long?, cInfo: ChatInfo, cItem: ChatItem, composeState: MutableState, @@ -195,12 +197,16 @@ fun ChatItemView( } val clipboard = LocalClipboardManager.current val cachedRemoteReqs = remember { CIFile.cachedRemoteFileRequests } - val copyAndShareAllowed = when { - cItem.content.text.isNotEmpty() -> true + fun fileForwardingAllowed() = when { cItem.file != null && chatModel.connectedToRemote() && cachedRemoteReqs[cItem.file.fileSource] != false && cItem.file.loaded -> true getLoadedFilePath(cItem.file) != null -> true else -> false } + val copyAndShareAllowed = when { + cItem.content.text.isNotEmpty() -> true + fileForwardingAllowed() -> true + else -> false + } if (copyAndShareAllowed) { ItemAction(stringResource(MR.strings.share_verb), painterResource(MR.images.ic_share), onClick = { @@ -227,8 +233,19 @@ fun ChatItemView( showMenu.value = false }) } - if ((cItem.content.msgContent is MsgContent.MCImage || cItem.content.msgContent is MsgContent.MCVideo || cItem.content.msgContent is MsgContent.MCFile || cItem.content.msgContent is MsgContent.MCVoice) && (getLoadedFilePath(cItem.file) != null || (chatModel.connectedToRemote() && cachedRemoteReqs[cItem.file?.fileSource] != false && cItem.file?.loaded == true))) { + if (cItem.file != null && (getLoadedFilePath(cItem.file) != null || (chatModel.connectedToRemote() && cachedRemoteReqs[cItem.file.fileSource] != false && cItem.file.loaded))) { SaveContentItemAction(cItem, saveFileLauncher, showMenu) + } else if (cItem.file != null && cItem.file.fileStatus is CIFileStatus.RcvInvitation && fileSizeValid(cItem.file)) { + ItemAction(stringResource(MR.strings.download_file), painterResource(MR.images.ic_arrow_downward), onClick = { + withBGApi { + Log.d(TAG, "ChatItemView downloadFileAction") + val user = chatModel.currentUser.value + if (user != null) { + controller.receiveFile(rhId, user, cItem.file.fileId) + } + } + showMenu.value = false + }) } if (cItem.meta.editable && cItem.content.msgContent !is MsgContent.MCVoice && !live) { ItemAction(stringResource(MR.strings.edit_verb), painterResource(MR.images.ic_edit_filled), onClick = { @@ -236,6 +253,16 @@ fun ChatItemView( showMenu.value = false }) } + if (cItem.meta.itemDeleted == null && + (cItem.file == null || fileForwardingAllowed()) && + !cItem.isLiveDummy && !live + ) { + ItemAction(stringResource(MR.strings.forward_chat_item), painterResource(MR.images.ic_forward), onClick = { + chatModel.chatId.value = null + chatModel.sharedContent.value = SharedContent.Forward(cItem, cInfo) + showMenu.value = false + }) + } ItemInfoAction(cInfo, cItem, showItemDetails, showMenu) if (revealed.value) { HideItemAction(revealed, showMenu) @@ -458,11 +485,11 @@ fun ChatItemView( MsgContentItemDropdownMenu() } is CIContent.RcvGroupFeature -> { - CIChatFeatureView(cInfo, cItem, c.groupFeature, c.preference.enabled(c.memberRole_, (cInfo as ChatInfo.Group).groupInfo.membership).iconColor, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.groupFeature, c.preference.enabled(c.memberRole_, (cInfo as? ChatInfo.Group)?.groupInfo?.membership).iconColor, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.SndGroupFeature -> { - CIChatFeatureView(cInfo, cItem, c.groupFeature, c.preference.enabled(c.memberRole_, (cInfo as ChatInfo.Group).groupInfo.membership).iconColor, revealed = revealed, showMenu = showMenu) + CIChatFeatureView(cInfo, cItem, c.groupFeature, c.preference.enabled(c.memberRole_, (cInfo as? ChatInfo.Group)?.groupInfo?.membership).iconColor, revealed = revealed, showMenu = showMenu) MsgContentItemDropdownMenu() } is CIContent.RcvChatFeatureRejected -> { @@ -782,6 +809,7 @@ expect fun copyItemToClipboard(cItem: ChatItem, clipboard: ClipboardManager) fun PreviewChatItemView() { SimpleXTheme { ChatItemView( + rhId = null, ChatInfo.Direct.sampleData, ChatItem.getSampleData( 1, CIDirection.DirectSnd(), Clock.System.now(), "hello" @@ -818,6 +846,7 @@ fun PreviewChatItemView() { fun PreviewChatItemViewDeletedContent() { SimpleXTheme { ChatItemView( + rhId = null, ChatInfo.Direct.sampleData, ChatItem.getDeletedContentSampleData(), useLinkPreviews = true, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt index 3535c8fe26..a3b70e65ec 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt @@ -87,14 +87,14 @@ fun FramedItemView( } @Composable - fun FramedItemHeader(caption: String, italic: Boolean, icon: Painter? = null) { + fun FramedItemHeader(caption: String, italic: Boolean, icon: Painter? = null, pad: Boolean = false) { val sentColor = CurrentColors.collectAsState().value.appColors.sentMessage val receivedColor = CurrentColors.collectAsState().value.appColors.receivedMessage Row( Modifier .background(if (sent) sentColor.toQuote() else receivedColor.toQuote()) .fillMaxWidth() - .padding(start = 8.dp, top = 6.dp, end = 12.dp, bottom = if (ci.quotedItem == null) 6.dp else 0.dp), + .padding(start = 8.dp, top = 6.dp, end = 12.dp, bottom = if (pad || (ci.quotedItem == null && ci.meta.itemForwarded == null)) 6.dp else 0.dp), horizontalArrangement = Arrangement.spacedBy(4.dp), verticalAlignment = Alignment.CenterVertically ) { @@ -223,7 +223,7 @@ fun FramedItemView( if (ci.quotedItem != null) { ciQuoteView(ci.quotedItem) } else if (ci.meta.itemForwarded != null) { - FramedItemHeader(stringResource(MR.strings.forwarded_description), true, painterResource(MR.images.ic_forward)) + FramedItemHeader(ci.meta.itemForwarded.text(chatInfo.chatType), true, painterResource(MR.images.ic_forward), pad = true) } if (ci.file == null && ci.formattedText == null && !ci.meta.isLive && isShortEmoji(ci.content.text)) { Box(Modifier.padding(vertical = 6.dp, horizontal = 12.dp)) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/TextItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/TextItemView.kt index 5169d944c8..66061767e5 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/TextItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/TextItemView.kt @@ -68,7 +68,7 @@ fun MarkdownText ( senderBold: Boolean = false, modifier: Modifier = Modifier, linkMode: SimplexLinkMode, - inlineContent: Map? = null, + inlineContent: Pair Unit, Map>? = null, onLinkLongClick: (link: String) -> Unit = {} ) { val textLayoutDirection = remember (text) { @@ -119,6 +119,7 @@ fun MarkdownText ( } if (formattedText == null) { val annotatedText = buildAnnotatedString { + inlineContent?.first?.invoke(this) appendSender(this, sender, senderBold) if (text is String) append(text) else if (text is AnnotatedString) append(text) @@ -127,10 +128,11 @@ fun MarkdownText ( } if (meta != null) withStyle(reserveTimestampStyle) { append(reserve) } } - Text(annotatedText, style = style, modifier = modifier, maxLines = maxLines, overflow = overflow, inlineContent = inlineContent ?: mapOf()) + Text(annotatedText, style = style, modifier = modifier, maxLines = maxLines, overflow = overflow, inlineContent = inlineContent?.second ?: mapOf()) } else { var hasAnnotations = false val annotatedText = buildAnnotatedString { + inlineContent?.first?.invoke(this) appendSender(this, sender, senderBold) for ((i, ft) in formattedText.withIndex()) { if (ft.format == null) append(ft.text) @@ -210,7 +212,7 @@ fun MarkdownText ( } ) } else { - Text(annotatedText, style = style, modifier = modifier, maxLines = maxLines, overflow = overflow) + Text(annotatedText, style = style, modifier = modifier, maxLines = maxLines, overflow = overflow, inlineContent = inlineContent?.second ?: mapOf()) } } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatPreviewView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatPreviewView.kt index 1bb5a78996..336d104d2d 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatPreviewView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ChatPreviewView.kt @@ -90,7 +90,7 @@ fun ChatPreviewView( Icon(painterResource(MR.images.ic_verified_user), null, Modifier.size(19.dp).padding(end = 3.dp, top = 1.dp), tint = MaterialTheme.colors.secondary) } - fun messageDraft(draft: ComposeState): Pair> { + fun messageDraft(draft: ComposeState): Pair Unit, Map> { fun attachment(): Pair? = when (draft.preview) { is ComposePreview.FilePreview -> MR.images.ic_draft_filled to draft.preview.fileName @@ -100,7 +100,7 @@ fun ChatPreviewView( } val attachment = attachment() - val text = buildAnnotatedString { + val inlineContentBuilder: AnnotatedString.Builder.() -> Unit = { appendInlineContent(id = "editIcon") append(" ") if (attachment != null) { @@ -110,7 +110,6 @@ fun ChatPreviewView( } append(" ") } - append(draft.message) } val inlineContent: Map = mapOf( "editIcon" to InlineTextContent( @@ -124,7 +123,7 @@ fun ChatPreviewView( Icon(if (attachment?.first != null) painterResource(attachment.first) else painterResource(MR.images.ic_edit_note), null, tint = MaterialTheme.colors.secondary) } ) - return text to inlineContent + return inlineContentBuilder to inlineContent } @Composable @@ -169,7 +168,7 @@ fun ChatPreviewView( if (ci != null) { if (showChatPreviews || (chatModelDraftChatId == chat.id && chatModelDraft != null)) { val (text: CharSequence, inlineTextContent) = when { - chatModelDraftChatId == chat.id && chatModelDraft != null -> remember(chatModelDraft) { messageDraft(chatModelDraft) } + chatModelDraftChatId == chat.id && chatModelDraft != null -> remember(chatModelDraft) { chatModelDraft.message to messageDraft(chatModelDraft) } ci.meta.itemDeleted == null -> ci.text to null else -> markedDeletedText(ci.meta) to null } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ShareListView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ShareListView.kt index 04fef25ac2..a36930f5ce 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ShareListView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chatlist/ShareListView.kt @@ -13,9 +13,8 @@ import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import chat.simplex.common.SettingsViewState +import chat.simplex.common.model.* import chat.simplex.common.views.helpers.* -import chat.simplex.common.model.Chat -import chat.simplex.common.model.ChatModel import chat.simplex.common.platform.* import chat.simplex.res.MR import kotlinx.coroutines.flow.MutableStateFlow @@ -74,7 +73,7 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState val navButton: @Composable RowScope.() -> Unit = { when { showSearch -> NavigationButtonBack(hideSearchOnBack) - users.size > 1 || chatModel.remoteHosts.isNotEmpty() -> { + (users.size > 1 || chatModel.remoteHosts.isNotEmpty()) && remember { chatModel.sharedContent }.value !is SharedContent.Forward -> { val allRead = users .filter { u -> !u.user.activeUser && !u.user.hidden } .all { u -> u.unreadCount == 0 } @@ -82,7 +81,14 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState userPickerState.value = AnimatedViewState.VISIBLE } } - else -> NavigationButtonBack(onButtonClicked = { chatModel.sharedContent.value = null }) + else -> NavigationButtonBack(onButtonClicked = { + val sharedContent = chatModel.sharedContent.value + // Drop shared content + chatModel.sharedContent.value = null + if (sharedContent is SharedContent.Forward) { + chatModel.chatId.value = sharedContent.fromChatInfo.id + } + }) } } if (chatModel.chats.size >= 8) { @@ -118,7 +124,8 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState is SharedContent.Text -> stringResource(MR.strings.share_message) is SharedContent.Media -> stringResource(MR.strings.share_image) is SharedContent.File -> stringResource(MR.strings.share_file) - else -> stringResource(MR.strings.share_message) + is SharedContent.Forward -> stringResource(MR.strings.forward_message) + null -> stringResource(MR.strings.share_message) }, color = MaterialTheme.colors.onBackground, fontWeight = FontWeight.SemiBold, @@ -135,12 +142,14 @@ private fun ShareListToolbar(chatModel: ChatModel, userPickerState: MutableState @Composable private fun ShareList(chatModel: ChatModel, search: String) { - val filter: (Chat) -> Boolean = { chat: Chat -> - chat.chatInfo.chatViewName.lowercase().contains(search.lowercase()) - } val chats by remember(search) { derivedStateOf { - if (search.isEmpty()) chatModel.chats.toList().filter { it.chatInfo.ready } else chatModel.chats.toList().filter { it.chatInfo.ready }.filter(filter) + val sorted = chatModel.chats.toList().sortedByDescending { it.chatInfo is ChatInfo.Local } + if (search.isEmpty()) { + sorted.filter { it.chatInfo.ready } + } else { + sorted.filter { it.chatInfo.ready && it.chatInfo.chatViewName.lowercase().contains(search.lowercase()) } + } } } LazyColumnWithScrollBar( diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Enums.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Enums.kt index 67f82e5279..ee4638445b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Enums.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Enums.kt @@ -2,6 +2,8 @@ package chat.simplex.common.views.helpers import androidx.compose.runtime.saveable.Saver +import chat.simplex.common.model.ChatInfo +import chat.simplex.common.model.ChatItem import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.serialization.* import kotlinx.serialization.descriptors.* @@ -13,6 +15,7 @@ sealed class SharedContent { data class Text(val text: String): SharedContent() data class Media(val text: String, val uris: List): SharedContent() data class File(val text: String, val uri: URI): SharedContent() + data class Forward(val chatItem: ChatItem, val fromChatInfo: ChatInfo): SharedContent() } enum class AnimatedViewState { 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 b0287ed9fc..7c7cb2c384 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -47,6 +47,8 @@ LIVE moderated forwarded + saved + saved from %s invalid chat invalid data error showing message @@ -268,6 +270,11 @@ History No history In reply to + Saved + Forwarded + Saved from + Forwarded from + Recipient(s) can\'t see who this message is from. Delivery No delivery information Delete @@ -295,6 +302,8 @@ Revoke file? File will be deleted from servers. Revoke + Forward + Download edited @@ -329,6 +338,7 @@ Share message… Share media… Share file… + Forward message… Attach From 925cb393973e6d4f5a8a990e9686bbc511a712a4 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 19 Apr 2024 23:37:47 +0700 Subject: [PATCH 051/147] desktop: using system sound in screenshare (#4035) Co-authored-by: Evgeny Poberezkin --- .../commonMain/resources/assets/www/call.js | 22 ++++++++++++++++--- packages/simplex-chat-webrtc/src/call.ts | 17 ++++++++++++-- 2 files changed, 34 insertions(+), 5 deletions(-) diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js index 9e7d29189f..218fe0c660 100644 --- a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js +++ b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js @@ -486,8 +486,22 @@ const processCommand = (function () { } return; } - for (const t of call.localStream.getTracks()) - t.stop(); + if (!call.screenShareEnabled) { + for (const t of call.localStream.getTracks()) + t.stop(); + } + else { + // Don't stop audio track if switching to screenshare + for (const t of call.localStream.getVideoTracks()) + t.stop(); + // Replace new track from screenshare with old track from recording device + for (const t of localStream.getAudioTracks()) { + t.stop(); + localStream.removeTrack(t); + } + for (const t of call.localStream.getAudioTracks()) + localStream.addTrack(t); + } call.localCamera = camera; const audioTracks = localStream.getAudioTracks(); const videoTracks = localStream.getVideoTracks(); @@ -547,7 +561,9 @@ const processCommand = (function () { //}, //aspectRatio: 1.33, }, - audio: true, + audio: false, + // This works with Chrome, Edge, Opera, but not with Firefox and Safari + // systemAudio: "include" }; return navigator.mediaDevices.getDisplayMedia(constraints); } diff --git a/packages/simplex-chat-webrtc/src/call.ts b/packages/simplex-chat-webrtc/src/call.ts index 41241e22c2..e7788ac723 100644 --- a/packages/simplex-chat-webrtc/src/call.ts +++ b/packages/simplex-chat-webrtc/src/call.ts @@ -689,7 +689,18 @@ const processCommand = (function () { } return } - for (const t of call.localStream.getTracks()) t.stop() + if (!call.screenShareEnabled) { + for (const t of call.localStream.getTracks()) t.stop() + } else { + // Don't stop audio track if switching to screenshare + for (const t of call.localStream.getVideoTracks()) t.stop() + // Replace new track from screenshare with old track from recording device + for (const t of localStream.getAudioTracks()) { + t.stop() + localStream.removeTrack(t) + } + for (const t of call.localStream.getAudioTracks()) localStream.addTrack(t) + } call.localCamera = camera const audioTracks = localStream.getAudioTracks() @@ -755,7 +766,9 @@ const processCommand = (function () { //}, //aspectRatio: 1.33, }, - audio: true, + audio: false, + // This works with Chrome, Edge, Opera, but not with Firefox and Safari + // systemAudio: "include" } return navigator.mediaDevices.getDisplayMedia(constraints) } From c8c81a840beb2a661b54c6a59765a154bf0fa66d Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 19 Apr 2024 21:17:22 +0100 Subject: [PATCH 052/147] core: revert build to use two branches (#4052) * Revert "scripts: ghc version update (#4010)" This reverts commit 35b7f2cb1c013470d44f1bf42eb2c59eb51b7a55. * Revert "Force include hs_init_with_rtsopts (#4028)" This reverts commit 76a33a374312a65750b2d016e386bb2b2bf3d87a. * Revert "core: fix nix config (#4003)" This reverts commit f8e6a78a3b51b57ae8d60f71fa7c2d634df58992. * Revert "ci: build armv7a with 8.10.7 in the main branches (master, stable) (#3733)" This reverts commit 0d7a32877f77367ab5f57d43bc8b3ede0a9c2c44. --- .github/workflows/build.yml | 8 +-- Dockerfile | 2 +- docs/CLI.md | 2 +- docs/CONTRIBUTING.md | 20 +++---- flake.lock | 95 +++++++----------------------- flake.nix | 22 ++----- scripts/desktop/build-lib-linux.sh | 2 +- scripts/desktop/build-lib-mac.sh | 2 +- 8 files changed, 44 insertions(+), 109 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0b11716605..a5a07a8722 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -55,22 +55,22 @@ jobs: ghc: "8.10.7" cache_path: ~/.cabal/store - os: ubuntu-20.04 - ghc: "9.6.4" + ghc: "9.6.3" cache_path: ~/.cabal/store asset_name: simplex-chat-ubuntu-20_04-x86-64 desktop_asset_name: simplex-desktop-ubuntu-20_04-x86_64.deb - os: ubuntu-22.04 - ghc: "9.6.4" + ghc: "9.6.3" cache_path: ~/.cabal/store asset_name: simplex-chat-ubuntu-22_04-x86-64 desktop_asset_name: simplex-desktop-ubuntu-22_04-x86_64.deb - os: macos-latest - ghc: "9.6.4" + ghc: "9.6.3" cache_path: ~/.cabal/store asset_name: simplex-chat-macos-x86-64 desktop_asset_name: simplex-desktop-macos-x86_64.dmg - os: windows-latest - ghc: "9.6.4" + ghc: "9.6.3" cache_path: C:/cabal asset_name: simplex-chat-windows-x86-64 desktop_asset_name: simplex-desktop-windows-x86_64.msi diff --git a/Dockerfile b/Dockerfile index 29f3381726..6c60195f97 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ FROM ubuntu:${TAG} AS build RUN apt-get update && apt-get install -y curl git build-essential libgmp3-dev zlib1g-dev llvm-12 llvm-12-dev libnuma-dev libssl-dev # Specify bootstrap Haskell versions -ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.4 +ENV BOOTSTRAP_HASKELL_GHC_VERSION=9.6.3 ENV BOOTSTRAP_HASKELL_CABAL_VERSION=3.10.1.0 # Install ghcup diff --git a/docs/CLI.md b/docs/CLI.md index cc74d29db9..d4f799c7af 100644 --- a/docs/CLI.md +++ b/docs/CLI.md @@ -102,7 +102,7 @@ DOCKER_BUILDKIT=1 docker build --output ~/.local/bin . #### In any OS -1. Install [Haskell GHCup](https://www.haskell.org/ghcup/), GHC 9.6.4 and cabal 3.10.1.0: +1. Install [Haskell GHCup](https://www.haskell.org/ghcup/), GHC 9.6.3 and cabal 3.10.1.0: ```shell curl --proto '=https' --tlsv1.2 -sSf https://get-ghcup.haskell.org | sh diff --git a/docs/CONTRIBUTING.md b/docs/CONTRIBUTING.md index d6c11daf7f..bc013cd7eb 100644 --- a/docs/CONTRIBUTING.md +++ b/docs/CONTRIBUTING.md @@ -30,13 +30,13 @@ You will have to add `/opt/homebrew/opt/openssl@1.1/bin` to your PATH in order t **In simplex-chat repo** -- `stable` - stable release of the apps, can be used for updates to the previous stable release (GHC 9.6.4). +- `stable` - stable release of the apps, can be used for updates to the previous stable release (GHC 9.6.3). - `stable-android` - used to build stable Android core library with Nix (GHC 8.10.7) - only for Android armv7a. - `stable-ios` - used to build stable iOS core library with Nix (GHC 8.10.7) – this branch should be the same as `stable-android` except Nix configuration files. Deprecated. -- `master` - branch for beta version releases (GHC 9.6.4). +- `master` - branch for beta version releases (GHC 9.6.3). - `master-ghc8107` - branch for beta version releases (GHC 8.10.7). Deprecated. @@ -50,7 +50,7 @@ You will have to add `/opt/homebrew/opt/openssl@1.1/bin` to your PATH in order t **In simplexmq repo** -- `master` - uses GHC 9.6.4 its commit should be used in `master` branch of simplex-chat repo. +- `master` - uses GHC 9.6.3 its commit should be used in `master` branch of simplex-chat repo. - `master-ghc8107` - its commit should be used in `master-android` (and `master-ios`) branch of simplex-chat repo. Deprecated. @@ -77,28 +77,28 @@ You will have to add `/opt/homebrew/opt/openssl@1.1/bin` to your PATH in order t 7. Independently, `master` branch of simplexmq repo should be merged to `stable` branch on stable releases. -## Differences between GHC 8.10.7 and GHC 9.6.4 +## Differences between GHC 8.10.7 and GHC 9.6.3 1. The main difference is related to `DuplicateRecordFields` extension. -It is no longer possible in GHC 9.6.4 to specify type when using selectors, instead OverloadedRecordDot extension and syntax are used that need to be removed in GHC 8.10.7: +It is no longer possible in GHC 9.6.3 to specify type when using selectors, instead OverloadedRecordDot extension and syntax are used that need to be removed in GHC 8.10.7: ```haskell {-# LANGUAGE DuplicateRecordFields #-} --- use this in GHC 9.6.4 when needed +-- use this in GHC 9.6.3 when needed {-# LANGUAGE OverloadedRecordDot #-} --- GHC 9.6.4 syntax +-- GHC 9.6.3 syntax let x = record.field --- GHC 8.10.7 syntax absent in GHC 9.6.4 +-- GHC 8.10.7 syntax removed in GHC 9.6.3 let x = field (record :: Record) ``` It is still possible to specify type when using record update syntax, use this pragma to suppress compiler warning: ```haskell --- use this in GHC 9.6.4 when needed +-- use this in GHC 9.6.3 when needed {-# OPTIONS_GHC -fno-warn-ambiguous-fields #-} let r' = (record :: Record) {field = value} @@ -107,7 +107,7 @@ let r' = (record :: Record) {field = value} 2. Most monad functions now have to be imported from `Control.Monad`, and not from specific monad modules (e.g. `Control.Monad.Except`). ```haskell --- use this in GHC 9.6.4 when needed +-- use this in GHC 9.6.3 when needed import Control.Monad ``` diff --git a/flake.lock b/flake.lock index 7bd372b5c6..a11e01683e 100644 --- a/flake.lock +++ b/flake.lock @@ -175,11 +175,11 @@ "ghc99": { "flake": false, "locked": { - "lastModified": 1701580282, - "narHash": "sha256-drA01r3JrXnkKyzI+owMZGxX0JameMzjK0W5jJE/+V4=", + "lastModified": 1697054644, + "narHash": "sha256-kKarOuXUaAH3QWv7ASx+gGFMHaHKe0pK5Zu37ky2AL4=", "ref": "refs/heads/master", - "rev": "f5eb0f2982e9cf27515e892c4bdf634bcfb28459", - "revCount": 62197, + "rev": "f383a242c76f90bcca8a4d7ee001dcb49c172a9a", + "revCount": 62040, "submodules": true, "type": "git", "url": "https://gitlab.haskell.org/ghc/ghc" @@ -225,8 +225,6 @@ "hls-2.2": "hls-2.2", "hls-2.3": "hls-2.3", "hls-2.4": "hls-2.4", - "hls-2.5": "hls-2.5", - "hls-2.6": "hls-2.6", "hpc-coveralls": "hpc-coveralls", "hydra": "hydra", "iserv-proxy": "iserv-proxy", @@ -240,17 +238,16 @@ "nixpkgs-2205": "nixpkgs-2205", "nixpkgs-2211": "nixpkgs-2211", "nixpkgs-2305": "nixpkgs-2305", - "nixpkgs-2311": "nixpkgs-2311", "nixpkgs-unstable": "nixpkgs-unstable", "old-ghc-nix": "old-ghc-nix", "stackage": "stackage" }, "locked": { - "lastModified": 1705833500, - "narHash": "sha256-rUIr6JNbCedt1g4gVYVvE9t0oFU6FUspCA0DS5cA8Bg=", + "lastModified": 1701163700, + "narHash": "sha256-sOrewUS3LnzV09nGr7+3R6Q6zsgU4smJc61QsHq+4DE=", "owner": "input-output-hk", "repo": "haskell.nix", - "rev": "d0c35e75cbbc6858770af42ac32b0b85495fbd71", + "rev": "2808bfe3e62e9eb4ee8974cd623a00e1611f302b", "type": "github" }, "original": { @@ -331,50 +328,16 @@ "hls-2.4": { "flake": false, "locked": { - "lastModified": 1699862708, - "narHash": "sha256-YHXSkdz53zd0fYGIYOgLt6HrA0eaRJi9mXVqDgmvrjk=", + "lastModified": 1696939266, + "narHash": "sha256-VOMf5+kyOeOmfXTHlv4LNFJuDGa7G3pDnOxtzYR40IU=", "owner": "haskell", "repo": "haskell-language-server", - "rev": "54507ef7e85fa8e9d0eb9a669832a3287ffccd57", + "rev": "362fdd1293efb4b82410b676ab1273479f6d17ee", "type": "github" }, "original": { "owner": "haskell", - "ref": "2.4.0.1", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.5": { - "flake": false, - "locked": { - "lastModified": 1701080174, - "narHash": "sha256-fyiR9TaHGJIIR0UmcCb73Xv9TJq3ht2ioxQ2mT7kVdc=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "27f8c3d3892e38edaef5bea3870161815c4d014c", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.5.0.0", - "repo": "haskell-language-server", - "type": "github" - } - }, - "hls-2.6": { - "flake": false, - "locked": { - "lastModified": 1705325287, - "narHash": "sha256-+P87oLdlPyMw8Mgoul7HMWdEvWP/fNlo8jyNtwME8E8=", - "owner": "haskell", - "repo": "haskell-language-server", - "rev": "6e0b342fa0327e628610f2711f8c3e4eaaa08b1e", - "type": "github" - }, - "original": { - "owner": "haskell", - "ref": "2.6.0.0", + "ref": "2.4.0.0", "repo": "haskell-language-server", "type": "github" } @@ -589,11 +552,11 @@ }, "nixpkgs-2305": { "locked": { - "lastModified": 1701362232, - "narHash": "sha256-GVdzxL0lhEadqs3hfRLuj+L1OJFGiL/L7gCcelgBlsw=", + "lastModified": 1695416179, + "narHash": "sha256-610o1+pwbSu+QuF3GE0NU5xQdTHM3t9wyYhB9l94Cd8=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "d2332963662edffacfddfad59ff4f709dde80ffe", + "rev": "715d72e967ec1dd5ecc71290ee072bcaf5181ed6", "type": "github" }, "original": { @@ -603,22 +566,6 @@ "type": "github" } }, - "nixpkgs-2311": { - "locked": { - "lastModified": 1701386440, - "narHash": "sha256-xI0uQ9E7JbmEy/v8kR9ZQan6389rHug+zOtZeZFiDJk=", - "owner": "NixOS", - "repo": "nixpkgs", - "rev": "293822e55ec1872f715a66d0eda9e592dc14419f", - "type": "github" - }, - "original": { - "owner": "NixOS", - "ref": "nixpkgs-23.11-darwin", - "repo": "nixpkgs", - "type": "github" - } - }, "nixpkgs-lib": { "locked": { "dir": "lib", @@ -655,17 +602,17 @@ }, "nixpkgs-unstable": { "locked": { - "lastModified": 1694822471, - "narHash": "sha256-6fSDCj++lZVMZlyqOe9SIOL8tYSBz1bI8acwovRwoX8=", + "lastModified": 1695318763, + "narHash": "sha256-FHVPDRP2AfvsxAdc+AsgFJevMz5VBmnZglFUMlxBkcY=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", + "rev": "e12483116b3b51a185a33a272bf351e357ba9a99", "type": "github" }, "original": { "owner": "NixOS", + "ref": "nixpkgs-unstable", "repo": "nixpkgs", - "rev": "47585496bcb13fb72e4a90daeea2f434e2501998", "type": "github" } }, @@ -717,11 +664,11 @@ "stackage": { "flake": false, "locked": { - "lastModified": 1705709369, - "narHash": "sha256-HWgwM8v0g6ZBkRVCStsPaMUDf26WDOGV0q+AxyGlcBQ=", + "lastModified": 1699834215, + "narHash": "sha256-g/JKy0BCvJaxPuYDl3QVc4OY8cFEomgG+hW/eEV470M=", "owner": "input-output-hk", "repo": "stackage.nix", - "rev": "f7e9bff9f7582d06c4237d183dafaccc33cfa5d4", + "rev": "47aacd04abcce6bad57f43cbbbd133538380248e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 420f4c70df..91cf43d0fe 100644 --- a/flake.nix +++ b/flake.nix @@ -29,8 +29,8 @@ }; in # `appendOverlays` with a singleton is identical to `extend`. let pkgs = haskellNix.legacyPackages.${system}.appendOverlays [android26]; in - let drv' = { extra-modules, pkgs', compiler-nix-name, ... }: pkgs'.haskell-nix.project { - inherit compiler-nix-name; + let drv' = { extra-modules, pkgs', ... }: pkgs'.haskell-nix.project { + compiler-nix-name = "ghc963"; index-state = "2023-12-12T00:00:00Z"; # We need this, to specify we want the cabal project. # If the stack.yaml was dropped, this would not be necessary. @@ -51,7 +51,7 @@ })] ++ extra-modules; }; in # by defualt we don't need to pass extra-modules. - let drv = pkgs': drv' { extra-modules = []; inherit pkgs'; compiler-nix-name = "ghc964"; }; in + let drv = pkgs': drv' { extra-modules = []; inherit pkgs'; }; in # This will package up all *.a in $out into a pkg.zip that can # be downloaded from hydra. let withHydraLibPkg = pkg: pkg.overrideAttrs (old: { @@ -141,7 +141,6 @@ "${pkgs.pkgsCross.musl64.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.musl64).simplex-chat.components.exes.simplex-chat; # STATIC i686-linux "${pkgs.pkgsCross.musl32.hostPlatform.system}-static:exe:simplex-chat" = (drv' { - compiler-nix-name = "ghc810"; pkgs' = pkgs.pkgsCross.musl32; extra-modules = [{ # 32 bit patches @@ -155,7 +154,6 @@ }).simplex-chat.components.exes.simplex-chat; # WINDOWS x86_64-mingwW64 "${pkgs.pkgsCross.mingwW64.hostPlatform.system}:exe:simplex-chat" = (drv' { - compiler-nix-name = "ghc964"; pkgs' = pkgs.pkgsCross.mingwW64; extra-modules = [{ packages.direct-sqlcipher.flags.openssl = true; @@ -188,7 +186,6 @@ ''; }; "${pkgs.pkgsCross.mingwW64.hostPlatform.system}:lib:simplex-chat" = (drv' rec { - compiler-nix-name = "ghc964"; pkgs' = pkgs.pkgsCross.mingwW64; extra-modules = [{ packages.direct-sqlcipher.flags.openssl = true; @@ -265,7 +262,7 @@ # STATIC aarch64-linux "${pkgs.pkgsCross.aarch64-multiplatform-musl.hostPlatform.system}-static:exe:simplex-chat" = (drv pkgs.pkgsCross.aarch64-multiplatform-musl).simplex-chat.components.exes.simplex-chat; - "armv7a-android:lib:support" = (drv' { extra-modules = []; pkgs' = android32Pkgs; compiler-nix-name = "ghc8107"; } ).android-support.components.library.override (p: { + "armv7a-android:lib:support" = (drv android32Pkgs).android-support.components.library.override (p: { smallAddressSpace = true; # we won't want -dyamic (see aarch64-android:lib:simplex-chat) enableShared = false; @@ -328,7 +325,6 @@ ''; }); "armv7a-android:lib:simplex-chat" = (drv' { - compiler-nix-name = "ghc8107"; pkgs' = android32Pkgs; extra-modules = [{ packages.text.flags.simdutf = false; @@ -344,7 +340,7 @@ ]; # 32 bit patches packages.basement.patches = [ - # ./scripts/nix/basement-pr-573.patch + ./scripts/nix/basement-pr-573.patch ]; packages.memory.patches = [ ./scripts/nix/memory-pr-99.patch @@ -367,7 +363,6 @@ "-threaded" # "-debug" "-optl-lffi" - "-optl-lHSrts_thr" ] # This is fairly idiotic. LLD will strip out foreign exported # symbols (a GHC bug? Codegen bug?). So we need to pass `-u ` @@ -392,8 +387,6 @@ "chat_valid_name" "chat_json_length" "chat_write_file" - # We also need to keep the rts init method around. - "hs_init_with_rtsopts" ]; postInstall = '' set -x @@ -440,7 +433,6 @@ ''; }); "aarch64-android:lib:simplex-chat" = (drv' { - compiler-nix-name = "ghc964"; pkgs' = androidPkgs; extra-modules = [{ packages.text.flags.simdutf = false; @@ -549,7 +541,6 @@ "aarch64-darwin" = { # aarch64-darwin iOS build (to be patched with mac2ios) "aarch64-darwin-ios:lib:simplex-chat" = (drv' { - compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.simplex-chat.flags.swift = true; @@ -566,7 +557,6 @@ ); # aarch64-darwin build with tagged JSON format (for Mac & Flutter) "aarch64-darwin:lib:simplex-chat" = (drv' { - compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.direct-sqlcipher.flags.commoncrypto = true; @@ -582,7 +572,6 @@ "x86_64-darwin" = { # x86_64-darwin iOS simulator build (to be patched with mac2ios) "x86_64-darwin-ios:lib:simplex-chat" = (drv' { - compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.simplex-chat.flags.swift = true; @@ -598,7 +587,6 @@ ); # x86_64-darwin build with tagged JSON format (for Mac & Flutter iOS simulator) "x86_64-darwin:lib:simplex-chat" = (drv' { - compiler-nix-name = "ghc964"; pkgs' = pkgs; extra-modules = [{ packages.direct-sqlcipher.flags.commoncrypto = true; diff --git a/scripts/desktop/build-lib-linux.sh b/scripts/desktop/build-lib-linux.sh index 528e7b9f91..c27b672e40 100755 --- a/scripts/desktop/build-lib-linux.sh +++ b/scripts/desktop/build-lib-linux.sh @@ -8,7 +8,7 @@ function readlink() { OS=linux ARCH=${1:-`uname -a | rev | cut -d' ' -f2 | rev`} -GHC_VERSION=9.6.4 +GHC_VERSION=9.6.3 if [ "$ARCH" == "aarch64" ]; then COMPOSE_ARCH=arm64 diff --git a/scripts/desktop/build-lib-mac.sh b/scripts/desktop/build-lib-mac.sh index 12067a9b53..2b0fd5376f 100755 --- a/scripts/desktop/build-lib-mac.sh +++ b/scripts/desktop/build-lib-mac.sh @@ -5,7 +5,7 @@ set -e OS=mac ARCH="${1:-`uname -a | rev | cut -d' ' -f1 | rev`}" COMPOSE_ARCH=$ARCH -GHC_VERSION=9.6.4 +GHC_VERSION=9.6.3 if [ "$ARCH" == "arm64" ]; then ARCH=aarch64 From 412f75219acff5fd8b4e116fd47ccca385735db7 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sun, 21 Apr 2024 01:19:37 +0700 Subject: [PATCH 053/147] android: select audio source (#4040) * android, desktop: select audio source * improvements * fix possible crash * changes --- .../views/call/CallAudioDeviceManager.kt | 235 ++++++++++++++++++ .../common/views/call/CallView.android.kt | 129 +++++----- .../helpers/ExposedDropDownSettingRow.kt | 55 ++++ .../commonMain/resources/MR/base/strings.xml | 3 + .../resources/MR/images/ic_bluetooth.svg | 1 + .../MR/images/ic_brand_awareness_filled.svg | 1 + .../resources/MR/images/ic_headphones.svg | 1 + .../MR/images/ic_phone_bluetooth_speaker.svg | 1 + .../commonMain/resources/MR/images/ic_usb.svg | 1 + 9 files changed, 354 insertions(+), 73 deletions(-) create mode 100644 apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_bluetooth.svg create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_brand_awareness_filled.svg create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_headphones.svg create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_phone_bluetooth_speaker.svg create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_usb.svg diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt new file mode 100644 index 0000000000..9c6f76461d --- /dev/null +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt @@ -0,0 +1,235 @@ +package chat.simplex.common.views.call + +import android.content.Context +import android.media.* +import android.media.AudioManager.OnCommunicationDeviceChangedListener +import android.os.Build +import androidx.annotation.RequiresApi +import androidx.compose.runtime.* +import chat.simplex.common.platform.* +import dev.icerock.moko.resources.ImageResource +import chat.simplex.res.MR +import dev.icerock.moko.resources.StringResource +import java.util.concurrent.Executors + +interface CallAudioDeviceManagerInterface { + val devices: State> + val currentDevice: MutableState + fun start() + fun stop() + // AudioDeviceInfo.AudioDeviceType + fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) + // AudioDeviceInfo.AudioDeviceType + fun selectDevice(id: Int) + + companion object { + fun new(): CallAudioDeviceManagerInterface = + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + PostSCallAudioDeviceManager() + } else { + PreSCallAudioDeviceManager() + } + } +} + +@RequiresApi(Build.VERSION_CODES.S) +class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { + private val am = androidAppContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager + override val devices: MutableState> = mutableStateOf(emptyList()) + override val currentDevice: MutableState = mutableStateOf(null) + + private val audioCallback = object: AudioDeviceCallback() { + override fun onAudioDevicesAdded(addedDevices: Array) { + Log.d(TAG, "Added audio devices: ${addedDevices.map { it.type }}") + super.onAudioDevicesAdded(addedDevices) + val oldDevices = devices.value + devices.value = am.availableCommunicationDevices + Log.d(TAG, "Added audio devices2: ${devices.value.map { it.type }}") + + if (devices.value.size - oldDevices.size > 0) { + selectLastExternalDeviceOrDefault(chatModel.activeCall.value?.supportsVideo() == true, false) + } + } + + override fun onAudioDevicesRemoved(removedDevices: Array) { + Log.d(TAG, "Removed audio devices: ${removedDevices.map { it.type }}") + super.onAudioDevicesRemoved(removedDevices) + devices.value = am.availableCommunicationDevices + } + } + + private val listener: OnCommunicationDeviceChangedListener = OnCommunicationDeviceChangedListener { device -> + devices.value = am.availableCommunicationDevices + currentDevice.value = device + } + + override fun start() { + am.registerAudioDeviceCallback(audioCallback, null) + am.addOnCommunicationDeviceChangedListener(Executors.newSingleThreadExecutor(), listener) + } + + override fun stop() { + am.unregisterAudioDeviceCallback(audioCallback) + am.removeOnCommunicationDeviceChangedListener(listener) + } + + override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { + Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") + am.mode = AudioManager.MODE_IN_COMMUNICATION + val commDevice = am.communicationDevice + if (keepAnyNonEarpiece && commDevice != null && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) { + // some external device or speaker selected already, no need to change it + return + } + + val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + // External device already selected + if (externalDevice != null && externalDevice.type == am.communicationDevice?.type) { + return + } + if (externalDevice != null) { + am.setCommunicationDevice(externalDevice) + } else if (am.communicationDevice?.type != preferredSecondaryDevice) { + am.availableCommunicationDevices.firstOrNull { it.type == preferredSecondaryDevice }?.let { + am.setCommunicationDevice(it) + } + } + } + + override fun selectDevice(id: Int) { + am.mode = AudioManager.MODE_IN_COMMUNICATION + val device = devices.value.lastOrNull { it.id == id } + if (device != null && am.communicationDevice?.id != id ) { + am.setCommunicationDevice(device) + } + } +} + +class PreSCallAudioDeviceManager: CallAudioDeviceManagerInterface { + private val am = androidAppContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager + override val devices: MutableState> = mutableStateOf(emptyList()) + override val currentDevice: MutableState = mutableStateOf(null) + + private val audioCallback = object: AudioDeviceCallback() { + override fun onAudioDevicesAdded(addedDevices: Array) { + Log.d(TAG, "Added audio devices: ${addedDevices.map { it.type }}") + super.onAudioDevicesAdded(addedDevices) + val wasSize = devices.value.size + devices.value += addedDevices.filter { it.hasSupportedType() } + val addedCount = devices.value.size - wasSize + //if (addedCount > 0 && chatModel.activeCall.value?.callState == CallState.Connected) { + // Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12 + selectLastExternalDeviceOrDefault(chatModel.activeCall.value?.supportsVideo() == true, false) + //} + } + + override fun onAudioDevicesRemoved(removedDevices: Array) { + Log.d(TAG, "Removed audio devices: ${removedDevices.map { it.type }}") + super.onAudioDevicesRemoved(removedDevices) + val wasSize = devices.value.size + devices.value = devices.value.filterNot { removedDevices.any { rm -> rm.id == it.id } } + //val removedCount = wasSize - devices.value.size + //if (devices.value.count { it.hasSupportedType() } == 2 && chatModel.activeCall.value?.callState == CallState.Connected) { + // Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12 + selectLastExternalDeviceOrDefault(chatModel.activeCall.value?.supportsVideo() == true, true) + //} + } + } + + override fun start() { + am.registerAudioDeviceCallback(audioCallback, null) + } + + override fun stop() { + am.unregisterAudioDeviceCallback(audioCallback) + } + + override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { + Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") + val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val externalDevice = devices.value.lastOrNull { it.hasSupportedType() && it.isSource && it.isSink && it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + if (externalDevice != null) { + selectDevice(externalDevice.id) + } else { + am.stopBluetoothSco() + am.isWiredHeadsetOn = false + am.isSpeakerphoneOn = preferredSecondaryDevice == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER + am.isBluetoothScoOn = false + val newCurrentDevice = devices.value.firstOrNull { it.type == preferredSecondaryDevice } + adaptToCurrentlyActiveDevice(newCurrentDevice) + } + } + + override fun selectDevice(id: Int) { + val device = devices.value.lastOrNull { it.id == id } + val isExternalDevice = device != null && device.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && device.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + if (isExternalDevice) { + am.isSpeakerphoneOn = false + if (device?.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES) { + am.isWiredHeadsetOn = true + am.stopBluetoothSco() + am.isBluetoothScoOn = false + } else { + am.isWiredHeadsetOn = false + am.startBluetoothSco() + am.isBluetoothScoOn = true + } + adaptToCurrentlyActiveDevice(device) + } else { + am.stopBluetoothSco() + am.isWiredHeadsetOn = false + am.isSpeakerphoneOn = device?.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER + am.isBluetoothScoOn = false + adaptToCurrentlyActiveDevice(device) + } + } + + private fun adaptToCurrentlyActiveDevice(newCurrentDevice: AudioDeviceInfo?) { + currentDevice.value = newCurrentDevice + } + + private fun AudioDeviceInfo.hasSupportedType(): Boolean = when (type) { + AudioDeviceInfo.TYPE_BUILTIN_EARPIECE -> true + AudioDeviceInfo.TYPE_BUILTIN_SPEAKER -> true + + AudioDeviceInfo.TYPE_BLUETOOTH_SCO -> true + AudioDeviceInfo.TYPE_BLE_HEADSET -> true + AudioDeviceInfo.TYPE_BLE_SPEAKER -> true + AudioDeviceInfo.TYPE_WIRED_HEADPHONES -> true + else -> false + } +} + +val AudioDeviceInfo.icon: ImageResource + get() = when (this.type) { + AudioDeviceInfo.TYPE_BUILTIN_EARPIECE -> MR.images.ic_volume_down + AudioDeviceInfo.TYPE_BUILTIN_SPEAKER -> MR.images.ic_volume_up + + AudioDeviceInfo.TYPE_BLUETOOTH_SCO, + AudioDeviceInfo.TYPE_BLUETOOTH_A2DP, + AudioDeviceInfo.TYPE_BLE_HEADSET, + AudioDeviceInfo.TYPE_BLE_SPEAKER -> MR.images.ic_bluetooth + + AudioDeviceInfo.TYPE_WIRED_HEADPHONES -> MR.images.ic_headphones + + AudioDeviceInfo.TYPE_USB_HEADSET, AudioDeviceInfo.TYPE_USB_DEVICE -> MR.images.ic_usb + else -> MR.images.ic_brand_awareness_filled + } + +val AudioDeviceInfo.name: StringResource? + get() = when (this.type) { + AudioDeviceInfo.TYPE_BUILTIN_EARPIECE -> MR.strings.audio_device_earpiece + AudioDeviceInfo.TYPE_BUILTIN_SPEAKER -> MR.strings.audio_device_speaker + + AudioDeviceInfo.TYPE_BLUETOOTH_SCO, + AudioDeviceInfo.TYPE_BLUETOOTH_A2DP, + AudioDeviceInfo.TYPE_BLE_HEADSET, + AudioDeviceInfo.TYPE_BLE_SPEAKER -> null // Use product name instead + + AudioDeviceInfo.TYPE_WIRED_HEADPHONES -> MR.strings.audio_device_wired_headphones + + AudioDeviceInfo.TYPE_USB_HEADSET, AudioDeviceInfo.TYPE_USB_DEVICE -> null // Use product name instead + else -> null // Use product name instead + } + diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index af261e2a98..a93f79f7bc 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -26,8 +26,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext -import dev.icerock.moko.resources.compose.painterResource -import dev.icerock.moko.resources.compose.stringResource +import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow @@ -39,14 +38,14 @@ import androidx.webkit.WebViewAssetLoader import androidx.webkit.WebViewClientCompat import chat.simplex.common.helpers.showAllowPermissionInSettingsAlert import chat.simplex.common.model.* -import chat.simplex.common.ui.theme.* -import chat.simplex.common.model.ChatModel -import chat.simplex.common.model.Contact import chat.simplex.common.platform.* +import chat.simplex.common.ui.theme.* import chat.simplex.common.views.helpers.* import chat.simplex.res.MR import com.google.accompanist.permissions.* import dev.icerock.moko.resources.StringResource +import dev.icerock.moko.resources.compose.painterResource +import dev.icerock.moko.resources.compose.stringResource import kotlinx.coroutines.* import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.flow.filterNotNull @@ -71,7 +70,6 @@ fun activeCallDestroyWebView() = withApi { actual fun ActiveCallView() { val call = remember { chatModel.activeCall }.value val scope = rememberCoroutineScope() - val audioViaBluetooth = rememberSaveable { mutableStateOf(false) } val proximityLock = remember { val pm = (androidAppContext.getSystemService(Context.POWER_SERVICE) as PowerManager) if (pm.isWakeLockLevelSupported(PROXIMITY_SCREEN_OFF_WAKE_LOCK)) { @@ -87,41 +85,16 @@ actual fun ActiveCallView() { wasConnected.value = true } } + val callAudioDeviceManager = remember { CallAudioDeviceManagerInterface.new() } DisposableEffect(Unit) { - val am = androidAppContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager - var btDeviceCount = 0 - val audioCallback = object: AudioDeviceCallback() { - override fun onAudioDevicesAdded(addedDevices: Array) { - Log.d(TAG, "Added audio devices: ${addedDevices.map { it.type }}") - super.onAudioDevicesAdded(addedDevices) - val addedCount = addedDevices.count { it.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO } - btDeviceCount += addedCount - audioViaBluetooth.value = btDeviceCount > 0 - if (addedCount > 0 && chatModel.activeCall.value?.callState == CallState.Connected) { - // Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12 - setCallSound(chatModel.activeCall.value?.soundSpeaker ?: return, audioViaBluetooth) - } - } - override fun onAudioDevicesRemoved(removedDevices: Array) { - Log.d(TAG, "Removed audio devices: ${removedDevices.map { it.type }}") - super.onAudioDevicesRemoved(removedDevices) - val removedCount = removedDevices.count { it.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO } - btDeviceCount -= removedCount - audioViaBluetooth.value = btDeviceCount > 0 - if (btDeviceCount == 0 && chatModel.activeCall.value?.callState == CallState.Connected) { - // Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12 - setCallSound(chatModel.activeCall.value?.soundSpeaker ?: return, audioViaBluetooth) - } - } - } - am.registerAudioDeviceCallback(audioCallback, null) + callAudioDeviceManager.start() onDispose { CallSoundsPlayer.stop() if (wasConnected.value) { CallSoundsPlayer.vibrate() } dropAudioManagerOverrides() - am.unregisterAudioDeviceCallback(audioCallback) + callAudioDeviceManager.stop() if (proximityLock?.isHeld == true) { proximityLock.release() } @@ -147,7 +120,7 @@ actual fun ActiveCallView() { val callType = CallType(call.localMedia, r.capabilities) chatModel.controller.apiSendCallInvitation(callRh, call.contact, callType) updateActiveCall(call) { it.copy(callState = CallState.InvitationSent, localCapabilities = r.capabilities) } - setCallSound(call.soundSpeaker, audioViaBluetooth) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) CallSoundsPlayer.startConnectingCallSound(scope) activeCallWaitDeliveryReceipt(scope) } @@ -168,7 +141,7 @@ actual fun ActiveCallView() { val callStatus = json.decodeFromString("\"${r.state.connectionState}\"") if (callStatus == WebRTCCallStatus.Connected) { updateActiveCall(call) { it.copy(callState = CallState.Connected, connectedAt = Clock.System.now()) } - setCallSound(call.soundSpeaker, audioViaBluetooth) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) } withBGApi { chatModel.controller.apiCallStatus(callRh, call.contact, callStatus) } } catch (e: Throwable) { @@ -177,7 +150,7 @@ actual fun ActiveCallView() { is WCallResponse.Connected -> { updateActiveCall(call) { it.copy(callState = CallState.Connected, connectionInfo = r.connectionInfo) } scope.launch { - setCallSound(call.soundSpeaker, audioViaBluetooth) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) } } is WCallResponse.End -> { @@ -223,7 +196,7 @@ actual fun ActiveCallView() { else -> false } if (call != null && showOverlay) { - ActiveCallOverlay(call, chatModel, audioViaBluetooth) + ActiveCallOverlay(call, chatModel, callAudioDeviceManager) } } val context = LocalContext.current @@ -249,19 +222,21 @@ actual fun ActiveCallView() { } @Composable -private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, audioViaBluetooth: MutableState) { +private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, callAudioDeviceManager: CallAudioDeviceManagerInterface) { ActiveCallOverlayLayout( call = call, - speakerCanBeEnabled = !audioViaBluetooth.value, + devices = remember { callAudioDeviceManager.devices }.value, + currentDevice = remember { callAudioDeviceManager.currentDevice }, dismiss = { withBGApi { chatModel.callManager.endCall(call) } }, toggleAudio = { chatModel.callCommand.add(WCallCommand.Media(CallMediaType.Audio, enable = !call.audioEnabled)) }, + selectDevice = { callAudioDeviceManager.selectDevice(it.id) }, toggleVideo = { chatModel.callCommand.add(WCallCommand.Media(CallMediaType.Video, enable = !call.videoEnabled)) }, toggleSound = { var call = chatModel.activeCall.value if (call != null) { call = call.copy(soundSpeaker = !call.soundSpeaker) chatModel.activeCall.value = call - setCallSound(call.soundSpeaker, audioViaBluetooth) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) } }, flipCamera = { chatModel.callCommand.add(WCallCommand.Camera(call.localCamera.flipped)) } @@ -272,42 +247,18 @@ private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, audioViaBluetoot fun ActiveCallOverlayDisabled(call: Call) { ActiveCallOverlayLayout( call = call, - speakerCanBeEnabled = false, + devices = emptyList(), + currentDevice = remember { mutableStateOf(null) }, enabled = false, dismiss = {}, toggleAudio = {}, + selectDevice = {}, toggleVideo = {}, toggleSound = {}, flipCamera = {} ) } -private fun setCallSound(speaker: Boolean, audioViaBluetooth: MutableState) { - val am = androidAppContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager - Log.d(TAG, "setCallSound: set audio mode, speaker enabled: $speaker") - am.mode = AudioManager.MODE_IN_COMMUNICATION - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - val btDevice = am.availableCommunicationDevices.lastOrNull { it.type == AudioDeviceInfo.TYPE_BLUETOOTH_SCO } - val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE - if (btDevice != null) { - am.setCommunicationDevice(btDevice) - } else if (am.communicationDevice?.type != preferredSecondaryDevice) { - am.availableCommunicationDevices.firstOrNull { it.type == preferredSecondaryDevice }?.let { - am.setCommunicationDevice(it) - } - } - } else { - if (audioViaBluetooth.value) { - am.isSpeakerphoneOn = false - am.startBluetoothSco() - } else { - am.stopBluetoothSco() - am.isSpeakerphoneOn = speaker - } - am.isBluetoothScoOn = am.isBluetoothScoAvailableOffCall && audioViaBluetooth.value - } -} - private fun dropAudioManagerOverrides() { val am = androidAppContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager am.mode = AudioManager.MODE_NORMAL @@ -323,10 +274,12 @@ private fun dropAudioManagerOverrides() { @Composable private fun ActiveCallOverlayLayout( call: Call, - speakerCanBeEnabled: Boolean, + devices: List, + currentDevice: State, enabled: Boolean = true, dismiss: () -> Unit, toggleAudio: () -> Unit, + selectDevice: (AudioDeviceInfo) -> Unit, toggleVideo: () -> Unit, toggleSound: () -> Unit, flipCamera: () -> Unit @@ -339,6 +292,32 @@ private fun ActiveCallOverlayLayout( } } Column(Modifier.padding(horizontal = DEFAULT_PADDING)) { + @Composable + fun SelectSoundDevice() { + if (devices.size == 2 && + devices.all { it.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE || it.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER } || + currentDevice.value == null || + devices.none { it.id == currentDevice.value?.id } + ) { + ToggleSoundButton(call, enabled, toggleSound) + } else { + ExposedDropDownSettingWithIcon( + devices.map { Triple(it, it.icon, if (it.name != null) generalGetString(it.name!!) else it.productName.toString()) }, + currentDevice, + fontSize = 18.sp, + iconSize = 40.dp, + listIconSize = 30.dp, + iconColor = Color(0xFFFFFFD8), + minWidth = 300.dp, + onSelected = { + if (it != null) { + selectDevice(it) + } + } + ) + } + } + when (media) { CallMediaType.Video -> { VideoCallInfoView(call) @@ -347,7 +326,7 @@ private fun ActiveCallOverlayLayout( } Row(Modifier.fillMaxWidth().padding(horizontal = 6.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically) { ToggleAudioButton(call, enabled, toggleAudio) - Spacer(Modifier.size(40.dp)) + SelectSoundDevice() IconButton(onClick = dismiss, enabled = enabled) { Icon(painterResource(MR.images.ic_call_end_filled), stringResource(MR.strings.icon_descr_hang_up), tint = if (enabled) Color.Red else MaterialTheme.colors.secondary, modifier = Modifier.size(64.dp)) } @@ -385,7 +364,7 @@ private fun ActiveCallOverlayLayout( } Box(Modifier.fillMaxWidth(), contentAlignment = Alignment.CenterEnd) { Box(Modifier.padding(end = 32.dp)) { - ToggleSoundButton(call, speakerCanBeEnabled && enabled, toggleSound) + SelectSoundDevice() } } } @@ -780,9 +759,11 @@ fun PreviewActiveCallOverlayVideo() { RTCIceCandidate(RTCIceCandidateType.Host, "tcp") ) ), - speakerCanBeEnabled = true, + devices = emptyList(), + currentDevice = remember { mutableStateOf(null) }, dismiss = {}, toggleAudio = {}, + selectDevice = {}, toggleVideo = {}, toggleSound = {}, flipCamera = {} @@ -807,9 +788,11 @@ fun PreviewActiveCallOverlayAudio() { RTCIceCandidate(RTCIceCandidateType.Host, "udp") ) ), - speakerCanBeEnabled = true, + devices = emptyList(), + currentDevice = remember { mutableStateOf(null) }, dismiss = {}, toggleAudio = {}, + selectDevice = {}, toggleVideo = {}, toggleSound = {}, flipCamera = {} diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ExposedDropDownSettingRow.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ExposedDropDownSettingRow.kt index 043aa5ec84..7e57bda928 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ExposedDropDownSettingRow.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ExposedDropDownSettingRow.kt @@ -14,6 +14,7 @@ import androidx.compose.ui.unit.* import chat.simplex.res.MR import chat.simplex.common.ui.theme.* import chat.simplex.common.views.usersettings.SettingsActionItemWithContent +import dev.icerock.moko.resources.ImageResource @Composable fun ExposedDropDownSetting( @@ -79,6 +80,60 @@ fun ExposedDropDownSetting( } } +@Composable +fun ExposedDropDownSettingWithIcon( + values: List>, + selection: State, + fontSize: TextUnit = 16.sp, + iconSize: Dp = 40.dp, + listIconSize: Dp = 30.dp, + iconColor: Color = MenuTextColor, + enabled: State = mutableStateOf(true), + minWidth: Dp = 200.dp, + onSelected: (T) -> Unit +) { + val expanded = remember { mutableStateOf(false) } + ExposedDropdownMenuBox( + expanded = expanded.value, + onExpandedChange = { + expanded.value = !expanded.value && enabled.value + } + ) { + Row( + Modifier.padding(start = 10.dp), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.End + ) { + val choice = values.first { it.first == selection.value } + Icon(painterResource(choice.second), choice.third, Modifier.size(iconSize), tint = iconColor) + } + DefaultExposedDropdownMenu( + modifier = Modifier.widthIn(min = minWidth), + expanded = expanded, + ) { + values.forEach { selectionOption -> + DropdownMenuItem( + onClick = { + onSelected(selectionOption.first) + expanded.value = false + }, + contentPadding = PaddingValues(horizontal = DEFAULT_PADDING * 1.5f) + ) { + Icon(painterResource(selectionOption.second), selectionOption.third, Modifier.size(listIconSize)) + Spacer(Modifier.width(15.dp)) + Text( + selectionOption.third, + maxLines = 1, + overflow = TextOverflow.Ellipsis, + color = MenuTextColor, + fontSize = fontSize, + ) + } + } + } + } +} + @Composable fun ExposedDropDownSettingRow( title: String, 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 7c7cb2c384..7d09492010 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -836,6 +836,9 @@ Grant in settings Find this permission in Android settings and grant it manually. Open settings + Earpiece + Speaker + Headphones The next generation of private messaging diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_bluetooth.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_bluetooth.svg new file mode 100644 index 0000000000..53bc5becaa --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_bluetooth.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_brand_awareness_filled.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_brand_awareness_filled.svg new file mode 100644 index 0000000000..fef2b1d2ce --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_brand_awareness_filled.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_headphones.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_headphones.svg new file mode 100644 index 0000000000..2bda1e9d74 --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_headphones.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_phone_bluetooth_speaker.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_phone_bluetooth_speaker.svg new file mode 100644 index 0000000000..513bb38c40 --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_phone_bluetooth_speaker.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_usb.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_usb.svg new file mode 100644 index 0000000000..068bfc1a82 --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_usb.svg @@ -0,0 +1 @@ + \ No newline at end of file From 02f980e968e445bda4cdb41af22eed6540e1f112 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sat, 20 Apr 2024 19:35:11 +0100 Subject: [PATCH 054/147] core: update simplexmq (better newtork congestion handling, larger connection timeouts) (#4055) * core: update simplexmq (better newtork congestion handling, larger connection timeouts) * ui: update default TCP connect timeout, add receiving concurrency * update simplexmq --- .../AdvancedNetworkSettings.swift | 3 +- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++---------- apps/ios/SimpleXChat/APITypes.swift | 7 +++- apps/ios/SimpleXChat/AppGroup.swift | 5 +++ .../chat/simplex/common/model/SimpleXAPI.kt | 12 +++++- .../usersettings/AdvancedNetworkSettings.kt | 14 ++++++- .../commonMain/resources/MR/base/strings.xml | 1 + cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- 9 files changed, 58 insertions(+), 28 deletions(-) diff --git a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift index 9f03b95321..a6ad211939 100644 --- a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift +++ b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift @@ -51,9 +51,10 @@ struct AdvancedNetworkSettings: View { } .disabled(currentNetCfg == NetCfg.proxyDefaults) - timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 45_000000], label: secondsLabel) + timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [5_000000, 7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 40_000000], label: secondsLabel) timeoutSettingPicker("Protocol timeout", selection: $netCfg.tcpTimeout, values: [5_000000, 7_000000, 10_000000, 15_000000, 20_000000, 30_000000], label: secondsLabel) timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [2_500, 5_000, 10_000, 15_000, 20_000, 30_000], label: secondsLabel) + intSettingPicker("Receiving concurrency", selection: $netCfg.rcvConcurrency, values: [1, 2, 4, 8, 12, 16, 24], label: "") timeoutSettingPicker("PING interval", selection: $netCfg.smpPingInterval, values: [120_000000, 300_000000, 600_000000, 1200_000000, 2400_000000, 3600_000000], label: secondsLabel) intSettingPicker("PING count", selection: $netCfg.smpPingCount, values: [1, 2, 3, 5, 8], label: "") Toggle("Enable TCP keep-alive", isOn: $enableKeepAlive) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index f3841f43cf..d025ec6f3a 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,6 +29,11 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; + 5C22177A2BD40D1800A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217752BD40D1800A8B0E7 /* libgmp.a */; }; + 5C22177B2BD40D1800A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217762BD40D1800A8B0E7 /* libgmpxx.a */; }; + 5C22177C2BD40D1800A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217772BD40D1800A8B0E7 /* libffi.a */; }; + 5C22177D2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217782BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a */; }; + 5C22177E2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217792BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -110,11 +115,6 @@ 5CC1C99527A6CF7F000D9FF6 /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */; }; 5CC2C0FC2809BF11000C35E3 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FA2809BF11000C35E3 /* Localizable.strings */; }; 5CC2C0FF2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5CC2C0FD2809BF11000C35E3 /* SimpleX--iOS--InfoPlist.strings */; }; - 5CC83D1A2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */; }; - 5CC83D1B2BCC504B00A0C558 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D162BCC504B00A0C558 /* libgmpxx.a */; }; - 5CC83D1C2BCC504B00A0C558 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D172BCC504B00A0C558 /* libgmp.a */; }; - 5CC83D1D2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */; }; - 5CC83D1E2BCC504B00A0C558 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CC83D192BCC504B00A0C558 /* libffi.a */; }; 5CC868F329EB540C0017BBFD /* CIRcvDecryptionError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */; }; 5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */; }; 5CD67B8F2B0E858A00C510B1 /* hs_init.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD67B8D2B0E858A00C510B1 /* hs_init.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -279,6 +279,11 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; + 5C2217752BD40D1800A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C2217762BD40D1800A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C2217772BD40D1800A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C2217782BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a"; sourceTree = ""; }; + 5C2217792BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a"; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -403,11 +408,6 @@ 5CC1C99427A6CF7F000D9FF6 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareSheet.swift; sourceTree = ""; }; 5CC2C0FB2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = ru.lproj/Localizable.strings; sourceTree = ""; }; 5CC2C0FE2809BF11000C35E3 /* ru */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = ru; path = "ru.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; - 5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a"; sourceTree = ""; }; - 5CC83D162BCC504B00A0C558 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5CC83D172BCC504B00A0C558 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a"; sourceTree = ""; }; - 5CC83D192BCC504B00A0C558 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5CC868F229EB540C0017BBFD /* CIRcvDecryptionError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIRcvDecryptionError.swift; sourceTree = ""; }; 5CCB939B297EFCB100399E78 /* NavStackCompat.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NavStackCompat.swift; sourceTree = ""; }; 5CD67B8D2B0E858A00C510B1 /* hs_init.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = hs_init.h; sourceTree = ""; }; @@ -525,13 +525,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5CC83D1D2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a in Frameworks */, - 5CC83D1B2BCC504B00A0C558 /* libgmpxx.a in Frameworks */, - 5CC83D1C2BCC504B00A0C558 /* libgmp.a in Frameworks */, - 5CC83D1A2BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a in Frameworks */, - 5CC83D1E2BCC504B00A0C558 /* libffi.a in Frameworks */, + 5C22177B2BD40D1800A8B0E7 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, + 5C22177D2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a in Frameworks */, + 5C22177A2BD40D1800A8B0E7 /* libgmp.a in Frameworks */, + 5C22177C2BD40D1800A8B0E7 /* libffi.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, + 5C22177E2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5CC83D192BCC504B00A0C558 /* libffi.a */, - 5CC83D172BCC504B00A0C558 /* libgmp.a */, - 5CC83D162BCC504B00A0C558 /* libgmpxx.a */, - 5CC83D182BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv-ghc9.6.4.a */, - 5CC83D152BCC504B00A0C558 /* libHSsimplex-chat-5.7.0.0-AhbVfRKDsEZ5w5ND1HSTLv.a */, + 5C2217772BD40D1800A8B0E7 /* libffi.a */, + 5C2217752BD40D1800A8B0E7 /* libgmp.a */, + 5C2217762BD40D1800A8B0E7 /* libgmpxx.a */, + 5C2217782BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a */, + 5C2217792BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a */, ); path = Libraries; sourceTree = ""; diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index f33bdfbdd8..541799a46c 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -1257,6 +1257,7 @@ public struct NetCfg: Codable, Equatable { public var tcpConnectTimeout: Int // microseconds public var tcpTimeout: Int // microseconds public var tcpTimeoutPerKb: Int // microseconds + public var rcvConcurrency: Int // pool size public var tcpKeepAlive: KeepAliveOpts? public var smpPingInterval: Int // microseconds public var smpPingCount: Int // times @@ -1265,9 +1266,10 @@ public struct NetCfg: Codable, Equatable { public static let defaults: NetCfg = NetCfg( socksProxy: nil, sessionMode: TransportSessionMode.user, - tcpConnectTimeout: 20_000_000, + tcpConnectTimeout: 10_000_000, tcpTimeout: 15_000_000, tcpTimeoutPerKb: 10_000, + rcvConcurrency: 12, tcpKeepAlive: KeepAliveOpts.defaults, smpPingInterval: 1200_000_000, smpPingCount: 3, @@ -1277,9 +1279,10 @@ public struct NetCfg: Codable, Equatable { public static let proxyDefaults: NetCfg = NetCfg( socksProxy: nil, sessionMode: TransportSessionMode.user, - tcpConnectTimeout: 30_000_000, + tcpConnectTimeout: 20_000_000, tcpTimeout: 20_000_000, tcpTimeoutPerKb: 15_000, + rcvConcurrency: 8, tcpKeepAlive: KeepAliveOpts.defaults, smpPingInterval: 1200_000_000, smpPingCount: 3, diff --git a/apps/ios/SimpleXChat/AppGroup.swift b/apps/ios/SimpleXChat/AppGroup.swift index df4de134c2..cb07ba43ce 100644 --- a/apps/ios/SimpleXChat/AppGroup.swift +++ b/apps/ios/SimpleXChat/AppGroup.swift @@ -29,6 +29,7 @@ let GROUP_DEFAULT_NETWORK_SESSION_MODE = "networkSessionMode" let GROUP_DEFAULT_NETWORK_TCP_CONNECT_TIMEOUT = "networkTCPConnectTimeout" let GROUP_DEFAULT_NETWORK_TCP_TIMEOUT = "networkTCPTimeout" let GROUP_DEFAULT_NETWORK_TCP_TIMEOUT_PER_KB = "networkTCPTimeoutPerKb" +let GROUP_DEFAULT_NETWORK_RCV_CONCURRENCY = "networkRcvConcurrency" let GROUP_DEFAULT_NETWORK_SMP_PING_INTERVAL = "networkSMPPingInterval" let GROUP_DEFAULT_NETWORK_SMP_PING_COUNT = "networkSMPPingCount" let GROUP_DEFAULT_NETWORK_ENABLE_KEEP_ALIVE = "networkEnableKeepAlive" @@ -55,6 +56,7 @@ public func registerGroupDefaults() { GROUP_DEFAULT_NETWORK_TCP_CONNECT_TIMEOUT: NetCfg.defaults.tcpConnectTimeout, GROUP_DEFAULT_NETWORK_TCP_TIMEOUT: NetCfg.defaults.tcpTimeout, GROUP_DEFAULT_NETWORK_TCP_TIMEOUT_PER_KB: NetCfg.defaults.tcpTimeoutPerKb, + GROUP_DEFAULT_NETWORK_RCV_CONCURRENCY: NetCfg.defaults.rcvConcurrency, GROUP_DEFAULT_NETWORK_SMP_PING_INTERVAL: NetCfg.defaults.smpPingInterval, GROUP_DEFAULT_NETWORK_SMP_PING_COUNT: NetCfg.defaults.smpPingCount, GROUP_DEFAULT_NETWORK_ENABLE_KEEP_ALIVE: NetCfg.defaults.enableKeepAlive, @@ -278,6 +280,7 @@ public func getNetCfg() -> NetCfg { let tcpConnectTimeout = groupDefaults.integer(forKey: GROUP_DEFAULT_NETWORK_TCP_CONNECT_TIMEOUT) let tcpTimeout = groupDefaults.integer(forKey: GROUP_DEFAULT_NETWORK_TCP_TIMEOUT) let tcpTimeoutPerKb = groupDefaults.integer(forKey: GROUP_DEFAULT_NETWORK_TCP_TIMEOUT_PER_KB) + let rcvConcurrency = groupDefaults.integer(forKey: GROUP_DEFAULT_NETWORK_RCV_CONCURRENCY) let smpPingInterval = groupDefaults.integer(forKey: GROUP_DEFAULT_NETWORK_SMP_PING_INTERVAL) let smpPingCount = groupDefaults.integer(forKey: GROUP_DEFAULT_NETWORK_SMP_PING_COUNT) let enableKeepAlive = groupDefaults.bool(forKey: GROUP_DEFAULT_NETWORK_ENABLE_KEEP_ALIVE) @@ -297,6 +300,7 @@ public func getNetCfg() -> NetCfg { tcpConnectTimeout: tcpConnectTimeout, tcpTimeout: tcpTimeout, tcpTimeoutPerKb: tcpTimeoutPerKb, + rcvConcurrency: rcvConcurrency, tcpKeepAlive: tcpKeepAlive, smpPingInterval: smpPingInterval, smpPingCount: smpPingCount, @@ -310,6 +314,7 @@ public func setNetCfg(_ cfg: NetCfg) { groupDefaults.set(cfg.tcpConnectTimeout, forKey: GROUP_DEFAULT_NETWORK_TCP_CONNECT_TIMEOUT) groupDefaults.set(cfg.tcpTimeout, forKey: GROUP_DEFAULT_NETWORK_TCP_TIMEOUT) groupDefaults.set(cfg.tcpTimeoutPerKb, forKey: GROUP_DEFAULT_NETWORK_TCP_TIMEOUT_PER_KB) + groupDefaults.set(cfg.rcvConcurrency, forKey: GROUP_DEFAULT_NETWORK_RCV_CONCURRENCY) groupDefaults.set(cfg.smpPingInterval, forKey: GROUP_DEFAULT_NETWORK_SMP_PING_INTERVAL) groupDefaults.set(cfg.smpPingCount, forKey: GROUP_DEFAULT_NETWORK_SMP_PING_COUNT) if let tcpKeepAlive = cfg.tcpKeepAlive { 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 90d6995504..920a440267 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 @@ -135,6 +135,7 @@ class AppPreferences { val networkTCPConnectTimeout = mkTimeoutPreference(SHARED_PREFS_NETWORK_TCP_CONNECT_TIMEOUT, NetCfg.defaults.tcpConnectTimeout, NetCfg.proxyDefaults.tcpConnectTimeout) val networkTCPTimeout = mkTimeoutPreference(SHARED_PREFS_NETWORK_TCP_TIMEOUT, NetCfg.defaults.tcpTimeout, NetCfg.proxyDefaults.tcpTimeout) val networkTCPTimeoutPerKb = mkTimeoutPreference(SHARED_PREFS_NETWORK_TCP_TIMEOUT_PER_KB, NetCfg.defaults.tcpTimeoutPerKb, NetCfg.proxyDefaults.tcpTimeoutPerKb) + val networkRcvConcurrency = mkIntPreference(SHARED_PREFS_NETWORK_RCV_CONCURRENCY, NetCfg.defaults.rcvConcurrency) val networkSMPPingInterval = mkLongPreference(SHARED_PREFS_NETWORK_SMP_PING_INTERVAL, NetCfg.defaults.smpPingInterval) val networkSMPPingCount = mkIntPreference(SHARED_PREFS_NETWORK_SMP_PING_COUNT, NetCfg.defaults.smpPingCount) val networkEnableKeepAlive = mkBoolPreference(SHARED_PREFS_NETWORK_ENABLE_KEEP_ALIVE, NetCfg.defaults.enableKeepAlive) @@ -304,6 +305,7 @@ class AppPreferences { private const val SHARED_PREFS_NETWORK_TCP_CONNECT_TIMEOUT = "NetworkTCPConnectTimeout" private const val SHARED_PREFS_NETWORK_TCP_TIMEOUT = "NetworkTCPTimeout" private const val SHARED_PREFS_NETWORK_TCP_TIMEOUT_PER_KB = "networkTCPTimeoutPerKb" + private const val SHARED_PREFS_NETWORK_RCV_CONCURRENCY = "networkRcvConcurrency" private const val SHARED_PREFS_NETWORK_SMP_PING_INTERVAL = "NetworkSMPPingInterval" private const val SHARED_PREFS_NETWORK_SMP_PING_COUNT = "NetworkSMPPingCount" private const val SHARED_PREFS_NETWORK_ENABLE_KEEP_ALIVE = "NetworkEnableKeepAlive" @@ -2305,6 +2307,7 @@ object ChatController { val tcpConnectTimeout = appPrefs.networkTCPConnectTimeout.get() val tcpTimeout = appPrefs.networkTCPTimeout.get() val tcpTimeoutPerKb = appPrefs.networkTCPTimeoutPerKb.get() + val rcvConcurrency = appPrefs.networkRcvConcurrency.get() val smpPingInterval = appPrefs.networkSMPPingInterval.get() val smpPingCount = appPrefs.networkSMPPingCount.get() val enableKeepAlive = appPrefs.networkEnableKeepAlive.get() @@ -2324,6 +2327,7 @@ object ChatController { tcpConnectTimeout = tcpConnectTimeout, tcpTimeout = tcpTimeout, tcpTimeoutPerKb = tcpTimeoutPerKb, + rcvConcurrency = rcvConcurrency, tcpKeepAlive = tcpKeepAlive, smpPingInterval = smpPingInterval, smpPingCount = smpPingCount @@ -2341,6 +2345,7 @@ object ChatController { appPrefs.networkTCPConnectTimeout.set(cfg.tcpConnectTimeout) appPrefs.networkTCPTimeout.set(cfg.tcpTimeout) appPrefs.networkTCPTimeoutPerKb.set(cfg.tcpTimeoutPerKb) + appPrefs.networkRcvConcurrency.set(cfg.rcvConcurrency) appPrefs.networkSMPPingInterval.set(cfg.smpPingInterval) appPrefs.networkSMPPingCount.set(cfg.smpPingCount) if (cfg.tcpKeepAlive != null) { @@ -3034,6 +3039,7 @@ data class NetCfg( val tcpConnectTimeout: Long, // microseconds val tcpTimeout: Long, // microseconds val tcpTimeoutPerKb: Long, // microseconds + val rcvConcurrency: Int, // pool size val tcpKeepAlive: KeepAliveOpts?, val smpPingInterval: Long, // microseconds val smpPingCount: Int, @@ -3058,9 +3064,10 @@ data class NetCfg( hostMode = HostMode.OnionViaSocks, requiredHostMode = false, sessionMode = TransportSessionMode.User, - tcpConnectTimeout = 20_000_000, + tcpConnectTimeout = 10_000_000, tcpTimeout = 15_000_000, tcpTimeoutPerKb = 10_000, + rcvConcurrency = 12, tcpKeepAlive = KeepAliveOpts.defaults, smpPingInterval = 1200_000_000, smpPingCount = 3 @@ -3072,9 +3079,10 @@ data class NetCfg( hostMode = HostMode.OnionViaSocks, requiredHostMode = false, sessionMode = TransportSessionMode.User, - tcpConnectTimeout = 30_000_000, + tcpConnectTimeout = 20_000_000, tcpTimeout = 20_000_000, tcpTimeoutPerKb = 15_000, + rcvConcurrency = 8, tcpKeepAlive = KeepAliveOpts.defaults, smpPingInterval = 1200_000_000, smpPingCount = 3 diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt index c031a0fcb7..88368c9d1d 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt @@ -34,6 +34,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { val networkTCPConnectTimeout = remember { mutableStateOf(currentCfgVal.tcpConnectTimeout) } val networkTCPTimeout = remember { mutableStateOf(currentCfgVal.tcpTimeout) } val networkTCPTimeoutPerKb = remember { mutableStateOf(currentCfgVal.tcpTimeoutPerKb) } + var networkRcvConcurrency = remember { mutableStateOf(currentCfgVal.rcvConcurrency) } val networkSMPPingInterval = remember { mutableStateOf(currentCfgVal.smpPingInterval) } val networkSMPPingCount = remember { mutableStateOf(currentCfgVal.smpPingCount) } val networkEnableKeepAlive = remember { mutableStateOf(currentCfgVal.enableKeepAlive) } @@ -68,6 +69,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { tcpConnectTimeout = networkTCPConnectTimeout.value, tcpTimeout = networkTCPTimeout.value, tcpTimeoutPerKb = networkTCPTimeoutPerKb.value, + rcvConcurrency = networkRcvConcurrency.value, tcpKeepAlive = tcpKeepAlive, smpPingInterval = networkSMPPingInterval.value, smpPingCount = networkSMPPingCount.value @@ -78,6 +80,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { networkTCPConnectTimeout.value = cfg.tcpConnectTimeout networkTCPTimeout.value = cfg.tcpTimeout networkTCPTimeoutPerKb.value = cfg.tcpTimeoutPerKb + networkRcvConcurrency.value = cfg.rcvConcurrency networkSMPPingInterval.value = cfg.smpPingInterval networkSMPPingCount.value = cfg.smpPingCount networkEnableKeepAlive.value = cfg.enableKeepAlive @@ -110,6 +113,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { networkTCPConnectTimeout, networkTCPTimeout, networkTCPTimeoutPerKb, + networkRcvConcurrency, networkSMPPingInterval, networkSMPPingCount, networkEnableKeepAlive, @@ -128,6 +132,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { networkTCPConnectTimeout: MutableState, networkTCPTimeout: MutableState, networkTCPTimeoutPerKb: MutableState, + networkRcvConcurrency: MutableState, networkSMPPingInterval: MutableState, networkSMPPingCount: MutableState, networkEnableKeepAlive: MutableState, @@ -154,7 +159,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { SectionItemView { TimeoutSettingRow( stringResource(MR.strings.network_option_tcp_connection_timeout), networkTCPConnectTimeout, - listOf(7_500000, 10_000000, 15_000000, 20_000000, 30_000_000, 45_000_000), secondsLabel + listOf(5_000000, 7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 40_000000), secondsLabel ) } SectionItemView { @@ -170,6 +175,12 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { listOf(2_500, 5_000, 10_000, 15_000, 20_000, 30_000), secondsLabel ) } + SectionItemView { + IntSettingRow( + stringResource(MR.strings.network_option_rcv_concurrency), networkRcvConcurrency, + listOf(1, 2, 4, 8, 12, 16, 24), "" + ) + } SectionItemView { TimeoutSettingRow( stringResource(MR.strings.network_option_ping_interval), networkSMPPingInterval, @@ -418,6 +429,7 @@ fun PreviewAdvancedNetworkSettingsLayout() { networkTCPConnectTimeout = remember { mutableStateOf(10_000000) }, networkTCPTimeout = remember { mutableStateOf(10_000000) }, networkTCPTimeoutPerKb = remember { mutableStateOf(10_000) }, + networkRcvConcurrency = remember { mutableStateOf(8) }, networkSMPPingInterval = remember { mutableStateOf(10_000000) }, networkSMPPingCount = remember { mutableStateOf(3) }, networkEnableKeepAlive = remember { mutableStateOf(true) }, 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 7d09492010..d30db06f9f 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1459,6 +1459,7 @@ TCP connection timeout Protocol timeout Protocol timeout per KB + Receiving concurrency PING interval PING count Enable TCP keep-alive diff --git a/cabal.project b/cabal.project index 02deb0dbfb..5a5095c8ca 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: c00c223f3bb295a62d8507e453bbeac61d102e3a + tag: b98fdb672d011587c00743312ad39b54820f6c8d source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 0b264d3628..a383099d9e 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."c00c223f3bb295a62d8507e453bbeac61d102e3a" = "0zbsz70rjhvrlkkiwnw43v7lg6r05lp5rwk7jmnn21zfjib4l621"; + "https://github.com/simplex-chat/simplexmq.git"."b98fdb672d011587c00743312ad39b54820f6c8d" = "0mdhcnp3charn8j0ccykmgzmjwyw2gbc2z1y7m8br05h8bh6xqsv"; "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"; From 8f4c9a673a611efaa893c4ebf55731215c6761e5 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sat, 20 Apr 2024 19:39:20 +0100 Subject: [PATCH 055/147] core: 5.7.0.1 --- cabal.project | 2 +- package.yaml | 2 +- scripts/nix/sha256map.nix | 2 +- simplex-chat.cabal | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cabal.project b/cabal.project index 5a5095c8ca..a0ba556c1c 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: b98fdb672d011587c00743312ad39b54820f6c8d + tag: 3d40393ae83260245c7122b850fb42cd4243deba source-repository-package type: git diff --git a/package.yaml b/package.yaml index e844c52c26..2ef0fce30b 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.7.0.0 +version: 5.7.0.1 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index a383099d9e..0961e737c4 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."b98fdb672d011587c00743312ad39b54820f6c8d" = "0mdhcnp3charn8j0ccykmgzmjwyw2gbc2z1y7m8br05h8bh6xqsv"; + "https://github.com/simplex-chat/simplexmq.git"."3d40393ae83260245c7122b850fb42cd4243deba" = "0hkfz5k8kn1lqq0ms0b266pzsk48pq1gkfm7wgw6w5mr1pw149ay"; "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/simplex-chat.cabal b/simplex-chat.cabal index aac942c6b3..c16c56f324 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: 5.7.0.0 +version: 5.7.0.1 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat From f53882049f345dbde9588141e3c757927d6bc1ff Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sat, 20 Apr 2024 19:54:47 +0100 Subject: [PATCH 056/147] ios: update core library --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index d025ec6f3a..1770d522c2 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,11 +29,11 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; - 5C22177A2BD40D1800A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217752BD40D1800A8B0E7 /* libgmp.a */; }; - 5C22177B2BD40D1800A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217762BD40D1800A8B0E7 /* libgmpxx.a */; }; - 5C22177C2BD40D1800A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217772BD40D1800A8B0E7 /* libffi.a */; }; - 5C22177D2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217782BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a */; }; - 5C22177E2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217792BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a */; }; + 5C2217842BD4465500A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22177F2BD4465500A8B0E7 /* libgmpxx.a */; }; + 5C2217852BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217802BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a */; }; + 5C2217862BD4465500A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217812BD4465500A8B0E7 /* libgmp.a */; }; + 5C2217872BD4465500A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217822BD4465500A8B0E7 /* libffi.a */; }; + 5C2217882BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217832BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -279,11 +279,11 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; - 5C2217752BD40D1800A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C2217762BD40D1800A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5C2217772BD40D1800A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 5C2217782BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a"; sourceTree = ""; }; - 5C2217792BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a"; sourceTree = ""; }; + 5C22177F2BD4465500A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C2217802BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a"; sourceTree = ""; }; + 5C2217812BD4465500A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C2217822BD4465500A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C2217832BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a"; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -525,13 +525,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C22177B2BD40D1800A8B0E7 /* libgmpxx.a in Frameworks */, + 5C2217842BD4465500A8B0E7 /* libgmpxx.a in Frameworks */, + 5C2217872BD4465500A8B0E7 /* libffi.a in Frameworks */, + 5C2217862BD4465500A8B0E7 /* libgmp.a in Frameworks */, + 5C2217882BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5C22177D2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a in Frameworks */, - 5C22177A2BD40D1800A8B0E7 /* libgmp.a in Frameworks */, - 5C22177C2BD40D1800A8B0E7 /* libffi.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 5C22177E2BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a in Frameworks */, + 5C2217852BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C2217772BD40D1800A8B0E7 /* libffi.a */, - 5C2217752BD40D1800A8B0E7 /* libgmp.a */, - 5C2217762BD40D1800A8B0E7 /* libgmpxx.a */, - 5C2217782BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O-ghc9.6.3.a */, - 5C2217792BD40D1800A8B0E7 /* libHSsimplex-chat-5.7.0.0-KdKN1sKiHR7tY2gjTFt3O.a */, + 5C2217822BD4465500A8B0E7 /* libffi.a */, + 5C2217812BD4465500A8B0E7 /* libgmp.a */, + 5C22177F2BD4465500A8B0E7 /* libgmpxx.a */, + 5C2217802BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a */, + 5C2217832BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a */, ); path = Libraries; sourceTree = ""; From e9db7e8e5834bc7317c453c290b2c25242237db7 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sat, 20 Apr 2024 19:57:40 +0100 Subject: [PATCH 057/147] ios: export translations --- .../bg.xcloc/Localized Contents/bg.xliff | 116 ++++++++++++++ .../cs.xcloc/Localized Contents/cs.xliff | 116 ++++++++++++++ .../de.xcloc/Localized Contents/de.xliff | 116 ++++++++++++++ .../en.xcloc/Localized Contents/en.xliff | 145 ++++++++++++++++++ .../es.xcloc/Localized Contents/es.xliff | 116 ++++++++++++++ .../fi.xcloc/Localized Contents/fi.xliff | 116 ++++++++++++++ .../fr.xcloc/Localized Contents/fr.xliff | 116 ++++++++++++++ .../hu.xcloc/Localized Contents/hu.xliff | 116 ++++++++++++++ .../it.xcloc/Localized Contents/it.xliff | 116 ++++++++++++++ .../ja.xcloc/Localized Contents/ja.xliff | 116 ++++++++++++++ .../nl.xcloc/Localized Contents/nl.xliff | 116 ++++++++++++++ .../pl.xcloc/Localized Contents/pl.xliff | 116 ++++++++++++++ .../ru.xcloc/Localized Contents/ru.xliff | 116 ++++++++++++++ .../th.xcloc/Localized Contents/th.xliff | 116 ++++++++++++++ .../tr.xcloc/Localized Contents/tr.xliff | 116 ++++++++++++++ .../uk.xcloc/Localized Contents/uk.xliff | 116 ++++++++++++++ .../Localized Contents/zh-Hans.xliff | 116 ++++++++++++++ 17 files changed, 2001 insertions(+) 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 0f8bff18ea..e3129ef52a 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -739,6 +739,10 @@ Позволи необратимо изтриване на изпратените съобщения. (24 часа) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Позволи изпращане на файлове и медия. @@ -1079,6 +1083,10 @@ Файлът не може да бъде получен No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Промени @@ -2073,6 +2081,10 @@ This cannot be undone! Понижи версията и отвори чата No comment provided by engineer. + + Download + chat item action + Download failed Неуспешно изтегляне @@ -2183,6 +2195,10 @@ This cannot be undone! Активирай kод за достъп за самоунищожение set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Криптирай @@ -2708,6 +2724,10 @@ This cannot be undone! Файловете и медията са забранени в тази група. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Файловете и медията са забранени! @@ -2773,6 +2793,18 @@ This cannot be undone! За конзолата No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Намерено настолно устройство @@ -2883,6 +2915,10 @@ This cannot be undone! Членовете на групата могат необратимо да изтриват изпратените съобщения. (24 часа) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Членовете на групата могат да изпращат лични съобщения. @@ -3746,6 +3782,10 @@ This is your link for group %@! Мрежа и сървъри No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Мрежови настройки @@ -3856,6 +3896,10 @@ This is your link for group %@! Няма история No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Няма разрешение за запис на гласово съобщение @@ -4070,6 +4114,10 @@ This is your link for group %@! Или покажи този код No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING бройка @@ -4332,6 +4380,10 @@ Error: %@ Забрани реакциите на съобщенията. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Забрани изпращането на лични съобщения до членовете. @@ -4462,6 +4514,10 @@ Error: %@ Получаващият адрес ще бъде променен към друг сървър. Промяната на адреса ще завърши, след като подателят е онлайн. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Получаващият се файл ще бъде спрян. @@ -4477,6 +4533,10 @@ Error: %@ Скорошна история и подобрен [bot за директория за групи](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPd jdLW3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Получателите виждат актуализации, докато ги въвеждате. @@ -4777,11 +4837,19 @@ Error: %@ Запази съобщението при посрещане? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Запазените WebRTC ICE сървъри ще бъдат премахнати No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Запазено съобщение @@ -5205,6 +5273,14 @@ Error: %@ SimpleX links SimpleX линкове + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6043,6 +6119,10 @@ To connect, please ask your contact to create another connection link and check Гласовите съобщения са забранени в тази група. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Гласовите съобщения са забранени! @@ -6123,6 +6203,14 @@ To connect, please ask your contact to create another connection link and check Когато споделяте инкогнито профил с някого, този профил ще се използва за групите, в които той ви кани. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. С криптирани файлове и медия. @@ -6605,6 +6693,10 @@ SimpleX сървърите не могат да видят вашия профи админ member role + + admins + feature role + agreeing encryption for %@… съгласуване на криптиране за %@… @@ -6615,6 +6707,10 @@ SimpleX сървърите не могат да видят вашия профи съгласуване на криптиране… chat item text + + all members + feature role + always винаги @@ -6945,6 +7041,10 @@ SimpleX сървърите не могат да видят вашия профи събитие се случи No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted групата е изтрита @@ -7152,6 +7252,10 @@ SimpleX сървърите не могат да видят вашия профи собственик member role + + owners + feature role + peer-to-peer peer-to-peer @@ -7202,6 +7306,14 @@ SimpleX сървърите не могат да видят вашия профи ви острани rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec сек. @@ -7342,6 +7454,10 @@ SimpleX сървърите не могат да видят вашия профи да pref value + + you + No comment provided by engineer. + you are invited to group вие сте поканени в групата 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 cf6e0e1fcd..05eb701b86 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -720,6 +720,10 @@ Povolit nevratné smazání odeslaných zpráv. (24 hodin) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Povolit odesílání souborů a médii. @@ -1043,6 +1047,10 @@ Nelze přijmout soubor No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Změnit @@ -1999,6 +2007,10 @@ This cannot be undone! Snížit a otevřít chat No comment provided by engineer. + + Download + chat item action + Download failed No comment provided by engineer. @@ -2104,6 +2116,10 @@ This cannot be undone! Povolit sebedestrukční heslo set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Šifrovat @@ -2611,6 +2627,10 @@ This cannot be undone! Soubory a média jsou zakázány v této skupině. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Soubory a média jsou zakázány! @@ -2674,6 +2694,18 @@ This cannot be undone! Pro konzoli No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop No comment provided by engineer. @@ -2780,6 +2812,10 @@ This cannot be undone! Členové skupiny mohou nevratně mazat odeslané zprávy. (24 hodin) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Členové skupiny mohou posílat přímé zprávy. @@ -3609,6 +3645,10 @@ This is your link for group %@! Síť a servery No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Nastavení sítě @@ -3718,6 +3758,10 @@ This is your link for group %@! Žádná historie No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Nemáte oprávnění nahrávat hlasové zprávy @@ -3923,6 +3967,10 @@ This is your link for group %@! Or show this code No comment provided by engineer. + + Other + No comment provided by engineer. + PING count Počet PING @@ -4173,6 +4221,10 @@ Error: %@ Zakázat reakce na zprávy. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Zakázat odesílání přímých zpráv členům. @@ -4300,6 +4352,10 @@ Error: %@ Přijímací adresa bude změněna na jiný server. Změna adresy bude dokončena po připojení odesílatele. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Příjem souboru bude zastaven. @@ -4314,6 +4370,10 @@ Error: %@ Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Příjemci uvidí aktualizace během jejich psaní. @@ -4607,11 +4667,19 @@ Error: %@ Uložit uvítací zprávu? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Uložené servery WebRTC ICE budou odstraněny No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message message info title @@ -5026,6 +5094,14 @@ Error: %@ SimpleX links Odkazy na SimpleX + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -5828,6 +5904,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Hlasové zprávy jsou v této skupině zakázány. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Hlasové zprávy jsou zakázány! @@ -5905,6 +5985,14 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Pokud s někým sdílíte inkognito profil, bude tento profil použit pro skupiny, do kterých vás pozve. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. No comment provided by engineer. @@ -6368,6 +6456,10 @@ Servery SimpleX nevidí váš profil. správce member role + + admins + feature role + agreeing encryption for %@… povoluji šifrování pro %@… @@ -6378,6 +6470,10 @@ Servery SimpleX nevidí váš profil. povoluji šifrování… chat item text + + all members + feature role + always vždy @@ -6700,6 +6796,10 @@ Servery SimpleX nevidí váš profil. event happened No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted skupina smazána @@ -6906,6 +7006,10 @@ Servery SimpleX nevidí váš profil. vlastník member role + + owners + feature role + peer-to-peer peer-to-peer @@ -6953,6 +7057,14 @@ Servery SimpleX nevidí váš profil. odstranil vás rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sek @@ -7086,6 +7198,10 @@ Servery SimpleX nevidí váš profil. ano pref value + + you + No comment provided by engineer. + you are invited to group jste pozváni do skupiny 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 7ad19ff86f..29cb3ffd5c 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -743,6 +743,10 @@ Unwiederbringliches löschen von gesendeten Nachrichten erlauben. (24 Stunden) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Das Senden von Dateien und Medien erlauben. @@ -1083,6 +1087,10 @@ Datei kann nicht empfangen werden No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Ändern @@ -2078,6 +2086,10 @@ Das kann nicht rückgängig gemacht werden! Datenbank herabstufen und den Chat öffnen No comment provided by engineer. + + Download + chat item action + Download failed Herunterladen fehlgeschlagen @@ -2188,6 +2200,10 @@ Das kann nicht rückgängig gemacht werden! Selbstzerstörungs-Zugangscode aktivieren set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Verschlüsseln @@ -2713,6 +2729,10 @@ Das kann nicht rückgängig gemacht werden! In dieser Gruppe sind Dateien und Medien nicht erlaubt. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Dateien und Medien sind nicht erlaubt! @@ -2778,6 +2798,18 @@ Das kann nicht rückgängig gemacht werden! Für Konsole No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Gefundener Desktop @@ -2888,6 +2920,10 @@ Das kann nicht rückgängig gemacht werden! Gruppenmitglieder können gesendete Nachrichten unwiederbringlich löschen. (24 Stunden) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Gruppenmitglieder können Direktnachrichten versenden. @@ -3753,6 +3789,10 @@ Das ist Ihr Link für die Gruppe %@! Netzwerk & Server No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Netzwerkeinstellungen @@ -3863,6 +3903,10 @@ Das ist Ihr Link für die Gruppe %@! Kein Nachrichtenverlauf No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Keine Berechtigung für das Aufnehmen von Sprachnachrichten @@ -4077,6 +4121,10 @@ Das ist Ihr Link für die Gruppe %@! Oder diesen QR-Code anzeigen No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING-Zähler @@ -4339,6 +4387,10 @@ Fehler: %@ Reaktionen auf Nachrichten nicht erlauben. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Das Senden von Direktnachrichten an Gruppenmitglieder nicht erlauben. @@ -4469,6 +4521,10 @@ Fehler: %@ Die Empfängeradresse wird auf einen anderen Server geändert. Der Adresswechsel wird abgeschlossen, wenn der Absender wieder online ist. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Der Empfang der Datei wird beendet. @@ -4484,6 +4540,10 @@ Fehler: %@ Aktueller Nachrichtenverlauf und verbesserter [Gruppenverzeichnis-Bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Die Empfänger sehen Nachrichtenaktualisierungen, während Sie sie eingeben. @@ -4784,11 +4844,19 @@ Fehler: %@ Begrüßungsmeldung speichern? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Gespeicherte WebRTC ICE-Server werden entfernt No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Gespeicherte Nachricht @@ -5212,6 +5280,14 @@ Fehler: %@ SimpleX links SimpleX-Links + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s In dieser Gruppe sind Sprachnachrichten nicht erlaubt. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Sprachnachrichten sind nicht erlaubt! @@ -6130,6 +6210,14 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Wenn Sie ein Inkognito-Profil mit Jemandem teilen, wird dieses Profil auch für die Gruppen verwendet, für die Sie von diesem Kontakt eingeladen werden. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. Mit verschlüsselten Dateien und Medien. @@ -6613,6 +6701,10 @@ SimpleX-Server können Ihr Profil nicht einsehen. Admin member role + + admins + feature role + agreeing encryption for %@… Verschlüsselung von %@ zustimmen… @@ -6623,6 +6715,10 @@ SimpleX-Server können Ihr Profil nicht einsehen. Verschlüsselung zustimmen… chat item text + + all members + feature role + always Immer @@ -6953,6 +7049,10 @@ SimpleX-Server können Ihr Profil nicht einsehen. event happened No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted Gruppe gelöscht @@ -7160,6 +7260,10 @@ SimpleX-Server können Ihr Profil nicht einsehen. Eigentümer member role + + owners + feature role + peer-to-peer Peer-to-Peer @@ -7210,6 +7314,14 @@ SimpleX-Server können Ihr Profil nicht einsehen. hat Sie aus der Gruppe entfernt rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sek @@ -7350,6 +7462,10 @@ SimpleX-Server können Ihr Profil nicht einsehen. Ja pref value + + you + No comment provided by engineer. + you are invited to group Sie sind zu der Gruppe eingeladen 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 39ee4e2a9b..eb06200db9 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -743,6 +743,11 @@ Allow to irreversibly delete sent messages. (24 hours) No comment provided by engineer. + + Allow to send SimpleX links. + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Allow to send files and media. @@ -1083,6 +1088,11 @@ Cannot receive file No comment provided by engineer. + + Cellular + Cellular + No comment provided by engineer. + Change Change @@ -2078,6 +2088,11 @@ This cannot be undone! Downgrade and open chat No comment provided by engineer. + + Download + Download + chat item action + Download failed Download failed @@ -2188,6 +2203,11 @@ This cannot be undone! Enable self-destruct passcode set passcode view + + Enabled for + Enabled for + No comment provided by engineer. + Encrypt Encrypt @@ -2713,6 +2733,11 @@ This cannot be undone! Files and media are prohibited in this group. No comment provided by engineer. + + Files and media not allowed + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Files and media prohibited! @@ -2778,6 +2803,21 @@ This cannot be undone! For console No comment provided by engineer. + + Forward + Forward + chat item action + + + Forwarded + Forwarded + No comment provided by engineer. + + + Forwarded from + Forwarded from + No comment provided by engineer. + Found desktop Found desktop @@ -2888,6 +2928,11 @@ This cannot be undone! Group members can irreversibly delete sent messages. (24 hours) No comment provided by engineer. + + Group members can send SimpleX links. + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Group members can send direct messages. @@ -3753,6 +3798,11 @@ This is your link for group %@! Network & servers No comment provided by engineer. + + Network connection + Network connection + No comment provided by engineer. + Network settings Network settings @@ -3863,6 +3913,11 @@ This is your link for group %@! No history No comment provided by engineer. + + No network connection + No network connection + No comment provided by engineer. + No permission to record voice message No permission to record voice message @@ -4077,6 +4132,11 @@ This is your link for group %@! Or show this code No comment provided by engineer. + + Other + Other + No comment provided by engineer. + PING count PING count @@ -4339,6 +4399,11 @@ Error: %@ Prohibit messages reactions. No comment provided by engineer. + + Prohibit sending SimpleX links. + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Prohibit sending direct messages to members. @@ -4469,6 +4534,11 @@ Error: %@ Receiving address will be changed to a different server. Address change will complete after sender comes online. No comment provided by engineer. + + Receiving concurrency + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Receiving file will be stopped. @@ -4484,6 +4554,11 @@ Error: %@ Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Recipients see updates as you type them. @@ -4784,11 +4859,21 @@ Error: %@ Save welcome message? No comment provided by engineer. + + Saved + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Saved WebRTC ICE servers will be removed No comment provided by engineer. + + Saved from + Saved from + No comment provided by engineer. + Saved message Saved message @@ -5212,6 +5297,16 @@ Error: %@ SimpleX links SimpleX links + chat feature + + + SimpleX links are prohibited in this group. + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6145,11 @@ To connect, please ask your contact to create another connection link and check Voice messages are prohibited in this group. No comment provided by engineer. + + Voice messages not allowed + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Voice messages prohibited! @@ -6130,6 +6230,16 @@ To connect, please ask your contact to create another connection link and check When you share an incognito profile with somebody, this profile will be used for the groups they invite you to. No comment provided by engineer. + + WiFi + WiFi + No comment provided by engineer. + + + Wired ethernet + Wired ethernet + No comment provided by engineer. + With encrypted files and media. With encrypted files and media. @@ -6613,6 +6723,11 @@ SimpleX servers cannot see your profile. admin member role + + admins + admins + feature role + agreeing encryption for %@… agreeing encryption for %@… @@ -6623,6 +6738,11 @@ SimpleX servers cannot see your profile. agreeing encryption… chat item text + + all members + all members + feature role + always always @@ -6953,6 +7073,11 @@ SimpleX servers cannot see your profile. event happened No comment provided by engineer. + + forwarded + forwarded + No comment provided by engineer. + group deleted group deleted @@ -7160,6 +7285,11 @@ SimpleX servers cannot see your profile. owner member role + + owners + owners + feature role + peer-to-peer peer-to-peer @@ -7210,6 +7340,16 @@ SimpleX servers cannot see your profile. removed you rcv group event chat item + + saved + saved + No comment provided by engineer. + + + saved from %@ + saved from %@ + No comment provided by engineer. + sec sec @@ -7350,6 +7490,11 @@ SimpleX servers cannot see your profile. yes pref value + + you + you + No comment provided by engineer. + you are invited to group you are invited to group 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 99a117d786..81f31e674f 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -743,6 +743,10 @@ Se permite la eliminación irreversible de mensajes. (24 horas) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Se permite enviar archivos y multimedia. @@ -1083,6 +1087,10 @@ No se puede recibir el archivo No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Cambiar @@ -2078,6 +2086,10 @@ This cannot be undone! Degradar y abrir Chat No comment provided by engineer. + + Download + chat item action + Download failed Error en la descarga @@ -2188,6 +2200,10 @@ This cannot be undone! Activar código de autodestrucción set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Cifrar @@ -2713,6 +2729,10 @@ This cannot be undone! No se permiten archivos y multimedia en este grupo. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! ¡Archivos y multimedia no permitidos! @@ -2778,6 +2798,18 @@ This cannot be undone! Para consola No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Ordenador encontrado @@ -2888,6 +2920,10 @@ This cannot be undone! Los miembros del grupo pueden eliminar mensajes de forma irreversible. (24 horas) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Los miembros del grupo pueden enviar mensajes directos. @@ -3753,6 +3789,10 @@ This is your link for group %@! Servidores y Redes No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Configuración de red @@ -3863,6 +3903,10 @@ This is your link for group %@! Sin historial No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Sin permiso para grabar mensajes de voz @@ -4077,6 +4121,10 @@ This is your link for group %@! O mostrar este código No comment provided by engineer. + + Other + No comment provided by engineer. + PING count Contador PING @@ -4339,6 +4387,10 @@ Error: %@ No se permiten reacciones a los mensajes. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. No se permiten mensajes directos entre miembros. @@ -4469,6 +4521,10 @@ Error: %@ La dirección de recepción pasará a otro servidor. El cambio se completará cuando el remitente esté en línea. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Se detendrá la recepción del archivo. @@ -4484,6 +4540,10 @@ Error: %@ Historial reciente y [bot del directorio](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) mejorados. No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Los destinatarios ven actualizarse mientras escribes. @@ -4784,11 +4844,19 @@ Error: %@ ¿Guardar mensaje de bienvenida? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Los servidores WebRTC ICE guardados serán eliminados No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Mensaje guardado @@ -5212,6 +5280,14 @@ Error: %@ SimpleX links Enlaces SimpleX + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6051,6 +6127,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Los mensajes de voz no están permitidos en este grupo. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! ¡Mensajes de voz no permitidos! @@ -6131,6 +6211,14 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Cuando compartes un perfil incógnito con alguien, este perfil también se usará para los grupos a los que te inviten. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. Con cifrado de archivos y multimedia. @@ -6614,6 +6702,10 @@ Los servidores de SimpleX no pueden ver tu perfil. administrador member role + + admins + feature role + agreeing encryption for %@… acordando cifrado para %@… @@ -6624,6 +6716,10 @@ Los servidores de SimpleX no pueden ver tu perfil. acordando cifrado… chat item text + + all members + feature role + always siempre @@ -6954,6 +7050,10 @@ Los servidores de SimpleX no pueden ver tu perfil. evento ocurrido No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted grupo eliminado @@ -7161,6 +7261,10 @@ Los servidores de SimpleX no pueden ver tu perfil. propietario member role + + owners + feature role + peer-to-peer p2p @@ -7211,6 +7315,14 @@ Los servidores de SimpleX no pueden ver tu perfil. te ha expulsado rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec seg @@ -7351,6 +7463,10 @@ Los servidores de SimpleX no pueden ver tu perfil. sí pref value + + you + No comment provided by engineer. + you are invited to group has sido invitado a un grupo 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 3e971985ef..bb5ee64041 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -715,6 +715,10 @@ Salli lähetettyjen viestien peruuttamaton poistaminen. (24 tuntia) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Salli tiedostojen ja median lähettäminen. @@ -1036,6 +1040,10 @@ Tiedostoa ei voi vastaanottaa No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Muuta @@ -1992,6 +2000,10 @@ This cannot be undone! Alenna ja avaa keskustelu No comment provided by engineer. + + Download + chat item action + Download failed No comment provided by engineer. @@ -2097,6 +2109,10 @@ This cannot be undone! Ota itsetuhoava pääsykoodi käyttöön set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Salaa @@ -2601,6 +2617,10 @@ This cannot be undone! Tiedostot ja media ovat tässä ryhmässä kiellettyjä. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Tiedostot ja media kielletty! @@ -2664,6 +2684,18 @@ This cannot be undone! Konsoliin No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop No comment provided by engineer. @@ -2770,6 +2802,10 @@ This cannot be undone! Ryhmän jäsenet voivat poistaa lähetetyt viestit peruuttamattomasti. (24 tuntia) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Ryhmän jäsenet voivat lähettää suoraviestejä. @@ -3599,6 +3635,10 @@ This is your link for group %@! Verkko ja palvelimet No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Verkkoasetukset @@ -3707,6 +3747,10 @@ This is your link for group %@! Ei historiaa No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Ei lupaa ääniviestin tallentamiseen @@ -3911,6 +3955,10 @@ This is your link for group %@! Or show this code No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING-määrä @@ -4161,6 +4209,10 @@ Error: %@ Estä viestireaktiot. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Estä suorien viestien lähettäminen jäsenille. @@ -4288,6 +4340,10 @@ Error: %@ Vastaanotto-osoite vaihdetaan toiseen palvelimeen. Osoitteenmuutos tehdään sen jälkeen, kun lähettäjä tulee verkkoon. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Tiedoston vastaanotto pysäytetään. @@ -4302,6 +4358,10 @@ Error: %@ Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Vastaanottajat näkevät päivitykset, kun kirjoitat niitä. @@ -4595,11 +4655,19 @@ Error: %@ Tallenna tervetuloviesti? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Tallennetut WebRTC ICE -palvelimet poistetaan No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message message info title @@ -5013,6 +5081,14 @@ Error: %@ SimpleX links SimpleX-linkit + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -5813,6 +5889,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Ääniviestit ovat kiellettyjä tässä ryhmässä. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Ääniviestit kielletty! @@ -5890,6 +5970,14 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Kun jaat inkognitoprofiilin jonkun kanssa, tätä profiilia käytetään ryhmissä, joihin tämä sinut kutsuu. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. No comment provided by engineer. @@ -6353,6 +6441,10 @@ SimpleX-palvelimet eivät näe profiiliasi. ylläpitäjä member role + + admins + feature role + agreeing encryption for %@… salauksesta sovitaan %@:lle… @@ -6363,6 +6455,10 @@ SimpleX-palvelimet eivät näe profiiliasi. hyväksyy salausta… chat item text + + all members + feature role + always aina @@ -6685,6 +6781,10 @@ SimpleX-palvelimet eivät näe profiiliasi. tapahtuma tapahtui No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted ryhmä poistettu @@ -6891,6 +6991,10 @@ SimpleX-palvelimet eivät näe profiiliasi. omistaja member role + + owners + feature role + peer-to-peer vertais @@ -6938,6 +7042,14 @@ SimpleX-palvelimet eivät näe profiiliasi. poisti sinut rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sek @@ -7070,6 +7182,10 @@ SimpleX-palvelimet eivät näe profiiliasi. kyllä pref value + + you + No comment provided by engineer. + you are invited to group sinut on kutsuttu ryhmään 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 1e335c00b0..523a890345 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -743,6 +743,10 @@ Autoriser la suppression irréversible de messages envoyés. (24 heures) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Permet l'envoi de fichiers et de médias. @@ -1083,6 +1087,10 @@ Impossible de recevoir le fichier No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Changer @@ -2078,6 +2086,10 @@ Cette opération ne peut être annulée ! Rétrograder et ouvrir le chat No comment provided by engineer. + + Download + chat item action + Download failed Échec du téléchargement @@ -2188,6 +2200,10 @@ Cette opération ne peut être annulée ! Activer le code d'autodestruction set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Chiffrer @@ -2713,6 +2729,10 @@ Cette opération ne peut être annulée ! Les fichiers et les médias sont interdits dans ce groupe. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Fichiers et médias interdits ! @@ -2778,6 +2798,18 @@ Cette opération ne peut être annulée ! Pour la console No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Bureau trouvé @@ -2888,6 +2920,10 @@ Cette opération ne peut être annulée ! Les membres du groupe peuvent supprimer de manière irréversible les messages envoyés. (24 heures) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Les membres du groupe peuvent envoyer des messages directs. @@ -3753,6 +3789,10 @@ Voici votre lien pour le groupe %@ ! Réseau et serveurs No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Paramètres réseau @@ -3863,6 +3903,10 @@ Voici votre lien pour le groupe %@ ! Aucun historique No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Pas l'autorisation d'enregistrer un message vocal @@ -4077,6 +4121,10 @@ Voici votre lien pour le groupe %@ ! Ou présenter ce code No comment provided by engineer. + + Other + No comment provided by engineer. + PING count Nombre de PING @@ -4339,6 +4387,10 @@ Erreur : %@ Interdire les réactions aux messages. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Interdire l'envoi de messages directs aux membres. @@ -4469,6 +4521,10 @@ Erreur : %@ L'adresse de réception sera changée pour un autre serveur. Le changement d'adresse sera terminé lorsque l'expéditeur sera en ligne. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. La réception du fichier sera interrompue. @@ -4484,6 +4540,10 @@ Erreur : %@ Historique récent et amélioration du [bot annuaire](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Les destinataires voient les mises à jour au fur et à mesure que vous leur écrivez. @@ -4784,11 +4844,19 @@ Erreur : %@ Enregistrer le message d'accueil ? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Les serveurs WebRTC ICE sauvegardés seront supprimés No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Message enregistré @@ -5212,6 +5280,14 @@ Erreur : %@ SimpleX links Liens SimpleX + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Les messages vocaux sont interdits dans ce groupe. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Messages vocaux interdits ! @@ -6130,6 +6210,14 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Lorsque vous partagez un profil incognito avec quelqu'un, ce profil sera utilisé pour les groupes auxquels il vous invite. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. Avec les fichiers et les médias chiffrés. @@ -6613,6 +6701,10 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. admin member role + + admins + feature role + agreeing encryption for %@… négociation du chiffrement avec %@… @@ -6623,6 +6715,10 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. négociation du chiffrement… chat item text + + all members + feature role + always toujours @@ -6953,6 +7049,10 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. event happened No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted groupe supprimé @@ -7160,6 +7260,10 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. propriétaire member role + + owners + feature role + peer-to-peer pair-à-pair @@ -7210,6 +7314,14 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. vous a retiré rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sec @@ -7350,6 +7462,10 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. oui pref value + + you + No comment provided by engineer. + you are invited to group vous êtes invité·e au groupe 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 546bdf23d3..527bbd2036 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -737,6 +737,10 @@ Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése. (24 óra) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Fájlok és médiatartalom küldésének engedélyezése. @@ -1072,6 +1076,10 @@ Nem lehet fogadni a fájlt No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Változtatás @@ -2060,6 +2068,10 @@ Ezt nem vonható vissza! Visszatérés a korábbi verzióra és a csevegés megnyitása No comment provided by engineer. + + Download + chat item action + Download failed No comment provided by engineer. @@ -2166,6 +2178,10 @@ Ezt nem vonható vissza! Önmegsemmisítő jelkód engedélyezése set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Titkosít @@ -2684,6 +2700,10 @@ Ezt nem vonható vissza! A fájlok- és a médiatartalom küldése le van tiltva ebben a csoportban. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! A fájlok- és a médiatartalom küldése le van tiltva! @@ -2747,6 +2767,18 @@ Ezt nem vonható vissza! Konzolhoz No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Megtalált számítógép @@ -2857,6 +2889,10 @@ Ezt nem vonható vissza! Csoporttagok visszafordíthatatlanul törölhetik az elküldött üzeneteket. (24 óra) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Csoporttagok küldhetnek közvetlen üzeneteket. @@ -3707,6 +3743,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Hálózat és kiszolgálók No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Hálózati beállítások @@ -3817,6 +3857,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Nincsenek előzmények No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Nincs engedély a hangüzenet rögzítésére @@ -4028,6 +4072,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Vagy mutassa meg ezt a kódot No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING számláló @@ -4287,6 +4335,10 @@ Hiba: %@ Az üzenetreakciók tiltása. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Közvetlen üzenetek küldésének letiltása tagok részére. @@ -4415,6 +4467,10 @@ Hiba: %@ A fogadó cím egy másik kiszolgálóra változik. A címváltoztatás a feladó online állapotba kerülése után fejeződik be. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. A fájl fogadása leállt. @@ -4430,6 +4486,10 @@ Hiba: %@ Legutóbbi előzmények és továbbfejlesztett [könyvtárbot] (simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2TxW3dfMfxy 3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gloncbqjek4gloncbqjek. No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. A címzettek a beírás közben látják a frissítéseket. @@ -4726,11 +4786,19 @@ Hiba: %@ Üdvözlőszöveg mentése? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed A mentett WebRTC ICE kiszolgálók eltávolításra kerülnek No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Mentett üzenet @@ -5152,6 +5220,14 @@ Hiba: %@ SimpleX links SimpleX hivatkozások + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -5981,6 +6057,10 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola A hangüzenetek küldése le van tiltva ebben a csoportban. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! A hangüzenetek le vannak tilva! @@ -6059,6 +6139,14 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. Titkosított fájlokkal és médiatartalommal. @@ -6540,6 +6628,10 @@ A SimpleX kiszolgálók nem látjhatják profilját. admin member role + + admins + feature role + agreeing encryption for %@… titkosítás jóváhagyása %@ számára… @@ -6550,6 +6642,10 @@ A SimpleX kiszolgálók nem látjhatják profilját. titkosítás elfogadása… chat item text + + all members + feature role + always mindig @@ -6880,6 +6976,10 @@ A SimpleX kiszolgálók nem látjhatják profilját. esemény történt No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted a csoport törölve @@ -7087,6 +7187,10 @@ A SimpleX kiszolgálók nem látjhatják profilját. tulajdonos member role + + owners + feature role + peer-to-peer ponttól-pontig @@ -7136,6 +7240,14 @@ A SimpleX kiszolgálók nem látjhatják profilját. eltávolítottak rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec mp @@ -7275,6 +7387,10 @@ A SimpleX kiszolgálók nem látjhatják profilját. igen pref value + + you + No comment provided by engineer. + you are invited to group meghívást kapott a csoportba 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 34d39c405d..50a049d13b 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -743,6 +743,10 @@ Permetti di eliminare irreversibilmente i messaggi inviati. (24 ore) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Consenti l'invio di file e contenuti multimediali. @@ -1083,6 +1087,10 @@ Impossibile ricevere il file No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Cambia @@ -2078,6 +2086,10 @@ Non è reversibile! Esegui downgrade e apri chat No comment provided by engineer. + + Download + chat item action + Download failed Scaricamento fallito @@ -2188,6 +2200,10 @@ Non è reversibile! Attiva il codice di autodistruzione set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Crittografare @@ -2713,6 +2729,10 @@ Non è reversibile! File e contenuti multimediali sono vietati in questo gruppo. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! File e contenuti multimediali vietati! @@ -2778,6 +2798,18 @@ Non è reversibile! Per console No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Desktop trovato @@ -2888,6 +2920,10 @@ Non è reversibile! I membri del gruppo possono eliminare irreversibilmente i messaggi inviati. (24 ore) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. I membri del gruppo possono inviare messaggi diretti. @@ -3753,6 +3789,10 @@ Questo è il tuo link per il gruppo %@! Rete e server No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Impostazioni di rete @@ -3863,6 +3903,10 @@ Questo è il tuo link per il gruppo %@! Nessuna cronologia No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Nessuna autorizzazione per registrare messaggi vocali @@ -4077,6 +4121,10 @@ Questo è il tuo link per il gruppo %@! O mostra questo codice No comment provided by engineer. + + Other + No comment provided by engineer. + PING count Conteggio PING @@ -4339,6 +4387,10 @@ Errore: %@ Proibisci le reazioni ai messaggi. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Proibisci l'invio di messaggi diretti ai membri. @@ -4469,6 +4521,10 @@ Errore: %@ L'indirizzo di ricezione verrà cambiato in un server diverso. La modifica dell'indirizzo verrà completata dopo che il mittente sarà in linea. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. La ricezione del file verrà interrotta. @@ -4484,6 +4540,10 @@ Errore: %@ Cronologia recente e [bot della directory](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) migliorato. No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. I destinatari vedono gli aggiornamenti mentre li digiti. @@ -4784,11 +4844,19 @@ Errore: %@ Salvare il messaggio di benvenuto? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed I server WebRTC ICE salvati verranno rimossi No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Messaggio salvato @@ -5212,6 +5280,14 @@ Errore: %@ SimpleX links Link di SimpleX + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e I messaggi vocali sono vietati in questo gruppo. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Messaggi vocali vietati! @@ -6130,6 +6210,14 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Quando condividi un profilo in incognito con qualcuno, questo profilo verrà utilizzato per i gruppi a cui ti invitano. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. Con file e multimediali criptati. @@ -6613,6 +6701,10 @@ I server di SimpleX non possono vedere il tuo profilo. amministratore member role + + admins + feature role + agreeing encryption for %@… concordando la crittografia per %@… @@ -6623,6 +6715,10 @@ I server di SimpleX non possono vedere il tuo profilo. concordando la crittografia… chat item text + + all members + feature role + always sempre @@ -6953,6 +7049,10 @@ I server di SimpleX non possono vedere il tuo profilo. evento accaduto No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted gruppo eliminato @@ -7160,6 +7260,10 @@ I server di SimpleX non possono vedere il tuo profilo. proprietario member role + + owners + feature role + peer-to-peer peer-to-peer @@ -7210,6 +7314,14 @@ I server di SimpleX non possono vedere il tuo profilo. ti ha rimosso/a rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sec @@ -7350,6 +7462,10 @@ I server di SimpleX non possono vedere il tuo profilo. sì pref value + + you + No comment provided by engineer. + you are invited to group sei stato/a invitato/a al gruppo 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 e10c39bbc3..8885cab6e5 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -719,6 +719,10 @@ 送信済みメッセージの永久削除を許可する。 No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. ファイルやメディアの送信を許可する。 @@ -1042,6 +1046,10 @@ ファイル受信ができません No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change 変更 @@ -1998,6 +2006,10 @@ This cannot be undone! ダウングレードしてチャットを開く No comment provided by engineer. + + Download + chat item action + Download failed No comment provided by engineer. @@ -2103,6 +2115,10 @@ This cannot be undone! 自己破壊パスコードを有効にする set passcode view + + Enabled for + No comment provided by engineer. + Encrypt 暗号化する @@ -2608,6 +2624,10 @@ This cannot be undone! このグループでは、ファイルとメディアは禁止されています。 No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! ファイルとメディアは禁止されています! @@ -2671,6 +2691,18 @@ This cannot be undone! コンソール No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop No comment provided by engineer. @@ -2777,6 +2809,10 @@ This cannot be undone! グループのメンバーがメッセージを完全削除することができます。 No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. グループのメンバーがダイレクトメッセージを送信できます。 @@ -3605,6 +3641,10 @@ This is your link for group %@! ネットワークとサーバ No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings ネットワーク設定 @@ -3714,6 +3754,10 @@ This is your link for group %@! 履歴はありません No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message 音声メッセージを録音する権限がありません @@ -3919,6 +3963,10 @@ This is your link for group %@! Or show this code No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING回数 @@ -4169,6 +4217,10 @@ Error: %@ メッセージへのリアクションは禁止されています。 No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. メンバー間のダイレクトメッセージを使用禁止にする。 @@ -4295,6 +4347,10 @@ Error: %@ 開発中の機能です!相手のクライアントが4.2でなければ機能しません。アドレス変更が完了すると、会話にメッセージが出ます。連絡相手 (またはグループのメンバー) からメッセージを受信できないかをご確認ください。 No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. ファイルの受信を停止します。 @@ -4309,6 +4365,10 @@ Error: %@ Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. 受信者には、入力時に更新内容が表示されます。 @@ -4602,11 +4662,19 @@ Error: %@ ウェルカムメッセージを保存しますか? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed 保存されたWebRTC ICEサーバは削除されます No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message message info title @@ -5013,6 +5081,14 @@ Error: %@ SimpleX links SimpleXリンク + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -5813,6 +5889,10 @@ To connect, please ask your contact to create another connection link and check このグループでは音声メッセージが使用禁止です。 No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! 音声メッセージは使用禁止です! @@ -5890,6 +5970,14 @@ To connect, please ask your contact to create another connection link and check 連絡相手にシークレットモードのプロフィールを共有すると、その連絡相手に招待されたグループでも同じプロフィールが使われます。 No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. No comment provided by engineer. @@ -6353,6 +6441,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。 管理者 member role + + admins + feature role + agreeing encryption for %@… %@の暗号化に同意しています… @@ -6363,6 +6455,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。 暗号化に同意しています… chat item text + + all members + feature role + always 常に @@ -6685,6 +6781,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。 イベント発生 No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted グループ削除済み @@ -6891,6 +6991,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。 オーナー member role + + owners + feature role + peer-to-peer P2P @@ -6938,6 +7042,14 @@ SimpleX サーバーはあなたのプロファイルを参照できません。 あなたを除名しました rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec 秒 @@ -7070,6 +7182,10 @@ SimpleX サーバーはあなたのプロファイルを参照できません。 はい pref value + + you + No comment provided by engineer. + you are invited to group グループ招待が届きました 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 d450d228d8..ceb18f70f2 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -743,6 +743,10 @@ Sta toe om verzonden berichten onomkeerbaar te verwijderen. (24 uur) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Sta toe om bestanden en media te verzenden. @@ -1083,6 +1087,10 @@ Kan bestand niet ontvangen No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Veranderen @@ -2078,6 +2086,10 @@ Dit kan niet ongedaan gemaakt worden! Downgraden en chat openen No comment provided by engineer. + + Download + chat item action + Download failed Download mislukt @@ -2188,6 +2200,10 @@ Dit kan niet ongedaan gemaakt worden! Zelfvernietigings wachtwoord inschakelen set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Versleutelen @@ -2713,6 +2729,10 @@ Dit kan niet ongedaan gemaakt worden! Bestanden en media zijn verboden in deze groep. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Bestanden en media verboden! @@ -2778,6 +2798,18 @@ Dit kan niet ongedaan gemaakt worden! Voor console No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Desktop gevonden @@ -2888,6 +2920,10 @@ Dit kan niet ongedaan gemaakt worden! Groepsleden kunnen verzonden berichten onherroepelijk verwijderen. (24 uur) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Groepsleden kunnen directe berichten sturen. @@ -3753,6 +3789,10 @@ Dit is jouw link voor groep %@! Netwerk & servers No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Netwerk instellingen @@ -3863,6 +3903,10 @@ Dit is jouw link voor groep %@! Geen geschiedenis No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Geen toestemming om spraakbericht op te nemen @@ -4077,6 +4121,10 @@ Dit is jouw link voor groep %@! Of laat deze code zien No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING count @@ -4339,6 +4387,10 @@ Fout: %@ Berichten reacties verbieden. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Verbied het sturen van directe berichten naar leden. @@ -4469,6 +4521,10 @@ Fout: %@ Het ontvangstadres wordt gewijzigd naar een andere server. Adres wijziging wordt voltooid nadat de afzender online is. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Het ontvangen van het bestand wordt gestopt. @@ -4484,6 +4540,10 @@ Fout: %@ Recente geschiedenis en verbeterde [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Ontvangers zien updates terwijl u ze typt. @@ -4784,11 +4844,19 @@ Fout: %@ Welkomst bericht opslaan? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Opgeslagen WebRTC ICE servers worden verwijderd No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Opgeslagen bericht @@ -5212,6 +5280,14 @@ Fout: %@ SimpleX links SimpleX links + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Spraak berichten zijn verboden in deze groep. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Spraak berichten verboden! @@ -6130,6 +6210,14 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Wanneer je een incognito profiel met iemand deelt, wordt dit profiel gebruikt voor de groepen waarvoor ze je uitnodigen. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. ‐Met versleutelde bestanden en media. @@ -6613,6 +6701,10 @@ SimpleX servers kunnen uw profiel niet zien. Beheerder member role + + admins + feature role + agreeing encryption for %@… versleuteling overeenkomen voor %@… @@ -6623,6 +6715,10 @@ SimpleX servers kunnen uw profiel niet zien. versleuteling overeenkomen… chat item text + + all members + feature role + always altijd @@ -6953,6 +7049,10 @@ SimpleX servers kunnen uw profiel niet zien. gebeurtenis gebeurd No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted groep verwijderd @@ -7160,6 +7260,10 @@ SimpleX servers kunnen uw profiel niet zien. Eigenaar member role + + owners + feature role + peer-to-peer peer-to-peer @@ -7210,6 +7314,14 @@ SimpleX servers kunnen uw profiel niet zien. heeft je verwijderd rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sec @@ -7350,6 +7462,10 @@ SimpleX servers kunnen uw profiel niet zien. Ja pref value + + you + No comment provided by engineer. + you are invited to group je bent uitgenodigd voor de groep 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 f4d10b0dc0..9889802177 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -743,6 +743,10 @@ Zezwól na nieodwracalne usunięcie wysłanych wiadomości. (24 godziny) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Pozwól na wysyłanie plików i mediów. @@ -1083,6 +1087,10 @@ Nie można odebrać pliku No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Zmień @@ -2078,6 +2086,10 @@ To nie może być cofnięte! Obniż wersję i otwórz czat No comment provided by engineer. + + Download + chat item action + Download failed Pobieranie nie udane @@ -2188,6 +2200,10 @@ To nie może być cofnięte! Włącz pin samodestrukcji set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Szyfruj @@ -2713,6 +2729,10 @@ To nie może być cofnięte! Pliki i media są zabronione w tej grupie. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Pliki i media zabronione! @@ -2778,6 +2798,18 @@ To nie może być cofnięte! Dla konsoli No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Znaleziono komputer @@ -2888,6 +2920,10 @@ To nie może być cofnięte! Członkowie grupy mogą nieodwracalnie usuwać wysłane wiadomości. (24 godziny) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Członkowie grupy mogą wysyłać bezpośrednie wiadomości. @@ -3753,6 +3789,10 @@ To jest twój link do grupy %@! Sieć i serwery No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Ustawienia sieci @@ -3863,6 +3903,10 @@ To jest twój link do grupy %@! Brak historii No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Brak uprawnień do nagrywania wiadomości głosowej @@ -4077,6 +4121,10 @@ To jest twój link do grupy %@! Lub pokaż ten kod No comment provided by engineer. + + Other + No comment provided by engineer. + PING count Liczba PINGÓW @@ -4339,6 +4387,10 @@ Błąd: %@ Zabroń reakcje wiadomości. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Zabroń wysyłania bezpośrednich wiadomości do członków. @@ -4469,6 +4521,10 @@ Błąd: %@ Adres odbiorczy zostanie zmieniony na inny serwer. Zmiana adresu zostanie zakończona gdy nadawca będzie online. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Odbieranie pliku zostanie przerwane. @@ -4484,6 +4540,10 @@ Błąd: %@ Ostania historia i ulepszony [bot adresowy](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Odbiorcy widzą aktualizacje podczas ich wpisywania. @@ -4784,11 +4844,19 @@ Błąd: %@ Zapisać wiadomość powitalną? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Zapisane serwery WebRTC ICE zostaną usunięte No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Zachowano wiadomość @@ -5212,6 +5280,14 @@ Błąd: %@ SimpleX links Linki SimpleX + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Wiadomości głosowe są zabronione w tej grupie. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Wiadomości głosowe zabronione! @@ -6130,6 +6210,14 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Gdy udostępnisz komuś profil incognito, będzie on używany w grupach, do których Cię zaprosi. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. Z zaszyfrowanymi plikami i multimediami. @@ -6613,6 +6701,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. administrator member role + + admins + feature role + agreeing encryption for %@… uzgadnianie szyfrowania dla %@… @@ -6623,6 +6715,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. uzgadnianie szyfrowania… chat item text + + all members + feature role + always zawsze @@ -6953,6 +7049,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. nowe wydarzenie No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted grupa usunięta @@ -7160,6 +7260,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. właściciel member role + + owners + feature role + peer-to-peer peer-to-peer @@ -7210,6 +7314,14 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. usunął cię rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sek @@ -7350,6 +7462,10 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. tak pref value + + you + No comment provided by engineer. + you are invited to group jesteś zaproszony do grupy 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 7d5f119b9d..4e86a6c249 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -743,6 +743,10 @@ Разрешить необратимо удалять отправленные сообщения. (24 часа) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Разрешить посылать файлы и медиа. @@ -1083,6 +1087,10 @@ Невозможно получить файл No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Поменять @@ -2078,6 +2086,10 @@ This cannot be undone! Откатить версию и открыть чат No comment provided by engineer. + + Download + chat item action + Download failed Ошибка загрузки @@ -2188,6 +2200,10 @@ This cannot be undone! Включить код самоуничтожения set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Зашифровать @@ -2713,6 +2729,10 @@ This cannot be undone! Файлы и медиа запрещены в этой группе. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Файлы и медиа запрещены! @@ -2778,6 +2798,18 @@ This cannot be undone! Для консоли No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Компьютер найден @@ -2888,6 +2920,10 @@ This cannot be undone! Члены группы могут необратимо удалять отправленные сообщения. (24 часа) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Члены группы могут посылать прямые сообщения. @@ -3753,6 +3789,10 @@ This is your link for group %@! Сеть & серверы No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Настройки сети @@ -3863,6 +3903,10 @@ This is your link for group %@! Нет истории No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Нет разрешения для записи голосового сообщения @@ -4077,6 +4121,10 @@ This is your link for group %@! Или покажите этот код No comment provided by engineer. + + Other + No comment provided by engineer. + PING count Количество PING @@ -4339,6 +4387,10 @@ Error: %@ Запретить реакции на сообщения. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Запретить посылать прямые сообщения членам группы. @@ -4469,6 +4521,10 @@ Error: %@ Адрес получения сообщений будет перемещён на другой сервер. Изменение адреса завершится после того как отправитель будет онлайн. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Приём файла будет прекращён. @@ -4484,6 +4540,10 @@ Error: %@ История сообщений и улучшенный [каталог групп](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Получатели видят их в то время как Вы их набираете. @@ -4784,11 +4844,19 @@ Error: %@ Сохранить приветственное сообщение? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Сохраненные WebRTC ICE серверы будут удалены No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Сохраненное сообщение @@ -5212,6 +5280,14 @@ Error: %@ SimpleX links SimpleX ссылки + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ To connect, please ask your contact to create another connection link and check Голосовые сообщения запрещены в этой группе. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Голосовые сообщения запрещены! @@ -6130,6 +6210,14 @@ To connect, please ask your contact to create another connection link and check Когда Вы соединены с контактом инкогнито, тот же самый инкогнито профиль будет использоваться для групп с этим контактом. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. С зашифрованными файлами и медиа. @@ -6613,6 +6701,10 @@ SimpleX серверы не могут получить доступ к Ваше админ member role + + admins + feature role + agreeing encryption for %@… шифрование согласовывается для %@… @@ -6623,6 +6715,10 @@ SimpleX серверы не могут получить доступ к Ваше шифрование согласовывается… chat item text + + all members + feature role + always всегда @@ -6953,6 +7049,10 @@ SimpleX серверы не могут получить доступ к Ваше событие произошло No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted группа удалена @@ -7160,6 +7260,10 @@ SimpleX серверы не могут получить доступ к Ваше владелец member role + + owners + feature role + peer-to-peer peer-to-peer @@ -7210,6 +7314,14 @@ SimpleX серверы не могут получить доступ к Ваше удалил(а) Вас из группы rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec сек @@ -7350,6 +7462,10 @@ SimpleX серверы не могут получить доступ к Ваше да pref value + + you + No comment provided by engineer. + you are invited to group Вы приглашены в группу 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 e1b0e4d3e4..94f949736f 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -707,6 +707,10 @@ อนุญาตให้ลบข้อความที่ส่งไปแล้วอย่างถาวร No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. อนุญาตให้ส่งไฟล์และสื่อ @@ -1028,6 +1032,10 @@ ไม่สามารถรับไฟล์ได้ No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change เปลี่ยน @@ -1979,6 +1987,10 @@ This cannot be undone! ปรับลดรุ่นและเปิดแชท No comment provided by engineer. + + Download + chat item action + Download failed No comment provided by engineer. @@ -2084,6 +2096,10 @@ This cannot be undone! เปิดใช้งานรหัสผ่านแบบทําลายตัวเอง set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Encrypt @@ -2586,6 +2602,10 @@ This cannot be undone! ไฟล์และสื่อเป็นสิ่งต้องห้ามในกลุ่มนี้ No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! ไฟล์และสื่อต้องห้าม! @@ -2649,6 +2669,18 @@ This cannot be undone! สำหรับคอนโซล No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop No comment provided by engineer. @@ -2755,6 +2787,10 @@ This cannot be undone! สมาชิกกลุ่มสามารถลบข้อความที่ส่งแล้วอย่างถาวร No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. สมาชิกกลุ่มสามารถส่งข้อความโดยตรงได้ @@ -3581,6 +3617,10 @@ This is your link for group %@! เครือข่ายและเซิร์ฟเวอร์ No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings การตั้งค่าเครือข่าย @@ -3688,6 +3728,10 @@ This is your link for group %@! ไม่มีประวัติ No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message ไม่อนุญาตให้บันทึกข้อความเสียง @@ -3892,6 +3936,10 @@ This is your link for group %@! Or show this code No comment provided by engineer. + + Other + No comment provided by engineer. + PING count จํานวน PING @@ -4142,6 +4190,10 @@ Error: %@ ห้ามแสดงปฏิกิริยาต่อข้อความ No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. ห้ามส่งข้อความโดยตรงถึงสมาชิก @@ -4268,6 +4320,10 @@ Error: %@ ที่อยู่ผู้รับจะถูกเปลี่ยนเป็นเซิร์ฟเวอร์อื่น การเปลี่ยนแปลงที่อยู่จะเสร็จสมบูรณ์หลังจากที่ผู้ส่งออนไลน์ No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. การรับไฟล์จะหยุดลง @@ -4282,6 +4338,10 @@ Error: %@ Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. ผู้รับจะเห็นการอัปเดตเมื่อคุณพิมพ์ @@ -4574,11 +4634,19 @@ Error: %@ บันทึกข้อความต้อนรับ? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed เซิร์ฟเวอร์ WebRTC ICE ที่บันทึกไว้จะถูกลบออก No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message message info title @@ -4989,6 +5057,14 @@ Error: %@ SimpleX links ลิงก์ SimpleX + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -5785,6 +5861,10 @@ To connect, please ask your contact to create another connection link and check ข้อความเสียงเป็นสิ่งต้องห้ามในกลุ่มนี้ No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! ห้ามข้อความเสียง! @@ -5862,6 +5942,14 @@ To connect, please ask your contact to create another connection link and check เมื่อคุณแชร์โปรไฟล์ที่ไม่ระบุตัวตนกับใครสักคน โปรไฟล์นี้จะใช้สำหรับกลุ่มที่พวกเขาเชิญคุณ No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. No comment provided by engineer. @@ -6323,6 +6411,10 @@ SimpleX servers cannot see your profile. ผู้ดูแลระบบ member role + + admins + feature role + agreeing encryption for %@… ยอมรับ encryption สำหรับ %@… @@ -6333,6 +6425,10 @@ SimpleX servers cannot see your profile. เห็นด้วยกับการ encryption… chat item text + + all members + feature role + always เสมอ @@ -6653,6 +6749,10 @@ SimpleX servers cannot see your profile. event happened No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted ลบกลุ่มแล้ว @@ -6859,6 +6959,10 @@ SimpleX servers cannot see your profile. เจ้าของ member role + + owners + feature role + peer-to-peer เพื่อนต่อเพื่อน @@ -6906,6 +7010,14 @@ SimpleX servers cannot see your profile. ลบคุณออกแล้ว rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec วินาที @@ -7038,6 +7150,10 @@ SimpleX servers cannot see your profile. ใช่ pref value + + you + No comment provided by engineer. + you are invited to group คุณได้รับเชิญให้เข้าร่วมกลุ่ม 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 05c68ea21e..409090a439 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -743,6 +743,10 @@ Gönderilen mesajların kalıcı olarak silinmesine izin ver. (24 saat içinde) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Dosya ve medya göndermeye izin ver. @@ -1083,6 +1087,10 @@ Dosya alınamıyor No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Değiştir @@ -2078,6 +2086,10 @@ Bu geri alınamaz! Sürüm düşür ve sohbeti aç No comment provided by engineer. + + Download + chat item action + Download failed Yükleme başarısız oldu @@ -2188,6 +2200,10 @@ Bu geri alınamaz! Kendini imha şifresini etkinleştir set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Şifreleme @@ -2713,6 +2729,10 @@ Bu geri alınamaz! Dosyalar ve medya bu grupta yasaklandı. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Dosyalar ve medya yasaklandı! @@ -2778,6 +2798,18 @@ Bu geri alınamaz! Konsol için No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Bilgisayar bulundu @@ -2888,6 +2920,10 @@ Bu geri alınamaz! Grup üyeleri, gönderilen mesajları kalıcı olarak silebilir. (24 saat içinde) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Grup üyeleri doğrudan mesajlar gönderebilir. @@ -3753,6 +3789,10 @@ Bu senin grup için bağlantın %@! Ağ & sunucular No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Ağ ayarları @@ -3863,6 +3903,10 @@ Bu senin grup için bağlantın %@! Geçmiş yok No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Sesli mesaj kaydetmek için izin yok @@ -4077,6 +4121,10 @@ Bu senin grup için bağlantın %@! Veya bu kodu göster No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING sayısı @@ -4339,6 +4387,10 @@ Hata: %@ Mesajlarda tepkileri yasakla. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Geri dönülmez mesaj silme işlemini yasakla. @@ -4469,6 +4521,10 @@ Hata: %@ Alıcı adresi farklı bir sunucuya değiştirilecektir. Gönderici çevrimiçi olduktan sonra adres değişikliği tamamlanacaktır. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Dosya alımı durdurulacaktır. @@ -4484,6 +4540,10 @@ Hata: %@ Yakın geçmiş ve geliştirilmiş [dizin botu](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex. im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Alıcılar yazdığına göre güncellemeleri görecektir. @@ -4784,11 +4844,19 @@ Hata: %@ Hoşgeldin mesajı kaydedilsin mi? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Kaydedilmiş WebRTC ICE sunucuları silinecek No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Kaydedilmiş mesaj @@ -5212,6 +5280,14 @@ Hata: %@ SimpleX links SimpleX bağlantıları + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Bu grupta sesli mesajlar yasaktır. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Sesli mesajlar yasaktır! @@ -6130,6 +6210,14 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Biriyle gizli bir profil paylaştığınızda, bu profil sizi davet ettikleri gruplar için kullanılacaktır. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. Şifrelenmiş dosyalar ve medya ile birlikte. @@ -6613,6 +6701,10 @@ SimpleX sunucuları profilinizi göremez. yönetici member role + + admins + feature role + agreeing encryption for %@… %@ için şifreleme kabul ediliyor… @@ -6623,6 +6715,10 @@ SimpleX sunucuları profilinizi göremez. şifreleme kabul ediliyor… chat item text + + all members + feature role + always her zaman @@ -6953,6 +7049,10 @@ SimpleX sunucuları profilinizi göremez. etkinlik yaşandı No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted grup silindi @@ -7160,6 +7260,10 @@ SimpleX sunucuları profilinizi göremez. sahip member role + + owners + feature role + peer-to-peer eşler arası @@ -7210,6 +7314,14 @@ SimpleX sunucuları profilinizi göremez. sen kaldırıldın rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec sn @@ -7350,6 +7462,10 @@ SimpleX sunucuları profilinizi göremez. evet pref value + + you + No comment provided by engineer. + you are invited to group gruba davet edildiniz 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 29edc0b9ac..3290102725 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -743,6 +743,10 @@ Дозволяє безповоротно видаляти надіслані повідомлення. (24 години) No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. Дозволяє надсилати файли та медіа. @@ -1083,6 +1087,10 @@ Не вдається отримати файл No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change Зміна @@ -2078,6 +2086,10 @@ This cannot be undone! Пониження та відкритий чат No comment provided by engineer. + + Download + chat item action + Download failed Не вдалося завантажити @@ -2188,6 +2200,10 @@ This cannot be undone! Увімкнути пароль самознищення set passcode view + + Enabled for + No comment provided by engineer. + Encrypt Зашифрувати @@ -2713,6 +2729,10 @@ This cannot be undone! Файли та медіа в цій групі заборонені. No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! Файли та медіа заборонені! @@ -2778,6 +2798,18 @@ This cannot be undone! Для консолі No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop Знайдено робочий стіл @@ -2888,6 +2920,10 @@ This cannot be undone! Учасники групи можуть безповоротно видаляти надіслані повідомлення. (24 години) No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. Учасники групи можуть надсилати прямі повідомлення. @@ -3753,6 +3789,10 @@ This is your link for group %@! Мережа та сервери No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings Налаштування мережі @@ -3863,6 +3903,10 @@ This is your link for group %@! Немає історії No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message Немає дозволу на запис голосового повідомлення @@ -4077,6 +4121,10 @@ This is your link for group %@! Або покажіть цей код No comment provided by engineer. + + Other + No comment provided by engineer. + PING count Кількість PING @@ -4339,6 +4387,10 @@ Error: %@ Заборонити реакції на повідомлення. No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. Заборонити надсилати прямі повідомлення учасникам. @@ -4469,6 +4521,10 @@ Error: %@ Адреса отримувача буде змінена на інший сервер. Зміна адреси завершиться після того, як відправник з'явиться в мережі. No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. Отримання файлу буде зупинено. @@ -4484,6 +4540,10 @@ Error: %@ Нещодавня історія та покращення [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. Одержувачі бачать оновлення, коли ви їх вводите. @@ -4784,11 +4844,19 @@ Error: %@ Зберегти вітальне повідомлення? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed Збережені сервери WebRTC ICE буде видалено No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message Збережене повідомлення @@ -5212,6 +5280,14 @@ Error: %@ SimpleX links Посилання SimpleX + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -6050,6 +6126,10 @@ To connect, please ask your contact to create another connection link and check Голосові повідомлення в цій групі заборонені. No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! Голосові повідомлення заборонені! @@ -6130,6 +6210,14 @@ To connect, please ask your contact to create another connection link and check Коли ви ділитеся з кимось своїм профілем інкогніто, цей профіль буде використовуватися для груп, до яких вас запрошують. No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. З зашифрованими файлами та медіа. @@ -6613,6 +6701,10 @@ SimpleX servers cannot see your profile. адмін member role + + admins + feature role + agreeing encryption for %@… узгодження шифрування для %@… @@ -6623,6 +6715,10 @@ SimpleX servers cannot see your profile. узгодження шифрування… chat item text + + all members + feature role + always завжди @@ -6953,6 +7049,10 @@ SimpleX servers cannot see your profile. відбулася подія No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted групу видалено @@ -7160,6 +7260,10 @@ SimpleX servers cannot see your profile. власник member role + + owners + feature role + peer-to-peer одноранговий @@ -7210,6 +7314,14 @@ SimpleX servers cannot see your profile. прибрали вас rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec сек @@ -7350,6 +7462,10 @@ SimpleX servers cannot see your profile. так pref value + + you + No comment provided by engineer. + you are invited to group вас запрошують до групи 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 3bf27bff9c..fe58fb3278 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 @@ -728,6 +728,10 @@ 允许不可撤回地删除已发送消息。 No comment provided by engineer. + + Allow to send SimpleX links. + No comment provided by engineer. + Allow to send files and media. 允许发送文件和媒体。 @@ -1063,6 +1067,10 @@ 无法接收文件 No comment provided by engineer. + + Cellular + No comment provided by engineer. + Change 更改 @@ -2039,6 +2047,10 @@ This cannot be undone! 降级并打开聊天 No comment provided by engineer. + + Download + chat item action + Download failed No comment provided by engineer. @@ -2145,6 +2157,10 @@ This cannot be undone! 启用自毁密码 set passcode view + + Enabled for + No comment provided by engineer. + Encrypt 加密 @@ -2658,6 +2674,10 @@ This cannot be undone! 此群组中禁止文件和媒体。 No comment provided by engineer. + + Files and media not allowed + No comment provided by engineer. + Files and media prohibited! 禁止文件和媒体! @@ -2721,6 +2741,18 @@ This cannot be undone! 用于控制台 No comment provided by engineer. + + Forward + chat item action + + + Forwarded + No comment provided by engineer. + + + Forwarded from + No comment provided by engineer. + Found desktop 找到了桌面 @@ -2830,6 +2862,10 @@ This cannot be undone! 群组成员可以不可撤回地删除已发送的消息。 No comment provided by engineer. + + Group members can send SimpleX links. + No comment provided by engineer. + Group members can send direct messages. 群组成员可以私信。 @@ -3673,6 +3709,10 @@ This is your link for group %@! 网络和服务器 No comment provided by engineer. + + Network connection + No comment provided by engineer. + Network settings 网络设置 @@ -3783,6 +3823,10 @@ This is your link for group %@! 无历史记录 No comment provided by engineer. + + No network connection + No comment provided by engineer. + No permission to record voice message 没有录制语音消息的权限 @@ -3993,6 +4037,10 @@ This is your link for group %@! 或者显示此码 No comment provided by engineer. + + Other + No comment provided by engineer. + PING count PING 次数 @@ -4248,6 +4296,10 @@ Error: %@ 禁止消息回应。 No comment provided by engineer. + + Prohibit sending SimpleX links. + No comment provided by engineer. + Prohibit sending direct messages to members. 禁止向成员发送私信。 @@ -4376,6 +4428,10 @@ Error: %@ 接收地址将变更到不同的服务器。地址更改将在发件人上线后完成。 No comment provided by engineer. + + Receiving concurrency + No comment provided by engineer. + Receiving file will be stopped. 即将停止接收文件。 @@ -4390,6 +4446,10 @@ Error: %@ Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. + + Recipient(s) can't see who this message is from. + No comment provided by engineer. + Recipients see updates as you type them. 对方会在您键入时看到更新。 @@ -4686,11 +4746,19 @@ Error: %@ 保存欢迎信息? No comment provided by engineer. + + Saved + No comment provided by engineer. + Saved WebRTC ICE servers will be removed 已保存的WebRTC ICE服务器将被删除 No comment provided by engineer. + + Saved from + No comment provided by engineer. + Saved message 已保存的消息 @@ -5112,6 +5180,14 @@ Error: %@ SimpleX links SimpleX 链接 + chat feature + + + SimpleX links are prohibited in this group. + No comment provided by engineer. + + + SimpleX links not allowed No comment provided by engineer. @@ -5939,6 +6015,10 @@ To connect, please ask your contact to create another connection link and check 语音信息在该群组中被禁用。 No comment provided by engineer. + + Voice messages not allowed + No comment provided by engineer. + Voice messages prohibited! 语音消息禁止发送! @@ -6016,6 +6096,14 @@ To connect, please ask your contact to create another connection link and check 当您与某人共享隐身聊天资料时,该资料将用于他们邀请您加入的群组。 No comment provided by engineer. + + WiFi + No comment provided by engineer. + + + Wired ethernet + No comment provided by engineer. + With encrypted files and media. 加密的文件和媒体。 @@ -6487,6 +6575,10 @@ SimpleX 服务器无法看到您的资料。 管理员 member role + + admins + feature role + agreeing encryption for %@… 正在协商将加密应用于 %@… @@ -6497,6 +6589,10 @@ SimpleX 服务器无法看到您的资料。 同意加密… chat item text + + all members + feature role + always 始终 @@ -6825,6 +6921,10 @@ SimpleX 服务器无法看到您的资料。 发生的事 No comment provided by engineer. + + forwarded + No comment provided by engineer. + group deleted 群组已删除 @@ -7031,6 +7131,10 @@ SimpleX 服务器无法看到您的资料。 群主 member role + + owners + feature role + peer-to-peer 点对点 @@ -7080,6 +7184,14 @@ SimpleX 服务器无法看到您的资料。 已将您移除 rcv group event chat item + + saved + No comment provided by engineer. + + + saved from %@ + No comment provided by engineer. + sec 秒 @@ -7217,6 +7329,10 @@ SimpleX 服务器无法看到您的资料。 是 pref value + + you + No comment provided by engineer. + you are invited to group 您被邀请加入群组 From 7cec79e79be7accd303cf08bc39c23374b387bb2 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sat, 20 Apr 2024 22:07:04 +0100 Subject: [PATCH 058/147] 5.7-beta.1: ios 208, android 197, desktop 38 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 12 ++++++------ apps/multiplatform/gradle.properties | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 1770d522c2..8b436ee99c 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -1544,7 +1544,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 207; + CURRENT_PROJECT_VERSION = 208; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1593,7 +1593,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 207; + CURRENT_PROJECT_VERSION = 208; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1679,7 +1679,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 207; + CURRENT_PROJECT_VERSION = 208; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -1716,7 +1716,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 207; + CURRENT_PROJECT_VERSION = 208; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -1753,7 +1753,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 207; + CURRENT_PROJECT_VERSION = 208; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1804,7 +1804,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 207; + CURRENT_PROJECT_VERSION = 208; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index 74629c8b9b..41e700bcea 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -26,11 +26,11 @@ android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=5.7-beta.0 -android.version_code=196 +android.version_name=5.7-beta.1 +android.version_code=197 -desktop.version_name=5.7-beta.0 -desktop.version_code=37 +desktop.version_name=5.7-beta.1 +desktop.version_code=38 kotlin.version=1.9.23 gradle.plugin.version=8.2.0 From 8e3a713a49ac8769bcb543a9aa13002f9e393532 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 21 Apr 2024 10:57:54 +0100 Subject: [PATCH 059/147] ui: limit max size of events, sort members by role (#4058) --- apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift | 1 + apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift | 2 +- .../chat/simplex/common/views/chat/group/GroupChatInfoView.kt | 2 +- .../kotlin/chat/simplex/common/views/chat/item/CIEventView.kt | 2 +- 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift index b6be3f837e..1866645316 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift @@ -17,6 +17,7 @@ struct CIEventView: View { .padding(.horizontal, 6) .padding(.vertical, 4) .textSelection(.disabled) + .lineLimit(3) } } diff --git a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift index 88b36077b4..c6509c9502 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift @@ -62,7 +62,7 @@ struct GroupChatInfoView: View { NavigationView { let members = chatModel.groupMembers .filter { m in let status = m.wrapped.memberStatus; return status != .memLeft && status != .memRemoved } - .sorted { $0.displayName.lowercased() < $1.displayName.lowercased() } + .sorted { $0.wrapped.memberRole > $1.wrapped.memberRole } List { groupInfoHeader() diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt index bfd7b5d52f..c52dd941fd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/group/GroupChatInfoView.kt @@ -62,7 +62,7 @@ fun GroupChatInfoView(chatModel: ChatModel, rhId: Long?, chatId: String, groupLi }, members = chatModel.groupMembers .filter { it.memberStatus != GroupMemberStatus.MemLeft && it.memberStatus != GroupMemberStatus.MemRemoved } - .sortedBy { it.displayName.lowercase() }, + .sortedByDescending { it.memberRole }, developerTools, groupLink, addMembers = { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt index 1e20a372ec..17a45fd3bd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt @@ -12,7 +12,7 @@ import chat.simplex.common.ui.theme.* @Composable fun CIEventView(text: AnnotatedString) { - Text(text, Modifier.padding(horizontal = 6.dp, vertical = 6.dp), style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp)) + Text(text, Modifier.padding(horizontal = 6.dp, vertical = 6.dp), style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp), maxLines = 3) } @Preview/*( uiMode = Configuration.UI_MODE_NIGHT_YES, From 50d3a29715059037a9b9bb3d68865c90a5ce48be Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 21 Apr 2024 11:10:07 +0100 Subject: [PATCH 060/147] website: translations (#4057) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (French) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fr/ * Translated using Weblate (German) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/ * Translated using Weblate (Dutch) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/nl/ * Translated using Weblate (Arabic) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/ * Translated using Weblate (Italian) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/ * Translated using Weblate (Spanish) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/es/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/ * Translated using Weblate (Japanese) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ja/ * Translated using Weblate (Russian) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ru/ * Translated using Weblate (French) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/fr/ * Translated using Weblate (German) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/ * Translated using Weblate (Dutch) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/nl/ * Translated using Weblate (Arabic) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/ * Translated using Weblate (Italian) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/ * Translated using Weblate (Spanish) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/es/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/ * Translated using Weblate (Japanese) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ja/ * Translated using Weblate (Russian) Currently translated at 100.0% (255 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ru/ * Translated using Weblate (Bulgarian) Currently translated at 13.7% (35 of 255 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/bg/ --------- Co-authored-by: khalidbelk Co-authored-by: mlanp Co-authored-by: M1K4 Co-authored-by: jonnysemon Co-authored-by: Random Co-authored-by: 大王叫我来巡山 Co-authored-by: Miyu Sakatsuki Co-authored-by: Alex Co-authored-by: Kingpin --- website/langs/ar.json | 3 ++- website/langs/bg.json | 33 ++++++++++++++++++++++++++++++++- website/langs/de.json | 3 ++- website/langs/es.json | 3 ++- website/langs/fr.json | 3 ++- website/langs/it.json | 3 ++- website/langs/ja.json | 3 ++- website/langs/nl.json | 3 ++- website/langs/ru.json | 3 ++- website/langs/zh_Hans.json | 3 ++- 10 files changed, 50 insertions(+), 10 deletions(-) diff --git a/website/langs/ar.json b/website/langs/ar.json index 3b74ac2f3d..59b5002bc4 100644 --- a/website/langs/ar.json +++ b/website/langs/ar.json @@ -252,5 +252,6 @@ "hero-overlay-card-3-p-1": "
    Trail of Bits هي شركة رائدة في مجال الاستشارات الأمنية والتكنولوجية، ومن بين عملائها شركات التكنولوجيا الكبرى والوكالات الحكومية ومشاريع blockchain الكبرى.", "docs-dropdown-9": "التنزيلات", "please-enable-javascript": "الرجاء تفعيل جافا سكريبت (JavaScript) لرؤية رمز QR.", - "please-use-link-in-mobile-app": "يُرجى استخدام الرابط في تطبيق الجوال" + "please-use-link-in-mobile-app": "يُرجى استخدام الرابط في تطبيق الجوال", + "docs-dropdown-10": "الشفافية" } diff --git a/website/langs/bg.json b/website/langs/bg.json index b84d369678..b70a6882e4 100644 --- a/website/langs/bg.json +++ b/website/langs/bg.json @@ -2,5 +2,36 @@ "developers": "Разработчици", "glossary": "Речник", "yes": "Да", - "no": "Не" + "no": "Не", + "home": "Дом", + "reference": "Справка", + "blog": "Блог", + "features": "Характеристика", + "why-simplex": "Защо SimpleX", + "simplex-privacy": "Поверителност на SimpleX", + "simplex-network": "SimpleX мрежа", + "simplex-explained-tab-1-text": "1. Какъв опит като потребител", + "simplex-explained-tab-2-text": "2. Как работи", + "simplex-explained-tab-3-text": "3. Какво виждат сървърите", + "simplex-explained-tab-1-p-1": "Можете да създавате контакти и групи и да провеждате двупосочни разговори, както във всеки друго чат приложение.", + "simplex-explained-tab-2-p-1": "За всяка връзка използвате две отделни опашки за съобщения, за да изпращате и получавате съобщения през различни сървъри.", + "simplex-explained": "Обяснението на SimpleX", + "simplex-explained-tab-2-p-2": "Сървърите предават съобщения само еднопосочно, без да имат картина от разговора или връзките на потребителя.", + "chat-bot-example": "Пример за чат бот", + "smp-protocol": "СМП Протокол", + "chat-protocol": "Чат протокол", + "donate": "Дарете", + "copyright-label": "© 2020-2023 SimpleX | Проект с отворен код", + "simplex-chat-protocol": "SimpleX Чат протокол", + "terminal-cli": "Системна конзола", + "terms-and-privacy-policy": "Условия и политика за поверителност", + "hero-header": "Предефинирана поверителност", + "hero-overlay-1-textlink": "Защо потребителските идентификатори са лоши за поверителността?", + "hero-overlay-2-textlink": "Как работи SimpleX?", + "hero-2-header": "Осъществяване на частна връзка", + "simplex-explained-tab-1-p-2": "Как може да работи с еднопосочни опашки и без идентификатори на потребителски профили?", + "simplex-explained-tab-3-p-2": "Потребителите могат допълнително да подобрят поверителността на метаданните, като използват Tor за достъп до сървъри, предотвратявайки корелация по IP адрес.", + "hero-2-header-desc": "Видеото показва как се свързвате с приятеля си чрез неговия еднократен QR-код лично или чрез видео връзка. Можете също да се свържете, като споделите покана за връзка.", + "hero-overlay-3-textlink": "Оценка на сигурността", + "hero-overlay-1-title": "Как работи SimpleX?" } diff --git a/website/langs/de.json b/website/langs/de.json index 7b37869429..aec3b7c2cc 100644 --- a/website/langs/de.json +++ b/website/langs/de.json @@ -252,5 +252,6 @@ "hero-overlay-card-3-p-1": "Trail of Bits ist eine führende Security- und Technologie-Unternehmensberatung, deren Kunden aus den Bereichen Big-Tech, Regierungsbehörden und großen Blockchain-Projekten stammen.", "docs-dropdown-9": "Downloads", "please-enable-javascript": "Bitte aktivieren Sie JavaScript, um den QR-Code zu sehen.", - "please-use-link-in-mobile-app": "Bitte nutzen Sie den Link in der Mobiltelefon-App" + "please-use-link-in-mobile-app": "Bitte nutzen Sie den Link in der Mobiltelefon-App", + "docs-dropdown-10": "Transparent" } diff --git a/website/langs/es.json b/website/langs/es.json index d235a030fb..d8f9c29c26 100644 --- a/website/langs/es.json +++ b/website/langs/es.json @@ -252,5 +252,6 @@ "hero-overlay-card-3-p-1": "Trail of Bits es una consultora de seguridad y tecnología líder cuyos clientes incluyen grandes tecnológicas, agencias gubernamentales e importantes proyectos de blockchain.", "docs-dropdown-9": "Descargas", "please-enable-javascript": "Habilita JavaScript para ver el código QR.", - "please-use-link-in-mobile-app": "Usa el enlace en la apliación móvil," + "please-use-link-in-mobile-app": "Usa el enlace en la apliación móvil,", + "docs-dropdown-10": "Transparencia" } diff --git a/website/langs/fr.json b/website/langs/fr.json index 580f4134cd..fc898ecd4b 100644 --- a/website/langs/fr.json +++ b/website/langs/fr.json @@ -253,5 +253,6 @@ "hero-overlay-card-3-p-1": "Trail of Bits est un cabinet leader dans le secteur de la sécurité et des technologies qui compte parmi ses clients des grandes entreprises de la tech, des agences gouvernementales et d'importants projets de blockchain.", "docs-dropdown-9": "Téléchargements", "please-enable-javascript": "Veuillez activer JavaScript pour voir le code QR.", - "please-use-link-in-mobile-app": "Veuillez utiliser le lien dans l'application mobile" + "please-use-link-in-mobile-app": "Veuillez utiliser le lien dans l'application mobile", + "docs-dropdown-10": "Transparence" } diff --git a/website/langs/it.json b/website/langs/it.json index 388f461374..e5ad1490c1 100644 --- a/website/langs/it.json +++ b/website/langs/it.json @@ -252,5 +252,6 @@ "hero-overlay-card-3-p-1": "Trail of Bits è leader nella consulenza di sicurezza e tecnologia, i cui clienti includono grandi aziende, agenzie governative e importanti progetti di blockchain.", "docs-dropdown-9": "Download", "please-enable-javascript": "Attiva JavaScript per vedere il codice QR.", - "please-use-link-in-mobile-app": "Usa il link nell'app mobile" + "please-use-link-in-mobile-app": "Usa il link nell'app mobile", + "docs-dropdown-10": "Trasparenza" } diff --git a/website/langs/ja.json b/website/langs/ja.json index 8fa5cac1f9..0519766694 100644 --- a/website/langs/ja.json +++ b/website/langs/ja.json @@ -252,5 +252,6 @@ "hero-overlay-card-3-p-2": "Trail of Bitsは2022年11月にSimpleXプラットフォームの暗号とネットワークのコンポーネントを検証しました。", "docs-dropdown-9": "ダウンロード", "please-enable-javascript": "QRコードを表示するためにJavaScriptを有効にしてください。", - "please-use-link-in-mobile-app": "このリンクをモバイルアプリで使用してください" + "please-use-link-in-mobile-app": "このリンクをモバイルアプリで使用してください", + "docs-dropdown-10": "透明性" } diff --git a/website/langs/nl.json b/website/langs/nl.json index 847baf4c3a..9eb119c525 100644 --- a/website/langs/nl.json +++ b/website/langs/nl.json @@ -252,5 +252,6 @@ "hero-overlay-card-3-p-1": "Trail of Bits is een toonaangevend beveiligings- en technologieadviesbureau met klanten onder meer grote technologiebedrijven, overheidsinstanties en grote blockchain-projecten.", "docs-dropdown-9": "Downloads", "please-enable-javascript": "Schakel JavaScript in om de QR-code te zien.", - "please-use-link-in-mobile-app": "Gebruik de link in de mobiele app" + "please-use-link-in-mobile-app": "Gebruik de link in de mobiele app", + "docs-dropdown-10": "Transparantie" } diff --git a/website/langs/ru.json b/website/langs/ru.json index 1629aafe54..cf56f1dfd4 100644 --- a/website/langs/ru.json +++ b/website/langs/ru.json @@ -252,5 +252,6 @@ "f-droid-page-f-droid-org-repo-section-text": "Приложение SimpleX Chat от разработчиков и от репозитория F-Droid.org имеют разные ключи подписи. Если вы хотите сменить одно на другое, вам сначала нужно будет экспортировать базу данных и только потом скачать другое приложение.", "simplex-private-5-title": "Многоуровневое
    Заполнения содержимого", "please-use-link-in-mobile-app": "Пожалуйста, воспользуйтесь ссылкой в мобильном приложении", - "please-enable-javascript": "Пожалуйста, включите JavaScript, чтобы увидеть QR-код." + "please-enable-javascript": "Пожалуйста, включите JavaScript, чтобы увидеть QR-код.", + "docs-dropdown-10": "Прозрачность" } diff --git a/website/langs/zh_Hans.json b/website/langs/zh_Hans.json index ded7c7e19b..4009a05ac9 100644 --- a/website/langs/zh_Hans.json +++ b/website/langs/zh_Hans.json @@ -252,5 +252,6 @@ "hero-overlay-card-3-p-1": "Trail of Bits 是一家领先的安全和技术咨询企业,其客户包括大型科技公司、政府机构和重要的区块链项目。", "docs-dropdown-9": "下载", "please-use-link-in-mobile-app": "请使用移动应用程序中的链接", - "please-enable-javascript": "请启用 JavaScript 以查看二维码。" + "please-enable-javascript": "请启用 JavaScript 以查看二维码。", + "docs-dropdown-10": "透明度" } From d29886dbd219e5d836cca08f87098fba26f9497d Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 21 Apr 2024 20:16:08 +0100 Subject: [PATCH 061/147] ui: translations (#4056) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (French) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/ * Translated using Weblate (Spanish) Currently translated at 99.8% (1693 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 95.0% (1405 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (French) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Japanese) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Japanese) Currently translated at 82.4% (1218 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/ * Translated using Weblate (Japanese) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Turkish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Portuguese) Currently translated at 8.0% (119 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (German) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Italian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ * Translated using Weblate (Portuguese) Currently translated at 10.5% (156 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Vietnamese) Currently translated at 6.3% (108 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/ * Translated using Weblate (Portuguese) Currently translated at 10.6% (157 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (French) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/ * Translated using Weblate (Spanish) Currently translated at 99.8% (1693 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 95.0% (1405 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (French) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Japanese) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Japanese) Currently translated at 82.4% (1218 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/ * Translated using Weblate (Japanese) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Turkish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Portuguese) Currently translated at 8.0% (119 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (German) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Italian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ * Translated using Weblate (Portuguese) Currently translated at 10.5% (156 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Vietnamese) Currently translated at 6.3% (108 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/ * Translated using Weblate (Portuguese) Currently translated at 10.6% (157 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pt/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (German) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Arabic) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/ * Translated using Weblate (Lithuanian) Currently translated at 64.3% (1091 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Turkish) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/ * Translated using Weblate (Lithuanian) Currently translated at 72.1% (1223 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Arabic) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/ * Translated using Weblate (Lithuanian) Currently translated at 72.4% (1228 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Polish) Currently translated at 99.9% (1695 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/ * Translated using Weblate (Lithuanian) Currently translated at 78.4% (1330 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Lithuanian) Currently translated at 100.0% (1696 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Polish) Currently translated at 99.9% (1695 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/ * Translated using Weblate (Polish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/ * Translated using Weblate (Vietnamese) Currently translated at 6.6% (113 of 1696 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1702 of 1702 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Russian) Currently translated at 100.0% (1702 of 1702 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1702 of 1702 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Chinese (Traditional)) Currently translated at 71.2% (1213 of 1702 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hant/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1702 of 1702 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Vietnamese) Currently translated at 7.2% (124 of 1702 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/ * Update translation files Updated by "Remove blank strings" hook in Weblate. Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1703 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Japanese) Currently translated at 99.6% (1697 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1703 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1703 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Italian) Currently translated at 100.0% (1703 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ * Translated using Weblate (Japanese) Currently translated at 99.9% (1702 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Arabic) Currently translated at 100.0% (1703 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1703 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1703 of 1703 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Hungarian) Currently translated at 99.8% (1712 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Japanese) Currently translated at 99.8% (1713 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Arabic) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/ * Translated using Weblate (Polish) Currently translated at 99.9% (1714 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Japanese) Currently translated at 99.8% (1713 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (French) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/ * Translated using Weblate (Italian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ * Translated using Weblate (Polish) Currently translated at 99.9% (1714 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Vietnamese) Currently translated at 7.5% (130 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/ * Translated using Weblate (Vietnamese) Currently translated at 7.8% (135 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Italian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Bulgarian) Currently translated at 99.8% (1712 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1715 of 1715 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1725 of 1725 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1725 of 1725 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1725 of 1725 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Italian) Currently translated at 100.0% (1725 of 1725 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1725 of 1725 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1725 of 1725 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1478 of 1478 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Polish) Currently translated at 99.9% (1724 of 1725 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1728 of 1728 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * process localizations * update RU translations * revert PL changes for "passphrase" --------- Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com> Co-authored-by: khalidbelk Co-authored-by: M1K4 Co-authored-by: Ghost of Sparta Co-authored-by: 大王叫我来巡山 Co-authored-by: No name Co-authored-by: Miyu Sakatsuki Co-authored-by: z0rden Co-authored-by: mlanp Co-authored-by: Andre Co-authored-by: summoner001 Co-authored-by: Random Co-authored-by: tuananh-ng <158744840+tuananh-ng@users.noreply.github.com> Co-authored-by: jonnysemon Co-authored-by: Anonimas Co-authored-by: B.O.S.S Co-authored-by: Anonimas Co-authored-by: Arturro43 Co-authored-by: Alex Co-authored-by: Hosted Weblate Co-authored-by: Kingpin --- .../de.xcloc/Localized Contents/de.xliff | 2 +- .../es.xcloc/Localized Contents/es.xliff | 138 +- .../it.xcloc/Localized Contents/it.xliff | 2 +- .../ja.xcloc/Localized Contents/ja.xliff | 12 + .../pl.xcloc/Localized Contents/pl.xliff | 24 +- .../pt.xcloc/Localized Contents/pt.xliff | 167 ++- apps/ios/bg.lproj/Localizable.strings | 2 +- apps/ios/cs.lproj/Localizable.strings | 2 +- apps/ios/de.lproj/Localizable.strings | 4 +- apps/ios/es.lproj/Localizable.strings | 138 +- apps/ios/fi.lproj/Localizable.strings | 2 +- apps/ios/fr.lproj/Localizable.strings | 2 +- apps/ios/it.lproj/Localizable.strings | 4 +- apps/ios/ja.lproj/Localizable.strings | 38 +- apps/ios/nl.lproj/Localizable.strings | 2 +- apps/ios/pl.lproj/Localizable.strings | 26 +- apps/ios/ru.lproj/Localizable.strings | 2 +- apps/ios/th.lproj/Localizable.strings | 2 +- apps/ios/tr.lproj/Localizable.strings | 2 +- apps/ios/uk.lproj/Localizable.strings | 2 +- apps/ios/zh-Hans.lproj/Localizable.strings | 2 +- .../commonMain/resources/MR/ar/strings.xml | 98 +- .../commonMain/resources/MR/bg/strings.xml | 30 + .../commonMain/resources/MR/de/strings.xml | 31 +- .../commonMain/resources/MR/es/strings.xml | 218 ++-- .../commonMain/resources/MR/fr/strings.xml | 28 + .../commonMain/resources/MR/hu/strings.xml | 298 +++-- .../commonMain/resources/MR/it/strings.xml | 38 + .../commonMain/resources/MR/ja/strings.xml | 99 +- .../commonMain/resources/MR/lt/strings.xml | 1117 ++++++++++++++++- .../commonMain/resources/MR/nl/strings.xml | 37 + .../commonMain/resources/MR/pl/strings.xml | 78 +- .../commonMain/resources/MR/ru/strings.xml | 15 + .../commonMain/resources/MR/tr/strings.xml | 11 +- .../commonMain/resources/MR/vi/strings.xml | 34 + .../resources/MR/zh-rCN/strings.xml | 38 + 36 files changed, 2183 insertions(+), 562 deletions(-) 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 29cb3ffd5c..2e3f324a90 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -6003,7 +6003,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Use new incognito profile - Nutzen Sie das neue Inkognito-Profil + Ein neues Inkognito-Profil nutzen No comment provided by engineer. 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 81f31e674f..1af077e059 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -109,7 +109,7 @@ %@ downloaded - %@ downloaded + %@ descargado No comment provided by engineer. @@ -134,7 +134,7 @@ %@ uploaded - %@ cargado + %@ subido No comment provided by engineer. @@ -354,7 +354,7 @@ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection. - **Tenga en cuenta**: usar la misma base de datos en dos dispositivos interrumpirá el descifrado de mensajes de sus conexiones, como protección de seguridad. + **Recuarda**: usar la misma base de datos en dos dispositivos hará que falle el descifrado de mensajes como protección de seguridad. No comment provided by engineer. @@ -635,7 +635,7 @@ Admins can block a member for all. - Los admins pueden bloquear un miembro por todos. + Los administradores pueden bloquear a un miembro para los demás. No comment provided by engineer. @@ -695,7 +695,7 @@ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays. - Todos sus contactos, conversaciones y archivos se cifrarán de forma segura y se subirán en fragmentos hacia puntos XFTP configurados. + Todos tus contactos, conversaciones y archivos serán cifrados, divididos y subidos de forma segura a los servidores XFTP configurados. No comment provided by engineer. @@ -829,7 +829,7 @@ App data migration - Migración de datos de la aplicación + Migrar datos de la aplicación No comment provided by engineer. @@ -874,7 +874,7 @@ Archive and upload - Archivar y transferir + Archivar y subir No comment provided by engineer. @@ -1004,7 +1004,7 @@ Blocked by admin - Bloqueado por el administrador + Bloqueado por administrador No comment provided by engineer. @@ -1174,17 +1174,17 @@ Chat is stopped - Chat está detenido + Chat está parado No comment provided by engineer. Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat. - Chat está detenido. Si estás usando esta base de datos en otro dispositivo, deberías transferirla de vuelta antes de iniciarlo. + Chat parado. Si has usado esta base de datos en otro dispositivo, debes transferirla de vuelta antes de iniciar Chat. No comment provided by engineer. Chat migrated! - Chat transferido ! + ¡Chat migrado! No comment provided by engineer. @@ -1209,7 +1209,7 @@ Choose _Migrate from another device_ on the new device and scan QR code. - Elija _Migrar desde otro dispositivo_ en el nuevo dispositivo y escanee el código QR. + En el nuevo dispositivo selecciona _Migrar desde otro dispositivo_ y escanéa el código QR. No comment provided by engineer. @@ -1284,7 +1284,7 @@ Confirm network settings - Confirmar los ajustes de red + Confirmar configuración de red No comment provided by engineer. @@ -1299,7 +1299,7 @@ Confirm that you remember database passphrase to migrate it. - Confirme que recuerda la frase secreta de la base de datos para migrarla. + Confirma que recuerdas la frase de contraseña de la base de datos para migrarla. No comment provided by engineer. @@ -1568,7 +1568,7 @@ This is your own one-time link! Creating archive link - Creando enlace de archivo + Creando enlace al archivo No comment provided by engineer. @@ -1766,7 +1766,7 @@ This is your own one-time link! Delete chat profile? - ¿Eliminar el perfil? + ¿Eliminar perfil? No comment provided by engineer. @@ -2092,7 +2092,7 @@ This cannot be undone! Download failed - Error en la descarga + Descarga fallida No comment provided by engineer. @@ -2167,7 +2167,7 @@ This cannot be undone! Enable in direct chats (BETA)! - Activar en chats directos (BETA)! + ¡Activar en chats directos (BETA)! No comment provided by engineer. @@ -2291,7 +2291,7 @@ This cannot be undone! Enter passphrase - Introducir frase de contraseña + Introduce la frase de contraseña No comment provided by engineer. @@ -2571,7 +2571,7 @@ This cannot be undone! Error stopping chat - Error al detener Chat + Error al parar Chat No comment provided by engineer. @@ -2701,12 +2701,12 @@ This cannot be undone! File will be received when your contact completes uploading it. - El archivo se recibirá cuando tu contacto termine de subirlo. + El archivo se recibirá cuando el contacto termine de subirlo. No comment provided by engineer. File will be received when your contact is online, please wait or check later! - El archivo se recibirá cuando tu contacto esté en línea, ¡por favor espera o compruébalo más tarde! + El archivo se recibirá cuando el contacto esté en línea, ¡por favor espera o compruébalo más tarde! No comment provided by engineer. @@ -2726,7 +2726,7 @@ This cannot be undone! Files and media are prohibited in this group. - No se permiten archivos y multimedia en este grupo. + Los archivos y multimedia no están permitidos en este grupo. No comment provided by engineer. @@ -2745,7 +2745,7 @@ This cannot be undone! Finalize migration - Finalizar la migración + Finalizar migración No comment provided by engineer. @@ -3061,7 +3061,7 @@ This cannot be undone! Hungarian interface - Interfaz húngara + Interfaz en húngaro No comment provided by engineer. @@ -3096,12 +3096,12 @@ This cannot be undone! Image will be received when your contact completes uploading it. - La imagen se recibirá cuando tu contacto termine de subirla. + La imagen se recibirá cuando el contacto termine de subirla. No comment provided by engineer. Image will be received when your contact is online, please wait or check later! - La imagen se recibirá cuando tu contacto esté en línea, ¡por favor espera o compruébalo más tarde! + La imagen se recibirá cuando el contacto esté en línea, ¡por favor espera o compruébalo más tarde! No comment provided by engineer. @@ -3156,7 +3156,7 @@ This cannot be undone! In order to continue, chat should be stopped. - Para continuar, el chat debe ser interrumpido. + Para continuar, Chat debe estar parado. No comment provided by engineer. @@ -3273,7 +3273,7 @@ This cannot be undone! Invalid migration confirmation - Confirmación de migración inválida + Confirmación de migración no válida No comment provided by engineer. @@ -3347,7 +3347,7 @@ This cannot be undone! 2. Message decryption failed, because you or your contact used old database backup. 3. The connection was compromised. Esto puede suceder cuando: -1. Los mensajes caducan en el cliente saliente tras 2 días o en el servidor tras 30 días. +1. Los mensajes caducan tras 2 días en el cliente saliente o tras 30 días en el servidor. 2. El descifrado ha fallado porque tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos. 3. La conexión ha sido comprometida. No comment provided by engineer. @@ -3646,7 +3646,7 @@ This is your link for group %@! Message too large - Mensaje demasiado grande + Mensaje demasiado largo No comment provided by engineer. @@ -3666,12 +3666,12 @@ This is your link for group %@! Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery. - Los mensajes, archivos y llamadas están protegidos por **cifrado de extremo a extremo** con perfecta confidencialidad, repudio y recuperación tras ataques. + Los mensajes, archivos y llamadas están protegidos mediante **cifrado de extremo a extremo** con secreto perfecto hacía adelante, repudio y recuperación tras ataque. No comment provided by engineer. Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery. - Los mensajes, archivos y llamadas están protegidos por **cifrado de extremo a extremo resistente a la computación cuántica** con perfecta confidencialidad, repudio y recuperación tras ataques. + Los mensajes, archivos y llamadas están protegidos mediante **cifrado de extremo a extremo resistente a tecnología cuántica** con secreto perfecto hacía adelante, repudio y recuperación tras ataque. No comment provided by engineer. @@ -3691,12 +3691,12 @@ This is your link for group %@! Migrate to another device - Migrar hacia otro dispositivo + Migrar a otro dispositivo No comment provided by engineer. Migrate to another device via QR code. - Migrar hacia otro dispositivo mediante código QR. + Migrar a otro dispositivo mediante código QR. No comment provided by engineer. @@ -4083,7 +4083,7 @@ This is your link for group %@! Open migration to another device - Abrir la migración hacia otro dispositivo + Abrir menú migración a otro dispositivo authentication reason @@ -4113,7 +4113,7 @@ This is your link for group %@! Or securely share this file link - O comparta de forma segura el enlace de este archivo + O comparte de forma segura este enlace al archivo No comment provided by engineer. @@ -4232,7 +4232,7 @@ This is your link for group %@! Please confirm that network settings are correct for this device. - Por favor confirme que la configuración de red es correcta para este dispositivo. + Por favor, confirma que la configuración de red es correcta para este dispositivo. No comment provided by engineer. @@ -4294,7 +4294,7 @@ Error: %@ Post-quantum E2EE - E2EE postcuántica + E2EE post cuántica No comment provided by engineer. @@ -4339,7 +4339,7 @@ Error: %@ Profile and server connections - Perfil y conexiones de servidor + Datos del perfil y conexiones No comment provided by engineer. @@ -4443,7 +4443,7 @@ Error: %@ Quantum resistant encryption - Cifrado resistente a la tecnología cuántica + Cifrado resistente a tecnología cuántica No comment provided by engineer. @@ -4656,7 +4656,7 @@ Error: %@ Repeat upload - Repetir la carga + Repetir subida No comment provided by engineer. @@ -4949,7 +4949,7 @@ Error: %@ Send a live message - it will update for the recipient(s) as you type it - Envía un mensaje en vivo: se actualizará para el(los) destinatario(s) a medida que se escribe + Envía un mensaje en vivo: se actualizará para el (los) destinatario(s) a medida que se escribe No comment provided by engineer. @@ -5342,32 +5342,32 @@ Error: %@ Stop - Detener + Parar No comment provided by engineer. Stop SimpleX - Detener SimpleX + Parar SimpleX authentication reason Stop chat - Detener el chat + Parar chat No comment provided by engineer. Stop chat to enable database actions - Detén SimpleX para habilitar las acciones sobre la base de datos + Para habilitar las acciones sobre la base de datos, debes parar Chat No comment provided by engineer. Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped. - Para poder exportar, importar o eliminar la base de datos primero debes detener Chat. Durante el tiempo que esté detenido no podrás recibir ni enviar mensajes. + Para poder exportar, importar o eliminar la base de datos primero debes parar Chat. Mientras tanto no podrás recibir ni enviar mensajes. No comment provided by engineer. Stop chat? - ¿Detener Chat? + ¿Parar Chat? No comment provided by engineer. @@ -5397,7 +5397,7 @@ Error: %@ Stopping chat - Detención del chat + Parando chat No comment provided by engineer. @@ -5534,7 +5534,7 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida. The app can notify you when you receive messages or contact requests - please open settings to enable. - La aplicación puede notificarte cuando recibas mensajes o solicitudes de contacto: abre la configuración para habilitar. + La aplicación puede notificarte cuando recibas mensajes o solicitudes de contacto: por favor, abre la configuración para activarlo. No comment provided by engineer. @@ -5639,7 +5639,7 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida. This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes. - Esta acción es irreversible. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Puede tardar varios minutos. + Esta acción es irreversible. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Podría tardar varios minutos. No comment provided by engineer. @@ -5654,7 +5654,7 @@ Puede ocurrir por algún bug o cuando la conexión está comprometida. This chat is protected by quantum resistant end-to-end encryption. - Este chat está protegido por un cifrado de extremo a extremo resistente a tecnologías cuánticas. + Este chat está protegido por cifrado de extremo a extremo resistente a tecnología cuántica. E2EE info chat item @@ -5954,7 +5954,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Upload failed - Error de carga + Error de subida No comment provided by engineer. @@ -5964,7 +5964,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Uploading archive - Subiendo el archivo + Subiendo archivo No comment provided by engineer. @@ -6019,7 +6019,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Use the app while in the call. - Usar la app durante la llamada. + Usar la aplicación durante la llamada. No comment provided by engineer. @@ -6089,12 +6089,12 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Video will be received when your contact completes uploading it. - El video se recibirá cuando tu contacto termine de subirlo. + El video se recibirá cuando el contacto termine de subirlo. No comment provided by engineer. Video will be received when your contact is online, please wait or check later! - El vídeo se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde. + El vídeo se recibirá cuando el contacto esté en línea, por favor espera o compruébalo más tarde. No comment provided by engineer. @@ -6163,7 +6163,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Warning: starting chat on multiple devices is not supported and will cause message delivery failures - Advertencia: el inicio del chat en varios dispositivos no es compatible y provocará fallos en la entrega de mensajes + Atención: el inicio del chat en varios dispositivos es incompatible y provocará fallos en la entrega de mensajes No comment provided by engineer. @@ -6188,7 +6188,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Welcome message is too long - El mensaje de bienvenida es demasiado largo + Mensaje de bienvenida demasiado largo No comment provided by engineer. @@ -6256,7 +6256,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb You **must not** use the same database on two devices. - **No debe** usar la misma base de datos en dos dispositivos. + **No debes** usar la misma base de datos en dos dispositivos. No comment provided by engineer. @@ -6348,7 +6348,7 @@ Repeat join request? You can give another try. - Puede intentarlo de nuevo. + Puedes intentarlo de nuevo. No comment provided by engineer. @@ -6495,7 +6495,7 @@ Repeat connection request? You will be connected when your contact's device is online, please wait or check later! - Te conectarás cuando el dispositivo de tu contacto esté en línea, por favor espera o compruébalo más tarde. + Te conectarás cuando el dispositivo del contacto esté en línea, por favor espera o compruébalo más tarde. No comment provided by engineer. @@ -6581,8 +6581,8 @@ Repeat connection request? Your contact needs to be online for the connection to complete. You can cancel this connection and remove the contact (and try later with a new link). - Tu contacto debe estar en línea para que se complete la conexión. -Puedes cancelar esta conexión y eliminar el contacto (e intentarlo más tarde con un enlace nuevo). + El contacto debe estar en línea para completar la conexión. +Puedes cancelarla y eliminar el contacto (e intentarlo más tarde con un enlace nuevo). No comment provided by engineer. @@ -6757,12 +6757,12 @@ Los servidores de SimpleX no pueden ver tu perfil. blocked %@ - %@ bloqueado + ha bloqueado a %@ rcv group event chat item blocked by admin - bloqueado por el administrador + bloqueado por administrador marked deleted chat item preview text @@ -7272,7 +7272,7 @@ Los servidores de SimpleX no pueden ver tu perfil. quantum resistant e2e encryption - cifrado e2e resistente a la cuántica + cifrado e2e resistente a tecnología cuántica chat item text @@ -7380,7 +7380,7 @@ Los servidores de SimpleX no pueden ver tu perfil. unblocked %@ - %@ desbloqueado + ha desbloqueado a %@ rcv group event chat item 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 50a049d13b..e0494c1076 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -104,7 +104,7 @@ %@ connected - %@ si è connesso/a + %@ connesso/a No comment provided by engineer. 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 8885cab6e5..6c3c2b37a3 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -109,6 +109,7 @@ %@ downloaded + %@ ダウンロード済 No comment provided by engineer. @@ -133,6 +134,7 @@ %@ uploaded + %@ アップロード済 No comment provided by engineer. @@ -142,6 +144,7 @@ %@, %@ and %lld members + %@や%@など%lld人のメンバー No comment provided by engineer. @@ -211,6 +214,7 @@ %lld group events + %lld件のグループイベント No comment provided by engineer. @@ -220,10 +224,12 @@ %lld messages blocked + %lld件のメッセージをブロック No comment provided by engineer. %lld messages blocked by admin + %lldのメッセージが管理者によりブロック済 No comment provided by engineer. @@ -308,10 +314,12 @@ (new) + (新規) No comment provided by engineer. (this device v%@) + (このデバイス v%@) No comment provided by engineer. @@ -321,6 +329,7 @@ **Add contact**: to create a new invitation link, or connect via a link you received. + **コンタクトの追加**: 新しい招待リンクを作成するか、受け取ったリンクから接続します。 No comment provided by engineer. @@ -330,6 +339,7 @@ **Create group**: to create a new group. + **グループ作成**: 新しいグループを作成する。 No comment provided by engineer. @@ -344,6 +354,7 @@ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection. + **注意**: 2つの端末で同じデータベースを使用すると、セキュリティ保護として、あなたが接続しているメッセージの復号化が解除されます。 No comment provided by engineer. @@ -363,6 +374,7 @@ **Warning**: the archive will be removed. + **警告**: アーカイブデータは削除されます。 No comment provided by engineer. 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 9889802177..a17e654072 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -39,7 +39,7 @@ !1 colored! - !1 kolorowy! + !1 pokolorowany! No comment provided by engineer. @@ -344,32 +344,32 @@ **More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have. - **Bardziej prywatny**: sprawdzanie nowych wiadomości co 20 minut. Token urządzenia jest współdzielony z serwerem SimpleX Chat, ale nie informacje o liczbie kontaktów lub wiadomości. + **Bardziej prywatny**: sprawdzanie nowych wiadomości odbywa się co 20 minut. Współdzielony z serwerem SimpleX Chat jest token urządzenia, lecz nie informacje o liczbie kontaktów lub wiadomości. No comment provided by engineer. **Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app). - **Najbardziej prywatny**: nie korzystaj z serwera powiadomień SimpleX Chat, sprawdzaj wiadomości okresowo w tle (zależy jak często korzystasz z aplikacji). + **Najbardziej prywatny**: nie korzystaj z serwera powiadomień SimpleX Chat, wiadomości sprawdzane są co jakiś czas w tle (zależne od tego jak często korzystasz z aplikacji). No comment provided by engineer. **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection. - *Uwaga*: używanie tej samej bazy danych na dwóch urządzeniach zepsuje odszyfrowywanie wiadomości twoich połączeń, jako zabezpieczenie. + *Uwaga*: w celach bezpieczeństwa użycie tej samej bazy danych na dwóch różnych urządzeniach spowoduje brak możliwości odszyfrowywania wiadomości z Twoich połączeń. No comment provided by engineer. **Please note**: you will NOT be able to recover or change passphrase if you lose it. - **Uwaga**: NIE będziesz w stanie odzyskać lub zmienić hasła, jeśli je stracisz. + **Uwaga**: NIE będziesz w stanie odzyskać lub zmienić kodu dostępu, jeśli go stracisz. No comment provided by engineer. **Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from. - **Zalecane**: token urządzenia i powiadomienia są wysyłane do serwera powiadomień SimpleX Chat, ale nie treść wiadomości, rozmiar lub od kogo jest. + **Zalecane**: do serwera powiadomień SimpleX Chat wysyłany jest token urządzenia i powiadomienia, lecz nie treść wiadomości, jej rozmiar lub od kogo ona jest. No comment provided by engineer. **Warning**: Instant push notifications require passphrase saved in Keychain. - **Uwaga**: Natychmiastowe powiadomienia push wymagają hasła zapisanego w Keychain. + **Uwaga**: Natychmiastowe powiadomienia push wymagają zapisania kodu dostępu w Keychain. No comment provided by engineer. @@ -4249,12 +4249,12 @@ Błąd: %@ Please enter correct current passphrase. - Wprowadź poprawne aktualne hasło. + Wprowadź poprawny obecny kod dostępu. No comment provided by engineer. Please enter the previous password after restoring database backup. This action can not be undone. - Proszę podać poprzednie hasło po przywróceniu kopii zapasowej bazy danych. Tej czynności nie można cofnąć. + Proszę podać poprzedni kod dostępu po przywróceniu kopii zapasowej bazy danych. Tej czynności nie można cofnąć. No comment provided by engineer. @@ -4274,12 +4274,12 @@ Błąd: %@ Please store passphrase securely, you will NOT be able to access chat if you lose it. - Prosimy o bezpieczne przechowywanie hasła, w przypadku jego utraty NIE będzie można uzyskać dostępu do czatu. + Przechowuj kod dostępu w bezpieczny sposób, w przypadku jego utraty NIE będzie można uzyskać dostępu do czatu. No comment provided by engineer. Please store passphrase securely, you will NOT be able to change it if you lose it. - Prosimy o bezpieczne przechowywanie hasła, w przypadku jego utraty NIE będzie można go zmienić. + Przechowuj kod dostępu w bezpieczny sposób, w przypadku jego utraty NIE będzie można go zmienić. No comment provided by engineer. @@ -4294,7 +4294,7 @@ Błąd: %@ Post-quantum E2EE - Postkwantowe E2EE + Postkwantowe szyfrowanie E2E No comment provided by engineer. diff --git a/apps/ios/SimpleX Localizations/pt.xcloc/Localized Contents/pt.xliff b/apps/ios/SimpleX Localizations/pt.xcloc/Localized Contents/pt.xliff index a31d4e314d..c9c9707c39 100644 --- a/apps/ios/SimpleX Localizations/pt.xcloc/Localized Contents/pt.xliff +++ b/apps/ios/SimpleX Localizations/pt.xcloc/Localized Contents/pt.xliff @@ -610,160 +610,197 @@ Available in v5.1 Can't delete user profile! No comment provided by engineer. - + Can't invite contact! + Não é possível convidar contato! No comment provided by engineer. - + Can't invite contacts! + Não é possível convidar contatos! No comment provided by engineer. - + Cancel + Cancelar No comment provided by engineer. - + Cannot access keychain to save database password + Não é possível acessar as chaves para salvar a senha do banco de dados No comment provided by engineer. - + Cannot receive file + Não é possível receber o arquivo No comment provided by engineer. - + Change + Mudar No comment provided by engineer. Change passcode No comment provided by engineer. - + Change database passphrase? + Alterar a senha do banco de dados? No comment provided by engineer. - + Change lock mode + Alterar modo de bloqueio authentication reason - + Change member role? + Alterar a função do membro? No comment provided by engineer. - + Change passcode + Alterar senha authentication reason - + Change receiving address + Alterar endereço de recebimento No comment provided by engineer. - + Change receiving address? + Alterar endereço de recebimento? No comment provided by engineer. - + Change role + Mudar função No comment provided by engineer. - + Chat archive + Arquivar conversa No comment provided by engineer. - + Chat console + Console da conversa No comment provided by engineer. - + Chat database + Banco de Dados da conversa No comment provided by engineer. - + Chat database deleted + Banco de Dados da conversa apagado No comment provided by engineer. - + Chat database imported + Banco de Dados da conversa importado No comment provided by engineer. - + Chat is running + A conversa está em execução No comment provided by engineer. Chat is stopped No comment provided by engineer. - + Chat preferences + Preferências da conversa No comment provided by engineer. - + Chats + Conversas No comment provided by engineer. - + Check server address and try again. + Verifique o endereço do servidor e tente novamente. No comment provided by engineer. - + Chinese and Spanish interface + Interface em Chinês e Espanhol No comment provided by engineer. - + Choose file + Escolher arquivo No comment provided by engineer. - + Choose from library + Escolha da biblioteca No comment provided by engineer. - + Clear + Limpar No comment provided by engineer. - + Clear conversation + Limpar conversa No comment provided by engineer. - + Clear conversation? + Limpar conversa? No comment provided by engineer. - + Clear verification + Limpar verificação No comment provided by engineer. - + Colors + Cores No comment provided by engineer. - + Compare file + Comparar arquivo server test step - + Compare security codes with your contacts. + Compare os códigos de segurança com seus contatos. No comment provided by engineer. - + Configure ICE servers + Configurar servidores ICE No comment provided by engineer. - + Confirm + Confirme No comment provided by engineer. - + Confirm Passcode + Confirmar senha No comment provided by engineer. - + Confirm database upgrades + Confirmar atualizações do banco de dados No comment provided by engineer. - + Confirm new passphrase… + Confirme a nova senha… No comment provided by engineer. @@ -4447,6 +4484,62 @@ SimpleX servers cannot see your profile. Permitir apagar irreversivelmente as mensagens enviadas. (24 horas) No comment provided by engineer. + + Choose _Migrate from another device_ on the new device and scan QR code. + Escolha _Migrar de outro dispositivo_ no novo dispositivo e leia o código QR. + No comment provided by engineer. + + + Cancel migration + Cancelar migração + No comment provided by engineer. + + + Camera not available + Câmera não disponível + No comment provided by engineer. + + + Change self-destruct passcode + Alterar a senha de autodestruição + authentication reason + set passcode view + + + Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat. + A conversa foi interrompida. Se você já usou esse banco de dados em outro dispositivo, deverá transferi-lo de volta antes de iniciar a conversa. + No comment provided by engineer. + + + Chat migrated! + Conversa migrada! + No comment provided by engineer. + + + Clear private notes? + Limpar notas privadas? + No comment provided by engineer. + + + Confirm network settings + Confirme as configurações de rede + No comment provided by engineer. + + + Confirm that you remember database passphrase to migrate it. + Confirme se você se lembra da senha do banco de dados para migrá-lo. + No comment provided by engineer. + + + Change self-destruct mode + Alterar modo de autodestruição + authentication reason + + + Confirm upload + Confirmar envio + No comment provided by engineer. + diff --git a/apps/ios/bg.lproj/Localizable.strings b/apps/ios/bg.lproj/Localizable.strings index 44b4c6de9f..7423e4b7c7 100644 --- a/apps/ios/bg.lproj/Localizable.strings +++ b/apps/ios/bg.lproj/Localizable.strings @@ -3461,7 +3461,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleX групов линк"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX линкове"; /* No comment provided by engineer. */ diff --git a/apps/ios/cs.lproj/Localizable.strings b/apps/ios/cs.lproj/Localizable.strings index a777a33613..e2087547bd 100644 --- a/apps/ios/cs.lproj/Localizable.strings +++ b/apps/ios/cs.lproj/Localizable.strings @@ -2903,7 +2903,7 @@ /* simplex link type */ "SimpleX group link" = "Skupinový odkaz SimpleX"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "Odkazy na SimpleX"; /* No comment provided by engineer. */ diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index e2cfcee022..26af49eeed 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleX Gruppen-Link"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX-Links"; /* No comment provided by engineer. */ @@ -3948,7 +3948,7 @@ "Use iOS call interface" = "iOS Anrufschnittstelle nutzen"; /* No comment provided by engineer. */ -"Use new incognito profile" = "Nutzen Sie das neue Inkognito-Profil"; +"Use new incognito profile" = "Ein neues Inkognito-Profil nutzen"; /* No comment provided by engineer. */ "Use only local notifications?" = "Nur lokale Benachrichtigungen nutzen?"; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 7e82b77e2e..41f15732d0 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -86,7 +86,7 @@ "**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Más privado**: no se usa el servidor de notificaciones de SimpleX Chat, los mensajes se comprueban periódicamente en segundo plano (dependiendo de la frecuencia con la que utilices la aplicación)."; /* No comment provided by engineer. */ -"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Tenga en cuenta**: usar la misma base de datos en dos dispositivos interrumpirá el descifrado de mensajes de sus conexiones, como protección de seguridad."; +"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Recuarda**: usar la misma base de datos en dos dispositivos hará que falle el descifrado de mensajes como protección de seguridad."; /* No comment provided by engineer. */ "**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Atención**: NO podrás recuperar o cambiar la contraseña si la pierdes."; @@ -143,7 +143,7 @@ "%@ connected" = "%@ conectado"; /* No comment provided by engineer. */ -"%@ downloaded" = "%@ downloaded"; +"%@ downloaded" = "%@ descargado"; /* notification title */ "%@ is connected!" = "%@ ¡está conectado!"; @@ -158,7 +158,7 @@ "%@ servers" = "Servidores %@"; /* No comment provided by engineer. */ -"%@ uploaded" = "%@ cargado"; +"%@ uploaded" = "%@ subido"; /* notification title */ "%@ wants to connect!" = "¡ %@ quiere contactar!"; @@ -390,7 +390,7 @@ "admin" = "administrador"; /* No comment provided by engineer. */ -"Admins can block a member for all." = "Los admins pueden bloquear un miembro por todos."; +"Admins can block a member for all." = "Los administradores pueden bloquear a un miembro para los demás."; /* No comment provided by engineer. */ "Admins can create the links to join groups." = "Los administradores pueden crear enlaces para unirse a grupos."; @@ -432,7 +432,7 @@ "All your contacts will remain connected. Profile update will be sent to your contacts." = "Todos tus contactos permanecerán conectados. La actualización del perfil se enviará a tus contactos."; /* No comment provided by engineer. */ -"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Todos sus contactos, conversaciones y archivos se cifrarán de forma segura y se subirán en fragmentos hacia puntos XFTP configurados."; +"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Todos tus contactos, conversaciones y archivos serán cifrados, divididos y subidos de forma segura a los servidores XFTP configurados."; /* No comment provided by engineer. */ "Allow" = "Se permite"; @@ -516,7 +516,7 @@ "App build: %@" = "Compilación app: %@"; /* No comment provided by engineer. */ -"App data migration" = "Migración de datos de la aplicación"; +"App data migration" = "Migrar datos de la aplicación"; /* No comment provided by engineer. */ "App encrypts new local files (except videos)." = "Cifrado de los nuevos archivos locales (excepto vídeos)."; @@ -543,7 +543,7 @@ "Apply" = "Aplicar"; /* No comment provided by engineer. */ -"Archive and upload" = "Archivar y transferir"; +"Archive and upload" = "Archivar y subir"; /* No comment provided by engineer. */ "Archiving database" = "Archivando base de datos"; @@ -636,13 +636,13 @@ "blocked" = "bloqueado"; /* rcv group event chat item */ -"blocked %@" = "%@ bloqueado"; +"blocked %@" = "ha bloqueado a %@"; /* marked deleted chat item preview text */ -"blocked by admin" = "bloqueado por el administrador"; +"blocked by admin" = "bloqueado por administrador"; /* No comment provided by engineer. */ -"Blocked by admin" = "Bloqueado por el administrador"; +"Blocked by admin" = "Bloqueado por administrador"; /* No comment provided by engineer. */ "bold" = "negrita"; @@ -772,13 +772,13 @@ "Chat is running" = "Chat está en ejecución"; /* No comment provided by engineer. */ -"Chat is stopped" = "Chat está detenido"; +"Chat is stopped" = "Chat está parado"; /* No comment provided by engineer. */ -"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Chat está detenido. Si estás usando esta base de datos en otro dispositivo, deberías transferirla de vuelta antes de iniciarlo."; +"Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "Chat parado. Si has usado esta base de datos en otro dispositivo, debes transferirla de vuelta antes de iniciar Chat."; /* No comment provided by engineer. */ -"Chat migrated!" = "Chat transferido !"; +"Chat migrated!" = "¡Chat migrado!"; /* No comment provided by engineer. */ "Chat preferences" = "Preferencias de Chat"; @@ -793,7 +793,7 @@ "Chinese and Spanish interface" = "Interfaz en chino y español"; /* No comment provided by engineer. */ -"Choose _Migrate from another device_ on the new device and scan QR code." = "Elija _Migrar desde otro dispositivo_ en el nuevo dispositivo y escanee el código QR."; +"Choose _Migrate from another device_ on the new device and scan QR code." = "En el nuevo dispositivo selecciona _Migrar desde otro dispositivo_ y escanéa el código QR."; /* No comment provided by engineer. */ "Choose file" = "Elije archivo"; @@ -841,7 +841,7 @@ "Confirm database upgrades" = "Confirmar actualizaciones de la bases de datos"; /* No comment provided by engineer. */ -"Confirm network settings" = "Confirmar los ajustes de red"; +"Confirm network settings" = "Confirmar configuración de red"; /* No comment provided by engineer. */ "Confirm new passphrase…" = "Confirme nueva contraseña…"; @@ -853,7 +853,7 @@ "Confirm password" = "Confirmar contraseña"; /* No comment provided by engineer. */ -"Confirm that you remember database passphrase to migrate it." = "Confirme que recuerda la frase secreta de la base de datos para migrarla."; +"Confirm that you remember database passphrase to migrate it." = "Confirma que recuerdas la frase de contraseña de la base de datos para migrarla."; /* No comment provided by engineer. */ "Confirm upload" = "Confirmar subida"; @@ -1057,7 +1057,7 @@ "Created on %@" = "Creado en %@"; /* No comment provided by engineer. */ -"Creating archive link" = "Creando enlace de archivo"; +"Creating archive link" = "Creando enlace al archivo"; /* No comment provided by engineer. */ "Creating link…" = "Creando enlace…"; @@ -1189,7 +1189,7 @@ "Delete chat profile" = "Eliminar perfil"; /* No comment provided by engineer. */ -"Delete chat profile?" = "¿Eliminar el perfil?"; +"Delete chat profile?" = "¿Eliminar perfil?"; /* No comment provided by engineer. */ "Delete connection" = "Eliminar conexión"; @@ -1402,7 +1402,7 @@ "Downgrade and open chat" = "Degradar y abrir Chat"; /* No comment provided by engineer. */ -"Download failed" = "Error en la descarga"; +"Download failed" = "Descarga fallida"; /* server test step */ "Download file" = "Descargar archivo"; @@ -1447,7 +1447,7 @@ "Enable for all" = "Activar para todos"; /* No comment provided by engineer. */ -"Enable in direct chats (BETA)!" = "Activar en chats directos (BETA)!"; +"Enable in direct chats (BETA)!" = "¡Activar en chats directos (BETA)!"; /* No comment provided by engineer. */ "Enable instant notifications?" = "¿Activar notificación instantánea?"; @@ -1564,7 +1564,7 @@ "Enter Passcode" = "Introduce Código"; /* No comment provided by engineer. */ -"Enter passphrase" = "Introducir frase de contraseña"; +"Enter passphrase" = "Introduce la frase de contraseña"; /* No comment provided by engineer. */ "Enter passphrase…" = "Introduce la contraseña…"; @@ -1735,7 +1735,7 @@ "Error starting chat" = "Error al iniciar Chat"; /* No comment provided by engineer. */ -"Error stopping chat" = "Error al detener Chat"; +"Error stopping chat" = "Error al parar Chat"; /* No comment provided by engineer. */ "Error switching profile!" = "¡Error al cambiar perfil!"; @@ -1816,10 +1816,10 @@ "File will be deleted from servers." = "El archivo será eliminado de los servidores."; /* No comment provided by engineer. */ -"File will be received when your contact completes uploading it." = "El archivo se recibirá cuando tu contacto termine de subirlo."; +"File will be received when your contact completes uploading it." = "El archivo se recibirá cuando el contacto termine de subirlo."; /* No comment provided by engineer. */ -"File will be received when your contact is online, please wait or check later!" = "El archivo se recibirá cuando tu contacto esté en línea, ¡por favor espera o compruébalo más tarde!"; +"File will be received when your contact is online, please wait or check later!" = "El archivo se recibirá cuando el contacto esté en línea, ¡por favor espera o compruébalo más tarde!"; /* No comment provided by engineer. */ "File: %@" = "Archivo: %@"; @@ -1831,7 +1831,7 @@ "Files and media" = "Archivos y multimedia"; /* No comment provided by engineer. */ -"Files and media are prohibited in this group." = "No se permiten archivos y multimedia en este grupo."; +"Files and media are prohibited in this group." = "Los archivos y multimedia no están permitidos en este grupo."; /* No comment provided by engineer. */ "Files and media prohibited!" = "¡Archivos y multimedia no permitidos!"; @@ -1840,7 +1840,7 @@ "Filter unread and favorite chats." = "Filtra chats no leídos y favoritos."; /* No comment provided by engineer. */ -"Finalize migration" = "Finalizar la migración"; +"Finalize migration" = "Finalizar migración"; /* No comment provided by engineer. */ "Finalize migration on another device." = "Finalizar la migración en otro dispositivo."; @@ -2029,7 +2029,7 @@ "How to use your servers" = "Cómo usar los servidores"; /* No comment provided by engineer. */ -"Hungarian interface" = "Interfaz húngara"; +"Hungarian interface" = "Interfaz en húngaro"; /* No comment provided by engineer. */ "ICE servers (one per line)" = "Servidores ICE (uno por línea)"; @@ -2050,10 +2050,10 @@ "Ignore" = "Ignorar"; /* No comment provided by engineer. */ -"Image will be received when your contact completes uploading it." = "La imagen se recibirá cuando tu contacto termine de subirla."; +"Image will be received when your contact completes uploading it." = "La imagen se recibirá cuando el contacto termine de subirla."; /* No comment provided by engineer. */ -"Image will be received when your contact is online, please wait or check later!" = "La imagen se recibirá cuando tu contacto esté en línea, ¡por favor espera o compruébalo más tarde!"; +"Image will be received when your contact is online, please wait or check later!" = "La imagen se recibirá cuando el contacto esté en línea, ¡por favor espera o compruébalo más tarde!"; /* No comment provided by engineer. */ "Immediately" = "Inmediatamente"; @@ -2086,7 +2086,7 @@ "Improved server configuration" = "Configuración del servidor mejorada"; /* No comment provided by engineer. */ -"In order to continue, chat should be stopped." = "Para continuar, el chat debe ser interrumpido."; +"In order to continue, chat should be stopped." = "Para continuar, Chat debe estar parado."; /* No comment provided by engineer. */ "In reply to" = "En respuesta a"; @@ -2173,7 +2173,7 @@ "Invalid link" = "Enlace no válido"; /* No comment provided by engineer. */ -"Invalid migration confirmation" = "Confirmación de migración inválida"; +"Invalid migration confirmation" = "Confirmación de migración no válida"; /* No comment provided by engineer. */ "Invalid name!" = "¡Nombre no válido!"; @@ -2239,7 +2239,7 @@ "It can happen when you or your connection used the old database backup." = "Puede ocurrir cuando tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos."; /* No comment provided by engineer. */ -"It can happen when:\n1. The messages expired in the sending client after 2 days or on the server after 30 days.\n2. Message decryption failed, because you or your contact used old database backup.\n3. The connection was compromised." = "Esto puede suceder cuando:\n1. Los mensajes caducan en el cliente saliente tras 2 días o en el servidor tras 30 días.\n2. El descifrado ha fallado porque tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos.\n3. La conexión ha sido comprometida."; +"It can happen when:\n1. The messages expired in the sending client after 2 days or on the server after 30 days.\n2. Message decryption failed, because you or your contact used old database backup.\n3. The connection was compromised." = "Esto puede suceder cuando:\n1. Los mensajes caducan tras 2 días en el cliente saliente o tras 30 días en el servidor.\n2. El descifrado ha fallado porque tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos.\n3. La conexión ha sido comprometida."; /* No comment provided by engineer. */ "It seems like you are already connected via this link. If it is not the case, there was an error (%@)." = "Parece que ya estás conectado mediante este enlace. Si no es así ha habido un error (%@)."; @@ -2440,7 +2440,7 @@ "Message text" = "Contacto y texto"; /* No comment provided by engineer. */ -"Message too large" = "Mensaje demasiado grande"; +"Message too large" = "Mensaje demasiado largo"; /* No comment provided by engineer. */ "Messages" = "Mensajes"; @@ -2452,10 +2452,10 @@ "Messages from %@ will be shown!" = "¡Los mensajes de %@ serán mostrados!"; /* No comment provided by engineer. */ -"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Los mensajes, archivos y llamadas están protegidos por **cifrado de extremo a extremo** con perfecta confidencialidad, repudio y recuperación tras ataques."; +"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Los mensajes, archivos y llamadas están protegidos mediante **cifrado de extremo a extremo** con secreto perfecto hacía adelante, repudio y recuperación tras ataque."; /* No comment provided by engineer. */ -"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Los mensajes, archivos y llamadas están protegidos por **cifrado de extremo a extremo resistente a la computación cuántica** con perfecta confidencialidad, repudio y recuperación tras ataques."; +"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Los mensajes, archivos y llamadas están protegidos mediante **cifrado de extremo a extremo resistente a tecnología cuántica** con secreto perfecto hacía adelante, repudio y recuperación tras ataque."; /* No comment provided by engineer. */ "Migrate device" = "Migrar dispositivo"; @@ -2467,10 +2467,10 @@ "Migrate here" = "Migrar aquí"; /* No comment provided by engineer. */ -"Migrate to another device" = "Migrar hacia otro dispositivo"; +"Migrate to another device" = "Migrar a otro dispositivo"; /* No comment provided by engineer. */ -"Migrate to another device via QR code." = "Migrar hacia otro dispositivo mediante código QR."; +"Migrate to another device via QR code." = "Migrar a otro dispositivo mediante código QR."; /* No comment provided by engineer. */ "Migrating" = "Migrando"; @@ -2739,7 +2739,7 @@ "Open group" = "Grupo abierto"; /* authentication reason */ -"Open migration to another device" = "Abrir la migración hacia otro dispositivo"; +"Open migration to another device" = "Abrir menú migración a otro dispositivo"; /* No comment provided by engineer. */ "Open Settings" = "Abrir Configuración"; @@ -2760,7 +2760,7 @@ "Or scan QR code" = "O escanear código QR"; /* No comment provided by engineer. */ -"Or securely share this file link" = "O comparta de forma segura el enlace de este archivo"; +"Or securely share this file link" = "O comparte de forma segura este enlace al archivo"; /* No comment provided by engineer. */ "Or show this code" = "O mostrar este código"; @@ -2835,7 +2835,7 @@ "Please check yours and your contact preferences." = "Comprueba tus preferencias y las de tu contacto."; /* No comment provided by engineer. */ -"Please confirm that network settings are correct for this device." = "Por favor confirme que la configuración de red es correcta para este dispositivo."; +"Please confirm that network settings are correct for this device." = "Por favor, confirma que la configuración de red es correcta para este dispositivo."; /* No comment provided by engineer. */ "Please contact developers.\nError: %@" = "Por favor, contacta con los desarrolladores.\nError: %@"; @@ -2871,7 +2871,7 @@ "Possibly, certificate fingerprint in server address is incorrect" = "Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta"; /* No comment provided by engineer. */ -"Post-quantum E2EE" = "E2EE postcuántica"; +"Post-quantum E2EE" = "E2EE post cuántica"; /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos."; @@ -2898,7 +2898,7 @@ "Private notes" = "Notas privadas"; /* No comment provided by engineer. */ -"Profile and server connections" = "Perfil y conexiones de servidor"; +"Profile and server connections" = "Datos del perfil y conexiones"; /* No comment provided by engineer. */ "Profile image" = "Imagen del perfil"; @@ -2958,10 +2958,10 @@ "Push server" = "Servidor push"; /* chat item text */ -"quantum resistant e2e encryption" = "cifrado e2e resistente a la cuántica"; +"quantum resistant e2e encryption" = "cifrado e2e resistente a tecnología cuántica"; /* No comment provided by engineer. */ -"Quantum resistant encryption" = "Cifrado resistente a la tecnología cuántica"; +"Quantum resistant encryption" = "Cifrado resistente a tecnología cuántica"; /* No comment provided by engineer. */ "Rate the app" = "Valora la aplicación"; @@ -3108,7 +3108,7 @@ "Repeat join request?" = "¿Repetir solicitud de admisión?"; /* No comment provided by engineer. */ -"Repeat upload" = "Repetir la carga"; +"Repeat upload" = "Repetir subida"; /* chat item action */ "Reply" = "Responder"; @@ -3288,7 +3288,7 @@ "Send" = "Enviar"; /* No comment provided by engineer. */ -"Send a live message - it will update for the recipient(s) as you type it" = "Envía un mensaje en vivo: se actualizará para el(los) destinatario(s) a medida que se escribe"; +"Send a live message - it will update for the recipient(s) as you type it" = "Envía un mensaje en vivo: se actualizará para el (los) destinatario(s) a medida que se escribe"; /* No comment provided by engineer. */ "Send delivery receipts to" = "Enviar confirmaciones de entrega a"; @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "Enlace de grupo SimpleX"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "Enlaces SimpleX"; /* No comment provided by engineer. */ @@ -3537,19 +3537,19 @@ "starting…" = "inicializando…"; /* No comment provided by engineer. */ -"Stop" = "Detener"; +"Stop" = "Parar"; /* No comment provided by engineer. */ -"Stop chat" = "Detener el chat"; +"Stop chat" = "Parar chat"; /* No comment provided by engineer. */ -"Stop chat to enable database actions" = "Detén SimpleX para habilitar las acciones sobre la base de datos"; +"Stop chat to enable database actions" = "Para habilitar las acciones sobre la base de datos, debes parar Chat"; /* No comment provided by engineer. */ -"Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped." = "Para poder exportar, importar o eliminar la base de datos primero debes detener Chat. Durante el tiempo que esté detenido no podrás recibir ni enviar mensajes."; +"Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped." = "Para poder exportar, importar o eliminar la base de datos primero debes parar Chat. Mientras tanto no podrás recibir ni enviar mensajes."; /* No comment provided by engineer. */ -"Stop chat?" = "¿Detener Chat?"; +"Stop chat?" = "¿Parar Chat?"; /* cancel file action */ "Stop file" = "Detener archivo"; @@ -3567,10 +3567,10 @@ "Stop sharing address?" = "¿Dejar de compartir la dirección?"; /* authentication reason */ -"Stop SimpleX" = "Detener SimpleX"; +"Stop SimpleX" = "Parar SimpleX"; /* No comment provided by engineer. */ -"Stopping chat" = "Detención del chat"; +"Stopping chat" = "Parando chat"; /* No comment provided by engineer. */ "strike" = "tachado"; @@ -3651,7 +3651,7 @@ "The 1st platform without any user identifiers – private by design." = "La primera plataforma sin identificadores de usuario: diseñada para la privacidad."; /* No comment provided by engineer. */ -"The app can notify you when you receive messages or contact requests - please open settings to enable." = "La aplicación puede notificarte cuando recibas mensajes o solicitudes de contacto: abre la configuración para habilitar."; +"The app can notify you when you receive messages or contact requests - please open settings to enable." = "La aplicación puede notificarte cuando recibas mensajes o solicitudes de contacto: por favor, abre la configuración para activarlo."; /* No comment provided by engineer. */ "The attempt to change database passphrase was not completed." = "El intento de cambiar la contraseña de la base de datos no se ha completado."; @@ -3717,7 +3717,7 @@ "This action cannot be undone - all received and sent files and media will be deleted. Low resolution pictures will remain." = "Esta acción es irreversible. Se eliminarán todos los archivos y multimedia recibidos y enviados. Las imágenes de baja resolución permanecerán."; /* No comment provided by engineer. */ -"This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Esta acción es irreversible. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Puede tardar varios minutos."; +"This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Esta acción es irreversible. Se eliminarán los mensajes enviados y recibidos anteriores a la selección. Podría tardar varios minutos."; /* No comment provided by engineer. */ "This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Esta acción es irreversible. Tu perfil, contactos, mensajes y archivos se perderán irreversiblemente."; @@ -3726,7 +3726,7 @@ "This chat is protected by end-to-end encryption." = "Este chat está protegido por cifrado de extremo a extremo."; /* E2EE info chat item */ -"This chat is protected by quantum resistant end-to-end encryption." = "Este chat está protegido por un cifrado de extremo a extremo resistente a tecnologías cuánticas."; +"This chat is protected by quantum resistant end-to-end encryption." = "Este chat está protegido por cifrado de extremo a extremo resistente a tecnología cuántica."; /* notification title */ "this contact" = "este contacto"; @@ -3825,7 +3825,7 @@ "Unblock member?" = "¿Desbloquear miembro?"; /* rcv group event chat item */ -"unblocked %@" = "%@ desbloqueado"; +"unblocked %@" = "ha desbloqueado a %@"; /* item status description */ "Unexpected error: %@" = "Error inesperado: %@"; @@ -3921,13 +3921,13 @@ "Upgrade and open chat" = "Actualizar y abrir Chat"; /* No comment provided by engineer. */ -"Upload failed" = "Error de carga"; +"Upload failed" = "Error de subida"; /* server test step */ "Upload file" = "Subir archivo"; /* No comment provided by engineer. */ -"Uploading archive" = "Subiendo el archivo"; +"Uploading archive" = "Subiendo archivo"; /* No comment provided by engineer. */ "Use .onion hosts" = "Usar hosts .onion"; @@ -3960,7 +3960,7 @@ "Use SimpleX Chat servers?" = "¿Usar servidores SimpleX Chat?"; /* No comment provided by engineer. */ -"Use the app while in the call." = "Usar la app durante la llamada."; +"Use the app while in the call." = "Usar la aplicación durante la llamada."; /* No comment provided by engineer. */ "User profile" = "Perfil de usuario"; @@ -4023,10 +4023,10 @@ "video call (not e2e encrypted)" = "videollamada (sin cifrar)"; /* No comment provided by engineer. */ -"Video will be received when your contact completes uploading it." = "El video se recibirá cuando tu contacto termine de subirlo."; +"Video will be received when your contact completes uploading it." = "El video se recibirá cuando el contacto termine de subirlo."; /* No comment provided by engineer. */ -"Video will be received when your contact is online, please wait or check later!" = "El vídeo se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde."; +"Video will be received when your contact is online, please wait or check later!" = "El vídeo se recibirá cuando el contacto esté en línea, por favor espera o compruébalo más tarde."; /* No comment provided by engineer. */ "Videos and files up to 1gb" = "Vídeos y archivos de hasta 1Gb"; @@ -4074,7 +4074,7 @@ "wants to connect to you!" = "¡quiere contactar contigo!"; /* No comment provided by engineer. */ -"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Advertencia: el inicio del chat en varios dispositivos no es compatible y provocará fallos en la entrega de mensajes"; +"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Atención: el inicio del chat en varios dispositivos es incompatible y provocará fallos en la entrega de mensajes"; /* No comment provided by engineer. */ "Warning: you may lose some data!" = "Atención: ¡puedes perder algunos datos!"; @@ -4092,7 +4092,7 @@ "Welcome message" = "Mensaje de bienvenida"; /* No comment provided by engineer. */ -"Welcome message is too long" = "El mensaje de bienvenida es demasiado largo"; +"Welcome message is too long" = "Mensaje de bienvenida demasiado largo"; /* No comment provided by engineer. */ "What's new" = "Novedades"; @@ -4131,7 +4131,7 @@ "You" = "Tú"; /* No comment provided by engineer. */ -"You **must not** use the same database on two devices." = "**No debe** usar la misma base de datos en dos dispositivos."; +"You **must not** use the same database on two devices." = "**No debes** usar la misma base de datos en dos dispositivos."; /* No comment provided by engineer. */ "You accepted connection" = "Has aceptado la conexión"; @@ -4194,7 +4194,7 @@ "You can enable them later via app Privacy & Security settings." = "Puedes activarlos más tarde en la configuración de Privacidad y Seguridad."; /* No comment provided by engineer. */ -"You can give another try." = "Puede intentarlo de nuevo."; +"You can give another try." = "Puedes intentarlo de nuevo."; /* No comment provided by engineer. */ "You can hide or mute a user profile - swipe it to the right." = "Puedes ocultar o silenciar un perfil deslizándolo a la derecha."; @@ -4308,7 +4308,7 @@ "You will be connected when your connection request is accepted, please wait or check later!" = "Te conectarás cuando tu solicitud se acepte, por favor espera o compruébalo más tarde."; /* No comment provided by engineer. */ -"You will be connected when your contact's device is online, please wait or check later!" = "Te conectarás cuando el dispositivo de tu contacto esté en línea, por favor espera o compruébalo más tarde."; +"You will be connected when your contact's device is online, please wait or check later!" = "Te conectarás cuando el dispositivo del contacto esté en línea, por favor espera o compruébalo más tarde."; /* No comment provided by engineer. */ "You will be required to authenticate when you start or resume the app after 30 seconds in background." = "Se te pedirá identificarte cuándo inicies o continues usando la aplicación tras 30 segundos en segundo plano."; @@ -4350,7 +4350,7 @@ "Your chat profiles" = "Mis perfiles"; /* No comment provided by engineer. */ -"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "Tu contacto debe estar en línea para que se complete la conexión.\nPuedes cancelar esta conexión y eliminar el contacto (e intentarlo más tarde con un enlace nuevo)."; +"Your contact needs to be online for the connection to complete.\nYou can cancel this connection and remove the contact (and try later with a new link)." = "El contacto debe estar en línea para completar la conexión.\nPuedes cancelarla y eliminar el contacto (e intentarlo más tarde con un enlace nuevo)."; /* No comment provided by engineer. */ "Your contact sent a file that is larger than currently supported maximum size (%@)." = "El contacto ha enviado un archivo mayor al máximo admitido (%@)."; diff --git a/apps/ios/fi.lproj/Localizable.strings b/apps/ios/fi.lproj/Localizable.strings index ddd085141b..c71f9e089c 100644 --- a/apps/ios/fi.lproj/Localizable.strings +++ b/apps/ios/fi.lproj/Localizable.strings @@ -2867,7 +2867,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleX-ryhmän linkki"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX-linkit"; /* No comment provided by engineer. */ diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index cbc72479e3..a39cd14fa7 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "Lien de groupe SimpleX"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "Liens SimpleX"; /* No comment provided by engineer. */ diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index 5ebda7396f..1586a73d7f 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -140,7 +140,7 @@ "%@ at %@:" = "%1$@ alle %2$@:"; /* No comment provided by engineer. */ -"%@ connected" = "%@ si è connesso/a"; +"%@ connected" = "%@ connesso/a"; /* No comment provided by engineer. */ "%@ downloaded" = "%@ scaricati"; @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "Link gruppo SimpleX"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "Link di SimpleX"; /* No comment provided by engineer. */ diff --git a/apps/ios/ja.lproj/Localizable.strings b/apps/ios/ja.lproj/Localizable.strings index 49797a6ac9..6e560194c7 100644 --- a/apps/ios/ja.lproj/Localizable.strings +++ b/apps/ios/ja.lproj/Localizable.strings @@ -40,6 +40,12 @@ /* No comment provided by engineer. */ "(" = "("; +/* No comment provided by engineer. */ +"(new)" = "(新規)"; + +/* No comment provided by engineer. */ +"(this device v%@)" = "(このデバイス v%@)"; + /* No comment provided by engineer. */ ")" = ")"; @@ -52,9 +58,15 @@ /* No comment provided by engineer. */ "[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[GitHub でスターを付ける](https://github.com/simplex-chat/simplex-chat)"; +/* No comment provided by engineer. */ +"**Add contact**: to create a new invitation link, or connect via a link you received." = "**コンタクトの追加**: 新しい招待リンクを作成するか、受け取ったリンクから接続します。"; + /* No comment provided by engineer. */ "**Add new contact**: to create your one-time QR Code for your contact." = "**新しい連絡先を追加**: 連絡先のワンタイム QR コードまたはリンクを作成します。"; +/* No comment provided by engineer. */ +"**Create group**: to create a new group." = "**グループ作成**: 新しいグループを作成する。"; + /* No comment provided by engineer. */ "**e2e encrypted** audio call" = "**e2e 暗号化**音声通話"; @@ -67,6 +79,9 @@ /* No comment provided by engineer. */ "**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**最もプライベート**: SimpleX Chat 通知サーバーを使用せず、バックグラウンドで定期的にメッセージをチェックします (アプリの使用頻度によって異なります)。"; +/* No comment provided by engineer. */ +"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**注意**: 2つの端末で同じデータベースを使用すると、セキュリティ保護として、あなたが接続しているメッセージの復号化が解除されます。"; + /* No comment provided by engineer. */ "**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**注意**: パスフレーズを紛失すると、パスフレーズを復元または変更できなくなります。"; @@ -76,6 +91,9 @@ /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**警告**: 即時の プッシュ通知には、キーチェーンに保存されたパスフレーズが必要です。"; +/* No comment provided by engineer. */ +"**Warning**: the archive will be removed." = "**警告**: アーカイブデータは削除されます。"; + /* No comment provided by engineer. */ "*bold*" = "\\*太字*"; @@ -118,6 +136,9 @@ /* No comment provided by engineer. */ "%@ connected" = "%@ 接続中"; +/* No comment provided by engineer. */ +"%@ downloaded" = "%@ ダウンロード済"; + /* notification title */ "%@ is connected!" = "%@ 接続中!"; @@ -130,9 +151,15 @@ /* No comment provided by engineer. */ "%@ servers" = "%@ サーバー"; +/* No comment provided by engineer. */ +"%@ uploaded" = "%@ アップロード済"; + /* notification title */ "%@ wants to connect!" = "%@ が接続を希望しています!"; +/* No comment provided by engineer. */ +"%@, %@ and %lld members" = "%@や%@など%lld人のメンバー"; + /* No comment provided by engineer. */ "%@, %@ and %lld other members connected" = "%@, %@ および %lld 人のメンバーが接続中"; @@ -172,9 +199,18 @@ /* No comment provided by engineer. */ "%lld file(s) with total size of %@" = "%lld 個のファイル(合計サイズ: %@)"; +/* No comment provided by engineer. */ +"%lld group events" = "%lld件のグループイベント"; + /* No comment provided by engineer. */ "%lld members" = "%lld 人のメンバー"; +/* No comment provided by engineer. */ +"%lld messages blocked" = "%lld件のメッセージをブロック"; + +/* No comment provided by engineer. */ +"%lld messages blocked by admin" = "%lldのメッセージが管理者によりブロック済"; + /* No comment provided by engineer. */ "%lld messages marked deleted" = "%lld 件のメッセージが削除されました"; @@ -2867,7 +2903,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleXグループリンク"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleXリンク"; /* No comment provided by engineer. */ diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index 6ba5b419f6..1b3e8bfd54 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleX groep link"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX links"; /* No comment provided by engineer. */ diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index 5283ba5ad0..01ab7f962c 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -38,7 +38,7 @@ ": " = ": "; /* No comment provided by engineer. */ -"!1 colored!" = "!1 kolorowy!"; +"!1 colored!" = "!1 pokolorowany!"; /* No comment provided by engineer. */ "." = "."; @@ -80,22 +80,22 @@ "**e2e encrypted** video call" = "**szyfrowane e2e** połączenie wideo"; /* No comment provided by engineer. */ -"**More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have." = "**Bardziej prywatny**: sprawdzanie nowych wiadomości co 20 minut. Token urządzenia jest współdzielony z serwerem SimpleX Chat, ale nie informacje o liczbie kontaktów lub wiadomości."; +"**More private**: check new messages every 20 minutes. Device token is shared with SimpleX Chat server, but not how many contacts or messages you have." = "**Bardziej prywatny**: sprawdzanie nowych wiadomości odbywa się co 20 minut. Współdzielony z serwerem SimpleX Chat jest token urządzenia, lecz nie informacje o liczbie kontaktów lub wiadomości."; /* No comment provided by engineer. */ -"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Najbardziej prywatny**: nie korzystaj z serwera powiadomień SimpleX Chat, sprawdzaj wiadomości okresowo w tle (zależy jak często korzystasz z aplikacji)."; +"**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Najbardziej prywatny**: nie korzystaj z serwera powiadomień SimpleX Chat, wiadomości sprawdzane są co jakiś czas w tle (zależne od tego jak często korzystasz z aplikacji)."; /* No comment provided by engineer. */ -"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "*Uwaga*: używanie tej samej bazy danych na dwóch urządzeniach zepsuje odszyfrowywanie wiadomości twoich połączeń, jako zabezpieczenie."; +"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "*Uwaga*: w celach bezpieczeństwa użycie tej samej bazy danych na dwóch różnych urządzeniach spowoduje brak możliwości odszyfrowywania wiadomości z Twoich połączeń."; /* No comment provided by engineer. */ -"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Uwaga**: NIE będziesz w stanie odzyskać lub zmienić hasła, jeśli je stracisz."; +"**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Uwaga**: NIE będziesz w stanie odzyskać lub zmienić kodu dostępu, jeśli go stracisz."; /* No comment provided by engineer. */ -"**Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from." = "**Zalecane**: token urządzenia i powiadomienia są wysyłane do serwera powiadomień SimpleX Chat, ale nie treść wiadomości, rozmiar lub od kogo jest."; +"**Recommended**: device token and notifications are sent to SimpleX Chat notification server, but not the message content, size or who it is from." = "**Zalecane**: do serwera powiadomień SimpleX Chat wysyłany jest token urządzenia i powiadomienia, lecz nie treść wiadomości, jej rozmiar lub od kogo ona jest."; /* No comment provided by engineer. */ -"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Uwaga**: Natychmiastowe powiadomienia push wymagają hasła zapisanego w Keychain."; +"**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Uwaga**: Natychmiastowe powiadomienia push wymagają zapisania kodu dostępu w Keychain."; /* No comment provided by engineer. */ "**Warning**: the archive will be removed." = "**Ostrzeżenie**: archiwum zostanie usunięte."; @@ -2844,10 +2844,10 @@ "Please contact group admin." = "Skontaktuj się z administratorem grupy."; /* No comment provided by engineer. */ -"Please enter correct current passphrase." = "Wprowadź poprawne aktualne hasło."; +"Please enter correct current passphrase." = "Wprowadź poprawny obecny kod dostępu."; /* No comment provided by engineer. */ -"Please enter the previous password after restoring database backup. This action can not be undone." = "Proszę podać poprzednie hasło po przywróceniu kopii zapasowej bazy danych. Tej czynności nie można cofnąć."; +"Please enter the previous password after restoring database backup. This action can not be undone." = "Proszę podać poprzedni kod dostępu po przywróceniu kopii zapasowej bazy danych. Tej czynności nie można cofnąć."; /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Prosimy o jego zapamiętanie lub bezpieczne przechowywanie - nie ma możliwości odzyskania utraconego pinu!"; @@ -2859,10 +2859,10 @@ "Please restart the app and migrate the database to enable push notifications." = "Uruchom ponownie aplikację i przeprowadź migrację bazy danych, aby włączyć powiadomienia push."; /* No comment provided by engineer. */ -"Please store passphrase securely, you will NOT be able to access chat if you lose it." = "Prosimy o bezpieczne przechowywanie hasła, w przypadku jego utraty NIE będzie można uzyskać dostępu do czatu."; +"Please store passphrase securely, you will NOT be able to access chat if you lose it." = "Przechowuj kod dostępu w bezpieczny sposób, w przypadku jego utraty NIE będzie można uzyskać dostępu do czatu."; /* No comment provided by engineer. */ -"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Prosimy o bezpieczne przechowywanie hasła, w przypadku jego utraty NIE będzie można go zmienić."; +"Please store passphrase securely, you will NOT be able to change it if you lose it." = "Przechowuj kod dostępu w bezpieczny sposób, w przypadku jego utraty NIE będzie można go zmienić."; /* No comment provided by engineer. */ "Polish interface" = "Polski interfejs"; @@ -2871,7 +2871,7 @@ "Possibly, certificate fingerprint in server address is incorrect" = "Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy"; /* No comment provided by engineer. */ -"Post-quantum E2EE" = "Postkwantowe E2EE"; +"Post-quantum E2EE" = "Postkwantowe szyfrowanie E2E"; /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami."; @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "Link grupy SimpleX"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "Linki SimpleX"; /* No comment provided by engineer. */ diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index e82ab7a07f..9617a82728 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleX ссылка группы"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX ссылки"; /* No comment provided by engineer. */ diff --git a/apps/ios/th.lproj/Localizable.strings b/apps/ios/th.lproj/Localizable.strings index b20c2b4b60..93c56a730d 100644 --- a/apps/ios/th.lproj/Localizable.strings +++ b/apps/ios/th.lproj/Localizable.strings @@ -2789,7 +2789,7 @@ /* simplex link type */ "SimpleX group link" = "ลิงค์กลุ่ม SimpleX"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "ลิงก์ SimpleX"; /* No comment provided by engineer. */ diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index 2e866ebe08..ed8e496a21 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleX grup bağlantısı"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX bağlantıları"; /* No comment provided by engineer. */ diff --git a/apps/ios/uk.lproj/Localizable.strings b/apps/ios/uk.lproj/Localizable.strings index d6dd34b066..f857908267 100644 --- a/apps/ios/uk.lproj/Localizable.strings +++ b/apps/ios/uk.lproj/Localizable.strings @@ -3482,7 +3482,7 @@ /* simplex link type */ "SimpleX group link" = "Посилання на групу SimpleX"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "Посилання SimpleX"; /* No comment provided by engineer. */ diff --git a/apps/ios/zh-Hans.lproj/Localizable.strings b/apps/ios/zh-Hans.lproj/Localizable.strings index 8e6458dce6..5af77e4e51 100644 --- a/apps/ios/zh-Hans.lproj/Localizable.strings +++ b/apps/ios/zh-Hans.lproj/Localizable.strings @@ -3185,7 +3185,7 @@ /* simplex link type */ "SimpleX group link" = "SimpleX 群组链接"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX 链接"; /* No comment provided by engineer. */ 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 c45f7e6732..48fa354780 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml @@ -1325,7 +1325,7 @@ الفيديو مُشغَّل مع رسالة ترحيب اختيارية. قريباً! - هذه الميزة ليست مدعومة حتى الآن. جرب الإصدار التالي. + هذه الميزة ليست مدعومة بعد. جرب الإصدار القادم. تعطيل (الاحتفاظ بتجاوزات المجموعة) تفعيل لجميع المجموعات إرسال الإيصالات مفعّلة لـ%d مجموعات @@ -1645,4 +1645,100 @@ طبّق يُرجى ملاحظة
    : استخدام نفس قاعدة البيانات على جهازين سيؤدي إلى كسر فك تعمية الرسائل من اتصالاتك، كحماية أمنية.]]> تحذير
    : سيتم حذف الأرشيف.]]> + التعمية بين الطرفين
    مع توفير السرية التامة لإعادة التوجيه والرفض واستعادة عمليات الاقتحام.]]> + التعمية بين الطرفين المقاوم للكم
    مع توفير السرية التامة لإعادة التوجيه والرفض واستعادة عمليات الاقتحام.]]> + هذه الدردشة محمية بالتعمية بين الطرفين. + هذه الدردشة محمية بالتعمية بين الطرفين المقاوم للكم. + افتح شاشة الترحيل + عيّن عبارة المرور + التعمية بين الطرفين المقاوم للكم + التعمية القياسية بين الطرفين + جارِ الترحيل + جارِ تنزيل تفاصيل الرابط + جارِ تنزيل الأرشيف + نُزّل %s + فشل التنزيل + كرر التنزيل + فشل الاستيراد + كرر الاستيراد + أدخل عبارة المرور + حُذف الملف أو الرابط غير صالح + رحّلت الدردشة! + أكّد إعدادات الشبكة + إنهاء الترحيل على جهاز آخر. + رحّل إلى جهاز آخر + جارِ تحضير الرفع + حدث خطأ أثناء رفع الأرشيف + خطأ في حذف قاعدة البيانات + التعمية المقاوم للكم + فعّل في الدردشات المباشرة (تجريبي)! + ألصق رابط الأرشيف + يمكنك إعطاء محاولة أخرى. + حدث خطأ أثناء تنزيل الأرشيف + الملف المُصدر غير موجود + تحقق من عبارة المرور + تأكد من أنك تتذكر عبارة مرور قاعدة البيانات لترحيلها. + التحقق من عبارة مرور قاعدة البيانات + خطأ في عرض الإشعار، تواصل بالمطورين. + مكالمات صورة في صورة + استخدم التطبيق أثناء المكالمة. + رحّل إلى جهاز آخر عبر رمز QR. + مجموعات أكثر أمانا + رحّل هنا + جارِ تحضير التنزيل + أو ألصِق رابط الأرشيف + جارِ استيراد الأرشيف + الرابط غير صالح + خطأ في حفظ الإعدادات + رحّل الجهاز + أكّد الرفع + جارِ إنشاء رابط الأرشيف + ألغِ الترحيل + احذف قاعدة البيانات من هذا الجهاز + ابدأ الدردشة + اكتمل الترحيل + تحقق من اتصالك بالإنترنت وحاول مرة أخرى + خطأ في التحقق من عبارة المرور: + إنهاء الترحيل + منح الإذن/ونات لإجراء المكالمات + الرجاء التأكد من صحة إعدادات الشبكة لهذا الجهاز. + الكاميرا + الكاميرا والميكروفون + ابحث عن هذا الإذن في إعدادات أندرويد وامنحه يدويًا. + منح في الإعدادات + منح الأذونات + الميكروفون + رحّل من جهاز آخر + افتح الإعدادات + حدث خطأ أثناء تصدير قاعدة بيانات الدردشة + للاستمرار، يجب إيقاف الدردشة. + أو شارك رابط الملف هذا بشكل آمن + كرر الرفع + جارِ إيقاف الدردشة + رُفع %s + فشل الرفع + جارِ الرفع الأرشيف + لا يجوز
    استخدام نفس قاعدة البيانات على جهازين.]]> + يمكنك إعطاء محاولة أخرى. + رحّل من جهاز آخر على الجهاز الجديد و امسح رمز QR ضوئيًا.]]> + تحذير: بدء الدردشة على أجهزة متعددة غير مدعوم وسيؤدي إلى فشل تسليم الرسائل + إتصال شبكة + محوّلة + خلوي + إيثرنت سلكية + لا إتصال شبكة + WiFi + أخرى + روابط SimpleX غير مسموح بها + الرسائل الصوتية غير مسموح بها + روابط SimpleX + السماح بإرسال روابط SimpleX. + منع إرسال روابط SimpleX + كل الأعضاء + يمكن لأعضاء المجموعة إرسال روابط SimpleX. + روابط SimpleX محظورة في هذه المجموعة. + المشرفين + مفعّل لـ + المالكون + الملفات والوسائط غير مسموح بها \ No newline at end of file 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 e7524944c6..79b74ee920 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml @@ -1712,4 +1712,34 @@ Проверете вашата интернет връзка и опитайте отново Внимание
    : архивът ще бъде изтрит.]]> Активиране в личните чатове (БЕТА)! + Разрешаване на SimpleX изпращане на връзки /линкове/. + 1. препратено +\n2. предадено + Грешка при показване на уведомление +\nГрешка при показване на съобщение + Отворени настройки + "Намерете това разрешение /права/ в настройките на Android и го задайте ръчно." + Друг +\nДруги + Мобилна мрежа + Няма мрежова връзка + Безжична мрежа + Кабелна мрежа /кабелна технология/ + SimpleX връзките не са разрешени + Гласовите съобщения не са разрешени + Предоставян в настройките + Мрежова връзка + SimpleX връзки +\nСимпълХикс връзки + Забранено изпращането на SimpleX връзки + Членовете на групата могат да изпращат връзки към SimpleX. + SimpleX връзки са забранени в тази група. + Активиране на +\nАктивиране за + Собственици + Камера + Камера и микрофон + Предоставени разрешения + Дадени разрешение(я) за извършване на повикване + Микрофон \ No newline at end of file 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 04ecbd734d..60d081bed6 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -1430,8 +1430,8 @@ An dieses Gruppenmitglied wird eine Verbindungsanfrage gesendet. Direkt verbinden\? Inkognito verbinden - Nutzen Sie das aktuelle Profil - Nutzen Sie das neue Inkognito-Profil + Das aktuelle Profil nutzen + Ein neues Inkognito-Profil nutzen App-Akkuverbrauch
    / Unbeschränkt , um Anrufe im Hintergrund zu führen.]]> Fügen Sie den erhaltenen Link ein, um sich mit Ihrem Kontakt zu verbinden… Es wird ein neues Zufallsprofil geteilt. @@ -1797,4 +1797,31 @@ Standard-Ende-zu-Ende-Verschlüsselung nicht
    auf zwei Geräten nutzen.]]> Fehler beim Anzeigen der Benachrichtigung. Bitte kontaktieren Sie die Entwickler. + Sie finden diese Berechtigung in den Android Einstellungen vor und müssen Sie manuell erteilen. + In den Einstellungen erteilen + Berechtigungen erteilen + Mikrofon + Einstellungen öffnen + Kamera + Kamera und Mikrofon + Erteilen Sie die Berechtigung(en), um Anrufe zu tätigen + weitergeleitet + Netzwerkverbindung + Keine Netzwerkverbindung + Zellulär + Andere + WiFi + Kabelgebundenes Ethernet + Dateien und Medien sind nicht erlaubt + SimpleX-Links sind nicht erlaubt + Sprachnachrichten sind nicht erlaubt + SimpleX-Links + Gruppenmitglieder können SimpleX-Links senden. + Administratoren + Alle Mitglieder + Für aktiviert + Eigentümer + In dieser Gruppe sind SimpleX-Links verboten. + Das Senden von SimpleX-Links verbieten + Das Senden von SimpleX-Links erlauben. \ No newline at end of file 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 df52456401..aba28b20a0 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml @@ -15,7 +15,7 @@ Añadir servidores predefinidos Todos los miembros del grupo permanecerán conectados. Se permite la eliminación irreversible de mensajes pero sólo si tu contacto también lo permite para tí. (24 horas) - Android Keystore se usará para almacenar de forma segura la contraseña después de reiniciar la aplicación o cambiar la frase de contraseña - permitirá recibir notificaciones. + Android Keystore se usará para almacenar de forma segura la frase de contraseña después de cambiarla o reiniciar la aplicación - permitirá recibir notificaciones. Permites a tus contactos enviar mensajes temporales Permites a tus contactos enviar mensajes de voz. siempre @@ -36,8 +36,8 @@ Apariencia Versión por cada perfil que tengas en la aplicación.]]> - Se usará una conexión TCP (y credenciales SOCKS) independiente por cada contacto y miembro del grupo. -\nAtención: si tienes muchas conexiones, el consumo de batería y tráfico pueden ser sustancialmente mayores y algunas conexiones pueden fallar. + Se usará una conexión TCP (y credenciales SOCKS) independiente por cada contacto y miembro del grupo. +\nRecuerda: si tienes muchas conexiones, el consumo de batería y tráfico pueden ser sustancialmente mayores y algunas conexiones pueden fallar. a + b Acerca de SimpleX negrita @@ -53,7 +53,7 @@ Se eliminarán todos los chats y mensajes. ¡No podrá deshacerse! Aceptar Se permiten mensajes temporales. - Android Keystore se usará para almacenar de forma segura la contraseña - permite que el servicio de notificación funcione. + Android Keystore se usará para almacenar de forma segura la frase de contraseña - permite que el servicio de notificación funcione. Añadir perfil Color Permites a tus contactos eliminar irreversiblemente los mensajes enviados. (24 horas) @@ -73,7 +73,7 @@ Añadir a otro dispositivo Versión de la aplicación: v%s Solicita recibir la imagen - Atención: NO podrás recuperar o cambiar la contraseña si la pierdes.]]> + Recuerda: NO podrás recuperar o cambiar la frase de contraseña si la pierdes.]]> Tanto tú como tu contacto podéis enviar mensajes de voz. ¡Consume más batería! El servicio en segundo plano se ejecuta continuamente y las notificaciones se mostrarán de inmediato.]]> Tanto tú como tu contacto podéis eliminar los mensajes enviados de forma irreversible. (24 horas) @@ -87,7 +87,7 @@ La base de datos será cifrada y la contraseña se guardará en Keystore. ¿Eliminar contacto\? ¿Eliminar mensaje\? - ¿Eliminar perfil de chat? + ¿Eliminar perfil? grupo eliminado ¿Eliminar grupo\? Eliminar en @@ -194,7 +194,7 @@ ¿Eliminar archivo del chat\? Crear enlace de grupo Eliminar enlace - ¿Eliminar perfil de chat? + ¿Eliminar perfil? %d hora %d día Nombre y avatar diferentes, aislamiento de transporte. @@ -271,14 +271,14 @@ No se puede iniciar la base de datos ¿Vaciar chat\? por perfil - Chat está detenido + Chat está parado rol de %s cambiado a %s Cambiar rol Mediante perfil (por defecto) o por conexión (BETA) cambiando de servidor… Preferencias de Chat cancelado %s - Chat está detenido + Chat está parado LLAMADAS Chat está en ejecución está cambiando de servidor… @@ -309,7 +309,7 @@ Confirma la contraseña nueva… Si confirmas los servidores de mensajería podrán ver tu IP, y tu proveedor de acceso a internet a qué servidores te estás conectando. Imagen guardada en la Galería - El archivo se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde. + El archivo se recibirá cuando el contacto esté en línea, por favor espera o compruébalo más tarde. Enlace de invitación de un uso Pegar el enlace recibido Error al guardar perfil de grupo @@ -337,7 +337,7 @@ ¡Error al cambiar perfil! Introduce el servidor manualmente Cómo usar los servidores - Error al detener Chat + Error al parar Chat Introduce la contraseña correcta. Introduce la contraseña… Grupo inactivo @@ -353,7 +353,7 @@ Imagen Vídeo Si has recibido un enlace de invitación a SimpleX Chat puedes abrirlo en tu navegador: - Si eliges rechazar, el remitente NO será notificado. + Si seleccionas rechazar, el remitente NO será notificado. ¡Enlace no válido! escanear el código QR en la videollamada, o tu contacto puede compartir un enlace de invitación.]]> muestra el código QR en la videollamada, o comparte el enlace.]]> @@ -382,7 +382,7 @@ Para todos Archivo Imagen enviada - La imagen se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde. + La imagen se recibirá cuando el contacto esté en línea, por favor espera o compruébalo más tarde. vista previa del enlace Error al guardar servidores ICE Servidores ICE (uno por línea) @@ -459,8 +459,8 @@ La eliminación irreversible de mensajes no está permitida en este chat. La eliminación irreversible de mensajes no está permitida en este grupo. Configuración del servidor mejorada - Esto puede suceder cuando: -\n1. Los mensajes caducan en el cliente saliente tras 2 días o en el servidor tras 30 días. + Esto puede ocurrir cuando: +\n1. Los mensajes hayan caducado en el cliente saliente tras 2 días o en el servidor tras 30 días. \n2. El descifrado ha fallado porque tu o tu contacto estáis usando una copia de seguridad antigua de la base de datos. \n3. La conexión ha sido comprometida. Contacto y texto @@ -510,7 +510,7 @@ Silenciar Asegúrate de que las direcciones del servidor WebRTC ICE tienen el formato correcto, están separadas por líneas y no duplicadas. Se requieren hosts .onion para la conexión -\nAtención: no podrás conectarte a servidores que no tengan dirección .onion. +\nRecuerda: no podrás conectarte a servidores que no tengan dirección .onion. Se usarán hosts .onion si están disponibles. Inmune a spam y abuso si SimpleX no tiene identificadores de usuario, ¿cómo puede entregar los mensajes\?
    ]]> @@ -570,7 +570,7 @@ k marcado eliminado Llamada perdida - ¡Las notificaciones seguirán enviándose hasta que la aplicación se detenga! + ¡Las notificaciones seguirán enviándose hasta que la aplicación se pare! Salir ¿Salir del grupo\? propietario @@ -621,7 +621,7 @@ Grabar mensaje de voz ha expulsado a %1$s Enviar previsualizacion de enlaces - Envía un mensaje en vivo: se actualizará para el(los) destinatario(s) a medida que se escribe + Envía un mensaje en vivo: se actualizará para el (los) destinatario(s) a medida que se escribe error de envío Enviando vía Por favor, actualiza la aplicación y ponte en contacto con los desarrolladores. @@ -673,7 +673,7 @@ Recibiendo vía Tiempo de espera del protocolo seg - Perfil y conexiones de servidor + Datos del perfil y conexiones No se permiten mensajes temporales. Sólo tú puedes enviar mensajes de voz. Sólo tu contacto puede enviar mensajes de voz. @@ -694,7 +694,7 @@ Abrir chat Restaurar copia de seguridad de la base de datos Guardar contraseña y abrir el chat - La contraseña no se ha encontrado en Keystore, introdúzcala manualmente. Esto puede haber ocurrido si has restaurado los datos de la aplicación con una herramienta de copia de seguridad. Si no es así, por favor ponte en contacto con los desarrolladores. + La contraseña no se ha encontrado en Keystore, introdúcela manualmente. Esto puede haber ocurrido si has restaurado los datos de la aplicación con una herramienta de copia de seguridad. Si no es así, por favor ponte en contacto con los desarrolladores. Expulsar Expulsar miembro Enviar mensaje directo @@ -722,7 +722,7 @@ Abrir SimpleX PROXY SOCKS TEMAS - Detener + Parar Esta acción es irreversible. Tu perfil, contactos, mensajes y archivos se perderán. Omitir invitación a miembros Vista previa @@ -746,7 +746,7 @@ Compartir enlace de un uso ¿Actualizar el modo de aislamiento de transporte\? Altavoz activado - Detén SimpleX para habilitar las acciones sobre la base de datos. + Para habilitar las acciones sobre la base de datos, debes parar Chat ¡La conexión que has aceptado se cancelará! La base de datos no funciona correctamente. Pulsa para saber más El mensaje será marcado como moderado para todos los miembros. @@ -759,7 +759,7 @@ Configuración Altavoz desactivado Inciar chat nuevo - Para exportar, importar o eliminar la base de datos debes detener Chat. Durante la parada no podrás recibir o enviar mensajes. + Para exportar, importar o eliminar la base de datos debes parar Chat. Mientra tanto no podrás recibir o enviar mensajes. Gracias por instalar SimpleX Chat! Para proteger tu privacidad, en lugar de los identificadores de usuario que usan el resto de plataformas, SimpleX dispone de identificadores para las colas de mensajes, independientes para cada uno de tus contactos. Para proteger tu información, activa el Bloqueo SimpleX. @@ -776,7 +776,7 @@ Se muestran el nombre del contacto y el mensaje Se muestra sólo el nombre del contacto Bloqueo SimpleX activado - Detener chat + Parar Chat El mensaje se eliminará para todos los miembros. Compartir archivo… ¡Demasiadas imágenes! @@ -806,7 +806,7 @@ inicializando… Mensajes omitidos CONFIGURACIÓN - ¿Detener Chat\? + ¿Parar Chat? %s segundo(s) Pulsa para unirte ha actualizado el perfil del grupo @@ -871,14 +871,14 @@ Esperando imagen Servidores WebRTC ICE %1$s quiere conectarse contigo mediante - Ya tienes un perfil con este nombre mostrado. Por favor, elige otro nombre. + Ya tienes un perfil con este nombre mostrado. Por favor, selecciona otro nombre. Abrir en aplicación móvil.]]> ponerte en contacto con los desarrolladores de SimpleX Chat para consultas y para recibir actualizaciones.]]> ¡No puedes enviar mensajes! Puedes usar la sintaxis markdown para dar formato a tus mensajes: Debes usar la versión más reciente de tu base de datos ÚNICAMENTE en un dispositivo, de lo contrario podrías dejar de recibir mensajes de algunos contactos. - Tu contacto debe estar en línea para que se complete la conexión. -\nPuedes cancelar esta conexión y eliminar el contacto (e intentarlo más tarde con un enlace nuevo). + El contacto debe estar en línea para completar la conexión. +\nPuedes cancelarla y eliminar el contacto (e intentarlo más tarde con un enlace nuevo). La base de datos actual será ELIMINADA y SUSTITUIDA por la importada. \nEsta acción es irreversible. Tu perfil, contactos, mensajes y archivos actuales se perderán. Tu perfil aleatorio @@ -1012,23 +1012,23 @@ la versión de la base de datos es más reciente que la aplicación, pero no hay migración hacia versión anterior para: %s EXPERIMENTAL IDs de la base de datos y opciónes de aislamiento de transporte. - El archivo se recibirá cuando tu contacto termine de subirlo. - La imagen se recibirá cuando tu contacto termine de subirla. + El archivo se recibirá cuando el contacto termine de subirlo. + La imagen se recibirá cuando el contacto termine de subirla. Mostrar opciones de desarrollador Ocultar: Mostrar: - Eliminar perfil de chat + Eliminar perfil Contraseña del perfil Mostrar perfil oculto Mostrar perfil Eliminar perfil Vídeo - El vídeo se recibirá cuando tu contacto esté en línea, por favor espera o compruébalo más tarde. + El vídeo se recibirá cuando el contacto esté en línea, por favor espera o compruébalo más tarde. Esperando el vídeo Ha pedido recibir el video ¡Demasiados vídeos! Vídeo enviado - El vídeo se recibirá cuando tu contacto termine de subirlo. + El vídeo se recibirá cuando el contacto termine de subirlo. Sólo se pueden enviar 10 vídeos de forma simultánea Esperando el vídeo Error al guardar servidores SMP @@ -1081,7 +1081,7 @@ Sistema Error descifrado El ID del siguiente mensaje es incorrecto (menor o igual que el anterior). -\nPuede ocurrir por algún error o si la conexión está comprometida. +\nPodría ocurrir por algún error o si la conexión está comprometida. Por favor, informa a los desarrolladores. %1$d mensaje(s) omitido(s). Hash de mensaje incorrecto @@ -1264,7 +1264,7 @@ Cancelar cambio de dirección Archivos y multimedia No se permite el envío de archivos y multimedia. - No se permiten archivos y multimedia en este grupo. + Los archivos y multimedia no están permitidos en este grupo. Los miembros del grupo pueden enviar archivos y multimedia. Se permite enviar archivos y multimedia Favorito @@ -1383,7 +1383,7 @@ Abrir Cifra archivos almacenados y multimedia Error al establecer contacto con el miembro - Atención: los servidores de retransmisión están conectados mediante SOCKS proxy. Las llamadas y las previsualizaciones de enlaces usan conexión directa.]]> + Recuerda: los servidores de retransmisión están conectados mediante SOCKS proxy. Las llamadas y las previsualizaciones de enlaces usan conexión directa.]]> Cifra archivos locales Nueva aplicación para ordenador! 6 idiomas nuevos para el interfaz @@ -1556,14 +1556,14 @@ Pulsa para pegar enlace Buscar o pegar enlace SimpleX Con uso reducido de batería. - bloqueado por el administrador + bloqueado por administrador %d mensajes bloqueados por el administrador Error al crear mensaje - Error al borrar notas privadas - ¿Borrar notas privadas? + Error al eliminar notas privadas + ¿Eliminar notas privadas? Opciones desarrollador - %s bloqueado - %s desbloqueado + ha bloqueado a %s + ha desbloqueado a %s has bloqueado a %s has desbloqueado a %s desconocido @@ -1574,14 +1574,14 @@ ¿Desbloquear miembro para todos? Desbloquear para todos bloqueado - Bloqueado por el administrador + bloqueado por administrador Error al bloqear el miembro para todos Con cifrado de archivos y multimedia. %s agotado]]> - Chat detenido. Si has usado esta base de datos en otro dispositivo, deberías transferirla de vuelta antes de iniciar el chat. - Éste nombre mostrado no es válido. Por favor, elije otro nombre. - Conexión detenida - Conexión detenida + Chat parado. Si has usado esta base de datos en otro dispositivo, debes transferirla de vuelta antes de iniciar Chat. + Este nombre mostrado no es válido. Por favor, selecciona otro nombre. + Conexión parada + Conexión parada %s debido a: %s]]> Desconectado debido a: %s %s es deficiente]]> @@ -1597,7 +1597,7 @@ El ordenador ha sido desconectado estado desconocido Migración de la base de datos en progreso. -\nPuede tardar varios minutos. +\nPodría tardar varios minutos. El ordenador tiene una versión sin soporte. Por favor, asegúrate de usar la misma versión en ambos dispositivos el contacto %1$s ha cambiado a %2$s perfil actualizado @@ -1613,7 +1613,7 @@ La barra de búsqueda acepta enlaces de invitación. Unirse a la conversación del grupo Historial reciente y bot del directorio mejorado. - Interfaz en Turco y en Húngaro + Interfaz en turco y húngaro %s está inactivo]]> %s no se encuentra]]> %s está ocupado]]> @@ -1638,82 +1638,120 @@ Llamada Llamada finalizada Videollamada - Error al abrir el navegador + Error al abrir navegador Para llamadas se requiere el navegador web predeterminado. Por favor, configura el navegador predeterminado en el sistema y comparte más información con los desarrolladores. Archivando base de datos Todos tus contactos, conversaciones y archivos serán cifrados, divididos y subidos de forma segura a los servidores XFTP configurados. - Los administradores pueden bloquear un miembro para el resto - Chat migrado! - Migración de los datos de la app + Los administradores pueden bloquear a un miembro para los demás + ¡Chat migrado! + Migrar datos de la aplicación Aplicar Archivar y subir Cancelar migración Este chat está protegido por cifrado de extremo a extremo. Migrar desde otro dispositivo - cifrado e2e resistente a tecnologías cuánticas + cifrado e2e resistente a tecnología cuántica cifrado estándar de extremo a extremo %s descargado - O comparta de forma segura este enlace de archivo + O comparte de forma segura este enlace al archivo Migración completada - Empezar chat - Advertencia: el inicio del chat en varios dispositivos no es compatible y provocará fallos en la entrega de mensajes. - Verificar la frase de contraseña - Verificar la contraseña de la base de datos - ¡Habilitar en chats directos (BETA)! + Iniciar chat + Atención: el inicio del chat en varios dispositivos es incompatible y provocará fallos en la entrega de mensajes. + Verificar frase de contraseña + Verificar contraseña de la base de datos + ¡Activar en chats directos (BETA)! Usar la aplicación durante la llamada. Grupos más seguros Descargando detalles del enlace - Enlace inválido + Enlace no válido Migrando Pegar enlace de archivo Preparando descarga Repetir descarga Puedes intentarlo de nuevo. - Introducir frase de contraseña + Introduce la frase de contraseña Error al descargar el archivo - El archivo se ha eliminado o el enlace no es válido - Finalizar la migración en otro dispostivo. + El archivo ha sido eliminado o el enlace no es válido + Finalizar migración en otro dispostivo. Error de importación Importando archivo Repetir importación Migrar dispositivo - Por favor confirme que la configuración de red es correcta para este dispositivo. - Error al borrar la base de datos + Por favor, confirma que la configuración de red es correcta para este dispositivo. + Error al eliminar base de datos Error al subir el archivo - Deteniendo chat - Repetir la carga - %s subidos + Parando chat + Repetir subida + %s subido Error de subida Subiendo archivo Puedes intentarlo de nuevo. - Creando enlace de archivo - Borrar la base de datos de este dispositivo - Finalizar la migración - Atención: el archivo se eliminará.]]> - Compruebe su conexión a Internet y vuelva a intentarlo - Confirme que recuerda la contraseña de la base de datos para migrarla. - Error al verificar la contraseña: - Ten en cuenta: usar la misma base de datos en dos dispositivos romperá el descifrado de mensajes de tus conexiones, como protección de seguridad.]]> - Migrar desde otro dispositivo en el nuevo dispositivo y escanea el código QR.]]> - Confirmar la configuración de red - Confirmar carga + Creando enlace al archivo + Eliminar base de datos de este dispositivo + Finalizar migración + Atención: el archivo será eliminado.]]> + Comprueba tu conexión a internet y vuelve a intentarlo + Confirma que recuerdas la frase de contraseña de la base de datos para migrarla. + Error al verificar la frase de contraseña: + Recuerda: usar la misma base de datos en dos dispositivos hará que falle el descifrado de mensajes como protección de seguridad.]]> + Migrar desde otro dispositivo y escanea el código QR.]]> + Confirmar configuración de red + Confirmar subida Descarga fallida Descargando archivo - Error al exportar la base de datos de chats - Error al guardar los ajustes + Error al exportar base de datos del chat + Error al guardar ajustes El archivo exportado no existe - Para continuar, el chat debe detenerse. - cifrado de extremo a extremo con perfecta confidencialidad, repudio y recuperación tras ataques.]]> - cifrado de extremo a extremo resistente a computación cuántica con perfecta confidencialidad, repudio y recuperación tras ataques.]]> + Para continuar, Chat debe estar parado. + cifrado de extremo a extremo con secreto perfecto hacía adelante, repudio y recuperación tras ataque.]]> + cifrado de extremo a extremo resistente a tecnología cuántica con secreto perfecto hacía adelante, repudio y recuperación tras ataque.]]> Migrar aquí - Migrar hacia otro dispositivo - Migrar hacia otro dispositivo mediante código QR. - Abrir pantalla de migración + Migrar a otro dispositivo + Migrar a otro dispositivo mediante código QR. + Abrir menú migración O pegar enlace del archivo Llamadas picture-in-picture Preparando subida - Cifrado resistente a tecnologías cuánticas + Cifrado resistente a tecnología cuántica Establecer frase de contraseña - Este chat está protegido por un cifrado de extremo a extremo resistente a tecnología cuántica. - No debes utilizar la misma base de datos en dos dispositivos.]]> + Este chat está protegido por cifrado de extremo a extremo resistente a tecnología cuántica. + No debes usar la misma base de datos en dos dispositivos.]]> + Error al mostrar notificación, contacta con los desarrolladores. + Cámara y micrófono + Concédelo en ajustes. + Conceder permisos + Cámara + Busca este permiso en los ajustes de Android y concédelo manualmente. + Conceder permiso(s) para hacer llamadas + Micrófono + Abrir ajustes + Conexión de red + reenviado + Archivos y multimedia no permitidos + Enlaces SimpleX no permitidos + Mensajes de voz no permitidos + Enlaces SimpleX + Los miembros del grupo pueden enviar enlaces SimpleX + Los enlaces SimpleX no se permiten en este grupo. + propietarios + Móvil + Sin conexión de red + Otro + WiFi + Ethernet por cable + administradores + Activar para + No permitir el envío de enlaces SimpleX + todos los miembros + Permitir enviar enlaces SimpleX. + guardado + guardado desde %s + Guardado + Guardado desde + Reenviado por + Descargar + Reenviar + Reenviado + Mensaje reenviado… + Los destinatarios no ven de quién procede este mensaje. \ No newline at end of file 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 ead3957aa5..9889856c33 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml @@ -1715,4 +1715,32 @@ Vérifier la phrase secrète Attention : démarrer une session de chat sur plusieurs appareils n\'est pas pris en charge et entraînera des dysfonctionnements au niveau de la transmission des messages Vous pouvez faire un nouvel essai. + Erreur lors de l\'affichage de la notification, contacter les développeurs. + Caméra et microphone + Accorder dans les paramètres + Octroyer les permissions + Accorder la/les permission(s) pour passer des appels + Microphone + Ouvrir les paramètres + Caméra + Retrouvez cette permission dans les paramètres d\'Android et octroyez-la manuellement. + transféré + Connexion au réseau + Cellulaire + Fichiers et médias non autorisés + Les liens SimpleX ne sont pas autorisés + Les messages vocaux ne sont pas autorisés + admins + tous les membres + Autorise l\'envoi de liens SimpleX. + Activé pour + Les membres du groupe peuvent envoyer des liens SimpleX. + propriétaires + Interdire l\'envoi de liens SimpleX + Les liens SimpleX sont interdits dans ce groupe. + Pas de connexion au réseau + WiFi + Ethernet câblé + Liens SimpleX + Autres \ No newline at end of file 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 0c244c8806..285e55d9a6 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml @@ -2,7 +2,7 @@ %1$d üzenet visszafejtése sikertelen. %1$d üzenet kihagyva. - %1$d kihagyott üzenet + %1$d üzenet kihagyva %1$s TAG 1 hónap 1 hét @@ -24,8 +24,8 @@ Hozzáférés a kiszolgálókhoz SOCKS proxy segítségével a %d porton? A proxyt el kell indítani, mielőtt engedélyezné ezt az opciót. Elfogadás Elfogadás - fentről, utána: - Fogadás inkognítóban + gombra fent, majd: + Elfogadás inkognítóban Kapcsolatfelvétel elfogadása? Elfogadás Elfogadás @@ -40,7 +40,7 @@ A hang- és videóhívások le vannak tiltva. Külön TCP kapcsolat (és SOCKS bejelentkezési adatok) lesz használva minden ismerős és csoporttag számára. \nFigyelem: ha sok ismerőse van, az akkumulátor- és adathasználat jelentősen megnövekedhet és néhány kapcsolódási kísérlet sikertelen lehet. - Hivatkozás előnézet megszakítása + hivatkozás előnézet megszakítása az alkalmazásban minden csevegési profiljához .]]> Mindkét fél küldhet eltűnő üzeneteket. Az Android Keystore-t a jelmondat biztonságos tárolására használják - lehetővé teszi az értesítési szolgáltatás működését. @@ -69,17 +69,17 @@ a(z) %s titkosításának elfogadása… " \nElérhető a v5.1-ben" - Mindkét fél visszafordíthatatlanul törölheti az elküldött üzeneteket. (24 óra) + Mindkét fél véglegesen törölheti az elküldött üzeneteket. (24 óra) Javított csoportok - Minden üzenet törlésre kerül - ezt nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek. + Minden üzenet törlésre kerül - ez a művelet nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek. Hívás befejeződött HÍVÁSOK - és %d egyéb esemény + és %d további esemény Cím Csatlakozás folyamatban! Automatikus elfogadás A háttérszolgáltatás mindig fut - az értesítések azonnal megjelennek, amint üzenetek vannak. - Az elküldött üzenetek visszafordíthatatlan törlése engedélyezve van. (24 óra) + Az elküldött üzenetek végleges törlése engedélyezve van. (24 óra) Mindkét fél küldhet hangüzeneteket. Téves üzenet ID Ismerősök általi üzenetreakciók küldésének engedélyezése. @@ -99,7 +99,7 @@ Hozzáadás egy másik eszközhöz Az üzenetreakciók küldése engedélyezve van. Fájl előnézet megszakítása - Minden csoporttag csatlakoztatva marad. + Minden csoporttag csatlakozva marad. Több akkumulátort használ! Háttérszolgáltatás mindig fut - az értesítések megjelennek, amint az üzenetek elérhetővé válnak.]]> Letiltás admin @@ -110,7 +110,7 @@ Még néhány dolog Hitelesítés megszakítva A fájlok- és a médiatartalom küldése engedélyezve van. - Minden csevegés és üzenet törlésre kerül - ez nem vonható vissza! + Minden csevegés és üzenet törlésre kerül - ez a művelet nem vonható vissza! hanghívás félkövér Az alkalmazás jelkód helyettesítésre kerül egy önmegsemmisítő jelkóddal. @@ -135,7 +135,7 @@ %1$s hívása befejeződött Jó akkumulátoridő. A háttérszolgáltatás 10 percenként ellenőrzi az új üzeneteket. Előfordulhat, hogy hívásokról, vagy a sürgős üzenetekről marad le.]]> szerző - Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése az ismerősei számára. (24 óra) + Elküldött üzenetek végleges törlésének engedélyezése az ismerősei számára. (24 óra) Megszakítás Az alkalmazás csak akkor tud értesítéseket fogadni amikor fut, háttérszolgáltatás nem indul el Jobb üzenetek @@ -179,27 +179,27 @@ Jelszó megerősítése Csoport szerepkör megváltoztatása? Zárolási mód megváltoztatása - Kapcsolódva - kapcsolódva + Csatlakozott + csatlakozva Kapcsolódás - kapcsolódva + csatlakozva Csatlakoztatott telefon kapcsolódva Szerepkör megváltoztatása Kapcsolódva Belépési adatok megerősítése Megváltoztatja a fogadó címet? - Cím megváltoztatva + cím megváltoztatva Önmegsemmisítő mód megváltoztatása megváltoztatta az ön szerepkörét erre: %s Kapcsolódás - Közvetlen kapcsolódás? + Közvetlen csatlakozás? Kapcsolódás - közvetlenül kapcsolódva + közvetlenül csatlakozva kapcsolat %1$d az ismerős e2e titkosítással rendelkezik Csoport létrehozása véletlenszerű profillal. - Az ismerős és az összes üzenet törlésre kerül - ez nem vonható vissza! + Az ismerős és az összes üzenet törlésre kerül - ez a művelet nem vonható vissza! Az ismerősök törlésre jelölhetnek üzeneteket ; megtekintheti őket. Kapcsolódás egyszer használatos hivatkozással? Kapcsolódás egy hivatkozás / QR-kód által @@ -225,7 +225,7 @@ Ismerős beállításai Kapcsolat Kapcsolat megszakítva - Kapcsolat létrehozva + kapcsolat létrehozva az ismerősnek nincs e2e titkosítása Ismerős engedélyezi Ismerős elrejtve: @@ -237,24 +237,24 @@ Az ismerős még nem csatlakozott! - kapcsolódás könyvtár szolgáltatáshoz (BÉTA)! \n- kézbesítési jelentések (20 tagig). -\n- gyorsabb és stabilabb +\n- gyorsabb és stabilabb. Hozzájárulás - csatlakozás (bemutatkozás meghívó) + csatlakozás (bemutatkozó meghívó) SimpleX azonosító létrehozása törölt ismerős Csoporttag üzenet törlése? A csevegés fut Egyszer használatos meghívó hivatkozás létrehozása Törlés - Új üzenetek ellenőrzése 10 percenként, legfeljebb 1 percen keresztül. + Új üzenetek ellenőrzése 10 percenként, legfeljebb 1 percen keresztül Adatbázis törlése Csoport létrehozása Csevegési profil Profil létrehozása - Csatlakoztatott számítógép + Társított számítógép Törölve ekkor: %s - Törölve ekkor - Kínai és spanyol kezelőfelület. + Törölve ekkor: + Kínai és spanyol kezelőfelület Ismerősök meghívása nem lehetséges! A csevegés leállt Sötét @@ -284,10 +284,10 @@ Bezárás gomb A csevegés leállt (jelenlegi) - Témák személyre szabása és megosztása + Témák személyre szabása és megosztása. Csevegési profil törlése? Titkos csoport létrehozása - Csatlakozva a számítógéphez + Kapcsolódva a számítógéphez ICE kiszolgálók beállítása Csoport törlése Hitelesítés törlése @@ -318,7 +318,7 @@ Hivatkozás törlése? kapcsolódás Személyreszabott idő - Inkognítóban csatlakozva + Csatlakozás inkognitóban CSEVEGÉSEK Új profil létrehozása a számítógép alkalmazásban. 💻 kapcsolódás (bejelentve) @@ -394,7 +394,7 @@ %dhét Felfedezés helyi hálózaton keresztül Helyi csoportok felfedezése és csatlakozás - %1$d üzenet moderálva %2$s által + %1$d üzenet moderálva lett %2$s által Eltűnő üzenet Ne hozzon létre azonosítót Ne mutasd újra @@ -410,7 +410,7 @@ %dhónap Ebben a csoportban tiltott a tagok közötti közvetlen üzenetek küldése. %d perc - Az adatbázis egy véletlenszerű jelmondattal van titkosítva. Exportálás előtti módosítás szükséges! + Az adatbázis egy véletlenszerű jelmondattal van titkosítva. Exportálás előtt változtassa meg a jelmondatot. Üzenet kézbesítés jelentéseket letiltása a csoportok számára? nap %d nap @@ -419,7 +419,7 @@ Letiltás (felülírások megtartásával) Adatbázis fejlesztése %d üzenet letiltva - Eltűnik ekkor + Eltűnik ekkor: %d hét engedélyezve az ön számára Eltűnő üzenetek @@ -433,7 +433,7 @@ Az adatbázis titkosításra kerül és a jelmondat eltárolásra a Keystore-ban. Automatikus üzenet törlés engedélyezése? Törlés - az adatbázis verzió újabb, mint az alkalmazás, de nincs lefelé migráció eddig: %s + az adatbázis verziója újabb, mint az alkalmazásé, visszafelé átköltöztetés nem lehetséges a következőhöz: %s Leírás %d óra %dp @@ -497,7 +497,7 @@ Önmegsemmisítés engedélyezése Olvasatlan és kedvenc csevegésekre való szűrés. A csevegések betöltése sikertelen - A csoport már létezik! + Már tagja a csoportnak! Francia kezelőfelület Csoport hivatkozások Végre, megvannak! 🚀 @@ -521,7 +521,7 @@ Kísérleti funkciók Engedélyezés (felülírások megtartásával) Helyes jelmondat bevitele. - A csoport törlésre kerül az ön részére - ez nem vonható vissza! + A csoport törlésre kerül az ön részére - ez a művelet nem vonható vissza! Adatbázis titkosítása? A zárolási képernyőn megjelenő hívások engedélyezése a Beállításokban. titkosítás egyeztetve @@ -549,22 +549,22 @@ Jelszó megadása a keresőben A fájl akkor érkezik meg, amikor az ismerőse befejezte annak feltöltését. Fájl letöltése - Csevegés betöltése sikertelen + A csevegés betöltése sikertelen Kiszolgáló megadása kézzel A fájl akkor érkezik meg, amikor az ismerőse online lesz, várjon, vagy ellenőrizze később! Hiba a csoport hivatkozásának létrehozásakor A Galériából Engedélyezés (csoport felülírások megtartásával) Hiba az ismerős törlésekor - Csoporttagok visszafordíthatatlanul törölhetik az elküldött üzeneteket. (24 óra) + A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra) Hiba a szerepkör megváltoztatásakor Javítás - Csoporttagok küldhetnek eltűnő üzeneteket. + A csoport tagjai küldhetnek eltűnő üzeneteket. Kapcsolat javítása Hiba a profil létrehozásakor! Hiba a tag(-ok) hozzáadásakor Fájl - Csoporttagok küldhetnek fájlokat és médiatartalmakat. + A csoport tagjai küldhetnek fájlokat és médiatartalmakat. Törlés miután Hiba a beállítás megváltoztatásakor Hiba a csoport hivatkozás frissítésekor @@ -574,18 +574,18 @@ Hiba a csevegési adatbázis importálásakor Hiba a kézbesítési jelentések engedélyezésekor! Hiba az XFTP kiszolgálók mentésekor - Csoporttagok küldhetnek közvetlen üzeneteket. + A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket. Hiba a tag eltávolításakor befejeződött Csoport üdvözlő üzenete Csoport neve: Hiba a meghívó küldésekor - Adja meg nevét: + Adjon meg egy nevet: Hiba a felhasználó jelszavának mentésekor Téma exportálása Eszköznév megadása… Hiba - A csoport meghívó már nem érvényes, el lett távolítva a küldője által. + A csoport meghívó már nem érvényes, a küldője törölte. A csoport teljes neve: segítség Önmegsemmisítő jelkód engedélyezése @@ -598,18 +598,18 @@ Ismerős általi javítás nem támogatott Fájl nem található Kapcsolat bontása - Csoporttagok üzenetreakciókat adhatnak hozzá. + A csoport tagjai üzenetreakciókat adhatnak hozzá. Adatbázis exportálása Teljes név: Tovább csökkentett akkumulátor használat Hiba a csevegés megállításakor titkosítás rendben %s számára - Csoport törlésre kerül minden tag számára - ez nem vonható vissza! + Csoport törlésre kerül minden tag számára - ez a művelet nem vonható vissza! Titkosítás javítása az adatmentések helyreállítása után. Hiba a csevegési adatbázis törlésekor Teljes hivatkozás Hiba az azonosító megváltoztatásakor - Csoporttagok küldhetnek hangüzeneteket. + A csoport tagjai küldhetnek hangüzeneteket. Csoport beállítások Hiba: %s Eltűnő üzenetek @@ -650,7 +650,7 @@ Rejtett Házigazda Kezdeti szerepkör - Érvénytelen csevegés + érvénytelen csevegés óra Inkognitó Használati útmutató @@ -672,12 +672,12 @@ Hiba az ismerőssel történő kapcsolat létrehozásában ICE-kiszolgálók (soronként egy) beolvashatja a QR-kódot a videohívásban, vagy az ismerőse megoszthat egy meghívó hivatkozást.]]> - Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat visszafordíthatatlanul törlődik! + Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat véglegesen törlődik! Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás során, vagy ossza meg a hivatkozást. mutassa meg a QR-kódot a videohívásban, vagy ossza meg a hivatkozást.]]> Megerősítés esetén az üzenetküldő kiszolgálók látni fogják az IP-címét és a szolgáltatóját – azt, hogy mely kiszolgálókhoz csatlakozik. A kép akkor érkezik meg, amikor az ismerőse befejezte annak feltöltését. - QR kód beolvasásával]]> + QR kód beolvasásával.]]> Kapott SimpleX Chat meghívó hivatkozását megnyithatja böngészőjében: Ha az alkalmazás megnyitásakor az önmegsemmisítő jelkódot megadásra kerül: Megtalált számítógép @@ -690,20 +690,20 @@ Elutasítás esetén a feladó NEM kap értesítést. Szerepkör kiválasztásának bővítése A kép akkor érkezik meg, amikor az ismerőse elérhető lesz, várjon, vagy ellenőrizze később! - meghívott + meghívta Érvénytelen kapcsolati hivatkozás Némítás nincsenek részletek Nem fogadott hívás Világos - Az üzenet törlésre kerül - ez nem vonható vissza! + Az üzenet törlésre kerül - ez a művelet nem vonható vissza! Markdown segítség új üzenet Régi adatbázis archívum Hálózati beállítások Nincs kézbesítési információ moderált - A tag eltávolítása a csoportból - ez nem vonható vissza! + A tag eltávolítása a csoportból - ez a művelet nem vonható vissza! Győződjön meg róla, hogy az XFTP-kiszolgáló címei megfelelő formátumúak, sorszeparáltak és nem duplikáltak. Nem kerültek ismerősök kiválasztásra Nincsenek fogadott, vagy küldött fájlok @@ -721,7 +721,7 @@ Helyi név Hálózat és kiszolgálók Értesítés előnézet - Társítsa össze a mobil és az asztali alkalmazásokat! 🔗! + Társítsa össze a mobil és az asztali alkalmazásokat! 🔗 közvetett (%1$s) Hamarosan további fejlesztések érkeznek! Az üzenetreakciók ebben a csevegésben le vannak tiltva. @@ -731,7 +731,7 @@ Most már az adminok is: \n- törölhetik a tagok üzeneteit. \n- letilthatnak tagokat (\"megfigyelő\" szerepkör) - %1$s meghívott + meghívta %1$s-t Ebben a csoportban az üzenetreakciók le vannak tiltva. Nem nincs szöveg @@ -754,8 +754,8 @@ Új kapcsolattartási kérelem Csatlakozás a csoporthoz Összekapcsolt számítógép beállítások - meghívott a csoport hivatkozásán keresztül - elhagyta + meghívta a csoport hivatkozásán keresztül + elhagyta a csoportot Összekapcsolt számítógépek Nincs alkalmazás jelkód Némítás, ha inaktív! @@ -764,19 +764,19 @@ Moderálás be Japán és Portugál kezelőfelület - Ebben a csoportban az üzenetek visszafordíthatatlan törlése le van tiltva. + Ebben a csoportban az üzenetek végleges törlése le van tiltva. Onion kiszolgálók nem lesznek használva. %s eszközzel megszakadt a kapcsolat]]> hónap Üzenetvázlat Egy üzenet eltüntetése - Visszafordíthatatlan üzenettörlés + Végleges üzenettörlés Egyszerre csak 10 videó küldhető el Csak ön adhat hozzá üzenetreakciókat. - elhagyta - Ebben a csevegésben az üzenetek visszafordíthatatlan törlése le van tiltva. + elhagyta a csoportot + Ebben a csevegésben az üzenetek végleges törlése le van tiltva. Max 40 másodperc, azonnal fogadható. - inkognitó a ismerős azonosító hivatkozáson keresztül + inkognitó az ismerős azonosító hivatkozásán keresztül A kapcsolódáshoz Onion kiszolgálókra lesz szükség. \nFigyelem: .onion cím nélkül nem fog tudni kapcsolódni a kiszolgálókhoz. Olasz kezelőfelület @@ -788,19 +788,19 @@ Elhagy Rendben Nincsenek szűrt csevegések - Érvénytelen adat + érvénytelen adat Győződjön meg arról, hogy a WebRTC ICE-kiszolgáló címei megfelelő formátumúak, sorszeparáltak és nem duplikáltak. Csak a csoporttulajdonosok engedélyezhetik a fájlok- és a médiatartalmak küldését. A fájl betöltése Nincs hozzáadandó ismerős Üzenetvázlat - meghívott, hogy csatlakozzon + meghívta Egyszer használatos meghívó hivatkozás Értesítések Egyszerre csak 10 kép küldhető el ajánlott %s: %2s Nem kompatibilis! - Tegye priváttá profilját! + Tegye priváttá a profilját! Üzenetkézbesítési hiba Több csevegőprofil töröltnek jelölve @@ -820,7 +820,7 @@ Bejelentkezés hitelesítő adatokkal érvénytelen üzenet formátum Csatlakozás - Az értesítések az alkalmazás elindításáig nem fognak működni. + Az értesítések az alkalmazás elindításáig nem fognak működni ki` (ez az eszköz) v%s)]]> ajánlott %s @@ -840,12 +840,12 @@ csatlakozás mint %s Nincs kiválasztott csevegés Csak helyi profiladatok - inkognitó egyszer használatos hivatkozás által - Moderálva ekkor: %s + inkognitó az egyszer használatos hivatkozáson keresztül + Moderálva lett ekkor: %s Egyszer használatos meghívó hivatkozás Érvénytelen név! Beszélgessünk a SimpleX Chat-ben - Moderálva ekkor + Moderálva lett ekkor: Élő üzenetek Ellenőrzöttként jelölve Üzenetkézbesítési bizonylatok! @@ -866,7 +866,7 @@ ÜZENETEK ÉS FÁJLOK tag Privát kapcsolat létrehozása - Moderálva %s által + moderálva lett %s által Győződjön meg arról, hogy a fájl helyes YAML-szintaxist tartalmaz. Exportálja a témát, hogy legyen egy példa a téma fájl szerkezetére. dőlt Érvénytelen fájl elérési útvonal @@ -879,12 +879,12 @@ Bejövő hanghívás Kulcstartó hiba Csatlakozik a csoporthoz? - Az inkognitómód védi személyes adatait azáltal, hogy minden ismerőshöz új véletlenszerű profilt használ. + Az inkognitó mód védi személyes adatait azáltal, hogy minden ismerőshöz új véletlenszerű profilt használ. - stabilabb üzenetkézbesítés. \n- valamivel jobb csoportok. \n- és még sok más! Üzenetreakciók - Nincs csatlakoztatott mobil eszköz + Nincs társított mobil eszköz Hálózat állapota Új jelkód Valószínűleg ez az ismerős törölte önnel a kapcsolatot. @@ -894,7 +894,7 @@ Rendszeres fogadott, tiltott Kapcsolódási kérés megismétlése? - Visszafordíthatatlanul csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra) + Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra) Szerepkör SimpleX ismerős azonosítója Megállítás @@ -921,7 +921,7 @@ Frissítés Videó elküldve Adatbázis jelmondat megváltoztatása - App beállítások megnyitása + Alkalmazás beállítások megnyitása A jelkód nem változott! Frissítés Választás @@ -939,7 +939,7 @@ Megosztás Fogadott üzenet Üdvözlő üzenet - %s, %s és %d további tag csatlakozott + %s, %s és további %d tag csatlakozott Csak az ismerőse tud hívást indítani. TÉMÁK Túl sok videó! @@ -982,27 +982,27 @@ Visszavon Ismerős felkérése, hogy engedélyezze a hangüzenetek küldését. egyszer használatos hivatkozást osztott meg - A hivatkozás megnyitása böngészőben gyengítheti az adatvédelem és biztonság szintjét. A megbízhatatlan SimpleX hivatkozások vörössel vannak kiemelve. + A hivatkozás megnyitása a böngészőben gyengítheti az adatvédelmet és a biztonságot. A megbízhatatlan SimpleX hivatkozások pirossal vannak kiemelve. ICE kiszolgálók Kapcsolódás elfogadva Elutasítás - Ismerős és üzenet mutatása + Ismerős és üzenet megjelenítése BEÁLLÍTÁSOK Felhasználói fiók jelszavának mentése Fájl küldés megszakítása? Számítógép leválasztása? A hangüzenetek le vannak tilva! - A kapcsolódáshoz közvetlen üzenet küldése + Közvetlen üzenet küldése a csatlakozáshoz PING számláló - Fejlesztői beállítások mutatása - %s csatlakozva + Fejlesztői beállítások megjelenítése + %s csatlakozott Rendszer Amikor elérhető Hangüzenet (%1$s) %s (jelenlegi) Saját kiszolgáló Véletlen - Megosztás ismerősökkel... + Megosztás az ismerősökkel ön Nincsenek csevegési üzenetek Küldés @@ -1039,7 +1039,7 @@ Elküldés Biztonsági kód Adja meg a helyes aktuális jelmondatát. - Az elküldött üzenetek visszafordíthatatlan törlése le van tiltva. + Az elküldött üzenetek végleges törlése le van tiltva. Üzenetreakció tiltása. Véletlenszerű jelmondat használata egyenrangú @@ -1048,11 +1048,11 @@ Kiszolgálók mentése? A SimpleX Chat biztonsága a Trail of Bits által lett auditálva. módosított csoport profil - TÁMOGASSA A SIMPLEX CHATET! + TÁMOGASSA A SIMPLEX CHATET SimpleX Chat szolgáltatás Nem lehet üzeneteket küldeni! %s ellenőrzött - Jelszó mutatása + Jelszó megjelenítése Adatvédelem és biztonság Tag eltávolítása A jelkód beállítva! @@ -1072,7 +1072,7 @@ Leállítás? Jelmondat szükséges Privát értesítések - Meghívott egy ismerőst + Meghívta egy ismerősét %s nincs ellenőrizve Koppintson a csatlakozáshoz Ennek az eszköznek a neve @@ -1093,13 +1093,13 @@ Csevegési profilok tulajdonos Bekapcsolás - %s, %s és %s csatlakozott + %s, %s és %s csatlakoztak SimpleX egyszer használatos meghívó Hívások küldés sikertelen TÉMA SZÍNEK Visszaállít - Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem visszavonható. + Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem vonható vissza. Másodlagos SOCKS PROXY Mentés @@ -1134,7 +1134,7 @@ Használat számítógépről ÖN port %d - Kapcsolódás hivatkozás által + Csatlakozás hivatkozáson keresztül Azonosító megosztása A kiszolgáló QR-kódjának beolvasása Megállítás @@ -1147,17 +1147,17 @@ Biztonsági kód ellenőrzése eltávolítottak SimpleX azonosító - Mutat: + Megjelenítés: fogadott válasz… Adatbázismentés visszaállítása? Üzenetek fogadása… - %s és %s csatlakozva + %s és %s csatlakoztak megfigyelő szerep Port Jelkód beállítása Változáslista Csoport megnyitása - Elküldve ekkor + Elküldve ekkor: Hangüzenetek küldése le van tiltva. Utolsó üzenetek megjelenítése Az előre beállított kiszolgáló címe @@ -1184,7 +1184,7 @@ Rendszeres értesítések Kihagyott üzenetek A hangüzenetek küldése le van tiltva. - Ismerős nevének beállítása... + Ismerős nevének beállítása Csak ön tud eltűnő üzeneteket küldeni. Kép/videó megoszása… ön: %1$s @@ -1203,13 +1203,13 @@ Élő üzenet küldése Adatvédelem újraértelmezve Hangüzenet… - App képernyőjének védelme + Alkalmazás képernyőjének védelme QR-kód megjelenítése videóhívás Nem kedvenc Üzenet kézbesítési jelentések küldése SimpleX azonosító - Koppintson a gombra + Koppintson a Mentés és ismerős értesítése Elutasított hívás SOCKS proxy beállítások @@ -1234,7 +1234,7 @@ SOCKS proxy használata? Hangszóró kikapcsolva hét - Mutasd + Megjelenítés WebRTC ICE kiszolgálók Fájl visszavonása? Közvetlen üzenet küldése @@ -1262,7 +1262,7 @@ Alaphelyzetbe állítás Csak az ismerőse tud üzenetreakciókat küldeni. Hangüzenetek - elhagyta + elhagyta a csoportot Hangüzenet rögzítése SimpleX zárolás bekapcsolva közvetlen üzenet küldése @@ -1273,38 +1273,38 @@ SimpleX zárolás nincs engedélyezve! SimpleX zárolás Beállítások - Csevegési adatbázisa + Csevegési adatbázis %1$s eltávolítva A kiszolgáló tesztje sikertelen! Kapcsolat ellenőrzése Tudjon meg többet A küldő megszakította a fájl átvitelt. Csevegési szolgáltatás megállítása? - Fogadva ekkor + Fogadva ekkor: Beállítva 1 nap Felfedés Fogadott üzenet - Csak az ismerős tud visszafordíthatatlanul törölni üzeneteket (megjelölheti őket törlésre). (24 óra) + Csak az ismerőse tudja az üzeneteket véglegesen törölni (ön csak törlésre jelölheti meg azokat). (24 óra) Az önmegsemmisítési jelkód megváltozott! SimpleX Chat kiszolgálók használatban. SimpleX Chat kiszolgálók használata? Csevegési profil felfedése Videók és fájlok 1Gb méretig TCP kapcsolat időtúllépés - A %1$s SimpleX azonosítója megosztásra kerül. - Már csatlakozott: %1$s. + A(z) %1$s nevű profiljának SimpleX azonosítója megosztásra fog kerülni. + Ön már csatlakozott ehhez: %1$s. Jelenlegi csevegési adatbázis TÖRLÉSRE és FELCSERÉLÉSRE kerül az importált által! -\nEz a művelet nem visszavonható - profilok, ismerősök, csevegési üzenetek és fájlok véglegesen elvesznek! +\nEz a művelet nem vonható vissza - profiljai, ismerősei, csevegési üzenetei és fájljai véglegesen törölve lesznek! Ötletek és javaslatok Figyelmeztetés: néhány adat elveszhet! Koppintson az új csevegés indításához Várakozás a számítógépre… A privát üzenetküldés következő generációja Hálózati beállítások megváltoztatása? - Várakozás a mobiltelefon csatlakozására: + Várakozás a mobiltelefon társítására: Kapcsolat biztonságának ellenőrzése fájlok küldése egyelőre még nem támogatott - Azonosítója erre változott: %s + azonosítója erre változott: %s fájlok fogadása egyelőre még nem támogatott Csoport profil mentése Alaphelyzetbe állítás @@ -1357,8 +1357,8 @@ Kiszolgálóhoz történő csatlakozás, mely az adott ismerőstől érkező üzenetek fogadására szolgál. Később engedélyezheti a Beállításokban Akkor tud csatlakozni a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később! - eltérő migráció az appban/adatbázisban: %s / %s - %1$s.]]> + különböző átköltöztetés az alkalmazásban/adatbázisban: %s / %s + %1$s.]]> Profil felfedése Ez a hivatkozás nem érvényes kapcsolati hivatkozás! A végpontok közötti titkosítás ellenőrzéséhez hasonlítsa össze (vagy szkennelje be) az ismerőse eszközén lévő kódot. @@ -1384,9 +1384,9 @@ Alkalmazás akkumulátor használata / Korlátlan módot az alkalmazás beállításaiban.]]> Biztonságos kvantumrezisztens protokollon keresztül. - hangüzenetek 5 percig. -\n- egyedi eltűnési időhatár -\n- előzmény szerkesztése - Használat számítógépről gombra a mobil appban és olvassa be a QR-kódot!]]> +\n- egyedi eltűnési időhatár. +\n- előzmény szerkesztése. + Használat számítógépről menüpontot a mobil alkalmazásban és olvassa be a QR-kódot.]]> %s at %s Akkor csatlakozik, amikor az ismerősének az eszköze online lesz, várjon, vagy ellenőrizze később! Kéretlen üzenetek elrejtése. @@ -1402,37 +1402,37 @@ Kapcsolat izolációs mód frissítése? Kapcsolat izolációs mód Ettől a csoporttól nem fog értesítéseket kapni. A csevegési előzmények megmaradnak. - A csevegési adatbázis nem titkosított - állítson be egy jelmondatot annak védelméhez! + A csevegési adatbázis nem titkosított - állítson be egy jelmondatot annak védelméhez. Közvetlen internet kapcsolat használata? Továbbra is kap hívásokat és értesítéseket a némított profiloktól, ha azok aktívak. - A fő csevegési profilja megküldésre kerül a csoporttagok számára. + A fő csevegési profilja megküldésre kerül a csoporttagok számára Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüpontban. Rejtett profiljának felfedéséhez írja be a teljes jelszót a Csevegési profilok oldal keresőmezőjébe. A csevegés frissítése és megnyitása Hangüzeneteket küldéséhez engedélyeznie kell azok küldését az ismerősei számára. fogadja az üzeneteket, ismerősöket – a kiszolgálók, amelyeket az üzenetküldéshez használ.]]> %1$s csoport tagja.]]> - Azonosítója megváltoztatva + azonosítója megváltoztatva Ismerősei engedélyezhetik a teljes üzenet törlést. A jelmondatot minden alkalommal meg kell adnia, amikor az alkalmazás elindul - nem az eszközön kerül tárolásra. Ha engedélyezni szeretné, hogy egy mobilalkalmazás csatlakozzon a számítógéphez, akkor nyissa meg ezt a portot a tűzfalában, ha engedélyezte azt - Profilja, ismerősök és az elküldött üzenetek az eszközön kerülnek tárolásra. + Profilja, ismerősei és az elküldött üzenetei az eszközön kerülnek tárolásra. Alkalmazás akkumulátor használata / Korlátlan módot az alkalmazás beállításaiban.]]> Ez a karakterlánc nem egy meghívó hivatkozás! Új csevegés kezdése - Már csatlakozik ezen az egyszer használatos hivatkozáson keresztül! + Ön már csatlakozik ezen az egyszer használatos hivatkozáson keresztül! Nem veszíti el az ismerőseit, ha később törli az azonosítóját. A beállítások frissítése a kiszolgálókhoz való újra kapcsolódással jár. kapcsolatba akar lépni veled! - Saját szerepköre erre változott: %s + saját szerepköre erre változott: %s A csevegési szolgáltatás elindítható a Beállítások / Adatbázis menüpontban vagy az alkalmazás újraindításával. Kód ellenőrzése a mobilon Csatlakozott ehhez a csoporthoz. Kapcsolódás a meghívó csoporttaghoz. a SimpleX Chat fejlesztőivel, ahol bármiről kérdezhet és értesülhet az újdonságokról.]]> Opcionális üdvözlő üzenettel. Ismeretlen adatbázis hiba: %s - Elrejthet vagy némíthat egy felhasználói profilt - tartsa lenyomva a menühöz! - Inkognító mód csatlakozáskor + Elrejthet vagy némíthat egy felhasználói profilt - tartsa lenyomva a menühöz. + Inkognító mód csatlakozáskor. Tor .onion host beállítások frissítése? Megoszthat egy hivatkozást vagy QR-kódot - így bárki csatlakozhat a csoporthoz. Ha a csoport később törlésre kerül, akkor nem fogja elveszíteni annak tagjait. Csatlakozott ehhez a csoporthoz @@ -1442,11 +1442,11 @@ Kód ellenőrzése a számítógépen Az időzóna védelme érdekében a kép-/hangfájlok UTC-t használnak. Csoporttag részére a csatlakozási kérelem eküldésre kerül. - Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. + Inkognitó profil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. Már kért egy csatlakozást ezen az azonosítón keresztül! - Megoszthatja ezt a SimpleX azonosítót ismerőseivel, hogy kapcsolatba léphessenek ezzel: %s. + Megoszthatja ezt a SimpleX azonosítót ismerőseivel, hogy kapcsolatba léphessenek vele: %s. Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat. - Megjelenő üzenetet beállítása új tagok részére! + Megjelenő üzenetek beállítása az új tagok számára! Köszönet a felhasználóknak - hozzájárulás a Weblaten! A kézbesítési jelentés küldése minden ismerős számára engedélyezésre kerül. Protokoll időkorlát KB-onként @@ -1460,7 +1460,7 @@ Küldés ezen keresztül: Köszönet a felhasználóknak - hozzájárulás a Weblaten! A kézbesítési jelentések küldése engedélyezésre kerül az összes látható csevegési profilban lévő minden ismerős számára. - Bluetooth támogatás és egyéb fejlesztések. + Bluetooth támogatás és további fejlesztések. Ez a funkció még nem támogatott. Próbálja meg a következő kiadásban. A bejegyzés frissítve: %s Tagok meghívásának kihagyása @@ -1468,7 +1468,7 @@ Ismerőse NEM fog tudni csatlakozni, akivel megosztotta ezt a hivatkozást! A véletlenszerű jelmondat egyszerű szövegként van tárolva a beállításokban. \nEz később megváltoztatható. - Koppintson az inkognitómódhoz való csatlakozáshoz + Koppintson az inkognitóban való csatlakozáshoz Jelmondat beállítása az exportáláshoz Kézbesítési jelentések le vannak tiltva a(z) %d csoportban Néhány nem végzetes hiba történt az importálás során – további részletekért a csevegési konzolban olvashat. @@ -1507,12 +1507,12 @@ A jelenlegi csevegési profilhoz tartozó új kapcsolatok kiszolgálói Fogadás ezen keresztül: Tárolja el biztonságosan jelmondát, mert ha elveszti azt, akkor NEM férhet hozzá a csevegéshez. - A szerepkör \"%s\"-re fog változni. A tag új meghívót kap. + A tag szerepköre erre fog változni: \"%s\". A tag új meghívót fog kapni. profilkép helyőrző A titkosítás működik, és új titkosítási egyezményre nincs szükség. Ez kapcsolati hibákat eredményezhet! - Ez a művelet nem vonható vissza - profilok, ismerősök, üzenetek és fájlok visszafordíthatatlanul törlésre kerülnek. + Ez a művelet nem vonható vissza - profiljai, ismerősei, üzenetei és fájljai véglegesen törlésre kerülnek. A bejegyzés frissítve - Felhasználói útmutatóban olvasható.]]> + Használati útmutatóban olvasható.]]> A jelmondat a beállításokban egyszerű szövegként van tárolva. Konzol megjelenítése új ablakban Az előző üzenet hash-e más. @@ -1522,7 +1522,7 @@ hiba a tartalom megjelenítése közben hiba az üzenet megjelenítésekor Láthatóvá teheti SimpleX beli ismerősei számára a Beállításokban. - Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagoknak. + Legfeljebb az utolsó 100 üzenet kerüljön elküldésre az új tagok számára. A beolvasott kód nem egy SimpleX hivatkozás QR-kód. A beillesztett szöveg nem egy SimpleX hivatkozás. A meghívó hivatkozását újra megtekintheti a kapcsolat részleteinél. @@ -1535,11 +1535,11 @@ Ismerős hozzáadása: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő csatlakozáshoz.]]> Csoport létrehozása: új csoport létrehozásához.]]> A csevegés leállt. Ha már használta ezt az adatbázist egy másik eszközön, úgy visszaállítás szükséges a csevegés megkezdése előtt. - Az előzmények nem kerülnek elküldésre új tagok részére. + Az előzmények nem kerülnek elküldésre az új tagok számára. Újrapróbálkozás A fényképező nem elérhető - Az utolsó 100 üzenet elküldése az új tagoknak. - Ne küldjön előzményeket az új tagok részére. + Az utolsó 100 üzenet elküldése az új tagok számára. + Az előzmények ne kerüljenek elküldésre az új tagok számára. Vagy mutassa meg ezt a kódot Kamera hozzáférés engedélyezése Fel nem használt meghívó megtartása? @@ -1602,12 +1602,12 @@ Létrehozva ekkor: Mentett üzenet Megosztva ekkor: %s - Minden üzenet törlésre kerül – ez nem vonható vissza! + Minden üzenet törlésre kerül – ez a művelet nem vonható vissza! Továbbfejlesztett üzenetküldés Csatlakozás csoportos beszélgetésekhez Hivatkozás beillesztése a csatlakozáshoz! Privát jegyzetek - A keresősáv fogadja a meghívó hivatkozásokat. + A keresősáv elfogadja a meghívó hivatkozásokat. Titkosított fájlokkal és médiatartalommal. Csökkentett akkumulátorhasználattal. Magyar és török felhasználói felület @@ -1627,7 +1627,7 @@ Hiba a tag mindenki számára való letiltása során Az üzenet túl nagy Az üdvözlő üzenet túl hosszú - Az adatbázis migrációja folyamatban van. + Az adatbázis átköltöztetése folyamatban van. \nEz eltarthat néhány percig. Hanghívás A hívás befejeződött @@ -1711,4 +1711,44 @@ végpontok közötti titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]> végpontok közötti kvantumrezisztens titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]> Hiba az értesítés megjelenítésekor, lépjen kapcsolatba a fejlesztőkkel. + Keresse meg ezt az engedélyt az Android beállításaiban, és adja meg kézzel. + Engedélyezés a beállításokban + Engedély(ek) megadása a hívások kezdeményezéséhez + Mikrofon + Beállítások megnyitása + Kamera + Kamera és mikrofon + Engedélyek megadása + Vezetékes Ethernet + Mobilhálózat + Internetkapcsolat + Nincs hálózati kapcsolat + További + Wi-Fi + továbbküldve + A SimpleX hivatkozások küldése le van tiltva + A csoport tagjai küldhetnek SimpleX hivatkozásokat. + tulajdonosok + adminok + minden tag + SimpleX hivatkozás + A hangüzenetek küldése le van tiltva + A SimpleX hivatkozások küldése ebben a csoportban le van tiltva. + A SimpleX hivatkozások küldése le van tiltva + Fájlok és média tartalom küldése le van tiltva + A SimpleX hivatkozások küldése engedélyezve van. + Számukra engedélyezve: + mentett + mentve innen: %s + Továbbítva innen: + A címzett(ek) nem látja(k), hogy kitől származik ez az üzenet. + Mentett + Mentve innen: + Letöltés + Továbbítás + Továbbított + Üzenet továbbítása… + Fejhallgató + Hangszóró + Fülhallgató \ No newline at end of file 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 69710a68a2..e062d742cd 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml @@ -1715,4 +1715,42 @@ Non devi usare lo stesso database su due dispositivi.]]> Puoi fare un altro tentativo. Puoi fare un altro tentativo. + Errore nel mostrare la notifica, contatta gli sviluppatori. + Trova questa autorizzazione nelle impostazioni di Android e concedila a mano. + Fotocamera + Fotocamera e microfono + Concedi autorizzazioni + Concedi nelle impostazioni + Concedi la/le autorizzazione/i per effettuare chiamate + Microfono + Apri le impostazioni + inoltrato + Connessione di rete + Nessuna connessione di rete + Mobile + Altro + WiFi + Cavo ethernet + Link di SimpleX non consentiti + File e multimediali non consentiti + Messaggi vocali non consentiti + Link di SimpleX + Consenti di inviare link di SimpleX. + Vieta l\'invio di link di SimpleX + Attivo per + I membri del gruppo possono inviare link di Simplex. + proprietari + amministratori + tutti i membri + I link di SimpleX sono vietati in questo gruppo. + salvato + Salvato da + Inoltra messaggio… + Inoltrato + Inoltrato da + Scarica + Inoltra + I destinatari non possono vedere da chi proviene questo messaggio. + Salvato + salvato da %s \ No newline at end of file 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 7bc282de3a..554f80e74d 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml @@ -116,7 +116,7 @@ アプリを更新し、開発者にご連絡ください。 即時通知! 即時通知が無効になってます! - 暗証フレーズが必要 + パスフレーズが必要 プライベート 連絡先の名前 連絡先が非表示: @@ -192,8 +192,8 @@ プライバシーとセキュリティ強化 シークレットモード %s の新機能 - 新しい暗証フレーズ - 一度も + 新しいパスフレーズ + なし 新しいメッセージ いいえ 通知 @@ -235,8 +235,8 @@ 音声メッセージを送れるのはあなたの連絡相手だけです。 データベース暗号化のパスフレーズが更新され、キーストア (暗証キー保管庫)に保存されます。 データベースエラー - データベースはランダムな暗証フレーズで暗号化済みです。エキスポートする前に更新してください。 - データベース暗証フレーズはキーストア (暗証キー保管庫) に保存された暗証フレーズと異なります。 + データベースはランダムなパスフレーズで暗号化済みです。エクスポートする前に更新してください。 + データベースパスフレーズはキーストア (暗証キー保管庫) に保存されたパスフレーズと異なります。 %d日 %d 日 削除 @@ -268,7 +268,7 @@ QRコード リンクが正しいかどうかご確認ください。または、連絡相手にもう一度リンクをお求めください。 %1$s との接続を確認し、もう一度お試しください。 - 現在の正しい暗証フレーズを入力してください。 + 現在の正しいパスフレーズを入力してください。 プレセットサーバ プレセットサーバのアドレス 接続待ち… @@ -352,8 +352,8 @@ 通話 チャットは稼働中 チャットが停止してます。 - データベース暗証フレーズ - データベースをエキスポート + データベースパスフレーズ + データベースをエクスポート データベースを削除 データベースを読み込みますか? 新しいデータベースのアーカイブ @@ -363,14 +363,14 @@ %d ファイル|合計: %s 暗号化する 削除 - 現在の暗証フレーズ + 現在のパスフレーズ データベースはランダムなパスフレーズで暗号化済みで、変更可能です。 - データベースの暗証フレーズを更新しますか? + データベースのパスフレーズを更新しますか? データベースが暗号化されます。 データベースが暗号化され、パスフレーズがキーストア (暗証キー保管庫) にほぞんされます。 キーストア (暗証キーの保管庫) にアクセスできないため、データベースのパスワードが保存できません。 データベース暗号化のパスフレーズが更新されます。 - チャットを開くにはデータベース暗証フレーズが必要です。 + チャットを開くにはデータベースパスフレーズが必要です。 ファイル: %s 作成日時 %1$s アーカイブを削除 @@ -448,7 +448,7 @@ コアのバージョン: v%s 画像を編集 不在着信 - リレー経由で繋がる。 + 常にリレーを使用 エンドツーエンド暗号化済み チャットのデータベースが削除されました。 次の期間が経ったら、メッセージを削除: @@ -458,10 +458,10 @@ データベース暗号化でエラー発生 新しいパスフレーズを確認… データベースを暗号化しますか? - 暗証フレーズを失くさないように保管してください。失くすとチャットにアクセスできなくなります。 - 正しい暗証フレーズを入力 - 暗証フレーズを入力 - キーストア (暗証キー保管庫) に暗証フレーズが見つかりません。入力してください。アプリのデータをバックアップのツールで復元させると暗証フレーズが見つかりかねます。そうではない場合は開発者にご連絡ください。 + パスフレーズを失くさないように保管してください。失くすとチャットにアクセスできなくなります。 + 正しいパスフレーズを入力 + パスフレーズを入力 + キーストア (パスキー保管庫) にパスフレーズが見つかりません。手動で入力してください。これは、バックアップツールを使用してアプリのデータを復元した場合に発生する可能性があります。そうではない場合は開発者にご連絡ください。 リンクを発行する グループ グループのプロフィール保存でエラー発生 @@ -523,7 +523,7 @@ 接続待ちの繋がりを削除しますか? 接続 使い捨ての招待リンク - データベース暗証フレーズとエキスポート + データベースパスフレーズとエクスポート 使い方 マークダウン (書式編集) ガイド サーバを手動で入力 @@ -585,7 +585,7 @@ 間接 (%1$s) シークレットモード シークレット モードでは、連絡先ごとに新しいランダムなプロファイルを使用してプライバシーを保護します。 - いいえ + オフ オン ダイレクトメッセージ 消えるメッセージ @@ -612,9 +612,9 @@ アプリが起動中のみに通知が出ます! 暗号化データベース キーチェーンのエラー - 暗証フレーズを失くさないように保管してください。失くすと変更できなくなります。 + パスフレーズを失くさないように保管してください。失くすと変更できなくなります。 エラー: %s - データベースのバックアップで復旧する際に前の暗証フレーズを入力してください。行われたら元に戻せません。 + データベースのバックアップで復旧する際に前のパスフレーズを入力してください。行われたら元に戻せません。 メンバーを招待する 脱退しました。 %s の役割を %s に変えました。 @@ -685,7 +685,7 @@ 送信元が繋がりリクエストを削除したかもしれません。 このサーバで待ち行列を作るには認証が必要です。パスワードをご確認ください。 SimpleXロック - 通知を受けるには、データベースの暗証フレーズを入力してください。 + 通知を受けるには、データベースのパスフレーズを入力してください。 SimpleX Chat サービス SimpleXロック:オン 起動時、または非アクティブ状態で30秒が経った後に戻ると、認証する必要となります。 @@ -739,9 +739,9 @@ .onionホストを使う 利用可能時に トランスポート隔離 - 保存して、連絡先に公開 + 保存して連絡先に公開 現在のプロフィール - 保存して、連絡先に公開 + 保存して連絡先に公開 あなたのプライバシーとセキュリティを守るメッセージとアプリのプラットフォーム 連絡先情報と届けたメッセージをサーバに保存することは一切ありません。 あなたのチャットはあなたが決めます! @@ -768,7 +768,7 @@ ファイルとメディアが全て削除されます (※元に戻せません※)。低解像度の画像が残ります。 選択中の以前の送受信したメッセージが削除されます (※元に戻せません※)。数分かかります。 更新 - チャットデータベースが暗号化されてません。暗証フレーズを設定して保管してください。 + チャットデータベースが暗号化されてません。パスフレーズを設定して保管してください。 データベースを復元 アプリの設定・データベース経由で、またはアプリの再起動でチャットを始められます。 グループ招待が届きました。参加してグループのメンバーとお繋がりください。 @@ -827,12 +827,12 @@ あなたの通話 %1$dスキップしたメッセージ リンクのプレビューを送信 - 暗証フレーズを設定してからエキスポート + パスフレーズを設定してからエクスポート チャットを閉じますか? - 暗証フレーズをキーストア (暗証キー保管庫) に保存 + パスフレーズをキーストア (パスキー保管庫) に保存 不正なパスフレーズ 不明なエラー - 暗証フレーズをを保存して、チャットを開始 + パスフレーズを保存して、チャットを開始 不明なデータベースのエラー: %s 不正なパスフレーズです! グループ招待が届きました @@ -881,8 +881,8 @@ スピーカーオン あなたのプライバシー この設定は現在のチャットプロフィールのメッセージに適応されます。 - アプリ起動時に暗証フレーズを入力しなければなりません。端末に保存されてません。 - データベースの暗証フレーズ変更が完了してません。 + アプリ起動時にパスフレーズを入力しなければなりません。端末に保存されてません。 + データベースのパスフレーズ変更が完了してません。 リンク、またはQRコードを共有できます。誰でもグループに参加できます。後で削除しても、グループのメンバーがそのままのこります。 元に戻す 更新 @@ -893,7 +893,7 @@ トランスポート隔離 復元 データベースを復元しますか? - 保存して、グループのメンバーにに知らせる + 保存してグループのメンバーに知らせる メールを送る メディア共有… SimpleXリンク @@ -924,9 +924,9 @@ あなたのランダム・プロフィール 音声メッセージ SOCKSプロキシ - データベースのエキスポート、読み込み、削除するにはチャット機能を停止する必要があります。チャット機能を停止すると送受信ができなくなります。 + データベースのエクスポート、読み込み、削除するにはチャット機能を停止する必要があります。チャット機能を停止すると送受信ができなくなります。 あなたのプロフィール、連絡先、メッセージ、ファイルが完全削除されます (※元に戻せません※)。 - データベース暗証フレーズを更新 + データベースパスフレーズを更新 アーカイブを保存 あなたが自分の役割を次に変えました:%s アドレスを変えました @@ -1156,8 +1156,8 @@ アドレス設定エラー アドレスをリンクまたは QR コードとして共有すると、誰でもあなたに接続できます。 後でアドレスを削除しても、連絡先が失われることはありません。 - 連絡先との接続がそのまま続きます。 - 連絡先との接続がそのまま続きます。 プロフィールの更新が連絡先に共有されます。 + 連絡先との接続は維持されます。 + 連絡先との接続は維持されます。 プロフィールの更新が連絡先に共有されます。 SimpleX のアドレスを作成 連絡先に公開する プロフィールの更新は連絡先に送信されます。 @@ -1378,7 +1378,7 @@ パスフレーズを変更するかアプリを再起動すると、平文として設定に保存されます。 パスフレーズは平文として設定に保存されます。 注意: メッセージとファイルのリレーは SOCKS プロキシ経由で接続されます。 通話とリンク プレビューの送信には直接接続が使用されます。]]> - ローカルファイルを暗号化する + ローカルファイルを暗号化 開く 保存されたファイルとメディアを暗号化する メンバー連絡先の作成中にエラーが発生 @@ -1509,7 +1509,7 @@ メンバーのブロックを解除? グループ作成:新しいグループを作成する。]]> モバイルアプリからデスクトップへの接続を許可するには、ファイアウォールでこのポートを開いてください。 - ブロックしたメンバー + メンバーのブロック 表示可能な履歴 デスクトップから使用 セッションコード @@ -1603,7 +1603,7 @@ 通話終了 ブラウザ起動エラー 別の端末から移行 - 暗証フレーズを設定 + パスフレーズを設定 %s をブロック済 管理者によりブロック済 暗号化されたファイルとメディア @@ -1716,4 +1716,29 @@ メッセージ保存済 チャット停止中 エラーが表示された場合は、開発者に連絡してください。 + Androidの設定から権限を設定見つけ、手動で許可。 + 設定で付与 + 権限の付与 + カメラ + カメラとマイク + マイク + 通話許可を付与 + 設定を開く + モバイル回線 + ネットワーク接続なし + Wi-Fi + 有線イーサネット + ネットワーク接続 + その他 + グループメンバーはSimpleXリンクを送信できます。 + オーナー + このグループではSimpleXリンクは禁止されています。 + SimpleXtリンクは許可されていません + 管理者 + 全てのメンバー + SimpleXリンクの送信を許可 + 音声メッセージは許可されていません + ファイルとメディアは許可されていません + SimpleXリンクの送信禁止 + SimpleXリンク \ No newline at end of file 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 57ce7eb06e..13b0877374 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml @@ -7,7 +7,7 @@ a + b Apie SimpleX Pridėti serverį… - Pridėti serverius skenuojant QR kodus. + Pridėti serverius nuskanuojant QR kodus. Išvaizda Programėlės versija Programėlės versija: v%s @@ -18,13 +18,13 @@ Atsiliepti Skambutis baigtas SKAMBUČIAI - Leisti jūsų adresatams negrįžtamai ištrinti išsiųstas žinutes. + Leisti jūsų kontaktams negrįžtamai ištrinti išsiųstas žinutes. (24 valandas) Atgal PROGRAMĖLĖS PIKTOGRAMA visada - Leisti jūsų adresatams siųsti balso žinutes. - Leisti negrįžtamą žinučių ištrynimą tik tuo atveju, jei jūsų adresatas jums tai leidžia. - Leisti balso žinutes tik tuo atveju, jei jūsų adresatas jas leidžia. + Leisti jūsų kontaktams siųsti balso žinutes. + Leisti negrįžtamą žinučių ištrynimą tik tuo atveju, jei jūsų kontaktas jums tai leidžia. (24 valandas) + Leisti balso žinutes tik tuo atveju, jei jūsų kontaktas jas leidžia. Leisti Leisti balso žinutes\? pusjuodis @@ -33,14 +33,14 @@ Garso ir vaizdo skambučiai bloga žinutės maiša blogas žinutės ID - Leisti išnykstančias žinutes tik tuo atveju, jei jūsų adresatas jas leidžia. - Visos žinutės bus ištrintos – to neįmanoma bus atšaukti! Žinutės bus ištrintos TIK jums. - Leisti negrįžtamai ištrinti išsiųstas žinutes. + Leisti išnykstančias žinutes tik tuo atveju, jei jūsų kontaktas jas leidžia. + Visos žinutės bus ištrintos – to bus neįmanoma atšaukti! Žinutės bus ištrintos TIK jums. + Leisti negrįžtamai ištrinti išsiųstas žinutes. (24 valandas) Leisti siųsti išnykstančias žinutes. Leisti siųsti balso žinutes. Leisti siųsti tiesiogines žinutes nariams. Garso ir vaizdo skambučiai - Leisti jūsų adresatams siųsti išnykstančias žinutes. + Leisti jūsų kontaktams siųsti išnykstančias žinutes. Tapatybės nustatymas neprieinamas Turėkite omenyje: jeigu prarasite slaptafrazę, NEBEGALĖSITE jos atkurti ar pakeisti.]]> Atsisakyti @@ -97,11 +97,11 @@ Klaida prisijungiant prie grupės Klaida gaunant failą Klaida keičiant adresą - Klaida ištrinant adresatą + Klaida ištrinant kontaktą Klaida ištrinant grupę Atsijungti Klaida ištrinant naudotojo profilį - Slėpti adresatą ir žinutę + Slėpti kontaktą ir žinutę Kopijuoti Atsakyti Ištrinti žinutę\? @@ -111,7 +111,7 @@ Failas įrašytas Atsijungta Klaida - Paprašykite adresato, kad įjungtų balso žinučių siuntimą. + Paprašykite kontakto, kad įjungtų balso žinučių siuntimą. Atstatyti Ištrinti QR kodas @@ -146,8 +146,8 @@ Visiems taisyta Susisiekite su grupės administratoriumi. - Ištrinti adresatą - Ištrinti adresatą\? + Ištrinti kontaktą + Ištrinti kontaktą? Sukurti slaptą grupę Iš galerijos Leidimas atmestas! @@ -190,14 +190,14 @@ Tamsus Atstatyti spalvas Įrašyti spalvą - Grupės nuostatos + Grupės parinktys Ištrinti visiems Tiesioginės žinutės Išnykstančios žinutės Išnykstančios žinutės Sąsaja prancūzų kalba Patobulintas privatumas ir saugumas - Pažymėta adresatų: %d + Pažymėta kontaktų: %d Ištrinti pokalbio profilį\? Klaida importuojant pokalbio duomenų bazę Ištrinti žinutes po @@ -234,13 +234,13 @@ Ištrinti profilį Sukurti vienkartinio pakvietimo nuorodą Ištrinti - Įrašyti ir pranešti adresatui + Įrašyti ir pranešti kontaktui Įjungti automatinį žinučių ištrynimą\? Klaida ištrinant pokalbio duomenų bazę Klaida pradedant pokalbį Slėpti profilį Importuoti - Įrašyti ir pranešti adresatams + Įrašyti ir pranešti kontaktams pradedama… Naudoti pokalbį Išjungti garsiakalbį @@ -249,7 +249,7 @@ NUSTATYMAI Sistemos nežinomas žinutės formatas - SimpleX adresato adresas + SimpleX kontakto adresas SimpleX grupės nuoroda SimpleX vienkartinis pakvietimas SimpleX nuorodos @@ -268,11 +268,11 @@ Atnaujinti tinklo nustatymus\? SimpleX Chat žinutės SimpleX Chat skambučiai - Rodyti adresatą ir žinutę - Rodyti tik adresatą - Stabdyti pokalbį + Rodyti kontaktą ir žinutę + Rodyti tik kontaktą + Sustabdyti pokalbius Bendrinti žinutę… - Kamera + Fotoaparatas Dėkojame, kad įdiegėte SimpleX Chat! Naudoti serverį Naudoti SOCKS įgaliotąjį serverį\? @@ -283,12 +283,12 @@ Bluetooth palaikymas ir kiti patobulinimai. Bakstelėkite, norėdami prisijungti Rodyti - Stabdyti + Sustabdyti Naujinti ir atverti pokalbį Perjungti neskaityta Rodyti: - Stabdyti pokalbį\? + Sustabdyti pokalbius? Atnaujinti Nežinoma klaida Pradėti naują pokalbį @@ -302,7 +302,7 @@ SimpleX jūs per grupės nuorodą - per adresato adreso nuorodą + per kontakto adreso nuorodą per vienkartinę nuorodą per %1$s Per naršyklę @@ -326,12 +326,12 @@ Naudojami SimpleX Chat serveriai. Išplėstiniai tinklo nustatymai Jūsų dabartinis profilis - Jūsų profilis yra saugomas jūsų įrenginyje ir bendrinamas tik su jūsų adresatais. SimpleX serveriai negali matyti jūsų profilio. + Jūsų profilis yra saugomas jūsų įrenginyje ir bendrinamas tik su jūsų kontaktais. SimpleX serveriai negali matyti jūsų profilio. vaizdo skambutis Jūsų skambučiai WebRTC ICE serveriai Jūsų ICE serveriai - jūs išėjote + išėjote administratorius Jūsų atsitiktinis profilis Jūs leidžiate @@ -363,17 +363,17 @@ Išnykstančios žinutės šiame pokalbyje yra uždraustos. Balso žinutės šioje grupėje yra uždraustos. Prisijungti prie grupės? - Prisijungti per adresato adresą? + Prisijungti per kontakto adresą? failų siuntimas kol kas nepalaikomas neteisingas žinutės formatas failų gavimas kol kas nepalaikomas neteisingas pokalbis neteisingi duomenys inkognito per vienkartinę nuorodą - Adresatas jau yra + Kontaktas jau yra Nepavyksta inicijuoti duomenų bazės Žinutės tekstas - Paslėptas adresatas: + Paslėptas kontaktas: Bendrinti mediją… Didelis failas! Balso žinutės uždraustos! @@ -400,15 +400,15 @@ Šalinti narį Šviesus įjungta jums - Tiek jūs, tiek ir jūsų adresatas gali siųsti išnykstančias žinutes. + Tiek jūs, tiek ir jūsų kontaktas gali siųsti išnykstančias žinutes. Grupės nariai gali siųsti balso žinutes. SimpleX Chat saugumo auditą atliko „Trail of Bits“. Saugumo įvertinimas Įrašyti grupės profilį - Tiek jūs, tiek ir jūsų adresatas gali negrįžtamai ištrinti išsiųstas žinutes. - Tiek jūs, tiek ir jūsų adresatas gali siųsti balso žinutes. + Tiek jūs, tiek ir jūsų kontaktas gali negrįžtamai ištrinti išsiųstas žinutes. (24 valandas) + Tiek jūs, tiek ir jūsų kontaktas gali siųsti balso žinutes. Norėdami gauti pranešimus, įveskite duomenų bazės slaptafrazę - Adresato vardas + Kontakto vardas SimpleX užraktas Įjungti SimpleX užraktas įjungtas @@ -425,7 +425,7 @@ Patikrinkite serverio adresą ir bandykite dar kartą. Neteisingas serverio adresas! Pokalbio profilis - Profilis yra bendrinamas tik su jūsų adresatais. + Profilis yra bendrinamas tik su jūsų kontaktais. „GitHub“ saugykloje.]]> SOCKS ĮGALIOTASIS SERVERIS Įrašyti slaptafrazę ir atverti pokalbį @@ -440,14 +440,14 @@ Išvalyti Išeiti iš grupės Vaidmuo - Grupė yra pilnai decentralizuota – ji yra matoma tik nariams. + Pilnai decentralizuota – ji yra matoma tik nariams. Apipavidalinimas - įjungta adresatui + įjungta kontaktui Išnykstančios žinutės šioje grupėje yra uždraustos. Grupės nariai gali siųsti tiesiogines žinutes. Grupės nariai gali siųsti išnykstančias žinutes. Slėpti programėlės ekraną paskiausių programėlių sąraše. - Adresatas leidžia + Kontaktas leidžia Balso žinutės šiame pokalbyje yra uždraustos. Išsiųstos žinutės bus ištrintos po nustatyto laiko. Nebeslėpti @@ -463,7 +463,7 @@ Vaidmuo bus pakeistas į „%s“. Visiems grupėje bus pranešta. Vaidmuo bus pakeistas į „%s“. Narys gaus naują pakvietimą. Pokalbio nuostatos - Adresato nuostatos + Kontakto nuostatos Prisijungti Keisti SERVERIAI @@ -497,13 +497,13 @@ Žymėti kaip skaitytą Prievadas Failo siuntimas bus sustabdytas. - Stabdyti + Sustabdyti Stabdyti failą Stabdyti failo gavimą\? Stabdyti failo siuntimą\? Šis tekstas yra prieinamas nustatymuose Garso/vaizdo skambučiai yra uždrausti. - Tiek jūs, tiek ir jūsų adresatas gali skambinti. + Tiek jūs, tiek ir jūsų kontaktas gali skambinti. Žinutės juodraštis Apsaugokite slaptažodžiu savo pokalbių profilius! Blogas žinutės ID @@ -531,21 +531,21 @@ 5 minutės Mažiausios akumuliatoriaus sąnaudos. Jūs gausite pranešimus tik tada, kai programėlė bus atverta (BE foninės tarnybos).]]> Nutraukti adreso keitimą - Automatiškai priimti adresatų užklausas + Automatiškai priimti kontaktų užklausas Jį įrašius visi duomenys bus pašalinti. - Kiekvienam adresatui ir grupės nariui bus naudojamas atskiras TCP ryšys (ir SOCKS prisijungimo duomenys). -\nTurėkite omenyje: jei turite daug ryšių, akumuliatoriaus ir interneto duomenų sąnaudos gali būti žymiai didesnės ir, kartais, ryšiai gali patirti nesėkmę. + Kiekvienam kontaktui ir grupės nariui bus naudojamas atskiras TCP prisijungimas (ir SOCKS prisijungimo duomenys). +\nTurėkite omenyje: jei turite daug prisijungimų, akumuliatoriaus ir interneto duomenų sąnaudos gali būti žymiai didesnės ir, kartais, prisijungimai gali patirti nesėkmę. %1$s nori su jumis susisiekti per Yra įjungtas akumuliatoriaus naudojimo optimizavimas, išjungiantis foninę tarnybą ir periodines užklausas apie naujas žinutes. Nustatymuose galite įjungti ją iš naujo. Visada įjungta Programėlė galės gauti sistemos pranešimus tik tada, kai veiks. Jokia foninė tarnyba nebus paleidžiama Priimti - Priimti inkognito adresatą + Priimti inkognito režimu Pridėti iš anksto parinktus serverius Administratoriai gali kurti prisijungimo prie grupių nuorodas. Foninė tarnyba visada veikia – pranešimai bus rodomi iš karto, kai tik bus prieinamos žinutės. Patvirtinti tapatybę - Pridėkite adresą prie savo profilio, kad jūsų adresatai galėtų bendrinti jį su kitais žmonėmis. Apie profilio atnaujinimą bus pranešta jūsų adresatams. + Pridėkite adresą prie savo profilio, kad jūsų kontaktai galėtų bendrinti jį su kitais žmonėmis. Apie profilio atnaujinimą bus pranešta jūsų kontaktams. Nutraukti adreso keitimą? Adreso keitimas bus nutrauktas. Bus naudojamas senas priėmimo adresas. 1 minutė @@ -560,28 +560,28 @@ Leisti siųsti failus ir mediją. Nutraukti Praleista %1$d žinučių. - Jūsų adresatai nepraras ryšio su jumis. + Jūsų kontaktai išliks prisijungę prie jūsų. atsilieptas skambutis Priimti Praleista žinučių: %1$d. Programėlės duomenų atsarginė kopija Akcentavimas - Paleidus programėlę iš naujo ar pakeitus slaptafrazę, saugiam slaptafrazės saugojimui bus naudojama „Android Keystore“ – tai leis gauti pranešimus. + Paleidus programėlę iš naujo ar pakeitus slaptafrazę, saugiam slaptafrazės saugojimui bus naudojama Android raktų saugykla – tai leis gauti pranešimus. Fonas 30 sekundžių - Leisti reaguoti į žinutes tik tuo atveju, jeigu tai leidžia jūsų adresatas. + Leisti reaguoti į žinutes tik tuo atveju, jeigu tai leidžia jūsų kontaktas. Apie SimpleX adresą Ar gauti prieigą prie serverių per SOCKS įgaliotąjį serverį naudojant prievadą %d? Prieš įjungiant šią parinktį, privalo būti paleistas įgaliotasis serveris. - Jūsų adresatai nepraras ryšio su jumis. Apie profilio atnaujinimą bus pranešta jūsų adresatams. - garso skambutis (nėra užšifruotas nuo vieno galo iki kito galo) + Jūsų kontaktai išliks prisijungę prie jūsų. Apie profilio atnaujinimą bus pranešta jūsų kontaktams. + garso skambutis (nėra užšifruotas visapusiškai) NARIŲ: %1$s Adresas Priimti - Leisti skambučius tik tuo atveju, jeigu juos leidžia jūsų adresatas. + Leisti skambučius tik tuo atveju, jeigu juos leidžia jūsų kontaktas. sutariama dėl šifravimo… sutariama dėl %s šifravimo… - Leisti jūsų adresatams reaguoti į žinutes. - Leisti jūsų adresatams jums skambinti. + Leisti jūsų kontaktams reaguoti į žinutes. + Leisti jūsų kontaktams jums skambinti. Leisti reaguoti į žinutes. Geresnės žinutės Tapatybės patvirtinimas patyrė nesėkmę @@ -606,7 +606,7 @@ Atšaukti failo peržiūrą Atšaukti vaizdo peržiūrą Duomenų bazės ID: %d - Ištrinti ir pranešti adresatui + Ištrinti ir pranešti kontaktui Tinkintas laikas Arabų, bulgarų, suomių, hebrajų, tajų ir ukrainiečių – dėkojame naudotojams ir Weblate. 6 naujos naudotojo sąsajos kalbos @@ -622,12 +622,12 @@ Pokalbio duomenų bazė ištrinta Pasirinkti failą Talkinti - Adresatai + Kontaktai Plėtotojo įrankiai - Visos žinutės bus ištrintos – to neįmanoma bus atšaukti! - Pridėti adresatą: sukurti naują pakvietimo nuorodą arba prisijungti per gautą nuorodą.]]> - Kamera neprieinama - Adresatai gali žymėti žinutes ištrynimui; jūs galėsite jas peržiūrėti. + Visos žinutės bus ištrintos – to bus neįmanoma atšaukti! + Pridėti kontaktą: sukurti naują pakvietimo nuorodą arba prisijungti per gautą nuorodą.]]> + Fotoaparatas neprieinamas + Kontaktai gali pažymėti žinutes ištrynimui; jūs galėsite jas peržiūrėti. Sukurti profilį Kuriama nuoroda… ištrinta @@ -642,7 +642,7 @@ %dval. Kritinė klaida Sukurti grupę: sukurti naują grupę.]]> - Pridėti adresatą + Pridėti kontaktą Tinkinti apipavidalinimą POKALBIO DUOMENŲ BAZĖ Naudotojo sąsaja kinų ir ispanų kalbomis @@ -687,7 +687,7 @@ - stabilesnis žinučių pristatymas. \n- šiek tiek geresnės grupės. \n- ir daugiau! - Tik jūsų adresatas gali skambinti. + Tik jūsų kontaktas gali skambinti. Atnaujinkite programėlę ir susisiekite su plėtotojais. Atverti niekada @@ -721,7 +721,7 @@ ne Uždrausti garso/vaizdo skambučius. Tik jūs galite siųsti išnykstančias žinutes. - Tik jūsų adresatas gali siųsti išnykstančias žinutes. + Tik jūsų kontaktas gali siųsti išnykstančias žinutes. (šis įrenginys v%s)]]> Vienu metu gali veikti tik vienas įrenginys Nesuderinama! @@ -731,8 +731,995 @@ Bendraukime per Simplex Chat Žinutė per didelė Štai kas naujo %s versijoje - Tik jūsų adresatas gali siųsti balso žinutes. + Tik jūsų kontaktas gali siųsti balso žinutes. Tik grupės savininkai gali įjungti failus ir mediją. Tik grupės savininkai gali keisti grupės nuostatas. Apipavidalinimo importavimo klaida + Prašome pasitikrinti savo tinklo ryšį su %1$s ir bandykite vėl. + Tikrina naujas žinutes kas 10 minučių iki 1 minutės + Nėra programėlės prieigos kodo + Grupės pakvietimas nebegalioja + pakviestas per jūsų grupės nuorodą + Administratoriai gali užblokuoti narį visiems. + Visos naujos žinutės nuo %s bus paslėptos! + Fotoaparatas ir mikrofonas + pakeitė %s rolę į %s + pakeitė tavo rolę į %s + Prisijungti prie savo grupės? + Prijungtas darbastalis + prisijungė tiesiogiai + Prisijungta prie darbastalio + Jungiamasi prie darbastalio + Prisijungimo užklausa išsiųsta! + prisijungimas %1$d + Privatūs užrašai + Ryšiui skirtas laikas + Netinkama prisijungimo nuoroda + Ištrinti eilę + Palyginti failą + Periodiniai pranešimai + Periodiniai pranešimai yra išjungti! + Paslėptas + Įrenginio autentifikacija neįjungta. Galite įjungti SimpleX užraktą nustatymuose, įjungus įrenginio autentifikaciją. + Atidaryti perkėlimo ekraną + Ištrinti nario žinutę? + Kalbėti su kūrėjais + Paprašyta gauti nuotrauką + Prašome palaukti kol failas yra kraunamas iš susieto mobiliojo + Mėgstamas + Ištrinti laukiantį prisijungimą? + Sukurti pokalbių profilį + Jei patvirtinsite, žinučių serveriai galės matyti jūsų IP adresą, ir jūsų tiekėjas - prie kurių serverių jungiatės. + Atkreipkite dėmesį: žinučių ir failų perdavimas yra prijungtas per SOCKS tarpinį serverį. Skambučiams ir nuorodų peržiūrų siuntimui naudojamas tiesioginis ryšys.]]> + Netinkamas vardas! + Sukurti savo profilį + Asmenys gali prisijungti prie jūsų tik per nuorodas kuriomis dalinatės. + Tai gali būti pakeista vėliau nustatymuose. + Tai gali įvykti kai: +\n1. Žinutės galiojimo laikas baigėsi siuntėjo programoje po 2 dienų arba serveryje po 30 dienų. +\n2. Žinutės atšifravimas nepavyko, nes jūs ar jūsų kontaktas naudojo seną duomenų bazės atsarginę kopiją. +\n3. Prisijungimas buvo kompromisuotas. + Prieigos kodas pakeistas! + Patvirtinti naują slaptafrazę… + Prašome įvesti tinkamą dabartinę slaptafrazę. + Raktų grandinės klaida + kontaktas %1$s pasikeitė į %2$s + Kvantiškai atsparus visapusis šifravimas + Grupė bus ištrinta visiems nariams - tai negali būti atšaukta! + Grupė bus ištrinta jums - tai negali būti atšaukta! + Sukurta + (dabartinis) + Ištrinta: %s + Grupės narys nepalaiko sutaisymo + PING skaičius + Tai leidžia daug anonimiškų prisijungimų nesidalinant jokiais bendrais duomenimis tarp jų, tame pačiame pokalbių profilyje. + Uždrausti siųsti balso žinutes. + Grupės nariai gali reaguoti į žinutes. + %d diena + Palyginkite saugumo kodus su savo kontaktais. + Nustatykite jį vietoje sistemos autentifikacijos. + Tinkinkite ir bendrinkite spalvų temas. + Pasilikite savo prisijungimus + Sutaisykite šifravimą po atsarginių kopijų atstatymo. + Inkognito grupės + Įklijuokite nuorodą, kad prisijungti! + Vengrų ir turkų UI + pasirinktinis + Darbastalis + Netinkama nuoroda + Prašome pranešti tai kūrėjams: +\n%s +\n +\nRekomenduojama paleisti programėlę iš naujo. + Ruošiamas atsiuntimas + Importas nepavyko + Taikyti + Eksportuotas failas neegzistuoja + Ruošiamas įkėlimas + Archyvuoti ir įkelti + Ištrinti duomenų bazę iš šio įrengino + Įspėjimas: archyvas bus ištrintas.]]> + Arba nuskanuokite QR kodą + Programėlės prieigos kodas + Prisijungti prie savęs? + Kontaktas dar nėra susijungęs! + Pataisyti pavadinimą į %s? + Laukiama + Duomenų bazės šifravimo slaptafrazė bus atnaujinta ir saugoma raktų saugykloje. + %s yra blogos būsenos]]> + užblokuota administratoriaus + Pilna nuoroda + Atsparu šlamštui ir piktnaudžiavimui + Prašome pranešti tai kūrėjams. + Prašome saugoti slaptafrazę saugiai, jūs NEGALĖSITE pasiekti pokalbių, jei ją prarasite. + Duomenų bazės slaptafrazė yra reikalinga pokalbių atidarymui. + Prašome įvesti praeitą slaptažodį po duomenų bazės atsarginės kopijos atstatymo. Šis veiksmas negali būti atšauktas. + duomenų bazė naujesnė nei programėlė, bet nėra perkėlimo į senesnę versiją: %s + skirtinga migracija programėlėje/duomenų bazėje: %s / %s + Pokalbio archyvas + Grupė neaktyvi + Gauta + Užblokuota administratoriaus + %d valanda + Darbastalis yra užsiėmęs + Kaip tai naudoti + Kaip naudoti savo serverius + Paslėpto profilio slaptažodis + Neteisingas prieigos kodas + Jei įvesite savaiminio susinaikinimo prieigos kodą programėlės atidarymo metu: + Uždrausti siųsti failus ir mediją. + Pagaliau, mes juos turime! 🚀 + Darbastalio adresas + Garso skambutis + Atidaryti pokalbių konsolę + Atidaryti pokalbių profilius + Uždrausti žinučių reakcijas. + ištrynė grupę + Ištrinti %d žinutes? + Patvirtinti slaptažodį + Padėti ragelį + Įrenginio autentifikacija išjungta. Išjungiamas SimpleX užraktas. + %d failas (-ai), kurių bendras dydis yra %s + %d valandos + Prisijungti inkognito režimu + Reikalinga slaptafrazė + Uždrausti siųsti balso žinutes. + EKSPERIMENTINIS + Greitai ir nelaukiant kol siuntėjas prisijungs! + Failai ir medija + Failai ir medija yra draudžiami šioje grupėje. + Failas bus gautas kai jūsų kontaktas užbaigs įkėlimą. + Suteikti leidimus + Grupės profilis yra saugomas narių įrenginiuose, ne serveriuose. + Paprašyta gauti vaizdo įrašą + Labas! +\nPrisijunk prie manęs per SimpleX Chat: %s + Privatumas apibrėžtas iš naujo + Sukurta: %s + jungiamasi (supažindinimo pakvietimas) + Kaip naudoti markdown + Savaiminio susinaikinimo prieigos kodas pakeistas! + Pasilikti nepanaudotą pakvietimą? + Pasilikti + Atviro kodo protokolas ir kodas - bet kas gali paleisti savo serverius. + - pasirinktinai praneškite ištrintiems kontaktams. +\n- profilių vardai su tarpais. +\n- ir daugiau! + Įklijuoti archyvo nuorodą + %d dienos + Nuotrauka + Nuotrauka bus gauta kai jūsų kontaktas yra prisijungęs, palaukite arba patikrinkite vėliau! + Kontaktas ir visos žinutės bus ištrintos - tai negali būti atšaukta! + Išvalyti privačius užrašus? + Išvalyti patvirtinimą + Pokalbių konsolė + Skanuoti QR kodą.]]> + Kaip tai daryti + Jei pasirinksite atmesti, siuntėjui nebus apie tai pranešta. + Nuotrauka + Įvertinti programėlę + jungiamas skambutis… + Sukurkite adresą, kad leistumėte žmonėms prisijungti prie jūsų. + Duomenų bazės ID ir transporto izoliacijos parinktis. + kursyvinis + Atsitiktinė slaptafrazė yra saugoma nustatymuose kaip paprastas tekstas. +\nJūs galite tai pakeisti vėliau. + Pokalbiai veikia + POKALBIO ARCHYVAS + Pokalbiai sustabdyti. Jei jau naudojote šią duomenų bazę kitame įrenginyje, turėtumėte perkelti ją atgal prieš pradedant pokalbius. + užblokavo %s + Keisti gavimo adresą + Sutaisyti prisijungimą + Uždrausti siųsti išnykstančias žinutes. + Grupės sveikinimo žinutė + Grupės moderacija + Blokuokite grupės narius + Savaiminio susinaikinimo prieigos kodas + Greitesnis prisijungimas ir patikimesnės žinutės. + Atkreipkite dėmesį: naudojant tą pačią duomenų bazę dviejuose įrenginiuose, žinučių iššifravimas iš jūsų prisijungimų bus sugadintas saugumo sumetimais.]]> + Netinkamas rodomas vardas! + Keisti prieigos kodą + Įvesti prieigos kodą + Atsakymas į + Savaiminio susinaikinimo prieigos kodas įjungtas! + Keisti savaiminio susinaikinimo rėžimą + prisijungti kaip %s + Duomenų bazės pasendinimas + Prašome patvirtinti, kad tinklo nustatymai yra teisingi šiam įrenginiui. + užblokuotas + pakviestas prisijungti + Inkognito per kontakto adreso nuorodą + Nuorodos atidarymas naršyklėje gali sumažinti ryšio privatumą ir saugumą. Nepatikimos SimpleX nuorodos bus raudonos. + Prašome pasitikrinti, ar naudojate tinkamą nuorodą, arba paprašykite savo kontakto, kad atsiųstų jums dar vieną. + Prieigos kodo įvedimas + Prašome prisiminti arba saugoti tai saugiai - čia nėra būdo atkurti prarastą slaptažodį! + Dabartinis prieigos kodas + Istorija + Gauta žinutė + Failai ir medija yra draudžiami! + Nuotrauka išsaugota į galeriją + Failas bus gautas kai jūsų kontaktas yra prisijungęs, palaukite arba patikrinkite vėliau! + Iš anksto nustatyto serverio adresas + Iš anksto nustatytas serveris + Decentralizuota + Pateikti + Prisijungti inkognito režimu + Pradinė rolė + Gauta: %s + Negrįžtamas žinučių ištrynimas yra draudžiamas šiame pokalbyje. + Uždrausti siųsti išnykstančias žinutes. + Toliau sumažinome akumuliatoriaus naudojimą + Paslėpti pokalbių profiliai + Filtruokite neperskaitytus ir mėgstamus pokalbius. + Raskite pokalbius greičiau + Duomenų bazės perkėlimas yra vykdomas. +\nTai gali užtrukti kelias minutes. + Patvirtinkite savo kredencialus + Nuotrauka išsiųsta + Nuotrauka bus gauta kai jūsų kontaktas užbaigs jos įkėlimą. + Pakeisti gavimo adresą? + nuskanuoti QR kodą vaizdo skambutyje, arba jūsų kontaktas gali pasidalinti pakvietimo nuoroda.]]> + Arba parodykite šį kodą + ICE serveriai (vienas per liniją) + Įdiegti SimpleX Chat terminalui + Ištrinti nuotrauką + Rodyti slaptažodį + Prieigos kodas nustatytas! + Duomenų bazės šifravimo slaptafrazė bus atnaujinta ir saugoma nustatymuose. + Netinkamas perkelimo patvirtinimas + Inkognito režimas apsaugo jūsų privatumą, naudodamas naują atsitiktinį profilį kiekvienam kontaktui. + Skaityti daugiau + Grupės nariai gali siųsti failus ir mediją. + Pilnas vardas: + užbaigti + jungiamasi (paskelbtas) + Uždrausti siųsti tiesioginias žinutes nariams. + Kontaktas turi visapusį šifravimą + Patvirtinti prieigos kodą + Automatiškai priimti nuotraukas + Įjungti savaiminio susinaikinimo prieigos kodą + Prieigos kodas + Savaiminio susinaikinimo prieigos kodas + Programėlės prieigos kodas + Programėlės prieigos kodas pakeičiamas savaiminio susinaikinimo prieigos kodu. + Eksportuoti temą + Tik jūsų kontaktas gali reaguoti į žinutes. + Susikurkite naują proflį darbastalio programoje. 💻 + Prijungtas mobilusis + Prisijungta prie mobiliojo + Įklijuoti darbastalio nuorodą + Darbastalis buvo atjungtas + Darbastalis turi nepalaikomą versiją. Įsitikinkite, kad naudojate tą pačią versiją abiejuose įrenginiuose. + Darbastalis turi neteisingą pakvietimo kodą + Duomenų bazė bus ušifruota ir slaptafrazė bus saugoma raktų saugykloje. + Momentiniai pranešimai + Momentiniai pranešimai! + Momentiniai pranešimai yra išjungti! + profilio nuotraukos vietos ženklas + parodykite QR kodą vaizdo skambutyje, arba pasidalinkite nuoroda.]]> + naudotojo vadove.]]> + Jei negalite susitikti asmeniškai, parodykite QR kodą vaizdo skambutyje, arba pasidalinkite nuoroda. + Įklijuokite nuorodą, kurią gavote prisijungimui prie savo kontakto… + gautas atsakas… + Jungiamas skambutis + Tai gali įvykti kai jūs ar jūsų prisijungimas naudojo seną duomenų bazės atsarginę kopiją. + Jei įvesite šį prieigos kodą programėlės atidarymo metu, visa programėlės informacija bus negrįžtamai pašalinta! + Nustatyti prieigos kodą + Ištrinti failus visiems pokalbių profiliams + Slaptafrazė nebuvo rasta raktų saugykloje, prašome įvesti ją rankiniu būdu. Taip galėjo nutikti, jei atkūrėte programėlės duomenis naudojant atsarginės kopijos įrankį. Jei tai nėra tiesa, prašome susisiekti su kūrėjais. + ištrintas kontaktas + pakviestas + Ištrinta + KONSOLEI + Blokuoti + Protokolui skirtas laikas + numatyta (%s) + Grupės nariai gali negrįžtamai ištrinti išsiųstas žinutes. (24 valandas) + Negrįžtamas žinučių ištrynimas yra draudžiamas šioje grupėje. + Grupė jau egzistuoja! + Blogas darbastalio adresas + Naudoti iš darbastalio mobilioje programėlėje ir nuskanuokite QR kodą.]]> + Darbastalio programėlės versija %s nėra suderinama su šia programėle. + autorius + Kvitai yra išjungti + - prisijunkite prie katalogo tarnybos (BETA)! +\n- pristatymo kvitai (iki 20 narių). +\n- greičiau ir stabiliau. + %1$d žinutė buvo moderuota %2$s + Rastas darbastalis + Prašome saugoti slaptafrazę saugiai, jūs NEGALĖSITE jos pakeisti, jei ją prarasite. + %d grupės įvykiai + profilio nuotrauka + Profilio atnaujinimas bus nusiųstas jūsų kontaktams. + Kvantiškai atsparus visapusis šifravimas + Susisiekti su %1$s? + užblokuotas + Blokuoti visiems + Blokuoti narį? + Archyvuojama duomenų bazė + Patikrinkite savo interneto ryšį ir bandykite vėl + Keisti savaiminio susinaikinimo prieigos kodą + Naujas prieigos kodas + Prieigos kodas nepakeistas! + Duomenų bazės perkelimui, patvirtinkite kad jūs prisimenate jos slaptafrazę. + pakeitė adresą tau + jungiamasi (supažindintas) + Sutaisyti prisijungimą? + Grupės pilnas pavadinimas: + Darbastalio įrenginiai + Tik jūsų kontaktas gali negrįžtamai ištrinti žinutes (jūs galite pažymėti jas ištrynimui). (24 valandas) + Fotoaparatas + Kontaktas neturi visapusio šifravimo + Raskite šį leidimą Android nustatymuose ir suteikite jį rankiniu būdu. + Suteikti nustatymuose + Suteikti leidimą (-us) skambinimui + Momentinis + Atidaryti nustatymus + Laukiamas skambutis + Periodiškai + Pokalbiai sustabdyti + Apsaugoti programėlės ekraną + Kvitų siuntimas išjungtas %d kontaktams + Pokalbiai sustabdyti + jungiamasi (priimtas) + Kontaktas patikrintas + Sukurta %1$s + Duomenų bazės slaptafrazė yra kitokia nei išsaugota raktų saugykloje. + Duomenų bazė bus užšifruota ir slaptafrazė bus saugoma nustatymuose. + Grupės pakvietimas nebegalioja, siuntėjas jį pašalino. + pakvietė %1$s + Buvęs narys %1$s + Blokuoti narį + Blokuoti narį visiems? + Pakeisti grupės rolę? + Keisti rolę + Sutaisyti + Kontaktas nepalaiko sutaisymo. + PING intervalas + Protokolui skirtas laikas per KB + Istorija nėra siunčiama naujiems nariams. + Negrįžtamas žinučių ištrynimas + Uždrausti žinučių reakcijas. + Gauta žinutė + Programėlės duomenų perkėlimas + dienos + valandos + Vaizdas-vaizde skambučiai + Privatūs užrašai + Prisijungimas sustabdytas + Prisijungimas sustabdytas + Prisijungimas nutrauktas + Prisijungimas prie darbastalio yra blogos būsenos + Prisijungti prie darbastalio + Darbastalis yra neaktyvus + Failas buvo ištrintas arba nuoroda netinkama + Importuojamas archyvas + (naujas)]]> + Atidarykite prievadą ugniasienėje + Arba įklijuokite archyvo nuorodą + Prašome pranešti tai kūrėjams: +\n%s + Atsitiktinis + Persikelti iš kito įrenginio naujame įrenginyje ir nuskanuokite QR kodą.]]> + Patvirtinti tinklo nustatymus + Atšaukti perkelimą + Pokalbiai perkelti! + Patvirtinti įkėlimą + Kuriama archyvo nuoroda + Užbaigti perkėlimą + Užbaikite perkėlimą kitame įrenginyje. + Norint tęsti, pokalbiai turi būti sustabdyti. + Arba saugiai pasidalinkite šio failo nuoroda + Išsaugokite paskutinės žinutės juodraštį su priedais. + %s, %s ir %s prisijungė + Šis pokalbis yra apsaugotas su visapusiu šifravimu. + Šis pokalbis yra apsaugotas kvantiškai atspariu visapusiu šifravimu. + Prisijungimas, kurį priėmėte, bus atšauktas! + Bakstelėkite, kad įklijuoti nuorodą + Testuoti serverį + TEMOS SPALVOS + Rodyti lėtus API iškvietimus + Nustoti bendrinti adresą? + Žinučių siuntimo ir programų platforma, apsauganti jūsų privatumą ir saugumą. + Pirma platforma neturinti jokių naudotojų identifikatorių - privati pagal sumanymą. + Nustatyti duomenų bazės slaptafrazę + Sistema + Nustatyti slaptafrazę eksportui + Šis veiksmas negali būti atšauktas - jūsų profilis, kontaktai, žinutės ir failai bus negrįžtamai prarasti. + nustatyti naują kontakto adresą + nustatyti naują profilio nuotrauką + Standartinis visapusis šifravimas + Nusiuntimo kvitai + Nusiųsta + Dėkojame naudotojams - prisidėkite per Weblate! + %s nėra patvirtintas + Lėta funkcija + SimpleX negali veikti fone. Jūs gausite pranešimus tik kai programėlė yra paleista. + Duomenų bazė neveikia tinkamai. Bakstelėkite, kad sužinotumėte daugiau + SimpleX Chat tarnyba + Nustoti bendrinti + Bendrinti su kontaktais + Naujos kartos privatus susirašinėjimas + %s sekundė(s) + Kodas kurį nuskanavote, nėra SimpleX nuorodos QR kodas. + Kontaktas su kurio pasidalinote šia nuoroda NEGALĖS prisijungti! + Įrenginio vardas bus bendrinamas su susietu mobiliuoju klientu. + Ši žinutė bus pažymėta visiems nariams kaip moderuota. + Slaptafrazė bus saugoma nustatymuose kaip paprastas tekstas po jos pakeitimo arba programėlės paleidimo iš naujo. + Serveriai naujiems prisijungimams jūsų dabartiniame pokalbių profilyje + Tekstas kurį įklijavote nėra SimpleX nuoroda. + Šis veiksmas negali būti atšauktas - visi gauti ir siųsti failai ir medija bus ištrinti. Mažos rezoliucijos nuotraukos išliks. + Įjunkite tiesioginiuose pokalbiuose (BETA)! + Ši eilutė nėra prisijungimo nuoroda! + Kad prisijungti, jūsų kontaktas gali nuskanuoti QR kodą arba naudoti nuorodą programėlėje. + Rašyti žinutę gyvai + Pažvaigždinti ant GitHub + Testuoti serverius + Dėkojame naudotojams - prisidėkite per Weblate! + Bakstelėkite mygtuką + Dėkojame naudotojams - prisidėkite per Weblate! + Sistemos autentifikacija + Importuojant įvyko keletas nelemtingų klaidų – daugiau informacijos galite rasti pokalbių konsolėje. + Rodyti kūrėjo parinktis + Bendrinti adresą su kontaktais? + Rodyti vidines klaidas + Naudoti .onion serverius į Ne jei SOCKS tarpinis serveris nepalaiko jų.]]> + Sustabdykite pokalbius, kad eksportuoti, importuoti ar ištrinti duomenų bazę. Jūs negalėsite siųsti ir gauti žinučių kai pokalbiai yra sustabdyti. + Nustatyti kontakto vardą… + Šifravimas veikia ir nauja šifravimo sutartis nėra reikalinga. Tai gali sukelti ryšio klaidų! + Dalintis šia vienkartinio pakvietimo nuoroda + %s yra patvirtintas + Bakstelėkite, kad nuskanuoti + Išjungti? + Skambučiams reikalinga numatytoji žiniatinklio naršyklė. Sukonfigūruokite numatytąją sistemos naršyklę ir pasidalykite daugiau informacijos su kūrėjais. + Mažos grupės (maks. 20) + Pavadinimas + Nustatykite žinutę rodomą naujiems nariams! + Pradėti pokalbį + Šis rodomas vardas netinkamas. Prašome pasirinkti kitą vardą. + Nustatyti kontakto vardą + Nustatyti grupės parinktis + Serveris reikalauja įgaliojimų įkėlimui, patikrinkite slaptažodį + Serveris reikalauja įgaliojimų eilių kūrimui, patikrinkite slaptažodį + Testas nepavyko žingsnyje: %s + Programėlė gali būti uždaryta po 1 minutės būvimo fone. + Pasileidžia periodiškai + Nusiųsta žinutė + Nuotraukos negalima atkoduoti. Bandykite kitą nuotrauką arba susisiekite su kūrėjais. + Vaizdo įrašo negalima atkoduoti. Bandykite kitą vaizdo įrašą arba susisiekite su kūrėjais. + Serverio testas nepavyko! + Kai kurie serveriai nepraėjo testo: + Nusiųsta: %s + Siunčiama per + Nusiųsta žinutė + Antra varnelė kurios mums trūko! ✅ + SimpleX adresas + Siųsti klausimus ir idėjas + Siųsti mums el. laišką + Rodyti konsolę naujame lange + Siųsti nuorodų peržiūras + Sekančios žinutės ID yra neteisingas (mažesnis arba lygus ankstesniam). +\nTaip gali nutikti dėl tam tikros klaidos arba kai ryšys yra sukompromisuotas. + Išjungti + SimpleX + Nustatyti 1 dieną + Dėkojame naudotojams - prisidėkite per Weblate! + Baigėsi skirtasis laikas jungiantis prie darbastalio + Ši galimybė dar nėra palaikoma. Išbandykite sekantį leidimą. + %1$s!]]> + Kad prisijungti su nuoroda + Ši nuoroda nėra tinkama prisijungimo nuoroda! + Š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. + %s: %s + Su saugiu kvantiškai atspariu protokolu. + Šio įrenginio pavadinimas + Supaprastintas inkognito režimas + Tai yra jūsų SimpleX adresas! + %s, %s ir %d nariai + Bakstelėkite, kad prisijungti + Praleisti narių kvietimą + Bendrinti adresą + Siųsti naujiems nariams iki 100 paskutinių žinučių. + Kvitų siuntimas yra įjungtas %d kontaktams + Kvitų siuntimas yra įjungtas %d grupėms + Nustatyti duomenų slaptafrazę + Nustatyti slaptafrazę + Rodyti paskutines žinutes + Sustabdykite pokalbius, kad įgalinti duomenų bazės veiksmus. + PALAIKYKITE SIMPLEX CHAT + Jų galima nepaisyti kontaktų ir grupių nustatymuose. + Šis veiksmas negali būti atšauktas - žinutės išsiųstos ir gautos anksčiau nei pasirinkta bus ištrintos. Tai gali užtrukti kelias minutes. + %s, %s ir %d kiti nariai prisijungė + Pradėti pokalbį? + Bandymas pakeisti duomenų bazės slaptafrazę nebuvo užbaigtas. + TCP ryšiui skirtas laikas + Dėkojame naudotojams - prisidėkite per Weblate! + Sesijos kodas + Šis įrenginys + Tai yra jūsų vienkartinė nuoroda! + %s]]> + Kad leisti mobiliajai programėlei prisijungti prie darbastalio, atidarykite šį prievadą savo ugniasienėje, jei ją turite įgalinę. + Sustabdomi pokalbiai + %s įkeltas + Jūsų pokalbių profiliai + Jūsų pokalbių profilis bus nusiųstas +\njūsų kontaktui + Jūsų duomenų bazė + Jūsų duomenų bazė nėra užšifruota - nustatykite slaptafrazę, kad ją apsaugoti. + Jūsų pokalbių profilis bus nusiųstas grupės nariams + Pakartotinių šifravimo derybų klaida + Pasendinti ir atidaryti pokalbį + Priimant kontakto užklausą įvyko klaida + Klaida + Įvesti serverį rankiniu būdu + Įveskite savo vardą: + Įjungti (palikti nepaisymus + Įjungti visoms grupėms + šifravimas sutartas su %s + reikalingos pakartotinės šifravimo derybos su %s + šifravimas gerai + %d savaitės + %dmėn + Klaida + Aptinkama vietiniame tinkle + %d žinutės užblokuotos administratoriaus + Įvyko klaida kuriant žinutę + Įvyko klaida ištrinant privačius užrašus + Įveskite sveikinimo žinutę… (nebūtina) + Jūs pašalinote %1$s + Įvyko klaida blokuojant narį visiems + %d min + Nesiųsti istorijos naujiems nariams. + visapusiškai užšifruotas + Atsijungta su priežastimi: %s + Jūsų profilis, kontaktai ir gautos žinutės yra saugomi jūsų įrenginyje. + Išnyks + Rodomas vardas negali turėti tarpų. + Nekurti adreso + Atsiuntimas nepavyko + Atsiunčiamas archyvas + visapusiškai užšifruotas balso skambutis + Atsiunčiamos nuorodos detalės + Pasikartojantis rodomas vardas! + šifravimas sutartas + šifravimas gerai su %s + Užbaigti skambutį + Įvyko klaida įjungiant pristatymo kvitus! + Naujas atsitiktinis profilis bus bendrinamas. + Įjungti kvitus? + Įveskite slaptafrazę… + Įveskite grupės pavadinimą: + %d sekundės + Įjungti fotoaparato prieigą + Įjungti kvitus grupėms? + Išjungti visiems + Išjungti kvitus grupėms? + Įjungti visiems + Įveskite sveikinimo žinutę… + Įjungti TCP išlik-gyvas + %d mėnuo + Užšifruoti saugomus failus ir mediją + Visi jūsų kontaktai, pokalbiai ir failai bus saugiai užšifruoti ir dalimis įkelti į sukonfigūruotus XFTP serverius. + Klaida nutraukiant adreso keitimą + visapusiškai užšifruotas vaizdo skambutis + %d žinutės pažymėtos kaip ištrintos + %d žinutės užblokuotos + Pridedant narį (-us) įvyko klaida + Įvyko klaida ištrinant kontakto užklausą + Įvyko klaida ištrinant laukiantį kontakto prisijungimą + %d minutės + Įjungti savaiminį susinaikinimą + Įjungti (palikti grupių nepaisymus) + pakartotinės šifravimo derybos leidžiamos %s + %d savaitė + Redaguoti nuotrauką + leidžiamos pakartotinės šifravimo derybos + reikalingos pakartotinės šifravimo derybos + %d sek. + Pakartotinės šifravimo derybos nepavyko. + Išjungti (palikti grupių nepaisymus) + Bandote pakviesti kontaktą, su kuriuo bendrinote inkognito profilį, į grupę, kurioje naudojate savo pagrindinį profilį + Skirtingi vardai, avatarai ir transporto izoliacija. + Atraskite ir prisijunkite prie grupių + Atsijungti + %dsav. + Jūsų profilis %1$s bus bendrinamas. + Jūs atmetėte grupės kvietimą + Išnyks: %s + ir %d kiti įvykiai + Įveskite tinkamą slaptafrazę. + %ds + Įjunkite skambučius užrakto ekrane per nustatymus. + Išjungti visoms grupėms + Išjungti (palikti nepaisymus) + pasikartojanti žinutė + Užšifruoti vietinius failus + Šiai grupei naudojate inkognito profilį - kad nesidalintumėte pagrindiniu profiliu, neleidžiama kviesti kontaktų + Įveskite slaptažodį paieškoje + Įvyko klaida kuriant nario kontaktą + %dm + %d mėnesiai + Neįjungti + Įjungti + Atjungti darbalaukį? + %s su priežaistimi: %s]]> + Atjungti mobiliuosius + Atrasti per vietinį tinklą + Įvesti slaptafrazę + Įvesti šio įrenginio pavadinimą… + Įvyko klaida atsisiunčiant archyvą + Įvyko klaida ištrinant duomenų bazę + visapusiu šifravimu su tobulu priekiniu slaptumu, išsižadėjimu ir atsigavimu įsilaužus.]]> + kvantiškai atspariu visapusiu šifravimu su tobulu priekiniu slaptumu, išsižadėjimu ir atsigavimu įsilaužus.]]> + Jau turite pokalbių profilį su tuo pačiu rodomu vardu. Pasirinkite kitą vardą. + Jau esate prisijungę prie %1$s. + Įvyko klaida nustatant adresą + Įvyko klaida sinchronizuojant prisijungimą + Siuntėjas gali būti ištrynęs prisijungimo užklausą. + Saugi eilė + leisti SimpleX veikti fone sekančiame dialoge. Kitaip, pranešimai bus išjungti.]]> + Įkelti failą + Veikia kai programėlė yra atidaryta + Negalėjote būti patvirtintas; bandykite vėl. + Galite įjungti SimpleX užraktą per nustatymus. + Išplėsti + Atšaukti failą + Atšaukti failą? + neteisėtas siuntimas + Ieškoti arba įklijuoti SimpleX nuorodą + Jūs turite leisti savo kontaktui siųsti balso žinutes, kad galėtumėte siųsti jas. + (nuskanuokite ar įklijuokite iš iškarpinės) + Priėmėte prisijungimą + Jūs pakvietėte kontaktą + Onion serveriai bus reikalingi ryšiui. + Onion serveriai bus naudojami, kai tik bus. + Išeiti neišsaugant + Jūs kontroliuojate savo pokalbį! + Mes nesaugome jokių jūsų kontaktu ar žinučių (po pristatymo) serveriuose. + Nėra gautų ar išsiųstų failų + Išsaugoti slaptafrazę raktų saugykloje + Atnaujinti duomenų bazės slaptafrazę + atblokavo %s + narys %1$s pasikeitė į %2$s + pašalintas kontakto adresas + pašalinta profilio nuotrauka + atnaujino proflį + saugumo kodas pakeistas + stebėtojas + pakeitėte adresą + Sveikinimo žinutė + Įrašas atnaujintas + %s (dabartinis) + Moderuota: %s + Atstatyti į numatytuosius + Matoma istorija + Tik jūs galite pridėti žinučių reakcijas. + Nauja darbastalio programėlė! + Paieškos laukas priima kvietimo nuorodas. + Su užšifruotais failais ir medija. + Naudokite programėlę skambučio metu. + %s atsisiuntė + Pakartoti atsisiuntimą + Pakartoti importą + Persikelti iš įrenginio + Persikelti į kitą įrenginį + Įvyko klaida išsaugant nustatymus + Įvyko klaida eksportuojant pokalbių duomenų bazę + Įvyko klaida patvirtinant slaptafrazę: + per tarpinį serverį + Jūsų kontaktai gali leisti pilną žinučiu ištrynimą. + Patvirtinkite prisijungimo saugumą + Jūsų profilis bus išsiųstas kontaktui iš kurio gavote šią nuorodą. + Prisijungsite prie visų grupės narių. + Esate prisijungę prie serverio skirto gauti žinutes iš šio kontakto. + Bandoma prisijungti prie serverio skirto žinučių gavimui iš šio kontakto (klaida: %1$s). + Bandoma prisijungti prie serverio skirto žinučių gavimui iš šio kontakto. + nėra detalių + SimpleX fono tarnybą - ji naudoja kelis procentus akumuliatoriaus per dieną.]]> + Programėlė periodiškai gauna naujas žinutes — ji sunaudoja kelis procentus baterijos per dieną. Programa nenaudoja tiesioginių pranešimų — duomenys iš jūsų įrenginio į serverius nesiunčiami. + Vienkartinė pakvietimo nuoroda + Neprarasite savo kontaktų, jei vėliau ištrinsite savo adresą. + Kai yra + vaizdo skambutis (neužšifruotas visapusiškai) + Pašalinti slaptafrazę iš raktų saugyklos? + Persikėlimai: %s + Nusiuntėte grupės pakvietimą + atnaujino grupės profilį + atblokavote %s + Išsaugota žinutė + Pašalinti narį? + Atblokuoti visiems + Prisijungimo užklausa bus išsiųsta šiam grupės nariui. + Sumažintas baterijos naudojimas + Naujausia istorija ir patobulintas katalogo botas. + Pristatymo kvitų siuntimas bus įjungtas visiems kontaktams. + Pristatymo kvitų siuntimas bus įjungtas visiems kontaktams visuose matomuose pokalbių profiliuose. + Susieti darbastaliai + Nuskanuoti QR kodą iš darbastalio + %s buvo atjungtas]]> + %1$s.]]> + Galite bendrinti savo adresą kaip nuorodą ar QR kodą - bet kas galės prisijungti prie jūsų. + Atnaujinti transporto izoliacijos režimą? + Išsaugoti automatinio priėmimo nustatymus + Antrinis + Žinučių reakcijos yra draudžiamos šiame pokalbyje. + Vaizdo skambutis + Žinutė bus pažymėta ištrynimui. Gavėjas (-ai) galės atskleisti šią žinutę. + Atšaukti + siuntimas nepavyko + Per daug nuotraukų! + Siųsti išnykstančią žinutę + (kad bendrinti su savo kontaktu) + Kad pradėti naują pokalbį + Pakartoti + Naudoti .onion serverius + Žinutės gyvai + savaitės + Siųsti + Naudoti inkognito profilį + Nauja kontakto užklausa + Gavimo adresas bus pakeistas į kitą serverį. Adreso pakeitimas bus užbaigtas kai siuntėjas prisijungs. + Įvyko klaida įkeliant archyvą + Prisijunkite su savo kredencialais + Įsitikinkite, kad SMP serverių adresai yra tinkamu formatu, atskirose eilutėse ir nesikartojantys. + Įsitikinkite, kad XFTP serverių adresai yra tinkamu formatu, atskirose eilutėse ir nesikartojantys. + Markdown pagalba + Maks. 40 sekundžių, gaunama iš karto. + Žinučių reakcijos + Žinutė bus ištrinta - tai negali būti atšaukta! + Transporto izoliacija + Saugesnės grupės + %s prisijungė + Jūs jau prašėte prisijungimo per šį adresą! + Jūsų kontaktas turi būti prisijungęs, kad užbaigti prisijungimą. +\nJūs galite atšaukti šį prisijungimą ir pašalinti kontaktą (ir vėliau bandyti su nauja nuoroda). + Jūsų kontaktai išliks prisijungę. + Jūsų XFTP serveriai + Prisijungsite kai jūsų prisijungimo užklausa bus patvirtinta, palaukite arba patikrinkite vėliau! + %s yra užsiėmęs]]> + %s yra neaktyvus]]> + mėnesiai + Tikriausiai šis kontaktas ištrynė prisijungimą su jumis. + Nutildyti + Nėra pristatymo informacijos + Dabar administratoriai gali: +\n- ištrinti narių žinutes. +\n- išjungti narius (\"stebėtojas\" rolė) + įj. + Nebemėgti + Nustatymų atnaujinimas perjungs klientą iš naujo prie visų serverių. + Iki 100 paskutinių žinučių bus siunčiamos naujiems nariams. + Naudoti dabartinį profilį + Su nebūtina sveikinimo žinute. + Su sumažintu akumuliatoriaus naudojimu. + Esate kviečiami į grupę + prisijungti prie SimpleX Chat kūrėjų, kad klausti klausimus ir gauti atnaujinimus.]]> + Galite padaryti tai matomą savo SimpleX kontaktams per nustatymus. + Susieto darbastalio parinktys + %1$s.]]> + Pašalinti nutildymą + Laukiama kol mobilusis prisijungs: + Įvyko klaida rodant pranešimą, susisiekite su kūrėjais. + esate kviečiami į grupę + Tik 10 nuotraukų gali būti siunčiamos vienu metu. + Tik 10 vaizdo įrašų gali būti siunčiami vienu metu + Vaizdo įrašas bus gautas kai jūsų kontaktas baigs jo įkėlimą. + Vaizdo įrašas bus gautas kai jūsų kontaktas bus prisijungęs, palaukite arba patikrinkite vėliau! + Laukiama vaizdo įrašo + Laukiama vaizdo įrašo + Derėtis su šifravimu per naujo? + Jūsų kontaktas atsiuntė failą kuris yra didesnis nei dabartinis maksimalus palaikomas dydis (%1$s). + Įrašyti balso žinutę + Derėtis per naujo + Patvirtinti saugumo kodą + Žinutė gyvai! + Nuskanuoti QR kodą + Siųskite žinutę gyvai - ji pasikeis gavėjui (-ams) rašymo metu + Vienkartinė pakvietimo nuoroda + Nuskanuoti saugumo kodą iš jūsų kontakto programėlės. + Prisijungsite prie grupės kai grupės nuorodos savininkas bus prisijungęs, palaukite arba patikrinkite vėliau! + Prisijungsite kai jūsų konktakto įrenginys bus prisijungęs, palaukite arba patikrinkite vėliau! + Atidaryti mobilioje programėlėje, tada bakstelėkite Prisijungti programėlėje.]]> + Naudoti naujiems prisijungimams + Atidaryti mobilioje programėlėje mygtuko.]]> + Įvyko klaida atveriant naršyklę + paslaptis + Pranešimai nustos veikti iki tol kol paleisite programėlę iš naujo + Galite naudoti markdown, kad formatuoti žinutes: + PALEISTI POKALBIUS + Naudoti iš darbastalio + Sveikinimo žinutė yra per ilga + Žinučių reakcijos + Persikelti į kitą įrenginį su QR kodu. + Persikėlimas baigtas + turite nenaudoti tos pačios duomenų bazės dviejuose įrenginiuose.]]> + Įspėjimas: pokalbių paleidimas keliuose įrenginiuose vienu metu nėra palaikomas ir sukels žinučių pristatymo problemas + Patvirtinti duomenų bazės slaptafrazę + Patvirtinti slaptafrazę + Nutildyti + gauti žinutes, jūsų kontaktai - serverius kuriuos naudojate siųsti jiems žinutes.]]> + Tarpinis serveris apsaugo jūsų IP adresą, bet jis gali stebėti skambučio trukmę. + nėra visapusio šifravimo + Naujas duomenų bazės archyvas + Jūs turite įvesti slaptafrazę kas kartą kai programėlė pasileidžia - tai nėra saugoma įrenginyje. + Jūs pasidalinote netinkamu failo keliu. Praneškite šią problemą programėlės kūrėjams. + siųsti tiesioginę žinutę + Jūs neturite pokalbių + Nėra filtruotų pokalbių + Vietinis vardas + Derėtis su šifravimu per naujo + pažymėta ištrinta + GYVAI + moderuota + Nebent jūsų kontaktas ištrynė šį prisijungimą arba nuoroda jau buvo panaudota, tai gali būti klaida - prašome ją pranešti. +\nKad prisijungti, paprašykite savo kontakto sukurti kitą prisijungimo nuorodą ir patikrinkite, kad turite stabilų interneto ryšį. + Programėlės akumuliatoriaus naudojimas / Neapribotas programėlės nustatymuose.]]> + Programėlės akumuliatoriaus naudojimas / Neapribotas programėlės nustatymuose.]]> + Nėra foninių skambučių + Jums reikės autentifikuotis kai paleidžiate programėlę arba pratęsiate jos naudojimą po 30 sekundžių fone. + Nėra istorijos + esate stebėtojas + (saugo tik grupės nariai) + Jūsų SimpleX adresas + Nuskanuoti serverio QR kodą + Reikalingi + Onion serveriai bus naudojami, kai tik bus. + Onion serveriai nebus naudojami. + Savaiminis susinaikinimas + Senas duomenų bazės archyvas + Jūsų pokalbių duomenų bazė bus IŠTRINTA ir PAKEISTA su importuojama. +\nŠis veiksmas negali būti atšauktas - jūsų profilis, kontaktai, žinutės ir failai bus negrįžtamai prarasti. + Išsaugoti slaptafrazę nustatymuose + Pranešimai bus pristatyti tik iki tol kol programėlė bus sustabdyta! + Galite bendrinti nuorodą ar QR kodą - bet kas galės prisijungti prie grupės. Neprarasite grupės narių jei vėliau tai ištrinsite. + Įrašas atnaujintas: %s + Gaunama per + Kad apsaugoti laiko juostą, nuotraukos/balso failai naudoja UTC. + Žinučių pristatymo kvitai! + - balso žinutės iki 5 minučių. +\n- pasirinktinis laikas išnykimui. +\n- istorijos redagavimas. + Padarykite, kad viena žinutė išnyktų + Net jei tai išjungta pokalbyje. + moderuota %s + Rodinys sudužo + pasidalinote vienkartine nuoroda + pasidalinote vienkartine nuoroda inkognito režimu + Kad apsaugoti savo informaciją, įjunkite SimpleX užraktą. +\nJūs būsite prašomi užbaigti autentifikaciją prieš įjungiant šią galimybę. + Laukiama nuotraukos + Siųsti tiesioginę žinutę, kad prisijungti + Laukiama nuotraukos + Kai asmenys išsiunčia užklausą prisijungti, galite ją priimti arba atmesti. + Galite peržiūrėti pakvietimo nuorodą vėl, prisijungimo detalėse. + Markdown žinutėse + Norėdami patvirtinti visapusį šifravimą su savo kontaktu, palyginkite (ar nuskanuokite) kodą ant savo įrenginių. + XFTP serveriai + Onion serveriai bus reikalingi ryšiui. +\nAtkreipkite dėmesį: negalėsite prisijungti prie serverių be .onion adreso. + Išsaugoti nustatymus? + Norėdami atskleisti paslėptą profilį, įveskite visą slaptažodį į paieškos laukelį puslapyje Jūsų pokalbių profiliai. + Nepasirinkti jokie kontaktai + Galite bendrinti šią nuorodą su savo kontaktais, kad leistumėte jiems prisijungti prie %s. + pasiūlė %s + pasiūlė %s: %2s + Naujas rodomas vardas: + pakeitėte adresą %s + Išplėsti rolių pasirinkimą + %1$s.]]> + jei SimpleX neturi naudotojų identifikatorių, kaip jis gali pristatyti žinutes?]]> + dviejų sluoksnių visapusiu šifravimu.]]> + Kad apsaugoti privatumą, vietoj naudotojų ID naudojamų visose kitose platformose, SimpleX turi identifikatorius žinučių eilėms, skirtingus kiekvienam jūsų kontaktui. + Žinutės juodraštis + Paleisti iš naujo + narys + gauta, uždrausta + Tik jūs galite ištrinti žinutes negrįžtamai (jūsų kontaktas gali pažymėti jas ištrynimui). (24 valandas) + Transporto izoliacija + Įjunkite inkognito režimą prisijungimo metu. + %s yra dingęs]]> + Pakartoti prisijungimo užklausą? + Įvyko klaida rodant turinį + Įvyko klaida rodant žinutę + Įvyko klaida įkeliant detales + Siuntėjas atšaukė failo perdavimą + Moderuoti + nori prisijungti prie jūsų! + nuorodos peržiūros nuotrauka + Onion serveriai nebus naudojami. + Atnaujinti .onion serverių nustatymą? + Kai programėlė yra paleista + Užrakto režimas + Galite paleisti pokalbius per programėlės nustatymus/ duomenų bazę arba paleisdami programėlę iš naujo. + pašalino jus + Moderuota + NARYS + %s %s + nėra teksto + Meniu ir įspėjimai + Susiekite mobiliasias ir darbastalio programėles! 🔗 + Susieti mobilieji + Patvirtinti prisijungimą + Nuskanuoti iš mobiliojo + Patvirtinkite kodą mobiliąjame + %s buvo atjungtas]]> + Tik vietinio profilio duomenys + Pakartoti prisijungimo užklausą? + Jau yra prisijungiama su šia vienkartine nuoroda! + Nauja nario rolė + Patvirtinti prisijungimus + Laukiama darbastalio… + Funkcijos vykdymas trunka per ilgai: %1$d sekundės: %2$s + %s ir %s + Atnaujinti + Įsitikinkite, kad WebRTC ICE serverių adresai yra tinkamu formatu, atskirose eilutėse ir nesikartojantys. + Galite sukurti tai vėliau + Nėra pasirinkto pokalbio + nežinoma būsena + pašalintas + nežinoma + Narys bus pašalintas iš grupės - tai negali būti atšaukta! + Sukurkite privatų prisijungimą + Tarpinis serveris naudojamas tik jei to reikia. Kita šalis gali stebėti jūsų IP adresą. + Mikrofonas + Persikelti iš kito įrenginio + Naudoti atsiktinę slaptafrazę + lygiaverčiai mazgai + Pašalinti slaptafrazę iš nustatymų? + SIŲSTI PRISTATYMO KVITUS PAS + Pristatymo kvitų siuntimas yra išjungtas %d grupėms + Turite naudoti pačią naujausią pokalbių duomenų bazės versiją TIK viename įrenginyje, kitaip galite nebegauti žinučių iš kai kurių kontaktų. + Nauja slaptafrazė… + pašalino %1$s + %s ir %s prisijungė + Pasirinkti kontaktus + Jūs prisijungėte prie šios grupės. Prisijungiama prie kviečiančio grupės nario. + Nėra kontaktų pridėjimui + Esate kviečiami į grupę. Ateikite, kad prisijungti prie grupės narių. + užblokavote %s + pakeitėte rolę sau į %s + pakeitėte rolę %s į %s + Įvyko klaida pašalinant narį + Įvyko klaida siunčiant kvietimą + Žinutės nuo %s bus rodomos! + Pašalinti narį + Išsaugoti sveikinimo žinutę? + Atblokuoti + Atblokuoti narį + Atblokuoti narį? + Atblokuoti narį visiems? + Sveikinimo žinutė + Padarykite profilį privatų! + Įsitikinkite, kad failas turi teisingą YAML sintaksę. Eksportuokite temą, kad gautumėte temos failo struktūros pavyzdį. + Žinučių reakcijos yra draudžiamos šioje grupėje. + Gavėjai mato pakeitimus kai juos rašote. + Vistiek gausite skambučius ir pranešimus iš nutildytų profilių kai jie yra aktyvūs. + Nutildyta kai neaktyvu! + Kai jūs bendrinate inkognito profilį su kažkuom, šis profilis bus naudojamas grupėms į kurias jie jus pakviečia. + Galite paslėpti ar nutildyti naudotojo profilį - laikykite jį, kad atidaryti meniu. + sekundės + Pasirinkti + Kad paslėptumėte nenorimas žinutes. + minutės + Galite įjungti vėliau per nustatymus + Galite įjungti juos vėliau per programėlės privatumo ir saugumo nustatymus. + Susieti mobilujį + Paleisti pokalbius iš naujo + Persikelti į čia + Persikėliama + %s turi nepalaikomą versiją. Įsitikinkite, kad naudojate tą pačią versiją abiejuose įrenginiuose]]> + Naujas mobilusis įrenginys + Nėra prisijungusių mobiliųjų + Atsieti + Atsieti darbastalį? + Patvirtinkite kodą darbastalyje + Jau jungiatės prie grupės su šia nuoroda. + Galite bandyti dar kartą. + Pakartoti įkėlimą + Įkėlimas nepavyko + Įkeliamas archyvas + Galite bandyti dar kartą. \ No newline at end of file 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 ecfaf72a18..bd4171ab02 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1714,4 +1714,41 @@ Wachtwoord instellen Deze chat wordt beschermd door quantum bestendige end-to-end codering. Fout bij weergeven van melding. Neem contact op met ontwikkelaars. + Zoek deze toestemming in de Android-instellingen en verleen deze handmatig. + Verlenen in instellingen + Machtigingen verlenen + Verleen toestemming(en) om te bellen + Microfoon + Camera + Camera en microfoon + Open instellingen + Mobiel + doorgestuurd + Netwerkverbinding + Geen netwerkverbinding + Ander + Wifi + Wired ethernet + Bestanden en media niet toegestaan + SimpleX-links zijn niet toegestaan + Spraakberichten niet toegestaan + SimpleX-links + Verbied het verzenden van SimpleX-links + beheerders + alle leden + eigenaren + SimpleX-links zijn in deze groep verboden. + Ingeschakeld voor + Sta het verzenden van SimpleX-links toe. + Groepsleden kunnen SimpleX-links verzenden. + opgeslagen + opgeslagen van %s + Doorsturen + Doorgestuurd + Ontvanger(s) kunnen niet zien van wie dit bericht afkomstig is. + Opgeslagen van + Bericht doorsturen… + Downloaden + Doorgestuurd vanuit + Opgeslagen \ No newline at end of file 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 04e40e73cb..a1316fc258 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml @@ -21,8 +21,8 @@ k NA ŻYWO zaznaczona jako usunięta - moderowany - moderowany przez %s + zmoderowane + zmoderowane przez %s wysyłanie plików nie jest jeszcze obsługiwane odbieranie plików nie jest jeszcze obsługiwane Próbowanie połączenia z serwerem używanym do odbierania wiadomości od tego kontaktu. @@ -303,8 +303,8 @@ Nieprawidłowy adres serwera! Pomoc markdown Markdown w wiadomościach - Wstępnie ustawiony serwer - Wstępnie ustawiony adres serwera + Predefiniowany serwer + Adres predefiniowanego serwera Oceń aplikację Zapisane serwery WebRTC ICE zostaną usunięte. Zapisz serwery @@ -435,7 +435,7 @@ Można to później zmienić w ustawieniach. Nawiąż prywatne połączenie jeśli SimpleX nie ma identyfikatora użytkownika, jak może dostarczać wiadomości\?]]> - 2-warstwowego szyfrowania end-to-end.]]> + dwuwarstwowego szyfrowania end-to-end.]]> Okresowo Prywatne powiadomienia repozytorium GitHub.]]> @@ -449,8 +449,8 @@ Wklej link, który otrzymałeś połączenie wideo (bez szyfrowania e2e) Akceptuj - zaszyfrowane e2e połączenie audio - zaszyfrowane e2e połączenie wideo + połączenie audio zaszyfrowane e2e + połączenie wideo zaszyfrowane e2e Ignoruj Odrzuć Zawsze używaj przekaźnika @@ -477,7 +477,7 @@ kontakt posiada szyfrowanie e2e kontakt nie posiada szyfrowania e2e zduplikowana wiadomość - zaszyfrowany e2e + zaszyfrowane e2e Włącz połączenia z ekranu blokady poprzez Ustawienia. Odwróć aparat Rozłącz się @@ -494,7 +494,7 @@ przez przekaźnik Wideo wyłączone Wideo włączone - %1$d wiadomość(i) pominięta(e) + %1$d pominięta(ych) wiadomość(i) Może to nastąpić, gdy: \n1. Wiadomości wygasły w wysyłającym kliencie po 2 dniach lub na serwerze po 30 dniach. \n2. Odszyfrowanie wiadomości nie powiodło się, ponieważ Ty lub Twój kontakt użyliście starej kopii zapasowej bazy danych. @@ -904,7 +904,7 @@ Dodaj serwery, skanując kody QR. Dodaj wiadomość powitalną Wszystkie czaty i wiadomości zostaną usunięte - nie można tego cofnąć! - Pozwól + Zezwól zawsze Zawsze włączona Zezwalaj na nieodwracalne usuwanie wiadomości tylko wtedy, gdy Twój kontakt Ci na to pozwoli. (24 godziny) @@ -997,7 +997,7 @@ Zatrzymaj czat, aby wyeksportować, zaimportować lub usunąć bazę danych czatu. Podczas zatrzymania chatu nie będzie można odbierać ani wysyłać wiadomości. Niektóre serwery nie przeszły testu: Dziękujemy za zainstalowanie SimpleX Chat! - Wiadomość zostanie oznaczona jako moderowana dla wszystkich członków. + Wiadomość zostanie oznaczona jako zmoderowana dla wszystkich członków. Rola zostanie zmieniona na \"%s\". Wszyscy w grupie zostaną powiadomieni. Tego działania nie można cofnąć - wszystkie odebrane i wysłane pliki oraz media zostaną usunięte. Obrazy o niskiej rozdzielczości pozostaną. Adres odbiorczy zostanie zmieniony na inny serwer. Zmiana adresu zostanie zakończona gdy nadawca będzie online. @@ -1215,7 +1215,7 @@ Otrzymano wiadomość Wyślij wiadomość Usunięto o - Moderowany o + Zmoderowane o Otrzymane o: %s Rekord zaktualizowany o Wysłano o @@ -1226,7 +1226,7 @@ Znika o Znika o: %s Info - Moderowany o: %s + Zmoderowane o: %s Historia Otrzymane o %s (aktualny) @@ -1349,7 +1349,7 @@ Prośba o połączenie zostanie wysłana do tego członka grupy. Połączyć bezpośrednio\? Użyj obecnego profilu - Pozwól + Zezwól Wyłącz powiadomienia Otwórz ustawienia aplikacji Brak rozmów w tle @@ -1639,8 +1639,8 @@ Połączenie wideo Błąd podczas otwierania przeglądarki Do połączeń wymagana jest domyślna przeglądarka. Proszę skonfigurować domyślną przeglądarkę systemową, i podzielić się informacją z twórcami. - Ten czat jest chroniony przez kwantowo odporne szyfrowanie end-to-end. - szyfrowanie end-to-end z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.]]> + Ten czat jest chroniony przez szyfrowanie e2e odporne na ataki kwantowe. + szyfrowanie end-to-end z perfect forward secrecy, zaprzeczalnością i odzyskiwaniem bezpieczeństwa po kompromitacji.]]> Otwórz ekran migrowania Zmigruj z innego urządzenia Ustaw hasło @@ -1650,7 +1650,7 @@ Bezpieczniejsze grupy Używaj aplikacji podczas połączenia. Połączenia obraz-w-obrazie - Administratorzy mogą blokować członka dla wszystkich. + Administratorzy mogą zablokować członka dla wszystkich członków. Nieprawidłowy link Zmigruj tutaj Migrowanie @@ -1686,7 +1686,7 @@ Potwierdź, że pamiętasz hasło do bazy danych, aby ją zmigrować. Zweryfikuj hasło bazy danych Sprawdź swoje połączenie z internetem i spróbuj ponownie - Wszystkie twoje kontakty, konwersacje i pliki będą bezpiecznie szyfrowane i wgrywane w kawałkach do skonfigurowanych przekaźników XFTP. + Wszystkie twoje kontakty, konwersacje i pliki zostaną bezpiecznie zaszyfrowane i wgrane w kawałkach do skonfigurowanych przekaźników XFTP. Archiwizuj i prześlij Uwaga: używanie tej samej bazy danych na dwóch urządzeniach zepsuje odszyfrowywanie wiadomości twoich połączeń, jako zabezpieczenie.]]> Ostrzeżenie: archiwum zostanie usunięte.]]> @@ -1713,6 +1713,44 @@ kwantowo odporne szyfrowanie end-to-end z doskonałym utajnianiem z wyprzedzeniem i odzyskiem po złamaniu.]]> Zmigruj do innego urządzenia przez kod QR. Proszę potwierdzić, że ustawienia sieciowe są prawidłowe dla tego urządzenia. - kwantowo odporne szyfrowanie e2e - Kwantowo odporne szyfrowanie + szyfrowanie e2e odporne na ataki kwantowe + Szyfrowanie odporne na ataki kwantowe + Znajdź to uprawnienie w ustawieniach Androida i przydziel je manualnie. + Zezwól w ustawieniach + Przydziel uprawnienia + Aparat + Aparat i mikrofon + Błąd podczas pokazywania powiadomienia, skontaktuj się z deweloperami. + Przydziel uprawnienia, by wykonywać połączenia + Mikrofon + Otwórz ustawienia + przekazane dalej + Połączenie z siecią + Pliki i multimedia nie są dozwolone + Linki SimpleX są niedozwolone + Wiadomości głosowe są niedozwolone + Włączony dla + właściciele + Linki SimpleX są zablokowane na tej grupie. + Inne + WiFi + Połączenie ethernet (po kablu) + administratorzy + wszyscy członkowie + Zezwól na wysyłanie linków SimpleX. + Sieć komórkowa + Członkowie grupy mogą wysyłać linki SimpleX. + Brak połączenia z siecią + Zabroń wysyłania linków SimpleX + Linki SimpleX + Przekazane dalej + Przekazane dalej od + Odbiorca/y nie mogą zobaczyć od kogo jest ta wiadomość. + Zapisane od + Pobierz + Przekaż dalej + Przekaż wiadomość… + Zapisane + zapisane + zapisane od %s \ No newline at end of file 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 f855bb040b..ce6f6bbe65 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml @@ -1798,4 +1798,19 @@ \nЭто может занять несколько минут. Ошибка открытия браузера Для звонков требуется веб-браузер по умолчанию. Пожалуйста, настройте браузер по умолчанию в системе и поделитесь дополнительной информацией с разработчиками. + Другaя сеть + WiFi + Проводная сеть + Мобильная сеть + Интернет-соединение + Нет интернет-соединения + Ошибка при показе уведомления, свяжитесь с разработчиками. + Камера + Камера и микрофон + Найдите это разрешение в настройках Android и добавьте его вручную. + Разрешить в настройках + Дать разрешение + Дать разрешение для совершения звонков + Микрофон + Открыть настройки \ No newline at end of file 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 4464e323f7..e1c0463d70 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml @@ -1652,7 +1652,7 @@ Doğrudan sohbetlerde etkinleştir (BETA)! Kuantuma dayanıklı şifreleme Yöneticiler bir üyeyi tamamen engelleyebilirler. - Uygulama veri göçü. + Uygulama verisi taşıma QR kodu aracılığıyla başka bir cihaza geçiş yapın. Resim içinde resim çağrıları Daha güvenli gruplar @@ -1716,4 +1716,13 @@ kullanmamalısınız.]]> Bir kez daha deneyebilirsiniz. Başka bir cihazdan taşı\'yı seçin ve QR kodunu tarayın.]]> + Bu izni Android ayarlarında bulun ve manuel olarak izin verin. + İzinleri verin + Arama yapmak için izin(ler)i verin + Mikrofon + Ayarları aç + Kamera + Kamera ve mikrofon + Bildirim gösterilirken hata oluştu, geliştiricilerle irtibata geçin. + Ayarlarda izin verin \ No newline at end of file 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 d502c35e9e..0297b7fd8b 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml @@ -96,4 +96,38 @@ ỨNG DỤNG Di chuyển dữ liệu ứng dụng Sao lưu dữ liệu ứng dụng + Mật mã ứng dụng đã được thay thế bằng mật mã tự hủy. + Ứng dụng mã hóa các tệp cục bộ mới (trừ video). + Áp dụng + Mật mã ứng dụng + BIỂU TƯỢNG ỨNG DỤNG + Mật mã ứng dụng + Phiên bản ứng dụng: v%s + Phiên bản ứng dụng + Tiếng Ả Rập, tiếng Bungari, tiếng Phần Lan, tiếng Do Thái, tiếng Thái và tiếng Ukraina - trân thành gửi lời cảm ơn tới các tình nguyện viên dịch thuật và Weblate. + Lưu trữ cơ sở dữ liệu + Lưu trữ và tải lên + Mở âm + Yêu cầu để nhận video + Gắn + Cuộc gọi thoại + cuộc gọi thoại (không được mã hóa đầu cuối) + Tắt âm + Yêu cầu để nhận hình ảnh + cho mỗi hồ sơ trò chuyện bạn có trong ứng dụng.]]> + Một kết nối TCP riêng biệt (và thông tin xác thực SOCKS) sẽ được sử dụng cho từng liên hệ và thành viên nhóm. +\nXin lưu ý: nếu bạn có nhiều kết nối, mức tiêu thụ pin và lưu lượng truy cập của bạn có thể cao hơn đáng kể và một số kết nối có thể không thành công. + cuộc gọi thoại + Các cuộc gọi thoại và video + Các cuộc gọi thoại và video + Các cuộc gọi thoại/video + tất cả các thành viên + Các cuộc gọi thoại/video bị cấm. + Cho phép gửi liên kết SimpleX. + quản trị viên + tác giả + Quá trình xác thực đã bị hủy bỏ + Xác thực + Quá trình xác thực không có sẵn + Quá trình xác thực đã thất bại \ No newline at end of file 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 3298da5097..f2e26fbe43 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 @@ -1715,4 +1715,42 @@ 你可以再试一次。 你可以再试一次。 请注意: 作为安全保护措施,在两部设备上使用同一数据库会破坏解密来自你联系人的消息。]]> + 显示通知出错,请联系开发者。 + 在 Android 系统设置中找到此权限并手动授予权限。 + 在系统设置中授予 + 要进行通话请授予一项或多项权限 + 相机 + 麦克风 + 相机和麦克风 + 打开设置 + 授予权限 + 网络连接 + WiFi + 有线以太网 + 移动网络 + 无网络连接 + 其他 + 已转发 + 不允许SimpleX 链接 + 不允许文件和媒体 + 不允许语音消息 + SimpleX 链接 + 允许发送 SimpleX 链接。 + 群成员可发送 SimpleX 链接。 + 禁止发送 SimpleX 链接 + 此群禁止 SimpleX 链接。 + 所有者 + 启用对象 + 管理员 + 所有成员 + 下载 + 转发消息… + 转发 + 收件人看不到这条消息来自何人。 + 已保存 + 已保存 + 保存自 + 保存自%s + 已转发 + 转发自 \ No newline at end of file From d68369b32a07056935e4eb864820b9f3c1483853 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 21 Apr 2024 20:37:14 +0100 Subject: [PATCH 062/147] android, desktop: add Lithuanian language --- apps/multiplatform/android/build.gradle.kts | 1 + .../kotlin/chat/simplex/common/views/usersettings/Appearance.kt | 1 + 2 files changed, 2 insertions(+) diff --git a/apps/multiplatform/android/build.gradle.kts b/apps/multiplatform/android/build.gradle.kts index 0a8b5ec91a..e2a5b49d0b 100644 --- a/apps/multiplatform/android/build.gradle.kts +++ b/apps/multiplatform/android/build.gradle.kts @@ -94,6 +94,7 @@ android { "it", "iw", "ja", + "lt", "nl", "pl", "pt-rBR", diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt index 67f9a02ca7..c93e7e282a 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt @@ -212,6 +212,7 @@ object AppearanceScope { "it" to "Italiano", "iw" to "עִברִית", "ja" to "日本語", + "lt" to "Lietuvių kalba", "nl" to "Nederlands", "pl" to "Polski", "pt-BR" to "Português, Brasil", From e0e94d78b04db37c0454cb7a79548ea8168839de Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Mon, 22 Apr 2024 07:45:20 +0100 Subject: [PATCH 063/147] core, ui: revert timeout changes (#4059) * core, ui: revert timeout changes * update core library --- .../AdvancedNetworkSettings.swift | 2 +- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++---------- apps/ios/SimpleXChat/APITypes.swift | 4 +- .../chat/simplex/common/model/SimpleXAPI.kt | 4 +- .../usersettings/AdvancedNetworkSettings.kt | 2 +- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- 7 files changed, 28 insertions(+), 28 deletions(-) diff --git a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift index a6ad211939..f027127db3 100644 --- a/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift +++ b/apps/ios/Shared/Views/UserSettings/AdvancedNetworkSettings.swift @@ -51,7 +51,7 @@ struct AdvancedNetworkSettings: View { } .disabled(currentNetCfg == NetCfg.proxyDefaults) - timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [5_000000, 7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 40_000000], label: secondsLabel) + timeoutSettingPicker("TCP connection timeout", selection: $netCfg.tcpConnectTimeout, values: [10_000000, 15_000000, 20_000000, 25_000000, 35_000000, 50_000000], label: secondsLabel) timeoutSettingPicker("Protocol timeout", selection: $netCfg.tcpTimeout, values: [5_000000, 7_000000, 10_000000, 15_000000, 20_000000, 30_000000], label: secondsLabel) timeoutSettingPicker("Protocol timeout per KB", selection: $netCfg.tcpTimeoutPerKb, values: [2_500, 5_000, 10_000, 15_000, 20_000, 30_000], label: secondsLabel) intSettingPicker("Receiving concurrency", selection: $netCfg.rcvConcurrency, values: [1, 2, 4, 8, 12, 16, 24], label: "") diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 8b436ee99c..16bd7311a3 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,11 +29,11 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; - 5C2217842BD4465500A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22177F2BD4465500A8B0E7 /* libgmpxx.a */; }; - 5C2217852BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217802BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a */; }; - 5C2217862BD4465500A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217812BD4465500A8B0E7 /* libgmp.a */; }; - 5C2217872BD4465500A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217822BD4465500A8B0E7 /* libffi.a */; }; - 5C2217882BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217832BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a */; }; + 5C22178E2BD5CBAC00A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217892BD5CBAC00A8B0E7 /* libffi.a */; }; + 5C22178F2BD5CBAC00A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178A2BD5CBAC00A8B0E7 /* libgmp.a */; }; + 5C2217902BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178B2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */; }; + 5C2217912BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178C2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */; }; + 5C2217922BD5CBAC00A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178D2BD5CBAC00A8B0E7 /* libgmpxx.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -279,11 +279,11 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; - 5C22177F2BD4465500A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5C2217802BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a"; sourceTree = ""; }; - 5C2217812BD4465500A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C2217822BD4465500A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 5C2217832BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a"; sourceTree = ""; }; + 5C2217892BD5CBAC00A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C22178A2BD5CBAC00A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C22178B2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a"; sourceTree = ""; }; + 5C22178C2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a"; sourceTree = ""; }; + 5C22178D2BD5CBAC00A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -525,13 +525,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C2217842BD4465500A8B0E7 /* libgmpxx.a in Frameworks */, - 5C2217872BD4465500A8B0E7 /* libffi.a in Frameworks */, - 5C2217862BD4465500A8B0E7 /* libgmp.a in Frameworks */, - 5C2217882BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, + 5C2217902BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */, + 5C22178E2BD5CBAC00A8B0E7 /* libffi.a in Frameworks */, + 5C2217912BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */, + 5C22178F2BD5CBAC00A8B0E7 /* libgmp.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 5C2217852BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a in Frameworks */, + 5C2217922BD5CBAC00A8B0E7 /* libgmpxx.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C2217822BD4465500A8B0E7 /* libffi.a */, - 5C2217812BD4465500A8B0E7 /* libgmp.a */, - 5C22177F2BD4465500A8B0E7 /* libgmpxx.a */, - 5C2217802BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy-ghc9.6.3.a */, - 5C2217832BD4465500A8B0E7 /* libHSsimplex-chat-5.7.0.1-4ZWOoOvQtRR3xwBSWKICWy.a */, + 5C2217892BD5CBAC00A8B0E7 /* libffi.a */, + 5C22178A2BD5CBAC00A8B0E7 /* libgmp.a */, + 5C22178D2BD5CBAC00A8B0E7 /* libgmpxx.a */, + 5C22178B2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */, + 5C22178C2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */, ); path = Libraries; sourceTree = ""; diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index 541799a46c..1d02f227c8 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -1266,7 +1266,7 @@ public struct NetCfg: Codable, Equatable { public static let defaults: NetCfg = NetCfg( socksProxy: nil, sessionMode: TransportSessionMode.user, - tcpConnectTimeout: 10_000_000, + tcpConnectTimeout: 25_000_000, tcpTimeout: 15_000_000, tcpTimeoutPerKb: 10_000, rcvConcurrency: 12, @@ -1279,7 +1279,7 @@ public struct NetCfg: Codable, Equatable { public static let proxyDefaults: NetCfg = NetCfg( socksProxy: nil, sessionMode: TransportSessionMode.user, - tcpConnectTimeout: 20_000_000, + tcpConnectTimeout: 35_000_000, tcpTimeout: 20_000_000, tcpTimeoutPerKb: 15_000, rcvConcurrency: 8, 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 920a440267..71ab78634e 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 @@ -3064,7 +3064,7 @@ data class NetCfg( hostMode = HostMode.OnionViaSocks, requiredHostMode = false, sessionMode = TransportSessionMode.User, - tcpConnectTimeout = 10_000_000, + tcpConnectTimeout = 25_000_000, tcpTimeout = 15_000_000, tcpTimeoutPerKb = 10_000, rcvConcurrency = 12, @@ -3079,7 +3079,7 @@ data class NetCfg( hostMode = HostMode.OnionViaSocks, requiredHostMode = false, sessionMode = TransportSessionMode.User, - tcpConnectTimeout = 20_000_000, + tcpConnectTimeout = 35_000_000, tcpTimeout = 20_000_000, tcpTimeoutPerKb = 15_000, rcvConcurrency = 8, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt index 88368c9d1d..9b6e3a0937 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/AdvancedNetworkSettings.kt @@ -159,7 +159,7 @@ fun AdvancedNetworkSettingsView(chatModel: ChatModel) { SectionItemView { TimeoutSettingRow( stringResource(MR.strings.network_option_tcp_connection_timeout), networkTCPConnectTimeout, - listOf(5_000000, 7_500000, 10_000000, 15_000000, 20_000000, 30_000000, 40_000000), secondsLabel + listOf(10_000000, 15_000000, 20_000000, 25_000000, 35_000000, 50_000000), secondsLabel ) } SectionItemView { diff --git a/cabal.project b/cabal.project index a0ba556c1c..bddea2468e 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 3d40393ae83260245c7122b850fb42cd4243deba + tag: b08314722d2c8f4d640dd5baba73c71e09ff0dda source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 0961e737c4..dfc8a85b71 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."3d40393ae83260245c7122b850fb42cd4243deba" = "0hkfz5k8kn1lqq0ms0b266pzsk48pq1gkfm7wgw6w5mr1pw149ay"; + "https://github.com/simplex-chat/simplexmq.git"."b08314722d2c8f4d640dd5baba73c71e09ff0dda" = "18jzn66sx7iaaz0l12xbkwa2qvvz1mrj8b7i8rkxrcr2rhilabga"; "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"; From 3b3a68da153fe59264a0b0f7d5d120432edce4d2 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Mon, 22 Apr 2024 08:07:42 +0100 Subject: [PATCH 064/147] core: 5.7.0.2 --- package.yaml | 2 +- simplex-chat.cabal | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.yaml b/package.yaml index 2ef0fce30b..84a0eff967 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.7.0.1 +version: 5.7.0.2 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/simplex-chat.cabal b/simplex-chat.cabal index c16c56f324..67dfb8a046 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: 5.7.0.1 +version: 5.7.0.2 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat From 529ba7a0e792659dd16f527c0fa2f18e594a692f Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 22 Apr 2024 20:46:14 +0400 Subject: [PATCH 065/147] ios: 5.7 what's new (#4062) * ios: 5.7 what's new * add about pq * update * update --------- Co-authored-by: Evgeny Poberezkin --- .../Views/Onboarding/WhatsNewView.swift | 25 ++++++++++++ apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++---------- 2 files changed, 45 insertions(+), 20 deletions(-) diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index 73ea5720c6..edb3dc17d3 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -375,6 +375,31 @@ private let versionDescriptions: [VersionDescription] = [ description: "Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" ), ] + ), + VersionDescription( + version: "v5.7", + features: [ + FeatureDescription( + icon: "key", + title: "Quantum resistant encryption", + description: "Will be enabled in direct chats!" + ), + FeatureDescription( + icon: "arrowshape.turn.up.forward", + title: "Forward and save messages", + description: "Message source remains private." + ), + FeatureDescription( + icon: "music.note", + title: "In-call sounds", + description: "When connecting audio and video calls." + ), + FeatureDescription( + icon: "antenna.radiowaves.left.and.right", + title: "Network management", + description: "More reliable network connection." + ) + ] ) ] diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 16bd7311a3..cccc267695 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,11 +29,11 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; - 5C22178E2BD5CBAC00A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217892BD5CBAC00A8B0E7 /* libffi.a */; }; - 5C22178F2BD5CBAC00A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178A2BD5CBAC00A8B0E7 /* libgmp.a */; }; - 5C2217902BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178B2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */; }; - 5C2217912BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178C2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */; }; - 5C2217922BD5CBAC00A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22178D2BD5CBAC00A8B0E7 /* libgmpxx.a */; }; + 5C2217982BD6B0F200A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217932BD6B0F200A8B0E7 /* libgmp.a */; }; + 5C2217992BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */; }; + 5C22179A2BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */; }; + 5C22179B2BD6B0F200A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */; }; + 5C22179C2BD6B0F200A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217972BD6B0F200A8B0E7 /* libffi.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -279,11 +279,11 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; - 5C2217892BD5CBAC00A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 5C22178A2BD5CBAC00A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C22178B2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a"; sourceTree = ""; }; - 5C22178C2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a"; sourceTree = ""; }; - 5C22178D2BD5CBAC00A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C2217932BD6B0F200A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a"; sourceTree = ""; }; + 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a"; sourceTree = ""; }; + 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C2217972BD6B0F200A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -525,13 +525,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5C22179B2BD6B0F200A8B0E7 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5C2217902BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */, - 5C22178E2BD5CBAC00A8B0E7 /* libffi.a in Frameworks */, - 5C2217912BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */, - 5C22178F2BD5CBAC00A8B0E7 /* libgmp.a in Frameworks */, + 5C22179A2BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */, + 5C2217992BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */, + 5C22179C2BD6B0F200A8B0E7 /* libffi.a in Frameworks */, + 5C2217982BD6B0F200A8B0E7 /* libgmp.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 5C2217922BD5CBAC00A8B0E7 /* libgmpxx.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C2217892BD5CBAC00A8B0E7 /* libffi.a */, - 5C22178A2BD5CBAC00A8B0E7 /* libgmp.a */, - 5C22178D2BD5CBAC00A8B0E7 /* libgmpxx.a */, - 5C22178B2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */, - 5C22178C2BD5CBAC00A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */, + 5C2217972BD6B0F200A8B0E7 /* libffi.a */, + 5C2217932BD6B0F200A8B0E7 /* libgmp.a */, + 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */, + 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */, + 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */, ); path = Libraries; sourceTree = ""; From 7567791866b11ffc797de3747b2dae7022564e49 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 22 Apr 2024 20:46:48 +0400 Subject: [PATCH 066/147] core: enable PQ encryption for contacts (#4049) * wip * migration * remove migration * remove flag wip * Revert "remove migration" This reverts commit 9e64663f9d13852202e5d732e846fbcc240c4449. * wip * remove vrange parameterization * tests mostly pass * more tests pass * enable for upgraded contacts * remove migration * core: test large messages (#4061) * update simplexmq, fix tests * test test * another test * enable tests * empty * empty --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat.hs | 144 ++++----- src/Simplex/Chat/Controller.hs | 11 +- src/Simplex/Chat/Protocol.hs | 10 +- src/Simplex/Chat/Store/Connections.hs | 9 +- src/Simplex/Chat/Store/Direct.hs | 24 +- src/Simplex/Chat/Store/Files.hs | 18 +- src/Simplex/Chat/Store/Groups.hs | 96 +++--- src/Simplex/Chat/Store/Messages.hs | 22 +- src/Simplex/Chat/Store/Profiles.hs | 6 +- src/Simplex/Chat/Store/Shared.hs | 8 +- src/Simplex/Chat/View.hs | 1 - tests/Bots/DirectoryTests.hs | 8 +- tests/ChatClient.hs | 24 +- tests/ChatTests/Direct.hs | 403 ++++++-------------------- tests/ChatTests/Groups.hs | 44 ++- tests/ChatTests/Profiles.hs | 4 +- tests/ChatTests/Utils.hs | 49 +--- tests/ProtocolTests.hs | 18 +- 20 files changed, 321 insertions(+), 582 deletions(-) diff --git a/cabal.project b/cabal.project index bddea2468e..572c22c5fd 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: b08314722d2c8f4d640dd5baba73c71e09ff0dda + tag: fe28e02be779fb0357a7f650bd327a75f4aaab95 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index dfc8a85b71..c4e857d97e 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."b08314722d2c8f4d640dd5baba73c71e09ff0dda" = "18jzn66sx7iaaz0l12xbkwa2qvvz1mrj8b7i8rkxrcr2rhilabga"; + "https://github.com/simplex-chat/simplexmq.git"."fe28e02be779fb0357a7f650bd327a75f4aaab95" = "1hwh0kx6ljskjx7svxpwmga79dfa2vz9qq0mwbqr6kkb9kf6qdd3"; "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.hs b/src/Simplex/Chat.hs index 2e19dd73d9..6d6437fe37 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -103,7 +103,7 @@ import Simplex.Messaging.Client (defaultNetworkConfig) import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Crypto.File (CryptoFile (..), CryptoFileArgs (..)) import qualified Simplex.Messaging.Crypto.File as CF -import Simplex.Messaging.Crypto.Ratchet (PQEncryption (..), PQSupport (..), pattern IKNoPQ, pattern IKPQOff, pattern PQEncOff, pattern PQEncOn, pattern PQSupportOff, pattern PQSupportOn) +import Simplex.Messaging.Crypto.Ratchet (PQEncryption (..), PQSupport (..), pattern IKPQOff, pattern IKPQOn, pattern PQEncOff, pattern PQEncOn, pattern PQSupportOff, pattern PQSupportOn) import qualified Simplex.Messaging.Crypto.Ratchet as CR import Simplex.Messaging.Encoding import Simplex.Messaging.Encoding.String @@ -250,7 +250,6 @@ newChatController encryptLocalFiles <- newTVarIO False tempDirectory <- newTVarIO optTempDirectory contactMergeEnabled <- newTVarIO True - pqExperimentalEnabled <- newTVarIO PQSupportOff pure ChatController { firstTime, @@ -287,8 +286,7 @@ newChatController encryptLocalFiles, tempDirectory, logFilePath = logFile, - contactMergeEnabled, - pqExperimentalEnabled + contactMergeEnabled } where configServers :: DefaultAgentServers @@ -408,7 +406,7 @@ subscribeUsers onlyNeeded users = do subscribe vr us subscribe vr us' where - subscribe :: (PQSupport -> VersionRangeChat) -> [User] -> CM' () + subscribe :: VersionRangeChat -> [User] -> CM' () subscribe vr = mapM_ $ runExceptT . subscribeUserConnections vr onlyNeeded Agent.subscribeConnections startFilesToReceive :: [User] -> CM' () @@ -492,7 +490,7 @@ processChatCommand cmd = chatVersionRange >>= (`processChatCommand'` cmd) {-# INLINE processChatCommand #-} -processChatCommand' :: (PQSupport -> VersionRangeChat) -> ChatCommand -> CM ChatResponse +processChatCommand' :: VersionRangeChat -> ChatCommand -> CM ChatResponse processChatCommand' vr = \case ShowActiveUser -> withUser' $ pure . CRActiveUser CreateActiveUser NewUser {profile, sameServers, pastTimestamp} -> do @@ -634,20 +632,6 @@ processChatCommand' vr = \case ok_ APISetEncryptLocalFiles on -> chatWriteVar encryptLocalFiles on >> ok_ SetContactMergeEnabled onOff -> chatWriteVar contactMergeEnabled onOff >> ok_ - APISetPQEncryption onOff -> chatWriteVar pqExperimentalEnabled onOff >> ok_ - APISetContactPQ ctId pqEnc -> withUser $ \user -> do - ct@Contact {activeConn} <- withStore $ \db -> getContact db vr user ctId - case activeConn of - Just conn@Connection {connId, pqSupport, pqEncryption} - | pqEncryption == pqEnc -> pure $ CRContactPQAllowed user ct pqEnc - | otherwise -> do - let pqSup = PQSupport $ pqEnc == PQEncOn || pqSupport == PQSupportOn - conn' = conn {pqSupport = pqSup, pqEncryption = pqEnc} :: Connection - ct' = ct {activeConn = Just conn'} :: Contact - withStore' $ \db -> updateConnSupportPQ db connId pqSup pqEnc - pure $ CRContactPQAllowed user ct' pqEnc - Nothing -> throwChatError $ CEContactNotActive ct - SetContactPQ cName pqEnc -> withContactName cName (`APISetContactPQ` pqEnc) APIExportArchive cfg -> checkChatStopped $ lift (exportArchive cfg) >> ok_ ExportArchive -> do ts <- liftIO getCurrentTime @@ -1470,10 +1454,9 @@ processChatCommand' vr = \case -- [incognito] generate profile for connection incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing subMode <- chatReadVar subscriptionMode - pqSup <- chatReadVar pqExperimentalEnabled - (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMInvitation Nothing (IKNoPQ pqSup) subMode + (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMInvitation Nothing IKPQOn subMode -- TODO PQ pass minVersion from the current range - conn <- withStore' $ \db -> createDirectConnection db user connId cReq ConnNew incognitoProfile subMode initialChatVersion pqSup + conn <- withStore' $ \db -> createDirectConnection db user connId cReq ConnNew incognitoProfile subMode initialChatVersion PQSupportOn pure $ CRInvitation user cReq conn AddContact incognito -> withUser $ \User {userId} -> processChatCommand $ APIAddContact userId incognito @@ -1499,8 +1482,7 @@ processChatCommand' vr = \case -- [incognito] generate profile to send incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing let profileToSend = userProfileToSend user incognitoProfile Nothing False - pqSup <- chatReadVar pqExperimentalEnabled - lift (withAgent' $ \a -> connRequestPQSupport a pqSup cReq) >>= \case + lift (withAgent' $ \a -> connRequestPQSupport a PQSupportOn cReq) >>= \case Nothing -> throwChatError CEInvalidConnReq -- TODO PQ the error above should be CEIncompatibleConnReqVersion, also the same API should be called in Plan Just (agentV, pqSup') -> do @@ -1541,8 +1523,7 @@ processChatCommand' vr = \case processChatCommand $ APIListContacts userId APICreateMyAddress userId -> withUserId userId $ \user -> procCmd $ do subMode <- chatReadVar subscriptionMode - -- TODO v5.7 pass IPPQOn - (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMContact Nothing IKPQOff subMode + (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMContact Nothing IKPQOn subMode withStore $ \db -> createUserContactLink db user connId cReq subMode pure $ CRUserContactLinkCreated user cReq CreateMyAddress -> withUser $ \User {userId} -> @@ -1671,8 +1652,8 @@ processChatCommand' vr = \case addContactConn ct ctConns = case contactSendConn_ ct of Right conn | directOrUsed ct -> (ct, conn) : ctConns _ -> ctConns - ctSndEvent :: (Contact, Connection) -> (ConnOrGroupId, PQSupport, ChatMsgEvent 'Json) - ctSndEvent (_, Connection {connId, pqSupport}) = (ConnectionId connId, pqSupport, XMsgNew $ MCSimple (extMsgContent mc Nothing)) + ctSndEvent :: (Contact, Connection) -> (ConnOrGroupId, ChatMsgEvent 'Json) + ctSndEvent (_, Connection {connId}) = (ConnectionId connId, XMsgNew $ MCSimple (extMsgContent mc Nothing)) ctMsgReq :: (Contact, Connection) -> SndMessage -> MsgReq ctMsgReq (_, conn) SndMessage {msgId, msgBody} = (conn, MsgFlags {notification = hasNotification XMsgNew_}, msgBody, msgId) zipWith3' :: (a -> b -> c -> d) -> NonEmpty a -> NonEmpty b -> NonEmpty c -> NonEmpty d @@ -1762,7 +1743,7 @@ processChatCommand' vr = \case subMode <- chatReadVar subscriptionMode dm <- encodeConnInfo $ XGrpAcpt membershipMemId agentConnId <- withAgent $ \a -> joinConnection a (aUserId user) True connRequest dm PQSupportOff subMode - let chatV = vr PQSupportOff `peerConnChatVersion` peerChatVRange + let chatV = vr `peerConnChatVersion` peerChatVRange withStore' $ \db -> do createMemberConnection db userId fromMember agentConnId chatV peerChatVRange subMode updateGroupMemberStatus db userId fromMember GSMemAccepted @@ -1925,6 +1906,7 @@ processChatCommand' vr = \case unless (maxVersion peerChatVRange >= groupDirectInvVersion) $ throwChatError CEPeerChatVRangeIncompatible when (isJust $ memberContactId m) $ throwChatError $ CECommandError "member contact already exists" subMode <- chatReadVar subscriptionMode + -- TODO PQ should negotitate contact connection with PQSupportOn? (connId, cReq) <- withAgent $ \a -> createConnection a (aUserId user) True SCMInvitation Nothing IKPQOff subMode -- [incognito] reuse membership incognito profile ct <- withStore' $ \db -> createMemberContact db user connId cReq g m mConn subMode @@ -2289,7 +2271,7 @@ processChatCommand' vr = \case connect' (Just gLinkId) cReqHash xContactId True where connect' groupLinkId cReqHash xContactId inGroup = do - pqSup <- if inGroup then pure PQSupportOff else chatReadVar pqExperimentalEnabled + let pqSup = if inGroup then PQSupportOff else PQSupportOn (connId, incognitoProfile, subMode, chatV) <- requestContact user incognito cReq xContactId inGroup pqSup conn <- withStore' $ \db -> createConnReqConnection db userId connId cReqHash xContactId incognitoProfile groupLinkId subMode chatV pqSup pure $ CRSentInvitation user conn incognitoProfile @@ -2297,7 +2279,7 @@ processChatCommand' vr = \case connectContactViaAddress user incognito ct cReq = withInvitationLock "connectContactViaAddress" (strEncode cReq) $ do newXContactId <- XContactId <$> drgRandomBytes 16 - pqSup <- chatReadVar pqExperimentalEnabled + let pqSup = PQSupportOn (connId, incognitoProfile, subMode, chatV) <- requestContact user incognito cReq newXContactId False pqSup let cReqHash = ConnReqUriHash . C.sha256Hash $ strEncode cReq ct' <- withStore $ \db -> createAddressContactConnection db vr user ct connId cReqHash newXContactId incognitoProfile subMode chatV pqSup @@ -2370,8 +2352,8 @@ processChatCommand' vr = \case mergedProfile = userProfileToSend user Nothing (Just ct) False ct' = updateMergedPreferences user' ct mergedProfile' = userProfileToSend user' Nothing (Just ct') False - ctSndEvent :: ChangedProfileContact -> (ConnOrGroupId, PQSupport, ChatMsgEvent 'Json) - ctSndEvent ChangedProfileContact {mergedProfile', conn = Connection {connId, pqSupport}} = (ConnectionId connId, pqSupport, XInfo mergedProfile') + ctSndEvent :: ChangedProfileContact -> (ConnOrGroupId, ChatMsgEvent 'Json) + ctSndEvent ChangedProfileContact {mergedProfile', conn = Connection {connId}} = (ConnectionId connId, XInfo mergedProfile') ctMsgReq :: ChangedProfileContact -> Either ChatError SndMessage -> Either ChatError MsgReq ctMsgReq ChangedProfileContact {conn} = fmap $ \SndMessage {msgId, msgBody} -> @@ -3116,10 +3098,10 @@ getRcvFilePath fileId fPath_ fn keepHandle = case fPath_ of acceptContactRequest :: User -> UserContactRequest -> Maybe IncognitoProfile -> Bool -> CM Contact acceptContactRequest user UserContactRequest {agentInvitationId = AgentInvId invId, cReqChatVRange, localDisplayName = cName, profileId, profile = cp, userContactLinkId, xContactId, pqSupport} incognitoProfile contactUsed = do subMode <- chatReadVar subscriptionMode - pqSup <- chatReadVar pqExperimentalEnabled + let pqSup = PQSupportOn vr <- chatVersionRange let profileToSend = profileToSendOnAccept user incognitoProfile False - chatV = vr pqSup `peerConnChatVersion` cReqChatVRange + chatV = vr `peerConnChatVersion` cReqChatVRange pqSup' = pqSup `CR.pqSupportAnd` pqSupport dm <- encodeConnInfoPQ pqSup' chatV $ XInfo profileToSend acId <- withAgent $ \a -> acceptContact a True invId dm pqSup' subMode @@ -3130,7 +3112,7 @@ acceptContactRequestAsync user UserContactRequest {agentInvitationId = AgentInvI subMode <- chatReadVar subscriptionMode let profileToSend = profileToSendOnAccept user incognitoProfile False vr <- chatVersionRange - chatV <- (\pq -> vr pq `peerConnChatVersion` cReqChatVRange) <$> chatReadVar pqExperimentalEnabled + let chatV = vr `peerConnChatVersion` cReqChatVRange (cmdId, acId) <- agentAcceptContactAsync user True invId (XInfo profileToSend) subMode pqSup chatV withStore' $ \db -> do ct@Contact {activeConn} <- createAcceptedContact db user acId chatV cReqChatVRange cName profileId p userContactLinkId xContactId incognitoProfile subMode pqSup contactUsed @@ -3160,7 +3142,7 @@ acceptGroupJoinRequestAsync } subMode <- chatReadVar subscriptionMode vr <- chatVersionRange - chatV <- (\pq -> vr pq `peerConnChatVersion` cReqChatVRange) <$> chatReadVar pqExperimentalEnabled + let chatV = vr `peerConnChatVersion` cReqChatVRange connIds <- agentAcceptContactAsync user True invId msg subMode PQSupportOff chatV withStore $ \db -> do liftIO $ createAcceptedMemberConnection db user connIds chatV ucr groupMemberId subMode @@ -3206,7 +3188,7 @@ agentSubscriber = do type AgentBatchSubscribe = AgentClient -> [ConnId] -> ExceptT AgentErrorType IO (Map ConnId (Either AgentErrorType ())) -subscribeUserConnections :: (PQSupport -> VersionRangeChat) -> Bool -> AgentBatchSubscribe -> User -> CM () +subscribeUserConnections :: VersionRangeChat -> Bool -> AgentBatchSubscribe -> User -> CM () subscribeUserConnections vr onlyNeeded agentBatchSubscribe user = do -- get user connections ce <- asks $ subscriptionEvents . config @@ -3500,7 +3482,7 @@ expireChatItems user@User {userId} ttl sync = do cancelFilesInProgress user filesInfo deleteFilesLocally filesInfo withStore' $ \db -> deleteContactExpiredCIs db user ct expirationDate - processGroup :: (PQSupport -> VersionRangeChat) -> UTCTime -> UTCTime -> GroupInfo -> CM () + processGroup :: VersionRangeChat -> UTCTime -> UTCTime -> GroupInfo -> CM () processGroup vr expirationDate createdAtCutoff gInfo = do lift waitChatStartedAndActivated filesInfo <- withStore' $ \db -> getGroupExpiredFileInfo db user gInfo expirationDate createdAtCutoff @@ -3658,7 +3640,7 @@ processAgentMsgSndFile _corrId aFileId msg = do case L.nonEmpty fds of Just fds' -> loopSend fds' Nothing -> pure msgDeliveryId - sendFileError :: Text -> (PQSupport -> VersionRangeChat) -> FileTransferMeta -> CM () + sendFileError :: Text -> VersionRangeChat -> FileTransferMeta -> CM () sendFileError err vr ft = do logError $ "Sent file error: " <> err ci <- withStore $ \db -> do @@ -3724,7 +3706,7 @@ processAgentMsgRcvFile _corrId aFileId msg = do agentXFTPDeleteRcvFile aFileId fileId toView $ CRRcvFileError user ci e ft -processAgentMessageConn :: (PQSupport -> VersionRangeChat) -> User -> ACorrId -> ConnId -> ACommand 'Agent 'AEConn -> CM () +processAgentMessageConn :: VersionRangeChat -> User -> ACorrId -> ConnId -> ACommand 'Agent 'AEConn -> CM () processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = do -- Missing connection/entity errors here will be sent to the view but not shown as CRITICAL alert, -- as in this case no need to ACK message - we can't process messages for this connection anyway. @@ -4105,7 +4087,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = profileToSend = profileToSendOnAccept user profileMode True void $ sendDirectMemberMessage conn (XGrpLinkMem profileToSend) groupId sendIntroductions members = do - intros <- withStore' $ \db -> createIntroductions db (maxVersion $ vr PQSupportOff) members m + intros <- withStore' $ \db -> createIntroductions db (maxVersion vr) members m shuffledIntros <- liftIO $ shuffleIntros intros if m `supportsVersion` batchSendVersion then do @@ -4557,9 +4539,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = Nothing -> do -- [incognito] generate profile to send, create connection with incognito profile incognitoProfile <- if acceptIncognito then Just . NewIncognito <$> liftIO generateRandomProfile else pure Nothing - pqSup <- chatReadVar pqExperimentalEnabled - let pqSup' = pqSup `CR.pqSupportAnd` reqPQSup - ct <- acceptContactRequestAsync user cReq incognitoProfile True pqSup' + ct <- acceptContactRequestAsync user cReq incognitoProfile True reqPQSup toView $ CRAcceptingContactRequest user ct Just groupId -> do gInfo <- withStore $ \db -> getGroupInfo db vr user groupId @@ -5644,8 +5624,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = | maxVersion mcvr >= groupDirectInvVersion -> pure Nothing | otherwise -> Just <$> createConn subMode let customUserProfileId = localProfileId <$> incognitoMembershipProfile gInfo - vr' = vr PQSupportOff - chatV = maybe (minVersion vr') (\peerVR -> vr' `peerConnChatVersion` fromChatVRange peerVR) memChatVRange + chatV = maybe (minVersion vr) (\peerVR -> vr `peerConnChatVersion` fromChatVRange peerVR) memChatVRange void $ withStore $ \db -> createIntroReMember db user gInfo m chatV memInfo memRestrictions groupConnIds directConnIds customUserProfileId subMode _ -> messageError "x.grp.mem.intro can be only sent by host member" where @@ -5693,7 +5672,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = directConnIds <- forM directConnReq $ \dcr -> joinAgentConnectionAsync user True dcr dm subMode let customUserProfileId = localProfileId <$> incognitoMembershipProfile gInfo mcvr = maybe chatInitialVRange fromChatVRange memChatVRange - chatV = vr PQSupportOff `peerConnChatVersion` mcvr + chatV = vr `peerConnChatVersion` mcvr withStore' $ \db -> createIntroToMemberContact db user m toMember chatV mcvr groupConnIds directConnIds customUserProfileId subMode xGrpMemRole :: GroupInfo -> GroupMember -> MemberId -> GroupMemberRole -> RcvMessage -> UTCTime -> CM () @@ -5892,6 +5871,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = joinConn subMode = do -- [incognito] send membership incognito profile let p = userProfileToSend user (fromLocalProfile <$> incognitoMembershipProfile g) Nothing False + -- TODO PQ should negotitate contact connection with PQSupportOn? (use encodeConnInfoPQ) dm <- encodeConnInfo $ XInfo p joinAgentConnectionAsync user True connReq dm subMode createItems mCt' m' = do @@ -6048,19 +6028,24 @@ metaBrokerTs MsgMeta {broker = (_, brokerTs)} = brokerTs sameMemberId :: MemberId -> GroupMember -> Bool sameMemberId memId GroupMember {memberId} = memId == memberId --- TODO v5.7 for contacts only version upgrade should trigger enabling PQ support/encryption updatePeerChatVRange :: Connection -> VersionRangeChat -> CM Connection -updatePeerChatVRange conn@Connection {connId, connChatVersion = v, peerChatVRange, pqSupport} msgVRange = do - v' <- lift $ upgradedConnVersion pqSupport v msgVRange - if msgVRange /= peerChatVRange || v' /= v +updatePeerChatVRange conn@Connection {connId, connChatVersion = v, peerChatVRange, connType, pqSupport, pqEncryption} msgVRange = do + v' <- lift $ upgradedConnVersion v msgVRange + conn' <- if msgVRange /= peerChatVRange || v' /= v then do withStore' $ \db -> setPeerChatVRange db connId v' msgVRange pure conn {connChatVersion = v', peerChatVRange = msgVRange} else pure conn + -- TODO v6.0 remove/review: for contacts only version upgrade should trigger enabling PQ support/encryption + if connType == ConnContact && v' >= pqEncryptionCompressionVersion && (pqSupport /= PQSupportOn || pqEncryption /= PQEncOn) + then do + withStore' $ \db -> updateConnSupportPQ db connId PQSupportOn PQEncOn + pure conn' {pqSupport = PQSupportOn, pqEncryption = PQEncOn} + else pure conn' updateMemberChatVRange :: GroupMember -> Connection -> VersionRangeChat -> CM (GroupMember, Connection) updateMemberChatVRange mem@GroupMember {groupMemberId} conn@Connection {connId, connChatVersion = v, peerChatVRange} msgVRange = do - v' <- lift $ upgradedConnVersion PQSupportOff v msgVRange + v' <- lift $ upgradedConnVersion v msgVRange if msgVRange /= peerChatVRange || v' /= v then do withStore' $ \db -> do @@ -6070,11 +6055,11 @@ updateMemberChatVRange mem@GroupMember {groupMemberId} conn@Connection {connId, pure (mem {memberChatVRange = msgVRange, activeConn = Just conn'}, conn') else pure (mem, conn) -upgradedConnVersion :: PQSupport -> VersionChat -> VersionRangeChat -> CM' VersionChat -upgradedConnVersion pqSup v peerVR = do +upgradedConnVersion :: VersionChat -> VersionRangeChat -> CM' VersionChat +upgradedConnVersion v peerVR = do vr <- chatVersionRange' -- don't allow reducing agreed connection version - pure $ maybe v (\(Compatible v') -> max v v') $ vr pqSup `compatibleVersion` peerVR + pure $ maybe v (\(Compatible v') -> max v v') $ vr `compatibleVersion` peerVR parseFileDescription :: FilePartyI p => Text -> CM (ValidFileDescription p) parseFileDescription = @@ -6241,7 +6226,7 @@ cancelSndFileTransfer user@User {userId} ft@SndFileTransfer {fileId, connId, age Just _ -> do vr <- chatVersionRange (sharedMsgId, conn) <- withStore $ \db -> (,) <$> getSharedMsgIdByFileId db userId fileId <*> getConnectionById db vr user connId - void $ sendDirectMessage_ conn PQSupportOff (BFileChunk sharedMsgId FileChunkCancel) (ConnectionId connId) + void $ sendDirectMessage_ conn (BFileChunk sharedMsgId FileChunkCancel) (ConnectionId connId) _ -> withAgent $ \a -> void . sendMessage a acId PQEncOff SMP.noMsgFlags $ smpEncode FileChunkCancel pure fileConnId fileConnId = if isNothing fileInline then Just acId else Nothing @@ -6281,8 +6266,8 @@ deleteOrUpdateMemberRecord user@User {userId} member = sendDirectContactMessage :: MsgEncodingI e => User -> Contact -> ChatMsgEvent e -> CM (SndMessage, Int64) sendDirectContactMessage user ct chatMsgEvent = do - conn@Connection {connId, pqSupport} <- liftEither $ contactSendConn_ ct - r <- sendDirectMessage_ conn pqSupport chatMsgEvent (ConnectionId connId) + conn@Connection {connId} <- liftEither $ contactSendConn_ ct + r <- sendDirectMessage_ conn chatMsgEvent (ConnectionId connId) let (sndMessage, msgDeliveryId, pqEnc') = r void $ createContactPQSndItem user ct conn pqEnc' pure (sndMessage, msgDeliveryId) @@ -6301,37 +6286,37 @@ contactSendConn_ ct@Contact {activeConn} = case activeConn of -- unlike sendGroupMemberMessage, this function will not store message as pending -- TODO v5.8 we could remove pending messages once all clients support forwarding sendDirectMemberMessage :: MsgEncodingI e => Connection -> ChatMsgEvent e -> GroupId -> CM (SndMessage, Int64, PQEncryption) -sendDirectMemberMessage conn chatMsgEvent groupId = sendDirectMessage_ conn PQSupportOff chatMsgEvent (GroupId groupId) +sendDirectMemberMessage conn chatMsgEvent groupId = sendDirectMessage_ conn chatMsgEvent (GroupId groupId) -sendDirectMessage_ :: MsgEncodingI e => Connection -> PQSupport -> ChatMsgEvent e -> ConnOrGroupId -> CM (SndMessage, Int64, PQEncryption) -sendDirectMessage_ conn pqSup chatMsgEvent connOrGroupId = do +sendDirectMessage_ :: MsgEncodingI e => Connection -> ChatMsgEvent e -> ConnOrGroupId -> CM (SndMessage, Int64, PQEncryption) +sendDirectMessage_ conn chatMsgEvent connOrGroupId = do when (connDisabled conn) $ throwChatError (CEConnectionDisabled conn) - msg@SndMessage {msgId, msgBody} <- createSndMessage chatMsgEvent connOrGroupId pqSup + msg@SndMessage {msgId, msgBody} <- createSndMessage chatMsgEvent connOrGroupId -- TODO move compressed body to SndMessage and compress in createSndMessage (msgDeliveryId, pqEnc') <- deliverMessage conn (toCMEventTag chatMsgEvent) msgBody msgId pure (msg, msgDeliveryId, pqEnc') -createSndMessage :: MsgEncodingI e => ChatMsgEvent e -> ConnOrGroupId -> PQSupport -> CM SndMessage -createSndMessage chatMsgEvent connOrGroupId pqSup = - liftEither . runIdentity =<< lift (createSndMessages $ Identity (connOrGroupId, pqSup, chatMsgEvent)) +createSndMessage :: MsgEncodingI e => ChatMsgEvent e -> ConnOrGroupId -> CM SndMessage +createSndMessage chatMsgEvent connOrGroupId = + liftEither . runIdentity =<< lift (createSndMessages $ Identity (connOrGroupId, chatMsgEvent)) -createSndMessages :: forall e t. (MsgEncodingI e, Traversable t) => t (ConnOrGroupId, PQSupport, ChatMsgEvent e) -> CM' (t (Either ChatError SndMessage)) +createSndMessages :: forall e t. (MsgEncodingI e, Traversable t) => t (ConnOrGroupId, ChatMsgEvent e) -> CM' (t (Either ChatError SndMessage)) createSndMessages idsEvents = do g <- asks random vr <- chatVersionRange' withStoreBatch $ \db -> fmap (createMsg db g vr) idsEvents where - createMsg :: DB.Connection -> TVar ChaChaDRG -> (PQSupport -> VersionRangeChat) -> (ConnOrGroupId, PQSupport, ChatMsgEvent e) -> IO (Either ChatError SndMessage) - createMsg db g vr (connOrGroupId, pqSup, evnt) = runExceptT $ do + createMsg :: DB.Connection -> TVar ChaChaDRG -> VersionRangeChat -> (ConnOrGroupId, ChatMsgEvent e) -> IO (Either ChatError SndMessage) + createMsg db g vr (connOrGroupId, evnt) = runExceptT $ do withExceptT ChatErrorStore $ createNewSndMessage db g connOrGroupId evnt encodeMessage where encodeMessage sharedMsgId = - encodeChatMessage maxEncodedMsgLength ChatMessage {chatVRange = vr pqSup, msgId = Just sharedMsgId, chatMsgEvent = evnt} + encodeChatMessage maxEncodedMsgLength ChatMessage {chatVRange = vr, msgId = Just sharedMsgId, chatMsgEvent = evnt} sendGroupMemberMessages :: forall e. MsgEncodingI e => User -> Connection -> NonEmpty (ChatMsgEvent e) -> GroupId -> CM () sendGroupMemberMessages user conn events groupId = do when (connDisabled conn) $ throwChatError (CEConnectionDisabled conn) - let idsEvts = L.map (GroupId groupId,PQSupportOff,) events + let idsEvts = L.map (GroupId groupId,) events (errs, msgs) <- lift $ partitionEithers . L.toList <$> createSndMessages idsEvts unless (null errs) $ toView $ CRChatErrors (Just user) errs forM_ (L.nonEmpty msgs) $ \msgs' -> do @@ -6367,12 +6352,12 @@ batchSndMessagesJSON = batchMessages maxEncodedMsgLength . L.toList encodeConnInfo :: MsgEncodingI e => ChatMsgEvent e -> CM ByteString encodeConnInfo chatMsgEvent = do vr <- chatVersionRange - encodeConnInfoPQ PQSupportOff (maxVersion $ vr PQSupportOff) chatMsgEvent + encodeConnInfoPQ PQSupportOff (maxVersion vr) chatMsgEvent encodeConnInfoPQ :: MsgEncodingI e => PQSupport -> VersionChat -> ChatMsgEvent e -> CM ByteString encodeConnInfoPQ pqSup v chatMsgEvent = do vr <- chatVersionRange - let info = ChatMessage {chatVRange = vr pqSup, msgId = Nothing, chatMsgEvent} + let info = ChatMessage {chatVRange = vr, msgId = Nothing, chatMsgEvent} case encodeChatMessage maxEncodedInfoLength info of ECMEncoded connInfo -> case pqSup of PQSupportOn | v >= pqEncryptionCompressionVersion && B.length connInfo > maxCompressedInfoLength -> do @@ -6459,7 +6444,7 @@ sendGroupMessage user gInfo members chatMsgEvent = do sendGroupMessage' :: MsgEncodingI e => User -> GroupInfo -> [GroupMember] -> ChatMsgEvent e -> CM (SndMessage, [GroupMember]) sendGroupMessage' user GroupInfo {groupId} members chatMsgEvent = do - msg@SndMessage {msgId, msgBody} <- createSndMessage chatMsgEvent (GroupId groupId) PQSupportOff + msg@SndMessage {msgId, msgBody} <- createSndMessage chatMsgEvent (GroupId groupId) recipientMembers <- liftIO $ shuffleMembers (filter memberCurrent members) let msgFlags = MsgFlags {notification = hasNotification $ toCMEventTag chatMsgEvent} (toSend, pending) = foldr addMember ([], []) recipientMembers @@ -6514,7 +6499,7 @@ memberSendAction chatMsgEvent members m@GroupMember {invitedByGroupMemberId} = c sendGroupMemberMessage :: MsgEncodingI e => User -> GroupMember -> ChatMsgEvent e -> Int64 -> Maybe Int64 -> CM () -> CM () sendGroupMemberMessage user m@GroupMember {groupMemberId} chatMsgEvent groupId introId_ postDeliver = do - msg <- createSndMessage chatMsgEvent (GroupId groupId) PQSupportOff + msg <- createSndMessage chatMsgEvent (GroupId groupId) messageMember msg `catchChatError` (\e -> toView (CRChatError (Just user) e)) where messageMember :: SndMessage -> CM () @@ -6931,11 +6916,11 @@ waitChatStartedAndActivated = do activated <- readTVar chatActivated unless (isJust started && activated) retry -chatVersionRange :: CM (PQSupport -> VersionRangeChat) +chatVersionRange :: CM VersionRangeChat chatVersionRange = lift chatVersionRange' {-# INLINE chatVersionRange #-} -chatVersionRange' :: CM' (PQSupport -> VersionRangeChat) +chatVersionRange' :: CM' VersionRangeChat chatVersionRange' = do ChatConfig {chatVRange} <- asks config pure chatVRange @@ -6983,9 +6968,6 @@ chatCommandP = "/remote_hosts_folder " *> (SetRemoteHostsFolder <$> filePath), "/_files_encrypt " *> (APISetEncryptLocalFiles <$> onOffP), "/contact_merge " *> (SetContactMergeEnabled <$> onOffP), - "/_pq @" *> (APISetContactPQ <$> A.decimal <* A.space <*> (PQEncryption <$> onOffP)), - "/pq @" *> (SetContactPQ <$> displayName <* A.space <*> (PQEncryption <$> onOffP)), - "/pq " *> (APISetPQEncryption . PQSupport <$> onOffP), "/_db export " *> (APIExportArchive <$> jsonP), "/db export" $> ExportArchive, "/_db import " *> (APIImportArchive <$> jsonP), diff --git a/src/Simplex/Chat/Controller.hs b/src/Simplex/Chat/Controller.hs index 00c2e153f1..29566634f4 100644 --- a/src/Simplex/Chat/Controller.hs +++ b/src/Simplex/Chat/Controller.hs @@ -76,7 +76,7 @@ import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Crypto.File (CryptoFile (..)) import qualified Simplex.Messaging.Crypto.File as CF -import Simplex.Messaging.Crypto.Ratchet (PQEncryption, PQSupport (..)) +import Simplex.Messaging.Crypto.Ratchet (PQEncryption) import Simplex.Messaging.Encoding.String import Simplex.Messaging.Notifications.Protocol (DeviceToken (..), NtfTknStatus) import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, enumJSON, parseAll, parseString, sumTypeJSON) @@ -126,7 +126,7 @@ coreVersionInfo simplexmqCommit = data ChatConfig = ChatConfig { agentConfig :: AgentConfig, - chatVRange :: PQSupport -> VersionRangeChat, + chatVRange :: VersionRangeChat, confirmMigrations :: MigrationConfirmation, defaultServers :: DefaultAgentServers, tbqSize :: Natural, @@ -230,8 +230,7 @@ data ChatController = ChatController encryptLocalFiles :: TVar Bool, tempDirectory :: TVar (Maybe FilePath), logFilePath :: Maybe FilePath, - contactMergeEnabled :: TVar Bool, - pqExperimentalEnabled :: TVar PQSupport -- TODO v5.7 remove + contactMergeEnabled :: TVar Bool } data HelpSection = HSMain | HSFiles | HSGroups | HSContacts | HSMyAddress | HSIncognito | HSMarkdown | HSMessages | HSRemote | HSSettings | HSDatabase @@ -268,9 +267,6 @@ data ChatCommand | SetRemoteHostsFolder FilePath | APISetEncryptLocalFiles Bool | SetContactMergeEnabled Bool - | APISetPQEncryption PQSupport - | APISetContactPQ ContactId PQEncryption - | SetContactPQ ContactName PQEncryption | APIExportArchive ArchiveConfig | ExportArchive | APIImportArchive ArchiveConfig @@ -736,7 +732,6 @@ data ChatResponse | CRRemoteCtrlSessionCode {remoteCtrl_ :: Maybe RemoteCtrlInfo, sessionCode :: Text} | CRRemoteCtrlConnected {remoteCtrl :: RemoteCtrlInfo} | CRRemoteCtrlStopped {rcsState :: RemoteCtrlSessionState, rcStopReason :: RemoteCtrlStopReason} - | CRContactPQAllowed {user :: User, contact :: Contact, pqEncryption :: PQEncryption} | CRContactPQEnabled {user :: User, contact :: Contact, pqEnabled :: PQEncryption} | CRSQLResult {rows :: [Text]} | CRSlowSQLQueries {chatQueries :: [SlowSQLQuery], agentQueries :: [SlowSQLQuery]} diff --git a/src/Simplex/Chat/Protocol.hs b/src/Simplex/Chat/Protocol.hs index 6cdc52a499..bfa8383974 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -49,7 +49,6 @@ import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Messaging.Agent.Protocol (VersionSMPA, pqdrSMPAgentVersion) import Simplex.Messaging.Compression (compress1, decompressBatch) -import Simplex.Messaging.Crypto.Ratchet (PQSupport (..), pattern PQSupportOff, pattern PQSupportOn) import Simplex.Messaging.Encoding import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, fromTextField_, fstToLower, parseAll, sumTypeJSON, taggedObjectJSON) @@ -70,14 +69,11 @@ import Simplex.Messaging.Version hiding (version) -- This indirection is needed for backward/forward compatibility testing. -- Testing with real app versions is still needed, as tests use the current code with different version ranges, not the old code. currentChatVersion :: VersionChat -currentChatVersion = VersionChat 7 +currentChatVersion = VersionChat 8 -- This should not be used directly in code, instead use `chatVRange` from ChatConfig (see comment above) --- TODO remove parameterization in 5.7 -supportedChatVRange :: PQSupport -> VersionRangeChat -supportedChatVRange pq = mkVersionRange initialChatVersion $ case pq of - PQSupportOn -> pqEncryptionCompressionVersion - PQSupportOff -> currentChatVersion +supportedChatVRange :: VersionRangeChat +supportedChatVRange = mkVersionRange initialChatVersion currentChatVersion {-# INLINE supportedChatVRange #-} -- version range that supports skipping establishing direct connections in a group and establishing direct connection via x.grp.direct.inv diff --git a/src/Simplex/Chat/Store/Connections.hs b/src/Simplex/Chat/Store/Connections.hs index 0e543eacf2..d42fd1d6f6 100644 --- a/src/Simplex/Chat/Store/Connections.hs +++ b/src/Simplex/Chat/Store/Connections.hs @@ -36,7 +36,6 @@ import Simplex.Chat.Types.Preferences import Simplex.Messaging.Agent.Protocol (ConnId) import Simplex.Messaging.Agent.Store.SQLite (firstRow, firstRow', maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB -import Simplex.Messaging.Crypto.Ratchet (PQSupport) import Simplex.Messaging.Util (eitherToMaybe) getChatLockEntity :: DB.Connection -> AgentConnId -> ExceptT StoreError IO ChatLockEntity @@ -64,7 +63,7 @@ getChatLockEntity db agentConnId = do ExceptT . firstRow fromOnly (SEInternalError "group member connection group_id not found") $ DB.query db "SELECT group_id FROM group_members WHERE group_member_id = ?" (Only groupMemberId) -getConnectionEntity :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> AgentConnId -> ExceptT StoreError IO ConnectionEntity +getConnectionEntity :: DB.Connection -> VersionRangeChat -> User -> AgentConnId -> ExceptT StoreError IO ConnectionEntity getConnectionEntity db vr user@User {userId, userContactId} agentConnId = do c@Connection {connType, entityId} <- getConnection_ case entityId of @@ -185,7 +184,7 @@ getConnectionEntity db vr user@User {userId, userContactId} agentConnId = do userContact_ [(cReq, groupId)] = Right UserContact {userContactLinkId, connReqContact = cReq, groupId} userContact_ _ = Left SEUserContactLinkNotFound -getConnectionEntityByConnReq :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> (ConnReqInvitation, ConnReqInvitation) -> IO (Maybe ConnectionEntity) +getConnectionEntityByConnReq :: DB.Connection -> VersionRangeChat -> User -> (ConnReqInvitation, ConnReqInvitation) -> IO (Maybe ConnectionEntity) getConnectionEntityByConnReq db vr user@User {userId} (cReqSchema1, cReqSchema2) = do connId_ <- maybeFirstRow fromOnly $ @@ -196,7 +195,7 @@ getConnectionEntityByConnReq db vr user@User {userId} (cReqSchema1, cReqSchema2) -- multiple connections can have same via_contact_uri_hash if request was repeated; -- this function searches for latest connection with contact so that "known contact" plan would be chosen; -- deleted connections are filtered out to allow re-connecting via same contact address -getContactConnEntityByConnReqHash :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> (ConnReqUriHash, ConnReqUriHash) -> IO (Maybe ConnectionEntity) +getContactConnEntityByConnReqHash :: DB.Connection -> VersionRangeChat -> User -> (ConnReqUriHash, ConnReqUriHash) -> IO (Maybe ConnectionEntity) getContactConnEntityByConnReqHash db vr user@User {userId} (cReqHash1, cReqHash2) = do connId_ <- maybeFirstRow fromOnly $ @@ -216,7 +215,7 @@ getContactConnEntityByConnReqHash db vr user@User {userId} (cReqHash1, cReqHash2 (userId, cReqHash1, cReqHash2, ConnDeleted) maybe (pure Nothing) (fmap eitherToMaybe . runExceptT . getConnectionEntity db vr user) connId_ -getConnectionsToSubscribe :: DB.Connection -> (PQSupport -> VersionRangeChat) -> IO ([ConnId], [ConnectionEntity]) +getConnectionsToSubscribe :: DB.Connection -> VersionRangeChat -> IO ([ConnId], [ConnectionEntity]) getConnectionsToSubscribe db vr = do aConnIds <- map fromOnly <$> DB.query_ db "SELECT agent_conn_id FROM connections where to_subscribe = 1" entities <- forM aConnIds $ \acId -> do diff --git a/src/Simplex/Chat/Store/Direct.hs b/src/Simplex/Chat/Store/Direct.hs index ba2586b0ca..650940b520 100644 --- a/src/Simplex/Chat/Store/Direct.hs +++ b/src/Simplex/Chat/Store/Direct.hs @@ -126,7 +126,7 @@ deletePendingContactConnection db userId connId = |] (userId, connId, ConnContact) -createAddressContactConnection :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Contact -> ConnId -> ConnReqUriHash -> XContactId -> Maybe Profile -> SubscriptionMode -> VersionChat -> PQSupport -> ExceptT StoreError IO Contact +createAddressContactConnection :: DB.Connection -> VersionRangeChat -> User -> Contact -> ConnId -> ConnReqUriHash -> XContactId -> Maybe Profile -> SubscriptionMode -> VersionChat -> PQSupport -> ExceptT StoreError IO Contact createAddressContactConnection db vr user@User {userId} Contact {contactId} acId cReqHash xContactId incognitoProfile subMode chatV pqSup = do PendingContactConnection {pccConnId} <- liftIO $ createConnReqConnection db userId acId cReqHash xContactId incognitoProfile Nothing subMode chatV pqSup liftIO $ DB.execute db "UPDATE connections SET contact_id = ? WHERE connection_id = ?" (contactId, pccConnId) @@ -153,7 +153,7 @@ createConnReqConnection db userId acId cReqHash xContactId incognitoProfile grou pccConnId <- insertedRowId db pure PendingContactConnection {pccConnId, pccAgentConnId = AgentConnId acId, pccConnStatus, viaContactUri = True, viaUserContactLink = Nothing, groupLinkId, customUserProfileId, connReqInv = Nothing, localAlias = "", createdAt, updatedAt = createdAt} -getConnReqContactXContactId :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ConnReqUriHash -> IO (Maybe Contact, Maybe XContactId) +getConnReqContactXContactId :: DB.Connection -> VersionRangeChat -> User -> ConnReqUriHash -> IO (Maybe Contact, Maybe XContactId) getConnReqContactXContactId db vr user@User {userId} cReqHash = do getContactByConnReqHash db vr user cReqHash >>= \case c@(Just _) -> pure (c, Nothing) @@ -167,7 +167,7 @@ getConnReqContactXContactId db vr user@User {userId} cReqHash = do "SELECT xcontact_id FROM connections WHERE user_id = ? AND via_contact_uri_hash = ? LIMIT 1" (userId, cReqHash) -getContactByConnReqHash :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ConnReqUriHash -> IO (Maybe Contact) +getContactByConnReqHash :: DB.Connection -> VersionRangeChat -> User -> ConnReqUriHash -> IO (Maybe Contact) getContactByConnReqHash db vr user@User {userId} cReqHash = maybeFirstRow (toContact vr user) $ DB.query @@ -279,12 +279,12 @@ setContactDeleted db user@User {userId} ct@Contact {contactId} = do currentTs <- getCurrentTime DB.execute db "UPDATE contacts SET deleted = 1, updated_at = ? WHERE user_id = ? AND contact_id = ?" (currentTs, userId, contactId) -getDeletedContacts :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> IO [Contact] +getDeletedContacts :: DB.Connection -> VersionRangeChat -> User -> IO [Contact] getDeletedContacts db vr user@User {userId} = do contactIds <- map fromOnly <$> DB.query db "SELECT contact_id FROM contacts WHERE user_id = ? AND deleted = 1" (Only userId) rights <$> mapM (runExceptT . getDeletedContact db vr user) contactIds -getDeletedContact :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ExceptT StoreError IO Contact +getDeletedContact :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ExceptT StoreError IO Contact getDeletedContact db vr user contactId = getContact_ db vr user contactId True deleteContactProfile_ :: DB.Connection -> UserId -> ContactId -> IO () @@ -521,18 +521,18 @@ updateContactLDN_ db user@User {userId} contactId displayName newName updatedAt (newName, updatedAt, userId, contactId) safeDeleteLDN db user displayName -getContactByName :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ContactName -> ExceptT StoreError IO Contact +getContactByName :: DB.Connection -> VersionRangeChat -> User -> ContactName -> ExceptT StoreError IO Contact getContactByName db vr user localDisplayName = do cId <- getContactIdByName db user localDisplayName getContact db vr user cId -getUserContacts :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> IO [Contact] +getUserContacts :: DB.Connection -> VersionRangeChat -> User -> IO [Contact] getUserContacts db vr user@User {userId} = do contactIds <- map fromOnly <$> DB.query db "SELECT contact_id FROM contacts WHERE user_id = ? AND deleted = 0" (Only userId) contacts <- rights <$> mapM (runExceptT . getContact db vr user) contactIds pure $ filter (\Contact {activeConn} -> isJust activeConn) contacts -createOrUpdateContactRequest :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> InvitationId -> VersionRangeChat -> Profile -> Maybe XContactId -> PQSupport -> ExceptT StoreError IO ContactOrRequest +createOrUpdateContactRequest :: DB.Connection -> VersionRangeChat -> User -> Int64 -> InvitationId -> VersionRangeChat -> Profile -> Maybe XContactId -> PQSupport -> ExceptT StoreError IO ContactOrRequest createOrUpdateContactRequest db vr user@User {userId} userContactLinkId invId (VersionRange minV maxV) Profile {displayName, fullName, image, contactLink, preferences} xContactId_ pqSup = liftIO (maybeM getContact' xContactId_) >>= \case Just contact -> pure $ CORContact contact @@ -732,10 +732,10 @@ getContactIdByName db User {userId} cName = ExceptT . firstRow fromOnly (SEContactNotFoundByName cName) $ DB.query db "SELECT contact_id FROM contacts WHERE user_id = ? AND local_display_name = ? AND deleted = 0" (userId, cName) -getContact :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ExceptT StoreError IO Contact +getContact :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ExceptT StoreError IO Contact getContact db vr user contactId = getContact_ db vr user contactId False -getContact_ :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> Bool -> ExceptT StoreError IO Contact +getContact_ :: DB.Connection -> VersionRangeChat -> User -> Int64 -> Bool -> ExceptT StoreError IO Contact getContact_ db vr user@User {userId} contactId deleted = ExceptT . firstRow (toContact vr user) (SEContactNotFound contactId) $ DB.query @@ -791,7 +791,7 @@ getPendingContactConnections db User {userId} = do |] [":user_id" := userId, ":conn_type" := ConnContact] -getContactConnections :: DB.Connection -> (PQSupport -> VersionRangeChat) -> UserId -> Contact -> IO [Connection] +getContactConnections :: DB.Connection -> VersionRangeChat -> UserId -> Contact -> IO [Connection] getContactConnections db vr userId Contact {contactId} = connections =<< liftIO getConnections_ where @@ -811,7 +811,7 @@ getContactConnections db vr userId Contact {contactId} = connections [] = pure [] connections rows = pure $ map (toConnection vr) rows -getConnectionById :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ExceptT StoreError IO Connection +getConnectionById :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ExceptT StoreError IO Connection getConnectionById db vr User {userId} connId = ExceptT $ do firstRow (toConnection vr) (SEConnectionNotFoundById connId) $ DB.query diff --git a/src/Simplex/Chat/Store/Files.hs b/src/Simplex/Chat/Store/Files.hs index 8ac54c7e9b..81a5897c89 100644 --- a/src/Simplex/Chat/Store/Files.hs +++ b/src/Simplex/Chat/Store/Files.hs @@ -174,7 +174,7 @@ getPendingSndChunks db fileId connId = |] (fileId, connId) -createSndDirectFTConnection :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> (CommandId, ConnId) -> SubscriptionMode -> IO () +createSndDirectFTConnection :: DB.Connection -> VersionRangeChat -> User -> Int64 -> (CommandId, ConnId) -> SubscriptionMode -> IO () createSndDirectFTConnection db vr user@User {userId} fileId (cmdId, acId) subMode = do currentTs <- getCurrentTime Connection {connId} <- createSndFileConnection_ db vr userId fileId acId subMode @@ -194,7 +194,7 @@ createSndGroupFileTransfer db userId GroupInfo {groupId} filePath FileInvitation fileId <- insertedRowId db pure FileTransferMeta {fileId, xftpSndFile = Nothing, xftpRedirectFor = Nothing, fileName, filePath, fileSize, fileInline, chunkSize, cancelled = False} -createSndGroupFileTransferConnection :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> (CommandId, ConnId) -> GroupMember -> SubscriptionMode -> IO () +createSndGroupFileTransferConnection :: DB.Connection -> VersionRangeChat -> User -> Int64 -> (CommandId, ConnId) -> GroupMember -> SubscriptionMode -> IO () createSndGroupFileTransferConnection db vr user@User {userId} fileId (cmdId, acId) GroupMember {groupMemberId} subMode = do currentTs <- getCurrentTime Connection {connId} <- createSndFileConnection_ db vr userId fileId acId subMode @@ -430,10 +430,10 @@ lookupChatRefByFileId db User {userId} fileId = (userId, fileId) -- TODO v6.0 remove -createSndFileConnection_ :: DB.Connection -> (PQSupport -> VersionRangeChat) -> UserId -> Int64 -> ConnId -> SubscriptionMode -> IO Connection +createSndFileConnection_ :: DB.Connection -> VersionRangeChat -> UserId -> Int64 -> ConnId -> SubscriptionMode -> IO Connection createSndFileConnection_ db vr userId fileId agentConnId subMode = do currentTs <- getCurrentTime - createConnection_ db userId ConnSndFile (Just fileId) agentConnId (minVersion $ vr PQSupportOff) chatInitialVRange Nothing Nothing Nothing 0 currentTs subMode CR.PQSupportOff + createConnection_ db userId ConnSndFile (Just fileId) agentConnId (minVersion vr) chatInitialVRange Nothing Nothing Nothing 0 currentTs subMode CR.PQSupportOff updateSndFileStatus :: DB.Connection -> SndFileTransfer -> FileStatus -> IO () updateSndFileStatus db SndFileTransfer {fileId, connId} status = do @@ -695,7 +695,7 @@ getRcvFileTransfer_ db userId fileId = do _ -> pure Nothing cancelled = fromMaybe False cancelled_ -acceptRcvFileTransfer :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> (CommandId, ConnId) -> ConnStatus -> FilePath -> SubscriptionMode -> ExceptT StoreError IO AChatItem +acceptRcvFileTransfer :: DB.Connection -> VersionRangeChat -> User -> Int64 -> (CommandId, ConnId) -> ConnStatus -> FilePath -> SubscriptionMode -> ExceptT StoreError IO AChatItem acceptRcvFileTransfer db vr user@User {userId} fileId (cmdId, acId) connStatus filePath subMode = ExceptT $ do currentTs <- getCurrentTime acceptRcvFT_ db user fileId filePath Nothing currentTs @@ -707,7 +707,7 @@ acceptRcvFileTransfer db vr user@User {userId} fileId (cmdId, acId) connStatus f setCommandConnId db user cmdId connId runExceptT $ getChatItemByFileId db vr user fileId -getContactByFileId :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> FileTransferId -> ExceptT StoreError IO Contact +getContactByFileId :: DB.Connection -> VersionRangeChat -> User -> FileTransferId -> ExceptT StoreError IO Contact getContactByFileId db vr user@User {userId} fileId = do cId <- getContactIdByFileId getContact db vr user cId @@ -716,7 +716,7 @@ getContactByFileId db vr user@User {userId} fileId = do ExceptT . firstRow fromOnly (SEContactNotFoundByFileId fileId) $ DB.query db "SELECT contact_id FROM files WHERE user_id = ? AND file_id = ?" (userId, fileId) -acceptRcvInlineFT :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> FileTransferId -> FilePath -> ExceptT StoreError IO AChatItem +acceptRcvInlineFT :: DB.Connection -> VersionRangeChat -> User -> FileTransferId -> FilePath -> ExceptT StoreError IO AChatItem acceptRcvInlineFT db vr user fileId filePath = do liftIO $ acceptRcvFT_ db user fileId filePath (Just IFMOffer) =<< getCurrentTime getChatItemByFileId db vr user fileId @@ -725,7 +725,7 @@ startRcvInlineFT :: DB.Connection -> User -> RcvFileTransfer -> FilePath -> Mayb startRcvInlineFT db user RcvFileTransfer {fileId} filePath rcvFileInline = acceptRcvFT_ db user fileId filePath rcvFileInline =<< getCurrentTime -xftpAcceptRcvFT :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> FileTransferId -> FilePath -> ExceptT StoreError IO AChatItem +xftpAcceptRcvFT :: DB.Connection -> VersionRangeChat -> User -> FileTransferId -> FilePath -> ExceptT StoreError IO AChatItem xftpAcceptRcvFT db vr user fileId filePath = do liftIO $ acceptRcvFT_ db user fileId filePath Nothing =<< getCurrentTime getChatItemByFileId db vr user fileId @@ -1000,7 +1000,7 @@ getLocalCryptoFile db userId fileId sent = pure $ CryptoFile filePath fileCryptoArgs _ -> throwError $ SEFileNotFound fileId -updateDirectCIFileStatus :: forall d. MsgDirectionI d => DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> CIFileStatus d -> ExceptT StoreError IO AChatItem +updateDirectCIFileStatus :: forall d. MsgDirectionI d => DB.Connection -> VersionRangeChat -> User -> Int64 -> CIFileStatus d -> ExceptT StoreError IO AChatItem updateDirectCIFileStatus db vr user fileId fileStatus = do aci@(AChatItem cType d cInfo ci) <- getChatItemByFileId db vr user fileId case (cType, testEquality d $ msgDirection @d) of diff --git a/src/Simplex/Chat/Store/Groups.hs b/src/Simplex/Chat/Store/Groups.hs index cd62f17f4c..23796f95e7 100644 --- a/src/Simplex/Chat/Store/Groups.hs +++ b/src/Simplex/Chat/Store/Groups.hs @@ -145,7 +145,7 @@ import Simplex.Messaging.Agent.Protocol (ConnId, UserId) import Simplex.Messaging.Agent.Store.SQLite (firstRow, maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import qualified Simplex.Messaging.Crypto as C -import Simplex.Messaging.Crypto.Ratchet (PQSupport, pattern PQEncOff, pattern PQSupportOff) +import Simplex.Messaging.Crypto.Ratchet (pattern PQEncOff, pattern PQSupportOff) import Simplex.Messaging.Protocol (SubscriptionMode (..)) import Simplex.Messaging.Util (eitherToMaybe, ($>>=), (<$$>)) import Simplex.Messaging.Version @@ -157,9 +157,9 @@ type GroupMemberRow = ((Int64, Int64, MemberId, VersionChat, VersionChat, GroupM type MaybeGroupMemberRow = ((Maybe Int64, Maybe Int64, Maybe MemberId, Maybe VersionChat, Maybe VersionChat, Maybe GroupMemberRole, Maybe GroupMemberCategory, Maybe GroupMemberStatus, Maybe Bool, Maybe MemberRestrictionStatus) :. (Maybe Int64, Maybe GroupMemberId, Maybe ContactName, Maybe ContactId, Maybe ProfileId, Maybe ProfileId, Maybe ContactName, Maybe Text, Maybe ImageData, Maybe ConnReqContact, Maybe LocalAlias, Maybe Preferences)) -toGroupInfo :: (PQSupport -> VersionRangeChat) -> Int64 -> GroupInfoRow -> GroupInfo +toGroupInfo :: VersionRangeChat -> Int64 -> GroupInfoRow -> GroupInfo toGroupInfo vr userContactId ((groupId, localDisplayName, displayName, fullName, description, image, hostConnCustomUserProfileId, enableNtfs_, sendRcpts, favorite, groupPreferences) :. (createdAt, updatedAt, chatTs, userMemberProfileSentAt, customData) :. userMemberRow) = - let membership = (toGroupMember userContactId userMemberRow) {memberChatVRange = vr PQSupportOff} + let membership = (toGroupMember userContactId userMemberRow) {memberChatVRange = vr} chatSettings = ChatSettings {enableNtfs = fromMaybe MFAll enableNtfs_, sendRcpts, favorite} fullGroupPreferences = mergeGroupPreferences groupPreferences groupProfile = GroupProfile {displayName, fullName, description, image, groupPreferences} @@ -191,7 +191,7 @@ createGroupLink db User {userId} groupInfo@GroupInfo {groupId, localDisplayName} userContactLinkId <- insertedRowId db void $ createConnection_ db userId ConnUserContact (Just userContactLinkId) agentConnId initialChatVersion chatInitialVRange Nothing Nothing Nothing 0 currentTs subMode PQSupportOff -getGroupLinkConnection :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupInfo -> ExceptT StoreError IO Connection +getGroupLinkConnection :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> ExceptT StoreError IO Connection getGroupLinkConnection db vr User {userId} groupInfo@GroupInfo {groupId} = ExceptT . firstRow (toConnection vr) (SEGroupLinkNotFound groupInfo) $ DB.query @@ -264,7 +264,7 @@ setGroupLinkMemberRole :: DB.Connection -> User -> Int64 -> GroupMemberRole -> I setGroupLinkMemberRole db User {userId} userContactLinkId memberRole = DB.execute db "UPDATE user_contact_links SET group_link_member_role = ? WHERE user_id = ? AND user_contact_link_id = ?" (memberRole, userId, userContactLinkId) -getGroupAndMember :: DB.Connection -> User -> Int64 -> (PQSupport -> VersionRangeChat) -> ExceptT StoreError IO (GroupInfo, GroupMember) +getGroupAndMember :: DB.Connection -> User -> Int64 -> VersionRangeChat -> ExceptT StoreError IO (GroupInfo, GroupMember) getGroupAndMember db User {userId, userContactId} groupMemberId vr = ExceptT . firstRow toGroupAndMember (SEInternalError "referenced group member not found") $ DB.query @@ -309,7 +309,7 @@ getGroupAndMember db User {userId, userContactId} groupMemberId vr = in (groupInfo, (member :: GroupMember) {activeConn = toMaybeConnection vr connRow}) -- | creates completely new group with a single member - the current user -createNewGroup :: DB.Connection -> (PQSupport -> VersionRangeChat) -> TVar ChaChaDRG -> User -> GroupProfile -> Maybe Profile -> ExceptT StoreError IO GroupInfo +createNewGroup :: DB.Connection -> VersionRangeChat -> TVar ChaChaDRG -> User -> GroupProfile -> Maybe Profile -> ExceptT StoreError IO GroupInfo createNewGroup db vr gVar user@User {userId} groupProfile incognitoProfile = ExceptT $ do let GroupProfile {displayName, fullName, description, image, groupPreferences} = groupProfile fullGroupPreferences = mergeGroupPreferences groupPreferences @@ -352,7 +352,7 @@ createNewGroup db vr gVar user@User {userId} groupProfile incognitoProfile = Exc } -- | creates a new group record for the group the current user was invited to, or returns an existing one -createGroupInvitation :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Contact -> GroupInvitation -> Maybe ProfileId -> ExceptT StoreError IO (GroupInfo, GroupMemberId) +createGroupInvitation :: DB.Connection -> VersionRangeChat -> User -> Contact -> GroupInvitation -> Maybe ProfileId -> ExceptT StoreError IO (GroupInfo, GroupMemberId) createGroupInvitation _ _ _ Contact {localDisplayName, activeConn = Nothing} _ _ = throwError $ SEContactNotReady localDisplayName createGroupInvitation db vr user@User {userId} contact@Contact {contactId, activeConn = Just Connection {customUserProfileId, peerChatVRange}} GroupInvitation {fromMember, invitedMember, connRequest, groupProfile} incognitoProfileId = do liftIO getInvitationGroupId_ >>= \case @@ -397,7 +397,7 @@ createGroupInvitation db vr user@User {userId} contact@Contact {contactId, activ |] (profileId, localDisplayName, connRequest, customUserProfileId, userId, True, currentTs, currentTs, currentTs, currentTs) insertedRowId db - let hostVRange = const $ adjustedMemberVRange vr peerChatVRange + let hostVRange = adjustedMemberVRange vr peerChatVRange GroupMember {groupMemberId} <- createContactMemberInv_ db user groupId Nothing contact fromMember GCHostMember GSMemInvited IBUnknown Nothing currentTs hostVRange membership <- createContactMemberInv_ db user groupId (Just groupMemberId) user invitedMember GCUserMember GSMemInvited (IBContact contactId) incognitoProfileId currentTs vr let chatSettings = ChatSettings {enableNtfs = MFAll, sendRcpts = Nothing, favorite = False} @@ -419,9 +419,9 @@ createGroupInvitation db vr user@User {userId} contact@Contact {contactId, activ groupMemberId ) -adjustedMemberVRange :: (PQSupport -> VersionRangeChat) -> VersionRangeChat -> VersionRangeChat -adjustedMemberVRange getVR vr@(VersionRange minV maxV) = - let maxV' = min maxV (maxVersion $ getVR PQSupportOff) +adjustedMemberVRange :: VersionRangeChat -> VersionRangeChat -> VersionRangeChat +adjustedMemberVRange chatVR vr@(VersionRange minV maxV) = + let maxV' = min maxV (maxVersion chatVR) in fromMaybe vr $ safeVersionRange minV (max minV maxV') getHostMemberId_ :: DB.Connection -> User -> GroupId -> ExceptT StoreError IO GroupMemberId @@ -429,7 +429,7 @@ getHostMemberId_ db User {userId} groupId = ExceptT . firstRow fromOnly (SEHostMemberIdNotFound groupId) $ DB.query db "SELECT group_member_id FROM group_members WHERE user_id = ? AND group_id = ? AND member_category = ?" (userId, groupId, GCHostMember) -createContactMemberInv_ :: IsContact a => DB.Connection -> User -> GroupId -> Maybe GroupMemberId -> a -> MemberIdRole -> GroupMemberCategory -> GroupMemberStatus -> InvitedBy -> Maybe ProfileId -> UTCTime -> (PQSupport -> VersionRangeChat) -> ExceptT StoreError IO GroupMember +createContactMemberInv_ :: IsContact a => DB.Connection -> User -> GroupId -> Maybe GroupMemberId -> a -> MemberIdRole -> GroupMemberCategory -> GroupMemberStatus -> InvitedBy -> Maybe ProfileId -> UTCTime -> VersionRangeChat -> ExceptT StoreError IO GroupMember createContactMemberInv_ db User {userId, userContactId} groupId invitedByGroupMemberId userOrContact MemberIdRole {memberId, memberRole} memberCategory memberStatus invitedBy incognitoProfileId createdAt vr = do incognitoProfile <- forM incognitoProfileId $ \profileId -> getProfileById db userId profileId (localDisplayName, memberProfile) <- case (incognitoProfile, incognitoProfileId) of @@ -457,7 +457,7 @@ createContactMemberInv_ db User {userId, userContactId} groupId invitedByGroupMe memberChatVRange } where - memberChatVRange@(VersionRange minV maxV) = vr PQSupportOff + memberChatVRange@(VersionRange minV maxV) = vr insertMember_ :: IO ContactName insertMember_ = do let localDisplayName = localDisplayName' userOrContact @@ -493,7 +493,7 @@ createContactMemberInv_ db User {userId, userContactId} groupId invitedByGroupMe ) pure $ Right incognitoLdn -createGroupInvitedViaLink :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Connection -> GroupLinkInvitation -> ExceptT StoreError IO (GroupInfo, GroupMember) +createGroupInvitedViaLink :: DB.Connection -> VersionRangeChat -> User -> Connection -> GroupLinkInvitation -> ExceptT StoreError IO (GroupInfo, GroupMember) createGroupInvitedViaLink db vr @@ -564,7 +564,7 @@ setGroupInvitationChatItemId db User {userId} groupId chatItemId = do -- TODO return the last connection that is ready, not any last connection -- requires updating connection status -getGroup :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupId -> ExceptT StoreError IO Group +getGroup :: DB.Connection -> VersionRangeChat -> User -> GroupId -> ExceptT StoreError IO Group getGroup db vr user groupId = do gInfo <- getGroupInfo db vr user groupId members <- liftIO $ getGroupMembers db vr user gInfo @@ -619,12 +619,12 @@ deleteGroupProfile_ db userId groupId = |] (userId, groupId) -getUserGroups :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> IO [Group] +getUserGroups :: DB.Connection -> VersionRangeChat -> User -> IO [Group] getUserGroups db vr user@User {userId} = do groupIds <- map fromOnly <$> DB.query db "SELECT group_id FROM groups WHERE user_id = ?" (Only userId) rights <$> mapM (runExceptT . getGroup db vr user) groupIds -getUserGroupDetails :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Maybe ContactId -> Maybe String -> IO [GroupInfo] +getUserGroupDetails :: DB.Connection -> VersionRangeChat -> User -> Maybe ContactId -> Maybe String -> IO [GroupInfo] getUserGroupDetails db vr User {userId, userContactId} _contactId_ search_ = map (toGroupInfo vr userContactId) <$> DB.query @@ -647,7 +647,7 @@ getUserGroupDetails db vr User {userId, userContactId} _contactId_ search_ = where search = fromMaybe "" search_ -getUserGroupsWithSummary :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Maybe ContactId -> Maybe String -> IO [(GroupInfo, GroupSummary)] +getUserGroupsWithSummary :: DB.Connection -> VersionRangeChat -> User -> Maybe ContactId -> Maybe String -> IO [(GroupInfo, GroupSummary)] getUserGroupsWithSummary db vr user _contactId_ search_ = getUserGroupDetails db vr user _contactId_ search_ >>= mapM (\g@GroupInfo {groupId} -> (g,) <$> getGroupSummary db user groupId) @@ -688,7 +688,7 @@ checkContactHasGroups :: DB.Connection -> User -> Contact -> IO (Maybe GroupId) checkContactHasGroups db User {userId} Contact {contactId} = maybeFirstRow fromOnly $ DB.query db "SELECT group_id FROM group_members WHERE user_id = ? AND contact_id = ? LIMIT 1" (userId, contactId) -getGroupInfoByName :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupName -> ExceptT StoreError IO GroupInfo +getGroupInfoByName :: DB.Connection -> VersionRangeChat -> User -> GroupName -> ExceptT StoreError IO GroupInfo getGroupInfoByName db vr user gName = do gId <- getGroupIdByName db user gName getGroupInfo db vr user gId @@ -712,7 +712,7 @@ groupMemberQuery = ) |] -getGroupMember :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupId -> GroupMemberId -> ExceptT StoreError IO GroupMember +getGroupMember :: DB.Connection -> VersionRangeChat -> User -> GroupId -> GroupMemberId -> ExceptT StoreError IO GroupMember getGroupMember db vr user@User {userId} groupId groupMemberId = ExceptT . firstRow (toContactMember vr user) (SEGroupMemberNotFound groupMemberId) $ DB.query @@ -720,7 +720,7 @@ getGroupMember db vr user@User {userId} groupId groupMemberId = (groupMemberQuery <> " WHERE m.group_id = ? AND m.group_member_id = ? AND m.user_id = ?") (userId, groupId, groupMemberId, userId) -getGroupMemberById :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMemberId -> ExceptT StoreError IO GroupMember +getGroupMemberById :: DB.Connection -> VersionRangeChat -> User -> GroupMemberId -> ExceptT StoreError IO GroupMember getGroupMemberById db vr user@User {userId} groupMemberId = ExceptT . firstRow (toContactMember vr user) (SEGroupMemberNotFound groupMemberId) $ DB.query @@ -728,7 +728,7 @@ getGroupMemberById db vr user@User {userId} groupMemberId = (groupMemberQuery <> " WHERE m.group_member_id = ? AND m.user_id = ?") (userId, groupMemberId, userId) -getGroupMemberByMemberId :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupInfo -> MemberId -> ExceptT StoreError IO GroupMember +getGroupMemberByMemberId :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> MemberId -> ExceptT StoreError IO GroupMember getGroupMemberByMemberId db vr user@User {userId} GroupInfo {groupId} memberId = ExceptT . firstRow (toContactMember vr user) (SEGroupMemberNotFoundByMemberId memberId) $ DB.query @@ -736,7 +736,7 @@ getGroupMemberByMemberId db vr user@User {userId} GroupInfo {groupId} memberId = (groupMemberQuery <> " WHERE m.group_id = ? AND m.member_id = ?") (userId, groupId, memberId) -getGroupMembers :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupInfo -> IO [GroupMember] +getGroupMembers :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> IO [GroupMember] getGroupMembers db vr user@User {userId, userContactId} GroupInfo {groupId} = do map (toContactMember vr user) <$> DB.query @@ -744,7 +744,7 @@ getGroupMembers db vr user@User {userId, userContactId} GroupInfo {groupId} = do (groupMemberQuery <> " WHERE m.group_id = ? AND m.user_id = ? AND (m.contact_id IS NULL OR m.contact_id != ?)") (userId, groupId, userId, userContactId) -getGroupMembersForExpiration :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupInfo -> IO [GroupMember] +getGroupMembersForExpiration :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> IO [GroupMember] getGroupMembersForExpiration db vr user@User {userId, userContactId} GroupInfo {groupId} = do map (toContactMember vr user) <$> DB.query @@ -760,7 +760,7 @@ getGroupMembersForExpiration db vr user@User {userId, userContactId} GroupInfo { ) (userId, groupId, userId, userContactId, GSMemRemoved, GSMemLeft, GSMemGroupDeleted, GSMemUnknown) -toContactMember :: (PQSupport -> VersionRangeChat) -> User -> (GroupMemberRow :. MaybeConnectionRow) -> GroupMember +toContactMember :: VersionRangeChat -> User -> (GroupMemberRow :. MaybeConnectionRow) -> GroupMember toContactMember vr User {userContactId} (memberRow :. connRow) = (toGroupMember userContactId memberRow) {activeConn = toMaybeConnection vr connRow} @@ -778,7 +778,7 @@ getGroupCurrentMembersCount db User {userId} GroupInfo {groupId} = do (groupId, userId) pure $ length $ filter memberCurrent' statuses -getGroupInvitation :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupId -> ExceptT StoreError IO ReceivedGroupInvitation +getGroupInvitation :: DB.Connection -> VersionRangeChat -> User -> GroupId -> ExceptT StoreError IO ReceivedGroupInvitation getGroupInvitation db vr user groupId = getConnRec_ user >>= \case Just connRequest -> do @@ -913,7 +913,7 @@ createAcceptedMemberConnection Connection {connId} <- createConnection_ db userId ConnMember (Just groupMemberId) agentConnId chatV cReqChatVRange Nothing (Just userContactLinkId) Nothing 0 createdAt subMode PQSupportOff setCommandConnId db user cmdId connId -getContactViaMember :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMember -> ExceptT StoreError IO Contact +getContactViaMember :: DB.Connection -> VersionRangeChat -> User -> GroupMember -> ExceptT StoreError IO Contact getContactViaMember db vr user@User {userId} GroupMember {groupMemberId} = do contactId <- ExceptT $ @@ -1174,7 +1174,7 @@ getIntroduction db reMember toMember = ExceptT $ do in Right GroupMemberIntro {introId, reMember, toMember, introStatus, introInvitation} toIntro _ = Left SEIntroNotFound -getForwardIntroducedMembers :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMember -> Bool -> IO [GroupMember] +getForwardIntroducedMembers :: DB.Connection -> VersionRangeChat -> User -> GroupMember -> Bool -> IO [GroupMember] getForwardIntroducedMembers db vr user invitee highlyAvailable = do memberIds <- map fromOnly <$> query filter memberCurrent . rights <$> mapM (runExceptT . getGroupMemberById db vr user) memberIds @@ -1194,7 +1194,7 @@ getForwardIntroducedMembers db vr user invitee highlyAvailable = do WHERE to_group_member_id = ? AND intro_status NOT IN (?,?,?) |] -getForwardInvitedMembers :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMember -> Bool -> IO [GroupMember] +getForwardInvitedMembers :: DB.Connection -> VersionRangeChat -> User -> GroupMember -> Bool -> IO [GroupMember] getForwardInvitedMembers db vr user forwardMember highlyAvailable = do memberIds <- map fromOnly <$> query filter memberCurrent . rights <$> mapM (runExceptT . getGroupMemberById db vr user) memberIds @@ -1288,7 +1288,7 @@ createMemberConnection_ :: DB.Connection -> UserId -> Int64 -> ConnId -> Version createMemberConnection_ db userId groupMemberId agentConnId chatV peerChatVRange viaContact connLevel currentTs subMode = createConnection_ db userId ConnMember (Just groupMemberId) agentConnId chatV peerChatVRange viaContact Nothing Nothing connLevel currentTs subMode PQSupportOff -getViaGroupMember :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Contact -> IO (Maybe (GroupInfo, GroupMember)) +getViaGroupMember :: DB.Connection -> VersionRangeChat -> User -> Contact -> IO (Maybe (GroupInfo, GroupMember)) getViaGroupMember db vr User {userId, userContactId} Contact {contactId} = maybeFirstRow toGroupAndMember $ DB.query @@ -1333,7 +1333,7 @@ getViaGroupMember db vr User {userId, userContactId} Contact {contactId} = member = toGroupMember userContactId memberRow in (groupInfo, (member :: GroupMember) {activeConn = toMaybeConnection vr connRow}) -getViaGroupContact :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMember -> IO (Maybe Contact) +getViaGroupContact :: DB.Connection -> VersionRangeChat -> User -> GroupMember -> IO (Maybe Contact) getViaGroupContact db vr user@User {userId} GroupMember {groupMemberId} = do contactId_ <- maybeFirstRow fromOnly $ @@ -1384,7 +1384,7 @@ updateGroupProfile db user@User {userId} g@GroupInfo {groupId, localDisplayName, (ldn, currentTs, userId, groupId) safeDeleteLDN db user localDisplayName -getGroupInfo :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ExceptT StoreError IO GroupInfo +getGroupInfo :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ExceptT StoreError IO GroupInfo getGroupInfo db vr User {userId, userContactId} groupId = ExceptT . firstRow (toGroupInfo vr userContactId) (SEGroupNotFound groupId) $ DB.query @@ -1407,7 +1407,7 @@ getGroupInfo db vr User {userId, userContactId} groupId = |] (groupId, userId, userContactId) -getGroupInfoByUserContactLinkConnReq :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> (ConnReqContact, ConnReqContact) -> IO (Maybe GroupInfo) +getGroupInfoByUserContactLinkConnReq :: DB.Connection -> VersionRangeChat -> User -> (ConnReqContact, ConnReqContact) -> IO (Maybe GroupInfo) getGroupInfoByUserContactLinkConnReq db vr user@User {userId} (cReqSchema1, cReqSchema2) = do groupId_ <- maybeFirstRow fromOnly $ @@ -1421,7 +1421,7 @@ getGroupInfoByUserContactLinkConnReq db vr user@User {userId} (cReqSchema1, cReq (userId, cReqSchema1, cReqSchema2) maybe (pure Nothing) (fmap eitherToMaybe . runExceptT . getGroupInfo db vr user) groupId_ -getGroupInfoByGroupLinkHash :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> (ConnReqUriHash, ConnReqUriHash) -> IO (Maybe GroupInfo) +getGroupInfoByGroupLinkHash :: DB.Connection -> VersionRangeChat -> User -> (ConnReqUriHash, ConnReqUriHash) -> IO (Maybe GroupInfo) getGroupInfoByGroupLinkHash db vr user@User {userId, userContactId} (groupLinkHash1, groupLinkHash2) = do groupId_ <- maybeFirstRow fromOnly $ @@ -1448,7 +1448,7 @@ getGroupMemberIdByName db User {userId} groupId groupMemberName = ExceptT . firstRow fromOnly (SEGroupMemberNameNotFound groupId groupMemberName) $ DB.query db "SELECT group_member_id FROM group_members WHERE user_id = ? AND group_id = ? AND local_display_name = ?" (userId, groupId, groupMemberName) -getActiveMembersByName :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ContactName -> ExceptT StoreError IO [(GroupInfo, GroupMember)] +getActiveMembersByName :: DB.Connection -> VersionRangeChat -> User -> ContactName -> ExceptT StoreError IO [(GroupInfo, GroupMember)] getActiveMembersByName db vr user@User {userId} groupMemberName = do groupMemberIds :: [(GroupId, GroupMemberId)] <- liftIO $ @@ -1469,7 +1469,7 @@ getActiveMembersByName db vr user@User {userId} groupMemberName = do where ts GroupInfo {chatTs, updatedAt} = fromMaybe updatedAt chatTs -getMatchingContacts :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Contact -> IO [Contact] +getMatchingContacts :: DB.Connection -> VersionRangeChat -> User -> Contact -> IO [Contact] getMatchingContacts db vr user@User {userId} Contact {contactId, profile = LocalProfile {displayName, fullName, image}} = do contactIds <- map fromOnly <$> case image of @@ -1489,7 +1489,7 @@ getMatchingContacts db vr user@User {userId} Contact {contactId, profile = Local AND p.display_name = ? AND p.full_name = ? |] -getMatchingMembers :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Contact -> IO [GroupMember] +getMatchingMembers :: DB.Connection -> VersionRangeChat -> User -> Contact -> IO [GroupMember] getMatchingMembers db vr user@User {userId} Contact {profile = LocalProfile {displayName, fullName, image}} = do memberIds <- map fromOnly <$> case image of @@ -1508,7 +1508,7 @@ getMatchingMembers db vr user@User {userId} Contact {profile = LocalProfile {dis AND p.display_name = ? AND p.full_name = ? |] -getMatchingMemberContacts :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMember -> IO [Contact] +getMatchingMemberContacts :: DB.Connection -> VersionRangeChat -> User -> GroupMember -> IO [Contact] getMatchingMemberContacts _ _ _ GroupMember {memberContactId = Just _} = pure [] getMatchingMemberContacts db vr user@User {userId} GroupMember {memberProfile = LocalProfile {displayName, fullName, image}} = do contactIds <- @@ -1547,7 +1547,7 @@ createSentProbeHash db userId probeId to = do "INSERT INTO sent_probe_hashes (sent_probe_id, contact_id, group_member_id, user_id, created_at, updated_at) VALUES (?,?,?,?,?,?)" (probeId, ctId, gmId, userId, currentTs, currentTs) -matchReceivedProbe :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ContactOrMember -> Probe -> IO [ContactOrMember] +matchReceivedProbe :: DB.Connection -> VersionRangeChat -> User -> ContactOrMember -> Probe -> IO [ContactOrMember] matchReceivedProbe db vr user@User {userId} from (Probe probe) = do let probeHash = C.sha256Hash probe cgmIds <- @@ -1579,7 +1579,7 @@ matchReceivedProbe db vr user@User {userId} from (Probe probe) = do (x : _) -> [x] ctIds' <> memIds -matchReceivedProbeHash :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ContactOrMember -> ProbeHash -> IO (Maybe (ContactOrMember, Probe)) +matchReceivedProbeHash :: DB.Connection -> VersionRangeChat -> User -> ContactOrMember -> ProbeHash -> IO (Maybe (ContactOrMember, Probe)) matchReceivedProbeHash db vr user@User {userId} from (ProbeHash probeHash) = do probeIds <- maybeFirstRow id $ @@ -1602,7 +1602,7 @@ matchReceivedProbeHash db vr user@User {userId} from (ProbeHash probeHash) = do (ctId, gmId, probeHash, userId, currentTs, currentTs) pure probeIds $>>= \(Only probe :. cgmIds) -> (,Probe probe) <$$> getContactOrMember_ db vr user cgmIds -matchSentProbe :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ContactOrMember -> Probe -> IO (Maybe ContactOrMember) +matchSentProbe :: DB.Connection -> VersionRangeChat -> User -> ContactOrMember -> Probe -> IO (Maybe ContactOrMember) matchSentProbe db vr user@User {userId} _from (Probe probe) = do cgmIds $>>= getContactOrMember_ db vr user where @@ -1623,7 +1623,7 @@ matchSentProbe db vr user@User {userId} _from (Probe probe) = do |] (userId, probe, ctId, gmId) -getContactOrMember_ :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> (Maybe ContactId, Maybe GroupId, Maybe GroupMemberId) -> IO (Maybe ContactOrMember) +getContactOrMember_ :: DB.Connection -> VersionRangeChat -> User -> (Maybe ContactId, Maybe GroupId, Maybe GroupMemberId) -> IO (Maybe ContactOrMember) getContactOrMember_ db vr user ids = fmap eitherToMaybe . runExceptT $ case ids of (Just ctId, _, _) -> COMContact <$> getContact db vr user ctId @@ -1631,7 +1631,7 @@ getContactOrMember_ db vr user ids = _ -> throwError $ SEInternalError "" -- if requested merge direction is overruled (toFromContacts), keepLDN is kept -mergeContactRecords :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Contact -> Contact -> ExceptT StoreError IO Contact +mergeContactRecords :: DB.Connection -> VersionRangeChat -> User -> Contact -> Contact -> ExceptT StoreError IO Contact mergeContactRecords db vr user@User {userId} to@Contact {localDisplayName = keepLDN} from = do let (toCt, fromCt) = toFromContacts to from Contact {contactId = toContactId, localDisplayName = toLDN} = toCt @@ -1721,7 +1721,7 @@ associateMemberWithContactRecord when (memProfileId /= profileId) $ deleteUnusedProfile_ db userId memProfileId when (memLDN /= localDisplayName) $ deleteUnusedDisplayName_ db userId memLDN -associateContactWithMemberRecord :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMember -> Contact -> ExceptT StoreError IO Contact +associateContactWithMemberRecord :: DB.Connection -> VersionRangeChat -> User -> GroupMember -> Contact -> ExceptT StoreError IO Contact associateContactWithMemberRecord db vr @@ -1958,7 +1958,7 @@ createMemberContact mergedPreferences = contactUserPreferences user userPreferences preferences $ connIncognito ctConn pure Contact {contactId, localDisplayName, profile = memberProfile, activeConn = Just ctConn, viaGroup = Nothing, contactUsed = True, contactStatus = CSActive, chatSettings = defaultChatSettings, userPreferences, mergedPreferences, createdAt = currentTs, updatedAt = currentTs, chatTs = Just currentTs, contactGroupMemberId = Just groupMemberId, contactGrpInvSent = False, customData = Nothing} -getMemberContact :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ContactId -> ExceptT StoreError IO (GroupInfo, GroupMember, Contact, ConnReqInvitation) +getMemberContact :: DB.Connection -> VersionRangeChat -> User -> ContactId -> ExceptT StoreError IO (GroupInfo, GroupMember, Contact, ConnReqInvitation) getMemberContact db vr user contactId = do ct <- getContact db vr user contactId let Contact {contactGroupMemberId, activeConn} = ct @@ -2138,7 +2138,7 @@ setXGrpLinkMemReceived db mId xGrpLinkMemReceived = do "UPDATE group_members SET xgrplinkmem_received = ?, updated_at = ? WHERE group_member_id = ?" (xGrpLinkMemReceived, currentTs, mId) -createNewUnknownGroupMember :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupInfo -> MemberId -> Text -> ExceptT StoreError IO GroupMember +createNewUnknownGroupMember :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> MemberId -> Text -> ExceptT StoreError IO GroupMember createNewUnknownGroupMember db vr user@User {userId, userContactId} GroupInfo {groupId} memberId memberName = do currentTs <- liftIO getCurrentTime let memberProfile = profileFromName memberName @@ -2160,9 +2160,9 @@ createNewUnknownGroupMember db vr user@User {userId, userContactId} GroupInfo {g insertedRowId db getGroupMemberById db vr user groupMemberId where - VersionRange minV maxV = vr PQSupportOff + VersionRange minV maxV = vr -updateUnknownMemberAnnounced :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupMember -> GroupMember -> MemberInfo -> ExceptT StoreError IO GroupMember +updateUnknownMemberAnnounced :: DB.Connection -> VersionRangeChat -> User -> GroupMember -> GroupMember -> MemberInfo -> ExceptT StoreError IO GroupMember updateUnknownMemberAnnounced db vr user@User {userId} invitingMember unknownMember@GroupMember {groupMemberId, memberChatVRange} MemberInfo {memberRole, v, profile} = do _ <- updateMemberProfile db user unknownMember profile currentTs <- liftIO getCurrentTime diff --git a/src/Simplex/Chat/Store/Messages.hs b/src/Simplex/Chat/Store/Messages.hs index 2b31a215da..69157eba0a 100644 --- a/src/Simplex/Chat/Store/Messages.hs +++ b/src/Simplex/Chat/Store/Messages.hs @@ -484,7 +484,7 @@ getChatItemQuote_ db User {userId, userContactId} chatDirection QuotedMsg {msgRe ciQuoteGroup [] = ciQuote Nothing $ CIQGroupRcv Nothing ciQuoteGroup ((Only itemId :. memberRow) : _) = ciQuote itemId . CIQGroupRcv . Just $ toGroupMember userContactId memberRow -getChatPreviews :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Bool -> PaginationByTime -> ChatListQuery -> IO [Either StoreError AChat] +getChatPreviews :: DB.Connection -> VersionRangeChat -> User -> Bool -> PaginationByTime -> ChatListQuery -> IO [Either StoreError AChat] getChatPreviews db vr user withPCC pagination query = do directChats <- findDirectChatPreviews_ db user pagination query groupChats <- findGroupChatPreviews_ db user pagination query @@ -621,7 +621,7 @@ findDirectChatPreviews_ db User {userId} pagination clq = ) ([":user_id" := userId, ":rcv_new" := CISRcvNew, ":search" := search] <> pagParams) -getDirectChatPreview_ :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ChatPreviewData 'CTDirect -> ExceptT StoreError IO AChat +getDirectChatPreview_ :: DB.Connection -> VersionRangeChat -> User -> ChatPreviewData 'CTDirect -> ExceptT StoreError IO AChat getDirectChatPreview_ db vr user (DirectChatPD _ contactId lastItemId_ stats) = do contact <- getContact db vr user contactId lastItem <- case lastItemId_ of @@ -717,7 +717,7 @@ findGroupChatPreviews_ db User {userId} pagination clq = ) ([":user_id" := userId, ":rcv_new" := CISRcvNew, ":search" := search] <> pagParams) -getGroupChatPreview_ :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ChatPreviewData 'CTGroup -> ExceptT StoreError IO AChat +getGroupChatPreview_ :: DB.Connection -> VersionRangeChat -> User -> ChatPreviewData 'CTGroup -> ExceptT StoreError IO AChat getGroupChatPreview_ db vr user (GroupChatPD _ groupId lastItemId_ stats) = do groupInfo <- getGroupInfo db vr user groupId lastItem <- case lastItemId_ of @@ -923,7 +923,7 @@ getContactConnectionChatPreviews_ db User {userId} pagination clq = case clq of aChat = AChat SCTContactConnection $ Chat (ContactConnection conn) [] stats in ACPD SCTContactConnection $ ContactConnectionPD updatedAt aChat -getDirectChat :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ChatPagination -> Maybe String -> ExceptT StoreError IO (Chat 'CTDirect) +getDirectChat :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ChatPagination -> Maybe String -> ExceptT StoreError IO (Chat 'CTDirect) getDirectChat db vr user contactId pagination search_ = do let search = fromMaybe "" search_ ct <- getContact db vr user contactId @@ -1043,7 +1043,7 @@ getDirectChatBefore_ db user@User {userId} ct@Contact {contactId} beforeChatItem |] (userId, contactId, search, beforeChatItemId, count) -getGroupChat :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ChatPagination -> Maybe String -> ExceptT StoreError IO (Chat 'CTGroup) +getGroupChat :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ChatPagination -> Maybe String -> ExceptT StoreError IO (Chat 'CTGroup) getGroupChat db vr user groupId pagination search_ = do let search = fromMaybe "" search_ g <- getGroupInfo db vr user groupId @@ -1526,7 +1526,7 @@ toGroupChatItem currentTs userContactId (((itemId, itemTs, AMsgDirection msgDir, ciTimed :: Maybe CITimed ciTimed = timedTTL >>= \ttl -> Just CITimed {ttl, deleteAt = timedDeleteAt} -getAllChatItems :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ChatPagination -> Maybe String -> ExceptT StoreError IO [AChatItem] +getAllChatItems :: DB.Connection -> VersionRangeChat -> User -> ChatPagination -> Maybe String -> ExceptT StoreError IO [AChatItem] getAllChatItems db vr user@User {userId} pagination search_ = do itemRefs <- rights . map toChatItemRef <$> case pagination of @@ -2179,7 +2179,7 @@ deleteLocalChatItem db User {userId} NoteFolder {noteFolderId} ci = do |] (userId, noteFolderId, itemId) -getChatItemByFileId :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ExceptT StoreError IO AChatItem +getChatItemByFileId :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ExceptT StoreError IO AChatItem getChatItemByFileId db vr user@User {userId} fileId = do (chatRef, itemId) <- ExceptT . firstRow' toChatItemRef (SEChatItemNotFoundByFileId fileId) $ @@ -2195,13 +2195,13 @@ getChatItemByFileId db vr user@User {userId} fileId = do (userId, fileId) getAChatItem db vr user chatRef itemId -lookupChatItemByFileId :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> Int64 -> ExceptT StoreError IO (Maybe AChatItem) +lookupChatItemByFileId :: DB.Connection -> VersionRangeChat -> User -> Int64 -> ExceptT StoreError IO (Maybe AChatItem) lookupChatItemByFileId db vr user fileId = do fmap Just (getChatItemByFileId db vr user fileId) `catchError` \case SEChatItemNotFoundByFileId {} -> pure Nothing e -> throwError e -getChatItemByGroupId :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupId -> ExceptT StoreError IO AChatItem +getChatItemByGroupId :: DB.Connection -> VersionRangeChat -> User -> GroupId -> ExceptT StoreError IO AChatItem getChatItemByGroupId db vr user@User {userId} groupId = do (chatRef, itemId) <- ExceptT . firstRow' toChatItemRef (SEChatItemNotFoundByGroupId groupId) $ @@ -2227,7 +2227,7 @@ getChatRefViaItemId db User {userId} itemId = do (Nothing, Just groupId) -> Right $ ChatRef CTGroup groupId (_, _) -> Left $ SEBadChatItem itemId Nothing -getAChatItem :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ChatRef -> ChatItemId -> ExceptT StoreError IO AChatItem +getAChatItem :: DB.Connection -> VersionRangeChat -> User -> ChatRef -> ChatItemId -> ExceptT StoreError IO AChatItem getAChatItem db vr user chatRef itemId = case chatRef of ChatRef CTDirect contactId -> do ct <- getContact db vr user contactId @@ -2476,7 +2476,7 @@ createCIModeration db GroupInfo {groupId} moderatorMember itemMemberId itemShare |] (groupId, groupMemberId' moderatorMember, itemMemberId, itemSharedMId, msgId, moderatedAtTs) -getCIModeration :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> GroupInfo -> MemberId -> Maybe SharedMsgId -> IO (Maybe CIModeration) +getCIModeration :: DB.Connection -> VersionRangeChat -> User -> GroupInfo -> MemberId -> Maybe SharedMsgId -> IO (Maybe CIModeration) getCIModeration _ _ _ _ _ Nothing = pure Nothing getCIModeration db vr user GroupInfo {groupId} itemMemberId (Just sharedMsgId) = do r_ <- diff --git a/src/Simplex/Chat/Store/Profiles.hs b/src/Simplex/Chat/Store/Profiles.hs index 0e2445572c..312907fb16 100644 --- a/src/Simplex/Chat/Store/Profiles.hs +++ b/src/Simplex/Chat/Store/Profiles.hs @@ -328,7 +328,7 @@ createUserContactLink db User {userId} agentConnId cReq subMode = userContactLinkId <- insertedRowId db void $ createConnection_ db userId ConnUserContact (Just userContactLinkId) agentConnId initialChatVersion chatInitialVRange Nothing Nothing Nothing 0 currentTs subMode CR.PQSupportOff -getUserAddressConnections :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> ExceptT StoreError IO [Connection] +getUserAddressConnections :: DB.Connection -> VersionRangeChat -> User -> ExceptT StoreError IO [Connection] getUserAddressConnections db vr User {userId} = do cs <- liftIO getUserAddressConnections_ if null cs then throwError SEUserContactLinkNotFound else pure cs @@ -349,7 +349,7 @@ getUserAddressConnections db vr User {userId} = do |] (userId, userId) -getUserContactLinks :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> IO [(Connection, UserContact)] +getUserContactLinks :: DB.Connection -> VersionRangeChat -> User -> IO [(Connection, UserContact)] getUserContactLinks db vr User {userId} = map toUserContactConnection <$> DB.query @@ -475,7 +475,7 @@ getUserContactLinkByConnReq db User {userId} (cReqSchema1, cReqSchema2) = |] (userId, cReqSchema1, cReqSchema2) -getContactWithoutConnViaAddress :: DB.Connection -> (PQSupport -> VersionRangeChat) -> User -> (ConnReqContact, ConnReqContact) -> IO (Maybe Contact) +getContactWithoutConnViaAddress :: DB.Connection -> VersionRangeChat -> User -> (ConnReqContact, ConnReqContact) -> IO (Maybe Contact) getContactWithoutConnViaAddress db vr user@User {userId} (cReqSchema1, cReqSchema2) = do ctId_ <- maybeFirstRow fromOnly $ diff --git a/src/Simplex/Chat/Store/Shared.hs b/src/Simplex/Chat/Store/Shared.hs index ef7cda4802..fe86b0c2df 100644 --- a/src/Simplex/Chat/Store/Shared.hs +++ b/src/Simplex/Chat/Store/Shared.hs @@ -166,12 +166,12 @@ type ConnectionRow = (Int64, ConnId, Int, Maybe Int64, Maybe Int64, Bool, Maybe type MaybeConnectionRow = (Maybe Int64, Maybe ConnId, Maybe Int, Maybe Int64, Maybe Int64, Maybe Bool, Maybe GroupLinkId, Maybe Int64, Maybe ConnStatus, Maybe ConnType, Maybe Bool, Maybe LocalAlias) :. EntityIdsRow :. (Maybe UTCTime, Maybe Text, Maybe UTCTime, Maybe PQSupport, Maybe PQEncryption, Maybe PQEncryption, Maybe PQEncryption, Maybe Int, Maybe VersionChat, Maybe VersionChat, Maybe VersionChat) -toConnection :: (PQSupport -> VersionRangeChat) -> ConnectionRow -> Connection +toConnection :: VersionRangeChat -> ConnectionRow -> Connection toConnection vr ((connId, acId, connLevel, viaContact, viaUserContactLink, viaGroupLink, groupLinkId, customUserProfileId, connStatus, connType, contactConnInitiated, localAlias) :. (contactId, groupMemberId, sndFileId, rcvFileId, userContactLinkId) :. (createdAt, code_, verifiedAt_, pqSupport, pqEncryption, pqSndEnabled, pqRcvEnabled, authErrCounter, chatV, minVer, maxVer)) = Connection { connId, agentConnId = AgentConnId acId, - connChatVersion = fromMaybe (vr pqSupport `peerConnChatVersion` peerChatVRange) chatV, + connChatVersion = fromMaybe (vr `peerConnChatVersion` peerChatVRange) chatV, peerChatVRange = peerChatVRange, connLevel, viaContact, @@ -201,7 +201,7 @@ toConnection vr ((connId, acId, connLevel, viaContact, viaUserContactLink, viaGr entityId_ ConnSndFile = sndFileId entityId_ ConnUserContact = userContactLinkId -toMaybeConnection :: (PQSupport -> VersionRangeChat) -> MaybeConnectionRow -> Maybe Connection +toMaybeConnection :: VersionRangeChat -> MaybeConnectionRow -> Maybe Connection toMaybeConnection vr ((Just connId, Just agentConnId, Just connLevel, viaContact, viaUserContactLink, Just viaGroupLink, groupLinkId, customUserProfileId, Just connStatus, Just connType, Just contactConnInitiated, Just localAlias) :. (contactId, groupMemberId, sndFileId, rcvFileId, userContactLinkId) :. (Just createdAt, code_, verifiedAt_, Just pqSupport, Just pqEncryption, pqSndEnabled_, pqRcvEnabled_, Just authErrCounter, connChatVersion, Just minVer, Just maxVer)) = Just $ toConnection vr ((connId, agentConnId, connLevel, viaContact, viaUserContactLink, viaGroupLink, groupLinkId, customUserProfileId, connStatus, connType, contactConnInitiated, localAlias) :. (contactId, groupMemberId, sndFileId, rcvFileId, userContactLinkId) :. (createdAt, code_, verifiedAt_, pqSupport, pqEncryption, pqSndEnabled_, pqRcvEnabled_, authErrCounter, connChatVersion, minVer, maxVer)) toMaybeConnection _ _ = Nothing @@ -382,7 +382,7 @@ deleteUnusedIncognitoProfileById_ db User {userId} profileId = type ContactRow = (ContactId, ProfileId, ContactName, Maybe Int64, ContactName, Text, Maybe ImageData, Maybe ConnReqContact, LocalAlias, Bool, ContactStatus) :. (Maybe MsgFilter, Maybe Bool, Bool, Maybe Preferences, Preferences, UTCTime, UTCTime, Maybe UTCTime, Maybe GroupMemberId, Bool, Maybe CustomData) -toContact :: (PQSupport -> VersionRangeChat) -> User -> ContactRow :. MaybeConnectionRow -> Contact +toContact :: VersionRangeChat -> User -> ContactRow :. MaybeConnectionRow -> Contact toContact vr user (((contactId, profileId, localDisplayName, viaGroup, displayName, fullName, image, contactLink, localAlias, contactUsed, contactStatus) :. (enableNtfs_, sendRcpts, favorite, preferences, userPreferences, createdAt, updatedAt, chatTs, contactGroupMemberId, contactGrpInvSent, customData)) :. connRow) = let profile = LocalProfile {profileId, displayName, fullName, image, contactLink, preferences, localAlias} activeConn = toMaybeConnection vr connRow diff --git a/src/Simplex/Chat/View.hs b/src/Simplex/Chat/View.hs index 89d0136478..a10acc884a 100644 --- a/src/Simplex/Chat/View.hs +++ b/src/Simplex/Chat/View.hs @@ -342,7 +342,6 @@ responseToView hu@(currentRH, user_) ChatConfig {logLevel, showReactions, showRe CRRemoteCtrlConnected RemoteCtrlInfo {remoteCtrlId = rcId, ctrlDeviceName} -> ["remote controller " <> sShow rcId <> " session started with " <> plain ctrlDeviceName] CRRemoteCtrlStopped {} -> ["remote controller stopped"] - CRContactPQAllowed u c (CR.PQEncryption pqOn) -> ttyUser u [ttyContact' c <> ": enable " <> (if pqOn then "quantum resistant" else "standard") <> " end-to-end encryption"] CRContactPQEnabled u c (CR.PQEncryption pqOn) -> ttyUser u [ttyContact' c <> ": " <> (if pqOn then "quantum resistant" else "standard") <> " end-to-end encryption enabled"] CRSQLResult rows -> map plain rows CRSlowSQLQueries {chatQueries, agentQueries} -> diff --git a/tests/Bots/DirectoryTests.hs b/tests/Bots/DirectoryTests.hs index fbabccfb54..7cd775c5ee 100644 --- a/tests/Bots/DirectoryTests.hs +++ b/tests/Bots/DirectoryTests.hs @@ -809,7 +809,9 @@ testRestoreDirectory tmp = do groupFoundN 3 bob "privacy" groupFound bob "security" groupFoundN 3 cath "privacy" - groupFound cath "security" + cath #> "@SimpleX-Directory security" + cath <## "SimpleX-Directory: quantum resistant end-to-end encryption enabled" + groupFoundN' 2 cath "security" listGroups :: HasCallStack => TestCC -> TestCC -> TestCC -> IO () listGroups superUser bob cath = do @@ -1055,6 +1057,10 @@ groupFound = groupFoundN 2 groupFoundN :: Int -> TestCC -> String -> IO () groupFoundN count u name = do u #> ("@SimpleX-Directory " <> name) + groupFoundN' count u name + +groupFoundN' :: Int -> TestCC -> String -> IO () +groupFoundN' count u name = do u <# ("SimpleX-Directory> > " <> name) u <## " Found 1 group(s)." u <#. ("SimpleX-Directory> " <> name) diff --git a/tests/ChatClient.hs b/tests/ChatClient.hs index a827236a15..4897a3b3d3 100644 --- a/tests/ChatClient.hs +++ b/tests/ChatClient.hs @@ -44,7 +44,7 @@ import Simplex.Messaging.Agent.RetryInterval import Simplex.Messaging.Agent.Store.SQLite (MigrationConfirmation (..), closeSQLiteStore) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import Simplex.Messaging.Client (ProtocolClientConfig (..), defaultNetworkConfig) -import Simplex.Messaging.Crypto.Ratchet (supportedE2EEncryptVRange, pattern PQSupportOff) +import Simplex.Messaging.Crypto.Ratchet (supportedE2EEncryptVRange) import qualified Simplex.Messaging.Crypto.Ratchet as CR import Simplex.Messaging.Server (runSMPServerBlocking) import Simplex.Messaging.Server.Env.STM @@ -146,8 +146,8 @@ testAgentCfgVPrev :: AgentConfig testAgentCfgVPrev = testAgentCfg { smpClientVRange = prevRange $ smpClientVRange testAgentCfg, - smpAgentVRange = \_ -> prevRange $ supportedSMPAgentVRange PQSupportOff, - e2eEncryptVRange = \_ -> prevRange $ supportedE2EEncryptVRange PQSupportOff, + smpAgentVRange = prevRange supportedSMPAgentVRange, + e2eEncryptVRange = prevRange supportedE2EEncryptVRange, smpCfg = (smpCfg testAgentCfg) {serverVRange = prevRange $ serverVRange $ smpCfg testAgentCfg} } @@ -155,8 +155,8 @@ testAgentCfgVNext :: AgentConfig testAgentCfgVNext = testAgentCfg { smpClientVRange = nextRange $ smpClientVRange testAgentCfg, - smpAgentVRange = \_ -> mkVersionRange duplexHandshakeSMPAgentVersion $ max pqdrSMPAgentVersion currentSMPAgentVersion, - e2eEncryptVRange = \_ -> mkVersionRange CR.kdfX3DHE2EEncryptVersion $ max CR.pqRatchetE2EEncryptVersion CR.currentE2EEncryptVersion, + smpAgentVRange = mkVersionRange duplexHandshakeSMPAgentVersion $ max pqdrSMPAgentVersion currentSMPAgentVersion, + e2eEncryptVRange = mkVersionRange CR.kdfX3DHE2EEncryptVersion $ max CR.pqRatchetE2EEncryptVersion CR.currentE2EEncryptVersion, smpCfg = (smpCfg testAgentCfg) {serverVRange = nextRange $ serverVRange $ smpCfg testAgentCfg} } @@ -164,29 +164,29 @@ testAgentCfgV1 :: AgentConfig testAgentCfgV1 = testAgentCfg { smpClientVRange = v1Range, - smpAgentVRange = \_ -> versionToRange duplexHandshakeSMPAgentVersion, - e2eEncryptVRange = \_ -> versionToRange CR.kdfX3DHE2EEncryptVersion, + smpAgentVRange = versionToRange duplexHandshakeSMPAgentVersion, + e2eEncryptVRange = versionToRange CR.kdfX3DHE2EEncryptVersion, smpCfg = (smpCfg testAgentCfg) {serverVRange = versionToRange batchCmdsSMPVersion} } testCfgVPrev :: ChatConfig testCfgVPrev = testCfg - { chatVRange = \_ -> prevRange $ chatVRange testCfg PQSupportOff, + { chatVRange = prevRange $ chatVRange testCfg, agentConfig = testAgentCfgVPrev } testCfgVNext :: ChatConfig testCfgVNext = testCfg - { chatVRange = \_ -> mkVersionRange initialChatVersion $ max pqEncryptionCompressionVersion currentChatVersion, + { chatVRange = mkVersionRange initialChatVersion $ max pqEncryptionCompressionVersion currentChatVersion, agentConfig = testAgentCfgVNext } testCfgV1 :: ChatConfig testCfgV1 = testCfg - { chatVRange = const v1Range, + { chatVRange = v1Range, agentConfig = testAgentCfgV1 } @@ -210,7 +210,7 @@ testCfgCreateGroupDirect = mkCfgCreateGroupDirect testCfg mkCfgCreateGroupDirect :: ChatConfig -> ChatConfig -mkCfgCreateGroupDirect cfg = cfg {chatVRange = const groupCreateDirectVRange} +mkCfgCreateGroupDirect cfg = cfg {chatVRange = groupCreateDirectVRange} groupCreateDirectVRange :: VersionRangeChat groupCreateDirectVRange = mkVersionRange (VersionChat 1) (VersionChat 1) @@ -220,7 +220,7 @@ testCfgGroupLinkViaContact = mkCfgGroupLinkViaContact testCfg mkCfgGroupLinkViaContact :: ChatConfig -> ChatConfig -mkCfgGroupLinkViaContact cfg = cfg {chatVRange = const groupLinkViaContactVRange} +mkCfgGroupLinkViaContact cfg = cfg {chatVRange = groupLinkViaContactVRange} groupLinkViaContactVRange :: VersionRangeChat groupLinkViaContactVRange = mkVersionRange (VersionChat 1) (VersionChat 2) diff --git a/tests/ChatTests/Direct.hs b/tests/ChatTests/Direct.hs index 4b0389ab90..82eb4def39 100644 --- a/tests/ChatTests/Direct.hs +++ b/tests/ChatTests/Direct.hs @@ -10,7 +10,7 @@ import ChatClient import ChatTests.Utils import Control.Concurrent (threadDelay) import Control.Concurrent.Async (concurrently_) -import Control.Monad (forM_, when) +import Control.Monad (forM_) import Data.Aeson (ToJSON) import qualified Data.Aeson as J import qualified Data.ByteString.Char8 as B @@ -21,11 +21,10 @@ import qualified Simplex.Chat.AppSettings as AS import Simplex.Chat.Call import Simplex.Chat.Controller (ChatConfig (..)) import Simplex.Chat.Options (ChatOpts (..)) -import Simplex.Chat.Protocol (currentChatVersion, pqEncryptionCompressionVersion, supportedChatVRange) +import Simplex.Chat.Protocol (supportedChatVRange) import Simplex.Chat.Store (agentStoreFile, chatStoreFile) -import Simplex.Chat.Types (VersionRangeChat, authErrDisableCount, sameVerificationCode, verificationCode, VersionChat, pattern VersionChat) +import Simplex.Chat.Types (VersionRangeChat, authErrDisableCount, sameVerificationCode, verificationCode, pattern VersionChat) import qualified Simplex.Messaging.Crypto as C -import Simplex.Messaging.Crypto.Ratchet (PQEncryption (..), pattern PQEncOff, pattern PQEncOn, pattern PQSupportOff, pattern PQSupportOn) import Simplex.Messaging.Util (safeDecodeUtf8) import Simplex.Messaging.Version import System.Directory (copyFile, doesDirectoryExist, doesFileExist) @@ -47,6 +46,7 @@ chatDirectTests = do it "direct timed message" testDirectTimedMessage it "repeat AUTH errors disable contact" testRepeatAuthErrorsDisableContact it "should send multiline message" testMultilineMessage + it "send large message" testLargeMessage describe "duplicate contacts" $ do it "duplicate contacts are separate (contacts don't merge)" testDuplicateContactsSeparate it "new contact is separate with multiple duplicate contacts (contacts don't merge)" testDuplicateContactsMultipleSeparate @@ -116,25 +116,18 @@ chatDirectTests = do it "should send delivery receipts depending on configuration" testConfigureDeliveryReceipts describe "negotiate connection peer chat protocol version range" $ do describe "peer version range correctly set for new connection via invitation" $ do - testInvVRange (supportedChatVRange PQSupportOff) (supportedChatVRange PQSupportOff) - testInvVRange (supportedChatVRange PQSupportOff) vr11 - testInvVRange vr11 (supportedChatVRange PQSupportOff) + testInvVRange supportedChatVRange supportedChatVRange + testInvVRange supportedChatVRange vr11 + testInvVRange vr11 supportedChatVRange testInvVRange vr11 vr11 describe "peer version range correctly set for new connection via contact request" $ do - testReqVRange (supportedChatVRange PQSupportOff) (supportedChatVRange PQSupportOff) - testReqVRange (supportedChatVRange PQSupportOff) vr11 - testReqVRange vr11 (supportedChatVRange PQSupportOff) + testReqVRange supportedChatVRange supportedChatVRange + testReqVRange supportedChatVRange vr11 + testReqVRange vr11 supportedChatVRange testReqVRange vr11 vr11 it "update peer version range on received messages" testUpdatePeerChatVRange describe "network statuses" $ do it "should get network statuses" testGetNetworkStatuses - describe "PQ tests" $ do - describe "enable PQ before connection, connect via invitation link" $ pqMatrix2 runTestPQConnectViaLink - describe "enable PQ before connection, connect via contact address" $ pqMatrix2 runTestPQConnectViaAddress - describe "connect via invitation link with PQ encryption enabled" $ pqVersionTestMatrix2 runTestPQVersionsViaLink - describe "connect via contact address with PQ encryption enabled" $ pqVersionTestMatrix2 runTestPQVersionsViaAddress - it "should enable PQ after several messages in connection without PQ" testPQEnableContact - it "should enable PQ, reduce envelope size and enable compression" testPQEnableContactCompression where testInvVRange vr1 vr2 = it (vRangeStr vr1 <> " - " <> vRangeStr vr2) $ testConnInvChatVRange vr1 vr2 testReqVRange vr1 vr2 = it (vRangeStr vr1 <> " - " <> vRangeStr vr2) $ testConnReqChatVRange vr1 vr2 @@ -142,7 +135,7 @@ chatDirectTests = do testAddContact :: HasCallStack => SpecWith FilePath testAddContact = versionTestMatrix2 runTestAddContact where - runTestAddContact alice bob = do + runTestAddContact pqExpected alice bob = do alice ##> "/_connect 1" inv <- getInvitation alice bob ##> ("/_connect 1 " <> inv) @@ -151,46 +144,50 @@ testAddContact = versionTestMatrix2 runTestAddContact (bob <## "alice (Alice): contact is connected") (alice <## "bob (Bob): contact is connected") threadDelay 100000 - chatsEmpty alice bob + chatsEmpty alice #> "@bob hello there 🙂" bob <# "alice> hello there 🙂" alice ##> "/_unread chat @2 on" alice <## "ok" alice ##> "/_unread chat @2 off" alice <## "ok" - chatsOneMessage alice bob + chatsOneMessage bob #> "@alice hello there" alice <# "bob> hello there" bob #> "@alice how are you?" alice <# "bob> how are you?" - chatsManyMessages alice bob - chatsEmpty alice bob = do - alice @@@ [("@bob", lastChatFeature)] - alice #$> ("/_get chat @2 count=100", chat, chatFeatures) - bob @@@ [("@alice", lastChatFeature)] - bob #$> ("/_get chat @2 count=100", chat, chatFeatures) - chatsOneMessage alice bob = do - alice @@@ [("@bob", "hello there 🙂")] - alice #$> ("/_get chat @2 count=100", chat, chatFeatures <> [(1, "hello there 🙂")]) - bob @@@ [("@alice", "hello there 🙂")] - bob #$> ("/_get chat @2 count=100", chat, chatFeatures <> [(0, "hello there 🙂")]) - chatsManyMessages alice bob = do - alice @@@ [("@bob", "how are you?")] - alice #$> ("/_get chat @2 count=100", chat, chatFeatures <> [(1, "hello there 🙂"), (0, "hello there"), (0, "how are you?")]) - bob @@@ [("@alice", "how are you?")] - bob #$> ("/_get chat @2 count=100", chat, chatFeatures <> [(0, "hello there 🙂"), (1, "hello there"), (1, "how are you?")]) - -- pagination - alice #$> ("/_get chat @2 after=" <> itemId 1 <> " count=100", chat, [(0, "hello there"), (0, "how are you?")]) - alice #$> ("/_get chat @2 before=" <> itemId 2 <> " count=100", chat, chatFeatures <> [(1, "hello there 🙂")]) - -- search - alice #$> ("/_get chat @2 count=100 search=ello ther", chat, [(1, "hello there 🙂"), (0, "hello there")]) - -- read messages - alice #$> ("/_read chat @2 from=1 to=100", id, "ok") - bob #$> ("/_read chat @2 from=1 to=100", id, "ok") - alice #$> ("/_read chat @2", id, "ok") - bob #$> ("/_read chat @2", id, "ok") - alice #$> ("/read user", id, "ok") - alice #$> ("/_read user 1", id, "ok") + chatsManyMessages + where + chatsEmpty = do + alice @@@ [("@bob", lastChatFeature)] + alice #$> ("/_get chat @2 count=100", chat, features) + bob @@@ [("@alice", lastChatFeature)] + bob #$> ("/_get chat @2 count=100", chat, features) + chatsOneMessage = do + alice @@@ [("@bob", "hello there 🙂")] + alice #$> ("/_get chat @2 count=100", chat, features <> [(1, "hello there 🙂")]) + bob @@@ [("@alice", "hello there 🙂")] + bob #$> ("/_get chat @2 count=100", chat, features <> [(0, "hello there 🙂")]) + chatsManyMessages = do + alice @@@ [("@bob", "how are you?")] + alice #$> ("/_get chat @2 count=100", chat, features <> [(1, "hello there 🙂"), (0, "hello there"), (0, "how are you?")]) + bob @@@ [("@alice", "how are you?")] + bob #$> ("/_get chat @2 count=100", chat, features <> [(0, "hello there 🙂"), (1, "hello there"), (1, "how are you?")]) + -- pagination + alice #$> ("/_get chat @2 after=" <> itemId 1 <> " count=100", chat, [(0, "hello there"), (0, "how are you?")]) + alice #$> ("/_get chat @2 before=" <> itemId 2 <> " count=100", chat, features <> [(1, "hello there 🙂")]) + -- search + alice #$> ("/_get chat @2 count=100 search=ello ther", chat, [(1, "hello there 🙂"), (0, "hello there")]) + -- read messages + alice #$> ("/_read chat @2 from=1 to=100", id, "ok") + bob #$> ("/_read chat @2 from=1 to=100", id, "ok") + alice #$> ("/_read chat @2", id, "ok") + bob #$> ("/_read chat @2", id, "ok") + alice #$> ("/read user", id, "ok") + alice #$> ("/_read user 1", id, "ok") + features = if pqExpected + then chatFeatures + else (0, e2eeInfoNoPQStr) : tail chatFeatures testDuplicateContactsSeparate :: HasCallStack => FilePath -> IO () testDuplicateContactsSeparate = @@ -728,6 +725,20 @@ testMultilineMessage = testChat3 aliceProfile bobProfile cathProfile $ \alice bo cath <# "alice> hello" cath <## "there" +testLargeMessage :: HasCallStack => FilePath -> IO () +testLargeMessage = + testChat2 aliceProfile bobProfile $ + \alice bob -> do + connectUsers alice bob + + img <- genProfileImg + let profileImage = "data:image/png;base64," <> B.unpack img + alice `send` ("/_profile 1 {\"displayName\": \"alice2\", \"fullName\": \"\", \"image\": \"" <> profileImage <> "\"}") + _trimmedCmd1 <- getTermLine alice + alice <## "user profile is changed to alice2 (your 1 contacts are notified)" + bob <## "contact alice changed to alice2" + bob <## "use @alice2 to send messages" + testGetSetSMPServers :: HasCallStack => FilePath -> IO () testGetSetSMPServers = testChat2 aliceProfile bobProfile $ @@ -1649,17 +1660,17 @@ testUsersDifferentCIExpirationTTL tmp = do -- set ttl for first user alice ##> "/user alice" showActiveUser alice "alice (Alice)" - alice #$> ("/_ttl 1 1", id, "ok") + alice #$> ("/_ttl 1 2", id, "ok") -- set ttl for second user alice ##> "/user alisa" showActiveUser alice "alisa" - alice #$> ("/_ttl 2 3", id, "ok") + alice #$> ("/_ttl 2 4", id, "ok") -- first user messages alice ##> "/user alice" showActiveUser alice "alice (Alice)" - alice #$> ("/ttl", id, "old messages are set to be deleted after: 1 second(s)") + alice #$> ("/ttl", id, "old messages are set to be deleted after: 2 second(s)") alice #> "@bob alice 3" bob <# "alice> alice 3" @@ -1671,7 +1682,7 @@ testUsersDifferentCIExpirationTTL tmp = do -- second user messages alice ##> "/user alisa" showActiveUser alice "alisa" - alice #$> ("/ttl", id, "old messages are set to be deleted after: 3 second(s)") + alice #$> ("/ttl", id, "old messages are set to be deleted after: 4 second(s)") alice #> "@bob alisa 3" bob <# "alisa> alisa 3" @@ -1680,7 +1691,7 @@ testUsersDifferentCIExpirationTTL tmp = do alice #$> ("/_get chat @4 count=100", chat, chatFeatures <> [(1, "alisa 1"), (0, "alisa 2"), (1, "alisa 3"), (0, "alisa 4")]) - threadDelay 2000000 + threadDelay 3000000 -- messages both before and after setting chat item ttl are deleted -- first user messages @@ -1916,13 +1927,13 @@ testUsersTimedMessages tmp = do withNewTestChat tmp "bob" bobProfile $ \bob -> do withNewTestChat tmp "alice" aliceProfile $ \alice -> do connectUsers alice bob - configureTimedMessages alice bob "2" "1" + configureTimedMessages alice bob "2" "2" -- create second user and configure timed messages for contact alice ##> "/create user alisa" showActiveUser alice "alisa" connectUsers alice bob - configureTimedMessages alice bob "4" "2" + configureTimedMessages alice bob "4" "3" -- first user messages alice ##> "/user alice" @@ -1943,7 +1954,7 @@ testUsersTimedMessages tmp = do alice <# "bob> alisa 2" -- messages are deleted after ttl - threadDelay 500000 + threadDelay 1500000 alice ##> "/user alice" showActiveUser alice "alice (Alice)" @@ -2094,7 +2105,7 @@ testUserPrivacy = alice <##? chatHistory alice ##> "/_get items before=13 count=10" alice - <##? [ ConsoleString ("bob> " <> e2eeInfoNoPQStr), + <##? [ ConsoleString ("bob> " <> e2eeInfoPQStr), "bob> Disappearing messages: allowed", "bob> Full deletion: off", "bob> Message reactions: enabled", @@ -2165,7 +2176,7 @@ testUserPrivacy = alice <## "messages are shown" alice <## "profile is visible" chatHistory = - [ ConsoleString ("bob> " <> e2eeInfoNoPQStr), + [ ConsoleString ("bob> " <> e2eeInfoPQStr), "bob> Disappearing messages: allowed", "bob> Full deletion: off", "bob> Message reactions: enabled", @@ -2347,6 +2358,7 @@ testMarkContactVerified = alice <## "sending messages via: localhost" alice <## "you've shared main profile with this contact" alice <## connVerified + alice <## "quantum resistant end-to-end encryption" alice <## currentChatVRangeInfo where connVerified @@ -2517,6 +2529,7 @@ testSyncRatchetCodeReset tmp = bob <## "sending messages via: localhost" bob <## "you've shared main profile with this contact" bob <## connVerified + bob <## "quantum resistant end-to-end encryption" bob <## currentChatVRangeInfo where connVerified @@ -2667,8 +2680,8 @@ testConfigureDeliveryReceipts tmp = testConnInvChatVRange :: HasCallStack => VersionRangeChat -> VersionRangeChat -> FilePath -> IO () testConnInvChatVRange ct1VRange ct2VRange tmp = - withNewTestChatCfg tmp testCfg {chatVRange = const ct1VRange} "alice" aliceProfile $ \alice -> do - withNewTestChatCfg tmp testCfg {chatVRange = const ct2VRange} "bob" bobProfile $ \bob -> do + withNewTestChatCfg tmp testCfg {chatVRange = ct1VRange} "alice" aliceProfile $ \alice -> do + withNewTestChatCfg tmp testCfg {chatVRange = ct2VRange} "bob" bobProfile $ \bob -> do connectUsers alice bob alice ##> "/i bob" @@ -2679,8 +2692,8 @@ testConnInvChatVRange ct1VRange ct2VRange tmp = testConnReqChatVRange :: HasCallStack => VersionRangeChat -> VersionRangeChat -> FilePath -> IO () testConnReqChatVRange ct1VRange ct2VRange tmp = - withNewTestChatCfg tmp testCfg {chatVRange = const ct1VRange} "alice" aliceProfile $ \alice -> do - withNewTestChatCfg tmp testCfg {chatVRange = const ct2VRange} "bob" bobProfile $ \bob -> do + withNewTestChatCfg tmp testCfg {chatVRange = ct1VRange} "alice" aliceProfile $ \alice -> do + withNewTestChatCfg tmp testCfg {chatVRange = ct2VRange} "bob" bobProfile $ \bob -> do alice ##> "/ad" cLink <- getContactLink alice True bob ##> ("/c " <> cLink) @@ -2707,7 +2720,7 @@ testUpdatePeerChatVRange tmp = contactInfoChatVRange alice vr11 bob ##> "/i alice" - contactInfoChatVRange bob (supportedChatVRange PQSupportOff) + contactInfoChatVRange bob supportedChatVRange withTestChat tmp "bob" $ \bob -> do bob <## "1 contacts connected (use /cs for the list)" @@ -2716,10 +2729,10 @@ testUpdatePeerChatVRange tmp = alice <# "bob> hello 1" alice ##> "/i bob" - contactInfoChatVRange alice (supportedChatVRange PQSupportOff) + contactInfoChatVRange alice supportedChatVRange bob ##> "/i alice" - contactInfoChatVRange bob (supportedChatVRange PQSupportOff) + contactInfoChatVRange bob supportedChatVRange withTestChatCfg tmp cfg11 "bob" $ \bob -> do bob <## "1 contacts connected (use /cs for the list)" @@ -2731,9 +2744,9 @@ testUpdatePeerChatVRange tmp = contactInfoChatVRange alice vr11 bob ##> "/i alice" - contactInfoChatVRange bob (supportedChatVRange PQSupportOff) + contactInfoChatVRange bob supportedChatVRange where - cfg11 = testCfg {chatVRange = const vr11} :: ChatConfig + cfg11 = testCfg {chatVRange = vr11} :: ChatConfig testGetNetworkStatuses :: HasCallStack => FilePath -> IO () testGetNetworkStatuses tmp = do @@ -2759,259 +2772,5 @@ contactInfoChatVRange cc (VersionRange minVer maxVer) = do cc <## "sending messages via: localhost" cc <## "you've shared main profile with this contact" cc <## "connection not verified, use /code command to see security code" + cc <## "quantum resistant end-to-end encryption" cc <## ("peer chat protocol version range: (" <> show minVer <> ", " <> show maxVer <> ")") - -runTestPQConnectViaLink :: HasCallStack => (TestCC, PQEnabled) -> (TestCC, PQEnabled) -> IO () -runTestPQConnectViaLink (alice, aPQ) (bob, bPQ) = do - when aPQ $ pqOn alice - when bPQ $ pqOn bob - - connectUsers alice bob - - (alice, "hi") `pqSend` bob - (bob, "hey") `pqSend` alice - - alice ##> "/_get chat @2 count=100" - ra <- chat <$> getTermLine alice - ra `shouldContain` [(0, e2eeInfo)] - alice `pqForContact` 2 `shouldReturn` PQEncryption pqEnabled - - bob ##> "/_get chat @2 count=100" - rb <- chat <$> getTermLine bob - rb `shouldContain` [(0, e2eeInfo)] - bob `pqForContact` 2 `shouldReturn` PQEncryption pqEnabled - where - pqEnabled = aPQ && bPQ - pqSend = if pqEnabled then (+#>) else (\#>) - e2eeInfo = if pqEnabled then e2eeInfoPQStr else e2eeInfoNoPQStr - -pqOn :: TestCC -> IO () -pqOn cc = do - cc ##> "/pq on" - cc <## "ok" - -runTestPQConnectViaAddress :: HasCallStack => (TestCC, PQEnabled) -> (TestCC, PQEnabled) -> IO () -runTestPQConnectViaAddress (alice, aPQ) (bob, bPQ) = do - when aPQ $ pqOn alice - when bPQ $ pqOn bob - - alice ##> "/ad" - cLink <- getContactLink alice True - bob ##> ("/c " <> cLink) - alice <#? bob - alice @@@ [("<@bob", "")] - alice ##> "/ac bob" - alice <## "bob (Bob): accepting contact request..." - concurrently_ - (bob <## "alice (Alice): contact is connected") - (alice <## "bob (Bob): contact is connected") - - (alice, "hi") `pqSend` bob - (bob, "hey") `pqSend` alice - - alice ##> "/_get chat @2 count=100" - ra <- chat <$> getTermLine alice - ra `shouldContain` [(0, e2eeInfo)] - alice `pqForContact` 2 `shouldReturn` PQEncryption pqEnabled - - bob ##> "/_get chat @2 count=100" - rb <- chat <$> getTermLine bob - rb `shouldContain` [(0, e2eeInfo)] - bob `pqForContact` 2 `shouldReturn` PQEncryption pqEnabled - where - pqEnabled = aPQ && bPQ - pqSend = if pqEnabled then (+#>) else (\#>) - e2eeInfo = if pqEnabled then e2eeInfoPQStr else e2eeInfoNoPQStr - -runTestPQVersionsViaLink :: HasCallStack => TestCC -> TestCC -> Bool -> VersionChat -> IO () -runTestPQVersionsViaLink alice bob pqExpected vExpected = do - img <- genProfileImg - let profileImage = "data:image/png;base64," <> B.unpack img - alice `send` ("/set profile image " <> profileImage) - _trimmedCmd1 <- getTermLine alice - alice <## "profile image updated" - bob `send` ("/set profile image " <> profileImage) - _trimmedCmd2 <- getTermLine bob - bob <## "profile image updated" - - pqOn alice - pqOn bob - - connectUsers alice bob - - (alice, "hi", vExpected) `pqSend` (bob, vExpected) - (bob, "hey", vExpected) `pqSend` (alice, vExpected) - - alice ##> "/_get chat @2 count=100" - ra <- chat <$> getTermLine alice - ra `shouldContain` [(0, e2eeInfo)] - alice `pqForContact` 2 `shouldReturn` PQEncryption pqExpected - - bob ##> "/_get chat @2 count=100" - rb <- chat <$> getTermLine bob - rb `shouldContain` [(0, e2eeInfo)] - bob `pqForContact` 2 `shouldReturn` PQEncryption pqExpected - where - pqSend = if pqExpected then (+:#>) else (\:#>) - e2eeInfo = if pqExpected then e2eeInfoPQStr else e2eeInfoNoPQStr - -runTestPQVersionsViaAddress :: HasCallStack => TestCC -> TestCC -> Bool -> VersionChat -> IO () -runTestPQVersionsViaAddress alice bob pqExpected vExpected = do - img <- genProfileImg - let profileImage = "data:image/png;base64," <> B.unpack img - alice `send` ("/set profile image " <> profileImage) - _trimmedCmd1 <- getTermLine alice - alice <## "profile image updated" - bob `send` ("/set profile image " <> profileImage) - _trimmedCmd2 <- getTermLine bob - bob <## "profile image updated" - - pqOn alice - pqOn bob - - alice ##> "/ad" - cLink <- getContactLink alice True - bob ##> ("/c " <> cLink) - alice <#? bob - alice @@@ [("<@bob", "")] - alice ##> "/ac bob" - alice <## "bob (Bob): accepting contact request..." - concurrently_ - (bob <## "alice (Alice): contact is connected") - (alice <## "bob (Bob): contact is connected") - - (alice, "hi", vExpected) `pqSend` (bob, vExpected) - (bob, "hey", vExpected) `pqSend` (alice, vExpected) - - alice ##> "/_get chat @2 count=100" - ra <- chat <$> getTermLine alice - ra `shouldContain` [(0, e2eeInfo)] - alice `pqForContact` 2 `shouldReturn` PQEncryption pqExpected - - bob ##> "/_get chat @2 count=100" - rb <- chat <$> getTermLine bob - rb `shouldContain` [(0, e2eeInfo)] - bob `pqForContact` 2 `shouldReturn` PQEncryption pqExpected - where - pqSend = if pqExpected then (+:#>) else (\:#>) - e2eeInfo = if pqExpected then e2eeInfoPQStr else e2eeInfoNoPQStr - -testPQEnableContact :: HasCallStack => FilePath -> IO () -testPQEnableContact = - testChat2 aliceProfile bobProfile $ \alice bob -> do - connectUsers alice bob - (alice, "hi") \#> bob - (bob, "hey") \#> alice - - alice ##> "/_get chat @2 count=100" - ra <- chat <$> getTermLine alice - ra `shouldContain` [(0, e2eeInfoNoPQStr)] - PQEncOff <- alice `pqForContact` 2 - - bob ##> "/_get chat @2 count=100" - rb <- chat <$> getTermLine bob - rb `shouldContain` [(0, e2eeInfoNoPQStr)] - PQEncOff <- bob `pqForContact` 2 - - sendMany PQEncOff alice bob - PQEncOff <- alice `pqForContact` 2 - PQEncOff <- bob `pqForContact` 2 - - -- enabling experimental flags doesn't enable PQ in previously created connection - pqOn alice - sendMany PQEncOff alice bob - PQEncOff <- alice `pqForContact` 2 - PQEncOff <- bob `pqForContact` 2 - - pqOn bob - sendMany PQEncOff alice bob - PQEncOff <- alice `pqForContact` 2 - PQEncOff <- bob `pqForContact` 2 - - -- if only one contact allows PQ, it's not enabled - alice ##> "/pq @bob on" - alice <## "bob: enable quantum resistant end-to-end encryption" - sendMany PQEncOff alice bob - PQEncOff <- alice `pqForContact` 2 - PQEncOff <- bob `pqForContact` 2 - - -- both contacts have to allow PQ to enable it - bob ##> "/pq @alice on" - bob <## "alice: enable quantum resistant end-to-end encryption" - - (alice, "1") \#> bob - (bob, "2") \#> alice - (alice, "3") \#> bob - (bob, "4") \#> alice - (alice, "5") +#> bob - - PQEncOff <- alice `pqForContact` 2 - PQEncOff <- bob `pqForContact` 2 - - (bob, "6") ++#> alice - -- equivalent to: - -- bob `send` "@alice 6" - -- bob <## "alice: quantum resistant end-to-end encryption enabled" - -- bob <# "@alice 6" - -- alice <## "bob: quantum resistant end-to-end encryption enabled" - -- alice <# "bob> 6" - - PQEncOn <- alice `pqForContact` 2 - alice #$> ("/_get chat @2 count=2", chat, [(0, e2eeInfoPQStr), (0, "6")]) - - PQEncOn <- bob `pqForContact` 2 - bob #$> ("/_get chat @2 count=2", chat, [(1, e2eeInfoPQStr), (1, "6")]) - - (alice, "6") +#> bob - (bob, "7") +#> alice - - sendMany PQEncOn alice bob - - PQEncOn <- alice `pqForContact` 2 - PQEncOn <- bob `pqForContact` 2 - pure () - -sendMany :: PQEncryption -> TestCC -> TestCC -> IO () -sendMany pqEnc alice bob = - forM_ [(1 :: Int) .. 10] $ \i -> do - sndRcv pqEnc False (alice, show i) bob - sndRcv pqEnc False (bob, show i) alice - -testPQEnableContactCompression :: HasCallStack => FilePath -> IO () -testPQEnableContactCompression = - testChat2 aliceProfile bobProfile $ \alice bob -> do - connectUsers alice bob - (alice, "hi") \#> bob - (bob, "hey") \#> alice - PQEncOff <- alice `pqForContact` 2 - PQEncOff <- bob `pqForContact` 2 - (alice, "lrg 1", v) \:#> (bob, v) - (bob, "lrg 2", v) \:#> (alice, v) - PQSupportOff <- alice `pqSupportForCt` 2 - alice ##> "/pq @bob on" - alice <## "bob: enable quantum resistant end-to-end encryption" - PQSupportOn <- alice `pqSupportForCt` 2 - (alice, "lrg 3", v) \:#> (bob, v) - (bob, "lrg 4", v) \:#> (alice, v) - PQSupportOff <- bob `pqSupportForCt` 2 - bob ##> "/pq @alice on" - bob <## "alice: enable quantum resistant end-to-end encryption" - PQSupportOn <- bob `pqSupportForCt` 2 - threadDelay 300000 - (alice, "lrg 1", v) \:#> (bob, v') - threadDelay 300000 - (bob, "lrg 2", v') \:#> (alice, v') - threadDelay 300000 - (alice, "lrg 3", v') \:#> (bob, v') - threadDelay 300000 - (bob, "lrg 4", v') \:#> (alice, v') - threadDelay 300000 - (alice, "lrg 5", v') +:#> (bob, v') - PQEncOff <- alice `pqForContact` 2 - PQEncOff <- bob `pqForContact` 2 - (bob, "lrg 6", v') ++:#> (alice, v') - (alice, "lrg 7", v') +:#> (bob, v') - (bob, "lrg 8", v') +:#> (alice, v') - where - v = currentChatVersion - v' = pqEncryptionCompressionVersion diff --git a/tests/ChatTests/Groups.hs b/tests/ChatTests/Groups.hs index 4108f799df..ff577dc737 100644 --- a/tests/ChatTests/Groups.hs +++ b/tests/ChatTests/Groups.hs @@ -9,7 +9,7 @@ import ChatTests.Utils import Control.Concurrent (threadDelay) import Control.Concurrent.Async (concurrently_) import Control.Monad (void, when) -import qualified Data.ByteString as B +import qualified Data.ByteString.Char8 as B import Data.List (isInfixOf) import qualified Data.Text as T import Simplex.Chat.Controller (ChatConfig (..)) @@ -18,7 +18,6 @@ import Simplex.Chat.Store (agentStoreFile, chatStoreFile) import Simplex.Chat.Types (VersionRangeChat) import Simplex.Chat.Types.Shared (GroupMemberRole (..)) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB -import Simplex.Messaging.Crypto.Ratchet (pattern PQSupportOff) import System.Directory (copyFile) import System.FilePath (()) import Test.Hspec hiding (it) @@ -29,6 +28,7 @@ chatGroupTests = do describe "add contacts, create group and send/receive messages" testGroupMatrix it "v1: add contacts, create group and send/receive messages" testGroup it "v1: add contacts, create group and send/receive messages, check messages" testGroupCheckMessages + it "send large message" testGroupLargeMessage it "create group with incognito membership" testNewGroupIncognito it "create and join group with 4 members" testGroup2 it "create and delete group" testGroupDelete @@ -150,19 +150,19 @@ chatGroupTests = do it "member was blocked before joining group" testBlockForAllBeforeJoining it "can't repeat block, unblock" testBlockForAllCantRepeat where - _0 = supportedChatVRange PQSupportOff -- don't create direct connections + _0 = supportedChatVRange -- don't create direct connections _1 = groupCreateDirectVRange -- having host configured with older version doesn't have effect in tests -- because host uses current code and sends version in MemberInfo testNoDirect vrMem2 vrMem3 noConns = it ( "host " - <> vRangeStr (supportedChatVRange PQSupportOff) + <> vRangeStr supportedChatVRange <> (", 2nd mem " <> vRangeStr vrMem2) <> (", 3rd mem " <> vRangeStr vrMem3) <> (if noConns then " : 2 3" else " : 2 <##> 3") ) - $ testNoGroupDirectConns (supportedChatVRange PQSupportOff) vrMem2 vrMem3 noConns + $ testNoGroupDirectConns supportedChatVRange vrMem2 vrMem3 noConns testGroup :: HasCallStack => FilePath -> IO () testGroup = @@ -357,6 +357,20 @@ testGroupShared alice bob cath checkMessages directConnections = do alice #$> ("/_unread chat #1 on", id, "ok") alice #$> ("/_unread chat #1 off", id, "ok") +testGroupLargeMessage :: HasCallStack => FilePath -> IO () +testGroupLargeMessage = + testChat2 aliceProfile bobProfile $ + \alice bob -> do + createGroup2 "team" alice bob + + img <- genProfileImg + let profileImage = "data:image/png;base64," <> B.unpack img + alice `send` ("/_group_profile #1 {\"displayName\": \"team\", \"fullName\": \"\", \"image\": \"" <> profileImage <> "\", \"groupPreferences\": {\"directMessages\": {\"enable\": \"on\"}, \"history\": {\"enable\": \"on\"}}}") + _trimmedCmd1 <- getTermLine alice + alice <## "profile image updated" + bob <## "alice updated group #team:" + bob <## "profile image updated" + testNewGroupIncognito :: HasCallStack => FilePath -> IO () testNewGroupIncognito = testChatCfg2 testCfgGroupLinkViaContact aliceProfile bobProfile $ @@ -3594,9 +3608,9 @@ testConfigureGroupDeliveryReceipts tmp = testNoGroupDirectConns :: HasCallStack => VersionRangeChat -> VersionRangeChat -> VersionRangeChat -> Bool -> FilePath -> IO () testNoGroupDirectConns hostVRange mem2VRange mem3VRange noDirectConns tmp = - withNewTestChatCfg tmp testCfg {chatVRange = const hostVRange} "alice" aliceProfile $ \alice -> do - withNewTestChatCfg tmp testCfg {chatVRange = const mem2VRange} "bob" bobProfile $ \bob -> do - withNewTestChatCfg tmp testCfg {chatVRange = const mem3VRange} "cath" cathProfile $ \cath -> do + withNewTestChatCfg tmp testCfg {chatVRange = hostVRange} "alice" aliceProfile $ \alice -> do + withNewTestChatCfg tmp testCfg {chatVRange = mem2VRange} "bob" bobProfile $ \bob -> do + withNewTestChatCfg tmp testCfg {chatVRange = mem3VRange} "cath" cathProfile $ \cath -> do createGroup3 "team" alice bob cath if noDirectConns then contactsDontExist bob cath @@ -3885,6 +3899,20 @@ testMemberContactMessage = (bob <## "alice (Alice): contact is connected") bob #$> ("/_get chat #1 count=1", chat, [(0, "started direct connection with you")]) + + -- exchanging messages will enable PQ (see Chat "TODO PQ" - perhaps connection should be negotiated with PQ on) + alice <##> bob + alice <##> bob + + alice `send` "@bob hi" + alice <## "bob: quantum resistant end-to-end encryption enabled" + alice <# "@bob hi" + bob <## "alice: quantum resistant end-to-end encryption enabled" + bob <# "alice> hi" + + bob #> "@alice hey" + alice <# "bob> hey" + alice <##> bob -- bob and cath connect diff --git a/tests/ChatTests/Profiles.hs b/tests/ChatTests/Profiles.hs index a6cc491456..294540a62c 100644 --- a/tests/ChatTests/Profiles.hs +++ b/tests/ChatTests/Profiles.hs @@ -307,6 +307,7 @@ testProfileLink = cc <## ("contact address: " <> cLink) cc <## "you've shared main profile with this contact" cc <## "connection not verified, use /code command to see security code" + cc <## "quantum resistant end-to-end encryption" cc <## currentChatVRangeInfo checkAliceNoProfileLink cc = do cc ##> "/info alice" @@ -315,6 +316,7 @@ testProfileLink = cc <##. "sending messages via" cc <## "you've shared main profile with this contact" cc <## "connection not verified, use /code command to see security code" + cc <## "quantum resistant end-to-end encryption" cc <## currentChatVRangeInfo testUserContactLinkAutoAccept :: HasCallStack => FilePath -> IO () @@ -1516,7 +1518,7 @@ testSetContactPrefs = testChat2 aliceProfile bobProfile $ alice ##> "/_set prefs @2 {}" alice <## "your preferences for bob did not change" (bob ("/_get chat @2 count=100", chat, startFeatures) bob #$> ("/_get chat @2 count=100", chat, startFeatures) let sendVoice = "/_send @2 json {\"filePath\": \"test.txt\", \"msgContent\": {\"type\": \"voice\", \"text\": \"\", \"duration\": 10}}" diff --git a/tests/ChatTests/Utils.hs b/tests/ChatTests/Utils.hs index aa6579efee..a3ee0d5ca8 100644 --- a/tests/ChatTests/Utils.hs +++ b/tests/ChatTests/Utils.hs @@ -87,15 +87,16 @@ ifCI xrun run d t = do skip :: String -> SpecWith a -> SpecWith a skip = before_ . pendingWith -versionTestMatrix2 :: (HasCallStack => TestCC -> TestCC -> IO ()) -> SpecWith FilePath +-- Bool is pqExpected - see testAddContact +versionTestMatrix2 :: (HasCallStack => Bool -> TestCC -> TestCC -> IO ()) -> SpecWith FilePath versionTestMatrix2 runTest = do - it "current" $ testChat2 aliceProfile bobProfile runTest - it "prev" $ testChatCfg2 testCfgVPrev aliceProfile bobProfile runTest - it "prev to curr" $ runTestCfg2 testCfg testCfgVPrev runTest - it "curr to prev" $ runTestCfg2 testCfgVPrev testCfg runTest - it "old (1st supported)" $ testChatCfg2 testCfgV1 aliceProfile bobProfile runTest - it "old to curr" $ runTestCfg2 testCfg testCfgV1 runTest - it "curr to old" $ runTestCfg2 testCfgV1 testCfg runTest + it "current" $ testChat2 aliceProfile bobProfile (runTest True) + it "prev" $ testChatCfg2 testCfgVPrev aliceProfile bobProfile (runTest False) + it "prev to curr" $ runTestCfg2 testCfg testCfgVPrev (runTest False) + it "curr to prev" $ runTestCfg2 testCfgVPrev testCfg (runTest False) + it "old (1st supported)" $ testChatCfg2 testCfgV1 aliceProfile bobProfile (runTest False) + it "old to curr" $ runTestCfg2 testCfg testCfgV1 (runTest False) + it "curr to old" $ runTestCfg2 testCfgV1 testCfg (runTest False) versionTestMatrix3 :: (HasCallStack => TestCC -> TestCC -> TestCC -> IO ()) -> SpecWith FilePath versionTestMatrix3 runTest = do @@ -119,34 +120,6 @@ runTestCfg3 aliceCfg bobCfg cathCfg runTest tmp = withNewTestChatCfg tmp cathCfg "cath" cathProfile $ \cath -> runTest alice bob cath -type PQEnabled = Bool - -pqMatrix2 :: (HasCallStack => (TestCC, PQEnabled) -> (TestCC, PQEnabled) -> IO ()) -> SpecWith FilePath -pqMatrix2 runTest = do - it "PQ: off, off" $ test False False - it "PQ: on, off" $ test False True - it "PQ: off, on" $ test True False - it "PQ: on, on" $ test True True - where - test aPQ bPQ = testChat2 aliceProfile bobProfile $ \a b -> runTest (a, aPQ) (b, bPQ) - -pqVersionTestMatrix2 :: (HasCallStack => TestCC -> TestCC -> Bool -> VersionChat -> IO ()) -> SpecWith FilePath -pqVersionTestMatrix2 runTest = do - it "current" $ testChat2 aliceProfile bobProfile (runTest' True pqEncryptionCompressionVersion) - it "prev" $ testChatCfg2 testCfgVPrev aliceProfile bobProfile (runTest' False (VersionChat 6)) - it "prev to curr" $ runTestCfg2 testCfg testCfgVPrev (runTest' False (VersionChat 6)) - it "curr to prev" $ runTestCfg2 testCfgVPrev testCfg (runTest' False (VersionChat 6)) - it "old (1st supported)" $ testChatCfg2 testCfgV1 aliceProfile bobProfile (runTest' False (VersionChat 1)) - it "old to curr" $ runTestCfg2 testCfg testCfgV1 (runTest' False (VersionChat 1)) - it "curr to old" $ runTestCfg2 testCfgV1 testCfg (runTest' False (VersionChat 1)) - it "next" $ testChatCfg2 testCfgVNext aliceProfile bobProfile (runTest' True pqEncryptionCompressionVersion) - it "next to curr" $ runTestCfg2 testCfg testCfgVNext (runTest' True pqEncryptionCompressionVersion) - it "curr to next" $ runTestCfg2 testCfgVNext testCfg (runTest' True pqEncryptionCompressionVersion) - it "next to prev" $ runTestCfg2 testCfgVPrev testCfgVNext (runTest' False (VersionChat 6)) - it "prev to next" $ runTestCfg2 testCfgVNext testCfgVPrev (runTest' False (VersionChat 6)) - where - runTest' pqExpected v a b = runTest a b pqExpected v - withTestChatGroup3Connected :: HasCallStack => FilePath -> String -> (HasCallStack => TestCC -> IO a) -> IO a withTestChatGroup3Connected tmp dbPrefix action = do withTestChat tmp dbPrefix $ \cc -> do @@ -287,7 +260,7 @@ chatFeaturesF = map (\(a, _, c) -> (a, c)) chatFeatures'' chatFeatures'' :: [((Int, String), Maybe (Int, String), Maybe String)] chatFeatures'' = - [ ((0, e2eeInfoNoPQStr), Nothing, Nothing), + [ ((0, e2eeInfoPQStr), Nothing, Nothing), ((0, "Disappearing messages: allowed"), Nothing, Nothing), ((0, "Full deletion: off"), Nothing, Nothing), ((0, "Message reactions: enabled"), Nothing, Nothing), @@ -708,7 +681,7 @@ checkActionDeletesFile file action = do currentChatVRangeInfo :: String currentChatVRangeInfo = - "peer chat protocol version range: " <> vRangeStr (supportedChatVRange PQSupportOff) + "peer chat protocol version range: " <> vRangeStr supportedChatVRange vRangeStr :: VersionRange v -> String vRangeStr (VersionRange minVer maxVer) = "(" <> show minVer <> ", " <> show maxVer <> ")" diff --git a/tests/ProtocolTests.hs b/tests/ProtocolTests.hs index 18fb677be2..c4dfa7da25 100644 --- a/tests/ProtocolTests.hs +++ b/tests/ProtocolTests.hs @@ -50,7 +50,7 @@ testDhPubKey :: C.PublicKeyX448 testDhPubKey = "MEIwBQYDK2VvAzkAmKuSYeQ/m0SixPDS8Wq8VBaTS1cW+Lp0n0h4Diu+kUpR+qXx4SDJ32YGEFoGFGSbGPry5Ychr6U=" testE2ERatchetParams :: RcvE2ERatchetParamsUri 'C.X448 -testE2ERatchetParams = E2ERatchetParamsUri (supportedE2EEncryptVRange PQSupportOn) testDhPubKey testDhPubKey Nothing +testE2ERatchetParams = E2ERatchetParamsUri supportedE2EEncryptVRange testDhPubKey testDhPubKey Nothing testConnReq :: ConnectionRequestUri 'CMInvitation testConnReq = CRInvitationUri connReqData testE2ERatchetParams @@ -132,8 +132,8 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"1\",\"msgId\":\"AQIDBA==\",\"event\":\"x.msg.new\",\"params\":{\"content\":{\"text\":\"hello\",\"type\":\"text\"}}}" ##==## ChatMessage chatInitialVRange (Just $ SharedMsgId "\1\2\3\4") (XMsgNew (MCSimple (extMsgContent (MCText "hello") Nothing))) it "x.msg.new chat message with chat version range" $ - "{\"v\":\"1-7\",\"msgId\":\"AQIDBA==\",\"event\":\"x.msg.new\",\"params\":{\"content\":{\"text\":\"hello\",\"type\":\"text\"}}}" - ##==## ChatMessage (supportedChatVRange PQSupportOff) (Just $ SharedMsgId "\1\2\3\4") (XMsgNew (MCSimple (extMsgContent (MCText "hello") Nothing))) + "{\"v\":\"1-8\",\"msgId\":\"AQIDBA==\",\"event\":\"x.msg.new\",\"params\":{\"content\":{\"text\":\"hello\",\"type\":\"text\"}}}" + ##==## ChatMessage supportedChatVRange (Just $ SharedMsgId "\1\2\3\4") (XMsgNew (MCSimple (extMsgContent (MCText "hello") Nothing))) it "x.msg.new quote" $ "{\"v\":\"1\",\"msgId\":\"AQIDBA==\",\"event\":\"x.msg.new\",\"params\":{\"content\":{\"text\":\"hello to you too\",\"type\":\"text\"},\"quote\":{\"content\":{\"text\":\"hello there!\",\"type\":\"text\"},\"msgRef\":{\"msgId\":\"BQYHCA==\",\"sent\":true,\"sentAt\":\"1970-01-01T00:00:01.000000001Z\"}}}}" ##==## ChatMessage @@ -242,14 +242,14 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"1\",\"event\":\"x.grp.mem.new\",\"params\":{\"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\"}}}}}}" #==# XGrpMemNew MemberInfo {memberId = MemberId "\1\2\3\4", memberRole = GRAdmin, v = Nothing, profile = testProfile} it "x.grp.mem.new with member chat version range" $ - "{\"v\":\"1\",\"event\":\"x.grp.mem.new\",\"params\":{\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"v\":\"1-7\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}}" - #==# XGrpMemNew MemberInfo {memberId = MemberId "\1\2\3\4", memberRole = GRAdmin, v = Just $ ChatVersionRange $ supportedChatVRange PQSupportOff, profile = testProfile} + "{\"v\":\"1\",\"event\":\"x.grp.mem.new\",\"params\":{\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"v\":\"1-8\",\"profile\":{\"fullName\":\"Alice\",\"displayName\":\"alice\",\"image\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII=\",\"preferences\":{\"reactions\":{\"allow\":\"yes\"},\"voice\":{\"allow\":\"yes\"}}}}}}" + #==# XGrpMemNew MemberInfo {memberId = MemberId "\1\2\3\4", memberRole = GRAdmin, v = Just $ ChatVersionRange supportedChatVRange, profile = testProfile} it "x.grp.mem.intro" $ "{\"v\":\"1\",\"event\":\"x.grp.mem.intro\",\"params\":{\"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} Nothing it "x.grp.mem.intro with member chat version range" $ - "{\"v\":\"1\",\"event\":\"x.grp.mem.intro\",\"params\":{\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"v\":\"1-7\",\"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 = Just $ ChatVersionRange $ supportedChatVRange PQSupportOff, profile = testProfile} Nothing + "{\"v\":\"1\",\"event\":\"x.grp.mem.intro\",\"params\":{\"memberInfo\":{\"memberRole\":\"admin\",\"memberId\":\"AQIDBA==\",\"v\":\"1-8\",\"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 = Just $ ChatVersionRange supportedChatVRange, profile = testProfile} Nothing it "x.grp.mem.intro with member restrictions" $ "{\"v\":\"1\",\"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} (Just MemberRestrictions {restriction = MRSBlocked}) @@ -263,8 +263,8 @@ decodeChatMessageTest = describe "Chat message encoding/decoding" $ do "{\"v\":\"1\",\"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-2%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-2%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\"}}}}}}" #==# XGrpMemFwd MemberInfo {memberId = MemberId "\1\2\3\4", memberRole = GRAdmin, v = Nothing, profile = testProfile} IntroInvitation {groupConnReq = testConnReq, directConnReq = Just testConnReq} it "x.grp.mem.fwd with member chat version range and w/t directConnReq" $ - "{\"v\":\"1\",\"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-2%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\":\"1-7\",\"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 PQSupportOff, profile = testProfile} IntroInvitation {groupConnReq = testConnReq, directConnReq = Nothing} + "{\"v\":\"1\",\"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-2%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\":\"1-8\",\"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} IntroInvitation {groupConnReq = testConnReq, directConnReq = Nothing} it "x.grp.mem.info" $ "{\"v\":\"1\",\"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\"}}}}}" #==# XGrpMemInfo (MemberId "\1\2\3\4") testProfile From 22fd2d7189c6f79c843d5e07fa523819cc55120f Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 22 Apr 2024 20:50:28 +0400 Subject: [PATCH 067/147] ios: remove experimental PQ toggle (#4051) * ios: remove experimental PQ toggle * remove header --- apps/ios/Shared/Model/SimpleXAPI.swift | 13 ----- apps/ios/Shared/Views/Chat/ChatInfoView.swift | 53 +------------------ .../Views/UserSettings/DeveloperView.swift | 25 --------- apps/ios/SimpleXChat/APITypes.swift | 11 +--- apps/ios/SimpleXChat/AppGroup.swift | 4 +- 5 files changed, 3 insertions(+), 103 deletions(-) diff --git a/apps/ios/Shared/Model/SimpleXAPI.swift b/apps/ios/Shared/Model/SimpleXAPI.swift index 65e24eeb25..b4c9a48d5d 100644 --- a/apps/ios/Shared/Model/SimpleXAPI.swift +++ b/apps/ios/Shared/Model/SimpleXAPI.swift @@ -272,18 +272,6 @@ func apiGetAppSettings(settings: AppSettings) throws -> AppSettings { throw r } -func apiSetPQEncryption(_ enable: Bool) throws { - let r = chatSendCmdSync(.apiSetPQEncryption(enable: enable)) - if case .cmdOk = r { return } - throw r -} - -func apiSetContactPQ(_ contactId: Int64, _ enable: Bool) async throws -> Contact { - let r = await chatSendCmd(.apiSetContactPQ(contactId: contactId, enable: enable)) - if case let .contactPQAllowed(_, contact, _) = r { return contact } - throw r -} - func apiExportArchive(config: ArchiveConfig) async throws { try await sendCommandOkResp(.apiExportArchive(config: config)) } @@ -1320,7 +1308,6 @@ func initializeChat(start: Bool, confirmStart: Bool = false, dbKey: String? = ni try apiSetTempFolder(tempFolder: getTempFilesDirectory().path) try apiSetFilesFolder(filesFolder: getAppFilesDirectory().path) try apiSetEncryptLocalFiles(privacyEncryptLocalFilesGroupDefault.get()) - try apiSetPQEncryption(pqExperimentalEnabledDefault.get()) m.chatInitialized = true m.currentUser = try apiGetActiveUser() if m.currentUser == nil { diff --git a/apps/ios/Shared/Views/Chat/ChatInfoView.swift b/apps/ios/Shared/Views/Chat/ChatInfoView.swift index 8b60fc7649..56e7cec697 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoView.swift @@ -103,7 +103,6 @@ struct ChatInfoView: View { @State private var sendReceipts = SendReceipts.userDefault(true) @State private var sendReceiptsUserDefault = true @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false - @AppStorage(GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED, store: groupDefaults) private var pqExperimentalEnabled = false enum ChatInfoViewAlert: Identifiable { case clearChatAlert @@ -111,7 +110,6 @@ struct ChatInfoView: View { case switchAddressAlert case abortSwitchAddressAlert case syncConnectionForceAlert - case allowContactPQEncryptionAlert case error(title: LocalizedStringKey, error: LocalizedStringKey = "") var id: String { @@ -121,7 +119,6 @@ struct ChatInfoView: View { case .switchAddressAlert: return "switchAddressAlert" case .abortSwitchAddressAlert: return "abortSwitchAddressAlert" case .syncConnectionForceAlert: return "syncConnectionForceAlert" - case .allowContactPQEncryptionAlert: return "allowContactPQEncryptionAlert" case let .error(title, _): return "error \(title)" } } @@ -168,19 +165,9 @@ struct ChatInfoView: View { } .disabled(!contact.ready || !contact.active) - if pqExperimentalEnabled, - let conn = contact.activeConn { + if let conn = contact.activeConn { Section { infoRow(Text(String("E2E encryption")), conn.connPQEnabled ? "Quantum resistant" : "Standard") - if !conn.pqEncryption { - allowPQButton() - } - } header: { - Text(String("Quantum resistant E2E encryption")) - } footer: { - if !conn.pqEncryption { - Text(String("After allowing quantum resistant encryption, it will be enabled after several messages if your contact also allows it.")) - } } } @@ -256,7 +243,6 @@ struct ChatInfoView: View { case .switchAddressAlert: return switchAddressAlert(switchContactAddress) case .abortSwitchAddressAlert: return abortSwitchAddressAlert(abortSwitchContactAddress) case .syncConnectionForceAlert: return syncConnectionForceAlert({ syncContactConnection(force: true) }) - case .allowContactPQEncryptionAlert: return allowContactPQEncryptionAlert() case let .error(title, error): return mkAlert(title: title, message: error) } } @@ -430,15 +416,6 @@ struct ChatInfoView: View { } } - private func allowPQButton() -> some View { - Button { - alert = .allowContactPQEncryptionAlert - } label: { - Label(String("Allow PQ encryption"), systemImage: "exclamationmark.triangle") - .foregroundColor(.orange) - } - } - private func networkStatusRow() -> some View { HStack { Text("Network status") @@ -572,34 +549,6 @@ struct ChatInfoView: View { } } } - - private func allowContactPQEncryption() { - Task { - do { - let ct = try await apiSetContactPQ(contact.apiId, true) - contact = ct - await MainActor.run { - chatModel.updateContact(ct) - dismiss() - } - } catch let error { - logger.error("allowContactPQEncryption apiSetContactPQ error: \(responseError(error))") - let a = getErrorAlert(error, "Error allowing contact PQ encryption") - await MainActor.run { - alert = .error(title: a.title, error: a.message) - } - } - } - } - - func allowContactPQEncryptionAlert() -> Alert { - Alert( - title: Text(String("Allow quantum resistant encryption?")), - message: Text(String("This is an experimental feature, it is not recommended to enable it for important chats.")), - primaryButton: .destructive(Text(String("Allow")), action: allowContactPQEncryption), - secondaryButton: .cancel() - ) - } } func switchAddressAlert(_ switchAddress: @escaping () -> Void) -> Alert { diff --git a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift index 9b11c6d0f7..3bbfbfe33e 100644 --- a/apps/ios/Shared/Views/UserSettings/DeveloperView.swift +++ b/apps/ios/Shared/Views/UserSettings/DeveloperView.swift @@ -12,7 +12,6 @@ import SimpleXChat struct DeveloperView: View { @AppStorage(DEFAULT_DEVELOPER_TOOLS) private var developerTools = false @AppStorage(GROUP_DEFAULT_CONFIRM_DB_UPGRADES, store: groupDefaults) private var confirmDatabaseUpgrades = false - @AppStorage(GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED, store: groupDefaults) private var pqExperimentalEnabled = false @Environment(\.colorScheme) var colorScheme var body: some View { @@ -43,33 +42,9 @@ struct DeveloperView: View { } footer: { (developerTools ? Text("Show:") : Text("Hide:")) + Text(" ") + Text("Database IDs and Transport isolation option.") } - - if developerTools { - Section { - settingsRow("key") { - Toggle("Post-quantum E2EE", isOn: $pqExperimentalEnabled) - .onChange(of: pqExperimentalEnabled) { - setPQExperimentalEnabled($0) - } - } - } header: { - Text(String("Experimental")) - } footer: { - Text(String("In this version applies only to new contacts.")) - } - } } } } - - private func setPQExperimentalEnabled(_ enable: Bool) { - do { - try apiSetPQEncryption(enable) - } catch let error { - let err = responseError(error) - logger.error("apiSetPQEncryption \(err)") - } - } } struct DeveloperView_Previews: PreviewProvider { diff --git a/apps/ios/SimpleXChat/APITypes.swift b/apps/ios/SimpleXChat/APITypes.swift index 1d02f227c8..3aa610e4af 100644 --- a/apps/ios/SimpleXChat/APITypes.swift +++ b/apps/ios/SimpleXChat/APITypes.swift @@ -32,8 +32,6 @@ public enum ChatCommand { case setTempFolder(tempFolder: String) case setFilesFolder(filesFolder: String) case apiSetEncryptLocalFiles(enable: Bool) - case apiSetPQEncryption(enable: Bool) - case apiSetContactPQ(contactId: Int64, enable: Bool) case apiExportArchive(config: ArchiveConfig) case apiImportArchive(config: ArchiveConfig) case apiDeleteStorage @@ -172,8 +170,6 @@ public enum ChatCommand { case let .setTempFolder(tempFolder): return "/_temp_folder \(tempFolder)" case let .setFilesFolder(filesFolder): return "/_files_folder \(filesFolder)" case let .apiSetEncryptLocalFiles(enable): return "/_files_encrypt \(onOff(enable))" - case let .apiSetPQEncryption(enable): return "/pq \(onOff(enable))" - case let .apiSetContactPQ(contactId, enable): return "/_pq @\(contactId) \(onOff(enable))" case let .apiExportArchive(cfg): return "/_db export \(encodeJSON(cfg))" case let .apiImportArchive(cfg): return "/_db import \(encodeJSON(cfg))" case .apiDeleteStorage: return "/_db delete" @@ -326,8 +322,6 @@ public enum ChatCommand { case .setTempFolder: return "setTempFolder" case .setFilesFolder: return "setFilesFolder" case .apiSetEncryptLocalFiles: return "apiSetEncryptLocalFiles" - case .apiSetPQEncryption: return "apiSetPQEncryption" - case .apiSetContactPQ: return "apiSetContactPQ" case .apiExportArchive: return "apiExportArchive" case .apiImportArchive: return "apiImportArchive" case .apiDeleteStorage: return "apiDeleteStorage" @@ -653,7 +647,6 @@ public enum ChatResponse: Decodable, Error { case remoteCtrlConnected(remoteCtrl: RemoteCtrlInfo) case remoteCtrlStopped(rcsState: RemoteCtrlSessionState, rcStopReason: RemoteCtrlStopReason) // pq - case contactPQAllowed(user: UserRef, contact: Contact, pqEncryption: Bool) case contactPQEnabled(user: UserRef, contact: Contact, pqEnabled: Bool) // misc case versionInfo(versionInfo: CoreVersionInfo, chatMigrations: [UpMigration], agentMigrations: [UpMigration]) @@ -809,8 +802,7 @@ public enum ChatResponse: Decodable, Error { case .remoteCtrlSessionCode: return "remoteCtrlSessionCode" case .remoteCtrlConnected: return "remoteCtrlConnected" case .remoteCtrlStopped: return "remoteCtrlStopped" - case .contactPQAllowed: return "contactPQAllowed" - case .contactPQEnabled: return "contactPQAllowed" + case .contactPQEnabled: return "contactPQEnabled" case .versionInfo: return "versionInfo" case .cmdOk: return "cmdOk" case .chatCmdError: return "chatCmdError" @@ -967,7 +959,6 @@ public enum ChatResponse: Decodable, Error { case let .remoteCtrlSessionCode(remoteCtrl_, sessionCode): return "remoteCtrl_:\n\(String(describing: remoteCtrl_))\nsessionCode: \(sessionCode)" case let .remoteCtrlConnected(remoteCtrl): return String(describing: remoteCtrl) case .remoteCtrlStopped: return noDetails - case let .contactPQAllowed(u, contact, pqEncryption): return withUser(u, "contact: \(String(describing: contact))\npqEncryption: \(pqEncryption)") case let .contactPQEnabled(u, contact, pqEnabled): return withUser(u, "contact: \(String(describing: contact))\npqEnabled: \(pqEnabled)") case let .versionInfo(versionInfo, chatMigrations, agentMigrations): return "\(String(describing: versionInfo))\n\nchat migrations: \(chatMigrations.map(\.upName))\n\nagent migrations: \(agentMigrations.map(\.upName))" case .cmdOk: return noDetails diff --git a/apps/ios/SimpleXChat/AppGroup.swift b/apps/ios/SimpleXChat/AppGroup.swift index cb07ba43ce..0511a8486c 100644 --- a/apps/ios/SimpleXChat/AppGroup.swift +++ b/apps/ios/SimpleXChat/AppGroup.swift @@ -41,7 +41,7 @@ let GROUP_DEFAULT_STORE_DB_PASSPHRASE = "storeDBPassphrase" public let GROUP_DEFAULT_INITIAL_RANDOM_DB_PASSPHRASE = "initialRandomDBPassphrase" public let GROUP_DEFAULT_CONFIRM_DB_UPGRADES = "confirmDBUpgrades" public let GROUP_DEFAULT_CALL_KIT_ENABLED = "callKitEnabled" -public let GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED = "pqExperimentalEnabled" +public let GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED = "pqExperimentalEnabled" // no longer used public let APP_GROUP_NAME = "group.chat.simplex.app" @@ -199,8 +199,6 @@ public let confirmDBUpgradesGroupDefault = BoolDefault(defaults: groupDefaults, public let callKitEnabledGroupDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_CALL_KIT_ENABLED) -public let pqExperimentalEnabledDefault = BoolDefault(defaults: groupDefaults, forKey: GROUP_DEFAULT_PQ_EXPERIMENTAL_ENABLED) - public class DateDefault { var defaults: UserDefaults var key: String From 9e3f528d447c42246c26f1f0dcb4a17884c244ef Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 22 Apr 2024 20:50:52 +0400 Subject: [PATCH 068/147] android: remove experimental PQ toggle (#4060) --- .../chat/simplex/common/model/SimpleXAPI.kt | 18 +------- .../chat/simplex/common/platform/Core.kt | 1 - .../simplex/common/views/chat/ChatInfoView.kt | 46 +------------------ .../views/usersettings/DeveloperView.kt | 8 ---- 4 files changed, 3 insertions(+), 70 deletions(-) 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 71ab78634e..0bf3f23d2c 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 @@ -163,7 +163,6 @@ class AppPreferences { val confirmDBUpgrades = mkBoolPreference(SHARED_PREFS_CONFIRM_DB_UPGRADES, false) val selfDestruct = mkBoolPreference(SHARED_PREFS_SELF_DESTRUCT, false) val selfDestructDisplayName = mkStrPreference(SHARED_PREFS_SELF_DESTRUCT_DISPLAY_NAME, null) - val pqExperimentalEnabled = mkBoolPreference(SHARED_PREFS_PQ_EXPERIMENTAL_ENABLED, false) val currentTheme = mkStrPreference(SHARED_PREFS_CURRENT_THEME, DefaultTheme.SYSTEM.name) val systemDarkTheme = mkStrPreference(SHARED_PREFS_SYSTEM_DARK_THEME, DefaultTheme.SIMPLEX.name) @@ -328,7 +327,7 @@ class AppPreferences { private const val SHARED_PREFS_CONFIRM_DB_UPGRADES = "ConfirmDBUpgrades" private const val SHARED_PREFS_SELF_DESTRUCT = "LocalAuthenticationSelfDestruct" private const val SHARED_PREFS_SELF_DESTRUCT_DISPLAY_NAME = "LocalAuthenticationSelfDestructDisplayName" - private const val SHARED_PREFS_PQ_EXPERIMENTAL_ENABLED = "PQExperimentalEnabled" + private const val SHARED_PREFS_PQ_EXPERIMENTAL_ENABLED = "PQExperimentalEnabled" // no longer used private const val SHARED_PREFS_CURRENT_THEME = "CurrentTheme" private const val SHARED_PREFS_SYSTEM_DARK_THEME = "SystemDarkTheme" private const val SHARED_PREFS_THEMES = "Themes" @@ -680,15 +679,6 @@ object ChatController { throw Exception("failed to get app settings: ${r.responseType} ${r.details}") } - suspend fun apiSetPQEncryption(enable: Boolean) = sendCommandOkResp(null, CC.ApiSetPQEncryption(enable)) - - suspend fun apiSetContactPQ(rh: Long?, contactId: Long, enable: Boolean): Contact? { - val r = sendCmd(rh, CC.ApiSetContactPQ(contactId, enable)) - if (r is CR.ContactPQAllowed) return r.contact - apiErrorAlert("apiSetContactPQ", "Error allowing contact PQ", r) - return null - } - suspend fun apiExportArchive(config: ArchiveConfig) { val r = sendCmd(null, CC.ApiExportArchive(config)) if (r is CR.CmdOk) return @@ -2393,8 +2383,6 @@ sealed class CC { class SetFilesFolder(val filesFolder: String): CC() class SetRemoteHostsFolder(val remoteHostsFolder: String): CC() class ApiSetEncryptLocalFiles(val enable: Boolean): CC() - class ApiSetPQEncryption(val enable: Boolean): CC() - class ApiSetContactPQ(val contactId: Long, val enable: Boolean): CC() class ApiExportArchive(val config: ArchiveConfig): CC() class ApiImportArchive(val config: ArchiveConfig): CC() class ApiDeleteStorage: CC() @@ -2532,8 +2520,6 @@ sealed class CC { is SetFilesFolder -> "/_files_folder $filesFolder" is SetRemoteHostsFolder -> "/remote_hosts_folder $remoteHostsFolder" is ApiSetEncryptLocalFiles -> "/_files_encrypt ${onOff(enable)}" - is ApiSetPQEncryption -> "/pq ${onOff(enable)}" - is ApiSetContactPQ -> "/_pq @$contactId ${onOff(enable)}" is ApiExportArchive -> "/_db export ${json.encodeToString(config)}" is ApiImportArchive -> "/_db import ${json.encodeToString(config)}" is ApiDeleteStorage -> "/_db delete" @@ -2676,8 +2662,6 @@ sealed class CC { is SetFilesFolder -> "setFilesFolder" is SetRemoteHostsFolder -> "setRemoteHostsFolder" is ApiSetEncryptLocalFiles -> "apiSetEncryptLocalFiles" - is ApiSetPQEncryption -> "apiSetPQEncryption" - is ApiSetContactPQ -> "apiSetContactPQ" is ApiExportArchive -> "apiExportArchive" is ApiImportArchive -> "apiImportArchive" is ApiDeleteStorage -> "apiDeleteStorage" diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt index 00370f5231..0d447a4a5a 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/Core.kt @@ -94,7 +94,6 @@ suspend fun initChatController(useKey: String? = null, confirmMigrations: Migrat controller.apiSetRemoteHostsFolder(remoteHostsDir.absolutePath) } controller.apiSetEncryptLocalFiles(controller.appPrefs.privacyEncryptLocalFiles.get()) - controller.apiSetPQEncryption(controller.appPrefs.pqExperimentalEnabled.get()) // If we migrated successfully means previous re-encryption process on database level finished successfully too if (appPreferences.encryptionStartedAt.get() != null) appPreferences.encryptionStartedAt.set(null) val user = chatController.apiGetActiveUser(null) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt index 42257cf723..dcd36e026b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ChatInfoView.kt @@ -58,7 +58,6 @@ fun ChatInfoView( val currentUser = remember { chatModel.currentUser }.value val connStats = remember(contact.id, connectionStats) { mutableStateOf(connectionStats) } val developerTools = chatModel.controller.appPrefs.developerTools.get() - val pqExperimentalEnabled = chatModel.controller.appPrefs.pqExperimentalEnabled.get() if (chat != null && currentUser != null) { val contactNetworkStatus = remember(chatModel.networkStatuses.toMap(), contact) { mutableStateOf(chatModel.contactNetworkStatus(contact)) @@ -81,7 +80,6 @@ fun ChatInfoView( localAlias, connectionCode, developerTools, - pqExperimentalEnabled, onLocalAliasChanged = { setContactAlias(chat, it, chatModel) }, @@ -140,17 +138,6 @@ fun ChatInfoView( } }) }, - allowContactPQ = { - showAllowContactPQAlert(allowContactPQ = { - withBGApi { - val ct = chatModel.controller.apiSetContactPQ(chatRh, contact.contactId, true) - if (ct != null) { - chatModel.updateContact(chatRh, ct) - } - close.invoke() - } - }) - }, verifyClicked = { ModalManager.end.showModalCloseable { close -> remember { derivedStateOf { (chatModel.getContactChat(contact.contactId)?.chatInfo as? ChatInfo.Direct)?.contact } }.value?.let { ct -> @@ -301,7 +288,6 @@ fun ChatInfoLayout( localAlias: String, connectionCode: String?, developerTools: Boolean, - pqExperimentalEnabled: Boolean, onLocalAliasChanged: (String) -> Unit, openPreferences: () -> Unit, deleteContact: () -> Unit, @@ -310,7 +296,6 @@ fun ChatInfoLayout( abortSwitchContactAddress: () -> Unit, syncContactConnection: () -> Unit, syncContactConnectionForce: () -> Unit, - allowContactPQ: () -> Unit, verifyClicked: () -> Unit, ) { val cStats = connStats.value @@ -360,13 +345,9 @@ fun ChatInfoLayout( } val conn = contact.activeConn - if (pqExperimentalEnabled && conn != null) { - SectionView("Quantum resistant E2E encryption") { + if (conn != null) { + SectionView { InfoRow("E2E encryption", if (conn.connPQEnabled) "Quantum resistant" else "Standard") - if (!conn.pqEncryption) { - AllowContactPQButton(allowContactPQ) - SectionTextFooter("After allowing quantum resistant e2e encryption, it will be enabled after several messages if your contact also allows it.") - } SectionDividerSpaced() } } @@ -627,17 +608,6 @@ fun SynchronizeConnectionButtonForce(syncConnectionForce: () -> Unit) { ) } -@Composable -fun AllowContactPQButton(allowContactPQ: () -> Unit) { - SettingsActionItem( - painterResource(MR.images.ic_warning), - "Allow PQ encryption", - click = allowContactPQ, - textColor = WarningOrange, - iconColor = WarningOrange - ) -} - @Composable fun VerifyCodeButton(contactVerified: Boolean, onClick: () -> Unit) { SettingsActionItem( @@ -741,16 +711,6 @@ fun showSyncConnectionForceAlert(syncConnectionForce: () -> Unit) { ) } -fun showAllowContactPQAlert(allowContactPQ: () -> Unit) { - AlertManager.shared.showAlertDialog( - title = "Allow quantum resistant encryption?", - text = "This is an experimental feature, it is not recommended to enable it for important chats.", - confirmText = "Allow", - onConfirm = allowContactPQ, - destructive = true, - ) -} - @Preview @Composable fun PreviewChatInfoLayout() { @@ -768,7 +728,6 @@ fun PreviewChatInfoLayout() { localAlias = "", connectionCode = "123", developerTools = false, - pqExperimentalEnabled = false, connStats = remember { mutableStateOf(null) }, contactNetworkStatus = NetworkStatus.Connected(), onLocalAliasChanged = {}, @@ -780,7 +739,6 @@ fun PreviewChatInfoLayout() { abortSwitchContactAddress = {}, syncContactConnection = {}, syncContactConnectionForce = {}, - allowContactPQ = {}, verifyClicked = {}, ) } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/DeveloperView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/DeveloperView.kt index a03a015207..ef8c30b43a 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/DeveloperView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/DeveloperView.kt @@ -57,14 +57,6 @@ fun DeveloperView( SettingsPreferenceItem(painterResource(MR.images.ic_report), stringResource(MR.strings.show_internal_errors), appPreferences.showInternalErrors) SettingsPreferenceItem(painterResource(MR.images.ic_avg_pace), stringResource(MR.strings.show_slow_api_calls), appPreferences.showSlowApiCalls) } - - SectionSpacer() - SectionView("Experimental".uppercase()) { - SettingsPreferenceItem(painterResource(MR.images.ic_vpn_key_filled), "Post-quantum E2EE", m.controller.appPrefs.pqExperimentalEnabled, onChange = { enable -> - withBGApi { m.controller.apiSetPQEncryption(enable) } - }) - SectionTextFooter("In this version applies only to new contacts.") - } } SectionBottomSpacer() } From d53aa6969157f9a9318c2e4530201e0b37f52a03 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Tue, 23 Apr 2024 00:24:26 +0700 Subject: [PATCH 069/147] android: managing audio sources in call in a better way (#4063) --- .../views/call/CallAudioDeviceManager.kt | 46 ++++++++++--------- .../common/views/call/CallView.android.kt | 21 ++++++--- .../commonMain/resources/MR/base/strings.xml | 1 + 3 files changed, 40 insertions(+), 28 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt index 9c6f76461d..d1376196a9 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt @@ -64,6 +64,7 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { } override fun start() { + am.mode = AudioManager.MODE_IN_COMMUNICATION am.registerAudioDeviceCallback(audioCallback, null) am.addOnCommunicationDeviceChangedListener(Executors.newSingleThreadExecutor(), listener) } @@ -75,7 +76,6 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") - am.mode = AudioManager.MODE_IN_COMMUNICATION val commDevice = am.communicationDevice if (keepAnyNonEarpiece && commDevice != null && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) { // some external device or speaker selected already, no need to change it @@ -98,7 +98,6 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { } override fun selectDevice(id: Int) { - am.mode = AudioManager.MODE_IN_COMMUNICATION val device = devices.value.lastOrNull { it.id == id } if (device != null && am.communicationDevice?.id != id ) { am.setCommunicationDevice(device) @@ -115,40 +114,32 @@ class PreSCallAudioDeviceManager: CallAudioDeviceManagerInterface { override fun onAudioDevicesAdded(addedDevices: Array) { Log.d(TAG, "Added audio devices: ${addedDevices.map { it.type }}") super.onAudioDevicesAdded(addedDevices) - val wasSize = devices.value.size - devices.value += addedDevices.filter { it.hasSupportedType() } - val addedCount = devices.value.size - wasSize - //if (addedCount > 0 && chatModel.activeCall.value?.callState == CallState.Connected) { - // Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12 - selectLastExternalDeviceOrDefault(chatModel.activeCall.value?.supportsVideo() == true, false) - //} + devices.value = am.getDevices(AudioManager.GET_DEVICES_OUTPUTS).filter { it.hasSupportedType() }.excludeSameType().excludeEarpieceIfWired() + selectLastExternalDeviceOrDefault(chatModel.activeCall.value?.supportsVideo() == true, false) } override fun onAudioDevicesRemoved(removedDevices: Array) { Log.d(TAG, "Removed audio devices: ${removedDevices.map { it.type }}") super.onAudioDevicesRemoved(removedDevices) - val wasSize = devices.value.size - devices.value = devices.value.filterNot { removedDevices.any { rm -> rm.id == it.id } } - //val removedCount = wasSize - devices.value.size - //if (devices.value.count { it.hasSupportedType() } == 2 && chatModel.activeCall.value?.callState == CallState.Connected) { - // Setting params in Connected state makes sure that Bluetooth will NOT be broken on Android < 12 - selectLastExternalDeviceOrDefault(chatModel.activeCall.value?.supportsVideo() == true, true) - //} + devices.value = am.getDevices(AudioManager.GET_DEVICES_OUTPUTS).filter { it.hasSupportedType() }.excludeSameType().excludeEarpieceIfWired() + selectLastExternalDeviceOrDefault(chatModel.activeCall.value?.supportsVideo() == true, true) } } override fun start() { + am.mode = AudioManager.MODE_IN_COMMUNICATION am.registerAudioDeviceCallback(audioCallback, null) } override fun stop() { am.unregisterAudioDeviceCallback(audioCallback) + am.stopBluetoothSco() } override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE - val externalDevice = devices.value.lastOrNull { it.hasSupportedType() && it.isSource && it.isSink && it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } if (externalDevice != null) { selectDevice(externalDevice.id) } else { @@ -166,7 +157,7 @@ class PreSCallAudioDeviceManager: CallAudioDeviceManagerInterface { val isExternalDevice = device != null && device.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && device.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE if (isExternalDevice) { am.isSpeakerphoneOn = false - if (device?.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES) { + if (device?.type == AudioDeviceInfo.TYPE_WIRED_HEADSET || device?.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES) { am.isWiredHeadsetOn = true am.stopBluetoothSco() am.isBluetoothScoOn = false @@ -194,11 +185,18 @@ class PreSCallAudioDeviceManager: CallAudioDeviceManagerInterface { AudioDeviceInfo.TYPE_BUILTIN_SPEAKER -> true AudioDeviceInfo.TYPE_BLUETOOTH_SCO -> true - AudioDeviceInfo.TYPE_BLE_HEADSET -> true - AudioDeviceInfo.TYPE_BLE_SPEAKER -> true AudioDeviceInfo.TYPE_WIRED_HEADPHONES -> true else -> false } + + private fun List.excludeSameType(): List = + groupBy { it.type }.flatMap { devices -> listOf(devices.value.minByOrNull { it.id }!!) } + + // Earpiece will not work if there is a wired connection + private fun List.excludeEarpieceIfWired(): List = + if (any { it.type == AudioDeviceInfo.TYPE_WIRED_HEADSET || it.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES }) + filter { it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + else this } val AudioDeviceInfo.icon: ImageResource @@ -225,11 +223,15 @@ val AudioDeviceInfo.name: StringResource? AudioDeviceInfo.TYPE_BLUETOOTH_SCO, AudioDeviceInfo.TYPE_BLUETOOTH_A2DP, AudioDeviceInfo.TYPE_BLE_HEADSET, - AudioDeviceInfo.TYPE_BLE_SPEAKER -> null // Use product name instead + AudioDeviceInfo.TYPE_BLE_SPEAKER -> if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + // Use product name instead + null + } else { + MR.strings.audio_device_bluetooth + } AudioDeviceInfo.TYPE_WIRED_HEADPHONES -> MR.strings.audio_device_wired_headphones AudioDeviceInfo.TYPE_USB_HEADSET, AudioDeviceInfo.TYPE_USB_DEVICE -> null // Use product name instead else -> null // Use product name instead } - diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index a93f79f7bc..382d87dccb 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -87,7 +87,9 @@ actual fun ActiveCallView() { } val callAudioDeviceManager = remember { CallAudioDeviceManagerInterface.new() } DisposableEffect(Unit) { - callAudioDeviceManager.start() + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { + callAudioDeviceManager.start() + } onDispose { CallSoundsPlayer.stop() if (wasConnected.value) { @@ -120,13 +122,24 @@ actual fun ActiveCallView() { val callType = CallType(call.localMedia, r.capabilities) chatModel.controller.apiSendCallInvitation(callRh, call.contact, callType) updateActiveCall(call) { it.copy(callState = CallState.InvitationSent, localCapabilities = r.capabilities) } - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + // Starting is delayed to make Android <= 11 working good with Bluetooth + callAudioDeviceManager.start() + } else { + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + } CallSoundsPlayer.startConnectingCallSound(scope) activeCallWaitDeliveryReceipt(scope) } is WCallResponse.Offer -> withBGApi { chatModel.controller.apiSendCallOffer(callRh, call.contact, r.offer, r.iceCandidates, call.localMedia, r.capabilities) updateActiveCall(call) { it.copy(callState = CallState.OfferSent, localCapabilities = r.capabilities) } + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.S) { + // Starting is delayed to make Android <= 11 working good with Bluetooth + callAudioDeviceManager.start() + } else { + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + } } is WCallResponse.Answer -> withBGApi { chatModel.controller.apiSendCallAnswer(callRh, call.contact, r.answer, r.iceCandidates) @@ -141,7 +154,6 @@ actual fun ActiveCallView() { val callStatus = json.decodeFromString("\"${r.state.connectionState}\"") if (callStatus == WebRTCCallStatus.Connected) { updateActiveCall(call) { it.copy(callState = CallState.Connected, connectedAt = Clock.System.now()) } - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) } withBGApi { chatModel.controller.apiCallStatus(callRh, call.contact, callStatus) } } catch (e: Throwable) { @@ -149,9 +161,6 @@ actual fun ActiveCallView() { } is WCallResponse.Connected -> { updateActiveCall(call) { it.copy(callState = CallState.Connected, connectionInfo = r.connectionInfo) } - scope.launch { - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) - } } is WCallResponse.End -> { withBGApi { chatModel.callManager.endCall(call) } 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 d30db06f9f..d410f3d9f6 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -839,6 +839,7 @@ Earpiece Speaker Headphones + Bluetooth The next generation of private messaging From 7c74f02d0178b44f993b687e2b26442405713f69 Mon Sep 17 00:00:00 2001 From: Esra'a Al Shafei Date: Mon, 22 Apr 2024 10:26:41 -0700 Subject: [PATCH 070/147] docs: typo in simplex-chat.md (#4037) typo fix --- docs/protocol/simplex-chat.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/protocol/simplex-chat.md b/docs/protocol/simplex-chat.md index 71d5efcef7..e3d8e88ae0 100644 --- a/docs/protocol/simplex-chat.md +++ b/docs/protocol/simplex-chat.md @@ -10,7 +10,7 @@ Evgeny Poberezkin ## Abstract -SimpleX Chat Protocol is a protocol used to by SimpleX Chat clients to exchange messages. This protocol relies on lower level SimpleX protocols - SimpleX Messaging Protocol (SMP) and SimpleX Messaging Agent protocol. SimpleX Chat Protocol describes the format of messages and the client operations that should be performed when receiving such messages. +SimpleX Chat Protocol is a protocol used by SimpleX Chat clients to exchange messages. This protocol relies on lower level SimpleX protocols - SimpleX Messaging Protocol (SMP) and SimpleX Messaging Agent protocol. SimpleX Chat Protocol describes the format of messages and the client operations that should be performed when receiving such messages. ## Scope From 2b6764fc365c6330effe228159143f0a662f5728 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Tue, 23 Apr 2024 01:03:18 +0400 Subject: [PATCH 071/147] android: 5.7 what's new (#4064) * android: 5.7 what's new * icon * update LT language name * Lithuanian --------- Co-authored-by: Evgeny Poberezkin --- .../common/views/onboarding/WhatsNewView.kt | 31 +++++++++++++++++++ .../common/views/usersettings/Appearance.kt | 2 +- .../commonMain/resources/MR/base/strings.xml | 8 +++++ .../resources/MR/images/ic_music_note.svg | 1 + 4 files changed, 41 insertions(+), 1 deletion(-) create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_music_note.svg 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 3f63e72a69..0ea2d25c4f 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 @@ -521,6 +521,37 @@ private val versionDescriptions: List = listOf( ) ) ), + VersionDescription( + version = "v5.7", + features = listOf( + FeatureDescription( + icon = MR.images.ic_vpn_key_filled, + titleId = MR.strings.v5_6_quantum_resistant_encryption, + descrId = MR.strings.v5_7_quantum_resistant_encryption_descr + ), + FeatureDescription( + icon = MR.images.ic_forward, + titleId = MR.strings.v5_7_forward, + descrId = MR.strings.v5_7_forward_descr + ), + FeatureDescription( + icon = MR.images.ic_music_note, + titleId = MR.strings.v5_7_call_sounds, + descrId = MR.strings.v5_7_call_sounds_descr + ), + FeatureDescription( + icon = MR.images.ic_wifi_tethering, + titleId = MR.strings.v5_7_network, + descrId = MR.strings.v5_7_network_descr + ), + FeatureDescription( + icon = MR.images.ic_translate, + titleId = MR.strings.v5_7_new_interface_languages, + descrId = MR.strings.whats_new_thanks_to_users_contribute_weblate, + link = "https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat" + ) + ) + ), ) private val lastVersion = versionDescriptions.last().version diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt index c93e7e282a..c55888d8a3 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt @@ -212,7 +212,7 @@ object AppearanceScope { "it" to "Italiano", "iw" to "עִברִית", "ja" to "日本語", - "lt" to "Lietuvių kalba", + "lt" to "Lietuvių", "nl" to "Nederlands", "pl" to "Polski", "pt-BR" to "Português, Brasil", 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 d410f3d9f6..f3a5c138d5 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1765,6 +1765,14 @@ Use the app while in the call. Safer groups Admins can block a member for all. + Will be enabled in direct chats! + Forward and save messages + Message source remains private. + In-call sounds + When connecting audio and video calls. + Network management + More reliable network connection. + Lithuanian UI seconds diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_music_note.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_music_note.svg new file mode 100644 index 0000000000..766dc76be8 --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_music_note.svg @@ -0,0 +1 @@ + \ No newline at end of file From f80ac6dc50217280fe848fdd874332fe43f71b6d Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Tue, 23 Apr 2024 04:13:14 +0700 Subject: [PATCH 072/147] android: proper hiding keyboard when entering passcode (#4066) --- .../kotlin/chat/simplex/common/platform/UI.android.kt | 5 ++++- .../src/commonMain/kotlin/chat/simplex/common/platform/UI.kt | 2 +- .../chat/simplex/common/views/localauth/PasscodeView.kt | 2 ++ .../kotlin/chat/simplex/common/platform/UI.desktop.kt | 2 +- 4 files changed, 8 insertions(+), 3 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/UI.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/UI.android.kt index 5a4ae01098..c90946c95b 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/UI.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/UI.android.kt @@ -67,10 +67,13 @@ actual fun getKeyboardState(): State { return keyboardState } -actual fun hideKeyboard(view: Any?) { +actual fun hideKeyboard(view: Any?, clearFocus: Boolean) { // LALAL // LocalSoftwareKeyboardController.current?.hide() if (view is View) { + if (clearFocus) { + view.clearFocus() + } (androidAppContext.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager).hideSoftInputFromWindow(view.windowToken, 0) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/UI.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/UI.kt index 28ac357c2d..af202fcabd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/UI.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/platform/UI.kt @@ -13,7 +13,7 @@ expect fun LocalMultiplatformView(): Any? @Composable expect fun getKeyboardState(): State -expect fun hideKeyboard(view: Any?) +expect fun hideKeyboard(view: Any?, clearFocus: Boolean = false) expect fun androidIsFinishingMainActivity(): Boolean diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/localauth/PasscodeView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/localauth/PasscodeView.kt index 2b2f006d25..9b25e9b5e0 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/localauth/PasscodeView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/localauth/PasscodeView.kt @@ -135,7 +135,9 @@ fun PasscodeView( if (!buttonsEnabled.value) { ProgressIndicator() } + val view = LocalMultiplatformView() LaunchedEffect(Unit) { + hideKeyboard(view, true) focusRequester.requestFocus() // Disallow to steal a focus by clicking on buttons or using Tab focusRequester.captureFocus() diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/UI.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/UI.desktop.kt index b5a0e2e008..e49dc6f2b1 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/UI.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/UI.desktop.kt @@ -16,7 +16,7 @@ actual fun LocalMultiplatformView(): Any? = null @Composable actual fun getKeyboardState(): State = remember { mutableStateOf(KeyboardState.Opened) } -actual fun hideKeyboard(view: Any?) {} +actual fun hideKeyboard(view: Any?, clearFocus: Boolean) {} actual fun androidIsFinishingMainActivity(): Boolean = false From bea19f76e9458b6ebad5df0e5fdb0ec4455fa4ab Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Mon, 22 Apr 2024 22:24:00 +0100 Subject: [PATCH 073/147] 5.7.0.3 (simplexmq 5.7.0.2) --- cabal.project | 2 +- package.yaml | 2 +- scripts/nix/sha256map.nix | 2 +- simplex-chat.cabal | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cabal.project b/cabal.project index 572c22c5fd..6e8ae3302e 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: fe28e02be779fb0357a7f650bd327a75f4aaab95 + tag: daa866f3331cf882f1030ae636f9e27a2498ca8b source-repository-package type: git diff --git a/package.yaml b/package.yaml index 84a0eff967..c899587e16 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.7.0.2 +version: 5.7.0.3 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index c4e857d97e..4d29184ac0 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."fe28e02be779fb0357a7f650bd327a75f4aaab95" = "1hwh0kx6ljskjx7svxpwmga79dfa2vz9qq0mwbqr6kkb9kf6qdd3"; + "https://github.com/simplex-chat/simplexmq.git"."daa866f3331cf882f1030ae636f9e27a2498ca8b" = "1bfzw8q8jgblpqh0vjvhs3ddyvgxrdpv18gy84yr6kmvssmdgs76"; "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/simplex-chat.cabal b/simplex-chat.cabal index 67dfb8a046..5af23471a8 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: 5.7.0.2 +version: 5.7.0.3 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat From 4c1dfc76d463d48aa1cf29c18528548e7504ea1d Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Tue, 23 Apr 2024 05:26:01 +0700 Subject: [PATCH 074/147] android: sound from speaker fix (#4067) --- .../views/call/CallAudioDeviceManager.kt | 28 +++++++++---------- .../common/views/call/CallView.android.kt | 21 +++++++------- .../chat/simplex/common/views/call/WebRTC.kt | 1 - 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt index d1376196a9..d9562100cf 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt @@ -18,7 +18,7 @@ interface CallAudioDeviceManagerInterface { fun start() fun stop() // AudioDeviceInfo.AudioDeviceType - fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) + fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) // AudioDeviceInfo.AudioDeviceType fun selectDevice(id: Int) @@ -74,24 +74,24 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { am.removeOnCommunicationDeviceChangedListener(listener) } - override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { + override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) { Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") val commDevice = am.communicationDevice - if (keepAnyNonEarpiece && commDevice != null && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE) { - // some external device or speaker selected already, no need to change it + if (keepAnyExternal && commDevice != null && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && commDevice.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) { + // some external device selected already, no need to change it return } - val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE - val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + val preferredInternalDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER } // External device already selected if (externalDevice != null && externalDevice.type == am.communicationDevice?.type) { return } if (externalDevice != null) { am.setCommunicationDevice(externalDevice) - } else if (am.communicationDevice?.type != preferredSecondaryDevice) { - am.availableCommunicationDevices.firstOrNull { it.type == preferredSecondaryDevice }?.let { + } else if (am.communicationDevice?.type != preferredInternalDevice) { + am.availableCommunicationDevices.firstOrNull { it.type == preferredInternalDevice }?.let { am.setCommunicationDevice(it) } } @@ -136,25 +136,25 @@ class PreSCallAudioDeviceManager: CallAudioDeviceManagerInterface { am.stopBluetoothSco() } - override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyNonEarpiece: Boolean) { + override fun selectLastExternalDeviceOrDefault(speaker: Boolean, keepAnyExternal: Boolean) { Log.d(TAG, "selectLastExternalDeviceOrDefault: set audio mode, speaker enabled: $speaker") - val preferredSecondaryDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE - val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + val preferredInternalDevice = if (speaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val externalDevice = devices.value.lastOrNull { it.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && it.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER } if (externalDevice != null) { selectDevice(externalDevice.id) } else { am.stopBluetoothSco() am.isWiredHeadsetOn = false - am.isSpeakerphoneOn = preferredSecondaryDevice == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER + am.isSpeakerphoneOn = preferredInternalDevice == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER am.isBluetoothScoOn = false - val newCurrentDevice = devices.value.firstOrNull { it.type == preferredSecondaryDevice } + val newCurrentDevice = devices.value.firstOrNull { it.type == preferredInternalDevice } adaptToCurrentlyActiveDevice(newCurrentDevice) } } override fun selectDevice(id: Int) { val device = devices.value.lastOrNull { it.id == id } - val isExternalDevice = device != null && device.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER && device.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val isExternalDevice = device != null && device.type != AudioDeviceInfo.TYPE_BUILTIN_EARPIECE && device.type != AudioDeviceInfo.TYPE_BUILTIN_SPEAKER if (isExternalDevice) { am.isSpeakerphoneOn = false if (device?.type == AudioDeviceInfo.TYPE_WIRED_HEADSET || device?.type == AudioDeviceInfo.TYPE_WIRED_HEADPHONES) { diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index 382d87dccb..f9fb81a3ef 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -26,7 +26,6 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.painter.Painter import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow @@ -126,7 +125,7 @@ actual fun ActiveCallView() { // Starting is delayed to make Android <= 11 working good with Bluetooth callAudioDeviceManager.start() } else { - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.supportsVideo(), true) } CallSoundsPlayer.startConnectingCallSound(scope) activeCallWaitDeliveryReceipt(scope) @@ -138,7 +137,7 @@ actual fun ActiveCallView() { // Starting is delayed to make Android <= 11 working good with Bluetooth callAudioDeviceManager.start() } else { - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.supportsVideo(), true) } } is WCallResponse.Answer -> withBGApi { @@ -241,11 +240,10 @@ private fun ActiveCallOverlay(call: Call, chatModel: ChatModel, callAudioDeviceM selectDevice = { callAudioDeviceManager.selectDevice(it.id) }, toggleVideo = { chatModel.callCommand.add(WCallCommand.Media(CallMediaType.Video, enable = !call.videoEnabled)) }, toggleSound = { - var call = chatModel.activeCall.value - if (call != null) { - call = call.copy(soundSpeaker = !call.soundSpeaker) - chatModel.activeCall.value = call - callAudioDeviceManager.selectLastExternalDeviceOrDefault(call.soundSpeaker, true) + val enableSpeaker = callAudioDeviceManager.currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_EARPIECE + val preferredInternalDevice = callAudioDeviceManager.devices.value.firstOrNull { it.type == if (enableSpeaker) AudioDeviceInfo.TYPE_BUILTIN_SPEAKER else AudioDeviceInfo.TYPE_BUILTIN_EARPIECE } + if (preferredInternalDevice != null) { + callAudioDeviceManager.selectDevice(preferredInternalDevice.id) } }, flipCamera = { chatModel.callCommand.add(WCallCommand.Camera(call.localCamera.flipped)) } @@ -308,7 +306,8 @@ private fun ActiveCallOverlayLayout( currentDevice.value == null || devices.none { it.id == currentDevice.value?.id } ) { - ToggleSoundButton(call, enabled, toggleSound) + val isSpeaker = currentDevice.value?.type == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER + ToggleSoundButton(call, enabled, isSpeaker, toggleSound) } else { ExposedDropDownSettingWithIcon( devices.map { Triple(it, it.icon, if (it.name != null) generalGetString(it.name!!) else it.productName.toString()) }, @@ -404,8 +403,8 @@ private fun ToggleAudioButton(call: Call, enabled: Boolean = true, toggleAudio: } @Composable -private fun ToggleSoundButton(call: Call, enabled: Boolean, toggleSound: () -> Unit) { - if (call.soundSpeaker) { +private fun ToggleSoundButton(call: Call, enabled: Boolean, speaker: Boolean, toggleSound: () -> Unit) { + if (speaker) { ControlButton(call, painterResource(MR.images.ic_volume_up), MR.strings.icon_descr_speaker_off, enabled, toggleSound) } else { ControlButton(call, painterResource(MR.images.ic_volume_down), MR.strings.icon_descr_speaker_on, enabled, toggleSound) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt index 4991cf13bc..0a7231370b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/call/WebRTC.kt @@ -20,7 +20,6 @@ data class Call( val sharedKey: String? = null, val audioEnabled: Boolean = true, val videoEnabled: Boolean = localMedia == CallMediaType.Video, - val soundSpeaker: Boolean = localMedia == CallMediaType.Video, var localCamera: VideoCamera = VideoCamera.User, val connectionInfo: ConnectionInfo? = null, var connectedAt: Instant? = null, From 06ac15b282f6b80704b85037cb01709c3e216ac9 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 00:11:37 +0100 Subject: [PATCH 075/147] 5.7-beta.2: ios 209, android 198, desktop 39 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 52 +++++++++++----------- apps/multiplatform/gradle.properties | 8 ++-- 2 files changed, 30 insertions(+), 30 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index cccc267695..2830c57057 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,11 +29,11 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; - 5C2217982BD6B0F200A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217932BD6B0F200A8B0E7 /* libgmp.a */; }; - 5C2217992BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */; }; - 5C22179A2BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */; }; - 5C22179B2BD6B0F200A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */; }; - 5C22179C2BD6B0F200A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217972BD6B0F200A8B0E7 /* libffi.a */; }; + 5C2217A22BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */; }; + 5C2217A32BD7132100A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */; }; + 5C2217A42BD7132100A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179F2BD7132100A8B0E7 /* libffi.a */; }; + 5C2217A52BD7132100A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217A02BD7132100A8B0E7 /* libgmp.a */; }; + 5C2217A62BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -279,11 +279,11 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; - 5C2217932BD6B0F200A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a"; sourceTree = ""; }; - 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a"; sourceTree = ""; }; - 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5C2217972BD6B0F200A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a"; sourceTree = ""; }; + 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C22179F2BD7132100A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C2217A02BD7132100A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a"; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -525,12 +525,12 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C22179B2BD6B0F200A8B0E7 /* libgmpxx.a in Frameworks */, + 5C2217A32BD7132100A8B0E7 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5C22179A2BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a in Frameworks */, - 5C2217992BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a in Frameworks */, - 5C22179C2BD6B0F200A8B0E7 /* libffi.a in Frameworks */, - 5C2217982BD6B0F200A8B0E7 /* libgmp.a in Frameworks */, + 5C2217A22BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a in Frameworks */, + 5C2217A42BD7132100A8B0E7 /* libffi.a in Frameworks */, + 5C2217A52BD7132100A8B0E7 /* libgmp.a in Frameworks */, + 5C2217A62BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C2217972BD6B0F200A8B0E7 /* libffi.a */, - 5C2217932BD6B0F200A8B0E7 /* libgmp.a */, - 5C2217962BD6B0F200A8B0E7 /* libgmpxx.a */, - 5C2217942BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG-ghc9.6.3.a */, - 5C2217952BD6B0F200A8B0E7 /* libHSsimplex-chat-5.7.0.1-CNnVmAzCniZCwENW90FRcG.a */, + 5C22179F2BD7132100A8B0E7 /* libffi.a */, + 5C2217A02BD7132100A8B0E7 /* libgmp.a */, + 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */, + 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */, + 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */, ); path = Libraries; sourceTree = ""; @@ -1544,7 +1544,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1593,7 +1593,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1679,7 +1679,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -1716,7 +1716,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -1753,7 +1753,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1804,7 +1804,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 208; + CURRENT_PROJECT_VERSION = 209; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index 41e700bcea..a0b0b8839a 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -26,11 +26,11 @@ android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=5.7-beta.1 -android.version_code=197 +android.version_name=5.7-beta.2 +android.version_code=198 -desktop.version_name=5.7-beta.1 -desktop.version_code=38 +desktop.version_name=5.7-beta.2 +desktop.version_code=39 kotlin.version=1.9.23 gradle.plugin.version=8.2.0 From d864603d013ae0e2d0a3af560dda41595fcca7fb Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 00:14:02 +0100 Subject: [PATCH 076/147] website: do not build from stable --- .github/workflows/web.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/web.yml b/.github/workflows/web.yml index 039c136464..7fc66308f8 100644 --- a/.github/workflows/web.yml +++ b/.github/workflows/web.yml @@ -4,7 +4,6 @@ on: push: branches: - master - - stable paths: - website/** - images/** From ae9e63d1bebd56fe971076d2a6c0634b4e159245 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 09:59:16 +0100 Subject: [PATCH 077/147] ios: export localizations --- .../bg.xcloc/Localized Contents/bg.xliff | 38 +++++++++++----- .../cs.xcloc/Localized Contents/cs.xliff | 36 +++++++++++---- .../de.xcloc/Localized Contents/de.xliff | 38 +++++++++++----- .../en.xcloc/Localized Contents/en.xliff | 45 ++++++++++++++----- .../es.xcloc/Localized Contents/es.xliff | 38 +++++++++++----- .../fi.xcloc/Localized Contents/fi.xliff | 36 +++++++++++---- .../fr.xcloc/Localized Contents/fr.xliff | 38 +++++++++++----- .../hu.xcloc/Localized Contents/hu.xliff | 36 +++++++++++---- .../it.xcloc/Localized Contents/it.xliff | 38 +++++++++++----- .../ja.xcloc/Localized Contents/ja.xliff | 36 +++++++++++---- .../nl.xcloc/Localized Contents/nl.xliff | 38 +++++++++++----- .../pl.xcloc/Localized Contents/pl.xliff | 38 +++++++++++----- .../ru.xcloc/Localized Contents/ru.xliff | 38 +++++++++++----- .../th.xcloc/Localized Contents/th.xliff | 36 +++++++++++---- .../tr.xcloc/Localized Contents/tr.xliff | 38 +++++++++++----- .../uk.xcloc/Localized Contents/uk.xliff | 38 +++++++++++----- .../Localized Contents/zh-Hans.xliff | 36 +++++++++++---- 17 files changed, 483 insertions(+), 158 deletions(-) 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 e3129ef52a..d740bd7e1a 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -2349,11 +2349,6 @@ This cannot be undone! Грешка при добавяне на член(ове) No comment provided by engineer. - - Error allowing contact PQ encryption - Грешка при разрешаване на PQ криптиране за контакт - No comment provided by engineer. - Error changing address Грешка при промяна на адреса @@ -2797,6 +2792,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3159,6 +3158,10 @@ This cannot be undone! В отговор на No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Инкогнито @@ -3634,6 +3637,10 @@ This is your link for group %@! Реакциите на съобщения са забранени в тази група. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Текст на съобщението @@ -3747,6 +3754,10 @@ This is your link for group %@! Очаквайте скоро още подобрения! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Най-вероятно тази връзка е изтрита. @@ -3786,6 +3797,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Мрежови настройки @@ -4285,11 +4300,6 @@ Error: %@ Въжможно е пръстовият отпечатък на сертификата в адреса на сървъра да е неправилен server test error - - Post-quantum E2EE - Постквантово E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Запазете последната чернова на съобщението с прикачени файлове. @@ -6193,6 +6203,10 @@ To connect, please ask your contact to create another connection link and check Когато са налични No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Когато хората искат да се свържат с вас, можете да ги приемете или отхвърлите. @@ -6207,6 +6221,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 05eb701b86..000dfd11bc 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -2263,10 +2263,6 @@ This cannot be undone! Chyba přidávání člena(ů) No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address Chuba změny adresy @@ -2698,6 +2694,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3050,6 +3050,10 @@ This cannot be undone! V odpovědi na No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Inkognito @@ -3506,6 +3510,10 @@ This is your link for group %@! Reakce na zprávy jsou v této skupině zakázány. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Text zprávy @@ -3610,6 +3618,10 @@ This is your link for group %@! Další vylepšení se chystají již brzy! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Pravděpodobně je toto spojení smazáno. @@ -3649,6 +3661,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Nastavení sítě @@ -4130,10 +4146,6 @@ Error: %@ Je možné, že otisk certifikátu v adrese serveru je nesprávný server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Zachování posledního návrhu zprávy s přílohami. @@ -5975,6 +5987,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu Když je k dispozici No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Když někdo požádá o připojení, můžete žádost přijmout nebo odmítnout. @@ -5989,6 +6005,10 @@ Chcete-li se připojit, požádejte svůj kontakt o vytvoření dalšího odkazu WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 2e3f324a90..ce943d83d6 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -2354,11 +2354,6 @@ Das kann nicht rückgängig gemacht werden! Fehler beim Hinzufügen von Mitgliedern No comment provided by engineer. - - Error allowing contact PQ encryption - Fehler beim Zulassen der Kontakt-PQ-Verschlüsselung - No comment provided by engineer. - Error changing address Fehler beim Wechseln der Empfängeradresse @@ -2802,6 +2797,10 @@ Das kann nicht rückgängig gemacht werden! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Das kann nicht rückgängig gemacht werden! Als Antwort auf No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Inkognito @@ -3639,6 +3642,10 @@ Das ist Ihr Link für die Gruppe %@! In dieser Gruppe sind Reaktionen auf Nachrichten nicht erlaubt. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Nachrichtentext @@ -3754,6 +3761,10 @@ Das ist Ihr Link für die Gruppe %@! Weitere Verbesserungen sind bald verfügbar! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Wahrscheinlich ist diese Verbindung gelöscht worden. @@ -3793,6 +3804,10 @@ Das ist Ihr Link für die Gruppe %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Netzwerkeinstellungen @@ -4292,11 +4307,6 @@ Fehler: %@ Der Fingerabdruck des Zertifikats in der Serveradresse ist wahrscheinlich ungültig server test error - - Post-quantum E2EE - Post-Quantum E2E-Verschlüsselung - No comment provided by engineer. - Preserve the last message draft, with attachments. Den letzten Nachrichtenentwurf, auch mit seinen Anhängen, aufbewahren. @@ -6200,6 +6210,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Wenn verfügbar No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Wenn Personen eine Verbindung anfordern, können Sie diese annehmen oder ablehnen. @@ -6214,6 +6228,10 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 eb06200db9..71e1a726b8 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -2358,11 +2358,6 @@ This cannot be undone! Error adding member(s) No comment provided by engineer. - - Error allowing contact PQ encryption - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address Error changing address @@ -2808,6 +2803,11 @@ This cannot be undone! Forward chat item action + + Forward and save messages + Forward and save messages + No comment provided by engineer. + Forwarded Forwarded @@ -3173,6 +3173,11 @@ This cannot be undone! In reply to No comment provided by engineer. + + In-call sounds + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3648,6 +3653,11 @@ This is your link for group %@! Message reactions are prohibited in this group. No comment provided by engineer. + + Message source remains private. + Message source remains private. + No comment provided by engineer. + Message text Message text @@ -3763,6 +3773,11 @@ This is your link for group %@! More improvements are coming soon! No comment provided by engineer. + + More reliable network connection. + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Most likely this connection is deleted. @@ -3803,6 +3818,11 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + Network management + No comment provided by engineer. + Network settings Network settings @@ -4304,11 +4324,6 @@ Error: %@ Possibly, certificate fingerprint in server address is incorrect server test error - - Post-quantum E2EE - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Preserve the last message draft, with attachments. @@ -6220,6 +6235,11 @@ To connect, please ask your contact to create another connection link and check When available No comment provided by engineer. + + When connecting audio and video calls. + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. When people request to connect, you can accept or reject it. @@ -6235,6 +6255,11 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet Wired ethernet 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 1af077e059..e388c554a9 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -2354,11 +2354,6 @@ This cannot be undone! Error al añadir miembro(s) No comment provided by engineer. - - Error allowing contact PQ encryption - Error al permitir cifrado PQ al contacto - No comment provided by engineer. - Error changing address Error al cambiar servidor @@ -2802,6 +2797,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ This cannot be undone! En respuesta a No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incógnito @@ -3639,6 +3642,10 @@ This is your link for group %@! Las reacciones a los mensajes no están permitidas en este grupo. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Contacto y texto @@ -3754,6 +3761,10 @@ This is your link for group %@! ¡Pronto habrá más mejoras! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Probablemente la conexión ha sido eliminada. @@ -3793,6 +3804,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Configuración de red @@ -4292,11 +4307,6 @@ Error: %@ Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta server test error - - Post-quantum E2EE - E2EE post cuántica - No comment provided by engineer. - Preserve the last message draft, with attachments. Conserva el último borrador del mensaje con los datos adjuntos. @@ -6201,6 +6211,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Si disponibles No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Cuando alguien solicite conectarse podrás aceptar o rechazar la solicitud. @@ -6215,6 +6229,10 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 bb5ee64041..90ce66b8d9 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -2255,10 +2255,6 @@ This cannot be undone! Virhe lisättäessä jäseniä No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address Virhe osoitteenvaihdossa @@ -2688,6 +2684,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3040,6 +3040,10 @@ This cannot be undone! Vastauksena No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3496,6 +3500,10 @@ This is your link for group %@! Viestireaktiot ovat kiellettyjä tässä ryhmässä. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Viestin teksti @@ -3600,6 +3608,10 @@ This is your link for group %@! Lisää parannuksia on tulossa pian! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Todennäköisesti tämä yhteys on poistettu. @@ -3639,6 +3651,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Verkkoasetukset @@ -4118,10 +4134,6 @@ Error: %@ Palvelimen osoitteen varmenteen sormenjälki on mahdollisesti virheellinen server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Säilytä viimeinen viestiluonnos liitteineen. @@ -5960,6 +5972,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja Kun saatavilla No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Kun ihmiset pyytävät yhteyden muodostamista, voit hyväksyä tai hylätä sen. @@ -5974,6 +5990,10 @@ Jos haluat muodostaa yhteyden, pyydä kontaktiasi luomaan toinen yhteyslinkki ja WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 523a890345..2dcc0dfd0c 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -2354,11 +2354,6 @@ Cette opération ne peut être annulée ! Erreur lors de l'ajout de membre·s No comment provided by engineer. - - Error allowing contact PQ encryption - Erreur lors de la négociation du chiffrement PQ - No comment provided by engineer. - Error changing address Erreur de changement d'adresse @@ -2802,6 +2797,10 @@ Cette opération ne peut être annulée ! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Cette opération ne peut être annulée ! En réponse à No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ Voici votre lien pour le groupe %@ ! Les réactions aux messages sont interdites dans ce groupe. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Texte du message @@ -3754,6 +3761,10 @@ Voici votre lien pour le groupe %@ ! Plus d'améliorations à venir ! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Connexion probablement supprimée. @@ -3793,6 +3804,10 @@ Voici votre lien pour le groupe %@ ! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Paramètres réseau @@ -4292,11 +4307,6 @@ Erreur : %@ Il est possible que l'empreinte du certificat dans l'adresse du serveur soit incorrecte server test error - - Post-quantum E2EE - E2EE post-quantique - No comment provided by engineer. - Preserve the last message draft, with attachments. Conserver le brouillon du dernier message, avec les pièces jointes. @@ -6200,6 +6210,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Quand disponible No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Vous pouvez accepter ou refuser les demandes de contacts. @@ -6214,6 +6228,10 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 527bbd2036..1393435dad 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -2331,10 +2331,6 @@ Ezt nem vonható vissza! Hiba a tag(-ok) hozzáadásakor No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address Hiba az azonosító megváltoztatásakor @@ -2771,6 +2767,10 @@ Ezt nem vonható vissza! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3129,6 +3129,10 @@ Ezt nem vonható vissza! Válasz neki No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Inkognitó @@ -3603,6 +3607,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Ebben a csoportban az üzenetreakciók le vannak tiltva. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Üzenet szövege @@ -3708,6 +3716,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Hamarosan további fejlesztések érkeznek! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Valószínűleg ez a kapcsolat törlésre került. @@ -3747,6 +3759,10 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Hálózati beállítások @@ -4241,10 +4257,6 @@ Hiba: %@ Lehetséges, hogy a kiszolgáló címében szereplő tanúsítvány-ujjlenyomat helytelen server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Az utolsó üzenet tervezetének megőrzése a mellékletekkel együtt. @@ -6129,6 +6141,10 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Amikor elérhető No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat. @@ -6143,6 +6159,10 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 e0494c1076..4626e018a2 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -2354,11 +2354,6 @@ Non è reversibile! Errore di aggiunta membro/i No comment provided by engineer. - - Error allowing contact PQ encryption - Errore nel consentire la crittografia PQ al contatto - No comment provided by engineer. - Error changing address Errore nella modifica dell'indirizzo @@ -2802,6 +2797,10 @@ Non è reversibile! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Non è reversibile! In risposta a No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ Questo è il tuo link per il gruppo %@! Le reazioni ai messaggi sono vietate in questo gruppo. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Testo del messaggio @@ -3754,6 +3761,10 @@ Questo è il tuo link per il gruppo %@! Altri miglioramenti sono in arrivo! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Probabilmente questa connessione è stata eliminata. @@ -3793,6 +3804,10 @@ Questo è il tuo link per il gruppo %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Impostazioni di rete @@ -4292,11 +4307,6 @@ Errore: %@ Probabilmente l'impronta del certificato nell'indirizzo del server è sbagliata server test error - - Post-quantum E2EE - E2EE post-quantistica - No comment provided by engineer. - Preserve the last message draft, with attachments. Conserva la bozza dell'ultimo messaggio, con gli allegati. @@ -6200,6 +6210,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Quando disponibili No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Quando le persone chiedono di connettersi, puoi accettare o rifiutare. @@ -6214,6 +6228,10 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 6c3c2b37a3..94f85244f9 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -2274,10 +2274,6 @@ This cannot be undone! メンバー追加にエラー発生 No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address アドレス変更にエラー発生 @@ -2707,6 +2703,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3059,6 +3059,10 @@ This cannot be undone! 返信先 No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito シークレットモード @@ -3514,6 +3518,10 @@ This is your link for group %@! このグループではメッセージへのリアクションは禁止されています。 No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text メッセージ内容 @@ -3618,6 +3626,10 @@ This is your link for group %@! まだまだ改善してまいります! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. おそらく、この接続は削除されています。 @@ -3657,6 +3669,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings ネットワーク設定 @@ -4138,10 +4154,6 @@ Error: %@ サーバアドレスの証明証IDが正しくないかもしれません server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. 添付を含めて、下書きを保存する。 @@ -5972,6 +5984,10 @@ To connect, please ask your contact to create another connection link and check 利用可能時に No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. 接続が要求されたら、それを受け入れるか拒否するかを選択できます。 @@ -5986,6 +6002,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 ceb18f70f2..16b43f3e5d 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -2354,11 +2354,6 @@ Dit kan niet ongedaan gemaakt worden! Fout bij het toevoegen van leden No comment provided by engineer. - - Error allowing contact PQ encryption - Fout bij het toestaan van contact PQ-versleuteling - No comment provided by engineer. - Error changing address Fout bij wijzigen van adres @@ -2802,6 +2797,10 @@ Dit kan niet ongedaan gemaakt worden! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Dit kan niet ongedaan gemaakt worden! In antwoord op No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ Dit is jouw link voor groep %@! Reacties op berichten zijn verboden in deze groep. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Bericht tekst @@ -3754,6 +3761,10 @@ Dit is jouw link voor groep %@! Meer verbeteringen volgen snel! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Hoogstwaarschijnlijk is deze verbinding verwijderd. @@ -3793,6 +3804,10 @@ Dit is jouw link voor groep %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Netwerk instellingen @@ -4292,11 +4307,6 @@ Fout: %@ Mogelijk is de certificaat vingerafdruk in het server adres onjuist server test error - - Post-quantum E2EE - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Bewaar het laatste berichtconcept, met bijlagen. @@ -6200,6 +6210,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Wanneer beschikbaar No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Wanneer mensen vragen om verbinding te maken, kunt u dit accepteren of weigeren. @@ -6214,6 +6228,10 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 a17e654072..a73e253e92 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -2354,11 +2354,6 @@ To nie może być cofnięte! Błąd dodawania członka(ów) No comment provided by engineer. - - Error allowing contact PQ encryption - Błąd pozwalania kontaktowi na szyfrowanie PQ - No comment provided by engineer. - Error changing address Błąd zmiany adresu @@ -2802,6 +2797,10 @@ To nie może być cofnięte! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ To nie może być cofnięte! W odpowiedzi na No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Incognito @@ -3639,6 +3642,10 @@ To jest twój link do grupy %@! Reakcje wiadomości są zabronione w tej grupie. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Tekst wiadomości @@ -3754,6 +3761,10 @@ To jest twój link do grupy %@! Więcej ulepszeń już wkrótce! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Najprawdopodobniej to połączenie jest usunięte. @@ -3793,6 +3804,10 @@ To jest twój link do grupy %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Ustawienia sieci @@ -4292,11 +4307,6 @@ Błąd: %@ Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy server test error - - Post-quantum E2EE - Postkwantowe szyfrowanie E2E - No comment provided by engineer. - Preserve the last message draft, with attachments. Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami. @@ -6200,6 +6210,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Gdy dostępny No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Kiedy ludzie proszą o połączenie, możesz je zaakceptować lub odrzucić. @@ -6214,6 +6228,10 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 4e86a6c249..847e16e9f9 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -2354,11 +2354,6 @@ This cannot be undone! Ошибка при добавлении членов группы No comment provided by engineer. - - Error allowing contact PQ encryption - Ошибка разрешения квантово-устойчивого шифрования - No comment provided by engineer. - Error changing address Ошибка при изменении адреса @@ -2802,6 +2797,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ This cannot be undone! В ответ на No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Инкогнито @@ -3639,6 +3642,10 @@ This is your link for group %@! Реакции на сообщения запрещены в этой группе. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Текст сообщения @@ -3754,6 +3761,10 @@ This is your link for group %@! Дополнительные улучшения скоро! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Скорее всего, соединение удалено. @@ -3793,6 +3804,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Настройки сети @@ -4292,11 +4307,6 @@ Error: %@ Возможно, хэш сертификата в адресе сервера неверный server test error - - Post-quantum E2EE - Квантово-устойчивое E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Сохранить последний черновик, вместе с вложениями. @@ -6200,6 +6210,10 @@ To connect, please ask your contact to create another connection link and check Когда возможно No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Когда Вы получите запрос на соединение, Вы можете принять или отклонить его. @@ -6214,6 +6228,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 94f949736f..71654d1578 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -2241,10 +2241,6 @@ This cannot be undone! เกิดข้อผิดพลาดในการเพิ่มสมาชิก No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address เกิดข้อผิดพลาดในการเปลี่ยนที่อยู่ @@ -2673,6 +2669,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3025,6 +3025,10 @@ This cannot be undone! ในการตอบกลับถึง No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito ไม่ระบุตัวตน @@ -3479,6 +3483,10 @@ This is your link for group %@! ปฏิกิริยาบนข้อความเป็นสิ่งต้องห้ามในกลุ่มนี้ No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text ข้อความ @@ -3583,6 +3591,10 @@ This is your link for group %@! การปรับปรุงเพิ่มเติมกำลังจะมาเร็ว ๆ นี้! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. item status description @@ -3621,6 +3633,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings การตั้งค่าเครือข่าย @@ -4099,10 +4115,6 @@ Error: %@ อาจเป็นไปได้ว่าลายนิ้วมือของ certificate ในที่อยู่เซิร์ฟเวอร์ไม่ถูกต้อง server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. เก็บข้อความที่ร่างไว้ล่าสุดพร้อมไฟล์แนบ @@ -5932,6 +5944,10 @@ To connect, please ask your contact to create another connection link and check เมื่อพร้อมใช้งาน No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. เมื่อมีคนขอเชื่อมต่อ คุณสามารถยอมรับหรือปฏิเสธได้ @@ -5946,6 +5962,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 409090a439..f4187ec1db 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -2354,11 +2354,6 @@ Bu geri alınamaz! Üye(ler) eklenirken hata oluştu No comment provided by engineer. - - Error allowing contact PQ encryption - İletişim PQ şifrelemesine izin verirken hata oluştu - No comment provided by engineer. - Error changing address Adres değiştirilirken hata oluştu @@ -2802,6 +2797,10 @@ Bu geri alınamaz! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ Bu geri alınamaz! Cevap olarak No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Gizli @@ -3639,6 +3642,10 @@ Bu senin grup için bağlantın %@! Mesaj tepkileri bu grupta yasaklandı. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Mesaj yazısı @@ -3754,6 +3761,10 @@ Bu senin grup için bağlantın %@! Daha fazla geliştirmeler yakında geliyor! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Büyük ihtimalle bu bağlantı silinmiş. @@ -3793,6 +3804,10 @@ Bu senin grup için bağlantın %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Ağ ayarları @@ -4292,11 +4307,6 @@ Hata: %@ Muhtemelen, sunucu adresindeki parmakizi sertifikası doğru değil server test error - - Post-quantum E2EE - Kuantum sonrası E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Son mesaj taslağını ekleriyle birlikte koru. @@ -6200,6 +6210,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Mevcut olduğunda No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. İnsanlar bağlantı talebinde bulunduğunda, kabul edebilir veya reddedebilirsiniz. @@ -6214,6 +6228,10 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 3290102725..348b06c16c 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -2354,11 +2354,6 @@ This cannot be undone! Помилка додавання користувача(ів) No comment provided by engineer. - - Error allowing contact PQ encryption - Помилка, що дозволяє шифрування контакту PQ - No comment provided by engineer. - Error changing address Помилка зміни адреси @@ -2802,6 +2797,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3164,6 +3163,10 @@ This cannot be undone! У відповідь на No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito Інкогніто @@ -3639,6 +3642,10 @@ This is your link for group %@! Реакції на повідомлення в цій групі заборонені. No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text Текст повідомлення @@ -3754,6 +3761,10 @@ This is your link for group %@! Незабаром буде ще більше покращень! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. Швидше за все, це з'єднання видалено. @@ -3793,6 +3804,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings Налаштування мережі @@ -4292,11 +4307,6 @@ Error: %@ Можливо, в адресі сервера неправильно вказано відбиток сертифіката server test error - - Post-quantum E2EE - Пост-квантовий E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. Зберегти чернетку останнього повідомлення з вкладеннями. @@ -6200,6 +6210,10 @@ To connect, please ask your contact to create another connection link and check За наявності No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. Коли люди звертаються із запитом на підключення, ви можете прийняти або відхилити його. @@ -6214,6 +6228,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. 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 fe58fb3278..4190c5bc66 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 @@ -2307,10 +2307,6 @@ This cannot be undone! 添加成员错误 No comment provided by engineer. - - Error allowing contact PQ encryption - No comment provided by engineer. - Error changing address 更改地址错误 @@ -2745,6 +2741,10 @@ This cannot be undone! Forward chat item action + + Forward and save messages + No comment provided by engineer. + Forwarded No comment provided by engineer. @@ -3102,6 +3102,10 @@ This cannot be undone! 答复 No comment provided by engineer. + + In-call sounds + No comment provided by engineer. + Incognito 隐身聊天 @@ -3570,6 +3574,10 @@ This is your link for group %@! 该群组禁用了消息回应。 No comment provided by engineer. + + Message source remains private. + No comment provided by engineer. + Message text 消息正文 @@ -3674,6 +3682,10 @@ This is your link for group %@! 更多改进即将推出! No comment provided by engineer. + + More reliable network connection. + No comment provided by engineer. + Most likely this connection is deleted. 此连接很可能已被删除。 @@ -3713,6 +3725,10 @@ This is your link for group %@! Network connection No comment provided by engineer. + + Network management + No comment provided by engineer. + Network settings 网络设置 @@ -4203,10 +4219,6 @@ Error: %@ 服务器地址中的证书指纹可能不正确 server test error - - Post-quantum E2EE - No comment provided by engineer. - Preserve the last message draft, with attachments. 保留最后的消息草稿及其附件。 @@ -6086,6 +6098,10 @@ To connect, please ask your contact to create another connection link and check 当可用时 No comment provided by engineer. + + When connecting audio and video calls. + No comment provided by engineer. + When people request to connect, you can accept or reject it. 当人们请求连接时,您可以接受或拒绝它。 @@ -6100,6 +6116,10 @@ To connect, please ask your contact to create another connection link and check WiFi No comment provided by engineer. + + Will be enabled in direct chats! + No comment provided by engineer. + Wired ethernet No comment provided by engineer. From 2f79bfb075e8487aba614d667f16613570f2ff88 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 00:47:15 +0700 Subject: [PATCH 078/147] android: current audio device will be set in init step (#4071) --- .../chat/simplex/common/views/call/CallAudioDeviceManager.kt | 1 + .../kotlin/chat/simplex/common/views/call/CallView.android.kt | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt index d9562100cf..bada85746f 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallAudioDeviceManager.kt @@ -65,6 +65,7 @@ class PostSCallAudioDeviceManager: CallAudioDeviceManagerInterface { override fun start() { am.mode = AudioManager.MODE_IN_COMMUNICATION + currentDevice.value = am.communicationDevice am.registerAudioDeviceCallback(audioCallback, null) am.addOnCommunicationDeviceChangedListener(Executors.newSingleThreadExecutor(), listener) } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index f9fb81a3ef..f676772714 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -94,8 +94,8 @@ actual fun ActiveCallView() { if (wasConnected.value) { CallSoundsPlayer.vibrate() } - dropAudioManagerOverrides() callAudioDeviceManager.stop() + dropAudioManagerOverrides() if (proximityLock?.isHeld == true) { proximityLock.release() } From e5ac472da3f2ac6f89154e7b34517e820c7f4d33 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 00:51:04 +0700 Subject: [PATCH 079/147] android, desktop: restore message TTL in database settings if confirmation is dismissed (#4072) --- .../kotlin/chat/simplex/common/views/database/DatabaseView.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt index 814ff9969a..40dfbeac73 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/database/DatabaseView.kt @@ -300,6 +300,7 @@ private fun setChatItemTTLAlert( confirmText = generalGetString(MR.strings.delete_messages), onConfirm = { setCiTTL(m, rhId, selectedChatItemTTL, progressIndicator, appFilesCountAndSize) }, onDismiss = { selectedChatItemTTL.value = m.chatItemTTL.value }, + onDismissRequest = { selectedChatItemTTL.value = m.chatItemTTL.value }, destructive = true, ) } From 944a0b3aad53e04f1b196593b59e44e54bb5feca Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 01:14:35 +0700 Subject: [PATCH 080/147] android: longer delay before showing keyboard when creating a group (#4073) --- .../kotlin/chat/simplex/common/views/newchat/AddGroupView.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt index a7bb026f1a..4c63d0a974 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/newchat/AddGroupView.kt @@ -158,7 +158,7 @@ fun AddGroupLayout( ) LaunchedEffect(Unit) { - delay(300) + delay(1000) focusRequester.requestFocus() } } From 642e6d677e28ef1b5cde5d542cf4c29baeffa033 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 01:14:58 +0700 Subject: [PATCH 081/147] android, desktop: updating delivery tab in chat item info (#4074) --- .../simplex/common/views/chat/ChatView.kt | 41 +++++++++++++------ 1 file changed, 29 insertions(+), 12 deletions(-) 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 0c9a973a69..21a9cfa7b4 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 @@ -1,6 +1,5 @@ package chat.simplex.common.views.chat -import androidx.compose.animation.core.Animatable import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.* import androidx.compose.foundation.gestures.* @@ -22,7 +21,6 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.intl.Locale import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.graphics.ImageBitmap -import androidx.compose.ui.input.pointer.* import androidx.compose.ui.text.* import androidx.compose.ui.unit.* import chat.simplex.common.model.* @@ -398,23 +396,42 @@ fun ChatView(chatId: String, chatModel: ChatModel, onComposed: suspend (chatId: } }, showItemDetails = { cInfo, cItem -> - withBGApi { + suspend fun loadChatItemInfo(): ChatItemInfo? { val ciInfo = chatModel.controller.apiGetChatItemInfo(chatRh, cInfo.chatType, cInfo.apiId, cItem.id) if (ciInfo != null) { if (chat.chatInfo is ChatInfo.Group) { setGroupMembers(chatRh, chat.chatInfo.groupInfo, chatModel) } - ModalManager.end.closeModals() - ModalManager.end.showModalCloseable(endButtons = { - ShareButton { - clipboard.shareText(itemInfoShareText(chatModel, cItem, ciInfo, chatModel.controller.appPrefs.developerTools.get())) - } - }) { close -> - ChatItemInfoView(chatRh, cItem, ciInfo, devTools = chatModel.controller.appPrefs.developerTools.get()) - KeyChangeEffect(chatModel.chatId.value) { - close() + } + return ciInfo + } + withBGApi { + var initialCiInfo = loadChatItemInfo() ?: return@withBGApi + ModalManager.end.closeModals() + ModalManager.end.showModalCloseable(endButtons = { + ShareButton { + clipboard.shareText(itemInfoShareText(chatModel, cItem, initialCiInfo, chatModel.controller.appPrefs.developerTools.get())) + } + }) { close -> + var ciInfo by remember(cItem.id) { mutableStateOf(initialCiInfo) } + ChatItemInfoView(chatRh, cItem, ciInfo, devTools = chatModel.controller.appPrefs.developerTools.get()) + LaunchedEffect(cItem.id) { + withContext(Dispatchers.Default) { + for (apiResp in controller.messagesChannel) { + val msg = apiResp.resp + if (apiResp.remoteHostId == chatRh && + msg is CR.ChatItemStatusUpdated && + msg.chatItem.chatItem.id == cItem.id + ) { + ciInfo = loadChatItemInfo() ?: return@withContext + initialCiInfo = ciInfo + } + } } } + KeyChangeEffect(chatModel.chatId.value) { + close() + } } } }, From 2807e53d4c155510d2a69d333b8d17d13833080b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 19:16:12 +0100 Subject: [PATCH 082/147] ui: traslations (#4070) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (Dutch) Currently translated at 99.9% (1728 of 1729 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Dutch) Currently translated at 99.9% (1506 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/ * Translated using Weblate (Arabic) Currently translated at 100.0% (1729 of 1729 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1729 of 1729 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (German) Currently translated at 100.0% (1730 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (German) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Italian) Currently translated at 100.0% (1730 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ * Translated using Weblate (Italian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1730 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Romanian) Currently translated at 5.1% (89 of 1730 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ro/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 99.8% (1736 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Japanese) Currently translated at 80.8% (1218 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/ * Translated using Weblate (Japanese) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ * Translated using Weblate (Lithuanian) Currently translated at 98.5% (1713 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Bulgarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/ * Translated using Weblate (Bulgarian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ * Translated using Weblate (Romanian) Currently translated at 5.3% (93 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ro/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ * Translated using Weblate (Lithuanian) Currently translated at 98.8% (1718 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Romanian) Currently translated at 5.4% (94 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ro/ * import/export localizations --------- Co-authored-by: M1K4 Co-authored-by: jonnysemon Co-authored-by: summoner001 Co-authored-by: mlanp Co-authored-by: Random Co-authored-by: Ghost of Sparta Co-authored-by: Flavian <3zorro.1@gmail.com> Co-authored-by: 大王叫我来巡山 Co-authored-by: yokoba0413 Co-authored-by: Anonimas Co-authored-by: elgratea --- .../bg.xcloc/Localized Contents/bg.xliff | 37 ++++++ .../de.xcloc/Localized Contents/de.xliff | 31 ++++- .../it.xcloc/Localized Contents/it.xliff | 29 +++++ .../ja.xcloc/Localized Contents/ja.xliff | 12 +- .../nl.xcloc/Localized Contents/nl.xliff | 28 +++++ apps/ios/bg.lproj/Localizable.strings | 117 +++++++++++++++++- apps/ios/de.lproj/Localizable.strings | 95 ++++++++++++-- apps/ios/es.lproj/Localizable.strings | 6 - apps/ios/fr.lproj/Localizable.strings | 6 - apps/ios/it.lproj/Localizable.strings | 93 +++++++++++++- apps/ios/ja.lproj/Localizable.strings | 12 +- apps/ios/nl.lproj/Localizable.strings | 90 +++++++++++++- apps/ios/pl.lproj/Localizable.strings | 6 - apps/ios/ru.lproj/Localizable.strings | 6 - apps/ios/tr.lproj/Localizable.strings | 6 - apps/ios/uk.lproj/Localizable.strings | 6 - .../commonMain/resources/MR/ar/strings.xml | 14 +++ .../commonMain/resources/MR/bg/strings.xml | 65 ++++++---- .../commonMain/resources/MR/de/strings.xml | 27 +++- .../commonMain/resources/MR/hu/strings.xml | 94 +++++++------- .../commonMain/resources/MR/it/strings.xml | 5 + .../commonMain/resources/MR/ja/strings.xml | 25 ++++ .../commonMain/resources/MR/lt/strings.xml | 30 ++++- .../commonMain/resources/MR/nl/strings.xml | 5 +- .../commonMain/resources/MR/ro/strings.xml | 21 +++- .../resources/MR/zh-rCN/strings.xml | 13 ++ 26 files changed, 729 insertions(+), 150 deletions(-) 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 d740bd7e1a..f62ef9fa92 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -109,6 +109,7 @@ %@ downloaded + %@ изтеглено No comment provided by engineer. @@ -133,6 +134,7 @@ %@ uploaded + %@ качено No comment provided by engineer. @@ -352,6 +354,7 @@ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection. + **Моля, обърнете внимание**: използването на една и съща база данни на две устройства ще наруши декриптирането на съобщенията от вашите връзки като защита на сигурността. No comment provided by engineer. @@ -371,6 +374,7 @@ **Warning**: the archive will be removed. + **Внимание**: архивът ще бъде изтрит. No comment provided by engineer. @@ -741,6 +745,7 @@ Allow to send SimpleX links. + Разрешаване на изпращане на SimpleX линкове. No comment provided by engineer. @@ -1085,6 +1090,7 @@ Cellular + Мобилна мрежа No comment provided by engineer. @@ -1205,6 +1211,7 @@ Choose _Migrate from another device_ on the new device and scan QR code. + Изберете _Мигриране от друго устройство_ на новото устройство и сканирайте QR кода. No comment provided by engineer. @@ -2083,6 +2090,7 @@ This cannot be undone! Download + Изтегли chat item action @@ -2197,6 +2205,7 @@ This cannot be undone! Enabled for + Активирано за No comment provided by engineer. @@ -2721,6 +2730,7 @@ This cannot be undone! Files and media not allowed + Файлове и медия не са разрешени No comment provided by engineer. @@ -2790,6 +2800,7 @@ This cannot be undone! Forward + Препрати chat item action @@ -2798,10 +2809,12 @@ This cannot be undone! Forwarded + Препратено No comment provided by engineer. Forwarded from + Препратено от No comment provided by engineer. @@ -2916,6 +2929,7 @@ This cannot be undone! Group members can send SimpleX links. + Членовете на групата могат да изпращат SimpleX линкове. No comment provided by engineer. @@ -3668,10 +3682,12 @@ This is your link for group %@! Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery. + Съобщенията, файловете и разговорите са защитени чрез **криптиране от край до край** с перфектна секретност при препращане, правдоподобно опровержение и възстановяване при взлом. No comment provided by engineer. Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery. + Съобщенията, файловете и разговорите са защитени чрез **квантово устойчиво e2e криптиране** с перфектна секретност при препращане, правдоподобно опровержение и възстановяване при взлом. No comment provided by engineer. @@ -3795,6 +3811,7 @@ This is your link for group %@! Network connection + Мрежова връзка No comment provided by engineer. @@ -3913,6 +3930,7 @@ This is your link for group %@! No network connection + Няма мрежова връзка No comment provided by engineer. @@ -4131,6 +4149,7 @@ This is your link for group %@! Other + Други No comment provided by engineer. @@ -4392,6 +4411,7 @@ Error: %@ Prohibit sending SimpleX links. + Забранете изпращането на SimpleX линкове. No comment provided by engineer. @@ -4526,6 +4546,7 @@ Error: %@ Receiving concurrency + Паралелност на получаване No comment provided by engineer. @@ -4545,6 +4566,7 @@ Error: %@ Recipient(s) can't see who this message is from. + Получателят(ите) не могат да видят от кого е това съобщение. No comment provided by engineer. @@ -4849,6 +4871,7 @@ Error: %@ Saved + Запазено No comment provided by engineer. @@ -4858,6 +4881,7 @@ Error: %@ Saved from + Запазено от No comment provided by engineer. @@ -5287,10 +5311,12 @@ Error: %@ SimpleX links are prohibited in this group. + SimpleX линкове са забранени в тази група. No comment provided by engineer. SimpleX links not allowed + SimpleX линковете не са разрешени No comment provided by engineer. @@ -6131,6 +6157,7 @@ To connect, please ask your contact to create another connection link and check Voice messages not allowed + Гласовите съобщения не са разрешени No comment provided by engineer. @@ -6219,6 +6246,7 @@ To connect, please ask your contact to create another connection link and check WiFi + WiFi No comment provided by engineer. @@ -6227,6 +6255,7 @@ To connect, please ask your contact to create another connection link and check Wired ethernet + Кабелен Ethernet No comment provided by engineer. @@ -6266,6 +6295,7 @@ To connect, please ask your contact to create another connection link and check You **must not** use the same database on two devices. + **Не трябва** да използвате една и съща база данни на две устройства. No comment provided by engineer. @@ -6713,6 +6743,7 @@ SimpleX сървърите не могат да видят вашия профи admins + администратори feature role @@ -6727,6 +6758,7 @@ SimpleX сървърите не могат да видят вашия профи all members + всички членове feature role @@ -7061,6 +7093,7 @@ SimpleX сървърите не могат да видят вашия профи forwarded + препратено No comment provided by engineer. @@ -7272,6 +7305,7 @@ SimpleX сървърите не могат да видят вашия профи owners + собственици feature role @@ -7326,10 +7360,12 @@ SimpleX сървърите не могат да видят вашия профи saved + запазено No comment provided by engineer. saved from %@ + запазено от %@ No comment provided by engineer. @@ -7474,6 +7510,7 @@ SimpleX сървърите не могат да видят вашия профи you + вие No comment provided by engineer. 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 ce943d83d6..2f691fbf88 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Das Senden von SimpleX-Links erlauben. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Zellulär No comment provided by engineer. @@ -2088,6 +2090,7 @@ Das kann nicht rückgängig gemacht werden! Download + Herunterladen chat item action @@ -2202,6 +2205,7 @@ Das kann nicht rückgängig gemacht werden! Enabled for + Aktiviert für No comment provided by engineer. @@ -2726,6 +2730,7 @@ Das kann nicht rückgängig gemacht werden! Files and media not allowed + Dateien und Medien sind nicht erlaubt No comment provided by engineer. @@ -2795,6 +2800,7 @@ Das kann nicht rückgängig gemacht werden! Forward + Weiterleiten chat item action @@ -2803,10 +2809,12 @@ Das kann nicht rückgängig gemacht werden! Forwarded + Weitergeleitet No comment provided by engineer. Forwarded from + Weitergeleitet von No comment provided by engineer. @@ -2921,6 +2929,7 @@ Das kann nicht rückgängig gemacht werden! Group members can send SimpleX links. + Gruppenmitglieder können SimpleX-Links senden. No comment provided by engineer. @@ -3802,6 +3811,7 @@ Das ist Ihr Link für die Gruppe %@! Network connection + Netzwerkverbindung No comment provided by engineer. @@ -3920,6 +3930,7 @@ Das ist Ihr Link für die Gruppe %@! No network connection + Keine Netzwerkverbindung No comment provided by engineer. @@ -4138,6 +4149,7 @@ Das ist Ihr Link für die Gruppe %@! Other + Andere No comment provided by engineer. @@ -4399,6 +4411,7 @@ Fehler: %@ Prohibit sending SimpleX links. + Das Senden von SimpleX-Links nicht erlauben. No comment provided by engineer. @@ -4408,7 +4421,7 @@ Fehler: %@ Prohibit sending disappearing messages. - Das Senden von verschwindenden Nachrichten verbieten. + Das Senden von verschwindenden Nachrichten nicht erlauben. No comment provided by engineer. @@ -4533,6 +4546,7 @@ Fehler: %@ Receiving concurrency + Gleichzeitiger Empfang No comment provided by engineer. @@ -4552,6 +4566,7 @@ Fehler: %@ Recipient(s) can't see who this message is from. + Empfänger können nicht sehen, von wem die Nachricht stammt. No comment provided by engineer. @@ -4856,6 +4871,7 @@ Fehler: %@ Saved + Abgespeichert No comment provided by engineer. @@ -4865,6 +4881,7 @@ Fehler: %@ Saved from + Abgespeichert von No comment provided by engineer. @@ -5294,10 +5311,12 @@ Fehler: %@ SimpleX links are prohibited in this group. + In dieser Gruppe sind SimpleX-Links nicht erlaubt. No comment provided by engineer. SimpleX links not allowed + SimpleX-Links sind nicht erlaubt No comment provided by engineer. @@ -6138,6 +6157,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Voice messages not allowed + Sprachnachrichten sind nicht erlaubt No comment provided by engineer. @@ -6226,6 +6246,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s WiFi + WiFi No comment provided by engineer. @@ -6234,6 +6255,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Wired ethernet + Kabelgebundenes Netzwerk No comment provided by engineer. @@ -6721,6 +6743,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. admins + Administratoren feature role @@ -6735,6 +6758,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. all members + Alle Mitglieder feature role @@ -7069,6 +7093,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. forwarded + weitergeleitet No comment provided by engineer. @@ -7280,6 +7305,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. owners + Eigentümer feature role @@ -7334,10 +7360,12 @@ SimpleX-Server können Ihr Profil nicht einsehen. saved + abgespeichert No comment provided by engineer. saved from %@ + abgespeichert von %@ No comment provided by engineer. @@ -7482,6 +7510,7 @@ SimpleX-Server können Ihr Profil nicht einsehen. you + Profil No comment provided by engineer. 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 4626e018a2..ae2888c12b 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Consenti di inviare link di SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Mobile No comment provided by engineer. @@ -2088,6 +2090,7 @@ Non è reversibile! Download + Scarica chat item action @@ -2202,6 +2205,7 @@ Non è reversibile! Enabled for + Attivo per No comment provided by engineer. @@ -2726,6 +2730,7 @@ Non è reversibile! Files and media not allowed + File e multimediali non consentiti No comment provided by engineer. @@ -2795,6 +2800,7 @@ Non è reversibile! Forward + Inoltra chat item action @@ -2803,10 +2809,12 @@ Non è reversibile! Forwarded + Inoltrato No comment provided by engineer. Forwarded from + Inoltrato da No comment provided by engineer. @@ -2921,6 +2929,7 @@ Non è reversibile! Group members can send SimpleX links. + I membri del gruppo possono inviare link di Simplex. No comment provided by engineer. @@ -3802,6 +3811,7 @@ Questo è il tuo link per il gruppo %@! Network connection + Connessione di rete No comment provided by engineer. @@ -3920,6 +3930,7 @@ Questo è il tuo link per il gruppo %@! No network connection + Nessuna connessione di rete No comment provided by engineer. @@ -4138,6 +4149,7 @@ Questo è il tuo link per il gruppo %@! Other + Altro No comment provided by engineer. @@ -4399,6 +4411,7 @@ Errore: %@ Prohibit sending SimpleX links. + Vieta l'invio di link di SimpleX. No comment provided by engineer. @@ -4533,6 +4546,7 @@ Errore: %@ Receiving concurrency + Ricezione concomitanza No comment provided by engineer. @@ -4552,6 +4566,7 @@ Errore: %@ Recipient(s) can't see who this message is from. + I destinatari non possono vedere da chi proviene questo messaggio. No comment provided by engineer. @@ -4856,6 +4871,7 @@ Errore: %@ Saved + Salvato No comment provided by engineer. @@ -4865,6 +4881,7 @@ Errore: %@ Saved from + Salvato da No comment provided by engineer. @@ -5294,10 +5311,12 @@ Errore: %@ SimpleX links are prohibited in this group. + I link di SimpleX sono vietati in questo gruppo. No comment provided by engineer. SimpleX links not allowed + Link di SimpleX non consentiti No comment provided by engineer. @@ -6138,6 +6157,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Voice messages not allowed + Messaggi vocali non consentiti No comment provided by engineer. @@ -6226,6 +6246,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e WiFi + WiFi No comment provided by engineer. @@ -6234,6 +6255,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Wired ethernet + Cavo ethernet No comment provided by engineer. @@ -6721,6 +6743,7 @@ I server di SimpleX non possono vedere il tuo profilo. admins + amministratori feature role @@ -6735,6 +6758,7 @@ I server di SimpleX non possono vedere il tuo profilo. all members + tutti i membri feature role @@ -7069,6 +7093,7 @@ I server di SimpleX non possono vedere il tuo profilo. forwarded + inoltrato No comment provided by engineer. @@ -7280,6 +7305,7 @@ I server di SimpleX non possono vedere il tuo profilo. owners + proprietari feature role @@ -7334,10 +7360,12 @@ I server di SimpleX non possono vedere il tuo profilo. saved + salvato No comment provided by engineer. saved from %@ + salvato da %@ No comment provided by engineer. @@ -7482,6 +7510,7 @@ I server di SimpleX non possono vedere il tuo profilo. you + tu No comment provided by engineer. 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 94f85244f9..b1f9294387 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -728,7 +728,7 @@ Allow to irreversibly delete sent messages. (24 hours) - 送信済みメッセージの永久削除を許可する。 + 送信済みメッセージの永久削除を許可する。(24時間) No comment provided by engineer. @@ -767,7 +767,7 @@ Allow your contacts to irreversibly delete sent messages. (24 hours) - 送信相手が永久メッセージ削除するのを許可する。 + 送信相手が永久メッセージ削除するのを許可する。(24時間) No comment provided by engineer. @@ -987,7 +987,7 @@ Both you and your contact can irreversibly delete sent messages. (24 hours) - あなたと連絡相手が送信済みメッセージを永久削除できます。 + あなたと連絡相手が送信済みメッセージを永久削除できます。(24時間) No comment provided by engineer. @@ -2818,7 +2818,7 @@ This cannot be undone! Group members can irreversibly delete sent messages. (24 hours) - グループのメンバーがメッセージを完全削除することができます。 + グループのメンバーがメッセージを完全削除することができます。(24時間) No comment provided by engineer. @@ -3890,7 +3890,7 @@ This is your link for group %@! Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours) - メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。 + メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。(24時間) No comment provided by engineer. @@ -3915,7 +3915,7 @@ This is your link for group %@! Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours) - メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。 + メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。(24時間) No comment provided by engineer. 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 16b43f3e5d..87ab966e1d 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Sta toe dat SimpleX-links worden verzonden. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Mobiel No comment provided by engineer. @@ -2088,6 +2090,7 @@ Dit kan niet ongedaan gemaakt worden! Download + Downloaden chat item action @@ -2202,6 +2205,7 @@ Dit kan niet ongedaan gemaakt worden! Enabled for + Ingeschakeld voor No comment provided by engineer. @@ -2726,6 +2730,7 @@ Dit kan niet ongedaan gemaakt worden! Files and media not allowed + Bestanden en media niet toegestaan No comment provided by engineer. @@ -2795,6 +2800,7 @@ Dit kan niet ongedaan gemaakt worden! Forward + Doorsturen chat item action @@ -2803,10 +2809,12 @@ Dit kan niet ongedaan gemaakt worden! Forwarded + Doorgestuurd No comment provided by engineer. Forwarded from + Doorgestuurd vanuit No comment provided by engineer. @@ -2921,6 +2929,7 @@ Dit kan niet ongedaan gemaakt worden! Group members can send SimpleX links. + Groepsleden kunnen SimpleX-links verzenden. No comment provided by engineer. @@ -3802,6 +3811,7 @@ Dit is jouw link voor groep %@! Network connection + Netwerkverbinding No comment provided by engineer. @@ -3920,6 +3930,7 @@ Dit is jouw link voor groep %@! No network connection + Geen netwerkverbinding No comment provided by engineer. @@ -4138,6 +4149,7 @@ Dit is jouw link voor groep %@! Other + Ander No comment provided by engineer. @@ -4399,6 +4411,7 @@ Fout: %@ Prohibit sending SimpleX links. + Verbied het verzenden van SimpleX-links No comment provided by engineer. @@ -4552,6 +4565,7 @@ Fout: %@ Recipient(s) can't see who this message is from. + Ontvanger(s) kunnen niet zien van wie dit bericht afkomstig is. No comment provided by engineer. @@ -4856,6 +4870,7 @@ Fout: %@ Saved + Opgeslagen No comment provided by engineer. @@ -4865,6 +4880,7 @@ Fout: %@ Saved from + Opgeslagen van No comment provided by engineer. @@ -5294,10 +5310,12 @@ Fout: %@ SimpleX links are prohibited in this group. + SimpleX-links zijn in deze groep verboden. No comment provided by engineer. SimpleX links not allowed + SimpleX-links zijn niet toegestaan No comment provided by engineer. @@ -6138,6 +6156,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Voice messages not allowed + Spraakberichten niet toegestaan No comment provided by engineer. @@ -6226,6 +6245,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak WiFi + Wifi No comment provided by engineer. @@ -6234,6 +6254,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Wired ethernet + Bekabeld Ethernet No comment provided by engineer. @@ -6721,6 +6742,7 @@ SimpleX servers kunnen uw profiel niet zien. admins + beheerders feature role @@ -6735,6 +6757,7 @@ SimpleX servers kunnen uw profiel niet zien. all members + alle leden feature role @@ -7069,6 +7092,7 @@ SimpleX servers kunnen uw profiel niet zien. forwarded + doorgestuurd No comment provided by engineer. @@ -7280,6 +7304,7 @@ SimpleX servers kunnen uw profiel niet zien. owners + eigenaren feature role @@ -7334,10 +7359,12 @@ SimpleX servers kunnen uw profiel niet zien. saved + opgeslagen No comment provided by engineer. saved from %@ + opgeslagen van %@ No comment provided by engineer. @@ -7482,6 +7509,7 @@ SimpleX servers kunnen uw profiel niet zien. you + jij No comment provided by engineer. diff --git a/apps/ios/bg.lproj/Localizable.strings b/apps/ios/bg.lproj/Localizable.strings index 7423e4b7c7..7f37591861 100644 --- a/apps/ios/bg.lproj/Localizable.strings +++ b/apps/ios/bg.lproj/Localizable.strings @@ -85,6 +85,9 @@ /* No comment provided by engineer. */ "**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Най-поверително**: не използвайте сървъра за известия SimpleX Chat, периодично проверявайте съобщенията във фонов режим (зависи от това колко често използвате приложението)."; +/* No comment provided by engineer. */ +"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Моля, обърнете внимание**: използването на една и съща база данни на две устройства ще наруши декриптирането на съобщенията от вашите връзки като защита на сигурността."; + /* No comment provided by engineer. */ "**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Моля, обърнете внимание**: НЯМА да можете да възстановите или промените паролата, ако я загубите."; @@ -94,6 +97,9 @@ /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Внимание**: Незабавните push известия изискват парола, запазена в Keychain."; +/* No comment provided by engineer. */ +"**Warning**: the archive will be removed." = "**Внимание**: архивът ще бъде изтрит."; + /* No comment provided by engineer. */ "*bold*" = "\\*удебелен*"; @@ -136,6 +142,9 @@ /* No comment provided by engineer. */ "%@ connected" = "%@ свързан"; +/* No comment provided by engineer. */ +"%@ downloaded" = "%@ изтеглено"; + /* notification title */ "%@ is connected!" = "%@ е свързан!"; @@ -148,6 +157,9 @@ /* No comment provided by engineer. */ "%@ servers" = "%@ сървъри"; +/* No comment provided by engineer. */ +"%@ uploaded" = "%@ качено"; + /* notification title */ "%@ wants to connect!" = "%@ иска да се свърже!"; @@ -377,6 +389,9 @@ /* member role */ "admin" = "админ"; +/* feature role */ +"admins" = "администратори"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Администраторите могат да блокират член за всички."; @@ -404,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Всички членове на групата ще останат свързани."; +/* feature role */ +"all members" = "всички членове"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Всички съобщения ще бъдат изтрити - това не може да бъде отменено!"; @@ -452,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Позволи изпращане на файлове и медия."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Разрешаване на изпращане на SimpleX линкове."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Позволи изпращане на гласови съобщения."; @@ -695,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Файлът не може да бъде получен"; +/* No comment provided by engineer. */ +"Cellular" = "Мобилна мрежа"; + /* No comment provided by engineer. */ "Change" = "Промени"; @@ -780,6 +804,9 @@ /* No comment provided by engineer. */ "Chinese and Spanish interface" = "Китайски и Испански интерфейс"; +/* No comment provided by engineer. */ +"Choose _Migrate from another device_ on the new device and scan QR code." = "Изберете _Мигриране от друго устройство_ на новото устройство и сканирайте QR кода."; + /* No comment provided by engineer. */ "Choose file" = "Избери файл"; @@ -1386,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Понижи версията и отвори чата"; +/* chat item action */ +"Download" = "Изтегли"; + /* No comment provided by engineer. */ "Download failed" = "Неуспешно изтегляне"; @@ -1461,6 +1491,9 @@ /* enabled status */ "enabled" = "активирано"; +/* No comment provided by engineer. */ +"Enabled for" = "Активирано за"; + /* enabled status */ "enabled for contact" = "активирано за контакт"; @@ -1590,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Грешка при добавяне на член(ове)"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Грешка при разрешаване на PQ криптиране за контакт"; - /* No comment provided by engineer. */ "Error changing address" = "Грешка при промяна на адреса"; @@ -1818,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Файловете и медията са забранени в тази група."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Файлове и медия не са разрешени"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Файловете и медията са забранени!"; @@ -1857,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "За конзолата"; +/* chat item action */ +"Forward" = "Препрати"; + +/* No comment provided by engineer. */ +"forwarded" = "препратено"; + +/* No comment provided by engineer. */ +"Forwarded" = "Препратено"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Препратено от"; + /* No comment provided by engineer. */ "Found desktop" = "Намерено настолно устройство"; @@ -1935,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Членовете на групата могат да изпращат файлове и медия."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Членовете на групата могат да изпращат SimpleX линкове."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Членовете на групата могат да изпращат гласови съобщения."; @@ -2436,6 +2484,12 @@ /* No comment provided by engineer. */ "Messages from %@ will be shown!" = "Съобщенията от %@ ще бъдат показани!"; +/* No comment provided by engineer. */ +"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Съобщенията, файловете и разговорите са защитени чрез **криптиране от край до край** с перфектна секретност при препращане, правдоподобно опровержение и възстановяване при взлом."; + +/* No comment provided by engineer. */ +"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Съобщенията, файловете и разговорите са защитени чрез **квантово устойчиво e2e криптиране** с перфектна секретност при препращане, правдоподобно опровержение и възстановяване при взлом."; + /* No comment provided by engineer. */ "Migrate device" = "Мигрирай устройството"; @@ -2520,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Мрежа и сървъри"; +/* No comment provided by engineer. */ +"Network connection" = "Мрежова връзка"; + /* No comment provided by engineer. */ "Network settings" = "Мрежови настройки"; @@ -2598,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Няма история"; +/* No comment provided by engineer. */ +"No network connection" = "Няма мрежова връзка"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Няма разрешение за запис на гласово съобщение"; @@ -2744,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Или покажи този код"; +/* No comment provided by engineer. */ +"Other" = "Други"; + /* member role */ "owner" = "собственик"; +/* feature role */ +"owners" = "собственици"; + /* No comment provided by engineer. */ "Passcode" = "Код за достъп"; @@ -2849,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Въжможно е пръстовият отпечатък на сертификата в адреса на сървъра да е неправилен"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Постквантово E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Запазете последната чернова на съобщението с прикачени файлове."; @@ -2915,6 +2978,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Забрани изпращането на файлове и медия."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Забранете изпращането на SimpleX линкове."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Забрани изпращането на гласови съобщения."; @@ -2993,6 +3059,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Получаващият адрес ще бъде променен към друг сървър. Промяната на адреса ще завърши, след като подателят е онлайн."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Паралелност на получаване"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Получаващият се файл ще бъде спрян."; @@ -3002,6 +3071,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Скорошна история и подобрен [bot за директория за групи](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPd jdLW3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Получателят(ите) не могат да видят от кого е това съобщение."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Получателите виждат актуализации, докато ги въвеждате."; @@ -3197,6 +3269,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Запази съобщението при посрещане?"; +/* No comment provided by engineer. */ +"saved" = "запазено"; + +/* No comment provided by engineer. */ +"Saved" = "Запазено"; + +/* No comment provided by engineer. */ +"Saved from" = "Запазено от"; + +/* No comment provided by engineer. */ +"saved from %@" = "запазено от %@"; + /* message info title */ "Saved message" = "Запазено съобщение"; @@ -3464,6 +3548,12 @@ /* chat feature */ "SimpleX links" = "SimpleX линкове"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "SimpleX линкове са забранени в тази група."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX линковете не са разрешени"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX заключване"; @@ -4028,6 +4118,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Гласовите съобщения са забранени в тази група."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Гласовите съобщения не са разрешени"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Гласовите съобщения са забранени!"; @@ -4085,6 +4178,12 @@ /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Когато споделяте инкогнито профил с някого, този профил ще се използва за групите, в които той ви кани."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Кабелен Ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "С криптирани файлове и медия."; @@ -4106,9 +4205,15 @@ /* pref value */ "yes" = "да"; +/* No comment provided by engineer. */ +"you" = "вие"; + /* No comment provided by engineer. */ "You" = "Вие"; +/* No comment provided by engineer. */ +"You **must not** use the same database on two devices." = "**Не трябва** да използвате една и съща база данни на две устройства."; + /* No comment provided by engineer. */ "You accepted connection" = "Вие приехте връзката"; diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 26af49eeed..18a56444f0 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "Admin"; +/* feature role */ +"admins" = "Administratoren"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Administratoren können ein Gruppenmitglied für Alle blockieren."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Alle Gruppenmitglieder bleiben verbunden."; +/* feature role */ +"all members" = "Alle Mitglieder"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Es werden alle Nachrichten gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Das Senden von Dateien und Medien erlauben."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Das Senden von SimpleX-Links erlauben."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Das Senden von Sprachnachrichten erlauben."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Datei kann nicht empfangen werden"; +/* No comment provided by engineer. */ +"Cellular" = "Zellulär"; + /* No comment provided by engineer. */ "Change" = "Ändern"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Datenbank herabstufen und den Chat öffnen"; +/* chat item action */ +"Download" = "Herunterladen"; + /* No comment provided by engineer. */ "Download failed" = "Herunterladen fehlgeschlagen"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "Aktiviert"; +/* No comment provided by engineer. */ +"Enabled for" = "Aktiviert für"; + /* enabled status */ "enabled for contact" = "Für Kontakt aktiviert"; @@ -1605,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Fehler beim Hinzufügen von Mitgliedern"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Fehler beim Zulassen der Kontakt-PQ-Verschlüsselung"; - /* No comment provided by engineer. */ "Error changing address" = "Fehler beim Wechseln der Empfängeradresse"; @@ -1833,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "In dieser Gruppe sind Dateien und Medien nicht erlaubt."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Dateien und Medien sind nicht erlaubt"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Dateien und Medien sind nicht erlaubt!"; @@ -1872,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "Für Konsole"; +/* chat item action */ +"Forward" = "Weiterleiten"; + +/* No comment provided by engineer. */ +"forwarded" = "weitergeleitet"; + +/* No comment provided by engineer. */ +"Forwarded" = "Weitergeleitet"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Weitergeleitet von"; + /* No comment provided by engineer. */ "Found desktop" = "Gefundener Desktop"; @@ -1950,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Gruppenmitglieder können Dateien und Medien senden."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Gruppenmitglieder können SimpleX-Links senden."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Gruppenmitglieder können Sprachnachrichten versenden."; @@ -2541,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Netzwerk & Server"; +/* No comment provided by engineer. */ +"Network connection" = "Netzwerkverbindung"; + /* No comment provided by engineer. */ "Network settings" = "Netzwerkeinstellungen"; @@ -2619,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Kein Nachrichtenverlauf"; +/* No comment provided by engineer. */ +"No network connection" = "Keine Netzwerkverbindung"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Keine Berechtigung für das Aufnehmen von Sprachnachrichten"; @@ -2765,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Oder diesen QR-Code anzeigen"; +/* No comment provided by engineer. */ +"Other" = "Andere"; + /* member role */ "owner" = "Eigentümer"; +/* feature role */ +"owners" = "Eigentümer"; + /* No comment provided by engineer. */ "Passcode" = "Zugangscode"; @@ -2870,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Der Fingerabdruck des Zertifikats in der Serveradresse ist wahrscheinlich ungültig"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Post-Quantum E2E-Verschlüsselung"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Den letzten Nachrichtenentwurf, auch mit seinen Anhängen, aufbewahren."; @@ -2931,11 +2973,14 @@ "Prohibit sending direct messages to members." = "Das Senden von Direktnachrichten an Gruppenmitglieder nicht erlauben."; /* No comment provided by engineer. */ -"Prohibit sending disappearing messages." = "Das Senden von verschwindenden Nachrichten verbieten."; +"Prohibit sending disappearing messages." = "Das Senden von verschwindenden Nachrichten nicht erlauben."; /* No comment provided by engineer. */ "Prohibit sending files and media." = "Das Senden von Dateien und Medien nicht erlauben."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Das Senden von SimpleX-Links nicht erlauben."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Das Senden von Sprachnachrichten nicht erlauben."; @@ -3014,6 +3059,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Die Empfängeradresse wird auf einen anderen Server geändert. Der Adresswechsel wird abgeschlossen, wenn der Absender wieder online ist."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Gleichzeitiger Empfang"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Der Empfang der Datei wird beendet."; @@ -3023,6 +3071,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Aktueller Nachrichtenverlauf und verbesserter [Gruppenverzeichnis-Bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Empfänger können nicht sehen, von wem die Nachricht stammt."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Die Empfänger sehen Nachrichtenaktualisierungen, während Sie sie eingeben."; @@ -3218,6 +3269,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Begrüßungsmeldung speichern?"; +/* No comment provided by engineer. */ +"saved" = "abgespeichert"; + +/* No comment provided by engineer. */ +"Saved" = "Abgespeichert"; + +/* No comment provided by engineer. */ +"Saved from" = "Abgespeichert von"; + +/* No comment provided by engineer. */ +"saved from %@" = "abgespeichert von %@"; + /* message info title */ "Saved message" = "Gespeicherte Nachricht"; @@ -3485,6 +3548,12 @@ /* chat feature */ "SimpleX links" = "SimpleX-Links"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "In dieser Gruppe sind SimpleX-Links nicht erlaubt."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX-Links sind nicht erlaubt"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX-Sperre"; @@ -4049,6 +4118,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "In dieser Gruppe sind Sprachnachrichten nicht erlaubt."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Sprachnachrichten sind nicht erlaubt"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Sprachnachrichten sind nicht erlaubt!"; @@ -4106,6 +4178,12 @@ /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Wenn Sie ein Inkognito-Profil mit Jemandem teilen, wird dieses Profil auch für die Gruppen verwendet, für die Sie von diesem Kontakt eingeladen werden."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Kabelgebundenes Netzwerk"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Mit verschlüsselten Dateien und Medien."; @@ -4127,6 +4205,9 @@ /* pref value */ "yes" = "Ja"; +/* No comment provided by engineer. */ +"you" = "Profil"; + /* No comment provided by engineer. */ "You" = "Profil"; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 41f15732d0..8348982190 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Error al añadir miembro(s)"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Error al permitir cifrado PQ al contacto"; - /* No comment provided by engineer. */ "Error changing address" = "Error al cambiar servidor"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Posiblemente la huella digital del certificado en la dirección del servidor es incorrecta"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "E2EE post cuántica"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Conserva el último borrador del mensaje con los datos adjuntos."; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index a39cd14fa7..264a0b1299 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Erreur lors de l'ajout de membre·s"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Erreur lors de la négociation du chiffrement PQ"; - /* No comment provided by engineer. */ "Error changing address" = "Erreur de changement d'adresse"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Il est possible que l'empreinte du certificat dans l'adresse du serveur soit incorrecte"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "E2EE post-quantique"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Conserver le brouillon du dernier message, avec les pièces jointes."; diff --git a/apps/ios/it.lproj/Localizable.strings b/apps/ios/it.lproj/Localizable.strings index 1586a73d7f..6fd4808d45 100644 --- a/apps/ios/it.lproj/Localizable.strings +++ b/apps/ios/it.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "amministratore"; +/* feature role */ +"admins" = "amministratori"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Gli amministratori possono bloccare un membro per tutti."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Tutti i membri del gruppo resteranno connessi."; +/* feature role */ +"all members" = "tutti i membri"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Tutti i messaggi verranno eliminati, non è reversibile!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Consenti l'invio di file e contenuti multimediali."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Consenti di inviare link di SimpleX."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Permetti l'invio di messaggi vocali."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Impossibile ricevere il file"; +/* No comment provided by engineer. */ +"Cellular" = "Mobile"; + /* No comment provided by engineer. */ "Change" = "Cambia"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Esegui downgrade e apri chat"; +/* chat item action */ +"Download" = "Scarica"; + /* No comment provided by engineer. */ "Download failed" = "Scaricamento fallito"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "attivato"; +/* No comment provided by engineer. */ +"Enabled for" = "Attivo per"; + /* enabled status */ "enabled for contact" = "attivato per il contatto"; @@ -1605,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Errore di aggiunta membro/i"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Errore nel consentire la crittografia PQ al contatto"; - /* No comment provided by engineer. */ "Error changing address" = "Errore nella modifica dell'indirizzo"; @@ -1833,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "File e contenuti multimediali sono vietati in questo gruppo."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "File e multimediali non consentiti"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "File e contenuti multimediali vietati!"; @@ -1872,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "Per console"; +/* chat item action */ +"Forward" = "Inoltra"; + +/* No comment provided by engineer. */ +"forwarded" = "inoltrato"; + +/* No comment provided by engineer. */ +"Forwarded" = "Inoltrato"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Inoltrato da"; + /* No comment provided by engineer. */ "Found desktop" = "Desktop trovato"; @@ -1950,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "I membri del gruppo possono inviare file e contenuti multimediali."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "I membri del gruppo possono inviare link di Simplex."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "I membri del gruppo possono inviare messaggi vocali."; @@ -2541,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Rete e server"; +/* No comment provided by engineer. */ +"Network connection" = "Connessione di rete"; + /* No comment provided by engineer. */ "Network settings" = "Impostazioni di rete"; @@ -2619,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Nessuna cronologia"; +/* No comment provided by engineer. */ +"No network connection" = "Nessuna connessione di rete"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Nessuna autorizzazione per registrare messaggi vocali"; @@ -2765,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "O mostra questo codice"; +/* No comment provided by engineer. */ +"Other" = "Altro"; + /* member role */ "owner" = "proprietario"; +/* feature role */ +"owners" = "proprietari"; + /* No comment provided by engineer. */ "Passcode" = "Codice di accesso"; @@ -2870,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Probabilmente l'impronta del certificato nell'indirizzo del server è sbagliata"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "E2EE post-quantistica"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Conserva la bozza dell'ultimo messaggio, con gli allegati."; @@ -2936,6 +2978,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Proibisci l'invio di file e contenuti multimediali."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Vieta l'invio di link di SimpleX."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Proibisci l'invio di messaggi vocali."; @@ -3014,6 +3059,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "L'indirizzo di ricezione verrà cambiato in un server diverso. La modifica dell'indirizzo verrà completata dopo che il mittente sarà in linea."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Ricezione concomitanza"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "La ricezione del file verrà interrotta."; @@ -3023,6 +3071,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Cronologia recente e [bot della directory](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) migliorato."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "I destinatari non possono vedere da chi proviene questo messaggio."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "I destinatari vedono gli aggiornamenti mentre li digiti."; @@ -3218,6 +3269,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Salvare il messaggio di benvenuto?"; +/* No comment provided by engineer. */ +"saved" = "salvato"; + +/* No comment provided by engineer. */ +"Saved" = "Salvato"; + +/* No comment provided by engineer. */ +"Saved from" = "Salvato da"; + +/* No comment provided by engineer. */ +"saved from %@" = "salvato da %@"; + /* message info title */ "Saved message" = "Messaggio salvato"; @@ -3485,6 +3548,12 @@ /* chat feature */ "SimpleX links" = "Link di SimpleX"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "I link di SimpleX sono vietati in questo gruppo."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "Link di SimpleX non consentiti"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX Lock"; @@ -4049,6 +4118,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "I messaggi vocali sono vietati in questo gruppo."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Messaggi vocali non consentiti"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Messaggi vocali vietati!"; @@ -4106,6 +4178,12 @@ /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Quando condividi un profilo in incognito con qualcuno, questo profilo verrà utilizzato per i gruppi a cui ti invitano."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Cavo ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Con file e multimediali criptati."; @@ -4127,6 +4205,9 @@ /* pref value */ "yes" = "sì"; +/* No comment provided by engineer. */ +"you" = "tu"; + /* No comment provided by engineer. */ "You" = "Tu"; diff --git a/apps/ios/ja.lproj/Localizable.strings b/apps/ios/ja.lproj/Localizable.strings index 6e560194c7..cdcd9a598b 100644 --- a/apps/ios/ja.lproj/Localizable.strings +++ b/apps/ios/ja.lproj/Localizable.strings @@ -435,7 +435,7 @@ "Allow sending disappearing messages." = "消えるメッセージの送信を許可する。"; /* No comment provided by engineer. */ -"Allow to irreversibly delete sent messages. (24 hours)" = "送信済みメッセージの永久削除を許可する。"; +"Allow to irreversibly delete sent messages. (24 hours)" = "送信済みメッセージの永久削除を許可する。(24時間)"; /* No comment provided by engineer. */ "Allow to send files and media." = "ファイルやメディアの送信を許可する。"; @@ -456,7 +456,7 @@ "Allow your contacts to call you." = "連絡先からの通話を許可する。"; /* No comment provided by engineer. */ -"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "送信相手が永久メッセージ削除するのを許可する。"; +"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "送信相手が永久メッセージ削除するのを許可する。(24時間)"; /* No comment provided by engineer. */ "Allow your contacts to send disappearing messages." = "送信相手が消えるメッセージを送るのを許可する。"; @@ -567,7 +567,7 @@ "Both you and your contact can add message reactions." = "自分も相手もメッセージへのリアクションを追加できます。"; /* No comment provided by engineer. */ -"Both you and your contact can irreversibly delete sent messages. (24 hours)" = "あなたと連絡相手が送信済みメッセージを永久削除できます。"; +"Both you and your contact can irreversibly delete sent messages. (24 hours)" = "あなたと連絡相手が送信済みメッセージを永久削除できます。(24時間)"; /* No comment provided by engineer. */ "Both you and your contact can make calls." = "あなたからも連絡先からも通話ができます。"; @@ -1639,7 +1639,7 @@ "Group members can add message reactions." = "グループメンバーはメッセージへのリアクションを追加できます。"; /* No comment provided by engineer. */ -"Group members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。"; +"Group members can irreversibly delete sent messages. (24 hours)" = "グループのメンバーがメッセージを完全削除することができます。(24時間)"; /* No comment provided by engineer. */ "Group members can send direct messages." = "グループのメンバーがダイレクトメッセージを送信できます。"; @@ -2280,7 +2280,7 @@ "Only you can add message reactions." = "メッセージへのリアクションを追加できるのは、あなただけです。"; /* No comment provided by engineer. */ -"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。"; +"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "メッセージの完全削除はあなたにしかできません (あなたの連絡先は削除対象とすることができます)。(24時間)"; /* No comment provided by engineer. */ "Only you can make calls." = "自分からのみ通話ができます。"; @@ -2295,7 +2295,7 @@ "Only your contact can add message reactions." = "メッセージへのリアクションを追加できるのは連絡先だけです。"; /* No comment provided by engineer. */ -"Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)" = "メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。"; +"Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)" = "メッセージを完全削除できるのはあなたの連絡相手だけです (あなたは削除対象とすることができます)。(24時間)"; /* No comment provided by engineer. */ "Only your contact can make calls." = "連絡先からのみ通話ができます。"; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index 1b3e8bfd54..c3417d5145 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "Beheerder"; +/* feature role */ +"admins" = "beheerders"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Beheerders kunnen een lid voor iedereen blokkeren."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Alle groepsleden blijven verbonden."; +/* feature role */ +"all members" = "alle leden"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Alle berichten worden verwijderd. Dit kan niet ongedaan worden gemaakt!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Sta toe om bestanden en media te verzenden."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Sta toe dat SimpleX-links worden verzonden."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Sta toe om spraak berichten te verzenden."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Kan bestand niet ontvangen"; +/* No comment provided by engineer. */ +"Cellular" = "Mobiel"; + /* No comment provided by engineer. */ "Change" = "Veranderen"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Downgraden en chat openen"; +/* chat item action */ +"Download" = "Downloaden"; + /* No comment provided by engineer. */ "Download failed" = "Download mislukt"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "ingeschakeld"; +/* No comment provided by engineer. */ +"Enabled for" = "Ingeschakeld voor"; + /* enabled status */ "enabled for contact" = "ingeschakeld voor contact"; @@ -1605,9 +1623,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Fout bij het toevoegen van leden"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Fout bij het toestaan van contact PQ-versleuteling"; - /* No comment provided by engineer. */ "Error changing address" = "Fout bij wijzigen van adres"; @@ -1833,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Bestanden en media zijn verboden in deze groep."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Bestanden en media niet toegestaan"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Bestanden en media verboden!"; @@ -1872,6 +1890,18 @@ /* No comment provided by engineer. */ "For console" = "Voor console"; +/* chat item action */ +"Forward" = "Doorsturen"; + +/* No comment provided by engineer. */ +"forwarded" = "doorgestuurd"; + +/* No comment provided by engineer. */ +"Forwarded" = "Doorgestuurd"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Doorgestuurd vanuit"; + /* No comment provided by engineer. */ "Found desktop" = "Desktop gevonden"; @@ -1950,6 +1980,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Groepsleden kunnen bestanden en media verzenden."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Groepsleden kunnen SimpleX-links verzenden."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Groepsleden kunnen spraak berichten verzenden."; @@ -2541,6 +2574,9 @@ /* No comment provided by engineer. */ "Network & servers" = "Netwerk & servers"; +/* No comment provided by engineer. */ +"Network connection" = "Netwerkverbinding"; + /* No comment provided by engineer. */ "Network settings" = "Netwerk instellingen"; @@ -2619,6 +2655,9 @@ /* No comment provided by engineer. */ "No history" = "Geen geschiedenis"; +/* No comment provided by engineer. */ +"No network connection" = "Geen netwerkverbinding"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Geen toestemming om spraakbericht op te nemen"; @@ -2765,9 +2804,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Of laat deze code zien"; +/* No comment provided by engineer. */ +"Other" = "Ander"; + /* member role */ "owner" = "Eigenaar"; +/* feature role */ +"owners" = "eigenaren"; + /* No comment provided by engineer. */ "Passcode" = "Toegangscode"; @@ -2870,9 +2915,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Mogelijk is de certificaat vingerafdruk in het server adres onjuist"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Post-quantum E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Bewaar het laatste berichtconcept, met bijlagen."; @@ -2936,6 +2978,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Verbied het verzenden van bestanden en media."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Verbied het verzenden van SimpleX-links"; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Verbieden het verzenden van spraak berichten."; @@ -3023,6 +3068,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Recente geschiedenis en verbeterde [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Ontvanger(s) kunnen niet zien van wie dit bericht afkomstig is."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Ontvangers zien updates terwijl u ze typt."; @@ -3218,6 +3266,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Welkomst bericht opslaan?"; +/* No comment provided by engineer. */ +"saved" = "opgeslagen"; + +/* No comment provided by engineer. */ +"Saved" = "Opgeslagen"; + +/* No comment provided by engineer. */ +"Saved from" = "Opgeslagen van"; + +/* No comment provided by engineer. */ +"saved from %@" = "opgeslagen van %@"; + /* message info title */ "Saved message" = "Opgeslagen bericht"; @@ -3485,6 +3545,12 @@ /* chat feature */ "SimpleX links" = "SimpleX links"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "SimpleX-links zijn in deze groep verboden."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX-links zijn niet toegestaan"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX Vergrendelen"; @@ -4049,6 +4115,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Spraak berichten zijn verboden in deze groep."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Spraakberichten niet toegestaan"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Spraak berichten verboden!"; @@ -4106,6 +4175,12 @@ /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Wanneer je een incognito profiel met iemand deelt, wordt dit profiel gebruikt voor de groepen waarvoor ze je uitnodigen."; +/* No comment provided by engineer. */ +"WiFi" = "Wifi"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Bekabeld Ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "‐Met versleutelde bestanden en media."; @@ -4127,6 +4202,9 @@ /* pref value */ "yes" = "Ja"; +/* No comment provided by engineer. */ +"you" = "jij"; + /* No comment provided by engineer. */ "You" = "Jij"; diff --git a/apps/ios/pl.lproj/Localizable.strings b/apps/ios/pl.lproj/Localizable.strings index 01ab7f962c..6f5f530973 100644 --- a/apps/ios/pl.lproj/Localizable.strings +++ b/apps/ios/pl.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Błąd dodawania członka(ów)"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Błąd pozwalania kontaktowi na szyfrowanie PQ"; - /* No comment provided by engineer. */ "Error changing address" = "Błąd zmiany adresu"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Możliwe, że odcisk palca certyfikatu w adresie serwera jest nieprawidłowy"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Postkwantowe szyfrowanie E2E"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Zachowaj ostatnią wersję roboczą wiadomości wraz z załącznikami."; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index 9617a82728..ed6e03508e 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Ошибка при добавлении членов группы"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Ошибка разрешения квантово-устойчивого шифрования"; - /* No comment provided by engineer. */ "Error changing address" = "Ошибка при изменении адреса"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Возможно, хэш сертификата в адресе сервера неверный"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Квантово-устойчивое E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Сохранить последний черновик, вместе с вложениями."; diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index ed8e496a21..7cec6e092f 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Üye(ler) eklenirken hata oluştu"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "İletişim PQ şifrelemesine izin verirken hata oluştu"; - /* No comment provided by engineer. */ "Error changing address" = "Adres değiştirilirken hata oluştu"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Muhtemelen, sunucu adresindeki parmakizi sertifikası doğru değil"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Kuantum sonrası E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Son mesaj taslağını ekleriyle birlikte koru."; diff --git a/apps/ios/uk.lproj/Localizable.strings b/apps/ios/uk.lproj/Localizable.strings index f857908267..d52efd2b65 100644 --- a/apps/ios/uk.lproj/Localizable.strings +++ b/apps/ios/uk.lproj/Localizable.strings @@ -1605,9 +1605,6 @@ /* No comment provided by engineer. */ "Error adding member(s)" = "Помилка додавання користувача(ів)"; -/* No comment provided by engineer. */ -"Error allowing contact PQ encryption" = "Помилка, що дозволяє шифрування контакту PQ"; - /* No comment provided by engineer. */ "Error changing address" = "Помилка зміни адреси"; @@ -2870,9 +2867,6 @@ /* server test error */ "Possibly, certificate fingerprint in server address is incorrect" = "Можливо, в адресі сервера неправильно вказано відбиток сертифіката"; -/* No comment provided by engineer. */ -"Post-quantum E2EE" = "Пост-квантовий E2EE"; - /* No comment provided by engineer. */ "Preserve the last message draft, with attachments." = "Зберегти чернетку останнього повідомлення з вкладеннями."; 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 48fa354780..1970d28cbb 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ar/strings.xml @@ -1741,4 +1741,18 @@ مفعّل لـ المالكون الملفات والوسائط غير مسموح بها + محوّلة + حوّل الرسالة… + تلقي التزامن + لا يستطيع المُستلم/ون معرفة مَن أرسل هذه الرسالة. + حُفظت + حُفظت مِن + حُفظت مِن %s + السماعة + سماعة الأذن + سماعات الرأس + محوّلة مِن + حُفظت + نزّل + حوّل \ No newline at end of file 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 79b74ee920..cf3972e7b8 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/bg/strings.xml @@ -1712,34 +1712,55 @@ Проверете вашата интернет връзка и опитайте отново Внимание: архивът ще бъде изтрит.]]> Активиране в личните чатове (БЕТА)! - Разрешаване на SimpleX изпращане на връзки /линкове/. - 1. препратено -\n2. предадено - Грешка при показване на уведомление -\nГрешка при показване на съобщение - Отворени настройки - "Намерете това разрешение /права/ в настройките на Android и го задайте ръчно." - Друг -\nДруги + Разрешаване на изпращане на SimpleX линкове. + препратено + Грешка при показване на известие, свържете се с разработчиците. + Отвори настройки + Намерете това разрешение в настройките на Android и го задайте ръчно. + Други Мобилна мрежа Няма мрежова връзка - Безжична мрежа - Кабелна мрежа /кабелна технология/ - SimpleX връзките не са разрешени + WiFi + Кабелен Ethernet + SimpleX линковете не са разрешени Гласовите съобщения не са разрешени - Предоставян в настройките + Предоставяне в настройките Мрежова връзка - SimpleX връзки -\nСимпълХикс връзки - Забранено изпращането на SimpleX връзки - Членовете на групата могат да изпращат връзки към SimpleX. - SimpleX връзки са забранени в тази група. - Активиране на -\nАктивиране за - Собственици + SimpleX линкове + Забранете изпращането на SimpleX линкове + Членовете на групата могат да изпращат SimpleX линкове. + SimpleX линкове са забранени в тази група. + Активирано за + собственици Камера Камера и микрофон - Предоставени разрешения + Предоставяне на разрешения Дадени разрешение(я) за извършване на повикване Микрофон + Bluetooth + Слушалки жични + Паралелност на получаване + Препращане и запазване на съобщения + Звуци по време на разговор + запазено + запазено от %s + Запазено + Запазено от + Получателят(ите) не могат да видят от кого е това съобщение. + Изтегли + Препращане на съобщение… + Файлове и медия не са разрешени + всички членове + администратори + Препрати + Слушалки безжични + Препратено + Препратено от + Високоговорител + Ще бъде активирано в личните чатове! + Източникът на съобщението остава скрит. + Управление на мрежата + При свързване на аудио и видео разговори. + По-надеждна мрежова връзка. + Литовски потребителски интерфейс \ No newline at end of file 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 60d081bed6..94dc18a9a1 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -936,7 +936,7 @@ Benötigt mehr Leistung Ihrer Batterie! Der Hintergrundservice läuft permanent ab. Benachrichtigungen werden Ihnen angezeigt, sobald Sie neue Nachrichten erhalten haben.]]> Gruppenlink erstellen Erlauben Sie Ihren Kontakten das Senden von verschwindenden Nachrichten. - Das Senden von verschwindenden Nachrichten verbieten. + Das Senden von verschwindenden Nachrichten nicht erlauben. In dieser Gruppe sind verschwindende Nachrichten nicht erlaubt. Gruppenmitglieder können verschwindende Nachrichten senden. Fügen Sie Server durch Scannen der QR-Codes hinzu. @@ -956,7 +956,7 @@ %dh Gruppen-Links Neu in %s - Das Senden von verschwindenden Nachrichten verbieten. + Das Senden von verschwindenden Nachrichten nicht erlauben. Sicherheits-Gutachten Die Sicherheit von SimpleX Chat wurde von Trail of Bits überprüft. Was ist neu @@ -1811,7 +1811,7 @@ Zellulär Andere WiFi - Kabelgebundenes Ethernet + Kabelgebundenes Netzwerk Dateien und Medien sind nicht erlaubt SimpleX-Links sind nicht erlaubt Sprachnachrichten sind nicht erlaubt @@ -1819,9 +1819,24 @@ Gruppenmitglieder können SimpleX-Links senden. Administratoren Alle Mitglieder - Für aktiviert + Aktiviert für Eigentümer - In dieser Gruppe sind SimpleX-Links verboten. - Das Senden von SimpleX-Links verbieten + In dieser Gruppe sind SimpleX-Links nicht erlaubt. + Das Senden von SimpleX-Links nicht erlauben. Das Senden von SimpleX-Links erlauben. + Lautsprecher + Kopfhörer + Weiterleiten + Bluetooth + Weitergeleitet von + Nachricht weiterleiten… + Kopfhörer + Gleichzeitiger Empfang + Empfänger können nicht sehen, von wem die Nachricht stammt. + abgespeichert von %s + Abgespeichert + abgespeichert + Weitergeleitet + Abgespeichert von + Herunterladen \ No newline at end of file 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 285e55d9a6..60c36757df 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml @@ -99,7 +99,7 @@ Hozzáadás egy másik eszközhöz Az üzenetreakciók küldése engedélyezve van. Fájl előnézet megszakítása - Minden csoporttag csatlakozva marad. + Minden csoporttag kapcsolatban marad. Több akkumulátort használ! Háttérszolgáltatás mindig fut - az értesítések megjelennek, amint az üzenetek elérhetővé válnak.]]> Letiltás admin @@ -161,7 +161,7 @@ Hívás folyamatban Mindkét fél küldhet üzenetreakciókat. Mindkét fél tud hívásokat indítani. - Hitelesítés sikertelen + Sikertelen hitelesítés Minden %s által írt új üzenet elrejtésre kerül! Alkalmazás verzió: v%s Hívások engedélyezése kizárólag abban az esetben, ha az ismerőse is engedélyezi. @@ -180,9 +180,9 @@ Csoport szerepkör megváltoztatása? Zárolási mód megváltoztatása Csatlakozott - csatlakozva + kapcsolódva Kapcsolódás - csatlakozva + kapcsolódva Csatlakoztatott telefon kapcsolódva Szerepkör megváltoztatása @@ -195,7 +195,7 @@ Kapcsolódás Közvetlen csatlakozás? Kapcsolódás - közvetlenül csatlakozva + közvetlenül kapcsolódva kapcsolat %1$d az ismerős e2e titkosítással rendelkezik Csoport létrehozása véletlenszerű profillal. @@ -309,7 +309,7 @@ CSEVEGÉSI ADATBÁZIS Önmegsemmisító jelkód megváltoztatása Várólista létrehozása - színes + színezett kapcsolódás… Sötét téma törölve @@ -497,7 +497,7 @@ Önmegsemmisítés engedélyezése Olvasatlan és kedvenc csevegésekre való szűrés. A csevegések betöltése sikertelen - Már tagja a csoportnak! + A csoport már létezik! Francia kezelőfelület Csoport hivatkozások Végre, megvannak! 🚀 @@ -541,7 +541,7 @@ Kapcsolat javítása? Fájlok és médiatartalom KONZOLHOZ - Titkosítás újraegyeztetése sikertelen. + Sikertelen titkosítás-újraegyeztetés. Hiba a felhasználói profil törlésekor Csoporttag általi javítás nem támogatott Üdvözlő üzenetet megadása… @@ -602,7 +602,7 @@ Adatbázis exportálása Teljes név: Tovább csökkentett akkumulátor használat - Hiba a csevegés megállításakor + Hiba a csevegés megszakításakor titkosítás rendben %s számára Csoport törlésre kerül minden tag számára - ez a művelet nem vonható vissza! Titkosítás javítása az adatmentések helyreállítása után. @@ -794,7 +794,7 @@ A fájl betöltése Nincs hozzáadandó ismerős Üzenetvázlat - meghívta + meghívta, hogy csatlakozzon Egyszer használatos meghívó hivatkozás Értesítések Egyszerre csak 10 kép küldhető el @@ -859,7 +859,7 @@ Új jelmondat… nem fogadott hívás Átköltöztetés: %s - Válasz neki + Válaszul erre: Üzenet szövege Az értesítések csak az alkalmazás bezárásáig érkeznek! Információ @@ -897,16 +897,16 @@ Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra) Szerepkör SimpleX ismerős azonosítója - Megállítás + Megszakítás Előre beállított kiszolgáló Új csevegés kezdése Nyílt forráskódú protokoll és forráskód – bárki üzemeltethet kiszolgálókat. Megnyitás Protokoll időtúllépés - titok + titkos Előnézet megjelenítése várakozás a visszaigazolásra… - Fájl megállítása + Fájl megszakítása csoport hivatkozáson keresztül PING időköze Eltűnő üzenet küldése @@ -943,7 +943,7 @@ Csak az ismerőse tud hívást indítani. TÉMÁK Túl sok videó! - Csevegési szolgáltatás megállítása az adatbázis műveletek elvégzéséhez. + Csevegési szolgáltatás megszakítása az adatbázis műveletek elvégzéséhez. Üdvözöljük! Önmegsemmisítési jelkód (beolvasás, vagy beillesztés a vágólapról) @@ -1012,7 +1012,7 @@ Túl sok kép! Archívum mentése %s, %s és %d tag - Csevegési szolgáltatás megállítása + Csevegési szolgáltatás megszakítása SimpleX hivatkozások Az elküldött üzenetek törlésre kerülnek a beállított idő után. Némítás feloldása @@ -1096,7 +1096,7 @@ %s, %s és %s csatlakoztak SimpleX egyszer használatos meghívó Hívások - küldés sikertelen + nem sikerült elküldeni TÉMA SZÍNEK Visszaállít Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem vonható vissza. @@ -1137,8 +1137,8 @@ Csatlakozás hivatkozáson keresztül Azonosító megosztása A kiszolgáló QR-kódjának beolvasása - Megállítás - Címmegosztás megállítása? + Megszakítás + Címmegosztás megszakítása? Csevegés profilok megnyitása Csatlakozási kérés megismétlése? Képre várakozás @@ -1225,7 +1225,7 @@ Fájl megosztása… Mentés átjátszón keresztül - Megosztás leállítása + Megosztás megszakítása eltávolította őt: %1$s Jelmondat mentése és csevegés megnyitása Beállítások mentése? @@ -1275,11 +1275,11 @@ Beállítások Csevegési adatbázis %1$s eltávolítva - A kiszolgáló tesztje sikertelen! + Sikertelen kiszolgáló-teszt! Kapcsolat ellenőrzése Tudjon meg többet A küldő megszakította a fájl átvitelt. - Csevegési szolgáltatás megállítása? + Csevegési szolgáltatás megszakítása? Fogadva ekkor: Beállítva 1 nap Felfedés @@ -1308,7 +1308,7 @@ fájlok fogadása egyelőre még nem támogatott Csoport profil mentése Alaphelyzetbe állítás - Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, hiba lehet – kérjük, jelentse. + Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, lehet hogy ez egy hiba – jelentse a problémát. \nA csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsolati hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e. videóhívás (nem e2e titkosított) Alkalmazás új kapcsolatokhoz @@ -1346,7 +1346,7 @@ A SimpleX zárolás a Beállításokon keresztül kapcsolható be. Az alkalmazás összeomlott Ellenőrizze, hogy a megfelelő hivatkozást használta-e, vagy kérje meg ismerősét, hogy küldjön egy másikat. - A kép nem dekódolható. Kérjük, próbálja ki egy másik képpel, vagy lépjen kapcsolatba a fejlesztőkkel. + A kép nem dekódolható. Próbálja meg egy másik képpel, vagy lépjen kapcsolatba a fejlesztőkkel. Érvénytelen fájl elérési útvonalat osztott meg. Jelentse a problémát az alkalmazás fejlesztőinek. Már van egy csevegési profil ugyanezzel a megjelenített névvel. Válasszon egy másik nevet. Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz ettől az ismerőstől (hiba: %1$s). @@ -1374,7 +1374,7 @@ Megnyitás alkalmazásban gombra.]]> Csevegési profilja elküldésre kerül \naz ismerőse számára - Egy olyan ismerősét próbálja meghívni, akivel inkognitó profilt osztott meg abban a csoportban, amelyben a saját fő profilja van használatban + Egy olyan ismerősét próbálja meghívni, akivel inkognitóprofilt osztott meg abban a csoportban, amelyben a saját fő profilja van használatban %1$s csoporthoz.]]> Amikor az alkalmazás fut Inkognító profilt használ ehhez a csoporthoz - fő profilja megosztásának elkerülése érdekében meghívók küldése tiltott @@ -1442,11 +1442,11 @@ Kód ellenőrzése a számítógépen Az időzóna védelme érdekében a kép-/hangfájlok UTC-t használnak. Csoporttag részére a csatlakozási kérelem eküldésre kerül. - Inkognitó profil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. + Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. Már kért egy csatlakozást ezen az azonosítón keresztül! Megoszthatja ezt a SimpleX azonosítót ismerőseivel, hogy kapcsolatba léphessenek vele: %s. Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat. - Megjelenő üzenetek beállítása az új tagok számára! + Megjelenítendő üzenet beállítása az új tagok számára! Köszönet a felhasználóknak - hozzájárulás a Weblaten! A kézbesítési jelentés küldése minden ismerős számára engedélyezésre kerül. Protokoll időkorlát KB-onként @@ -1476,7 +1476,7 @@ Az átjátszó kiszolgáló csak szükség esetén kerül használatra. Egy másik fél megfigyelheti az IP-címét. Rendszerhitelesítés helyetti beállítás. A fogadó cím egy másik kiszolgálóra változik. A címváltoztatás a feladó online állapotba kerülése után fejeződik be. - A csevegés leállítása a csevegő adatbázis exportálásához, importálásához, vagy törléséhez. A csevegés leállítása alatt nem tud üzeneteket fogadni és küldeni. + A csevegés megszakítása a csevegő adatbázis exportálásához, importálásához, vagy törléséhez. A csevegés megszakítása alatt nem tud üzeneteket fogadni és küldeni. Jelmondat mentése a kulcstárolóba Köszönet a felhasználóknak - hozzájárulás a Weblaten! Jelmondat mentése a beállításokban @@ -1522,7 +1522,7 @@ hiba a tartalom megjelenítése közben hiba az üzenet megjelenítésekor Láthatóvá teheti SimpleX beli ismerősei számára a Beállításokban. - Legfeljebb az utolsó 100 üzenet kerüljön elküldésre az új tagok számára. + Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagok számára. A beolvasott kód nem egy SimpleX hivatkozás QR-kód. A beillesztett szöveg nem egy SimpleX hivatkozás. A meghívó hivatkozását újra megtekintheti a kapcsolat részleteinél. @@ -1641,15 +1641,15 @@ Feltöltés megerősítése Hiba az adatbázis törlésekor Az adminok egy tagot mindenki számára letilthatnak. - Minden ismerős, a beszélgetések és a fájlok biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra. + Minden ismerőse, a beszélgetései és a fájljai biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra. Alkalmazásadatok átköltöztetése Adatbázis archiválása - Az átköltöztetés megszakítása + Átköltöztetés megszakítása A csevegés átköltöztetve! Ellenőrizze az internetkapcsolatot, és próbálja újra Archív hivatkozás létrehozása Adatbázis törlése erről az eszközről - Letöltés sikertelen + Sikertelen letöltés Archívum letöltése Letöltési hivatkozás részletei Engedélyezés a közvetlen csevegésekben (BÉTA)! @@ -1669,24 +1669,24 @@ Kép a képben hívások Biztonságosabb csoportok Használja az alkalmazást hívás közben. - Vagy illessze be az archívum hivatkozását - Az archívum hivatkozásának beillesztése + Vagy az archívum hivatkozásának beillesztése + Archívum hivatkozásának beillesztése Letöltés ismét Sikertelen importálás Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz. - A folytatáshoz a csevegést le kell állítani. - Csevegés leállítása - Vagy ossza meg biztonságosan ezt a fájl hivatkozást + A folytatáshoz a csevegést meg kell szakítani. + Csevegés megszakítása + Vagy a fájl hivítkozásának biztonságos megosztása Csevegés indítása Nem szabad ugyanazt az adatbázist használni egyszerre két eszközön.]]> Erősítse meg, hogy emlékszik az adatbázis jelmondatára az átköltöztetéshez. Átköltöztetés egy másik eszközről opciót az új eszközön és szkennelje be a QR-kódot.]]> - Az átköltöztetés véglegesítése - Az átköltöztetés véglegesítése egy másik eszközön. + Átköltöztetés véglegesítése + Átköltöztetés véglegesítése egy másik eszközön. Letöltés előkészítése Feltöltés ismét %s feltöltve - A feltöltés sikertelen + Sikertelen feltöltés Archívum feltöltése Figyelmeztetés: a csevegés elindítása egyszerre több eszközön nem támogatott, továbbá üzenetkézbesítési hibákat okozhat Importálás ismét @@ -1706,7 +1706,7 @@ Hibás hivatkozás végpontok közötti kvantumrezisztens titkosítás Ez a csevegés végpontok közötti titkosítással védett. - A költöztetési párbeszédablak megnyitása + Átköltöztetési párbeszédablak megnyitása Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett. végpontok közötti titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]> végpontok közötti kvantumrezisztens titkosítással és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi.]]> @@ -1725,7 +1725,7 @@ Nincs hálózati kapcsolat További Wi-Fi - továbbküldve + továbbított A SimpleX hivatkozások küldése le van tiltva A csoport tagjai küldhetnek SimpleX hivatkozásokat. tulajdonosok @@ -1751,4 +1751,14 @@ Fejhallgató Hangszóró Fülhallgató + Egyidejű fogadás + Bluetooth + A közvetlen csevegésekben engedélyezve lesz! + Litván kezelőfelület + Megbízhatóbb hálózati kapcsolat. + Hálózatkezelés + Amikor egy bejövő hang- vagy videóhívás érkezik. + Üzenetek továbbítása és mentése + Bejövő hívás csengőhangja + Az üzenet forrása titokban marad. \ No newline at end of file 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 e062d742cd..02bf35dc53 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml @@ -1753,4 +1753,9 @@ I destinatari non possono vedere da chi proviene questo messaggio. Salvato salvato da %s + Bluetooth + Auricolari + Cuffie + Altoparlante + Ricezione concomitanza \ No newline at end of file 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 554f80e74d..618cf6afae 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml @@ -1741,4 +1741,29 @@ ファイルとメディアは許可されていません SimpleXリンクの送信禁止 SimpleXリンク + ブルートゥース + 有効化 + イヤホン + ヘッドホン + スピーカー + 着信音 + 音声通話とビデオ通話の接続時 + ダイレクトチャットが有効化されます + より信頼性の高いネットワーク接続 + ネットワーク管理 + 保存済 + %sから保存 + 転送済 + 転送元 + 保存元 + 転送 + 転送済 + ダウンロード + メッセージの転送と保存 + メッセージの転送 + リトアニア語UI + メッセージ発信者は非公開のままです + 並列受信 + 受信者は発信者を特定できません。 + 保存済 \ No newline at end of file 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 13b0877374..229cee789d 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml @@ -1129,7 +1129,7 @@ nustatyti naują kontakto adresą nustatyti naują profilio nuotrauką Standartinis visapusis šifravimas - Nusiuntimo kvitai + Pristatymo kvitai Nusiųsta Dėkojame naudotojams - prisidėkite per Weblate! %s nėra patvirtintas @@ -1224,7 +1224,7 @@ Bendrinti adresą Siųsti naujiems nariams iki 100 paskutinių žinučių. Kvitų siuntimas yra įjungtas %d kontaktams - Kvitų siuntimas yra įjungtas %d grupėms + Pristatymo kvitai yra įjungti %d grupėms Nustatyti duomenų slaptafrazę Nustatyti slaptafrazę Rodyti paskutines žinutes @@ -1369,7 +1369,7 @@ Atšaukti failą Atšaukti failą? neteisėtas siuntimas - Ieškoti arba įklijuoti SimpleX nuorodą + Ieškoti ar įklijuoti SimpleX nuorodą Jūs turite leisti savo kontaktui siųsti balso žinutes, kad galėtumėte siųsti jas. (nuskanuokite ar įklijuokite iš iškarpinės) Priėmėte prisijungimą @@ -1670,7 +1670,7 @@ lygiaverčiai mazgai Pašalinti slaptafrazę iš nustatymų? SIŲSTI PRISTATYMO KVITUS PAS - Pristatymo kvitų siuntimas yra išjungtas %d grupėms + Pristatymo kvitai yra išjungti %d grupėms Turite naudoti pačią naujausią pokalbių duomenų bazės versiją TIK viename įrenginyje, kitaip galite nebegauti žinučių iš kai kurių kontaktų. Nauja slaptafrazė… pašalino %1$s @@ -1722,4 +1722,26 @@ Įkėlimas nepavyko Įkeliamas archyvas Galite bandyti dar kartą. + Bluetooth + visi nariai + Ausinė + Ausinės + administratoriai + Persiųsta + Atsisiųsti + Persiųsti + Failai ir medija neleidžiami + persiųsta + Leisti siųsti SimpleX nuorodas + Grupės nariai gali siųsti SimpleX nuorodas. + Įjungta: + Mobilusis + Persiųskite ir išsaugokite žinutes + Persiųsta iš + Persiųsti žinutę… + Žinutės šaltinis išlieka privatus. + Patikimesnis tinklo ryšys. + Tinklo ryšys + Garsai skambučio metu + Lietuviškas UI \ No newline at end of file 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 bd4171ab02..f63cdb8d0c 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1728,7 +1728,7 @@ Geen netwerkverbinding Ander Wifi - Wired ethernet + Bekabeld Ethernet Bestanden en media niet toegestaan SimpleX-links zijn niet toegestaan Spraakberichten niet toegestaan @@ -1751,4 +1751,7 @@ Downloaden Doorgestuurd vanuit Opgeslagen + Oortje + Koptelefoon + Luidspreker \ No newline at end of file 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 3e06927ddc..5d1195a020 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ro/strings.xml @@ -52,7 +52,7 @@ Toate conversațiile și mesajele vor fi șterse - operațiunea este definitivă! Toate mesajele vor fi șterse - operațiunea este definitivă! Permite reacții la mesaje doar dacă și contactul tău le permite. - Permite ștergerea ireversibila a mesajelor trimise. (24 ore) + Permite ștergerea ireversibilă a mesajelor trimise. (24 ore) Permite trimiterea de fișiere și media. Toate datele sunt șterse când este introdusă. Toți membrii grupului vor rămâne conectați. @@ -69,4 +69,23 @@ Permite trimiterea de mesaje efemere. Permite trimiterea de mesaje vocale. Permite mesaje efemere doar dacă le permite contactul tău. + Permite contactelor tale să trimită mesaje care dispar. + Aspect + Versiunea aplicației + toți membrii + Permite trimiterea linkurilor SimpleX. + administratori + Administratorii pot bloca un membru pentru toți. + întotdeauna + Versiunea aplicației: v%s + Permite contactelor tale să șteargă ireversibil mesajele trimise. (24 de ore) + Permite contactelor tale să adauge reacții la mesaje. + Permite contactelor tale să te apeleze. + Permite contactelor tale să trimită mesaje vocale. + Toate contactele tale vor rămâne conectate. + Anulare + Camera indisponibilă + Camera și microfon + Atenție: arhiva va fi ștearsă.]]> + Anulează previzualizarea fișierului \ No newline at end of file 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 f2e26fbe43..ba9ed618e9 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 @@ -1753,4 +1753,17 @@ 保存自%s 已转发 转发自 + 蓝牙 + 并行接收 + 耳机 + 头戴式耳机 + 扬声器 + 通话声音 + 消息来源保持私密。 + 更可靠的网络连接。 + 网络管理 + 转发并保存消息 + 立陶宛语用户界面 + 连接音频和视频通话时。 + 将在私聊中启用! \ No newline at end of file From f30287c4dfe46672adc66989dfb2c367b9b0aeea Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 19:19:51 +0100 Subject: [PATCH 083/147] docs: FAQ (#4013) * Addd FAQ.md (#3814) * faq * typos * add troubleshooting * update links --------- Co-authored-by: ungespurv <87089788+ungespurv@users.noreply.github.com> --- docs/FAQ.md | 213 +++++++++++++++++++++++++++ website/langs/en.json | 1 + website/src/_data/docs_dropdown.json | 4 + website/src/_data/docs_sidebar.json | 3 +- 4 files changed, 220 insertions(+), 1 deletion(-) create mode 100644 docs/FAQ.md diff --git a/docs/FAQ.md b/docs/FAQ.md new file mode 100644 index 0000000000..0041c50de2 --- /dev/null +++ b/docs/FAQ.md @@ -0,0 +1,213 @@ +--- +title: Frequently Asked Questions +permalink: /faq/index.html +revision: 10.04.2024 +--- + +# Frequently Asked Questions + +[How to use it](#how-to-use-it) +- [I have nobody to chat with! Where can I find any groups?](#i-have-nobody-to-chat-with-where-can-i-find-any-groups) +- [What is database? What can I do with it?](#what-is-database-what-can-i-do-with-it) +- [Can I send files over SimpleX? ](#can-i-send-files-over-simplex) +- [What’s incognito profile?](#whats-incognito-profile) +- [How do invitations work?](#how-do-invitations-work) +- [How to configure and delete groups?](#how-to-configure-and-delete-groups) +- [Are there any reactions to messages? Can I answer specific messages directly?](#are-there-any-reactions-to-messages-can-i-answer-specific-messages-directly) +- [What do checkmarks mean?](#what-do-checkmarks-mean) +- [Can I use the same profile on desktop? Do messages sync cross-platform?](#can-i-use-the-same-profile-on-desktop-do-messages-sync-cross-platform) + +[Troubleshooting](#troubleshooting) +- [I do not receive messages or message notifications](#i-do-not-receive-messages-or-message-notifications) +- [I do not see the second tick on the messages I sent](#i-do-not-see-the-second-tick-on-the-messages-i-sent) +- [I see image preview but cannot open the image](#i-see-image-preview-but-cannot-open-the-image) +- [I cannot play a voice message](#i-cannot-play-a-voice-message) +- [Audio or video calls do not connect](#audio-or-video-calls-do-not-connect) +- [I clicked the link to connect, but could not connect](#i-clicked-the-link-to-connect-but-could-not-connect) + +[Privacy and security](#privacy-and-security) +- [Does SimpleX support post quantum cryptography?](#does-simplex-support-post-quantum-cryptography) +- [What user data can be provided on request?](#what-user-data-can-be-provided-on-request) +- [Does SimpleX protect my IP address?](#does-simplex-protect-my-ip-address) +- [Can I host my own relays?](#can-i-host-my-own-relays) + +[Funding and business model](#funding-and-business-model) +- [How are you funded?](#how-are-you-funded) +- [Why VCs?](#why-vcs) +- [What will be the business model?](#what-will-be-the-business-model) + +## How to use it + +### I have nobody to chat with! Where can I find any groups? + +Please check our [Groups Directory](./DIRECTORY.md) in the first place. You might find some interesting groups and meet even more interesting people. + +### What is database? What can I do with it? + +Database is essential for SimpleX Chat to function properly. In comparison to centralized messaging providers, it is _the user_ who is responsible for taking care of their data. On the other hand, user is sure that _nobody but them_ has access to it. Please read more about it: [Database](./guide/managing-data.md). + +### Can I send files over SimpleX? + +Of course! While doing so, you are using a _state-of-the-art_ protocol that greatly reduces metadata leaks. Please read more about it: [XFTP Protocol](../blog/20230301-simplex-file-transfer-protocol.md). + +### What’s incognito profile? + +This feature is unique to SimpleX Chat – it is independent from chat profiles. + +When "Incognito Mode” is turned on, your currently chosen profile name and image are hidden from your new contacts. It allows anonymous connections with other people without any shared data – when you make new connections or join groups via a link a new random profile name will be generated for each connection. + +### How do invitations work? + +It is quite a complex process, but fortunately all of this happens in the background, so it's simply to use. + +Whenever somebody connects to you via your address, they basically ask your client whether they want to establish connection. After that, you can either agree or disagree. +If interested, please read more: [Addresses and invitations](./guide/making-connections.md). + +### How to configure and delete groups? + +Please check: [Users guide](./guide/secret-groups.md). + +### Are there any reactions to messages? Can I answer specific messages directly? + +Yes! Currently, there are six emojis available. What's more, you can respond to specific message by holding it and selecting _Reply_. + +### What do checkmarks mean? + +It's quite simple: +- one checkmark - message is delivered to the relay (the server). +- two checkmarks - message is delivered to the recipient's device. +"sent" means accepted by the relay for delivery, "delivered" - stored on the recipient device. + +Also see [ ](#i-do-not-see-the-second-tick-on-the-messages-i-sent) + +### Can I use the same profile on desktop? Do messages sync cross-platform? + +You can use your profile from mobile device on desktop. However, to do so you need to be on the same network, both on your mobile and desktop. More about it: [Release info](../blog/20231125-simplex-chat-v5-4-link-mobile-desktop-quantum-resistant-better-groups.md#link-mobile-and-desktop-apps-via-secure-quantum-resistant-protocol). + +## Troubleshooting + +### I do not receive messages or message notifications + +There may be several reasons messages are not delivered to you from your contact: + +**You or your contact cannot connect to the server that you use to receive messages from your contact.** + +You can check which server is used to receive messages by tapping the contact name above the conversation. + +You can also run tests for this server from the app Network settings. + +Please ask your contact if they have a single tick on the message to determine if the message failed to send or if you fail to receive it. + +**Message delivery got stuck because of some unresolved bug.** + +Fully restarting the app is the workaround to resume message delivery. + +To do it on iOS, simply close the app (swipe up from the opened apps) and open it again. + +To do it on Android - choose Restart from the app settings, simply closing and re-opening the app will not restart the messaging service. + +**Your Android operating system kills the app while it is in background.** + +Check battery settings for the app - it should be set to Unrestricted. + +For some devices, there may be additional options to prevent the app from being killed - e.g., on Xiaomi you need to enable Auto Start setting for the app. Please consult https://dontkillmyapp.com site for any additional settings for your device. + +**iOS notifications failed to initialize correctly** + +Check the color of the bolt icon next to Notifications in app settings - it should be green. + +If it's not, please open notifications, disable them (choose Off / Local), and then enable again - you should do it when you have Internet connection. + +If the above didn't help, the reason could be that iOS failed to issue notification token - we have seen this issue several times. In this case, restarting the whole device should help. + +**Messaging server or notification server is under maintenance** + +Please check the current status of preset servers at [https://status.simplex.chat](https://status.simplex.chat). You can also connect to status bot via QR code on that page - it will send the updates when the server is offline for maintenance, and also when the new versions of the app are released. + +### I do not see the second tick on the messages I sent + +You may not have the second tick on your sent messages for these reasons: + +- your contact is not online, and did not receive your message. +- possibly, message delivery to your contact or to you is disrupted - see [I do not receive messages](#i-do-not-receive-messages-or-message-notifications) - please check with your contact via some other channel if they received your message. If the message was delivered, then it means your device could fail to receive the delivery notification. +- possibly, your contact disabled sending delivery receipts - it can be disabled for specific or for all contacts - please check with your contact. + +### I see image preview but cannot open the image + +It can be for these reasons: +- your contact did not finish uploading the image file, possibly closing the app too quickly. When the image file is fully uploaded there will be a tick in the _top right corner_ or the image +- your device fails to receive it. Please check server connectivity and run server tests, and also try increasing network timeouts in Advanced network settings. File reception was substantially improved in v5.7 - please make sure you are using the latest version. +- file expired and can no longer be received. Files can be received only for 2 days after they were sent, after that they won't be available and will show X in the top right corner. + +### I cannot play a voice message + +This can happen for similar reasons as for [images](#i-see-image-preview-but-cannot-open-the-image). + +Please check your network settings and make sure you use the latest version of the app. + +Please report such issues if you use v5.7 or newer. + +### Audio or video calls do not connect + +App uses WebRTC for calls. Please check that you can connect to the servers configured in the app: stun.simplex.im and turn.simplex.im - see [troubleshooting WebRTC](./WEBRTC.md#troubleshoot). + +If you can connect to the server, please report this issue to us privately, including the following information: + +- how you connect to the network: WiFi, mobile network, VPN provider - the more information you can provide the better. + +- app version and platform. For mobile apps, it would help if you can make a screen recording from both devices during unsuccessful calls and share with us. + +- if the issue is on desktop app, which browser is used for calls. In this case also please check browser console during the call and send us the log, ideally from both sides of the unsuccessful calls. + +Thank you for helping us debug and improve calls. + +### I clicked the link to connect, but could not connect + +If you confirmed the connection in the app, pending connection will be shown in the list of chats - you can assign the name to it, so you know who it was when your contact is connected (e.g., if they choose some name you don't recognize). + +For connection to complete, your contact has to be online and have the app running - please ask them to open the app, and try to have the app open at the same time - it will help to complete the connection faster. + +Once the connection is established you don't need to be online at the same time to send messages. + +## Privacy and security + +### Does SimpleX support post quantum cryptography? + +Yes! Please read more about quantum resistant encryption is added to SimpleX Chat and about various properties of end-to-end encryption in [this post](../blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md). + +### What user data can be provided on request? + +Our objective is to consistently ensure that no user data and absolute minimum of the metadata required for the network to function is available for disclosure by any infrastructure operators, under any circumstances. + +Please see our [Privacy Policy](../PRIVACY.md) and [Transparency Reports](./TRANSPARENCY.md). + +### Does SimpleX protect my IP address? + +Not fully yet, it is a work in progress. While your device does not connect to your contacts' devices directly, as it happens in p2p networks, your contacts can self-host their relays, and you will connect to them when sending messages. A modified relay can record IP addresses connecting devices, as is the case with any other server, including Tor entry nodes, VPN providers, etc. - IP address is fundamental to Internet functioning, and there will always be some server that can observe your IP address. + +We are currently working on the next version of message routing protocol that will protect your IP address from the relays chosen by your contacts, so it will only be visible to the relays chosen by you. Read about technical details here: [RFC](https://github.com/simplex-chat/simplexmq/blob/stable/rfcs/2023-09-12-second-relays.md). + +### Can I host my own relays? + +Of course! Please check these tutorials: [SMP server](./SERVER.md) and [XFTP server](./XFTP-SERVER.md). + +## Funding and business model + +### How are you funded? + +SimpleX Chat Ltd is funded by private investors and venture capital. As an open-source project, it is also being generously supported by donations as well. Read [more details](../blog/20230422-simplex-chat-vision-funding-v5-videos-files-passcode.md#how-is-it-funded-and-what-is-the-business-model). + +### Why VCs? + +Here are some reflections on VC funding being a necessity for a project at this scale, as well as sustainability and profitability for longtime operations: https://www.poberezkin.com/posts/2023-10-31-why-privacy-impossible-without-venture-funding.html + +And another perspective from a team member on the delicate balance of venture-backed and nonprofit structures, and the plans for the SimpleX network protocols to evolve under the stewardship of nonprofit entities in various jurisdictions, so that its continued evolution aligns more closely with the vision of community-driven, independent and transparent governance: +[https://simplex.chat/blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.html](../blog/20240404-why-i-joined-simplex-chat-esraa-al-shafei.md). + +### What will be the business model? + +We are focusing on product-market fit, and as such the business model is still a work in progress. However, the app will have a freemium model with extra features or capabilities for paid users (taking into consideration a potential formula like 5% paying $5/month is $3/user/year - ~90% gross profit margin). + +The other income stream would be via business services, for entities needing direct and customized support to integrate with the SimpleX protocol or related resources. There will also be a revenue-sharing model from customers to network operators, to provide an incentive for them to continue running nodes, which will increase decentralization and reliability of the network. + +Non-exploitative commercial models with fully open source code are not easy to achieve, and we’re committed to finding the best possible fit for our context. Everything will be fully communicated as this plan progresses. diff --git a/website/langs/en.json b/website/langs/en.json index 32db4f3c47..1c8b7d3681 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -236,6 +236,7 @@ "docs-dropdown-8": "SimpleX Directory Service", "docs-dropdown-9": "Downloads", "docs-dropdown-10": "Transparency", + "docs-dropdown-11": "FAQ", "newer-version-of-eng-msg": "There is a newer version of this page in English.", "click-to-see": "Click to see", "menu": "Menu", diff --git a/website/src/_data/docs_dropdown.json b/website/src/_data/docs_dropdown.json index 610be49221..d42d41475a 100644 --- a/website/src/_data/docs_dropdown.json +++ b/website/src/_data/docs_dropdown.json @@ -39,6 +39,10 @@ { "title": "docs-dropdown-10", "url": "/transparency/" + }, + { + "title": "docs-dropdown-11", + "url": "/faq/" } ] } \ No newline at end of file diff --git a/website/src/_data/docs_sidebar.json b/website/src/_data/docs_sidebar.json index a2b15de7e4..7e9f6c02fe 100644 --- a/website/src/_data/docs_sidebar.json +++ b/website/src/_data/docs_sidebar.json @@ -27,7 +27,8 @@ "WEBRTC.md", "XFTP-SERVER.md", "DOWNLOADS.md", - "TRANSPARENCY.md" + "TRANSPARENCY.md", + "FAQ.md" ] }, { From ab76e93df7fe00c6fad5561ef602fcfdd368e6cc Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 23 Apr 2024 19:30:42 +0100 Subject: [PATCH 084/147] docs: security policy (#4068) * docs: security policy * update * add to website --- docs/FAQ.md | 2 +- docs/SECURITY.md | 79 ++++++++++++++++++++++++++++ website/langs/en.json | 1 + website/src/_data/docs_dropdown.json | 4 ++ website/src/_data/docs_sidebar.json | 1 + 5 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 docs/SECURITY.md diff --git a/docs/FAQ.md b/docs/FAQ.md index 0041c50de2..2484738808 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -1,7 +1,7 @@ --- title: Frequently Asked Questions permalink: /faq/index.html -revision: 10.04.2024 +revision: 23.04.2024 --- # Frequently Asked Questions diff --git a/docs/SECURITY.md b/docs/SECURITY.md new file mode 100644 index 0000000000..77f588ec26 --- /dev/null +++ b/docs/SECURITY.md @@ -0,0 +1,79 @@ +--- +title: Security Policy +permalink: /security/index.html +revision: 23.04.2024 +--- + +# Security Policy + +While great care is taken to ensure the highest level of security and privacy in SimpleX network servers and clients, all software can have flaws, and we believe it is a critical part of an organization's social responsibility to minimize the impact of these flaws through continual vulnerability discovery efforts, defense in depth design, and prompt remediation and notification. + +The security assessment of SimpleX cryptography and networking was done by Trail of Bits in [November 2022](https://simplex.chat/blog/20221108-simplex-chat-v4.2-security-audit-new-website.html). + +We are planning design review of SimpleX protocols in July 2024 and implementation review in December 2024/January 2025. + +## Reporting security issues + +To report a security issue, please contact us directly via email [chat@simplex.chat](mailto:chat@simplex.chat). Please do NOT report security issues via GitHub issues or via any public channels. + +Please encrypt the email message using the key for this address from [keys.openpgp.org](https://keys.openpgp.org/search?q=chat%40simplex.chat) (its fingerprint is `FB44 AF81 A45B DE32 7319 797C 8510 7E35 7D4A 17FC`) and make your key available for a secure reply. + +While we encourage you to encrypt the message, if this poses a barrier to reporting, an unencrypted submission is better than no submission. + +## Issue triage + +Our team will investigate and prioritize the reported issue. We may work in private with individuals who are not our direct team members, as well as other organizations, where we believe this can help with the issue investigation, resolution, or testing. + +## Threat Model + +Please review threat model for SimpleX: https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#threat-model + +Certain threats are considered out of the scope of SimpleX security model. For example, we do not consider SimpleX secure against the following classes of attacks: + +- CPU/hardware flaws. +- physical observation side channels (e.g. power consumption, EM emissions, etc). + +Further, any user data stored on the device can be accessed with user's or root privileges, such as: +- user files in the app storage (encrypted or not, depending on the app settings). +- encrypted database. +- database encryption key in case it is stored on the device. + +Mitigations for security issues outside of our threat model may still be implemented, however they will be weighed against competing priorities, and we do not classify them as SimpleX vulnerabilities. + +## Issue severity + +We will determine the risk of each issue, taking into account our experience dealing with past issues, versions affected, common defaults, and use cases. We classify issues on two dimensions, based on their severity level and the difficulty required to exploit them. + +**Difficulty levels** + +- **Low**: The flaw is well known; public tools for its exploitation exist or can be scripted. +- **Medium**: An attacker must write an exploit or will need in-depth knowledge of the system. +- **High**: An attacker must have privileged access to the system, may need to know complex technical details, or must discover other weaknesses to exploit this issue. + +**Issue severity levels** + +- **CRITICAL severity**. Such issues should affect common configurations and be exploitable with low or medium difficulty. For example: significant disclosure of the encrypted users messages or files either via relays or via communication channels, vulnerabilities which can be easily exploited remotely to compromise clients or servers private keys. These issues will be kept private and will trigger a new release of all supported versions. +- **HIGH severity**. This includes issues that are of a lower risk than critical, possibly due to affecting less common configurations, or have high difficulty to be exploited. These issues will be kept private and will trigger a new release of all supported versions. +- **MEDIUM severity**. This includes issues like crashes in client applications caused by the received messages or files, flaws in protocols that are less commonly used, and local flaws. These will in general be kept private until the next release, and that release will be scheduled so that it can roll up several such flaws at one time. +- **LOW severity**. This includes issues such as those that only affect the SimpleX CLI app, or unlikely configurations, or issues that would be classified as medium but are very difficult to exploit. These will in general be fixed immediately in latest development versions, and may be back-ported to older versions that are still getting updates. These issues may be kept private or be included in commit messages. + +## Notification policy + +Security fixes of critical, high and medium severity MUST NOT be mentioned in the commit message. Security fixes of low severity MAY be mentioned in the commit messages. + +We will privately notify trusted partners about forthcoming security fixes on the day when the fix is publicly released and available for download via all supported channels, indicating the issue level, but not further details. + +7 days after the new software version is released and available for download via all supported channels, we will indicate that it fixes a security issue and its level, but not further details. This notification will be published in our release notes and broadcast channels we use. + +14 days later the details will be published in the release notes, describing the impact and the nature of vulnerability, but not necessarily providing detailed instruction for the exploit - it will be decided on a case by case basis. + +## Trusted partners + +You may be privately notified about the forthcoming releases containing fixes to the security issues of critical, high and medium severity. We will communicate only the level of the issue severity, and not the issue itself. + +To be included in this list, you should be one of the following: +- software or hardware vendor depending on our code. +- commercial or non-profit organization that uses our software in scenarios where security and privacy is critically important. +- we may also include other organizations that are not listed but would otherwise qualify for list membership. +- we may also include organizations with which we have a commercial relationship. +- we may withdraw notifying certain organizations if they leak issues before they are public or do not add value. diff --git a/website/langs/en.json b/website/langs/en.json index 1c8b7d3681..9d431ffbdb 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -237,6 +237,7 @@ "docs-dropdown-9": "Downloads", "docs-dropdown-10": "Transparency", "docs-dropdown-11": "FAQ", + "docs-dropdown-12": "Security", "newer-version-of-eng-msg": "There is a newer version of this page in English.", "click-to-see": "Click to see", "menu": "Menu", diff --git a/website/src/_data/docs_dropdown.json b/website/src/_data/docs_dropdown.json index d42d41475a..88fd5826dd 100644 --- a/website/src/_data/docs_dropdown.json +++ b/website/src/_data/docs_dropdown.json @@ -40,6 +40,10 @@ "title": "docs-dropdown-10", "url": "/transparency/" }, + { + "title": "docs-dropdown-12", + "url": "/security/" + }, { "title": "docs-dropdown-11", "url": "/faq/" diff --git a/website/src/_data/docs_sidebar.json b/website/src/_data/docs_sidebar.json index 7e9f6c02fe..e9ccb7ce02 100644 --- a/website/src/_data/docs_sidebar.json +++ b/website/src/_data/docs_sidebar.json @@ -28,6 +28,7 @@ "XFTP-SERVER.md", "DOWNLOADS.md", "TRANSPARENCY.md", + "SECURITY.md", "FAQ.md" ] }, From 9979983742f10ef402a7450c4bdf1b60a00eb0cc Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 09:44:44 +0100 Subject: [PATCH 085/147] ui: translations (#4075) * Translated using Weblate (Hungarian) Currently translated at 100.0% (1507 of 1507 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * ios: Hungarian translations * Translated using Weblate (German) Currently translated at 99.5% (1730 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ * Translated using Weblate (Spanish) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ * Translated using Weblate (Dutch) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/ * Translated using Weblate (Lithuanian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/lt/ * Translated using Weblate (Turkish) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/ * Translated using Weblate (Turkish) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/ * Translated using Weblate (Hungarian) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ * import/export --------- Co-authored-by: summoner001 Co-authored-by: M1K4 Co-authored-by: No name Co-authored-by: Anonimas Co-authored-by: z0rden --- .../es.xcloc/Localized Contents/es.xliff | 40 +- .../hu.xcloc/Localized Contents/hu.xliff | 323 +++++++---- .../nl.xcloc/Localized Contents/nl.xliff | 8 + .../tr.xcloc/Localized Contents/tr.xliff | 36 ++ apps/ios/es.lproj/Localizable.strings | 112 +++- apps/ios/hu.lproj/Localizable.strings | 545 ++++++++++++++---- apps/ios/nl.lproj/Localizable.strings | 24 + apps/ios/tr.lproj/Localizable.strings | 108 ++++ .../commonMain/resources/MR/de/strings.xml | 2 +- .../commonMain/resources/MR/es/strings.xml | 27 +- .../commonMain/resources/MR/lt/strings.xml | 30 +- .../commonMain/resources/MR/nl/strings.xml | 10 + .../commonMain/resources/MR/tr/strings.xml | 42 ++ scripts/ios/import-localizations.sh | 2 +- 14 files changed, 1075 insertions(+), 234 deletions(-) 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 e388c554a9..3f1b2deb11 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Permitir enviar enlaces SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Móvil No comment provided by engineer. @@ -2088,6 +2090,7 @@ This cannot be undone! Download + Descargar chat item action @@ -2202,6 +2205,7 @@ This cannot be undone! Enabled for + Activar para No comment provided by engineer. @@ -2726,6 +2730,7 @@ This cannot be undone! Files and media not allowed + Archivos y multimedia no permitidos No comment provided by engineer. @@ -2795,18 +2800,22 @@ This cannot be undone! Forward + Reenviar chat item action Forward and save messages + Reenviar y guardar mensajes No comment provided by engineer. Forwarded + Reenviado No comment provided by engineer. Forwarded from + Reenviado por No comment provided by engineer. @@ -2921,6 +2930,7 @@ This cannot be undone! Group members can send SimpleX links. + Los miembros del grupo pueden enviar enlaces SimpleX. No comment provided by engineer. @@ -3165,6 +3175,7 @@ This cannot be undone! In-call sounds + Sonido de llamada No comment provided by engineer. @@ -3644,6 +3655,7 @@ This is your link for group %@! Message source remains private. + El autor del mensaje se mantiene privado. No comment provided by engineer. @@ -3763,6 +3775,7 @@ This is your link for group %@! More reliable network connection. + Conexión de red más fiable. No comment provided by engineer. @@ -3802,10 +3815,12 @@ This is your link for group %@! Network connection + Conexión de red No comment provided by engineer. Network management + Gestión de la red No comment provided by engineer. @@ -3920,6 +3935,7 @@ This is your link for group %@! No network connection + Sin conexión de red No comment provided by engineer. @@ -4138,6 +4154,7 @@ This is your link for group %@! Other + Otro No comment provided by engineer. @@ -4399,6 +4416,7 @@ Error: %@ Prohibit sending SimpleX links. + No permitir el envío de enlaces SimpleX. No comment provided by engineer. @@ -4533,6 +4551,7 @@ Error: %@ Receiving concurrency + Concurrencia en la recepción No comment provided by engineer. @@ -4552,6 +4571,7 @@ Error: %@ Recipient(s) can't see who this message is from. + Los destinatarios no ven de quién procede este mensaje. No comment provided by engineer. @@ -4856,6 +4876,7 @@ Error: %@ Saved + Guardado No comment provided by engineer. @@ -4865,6 +4886,7 @@ Error: %@ Saved from + Guardado desde No comment provided by engineer. @@ -5294,10 +5316,12 @@ Error: %@ SimpleX links are prohibited in this group. + Los enlaces SimpleX no se permiten en este grupo. No comment provided by engineer. SimpleX links not allowed + Enlaces SimpleX no permitidos No comment provided by engineer. @@ -5522,12 +5546,12 @@ Error: %@ Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)! - Gracias a los usuarios: [contribuye vía Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)! + ¡Nuestro agradecimiento a todos los colaboradores, [puedes contribuir a través de Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)! No comment provided by engineer. Thanks to the users – contribute via Weblate! - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate No comment provided by engineer. @@ -6139,6 +6163,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb Voice messages not allowed + Mensajes de voz no permitidos No comment provided by engineer. @@ -6213,6 +6238,7 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb When connecting audio and video calls. + Al iniciar llamadas de audio y vídeo. No comment provided by engineer. @@ -6227,14 +6253,17 @@ Para conectarte, pide a tu contacto que cree otro enlace de conexión y comprueb WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + ¡Será habilitado en los chats directos! No comment provided by engineer. Wired ethernet + Ethernet por cable No comment provided by engineer. @@ -6722,6 +6751,7 @@ Los servidores de SimpleX no pueden ver tu perfil. admins + administradores feature role @@ -6736,6 +6766,7 @@ Los servidores de SimpleX no pueden ver tu perfil. all members + todos los miembros feature role @@ -7070,6 +7101,7 @@ Los servidores de SimpleX no pueden ver tu perfil. forwarded + reenviado No comment provided by engineer. @@ -7281,6 +7313,7 @@ Los servidores de SimpleX no pueden ver tu perfil. owners + propietarios feature role @@ -7335,10 +7368,12 @@ Los servidores de SimpleX no pueden ver tu perfil. saved + guardado No comment provided by engineer. saved from %@ + Guardado desde %@ No comment provided by engineer. @@ -7483,6 +7518,7 @@ Los servidores de SimpleX no pueden ver tu perfil. you + tu No comment provided by engineer. 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 1393435dad..dd1d4749cd 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -54,7 +54,7 @@ ## In reply to - ## Válaszul erre + ## Válaszul erre: copied message info @@ -109,6 +109,7 @@ %@ downloaded + %@ letöltve No comment provided by engineer. @@ -133,6 +134,7 @@ %@ uploaded + %@ feltöltve No comment provided by engineer. @@ -182,7 +184,7 @@ %d skipped message(s) - %d kihagyott üzenet + %d üzenet kihagyva integrity error chat item @@ -237,7 +239,7 @@ %lld messages moderated by %@ - %@ %lld üzenetet moderált + %lld üzenet moderálva lett %@ által No comment provided by engineer. @@ -302,7 +304,7 @@ %u messages skipped. - %u kihagyott üzenet. + %u üzenet kihagyva. No comment provided by engineer. @@ -352,6 +354,7 @@ **Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection. + **Megjegyzés**: ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja a kapcsolataiból érkező üzenetek visszafejtését. No comment provided by engineer. @@ -371,6 +374,7 @@ **Warning**: the archive will be removed. + **Figyelem**: az archívum törlésre kerül. No comment provided by engineer. @@ -397,7 +401,7 @@ - connect to [directory service](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)! - delivery receipts (up to 20 members). - faster and more stable. - - kapcsolódás a [könyvtár szolgáltatáshoz] (simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2Ld3%3DWpxkKFeXSPv3pwp %2F%3Fv%3D1-2%26dh %3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6glco6bqjETA)4Beklco6bqj) + - kapcsolódás a [könyvtár szolgáltatáshoz](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)! - kézbesítési jelentések (legfeljebb 20 tag). - gyorsabb és stabilabb. No comment provided by engineer. @@ -631,6 +635,7 @@ Admins can block a member for all. + Az adminok egy tagot mindenki számára letilthatnak. No comment provided by engineer. @@ -650,7 +655,7 @@ All chats and messages will be deleted - this cannot be undone! - Minden csevegés és üzenet törlésre kerül - ez nem vonható vissza! + Minden csevegés és üzenet törlésre kerül - ez a művelet nem vonható vissza! No comment provided by engineer. @@ -665,12 +670,12 @@ All messages will be deleted - this cannot be undone! - Minden üzenet törlésre kerül – ez nem vonható vissza! + Minden üzenet törlésre kerül – ez a művelet nem vonható vissza! No comment provided by engineer. All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you. - Minden üzenet törlésre kerül - ezt nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek. + Minden üzenet törlésre kerül - ez a művelet nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek. No comment provided by engineer. @@ -690,6 +695,7 @@ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays. + Minden ismerőse, a beszélgetései és a fájljai biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra. No comment provided by engineer. @@ -724,7 +730,7 @@ Allow sending direct messages to members. - Közvetlen üzenetek küldésének engedélyezése tagok részére. + Közvetlen üzenetek küldésének engedélyezése a tagok számára. No comment provided by engineer. @@ -734,11 +740,12 @@ Allow to irreversibly delete sent messages. (24 hours) - Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése. (24 óra) + Elküldött üzenetek végleges törlésének engedélyezése. (24 óra) No comment provided by engineer. Allow to send SimpleX links. + A SimpleX hivatkozások küldése engedélyezve van. No comment provided by engineer. @@ -773,7 +780,7 @@ Allow your contacts to irreversibly delete sent messages. (24 hours) - Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése ismerősök számára. (24 óra) + Elküldött üzenetek végleges törlésének engedélyezése az ismerősök számára. (24 óra) No comment provided by engineer. @@ -823,6 +830,7 @@ App data migration + Alkalmazásadatok átköltöztetése No comment provided by engineer. @@ -862,14 +870,17 @@ Apply + Alkalmaz No comment provided by engineer. Archive and upload + Archiválás és feltöltés No comment provided by engineer. Archiving database + Adatbázis archiválása No comment provided by engineer. @@ -904,7 +915,7 @@ Authentication failed - Hitelesítés sikertelen + Sikertelen hitelesítés No comment provided by engineer. @@ -1004,7 +1015,7 @@ Both you and your contact can irreversibly delete sent messages. (24 hours) - Mindkét fél visszafordíthatatlanul törölheti az elküldött üzeneteket. (24 óra) + Mindkét fél törölheti véglegesen az elküldött üzeneteket. (24 óra) No comment provided by engineer. @@ -1064,6 +1075,7 @@ Cancel migration + Átköltöztetés megszakítása No comment provided by engineer. @@ -1078,6 +1090,7 @@ Cellular + Mobilhálózat No comment provided by engineer. @@ -1173,6 +1186,7 @@ Chat migrated! + A csevegés átköltöztetve! No comment provided by engineer. @@ -1197,6 +1211,7 @@ Choose _Migrate from another device_ on the new device and scan QR code. + Válassza az _Átköltöztetés egy másik eszközről_ opciót az új eszközön és szkennelje be a QR-kódot. No comment provided by engineer. @@ -1271,6 +1286,7 @@ Confirm network settings + Hálózati beállítások megerősítése No comment provided by engineer. @@ -1285,10 +1301,12 @@ Confirm that you remember database passphrase to migrate it. + Erősítse meg, hogy emlékszik az adatbázis jelmondatára az átköltöztetéshez. No comment provided by engineer. Confirm upload + Feltöltés megerősítése No comment provided by engineer. @@ -1303,7 +1321,7 @@ Connect incognito - Inkognítóban csatlakozva + Kapcsolódás inkognitóban No comment provided by engineer. @@ -1332,17 +1350,17 @@ Ez az egyszer használatos hivatkozása! Connect via contact address - Kapcsolódás ismerős azonosítója által + Csatlakozás ismerős azonosítója által No comment provided by engineer. Connect via link - Kapcsolódás egy hivatkozáson keresztül + Csatlakozás egy hivatkozáson keresztül No comment provided by engineer. Connect via one-time link - Kapcsolódás egyszer használatos hivatkozáson keresztül + Csatlakozás egyszer használatos hivatkozáson keresztül No comment provided by engineer. @@ -1357,7 +1375,7 @@ Ez az egyszer használatos hivatkozása! Connected to desktop - Csatlakozva a számítógéphez + Kapcsolódva a számítógéphez No comment provided by engineer. @@ -1537,7 +1555,7 @@ Ez az egyszer használatos hivatkozása! Created at - Létrehozva ekkor + Létrehozva ekkor: No comment provided by engineer. @@ -1552,6 +1570,7 @@ Ez az egyszer használatos hivatkozása! Creating archive link + Archív hivatkozás létrehozása No comment provided by engineer. @@ -1766,7 +1785,7 @@ Ez az egyszer használatos hivatkozása! Delete contact? This cannot be undone! Ismerős törlése? -Ezt nem vonható vissza! +Ez a művelet nem vonható vissza! No comment provided by engineer. @@ -1776,6 +1795,7 @@ Ezt nem vonható vissza! Delete database from this device + Adatbázis törlése erről az eszközről No comment provided by engineer. @@ -1885,7 +1905,7 @@ Ezt nem vonható vissza! Deleted at - Törölve ekkor + Törölve ekkor: No comment provided by engineer. @@ -2005,7 +2025,7 @@ Ezt nem vonható vissza! Disappears at - Eltűnik ekkor + Eltűnik ekkor: No comment provided by engineer. @@ -2045,7 +2065,7 @@ Ezt nem vonható vissza! Do not send history to new members. - Ne küldjön előzményeket új tagok részére. + Az előzmények ne kerüljenek elküldésre az új tagok számára. No comment provided by engineer. @@ -2070,10 +2090,12 @@ Ezt nem vonható vissza! Download + Letöltés chat item action Download failed + Sikertelen letöltés No comment provided by engineer. @@ -2083,10 +2105,12 @@ Ezt nem vonható vissza! Downloading archive + Archívum letöltése No comment provided by engineer. Downloading link details + Letöltési hivatkozás részletei No comment provided by engineer. @@ -2141,11 +2165,12 @@ Ezt nem vonható vissza! Enable for all - Engedélyezés mindenki részére + Engedélyezés mindenki számára No comment provided by engineer. Enable in direct chats (BETA)! + Engedélyezés a közvetlen csevegésekben (BÉTA)! No comment provided by engineer. @@ -2180,6 +2205,7 @@ Ezt nem vonható vissza! Enabled for + Engedélyezve No comment provided by engineer. @@ -2224,7 +2250,7 @@ Ezt nem vonható vissza! Encrypted message: database migration error - Titkosított üzenet: adatbázis-migrációs hiba + Titkosított üzenet: adatbázis-átköltöztetés hiba notification @@ -2249,7 +2275,7 @@ Ezt nem vonható vissza! Encryption re-negotiation failed. - Titkosítás újraegyeztetése sikertelen. + Sikertelen titkosítás-újraegyeztetés. No comment provided by engineer. @@ -2269,6 +2295,7 @@ Ezt nem vonható vissza! Enter passphrase + Jelmondat megadása No comment provided by engineer. @@ -2303,7 +2330,7 @@ Ezt nem vonható vissza! Enter your name… - Adja meg nevét… + Adjon meg egy nevet… No comment provided by engineer. @@ -2423,6 +2450,7 @@ Ezt nem vonható vissza! Error downloading the archive + Hiba az archívum letöltésekor No comment provided by engineer. @@ -2502,6 +2530,7 @@ Ezt nem vonható vissza! Error saving settings + Hiba a beállítások mentésekor when migrating @@ -2541,7 +2570,7 @@ Ezt nem vonható vissza! Error stopping chat - Hiba a csevegés megállításakor + Hiba a csevegés megszakításakor No comment provided by engineer. @@ -2576,10 +2605,12 @@ Ezt nem vonható vissza! Error uploading the archive + Hiba az archívum feltöltésekor No comment provided by engineer. Error verifying passphrase: + Hiba a jelmondat ellenőrzésekor: No comment provided by engineer. @@ -2634,6 +2665,7 @@ Ezt nem vonható vissza! Exported file doesn't exist + Az exportált fájl nem létezik No comment provided by engineer. @@ -2698,6 +2730,7 @@ Ezt nem vonható vissza! Files and media not allowed + Fájlok és média tartalom küldése le van tiltva No comment provided by engineer. @@ -2712,10 +2745,12 @@ Ezt nem vonható vissza! Finalize migration + Átköltöztetés véglegesítése No comment provided by engineer. Finalize migration on another device. + Átköltöztetés véglegesítése egy másik eszközön. No comment provided by engineer. @@ -2765,18 +2800,22 @@ Ezt nem vonható vissza! Forward + Továbbítás chat item action Forward and save messages + Üzenetek továbbítása és mentése No comment provided by engineer. Forwarded + Továbbított No comment provided by engineer. Forwarded from + Továbbítva innen: No comment provided by engineer. @@ -2866,7 +2905,7 @@ Ezt nem vonható vissza! Group invitation is no longer valid, it was removed by sender. - A csoport meghívó már nem érvényes, el lett távolítva a küldője által. + A csoport meghívó már nem érvényes, a küldője törölte. No comment provided by engineer. @@ -2886,31 +2925,32 @@ Ezt nem vonható vissza! Group members can irreversibly delete sent messages. (24 hours) - Csoporttagok visszafordíthatatlanul törölhetik az elküldött üzeneteket. (24 óra) + A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra) No comment provided by engineer. Group members can send SimpleX links. + A csoport tagjai küldhetnek SimpleX hivatkozásokat. No comment provided by engineer. Group members can send direct messages. - Csoporttagok küldhetnek közvetlen üzeneteket. + A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket. No comment provided by engineer. Group members can send disappearing messages. - Csoporttagok küldhetnek eltűnő üzeneteket. + A csoport tagjai küldhetnek eltűnő üzeneteket. No comment provided by engineer. Group members can send files and media. - Csoporttagok küldhetnek fájlokat és médiatartalmakat. + A csoport tagjai küldhetnek fájlokat és médiatartalmakat. No comment provided by engineer. Group members can send voice messages. - Csoporttagok küldhetnek hangüzeneteket. + A csoport tagjai küldhetnek hangüzeneteket. No comment provided by engineer. @@ -2945,12 +2985,12 @@ Ezt nem vonható vissza! Group will be deleted for all members - this cannot be undone! - Csoport törlésre kerül minden tag számára - ez nem vonható vissza! + Csoport törlésre kerül minden tag számára - ez a művelet nem vonható vissza! No comment provided by engineer. Group will be deleted for you - this cannot be undone! - A csoport törlésre kerül az ön részére - ez nem vonható vissza! + A csoport törlésre kerül az ön számára - ez a művelet nem vonható vissza! No comment provided by engineer. @@ -3000,7 +3040,7 @@ Ezt nem vonható vissza! History is not sent to new members. - Az előzmények nem kerülnek elküldésre új tagok részére. + Az előzmények nem kerülnek elküldésre az új tagok számára. No comment provided by engineer. @@ -3030,6 +3070,7 @@ Ezt nem vonható vissza! Hungarian interface + Magyar kezelőfelület No comment provided by engineer. @@ -3044,7 +3085,7 @@ Ezt nem vonható vissza! If you enter this passcode when opening the app, all app data will be irreversibly removed! - Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat visszafordíthatatlanul törlődik! + Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat véglegesen törlődik! No comment provided by engineer. @@ -3099,10 +3140,12 @@ Ezt nem vonható vissza! Import failed + Sikertelen importálás No comment provided by engineer. Importing archive + Archívum importálása No comment provided by engineer. @@ -3122,6 +3165,7 @@ Ezt nem vonható vissza! In order to continue, chat should be stopped. + A folytatáshoz a csevegést meg kell szakítani. No comment provided by engineer. @@ -3131,6 +3175,7 @@ Ezt nem vonható vissza! In-call sounds + Bejövő hívás csengőhangja No comment provided by engineer. @@ -3242,6 +3287,7 @@ Ezt nem vonható vissza! Invalid migration confirmation + Érvénytelen átköltöztetési visszaigazolás No comment provided by engineer. @@ -3286,17 +3332,17 @@ Ezt nem vonható vissza! Irreversible message deletion - Visszafordíthatatlan üzenettörlés + Végleges üzenettörlés No comment provided by engineer. Irreversible message deletion is prohibited in this chat. - Ebben a csevegésben az üzenetek visszafordíthatatlan törlése le van tiltva. + Ebben a csevegésben az üzenetek végleges törlése le van tiltva. No comment provided by engineer. Irreversible message deletion is prohibited in this group. - Ebben a csoportban az üzenetek visszafordíthatatlan törlése le van tiltva. + Ebben a csoportban az üzenetek végleges törlése le van tiltva. No comment provided by engineer. @@ -3514,7 +3560,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Make profile private! - Tegye priváttá profilját! + Tegye priváttá a profilját! No comment provided by engineer. @@ -3574,7 +3620,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Member will be removed from group - this cannot be undone! - A tag eltávolítása a csoportból - ez nem vonható vissza! + A tag eltávolítása a csoportból - ez a művelet nem vonható vissza! No comment provided by engineer. @@ -3609,6 +3655,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Message source remains private. + Az üzenet forrása titokban marad. No comment provided by engineer. @@ -3618,6 +3665,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Message too large + Az üzenet túl nagy No comment provided by engineer. @@ -3637,34 +3685,42 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery. + Az üzeneteket, fájlokat és hívásokat **végpontok közötti titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi. No comment provided by engineer. Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery. + Az üzeneteket, fájlokat és hívásokat **végpontok közötti kvantumrezisztens titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi. No comment provided by engineer. Migrate device + Eszköz átköltöztetése No comment provided by engineer. Migrate from another device + Átköltöztetés egy másik eszközről No comment provided by engineer. Migrate here + Átköltöztetés ide No comment provided by engineer. Migrate to another device + Átköltöztetés egy másik eszközre No comment provided by engineer. Migrate to another device via QR code. + Átköltöztetés egy másik eszközre QR-kód használatával. No comment provided by engineer. Migrating + Átköltöztetés No comment provided by engineer. @@ -3674,26 +3730,27 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Migration complete + Átköltöztetés befejezve No comment provided by engineer. Migration error: - Migrációs hiba: + Átköltöztetés hiba: No comment provided by engineer. Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat). - Sikertelen migráció. Koppintson a **Kihagyás** lehetőségre az aktuális adatbázis használatának folytatásához. Kérjük, jelentse a problémát az alkalmazás fejlesztőinek csevegésben vagy e-mailben [chat@simplex.chat](mailto:chat@simplex.chat). + Sikertelen átköltöztetés. Koppintson a **Kihagyás** lehetőségre az aktuális adatbázis használatának folytatásához. Jelentse a problémát az alkalmazás fejlesztőinek csevegésben vagy e-mailben [chat@simplex.chat](mailto:chat@simplex.chat). No comment provided by engineer. Migration is completed - A migráció befejeződött + Az átköltöztetés befejeződött No comment provided by engineer. Migrations: %@ - Migrációk: %@ + Átköltöztetések: %@ No comment provided by engineer. @@ -3703,12 +3760,12 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Moderated at - Moderálva ekkor + Moderálva lett ekkor: No comment provided by engineer. Moderated at: %@ - Moderálva ekkor: %@ + Moderálva lett ekkor: %@ copied message info @@ -3718,6 +3775,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! More reliable network connection. + Megbízhatóbb hálózati kapcsolat. No comment provided by engineer. @@ -3757,10 +3815,12 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Network connection + Internetkapcsolat No comment provided by engineer. Network management + Hálózatkezelés No comment provided by engineer. @@ -3875,6 +3935,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! No network connection + Nincs hálózati kapcsolat No comment provided by engineer. @@ -3983,7 +4044,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours) - Visszafordíthatatlanul csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra) + Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti meg őket ). (24 óra) No comment provided by engineer. @@ -4008,7 +4069,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours) - Csak az ismerős tud visszafordíthatatlanul törölni üzeneteket (megjelölheti őket törlésre). (24 óra) + Csak az ismerőse tudja az üzeneteket véglegesen törölni (ön csak törlésre jelölheti meg azokat). (24 óra) No comment provided by engineer. @@ -4053,6 +4114,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Open migration to another device + Átköltöztetés megkezdése egy másik eszközre authentication reason @@ -4072,6 +4134,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Or paste archive link + Vagy az archívum hivatkozásának beillesztése No comment provided by engineer. @@ -4081,6 +4144,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Or securely share this file link + Vagy a fájl hivítkozásának biztonságos megosztása No comment provided by engineer. @@ -4090,6 +4154,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Other + További No comment provided by engineer. @@ -4129,7 +4194,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Password to show - Jelszó mutatása + Jelszó megjelenítése No comment provided by engineer. @@ -4174,6 +4239,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Picture-in-picture calls + Kép a képben hívások No comment provided by engineer. @@ -4188,7 +4254,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Please check your network connection with %@ and try again. - Kérjük, ellenőrizze hálózati kapcsolatát a(z) %@ segítségével, és próbálja újra. + Ellenőrizze hálózati kapcsolatát a(z) %@ segítségével, és próbálja újra. No comment provided by engineer. @@ -4198,6 +4264,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Please confirm that network settings are correct for this device. + Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz. No comment provided by engineer. @@ -4219,7 +4286,7 @@ Hiba: %@ Please enter the previous password after restoring database backup. This action can not be undone. - Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem visszavonható. + Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem vonható vissza. No comment provided by engineer. @@ -4234,7 +4301,7 @@ Hiba: %@ Please restart the app and migrate the database to enable push notifications. - Indítsa újra az alkalmazást az adatbázis-migrációhoz szükséges push értesítések engedélyezéséhez. + Indítsa újra az alkalmazást az adatbázis-átköltöztetéséhez szükséges push értesítések engedélyezéséhez. No comment provided by engineer. @@ -4349,11 +4416,12 @@ Hiba: %@ Prohibit sending SimpleX links. + A SimpleX hivatkozások küldése le van tiltva. No comment provided by engineer. Prohibit sending direct messages to members. - Közvetlen üzenetek küldésének letiltása tagok részére. + Közvetlen üzenetek küldésének letiltása a tagok számára. No comment provided by engineer. @@ -4373,7 +4441,7 @@ Hiba: %@ Protect app screen - App képernyőjének védelme + Alkalmazás képernyőjének védelme No comment provided by engineer. @@ -4398,10 +4466,12 @@ Hiba: %@ Push server + Push kiszolgáló No comment provided by engineer. Quantum resistant encryption + Kvantumrezisztens titkosítás No comment provided by engineer. @@ -4426,17 +4496,17 @@ Hiba: %@ Read more in [User Guide](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address). - További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address). + További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address). No comment provided by engineer. Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). - További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). + További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode). No comment provided by engineer. Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends). - További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends). + További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends). No comment provided by engineer. @@ -4456,7 +4526,7 @@ Hiba: %@ Received at - Fogadva ekkor + Fogadva ekkor: No comment provided by engineer. @@ -4481,6 +4551,7 @@ Hiba: %@ Receiving concurrency + Egyidejű fogadás No comment provided by engineer. @@ -4495,11 +4566,12 @@ Hiba: %@ Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). - Legutóbbi előzmények és továbbfejlesztett [könyvtárbot] (simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2TxW3dfMfxy 3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gloncbqjek4gloncbqjek. + Legutóbbi előzmények és továbbfejlesztett [könyvtárbot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). No comment provided by engineer. Recipient(s) can't see who this message is from. + A címzett(ek) nem látja(k), hogy kitől származik ez az üzenet. No comment provided by engineer. @@ -4599,10 +4671,12 @@ Hiba: %@ Repeat download + Letöltés ismét No comment provided by engineer. Repeat import + Importálás ismét No comment provided by engineer. @@ -4612,6 +4686,7 @@ Hiba: %@ Repeat upload + Feltöltés ismét No comment provided by engineer. @@ -4716,6 +4791,7 @@ Hiba: %@ Safer groups + Biztonságosabb csoportok No comment provided by engineer. @@ -4800,6 +4876,7 @@ Hiba: %@ Saved + Mentett No comment provided by engineer. @@ -4809,6 +4886,7 @@ Hiba: %@ Saved from + Mentve innen: No comment provided by engineer. @@ -4848,7 +4926,7 @@ Hiba: %@ Search bar accepts invitation links. - A keresősáv fogadja a meghívó hivatkozásokat. + A keresősáv elfogadja a meghívó hivatkozásokat. No comment provided by engineer. @@ -4918,7 +4996,7 @@ Hiba: %@ Send direct message to connect - A kapcsolódáshoz közvetlen üzenet küldése + Közvetlen üzenet küldése a csatlakozáshoz No comment provided by engineer. @@ -4963,7 +5041,7 @@ Hiba: %@ Send up to 100 last messages to new members. - Utolsó 100 üzenet küldése új tagoknak. + Az utolsó 100 üzenet elküldése az új tagoknak. No comment provided by engineer. @@ -5018,7 +5096,7 @@ Hiba: %@ Sent at - Elküldve ekkor + Elküldve ekkor: No comment provided by engineer. @@ -5053,7 +5131,7 @@ Hiba: %@ Server test failed! - A kiszolgáló tesztje sikertelen! + Sikertelen kiszolgáló-teszt! No comment provided by engineer. @@ -5093,6 +5171,7 @@ Hiba: %@ Set passphrase + Jelmondat beállítása No comment provided by engineer. @@ -5102,7 +5181,7 @@ Hiba: %@ Set the message shown to new members! - Megjelenő üzenetet beállítása új tagok részére! + Megjelenő üzenet beállítása az új tagok számára! No comment provided by engineer. @@ -5152,6 +5231,7 @@ Hiba: %@ Show QR code + QR-kód megjelenítése No comment provided by engineer. @@ -5161,7 +5241,7 @@ Hiba: %@ Show developer options - Fejlesztői beállítások mutatása + Fejlesztői beállítások megjelenítése No comment provided by engineer. @@ -5176,7 +5256,7 @@ Hiba: %@ Show: - Mutat: + Megjelenítés: No comment provided by engineer. @@ -5236,10 +5316,12 @@ Hiba: %@ SimpleX links are prohibited in this group. + A SimpleX hivatkozások küldése ebben a csoportban le van tiltva. No comment provided by engineer. SimpleX links not allowed + A SimpleX hivatkozások küldése le van tiltva No comment provided by engineer. @@ -5289,41 +5371,42 @@ Hiba: %@ Start migration - Migráció indítása + Átköltöztetés indítása No comment provided by engineer. Stop - Megállítás + Megszakítás No comment provided by engineer. Stop SimpleX - A SimpleX megállítása + A SimpleX megszakítása authentication reason Stop chat + Csevegési szolgáltatás megszakítása No comment provided by engineer. Stop chat to enable database actions - Csevegés leállítása az adatbázis-műveletek engedélyezéséhez + Csevegés megszakítása az adatbázis-műveletek engedélyezéséhez No comment provided by engineer. Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped. - A csevegés leállítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés leállítása alatt nem tud üzeneteket fogadni és küldeni. + A csevegés megszakítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés megszakítása alatt nem tud üzeneteket fogadni és küldeni. No comment provided by engineer. Stop chat? - Csevegési szolgáltatás megállítása? + Csevegési szolgáltatás megszakítása? No comment provided by engineer. Stop file - Fájl megállítása + Fájl megszakítása cancel file action @@ -5338,16 +5421,17 @@ Hiba: %@ Stop sharing - Megosztás leállítása + Megosztás megszakítása No comment provided by engineer. Stop sharing address? - Címmegosztás megállítása? + Címmegosztás megszakítása? No comment provided by engineer. Stopping chat + Csevegés megszakítása No comment provided by engineer. @@ -5397,7 +5481,7 @@ Hiba: %@ Tap button - Koppintson a gombra + Koppintson a No comment provided by engineer. @@ -5417,7 +5501,7 @@ Hiba: %@ Tap to join incognito - Koppintson az inkognitómódhoz való csatlakozáshoz + Koppintson az inkognitóban való csatlakozáshoz No comment provided by engineer. @@ -5539,7 +5623,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő. The old database was not removed during the migration, it can be deleted. - A régi adatbázis nem került eltávolításra a migráció során, így törölhető. + A régi adatbázis nem került eltávolításra az átköltöztetés során, így törölhető. No comment provided by engineer. @@ -5594,15 +5678,17 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő. This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost. - Ez a művelet nem vonható vissza - profilok, ismerősök, üzenetek és fájlok visszafordíthatatlanul törlésre kerülnek. + Ez a művelet nem vonható vissza - profiljai, ismerősei, üzenetei és fájljai visszafordíthatatlanul törlésre kerülnek. No comment provided by engineer. This chat is protected by end-to-end encryption. + Ez a csevegés végpontok közötti titkosítással védett. E2EE info chat item This chat is protected by quantum resistant end-to-end encryption. + Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett. E2EE info chat item @@ -5769,7 +5855,7 @@ A funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befej Unexpected migration state - Váratlan migrációs állapot + Váratlan átköltöztetési állapot No comment provided by engineer. @@ -5856,7 +5942,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Up to 100 last messages are sent to new members. - Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagoknak. + Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagok számára. No comment provided by engineer. @@ -5901,6 +5987,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Upload failed + Sikertelen feltöltés No comment provided by engineer. @@ -5910,6 +5997,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Uploading archive + Archívum feltöltése No comment provided by engineer. @@ -5964,6 +6052,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Use the app while in the call. + Használja az alkalmazást hívás közben. No comment provided by engineer. @@ -6003,10 +6092,12 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Verify database passphrase + Adatbázis jelmondatának ellenőrzése No comment provided by engineer. Verify passphrase + Jelmondat ellenőrzése No comment provided by engineer. @@ -6071,6 +6162,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Voice messages not allowed + A hangüzenetek küldése le van tiltva No comment provided by engineer. @@ -6105,6 +6197,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Warning: starting chat on multiple devices is not supported and will cause message delivery failures + Figyelmeztetés: a csevegés elindítása egyszerre több eszközön nem támogatott, továbbá üzenetkézbesítési hibákat okozhat No comment provided by engineer. @@ -6129,6 +6222,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Welcome message is too long + Az üdvözlő üzenet túl hosszú No comment provided by engineer. @@ -6143,6 +6237,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola When connecting audio and video calls. + Amikor egy bejövő hang- vagy videóhívás érkezik. No comment provided by engineer. @@ -6157,14 +6252,17 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola WiFi + Wi-Fi No comment provided by engineer. Will be enabled in direct chats! + A közvetlen csevegésekben engedélyezve lesz! No comment provided by engineer. Wired ethernet + Vezetékes Ethernet No comment provided by engineer. @@ -6204,6 +6302,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You **must not** use the same database on two devices. + **Nem szabad** ugyanazt az adatbázist használni egyszerre két eszközön. No comment provided by engineer. @@ -6223,7 +6322,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You are already connected to %@. - Már csatlakozva van ehhez: %@. + Már kapcsolódva van hozzá: %@. No comment provided by engineer. @@ -6238,7 +6337,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You are already in group %@. - Már a %@ csoportban van. + Már a(z) %@ csoport tagja. No comment provided by engineer. @@ -6295,6 +6394,7 @@ Csatlakozási kérés megismétlése? You can give another try. + Megpróbálhatja még egyszer. No comment provided by engineer. @@ -6391,7 +6491,7 @@ Kapcsolódási kérés megismétlése? You invited a contact - Meghívott egy ismerőst + Meghívta egy ismerősét No comment provided by engineer. @@ -6511,12 +6611,12 @@ Kapcsolódási kérés megismétlése? Your chat database - Csevegési adatbázisa + Csevegési adatbázis No comment provided by engineer. Your chat database is not encrypted - set passphrase to encrypt it. - Csevegési adatbázisa nincs titkosítva – adjon meg egy jelmondatot a titkosításhoz. + A csevegési adatbázis nincs titkosítva – adjon meg egy jelmondatot a titkosításhoz. No comment provided by engineer. @@ -6573,7 +6673,7 @@ Megszakíthatja ezt a kapcsolatfelvételt és törölheti az ismerőst (ezt kés Your profile **%@** will be shared. - **%@** nevű profilja megosztásra kerül. + A(z) **%@** nevű profilja megosztásra fog kerülni. No comment provided by engineer. @@ -6585,7 +6685,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. Your profile, contacts and delivered messages are stored on your device. - Profilja, ismerősök és az elküldött üzenetek az eszközön kerülnek tárolásra. + Profilja, ismerősei és az elküldött üzenetei az eszközön kerülnek tárolásra. No comment provided by engineer. @@ -6635,7 +6735,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. above, then choose: - fent, majd válassza ki: + gombra fent, majd válassza ki: No comment provided by engineer. @@ -6650,6 +6750,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. admins + adminok feature role @@ -6664,6 +6765,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. all members + minden tag feature role @@ -6673,7 +6775,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. and %lld other events - és %lld egyéb esemény + és %lld további esemény No comment provided by engineer. @@ -6738,7 +6840,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. changed address for you - Cím megváltoztatva + cím megváltoztatva chat item text @@ -6823,7 +6925,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. connection established - Kapcsolat létrehozva + kapcsolat létrehozva chat list item title (it should not be shown @@ -6858,7 +6960,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. database version is newer than the app, but no down migration for: %@ - az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé migráció: %@ + az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés ehhez: %@ No comment provided by engineer. @@ -6898,7 +7000,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. different migration in the app/database: %@ / %@ - különböző migrációk az alkalmazásban/adatbázisban: %@ / %@ + különböző átköltöztetések az alkalmazásban/adatbázisban: %@ / %@ No comment provided by engineer. @@ -6928,7 +7030,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. enabled for contact - engedélyezve ismerős részére + engedélyezve az ismerős számára enabled status @@ -6998,6 +7100,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. forwarded + továbbított No comment provided by engineer. @@ -7037,7 +7140,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. incognito via one-time link - inkognitó egyszer használatos hivatkozáson keresztül + inkognitó az egyszer használatos hivatkozáson keresztül chat list item description @@ -7067,22 +7170,22 @@ A SimpleX kiszolgálók nem látjhatják profilját. invited - meghívott + meghívta No comment provided by engineer. invited %@ - %@ meghívott + meghívta %@-t rcv group event chat item invited to connect - meghívott, hogy csatlakozzon + meghívta, hogy csatlakozzon chat list item title invited via your group link - meghívott a csoport hivatkozásán keresztül + meghívta a csoport hivatkozásán keresztül rcv group event chat item @@ -7097,7 +7200,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. left - elhagyta + elhagyta a csoportot rcv group event chat item @@ -7142,7 +7245,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. moderated by %@ - %@ által moderálva + moderálva lett %@ által marked deleted chat item preview text @@ -7209,6 +7312,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. owners + tulajdonosok feature role @@ -7218,6 +7322,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. quantum resistant e2e encryption + végpontok közötti kvantumrezisztens titkosítás chat item text @@ -7262,10 +7367,12 @@ A SimpleX kiszolgálók nem látjhatják profilját. saved + mentett No comment provided by engineer. saved from %@ + mentve innen: %@ No comment provided by engineer. @@ -7305,6 +7412,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. standard end-to-end encryption + szabványos végpontok közötti titkosítás chat item text @@ -7409,6 +7517,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. you + ön No comment provided by engineer. @@ -7448,7 +7557,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. you left - elhagyta + elhagyta a csoportot snd group event chat item 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 87ab966e1d..76f634f917 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -2805,6 +2805,7 @@ Dit kan niet ongedaan gemaakt worden! Forward and save messages + Berichten doorsturen en opslaan No comment provided by engineer. @@ -3174,6 +3175,7 @@ Dit kan niet ongedaan gemaakt worden! In-call sounds + Geluiden tijdens het bellen No comment provided by engineer. @@ -3653,6 +3655,7 @@ Dit is jouw link voor groep %@! Message source remains private. + Berichtbron blijft privé. No comment provided by engineer. @@ -3772,6 +3775,7 @@ Dit is jouw link voor groep %@! More reliable network connection. + Betrouwbaardere netwerkverbinding. No comment provided by engineer. @@ -3816,6 +3820,7 @@ Dit is jouw link voor groep %@! Network management + Netwerkbeheer No comment provided by engineer. @@ -4546,6 +4551,7 @@ Fout: %@ Receiving concurrency + Gelijktijdig ontvangen No comment provided by engineer. @@ -6231,6 +6237,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak When connecting audio and video calls. + Bij het verbinden van audio- en video-oproepen. No comment provided by engineer. @@ -6250,6 +6257,7 @@ Om verbinding te maken, vraagt u uw contact om een andere verbinding link te mak Will be enabled in direct chats! + Wordt ingeschakeld in directe chats! No comment provided by engineer. 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 f4187ec1db..602519a962 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + SimpleX bağlantıları göndilmesine izin ver. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Hücresel Veri No comment provided by engineer. @@ -2088,6 +2090,7 @@ Bu geri alınamaz! Download + İndir chat item action @@ -2202,6 +2205,7 @@ Bu geri alınamaz! Enabled for + Şunlar için etkinleştirildi No comment provided by engineer. @@ -2726,6 +2730,7 @@ Bu geri alınamaz! Files and media not allowed + Dosyalar ve medyaya izin verilmiyor No comment provided by engineer. @@ -2795,18 +2800,22 @@ Bu geri alınamaz! Forward + İlet chat item action Forward and save messages + Mesajları ilet ve kaydet No comment provided by engineer. Forwarded + İletildi No comment provided by engineer. Forwarded from + Şuradan iletildi No comment provided by engineer. @@ -2921,6 +2930,7 @@ Bu geri alınamaz! Group members can send SimpleX links. + Grup üyeleri SimpleX bağlantıları gönderebilir. No comment provided by engineer. @@ -3165,6 +3175,7 @@ Bu geri alınamaz! In-call sounds + Arama içi sesler No comment provided by engineer. @@ -3644,6 +3655,7 @@ Bu senin grup için bağlantın %@! Message source remains private. + Mesaj kaynağı gizli kalır. No comment provided by engineer. @@ -3763,6 +3775,7 @@ Bu senin grup için bağlantın %@! More reliable network connection. + Daha güvenilir ağ bağlantısı. No comment provided by engineer. @@ -3802,10 +3815,12 @@ Bu senin grup için bağlantın %@! Network connection + Ağ bağlantısı No comment provided by engineer. Network management + Ağ yönetimi No comment provided by engineer. @@ -3920,6 +3935,7 @@ Bu senin grup için bağlantın %@! No network connection + Ağ bağlantısı yok No comment provided by engineer. @@ -4138,6 +4154,7 @@ Bu senin grup için bağlantın %@! Other + Diğer No comment provided by engineer. @@ -4399,6 +4416,7 @@ Hata: %@ Prohibit sending SimpleX links. + SimpleX bağlantısı gönderimini yasakla. No comment provided by engineer. @@ -4533,6 +4551,7 @@ Hata: %@ Receiving concurrency + Eşzamanlılık alınıyor No comment provided by engineer. @@ -4552,6 +4571,7 @@ Hata: %@ Recipient(s) can't see who this message is from. + Alıcı(lar) bu mesajın kimden geldiğini göremez. No comment provided by engineer. @@ -4856,6 +4876,7 @@ Hata: %@ Saved + Kaydedildi No comment provided by engineer. @@ -4865,6 +4886,7 @@ Hata: %@ Saved from + Tarafından kaydedildi No comment provided by engineer. @@ -5294,10 +5316,12 @@ Hata: %@ SimpleX links are prohibited in this group. + SimpleX bağlantıları bu grupta yasaklandı. No comment provided by engineer. SimpleX links not allowed + SimpleX bağlantılarına izin verilmiyor No comment provided by engineer. @@ -6138,6 +6162,7 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste Voice messages not allowed + Sesli mesajlara izin verilmiyor No comment provided by engineer. @@ -6212,6 +6237,7 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste When connecting audio and video calls. + Sesli ve görüntülü aramalara bağlanırken. No comment provided by engineer. @@ -6226,14 +6252,17 @@ Bağlanmak için lütfen kişinizden başka bir bağlantı oluşturmasını iste WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + Doğrudan sohbetlerde etkinleştirilecektir! No comment provided by engineer. Wired ethernet + Kablolu ethernet No comment provided by engineer. @@ -6721,6 +6750,7 @@ SimpleX sunucuları profilinizi göremez. admins + yöneticiler feature role @@ -6735,6 +6765,7 @@ SimpleX sunucuları profilinizi göremez. all members + bütün üyeler feature role @@ -7069,6 +7100,7 @@ SimpleX sunucuları profilinizi göremez. forwarded + iletildi No comment provided by engineer. @@ -7280,6 +7312,7 @@ SimpleX sunucuları profilinizi göremez. owners + sahipler feature role @@ -7334,10 +7367,12 @@ SimpleX sunucuları profilinizi göremez. saved + kaydedildi No comment provided by engineer. saved from %@ + %@ tarafından kaydedildi No comment provided by engineer. @@ -7482,6 +7517,7 @@ SimpleX sunucuları profilinizi göremez. you + sen No comment provided by engineer. diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 8348982190..3482dfe262 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "administrador"; +/* feature role */ +"admins" = "administradores"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Los administradores pueden bloquear a un miembro para los demás."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Todos los miembros del grupo permanecerán conectados."; +/* feature role */ +"all members" = "todos los miembros"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Todos los mensajes serán borrados. ¡No podrá deshacerse!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Se permite enviar archivos y multimedia."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Permitir enviar enlaces SimpleX."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Permites enviar mensajes de voz."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "No se puede recibir el archivo"; +/* No comment provided by engineer. */ +"Cellular" = "Móvil"; + /* No comment provided by engineer. */ "Change" = "Cambiar"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Degradar y abrir Chat"; +/* chat item action */ +"Download" = "Descargar"; + /* No comment provided by engineer. */ "Download failed" = "Descarga fallida"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "activado"; +/* No comment provided by engineer. */ +"Enabled for" = "Activar para"; + /* enabled status */ "enabled for contact" = "activado para el contacto"; @@ -1830,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Los archivos y multimedia no están permitidos en este grupo."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Archivos y multimedia no permitidos"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "¡Archivos y multimedia no permitidos!"; @@ -1869,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Para consola"; +/* chat item action */ +"Forward" = "Reenviar"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Reenviar y guardar mensajes"; + +/* No comment provided by engineer. */ +"forwarded" = "reenviado"; + +/* No comment provided by engineer. */ +"Forwarded" = "Reenviado"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Reenviado por"; + /* No comment provided by engineer. */ "Found desktop" = "Ordenador encontrado"; @@ -1947,6 +1983,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Los miembros del grupo pueden enviar archivos y multimedia."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Los miembros del grupo pueden enviar enlaces SimpleX."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Los miembros del grupo pueden enviar mensajes de voz."; @@ -2088,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "En respuesta a"; +/* No comment provided by engineer. */ +"In-call sounds" = "Sonido de llamada"; + /* No comment provided by engineer. */ "Incognito" = "Incógnito"; @@ -2433,6 +2475,9 @@ /* notification */ "message received" = "mensaje recibido"; +/* No comment provided by engineer. */ +"Message source remains private." = "El autor del mensaje se mantiene privado."; + /* No comment provided by engineer. */ "Message text" = "Contacto y texto"; @@ -2517,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "¡Pronto habrá más mejoras!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Conexión de red más fiable."; + /* item status description */ "Most likely this connection is deleted." = "Probablemente la conexión ha sido eliminada."; @@ -2538,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Servidores y Redes"; +/* No comment provided by engineer. */ +"Network connection" = "Conexión de red"; + +/* No comment provided by engineer. */ +"Network management" = "Gestión de la red"; + /* No comment provided by engineer. */ "Network settings" = "Configuración de red"; @@ -2616,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Sin historial"; +/* No comment provided by engineer. */ +"No network connection" = "Sin conexión de red"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Sin permiso para grabar mensajes de voz"; @@ -2762,9 +2819,15 @@ /* No comment provided by engineer. */ "Or show this code" = "O mostrar este código"; +/* No comment provided by engineer. */ +"Other" = "Otro"; + /* member role */ "owner" = "propietario"; +/* feature role */ +"owners" = "propietarios"; + /* No comment provided by engineer. */ "Passcode" = "Código de acceso"; @@ -2930,6 +2993,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "No permitir el envío de archivos y multimedia."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "No permitir el envío de enlaces SimpleX."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "No se permiten mensajes de voz."; @@ -3008,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "La dirección de recepción pasará a otro servidor. El cambio se completará cuando el remitente esté en línea."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Concurrencia en la recepción"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Se detendrá la recepción del archivo."; @@ -3017,6 +3086,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Historial reciente y [bot del directorio](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) mejorados."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Los destinatarios no ven de quién procede este mensaje."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Los destinatarios ven actualizarse mientras escribes."; @@ -3212,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "¿Guardar mensaje de bienvenida?"; +/* No comment provided by engineer. */ +"saved" = "guardado"; + +/* No comment provided by engineer. */ +"Saved" = "Guardado"; + +/* No comment provided by engineer. */ +"Saved from" = "Guardado desde"; + +/* No comment provided by engineer. */ +"saved from %@" = "Guardado desde %@"; + /* message info title */ "Saved message" = "Mensaje guardado"; @@ -3479,6 +3563,12 @@ /* chat feature */ "SimpleX links" = "Enlaces SimpleX"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "Los enlaces SimpleX no se permiten en este grupo."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "Enlaces SimpleX no permitidos"; + /* No comment provided by engineer. */ "SimpleX Lock" = "Bloqueo SimpleX"; @@ -3636,10 +3726,10 @@ "Thank you for installing SimpleX Chat!" = "¡Gracias por instalar SimpleX Chat!"; /* No comment provided by engineer. */ -"Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "Gracias a los usuarios: [contribuye vía Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)!"; +"Thanks to the users – [contribute via Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#help-translating-simplex-chat)!" = "¡Nuestro agradecimiento a todos los colaboradores, [puedes contribuir a través de Weblate](https://github.com/simplex-chat/simplex-chat/tree/stable#traducir-el-aplicaciones)!"; /* No comment provided by engineer. */ -"Thanks to the users – contribute via Weblate!" = "¡Gracias a los colaboradores! Contribuye a través de Weblate."; +"Thanks to the users – contribute via Weblate!" = "¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate"; /* No comment provided by engineer. */ "The 1st platform without any user identifiers – private by design." = "La primera plataforma sin identificadores de usuario: diseñada para la privacidad."; @@ -4043,6 +4133,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Los mensajes de voz no están permitidos en este grupo."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Mensajes de voz no permitidos"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "¡Mensajes de voz no permitidos!"; @@ -4094,12 +4187,24 @@ /* No comment provided by engineer. */ "When available" = "Si disponibles"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Al iniciar llamadas de audio y vídeo."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Cuando alguien solicite conectarse podrás aceptar o rechazar la solicitud."; /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Cuando compartes un perfil incógnito con alguien, este perfil también se usará para los grupos a los que te inviten."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "¡Será habilitado en los chats directos!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Ethernet por cable"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Con cifrado de archivos y multimedia."; @@ -4121,6 +4226,9 @@ /* pref value */ "yes" = "sí"; +/* No comment provided by engineer. */ +"you" = "tu"; + /* No comment provided by engineer. */ "You" = "Tú"; diff --git a/apps/ios/hu.lproj/Localizable.strings b/apps/ios/hu.lproj/Localizable.strings index f9a470fbbc..deb4e02a51 100644 --- a/apps/ios/hu.lproj/Localizable.strings +++ b/apps/ios/hu.lproj/Localizable.strings @@ -20,7 +20,7 @@ "_italic_" = "\\_dőlt_"; /* No comment provided by engineer. */ -"- connect to [directory service](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- delivery receipts (up to 20 members).\n- faster and more stable." = "- kapcsolódás a [könyvtár szolgáltatáshoz] (simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2Ld3%3DWpxkKFeXSPv3pwp %2F%3Fv%3D1-2%26dh %3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6glco6bqjETA)4Beklco6bqj)\n- kézbesítési jelentések (legfeljebb 20 tag).\n- gyorsabb és stabilabb."; +"- connect to [directory service](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- delivery receipts (up to 20 members).\n- faster and more stable." = "- kapcsolódás a [könyvtár szolgáltatáshoz](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion) (BETA)!\n- kézbesítési jelentések (legfeljebb 20 tag).\n- gyorsabb és stabilabb."; /* No comment provided by engineer. */ "- more stable message delivery.\n- a bit better groups.\n- and more!" = "- stabilabb üzenetkézbesítés.\n- valamivel jobb csoportok.\n- és még sok más!"; @@ -85,6 +85,9 @@ /* No comment provided by engineer. */ "**Most private**: do not use SimpleX Chat notifications server, check messages periodically in the background (depends on how often you use the app)." = "**Legprivátabb**: ne használja a SimpleX Chat értesítési szervert, rendszeresen ellenőrizze az üzeneteket a háttérben (attól függően, hogy milyen gyakran használja az alkalmazást)."; +/* No comment provided by engineer. */ +"**Please note**: using the same database on two devices will break the decryption of messages from your connections, as a security protection." = "**Megjegyzés**: ha két eszközön is ugyanazt az adatbázist használja, akkor biztonsági védelemként megszakítja a kapcsolataiból érkező üzenetek visszafejtését."; + /* No comment provided by engineer. */ "**Please note**: you will NOT be able to recover or change passphrase if you lose it." = "**Figyelem**: NEM tudja visszaállítani vagy megváltoztatni jelmondatát, ha elveszíti azt."; @@ -94,6 +97,9 @@ /* No comment provided by engineer. */ "**Warning**: Instant push notifications require passphrase saved in Keychain." = "**Figyelmeztetés**: Az azonnali push-értesítésekhez a kulcstárolóban tárolt jelmondat megadása szükséges."; +/* No comment provided by engineer. */ +"**Warning**: the archive will be removed." = "**Figyelem**: az archívum törlésre kerül."; + /* No comment provided by engineer. */ "*bold*" = "\\*félkövér*"; @@ -104,7 +110,7 @@ "## History" = "## Előzmények"; /* copied message info */ -"## In reply to" = "## Válaszul erre"; +"## In reply to" = "## Válaszul erre:"; /* No comment provided by engineer. */ "#secret#" = "#titkos#"; @@ -136,6 +142,9 @@ /* No comment provided by engineer. */ "%@ connected" = "%@ csatlakozott"; +/* No comment provided by engineer. */ +"%@ downloaded" = "%@ letöltve"; + /* notification title */ "%@ is connected!" = "%@ csatlakozott!"; @@ -148,6 +157,9 @@ /* No comment provided by engineer. */ "%@ servers" = "%@ kiszolgáló"; +/* No comment provided by engineer. */ +"%@ uploaded" = "%@ feltöltve"; + /* notification title */ "%@ wants to connect!" = "%@ csatlakozni szeretne!"; @@ -176,7 +188,7 @@ "%d sec" = "%d mp"; /* integrity error chat item */ -"%d skipped message(s)" = "%d kihagyott üzenet"; +"%d skipped message(s)" = "%d üzenet kihagyva"; /* time interval */ "%d weeks" = "%d hét"; @@ -209,7 +221,7 @@ "%lld messages marked deleted" = "%lld törlésre megjelölt üzenet"; /* No comment provided by engineer. */ -"%lld messages moderated by %@" = "%@ %lld üzenetet moderált"; +"%lld messages moderated by %@" = "%lld üzenet moderálva lett %@ által"; /* No comment provided by engineer. */ "%lld minutes" = "%lld perc"; @@ -248,7 +260,7 @@ "%u messages failed to decrypt." = "%u üzenet visszafejtése sikertelen."; /* No comment provided by engineer. */ -"%u messages skipped." = "%u kihagyott üzenet."; +"%u messages skipped." = "%u üzenet kihagyva."; /* No comment provided by engineer. */ "`a + b`" = "a + b"; @@ -323,7 +335,7 @@ "About SimpleX Chat" = "A SimpleX Chat névjegye"; /* No comment provided by engineer. */ -"above, then choose:" = "fent, majd válassza ki:"; +"above, then choose:" = "gombra fent, majd válassza ki:"; /* No comment provided by engineer. */ "Accent color" = "Kiemelő szín"; @@ -377,6 +389,12 @@ /* member role */ "admin" = "admin"; +/* feature role */ +"admins" = "adminok"; + +/* No comment provided by engineer. */ +"Admins can block a member for all." = "Az adminok egy tagot mindenki számára letilthatnak."; + /* No comment provided by engineer. */ "Admins can create the links to join groups." = "Az adminok hivatkozásokat hozhatnak létre a csoportokhoz való csatlakozáshoz."; @@ -393,7 +411,7 @@ "All app data is deleted." = "Minden alkalmazásadat törölve."; /* No comment provided by engineer. */ -"All chats and messages will be deleted - this cannot be undone!" = "Minden csevegés és üzenet törlésre kerül - ez nem vonható vissza!"; +"All chats and messages will be deleted - this cannot be undone!" = "Minden csevegés és üzenet törlésre kerül - ez a művelet nem vonható vissza!"; /* No comment provided by engineer. */ "All data is erased when it is entered." = "A jelkód megadása után minden adat törlésre kerül."; @@ -401,11 +419,14 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Minden csoporttag csatlakoztatva marad."; -/* No comment provided by engineer. */ -"All messages will be deleted - this cannot be undone!" = "Minden üzenet törlésre kerül – ez nem vonható vissza!"; +/* feature role */ +"all members" = "minden tag"; /* No comment provided by engineer. */ -"All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." = "Minden üzenet törlésre kerül - ezt nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek."; +"All messages will be deleted - this cannot be undone!" = "Minden üzenet törlésre kerül – ez a művelet nem vonható vissza!"; + +/* No comment provided by engineer. */ +"All messages will be deleted - this cannot be undone! The messages will be deleted ONLY for you." = "Minden üzenet törlésre kerül - ez a művelet nem vonható vissza! Az üzenetek CSAK az ön számára törlődnek."; /* No comment provided by engineer. */ "All new messages from %@ will be hidden!" = "Minden új üzenet elrejtésre kerül tőle: %@!"; @@ -416,6 +437,9 @@ /* No comment provided by engineer. */ "All your contacts will remain connected. Profile update will be sent to your contacts." = "Ismerőseivel kapcsolatban marad. A profil változtatások frissítésre kerülnek az ismerősöknél."; +/* No comment provided by engineer. */ +"All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays." = "Minden ismerőse, a beszélgetései és a fájljai biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra."; + /* No comment provided by engineer. */ "Allow" = "Engedélyezés"; @@ -435,17 +459,20 @@ "Allow message reactions." = "Üzenetreakciók engedélyezése."; /* No comment provided by engineer. */ -"Allow sending direct messages to members." = "Közvetlen üzenetek küldésének engedélyezése tagok részére."; +"Allow sending direct messages to members." = "Közvetlen üzenetek küldésének engedélyezése a tagok számára."; /* No comment provided by engineer. */ "Allow sending disappearing messages." = "Eltűnő üzenetek küldésének engedélyezése."; /* No comment provided by engineer. */ -"Allow to irreversibly delete sent messages. (24 hours)" = "Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése. (24 óra)"; +"Allow to irreversibly delete sent messages. (24 hours)" = "Elküldött üzenetek végleges törlésének engedélyezése. (24 óra)"; /* No comment provided by engineer. */ "Allow to send files and media." = "Fájlok és médiatartalom küldésének engedélyezése."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "A SimpleX hivatkozások küldése engedélyezve van."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Hangüzenetek küldésének engedélyezése."; @@ -462,7 +489,7 @@ "Allow your contacts to call you." = "Hívások engedélyezése ismerősök számára."; /* No comment provided by engineer. */ -"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "Elküldött üzenetek visszafordíthatatlan törlésének engedélyezése ismerősök számára. (24 óra)"; +"Allow your contacts to irreversibly delete sent messages. (24 hours)" = "Elküldött üzenetek végleges törlésének engedélyezése az ismerősök számára. (24 óra)"; /* No comment provided by engineer. */ "Allow your contacts to send disappearing messages." = "Eltűnő üzenetek engedélyezése ismerősök számára."; @@ -489,7 +516,7 @@ "An empty chat profile with the provided name is created, and the app opens as usual." = "Egy üres csevegési profil jön létre a megadott névvel, és az alkalmazás a szokásos módon megnyílik."; /* No comment provided by engineer. */ -"and %lld other events" = "és %lld egyéb esemény"; +"and %lld other events" = "és %lld további esemény"; /* No comment provided by engineer. */ "Answer call" = "Hívás fogadása"; @@ -497,6 +524,9 @@ /* No comment provided by engineer. */ "App build: %@" = "Az alkalmazás build száma: %@"; +/* No comment provided by engineer. */ +"App data migration" = "Alkalmazásadatok átköltöztetése"; + /* No comment provided by engineer. */ "App encrypts new local files (except videos)." = "Az alkalmazás titkosítja a helyi fájlokat (a videók kivételével)."; @@ -518,6 +548,15 @@ /* No comment provided by engineer. */ "Appearance" = "Megjelenés"; +/* No comment provided by engineer. */ +"Apply" = "Alkalmaz"; + +/* No comment provided by engineer. */ +"Archive and upload" = "Archiválás és feltöltés"; + +/* No comment provided by engineer. */ +"Archiving database" = "Adatbázis archiválása"; + /* No comment provided by engineer. */ "Attach" = "Csatolás"; @@ -540,7 +579,7 @@ "Authentication cancelled" = "Hitelesítés megszakítva"; /* No comment provided by engineer. */ -"Authentication failed" = "Hitelesítés sikertelen"; +"Authentication failed" = "Sikertelen hitelesítés"; /* No comment provided by engineer. */ "Authentication is required before the call is connected, but you may miss calls." = "A hívás csatlakoztatása előtt hitelesítésre van szükség, de előfordulhat, hogy nem tud hívásokat fogadni."; @@ -621,7 +660,7 @@ "Both you and your contact can add message reactions." = "Mindkét fél is hozzáadhat üzenetreakciókat."; /* No comment provided by engineer. */ -"Both you and your contact can irreversibly delete sent messages. (24 hours)" = "Mindkét fél visszafordíthatatlanul törölheti az elküldött üzeneteket. (24 óra)"; +"Both you and your contact can irreversibly delete sent messages. (24 hours)" = "Mindkét fél törölheti véglegesen az elküldött üzeneteket. (24 óra)"; /* No comment provided by engineer. */ "Both you and your contact can make calls." = "Mindkét fél tud hívásokat indítani."; @@ -665,6 +704,9 @@ /* No comment provided by engineer. */ "Cancel" = "Megszakítás"; +/* No comment provided by engineer. */ +"Cancel migration" = "Átköltöztetés megszakítása"; + /* feature offered item */ "cancelled %@" = "%@ törölve"; @@ -674,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Nem lehet fogadni a fájlt"; +/* No comment provided by engineer. */ +"Cellular" = "Mobilhálózat"; + /* No comment provided by engineer. */ "Change" = "Változtatás"; @@ -706,7 +751,7 @@ "Change self-destruct passcode" = "Önmegsemmisító jelkód megváltoztatása"; /* chat item text */ -"changed address for you" = "Cím megváltoztatva"; +"changed address for you" = "cím megváltoztatva"; /* rcv group event chat item */ "changed role of %@ to %@" = "%1$@ szerepköre megváltozott erre: %2$@"; @@ -744,6 +789,9 @@ /* No comment provided by engineer. */ "Chat is stopped. If you already used this database on another device, you should transfer it back before starting chat." = "A csevegés leállt. Ha már használta ezt az adatbázist egy másik eszközön, úgy visszaállítás szükséges a csevegés megkezdése előtt."; +/* No comment provided by engineer. */ +"Chat migrated!" = "A csevegés átköltöztetve!"; + /* No comment provided by engineer. */ "Chat preferences" = "Csevegési beállítások"; @@ -756,6 +804,9 @@ /* No comment provided by engineer. */ "Chinese and Spanish interface" = "Kínai és spanyol kezelőfelület"; +/* No comment provided by engineer. */ +"Choose _Migrate from another device_ on the new device and scan QR code." = "Válassza az _Átköltöztetés egy másik eszközről_ opciót az új eszközön és szkennelje be a QR-kódot."; + /* No comment provided by engineer. */ "Choose file" = "Fájl kiválasztása"; @@ -801,6 +852,9 @@ /* No comment provided by engineer. */ "Confirm database upgrades" = "Adatbázis frissítés megerősítése"; +/* No comment provided by engineer. */ +"Confirm network settings" = "Hálózati beállítások megerősítése"; + /* No comment provided by engineer. */ "Confirm new passphrase…" = "Új jelmondat megerősítése…"; @@ -810,6 +864,12 @@ /* No comment provided by engineer. */ "Confirm password" = "Jelszó megerősítése"; +/* No comment provided by engineer. */ +"Confirm that you remember database passphrase to migrate it." = "Erősítse meg, hogy emlékszik az adatbázis jelmondatára az átköltöztetéshez."; + +/* No comment provided by engineer. */ +"Confirm upload" = "Feltöltés megerősítése"; + /* server test step */ "Connect" = "Kapcsolódás"; @@ -817,7 +877,7 @@ "Connect automatically" = "Kapcsolódás automatikusan"; /* No comment provided by engineer. */ -"Connect incognito" = "Inkognítóban csatlakozva"; +"Connect incognito" = "Kapcsolódás inkognitóban"; /* No comment provided by engineer. */ "Connect to desktop" = "Kapcsolódás számítógéphez"; @@ -835,13 +895,13 @@ "Connect to yourself?\nThis is your own SimpleX address!" = "Kapcsolódás saját magához?\nEz a SimpleX azonosítója!"; /* No comment provided by engineer. */ -"Connect via contact address" = "Kapcsolódás ismerős azonosítója által"; +"Connect via contact address" = "Csatlakozás ismerős azonosítója által"; /* No comment provided by engineer. */ -"Connect via link" = "Kapcsolódás egy hivatkozáson keresztül"; +"Connect via link" = "Csatlakozás egy hivatkozáson keresztül"; /* No comment provided by engineer. */ -"Connect via one-time link" = "Kapcsolódás egyszer használatos hivatkozáson keresztül"; +"Connect via one-time link" = "Csatlakozás egyszer használatos hivatkozáson keresztül"; /* No comment provided by engineer. */ "Connect with %@" = "Kapcsolódás ezzel: %@"; @@ -856,7 +916,7 @@ "connected directly" = "közvetlenül kapcsolódva"; /* No comment provided by engineer. */ -"Connected to desktop" = "Csatlakozva a számítógéphez"; +"Connected to desktop" = "Kapcsolódva a számítógéphez"; /* No comment provided by engineer. */ "connecting" = "kapcsolódás"; @@ -898,7 +958,7 @@ "Connection error (AUTH)" = "Kapcsolódási hiba (AUTH)"; /* chat list item title (it should not be shown */ -"connection established" = "Kapcsolat létrehozva"; +"connection established" = "kapcsolat létrehozva"; /* No comment provided by engineer. */ "Connection request sent!" = "Kapcsolódási kérés elküldve!"; @@ -1000,7 +1060,7 @@ "Create your profile" = "Saját profil létrehozása"; /* No comment provided by engineer. */ -"Created at" = "Létrehozva ekkor"; +"Created at" = "Létrehozva ekkor:"; /* copied message info */ "Created at: %@" = "Létrehozva ekkor: %@"; @@ -1008,6 +1068,9 @@ /* No comment provided by engineer. */ "Created on %@" = "Létrehozva %@"; +/* No comment provided by engineer. */ +"Creating archive link" = "Archív hivatkozás létrehozása"; + /* No comment provided by engineer. */ "Creating link…" = "Hivatkozás létrehozása…"; @@ -1078,7 +1141,7 @@ "Database upgrade" = "Adatbázis fejlesztése"; /* No comment provided by engineer. */ -"database version is newer than the app, but no down migration for: %@" = "az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé migráció: %@"; +"database version is newer than the app, but no down migration for: %@" = "az adatbázis verziója újabb, mint az alkalmazásé, de nincs visszafelé átköltöztetés ehhez: %@"; /* No comment provided by engineer. */ "Database will be encrypted and the passphrase stored in the keychain.\n" = "Az adatbázis titkosítva lesz, a jelmondat pedig a kulcstárolóban lesz tárolva.\n"; @@ -1150,11 +1213,14 @@ "Delete Contact" = "Ismerős törlése"; /* No comment provided by engineer. */ -"Delete contact?\nThis cannot be undone!" = "Ismerős törlése?\nEzt nem vonható vissza!"; +"Delete contact?\nThis cannot be undone!" = "Ismerős törlése?\nEz a művelet nem vonható vissza!"; /* No comment provided by engineer. */ "Delete database" = "Adatbázis törlése"; +/* No comment provided by engineer. */ +"Delete database from this device" = "Adatbázis törlése erről az eszközről"; + /* server test step */ "Delete file" = "Fájl törlése"; @@ -1222,7 +1288,7 @@ "deleted" = "törölve"; /* No comment provided by engineer. */ -"Deleted at" = "Törölve ekkor"; +"Deleted at" = "Törölve ekkor:"; /* copied message info */ "Deleted at: %@" = "Törölve ekkor: %@"; @@ -1270,7 +1336,7 @@ "Device authentication is not enabled. You can turn on SimpleX Lock via Settings, once you enable device authentication." = "Eszközhitelesítés nem engedélyezett.A SimpleX zárolás bekapcsolható a Beállításokon keresztül, miután az eszköz hitelesítés engedélyezésre került."; /* No comment provided by engineer. */ -"different migration in the app/database: %@ / %@" = "különböző migrációk az alkalmazásban/adatbázisban: %@ / %@"; +"different migration in the app/database: %@ / %@" = "különböző átköltöztetések az alkalmazásban/adatbázisban: %@ / %@"; /* No comment provided by engineer. */ "Different names, avatars and transport isolation." = "Különböző nevek, avatarok és átviteli izoláció."; @@ -1309,7 +1375,7 @@ "Disappearing messages are prohibited in this group." = "Az eltűnő üzenetek küldése le van tiltva ebben a csoportban."; /* No comment provided by engineer. */ -"Disappears at" = "Eltűnik ekkor"; +"Disappears at" = "Eltűnik ekkor:"; /* copied message info */ "Disappears at: %@" = "Eltűnik ekkor: %@"; @@ -1330,7 +1396,7 @@ "Do it later" = "Későbbre halaszt"; /* No comment provided by engineer. */ -"Do not send history to new members." = "Ne küldjön előzményeket új tagok részére."; +"Do not send history to new members." = "Az előzmények ne kerüljenek elküldésre az új tagok számára."; /* No comment provided by engineer. */ "Do NOT use SimpleX for emergency calls." = "NE használja a SimpleX-et segélyhívásokhoz."; @@ -1347,9 +1413,21 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Visszatérés a korábbi verzióra és a csevegés megnyitása"; +/* chat item action */ +"Download" = "Letöltés"; + +/* No comment provided by engineer. */ +"Download failed" = "Sikertelen letöltés"; + /* server test step */ "Download file" = "Fájl letöltése"; +/* No comment provided by engineer. */ +"Downloading archive" = "Archívum letöltése"; + +/* No comment provided by engineer. */ +"Downloading link details" = "Letöltési hivatkozás részletei"; + /* No comment provided by engineer. */ "Duplicate display name!" = "Duplikált megjelenítési név!"; @@ -1381,7 +1459,10 @@ "Enable camera access" = "Kamera hozzáférés engedélyezése"; /* No comment provided by engineer. */ -"Enable for all" = "Engedélyezés mindenki részére"; +"Enable for all" = "Engedélyezés mindenki számára"; + +/* No comment provided by engineer. */ +"Enable in direct chats (BETA)!" = "Engedélyezés a közvetlen csevegésekben (BÉTA)!"; /* No comment provided by engineer. */ "Enable instant notifications?" = "Azonnali értesítések engedélyezése?"; @@ -1410,8 +1491,11 @@ /* enabled status */ "enabled" = "engedélyezve"; +/* No comment provided by engineer. */ +"Enabled for" = "Engedélyezve"; + /* enabled status */ -"enabled for contact" = "engedélyezve ismerős részére"; +"enabled for contact" = "engedélyezve az ismerős számára"; /* enabled status */ "enabled for you" = "engedélyezve az ön számára"; @@ -1441,7 +1525,7 @@ "Encrypted message: database error" = "Titkosított üzenet: adatbázis hiba"; /* notification */ -"Encrypted message: database migration error" = "Titkosított üzenet: adatbázis-migrációs hiba"; +"Encrypted message: database migration error" = "Titkosított üzenet: adatbázis-átköltöztetés hiba"; /* notification */ "Encrypted message: keychain error" = "Titkosított üzenet: kulcstároló hiba"; @@ -1474,7 +1558,7 @@ "Encryption re-negotiation error" = "Titkosítás újraegyeztetési hiba"; /* No comment provided by engineer. */ -"Encryption re-negotiation failed." = "Titkosítás újraegyeztetése sikertelen."; +"Encryption re-negotiation failed." = "Sikertelen titkosítás-újraegyeztetés."; /* chat item text */ "encryption re-negotiation required" = "titkosítás újraegyeztetés szükséges"; @@ -1497,6 +1581,9 @@ /* No comment provided by engineer. */ "Enter Passcode" = "Jelkód megadása"; +/* No comment provided by engineer. */ +"Enter passphrase" = "Jelmondat megadása"; + /* No comment provided by engineer. */ "Enter passphrase…" = "Jelmondat megadása…"; @@ -1516,7 +1603,7 @@ "Enter welcome message… (optional)" = "Üdvözlő üzenetet megadása… (opcionális)"; /* No comment provided by engineer. */ -"Enter your name…" = "Adja meg nevét…"; +"Enter your name…" = "Adjon meg egy nevet…"; /* No comment provided by engineer. */ "error" = "hiba"; @@ -1590,6 +1677,9 @@ /* No comment provided by engineer. */ "Error deleting user profile" = "Hiba a felhasználói profil törlésekor"; +/* No comment provided by engineer. */ +"Error downloading the archive" = "Hiba az archívum letöltésekor"; + /* No comment provided by engineer. */ "Error enabling delivery receipts!" = "Hiba a kézbesítési jelentések engedélyezésekor!"; @@ -1635,6 +1725,9 @@ /* No comment provided by engineer. */ "Error saving passphrase to keychain" = "Hiba a jelmondat kulcstárolóba történő mentésekor"; +/* when migrating */ +"Error saving settings" = "Hiba a beállítások mentésekor"; + /* No comment provided by engineer. */ "Error saving user password" = "Hiba a felhasználó jelszavának mentésekor"; @@ -1657,7 +1750,7 @@ "Error starting chat" = "Hiba a csevegés elindításakor"; /* No comment provided by engineer. */ -"Error stopping chat" = "Hiba a csevegés megállításakor"; +"Error stopping chat" = "Hiba a csevegés megszakításakor"; /* No comment provided by engineer. */ "Error switching profile!" = "Hiba a profil váltásakor!"; @@ -1677,6 +1770,12 @@ /* No comment provided by engineer. */ "Error updating user privacy" = "Hiba a felhasználói beállítások frissítésekor"; +/* No comment provided by engineer. */ +"Error uploading the archive" = "Hiba az archívum feltöltésekor"; + +/* No comment provided by engineer. */ +"Error verifying passphrase:" = "Hiba a jelmondat ellenőrzésekor:"; + /* No comment provided by engineer. */ "Error: " = "Hiba: "; @@ -1710,6 +1809,9 @@ /* No comment provided by engineer. */ "Exported database archive." = "Exportált adatbázis-archívum."; +/* No comment provided by engineer. */ +"Exported file doesn't exist" = "Az exportált fájl nem létezik"; + /* No comment provided by engineer. */ "Exporting database archive…" = "Adatbázis archívum exportálása…"; @@ -1746,12 +1848,21 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "A fájlok- és a médiatartalom küldése le van tiltva ebben a csoportban."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Fájlok és média tartalom küldése le van tiltva"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "A fájlok- és a médiatartalom küldése le van tiltva!"; /* No comment provided by engineer. */ "Filter unread and favorite chats." = "Olvasatlan és kedvenc csevegésekre való szűrés."; +/* No comment provided by engineer. */ +"Finalize migration" = "Átköltöztetés véglegesítése"; + +/* No comment provided by engineer. */ +"Finalize migration on another device." = "Átköltöztetés véglegesítése egy másik eszközön."; + /* No comment provided by engineer. */ "Finally, we have them! 🚀" = "Végre, megvannak! 🚀"; @@ -1779,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Konzolhoz"; +/* chat item action */ +"Forward" = "Továbbítás"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Üzenetek továbbítása és mentése"; + +/* No comment provided by engineer. */ +"forwarded" = "továbbított"; + +/* No comment provided by engineer. */ +"Forwarded" = "Továbbított"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Továbbítva innen:"; + /* No comment provided by engineer. */ "Found desktop" = "Megtalált számítógép"; @@ -1834,7 +1960,7 @@ "Group invitation expired" = "A csoport meghívó lejárt"; /* No comment provided by engineer. */ -"Group invitation is no longer valid, it was removed by sender." = "A csoport meghívó már nem érvényes, el lett távolítva a küldője által."; +"Group invitation is no longer valid, it was removed by sender." = "A csoport meghívó már nem érvényes, a küldője törölte."; /* No comment provided by engineer. */ "Group link" = "Csoport hivatkozás"; @@ -1846,19 +1972,22 @@ "Group members can add message reactions." = "Csoporttagok üzenetreakciókat adhatnak hozzá."; /* No comment provided by engineer. */ -"Group members can irreversibly delete sent messages. (24 hours)" = "Csoporttagok visszafordíthatatlanul törölhetik az elküldött üzeneteket. (24 óra)"; +"Group members can irreversibly delete sent messages. (24 hours)" = "A csoport tagjai véglegesen törölhetik az elküldött üzeneteiket. (24 óra)"; /* No comment provided by engineer. */ -"Group members can send direct messages." = "Csoporttagok küldhetnek közvetlen üzeneteket."; +"Group members can send direct messages." = "A csoport tagjai küldhetnek egymásnak közvetlen üzeneteket."; /* No comment provided by engineer. */ -"Group members can send disappearing messages." = "Csoporttagok küldhetnek eltűnő üzeneteket."; +"Group members can send disappearing messages." = "A csoport tagjai küldhetnek eltűnő üzeneteket."; /* No comment provided by engineer. */ -"Group members can send files and media." = "Csoporttagok küldhetnek fájlokat és médiatartalmakat."; +"Group members can send files and media." = "A csoport tagjai küldhetnek fájlokat és médiatartalmakat."; /* No comment provided by engineer. */ -"Group members can send voice messages." = "Csoporttagok küldhetnek hangüzeneteket."; +"Group members can send SimpleX links." = "A csoport tagjai küldhetnek SimpleX hivatkozásokat."; + +/* No comment provided by engineer. */ +"Group members can send voice messages." = "A csoport tagjai küldhetnek hangüzeneteket."; /* notification */ "Group message:" = "Csoport üzenet:"; @@ -1882,10 +2011,10 @@ "Group welcome message" = "Csoport üdvözlő üzenete"; /* No comment provided by engineer. */ -"Group will be deleted for all members - this cannot be undone!" = "Csoport törlésre kerül minden tag számára - ez nem vonható vissza!"; +"Group will be deleted for all members - this cannot be undone!" = "Csoport törlésre kerül minden tag számára - ez a művelet nem vonható vissza!"; /* No comment provided by engineer. */ -"Group will be deleted for you - this cannot be undone!" = "A csoport törlésre kerül az ön részére - ez nem vonható vissza!"; +"Group will be deleted for you - this cannot be undone!" = "A csoport törlésre kerül az ön számára - ez a művelet nem vonható vissza!"; /* No comment provided by engineer. */ "Help" = "Segítség"; @@ -1915,7 +2044,7 @@ "History" = "Előzmények"; /* No comment provided by engineer. */ -"History is not sent to new members." = "Az előzmények nem kerülnek elküldésre új tagok részére."; +"History is not sent to new members." = "Az előzmények nem kerülnek elküldésre az új tagok számára."; /* time unit */ "hours" = "óra"; @@ -1935,6 +2064,9 @@ /* No comment provided by engineer. */ "How to use your servers" = "Kiszolgálók használata"; +/* No comment provided by engineer. */ +"Hungarian interface" = "Magyar kezelőfelület"; + /* No comment provided by engineer. */ "ICE servers (one per line)" = "ICE-kiszolgálók (soronként egy)"; @@ -1942,7 +2074,7 @@ "If you can't meet in person, show QR code in a video call, or share the link." = "Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás során, vagy ossza meg a hivatkozást."; /* No comment provided by engineer. */ -"If you enter this passcode when opening the app, all app data will be irreversibly removed!" = "Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat visszafordíthatatlanul törlődik!"; +"If you enter this passcode when opening the app, all app data will be irreversibly removed!" = "Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat véglegesen törlődik!"; /* No comment provided by engineer. */ "If you enter your self-destruct passcode while opening the app:" = "Ha az alkalmazás megnyitásakor az önmegsemmisítő jelkódot megadásra kerül:"; @@ -1974,6 +2106,12 @@ /* No comment provided by engineer. */ "Import database" = "Adatbázis importálása"; +/* No comment provided by engineer. */ +"Import failed" = "Sikertelen importálás"; + +/* No comment provided by engineer. */ +"Importing archive" = "Archívum importálása"; + /* No comment provided by engineer. */ "Improved message delivery" = "Továbbfejlesztett üzenetküldés"; @@ -1983,9 +2121,15 @@ /* No comment provided by engineer. */ "Improved server configuration" = "Javított kiszolgáló konfiguráció"; +/* No comment provided by engineer. */ +"In order to continue, chat should be stopped." = "A folytatáshoz a csevegést meg kell szakítani."; + /* No comment provided by engineer. */ "In reply to" = "Válasz neki"; +/* No comment provided by engineer. */ +"In-call sounds" = "Bejövő hívás csengőhangja"; + /* No comment provided by engineer. */ "Incognito" = "Inkognitó"; @@ -2005,7 +2149,7 @@ "incognito via group link" = "inkognitó a csoportos hivatkozáson keresztül"; /* chat list item description */ -"incognito via one-time link" = "inkognitó egyszer használatos hivatkozáson keresztül"; +"incognito via one-time link" = "inkognitó az egyszer használatos hivatkozáson keresztül"; /* notification */ "Incoming audio call" = "Bejövő hanghívás"; @@ -2067,6 +2211,9 @@ /* No comment provided by engineer. */ "Invalid link" = "Érvénytelen hivatkozás"; +/* No comment provided by engineer. */ +"Invalid migration confirmation" = "Érvénytelen átköltöztetési visszaigazolás"; + /* No comment provided by engineer. */ "Invalid name!" = "Érvénytelen név!"; @@ -2098,16 +2245,16 @@ "Invite to group" = "Meghívás a csoportba"; /* No comment provided by engineer. */ -"invited" = "meghívott"; +"invited" = "meghívta"; /* rcv group event chat item */ -"invited %@" = "%@ meghívott"; +"invited %@" = "meghívta %@-t"; /* chat list item title */ -"invited to connect" = "meghívott, hogy csatlakozzon"; +"invited to connect" = "meghívta, hogy csatlakozzon"; /* rcv group event chat item */ -"invited via your group link" = "meghívott a csoport hivatkozásán keresztül"; +"invited via your group link" = "meghívta a csoport hivatkozásán keresztül"; /* No comment provided by engineer. */ "iOS Keychain is used to securely store passphrase - it allows receiving push notifications." = "Az iOS kulcstár a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását."; @@ -2116,13 +2263,13 @@ "iOS Keychain will be used to securely store passphrase after you restart the app or change passphrase - it will allow receiving push notifications." = "Az iOS kulcstár az alkalmazás újraindítása, vagy a jelmondat módosítása után a jelmondat biztonságos tárolására szolgál - lehetővé teszi a push-értesítések fogadását."; /* No comment provided by engineer. */ -"Irreversible message deletion" = "Visszafordíthatatlan üzenettörlés"; +"Irreversible message deletion" = "Végleges üzenettörlés"; /* No comment provided by engineer. */ -"Irreversible message deletion is prohibited in this chat." = "Ebben a csevegésben az üzenetek visszafordíthatatlan törlése le van tiltva."; +"Irreversible message deletion is prohibited in this chat." = "Ebben a csevegésben az üzenetek végleges törlése le van tiltva."; /* No comment provided by engineer. */ -"Irreversible message deletion is prohibited in this group." = "Ebben a csoportban az üzenetek visszafordíthatatlan törlése le van tiltva."; +"Irreversible message deletion is prohibited in this group." = "Ebben a csoportban az üzenetek végleges törlése le van tiltva."; /* No comment provided by engineer. */ "It allows having many anonymous connections without any shared data between them in a single chat profile." = "Lehetővé teszi, hogy egyetlen csevegőprofilon belül több anonim kapcsolat legyen, anélkül, hogy megosztott adatok lennének közöttük."; @@ -2206,7 +2353,7 @@ "Leave group?" = "Csoport elhagyása?"; /* rcv group event chat item */ -"left" = "elhagyta"; +"left" = "elhagyta a csoportot"; /* email subject */ "Let's talk in SimpleX Chat" = "Beszélgessünk a SimpleX Chat-ben"; @@ -2257,7 +2404,7 @@ "Make one message disappear" = "Egy üzenet eltüntetése"; /* No comment provided by engineer. */ -"Make profile private!" = "Tegye priváttá profilját!"; +"Make profile private!" = "Tegye priváttá a profilját!"; /* No comment provided by engineer. */ "Make sure %@ server addresses are in correct format, line separated and are not duplicated (%@)." = "Győződjön meg arról, hogy a %@ szervercímek megfelelő formátumúak, sorszeparáltak és nem duplikáltak (%@)."; @@ -2305,7 +2452,7 @@ "Member role will be changed to \"%@\". The member will receive a new invitation." = "A tag szerepköre meg fog változni erre: \"%@\". A tag új meghívást fog kapni."; /* No comment provided by engineer. */ -"Member will be removed from group - this cannot be undone!" = "A tag eltávolítása a csoportból - ez nem vonható vissza!"; +"Member will be removed from group - this cannot be undone!" = "A tag eltávolítása a csoportból - ez a művelet nem vonható vissza!"; /* item status text */ "Message delivery error" = "Üzenetkézbesítési hiba"; @@ -2328,9 +2475,15 @@ /* notification */ "message received" = "üzenet érkezett"; +/* No comment provided by engineer. */ +"Message source remains private." = "Az üzenet forrása titokban marad."; + /* No comment provided by engineer. */ "Message text" = "Üzenet szövege"; +/* No comment provided by engineer. */ +"Message too large" = "Az üzenet túl nagy"; + /* No comment provided by engineer. */ "Messages" = "Üzenetek"; @@ -2340,20 +2493,47 @@ /* No comment provided by engineer. */ "Messages from %@ will be shown!" = "A(z) %@ által írt üzenetek megjelennek!"; +/* No comment provided by engineer. */ +"Messages, files and calls are protected by **end-to-end encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Az üzeneteket, fájlokat és hívásokat **végpontok közötti titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi."; + +/* No comment provided by engineer. */ +"Messages, files and calls are protected by **quantum resistant e2e encryption** with perfect forward secrecy, repudiation and break-in recovery." = "Az üzeneteket, fájlokat és hívásokat **végpontok közötti kvantumrezisztens titkosítással** és sérülés utáni titkosságvédelemmel, visszautasítással és sérülés utáni helyreállítással védi."; + +/* No comment provided by engineer. */ +"Migrate device" = "Eszköz átköltöztetése"; + +/* No comment provided by engineer. */ +"Migrate from another device" = "Átköltöztetés egy másik eszközről"; + +/* No comment provided by engineer. */ +"Migrate here" = "Átköltöztetés ide"; + +/* No comment provided by engineer. */ +"Migrate to another device" = "Átköltöztetés egy másik eszközre"; + +/* No comment provided by engineer. */ +"Migrate to another device via QR code." = "Átköltöztetés egy másik eszközre QR-kód használatával."; + +/* No comment provided by engineer. */ +"Migrating" = "Átköltöztetés"; + /* No comment provided by engineer. */ "Migrating database archive…" = "Adatbázis archívum migrálása…"; /* No comment provided by engineer. */ -"Migration error:" = "Migrációs hiba:"; +"Migration complete" = "Átköltöztetés befejezve"; /* No comment provided by engineer. */ -"Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat)." = "Sikertelen migráció. Koppintson a **Kihagyás** lehetőségre az aktuális adatbázis használatának folytatásához. Kérjük, jelentse a problémát az alkalmazás fejlesztőinek csevegésben vagy e-mailben [chat@simplex.chat](mailto:chat@simplex.chat)."; +"Migration error:" = "Átköltöztetés hiba:"; /* No comment provided by engineer. */ -"Migration is completed" = "A migráció befejeződött"; +"Migration failed. Tap **Skip** below to continue using the current database. Please report the issue to the app developers via chat or email [chat@simplex.chat](mailto:chat@simplex.chat)." = "Sikertelen átköltöztetés. Koppintson a **Kihagyás** lehetőségre az aktuális adatbázis használatának folytatásához. Jelentse a problémát az alkalmazás fejlesztőinek csevegésben vagy e-mailben [chat@simplex.chat](mailto:chat@simplex.chat)."; /* No comment provided by engineer. */ -"Migrations: %@" = "Migrációk: %@"; +"Migration is completed" = "Az átköltöztetés befejeződött"; + +/* No comment provided by engineer. */ +"Migrations: %@" = "Átköltöztetések: %@"; /* time unit */ "minutes" = "perc"; @@ -2368,13 +2548,13 @@ "moderated" = "moderált"; /* No comment provided by engineer. */ -"Moderated at" = "Moderálva ekkor"; +"Moderated at" = "Moderálva lett ekkor:"; /* copied message info */ -"Moderated at: %@" = "Moderálva ekkor: %@"; +"Moderated at: %@" = "Moderálva lett ekkor: %@"; /* marked deleted chat item preview text */ -"moderated by %@" = "%@ által moderálva"; +"moderated by %@" = "moderálva lett %@ által"; /* time unit */ "months" = "hónap"; @@ -2382,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Hamarosan további fejlesztések érkeznek!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Megbízhatóbb hálózati kapcsolat."; + /* item status description */ "Most likely this connection is deleted." = "Valószínűleg ez a kapcsolat törlésre került."; @@ -2403,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Hálózat és kiszolgálók"; +/* No comment provided by engineer. */ +"Network connection" = "Internetkapcsolat"; + +/* No comment provided by engineer. */ +"Network management" = "Hálózatkezelés"; + /* No comment provided by engineer. */ "Network settings" = "Hálózati beállítások"; @@ -2481,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Nincsenek előzmények"; +/* No comment provided by engineer. */ +"No network connection" = "Nincs hálózati kapcsolat"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Nincs engedély a hangüzenet rögzítésére"; @@ -2562,7 +2754,7 @@ "Only you can add message reactions." = "Csak ön adhat hozzá üzenetreakciókat."; /* No comment provided by engineer. */ -"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "Visszafordíthatatlanul csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra)"; +"Only you can irreversibly delete messages (your contact can mark them for deletion). (24 hours)" = "Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti meg őket ). (24 óra)"; /* No comment provided by engineer. */ "Only you can make calls." = "Csak ön tud hívásokat indítani."; @@ -2577,7 +2769,7 @@ "Only your contact can add message reactions." = "Csak az ismerős tud üzeneteakciókat adni."; /* No comment provided by engineer. */ -"Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)" = "Csak az ismerős tud visszafordíthatatlanul törölni üzeneteket (megjelölheti őket törlésre). (24 óra)"; +"Only your contact can irreversibly delete messages (you can mark them for deletion). (24 hours)" = "Csak az ismerőse tudja az üzeneteket véglegesen törölni (ön csak törlésre jelölheti meg azokat). (24 óra)"; /* No comment provided by engineer. */ "Only your contact can make calls." = "Csak az ismerős tud hívást indítani."; @@ -2600,6 +2792,9 @@ /* No comment provided by engineer. */ "Open group" = "Csoport megnyitása"; +/* authentication reason */ +"Open migration to another device" = "Átköltöztetés megkezdése egy másik eszközre"; + /* No comment provided by engineer. */ "Open Settings" = "Beállítások megnyitása"; @@ -2612,15 +2807,27 @@ /* No comment provided by engineer. */ "Opening app…" = "Az alkalmazás megnyitása…"; +/* No comment provided by engineer. */ +"Or paste archive link" = "Vagy az archívum hivatkozásának beillesztése"; + /* No comment provided by engineer. */ "Or scan QR code" = "Vagy QR-kód beolvasása"; +/* No comment provided by engineer. */ +"Or securely share this file link" = "Vagy a fájl hivítkozásának biztonságos megosztása"; + /* No comment provided by engineer. */ "Or show this code" = "Vagy mutassa meg ezt a kódot"; +/* No comment provided by engineer. */ +"Other" = "További"; + /* member role */ "owner" = "tulajdonos"; +/* feature role */ +"owners" = "tulajdonosok"; + /* No comment provided by engineer. */ "Passcode" = "Jelkód"; @@ -2637,7 +2844,7 @@ "Passcode set!" = "A jelkód beállítva!"; /* No comment provided by engineer. */ -"Password to show" = "Jelszó mutatása"; +"Password to show" = "Jelszó megjelenítése"; /* past/unknown group member */ "Past member %@" = "Korábbi csoport tag %@"; @@ -2666,6 +2873,9 @@ /* message decrypt error item */ "Permanent decryption error" = "Végleges visszafejtési hiba"; +/* No comment provided by engineer. */ +"Picture-in-picture calls" = "Kép a képben hívások"; + /* No comment provided by engineer. */ "PING count" = "PING számláló"; @@ -2679,11 +2889,14 @@ "Please check that you used the correct link or ask your contact to send you another one." = "Ellenőrizze, hogy a megfelelő hivatkozást használta-e, vagy kérje meg ismerősét, hogy küldjön egy másikat."; /* No comment provided by engineer. */ -"Please check your network connection with %@ and try again." = "Kérjük, ellenőrizze hálózati kapcsolatát a(z) %@ segítségével, és próbálja újra."; +"Please check your network connection with %@ and try again." = "Ellenőrizze hálózati kapcsolatát a(z) %@ segítségével, és próbálja újra."; /* No comment provided by engineer. */ "Please check yours and your contact preferences." = "Ellenőrizze az ön és ismerőse beállításait."; +/* No comment provided by engineer. */ +"Please confirm that network settings are correct for this device." = "Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz."; + /* No comment provided by engineer. */ "Please contact developers.\nError: %@" = "Lépjen kapcsolatba a fejlesztőkkel.\nHiba: %@"; @@ -2694,7 +2907,7 @@ "Please enter correct current passphrase." = "Adja meg a helyes aktuális jelmondatát."; /* No comment provided by engineer. */ -"Please enter the previous password after restoring database backup. This action can not be undone." = "Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem visszavonható."; +"Please enter the previous password after restoring database backup. This action can not be undone." = "Előző jelszó megadása az adatbázis biztonsági mentésének visszaállítása után. Ez a művelet nem vonható vissza."; /* No comment provided by engineer. */ "Please remember or store it securely - there is no way to recover a lost passcode!" = "Jegyezze fel vagy tárolja el biztonságosan - az elveszett jelkódot nem lehet visszaállítani!"; @@ -2703,7 +2916,7 @@ "Please report it to the developers." = "Jelentse a fejlesztőknek."; /* No comment provided by engineer. */ -"Please restart the app and migrate the database to enable push notifications." = "Indítsa újra az alkalmazást az adatbázis-migrációhoz szükséges push értesítések engedélyezéséhez."; +"Please restart the app and migrate the database to enable push notifications." = "Indítsa újra az alkalmazást az adatbázis-átköltöztetéséhez szükséges push értesítések engedélyezéséhez."; /* No comment provided by engineer. */ "Please store passphrase securely, you will NOT be able to access chat if you lose it." = "Tárolja el biztonságosan jelmondát, mert ha elveszti azt, akkor NEM férhet hozzá a csevegéshez."; @@ -2772,7 +2985,7 @@ "Prohibit messages reactions." = "Az üzenetreakciók tiltása."; /* No comment provided by engineer. */ -"Prohibit sending direct messages to members." = "Közvetlen üzenetek küldésének letiltása tagok részére."; +"Prohibit sending direct messages to members." = "Közvetlen üzenetek küldésének letiltása a tagok számára."; /* No comment provided by engineer. */ "Prohibit sending disappearing messages." = "Eltűnő üzenetek küldésének letiltása."; @@ -2780,11 +2993,14 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Fájlok- és a médiatartalom küldés letiltása."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "A SimpleX hivatkozások küldése le van tiltva."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Hangüzenetek küldésének letiltása."; /* No comment provided by engineer. */ -"Protect app screen" = "App képernyőjének védelme"; +"Protect app screen" = "Alkalmazás képernyőjének védelme"; /* No comment provided by engineer. */ "Protect your chat profiles with a password!" = "Csevegési profiljok védelme jelszóval!"; @@ -2798,6 +3014,15 @@ /* No comment provided by engineer. */ "Push notifications" = "Push értesítések"; +/* No comment provided by engineer. */ +"Push server" = "Push kiszolgáló"; + +/* chat item text */ +"quantum resistant e2e encryption" = "végpontok közötti kvantumrezisztens titkosítás"; + +/* No comment provided by engineer. */ +"Quantum resistant encryption" = "Kvantumrezisztens titkosítás"; + /* No comment provided by engineer. */ "Rate the app" = "Értékelje az alkalmazást"; @@ -2811,13 +3036,13 @@ "Read more" = "Tudjon meg többet"; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address)." = "További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address)."; +"Read more in [User Guide](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address)." = "További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/app-settings.html#your-simplex-contact-address)."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; +"Read more in [User Guide](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)." = "További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/chat-profiles.html#incognito-mode)."; /* No comment provided by engineer. */ -"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "További információ a [Felhasználói útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; +"Read more in [User Guide](https://simplex.chat/docs/guide/readme.html#connect-to-friends)." = "További információ a [Használati útmutatóban](https://simplex.chat/docs/guide/readme.html#connect-to-friends)."; /* No comment provided by engineer. */ "Read more in our [GitHub repository](https://github.com/simplex-chat/simplex-chat#readme)." = "További információ a [GitHub tárolóban](https://github.com/simplex-chat/simplex-chat#readme)."; @@ -2832,7 +3057,7 @@ "received answer…" = "fogadott válasz…"; /* No comment provided by engineer. */ -"Received at" = "Fogadva ekkor"; +"Received at" = "Fogadva ekkor:"; /* copied message info */ "Received at: %@" = "Fogadva ekkor: %@"; @@ -2849,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "A fogadó cím egy másik kiszolgálóra változik. A címváltoztatás a feladó online állapotba kerülése után fejeződik be."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Egyidejű fogadás"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "A fájl fogadása leállt."; @@ -2856,7 +3084,10 @@ "Receiving via" = "Fogadás a"; /* No comment provided by engineer. */ -"Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Legutóbbi előzmények és továbbfejlesztett [könyvtárbot] (simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2TxW3dfMfxy 3%23%2F%3Fv%3D1-2% 26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gloncbqjek4gloncbqjek."; +"Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Legutóbbi előzmények és továbbfejlesztett [könyvtárbot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; + +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "A címzett(ek) nem látja(k), hogy kitől származik ez az üzenet."; /* No comment provided by engineer. */ "Recipients see updates as you type them." = "A címzettek a beírás közben látják a frissítéseket."; @@ -2933,9 +3164,18 @@ /* No comment provided by engineer. */ "Repeat connection request?" = "Kapcsolódási kérés megismétlése?"; +/* No comment provided by engineer. */ +"Repeat download" = "Letöltés ismét"; + +/* No comment provided by engineer. */ +"Repeat import" = "Importálás ismét"; + /* No comment provided by engineer. */ "Repeat join request?" = "Csatlakozási kérés megismétlése?"; +/* No comment provided by engineer. */ +"Repeat upload" = "Feltöltés ismét"; + /* chat item action */ "Reply" = "Válasz"; @@ -2993,6 +3233,9 @@ /* No comment provided by engineer. */ "Run chat" = "Csevegési szolgáltatás indítása"; +/* No comment provided by engineer. */ +"Safer groups" = "Biztonságosabb csoportok"; + /* chat item action */ "Save" = "Mentés"; @@ -3041,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Üdvözlőszöveg mentése?"; +/* No comment provided by engineer. */ +"saved" = "mentett"; + +/* No comment provided by engineer. */ +"Saved" = "Mentett"; + +/* No comment provided by engineer. */ +"Saved from" = "Mentve innen:"; + +/* No comment provided by engineer. */ +"saved from %@" = "mentve innen: %@"; + /* message info title */ "Saved message" = "Mentett üzenet"; @@ -3066,7 +3321,7 @@ "Search" = "Keresés"; /* No comment provided by engineer. */ -"Search bar accepts invitation links." = "A keresősáv fogadja a meghívó hivatkozásokat."; +"Search bar accepts invitation links." = "A keresősáv elfogadja a meghívó hivatkozásokat."; /* No comment provided by engineer. */ "Search or paste SimpleX link" = "Keresés, vagy SimpleX hivatkozás beillesztése"; @@ -3123,7 +3378,7 @@ "Send direct message" = "Közvetlen üzenet küldése"; /* No comment provided by engineer. */ -"Send direct message to connect" = "A kapcsolódáshoz közvetlen üzenet küldése"; +"Send direct message to connect" = "Közvetlen üzenet küldése a csatlakozáshoz"; /* No comment provided by engineer. */ "Send disappearing message" = "Eltűnő üzenet küldése"; @@ -3150,7 +3405,7 @@ "Send them from gallery or custom keyboards." = "Küldje el őket galériából vagy egyedi billentyűzetekről."; /* No comment provided by engineer. */ -"Send up to 100 last messages to new members." = "Utolsó 100 üzenet küldése új tagoknak."; +"Send up to 100 last messages to new members." = "Az utolsó 100 üzenet elküldése az új tagoknak."; /* No comment provided by engineer. */ "Sender cancelled file transfer." = "A küldő megszakította a fájl átvitelt."; @@ -3183,7 +3438,7 @@ "Sending via" = "Küldés ezen keresztül"; /* No comment provided by engineer. */ -"Sent at" = "Elküldve ekkor"; +"Sent at" = "Elküldve ekkor:"; /* copied message info */ "Sent at: %@" = "Elküldve ekkor: %@"; @@ -3204,7 +3459,7 @@ "Server requires authorization to upload, check password" = "A kiszolgálónak engedélyre van szüksége a várólisták feltöltéséhez, ellenőrizze jelszavát"; /* No comment provided by engineer. */ -"Server test failed!" = "A kiszolgáló tesztje sikertelen!"; +"Server test failed!" = "Sikertelen kiszolgáló-teszt!"; /* No comment provided by engineer. */ "Servers" = "Kiszolgálók"; @@ -3233,11 +3488,14 @@ /* No comment provided by engineer. */ "Set passcode" = "Jelkód beállítása"; +/* No comment provided by engineer. */ +"Set passphrase" = "Jelmondat beállítása"; + /* No comment provided by engineer. */ "Set passphrase to export" = "Jelmondat beállítása az exportáláshoz"; /* No comment provided by engineer. */ -"Set the message shown to new members!" = "Megjelenő üzenetet beállítása új tagok részére!"; +"Set the message shown to new members!" = "Megjelenő üzenet beállítása az új tagok számára!"; /* No comment provided by engineer. */ "Set timeouts for proxy/VPN" = "Időtúllépések beállítása a proxy/VPN számára"; @@ -3270,7 +3528,7 @@ "Show calls in phone history" = "Hívások megjelenítése a híváslistában"; /* No comment provided by engineer. */ -"Show developer options" = "Fejlesztői beállítások mutatása"; +"Show developer options" = "Fejlesztői beállítások megjelenítése"; /* No comment provided by engineer. */ "Show last messages" = "Utolsó üzenetek megjelenítése"; @@ -3279,7 +3537,10 @@ "Show preview" = "Előnézet megjelenítése"; /* No comment provided by engineer. */ -"Show:" = "Mutat:"; +"Show QR code" = "QR-kód megjelenítése"; + +/* No comment provided by engineer. */ +"Show:" = "Megjelenítés:"; /* No comment provided by engineer. */ "SimpleX address" = "SimpleX azonosító"; @@ -3299,9 +3560,15 @@ /* simplex link type */ "SimpleX group link" = "SimpleX csoport hivatkozás"; -/* No comment provided by engineer. */ +/* chat feature */ "SimpleX links" = "SimpleX hivatkozások"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "A SimpleX hivatkozások küldése ebben a csoportban le van tiltva."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "A SimpleX hivatkozások küldése le van tiltva"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX zárolás"; @@ -3338,6 +3605,9 @@ /* notification title */ "Somebody" = "Valaki"; +/* chat item text */ +"standard end-to-end encryption" = "szabványos végpontok közötti titkosítás"; + /* No comment provided by engineer. */ "Start chat" = "Csevegés indítása"; @@ -3345,25 +3615,28 @@ "Start chat?" = "Csevegés indítása?"; /* No comment provided by engineer. */ -"Start migration" = "Migráció indítása"; +"Start migration" = "Átköltöztetés indítása"; /* No comment provided by engineer. */ "starting…" = "indítás…"; /* No comment provided by engineer. */ -"Stop" = "Megállítás"; +"Stop" = "Megszakítás"; /* No comment provided by engineer. */ -"Stop chat to enable database actions" = "Csevegés leállítása az adatbázis-műveletek engedélyezéséhez"; +"Stop chat" = "Csevegési szolgáltatás megszakítása"; /* No comment provided by engineer. */ -"Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped." = "A csevegés leállítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés leállítása alatt nem tud üzeneteket fogadni és küldeni."; +"Stop chat to enable database actions" = "Csevegés megszakítása az adatbázis-műveletek engedélyezéséhez"; /* No comment provided by engineer. */ -"Stop chat?" = "Csevegési szolgáltatás megállítása?"; +"Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped." = "A csevegés megszakítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés megszakítása alatt nem tud üzeneteket fogadni és küldeni."; + +/* No comment provided by engineer. */ +"Stop chat?" = "Csevegési szolgáltatás megszakítása?"; /* cancel file action */ -"Stop file" = "Fájl megállítása"; +"Stop file" = "Fájl megszakítása"; /* No comment provided by engineer. */ "Stop receiving file?" = "Fájl fogadás megszakítása?"; @@ -3372,13 +3645,16 @@ "Stop sending file?" = "Fájl küldés megszakítása?"; /* No comment provided by engineer. */ -"Stop sharing" = "Megosztás leállítása"; +"Stop sharing" = "Megosztás megszakítása"; /* No comment provided by engineer. */ -"Stop sharing address?" = "Címmegosztás megállítása?"; +"Stop sharing address?" = "Címmegosztás megszakítása?"; /* authentication reason */ -"Stop SimpleX" = "A SimpleX megállítása"; +"Stop SimpleX" = "A SimpleX megszakítása"; + +/* No comment provided by engineer. */ +"Stopping chat" = "Csevegés megszakítása"; /* No comment provided by engineer. */ "strike" = "áthúzott"; @@ -3399,7 +3675,7 @@ "Take picture" = "Fotó készítése"; /* No comment provided by engineer. */ -"Tap button " = "Koppintson a gombra "; +"Tap button " = "Koppintson a "; /* No comment provided by engineer. */ "Tap to activate profile." = "A profil aktiválásához koppintson az ikonra."; @@ -3411,7 +3687,7 @@ "Tap to join" = "Koppintson a csatlakozáshoz"; /* No comment provided by engineer. */ -"Tap to join incognito" = "Koppintson az inkognitómódhoz való csatlakozáshoz"; +"Tap to join incognito" = "Koppintson az inkognitóban való csatlakozáshoz"; /* No comment provided by engineer. */ "Tap to paste link" = "Koppintson a hivatkozás beillesztéséhez"; @@ -3495,7 +3771,7 @@ "The next generation of private messaging" = "A privát üzenetküldés következő generációja"; /* No comment provided by engineer. */ -"The old database was not removed during the migration, it can be deleted." = "A régi adatbázis nem került eltávolításra a migráció során, így törölhető."; +"The old database was not removed during the migration, it can be deleted." = "A régi adatbázis nem került eltávolításra az átköltöztetés során, így törölhető."; /* No comment provided by engineer. */ "The profile is only shared with your contacts." = "Profilja csak az ismerősök számára kerül megosztásra."; @@ -3528,7 +3804,13 @@ "This action cannot be undone - the messages sent and received earlier than selected will be deleted. It may take several minutes." = "Ez a művelet nem vonható vissza - a kiválasztottnál korábban küldött és fogadott üzenetek törlésre kerülnek. Ez több percet is igénybe vehet."; /* No comment provided by engineer. */ -"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Ez a művelet nem vonható vissza - profilok, ismerősök, üzenetek és fájlok visszafordíthatatlanul törlésre kerülnek."; +"This action cannot be undone - your profile, contacts, messages and files will be irreversibly lost." = "Ez a művelet nem vonható vissza - profiljai, ismerősei, üzenetei és fájljai visszafordíthatatlanul törlésre kerülnek."; + +/* E2EE info chat item */ +"This chat is protected by end-to-end encryption." = "Ez a csevegés végpontok közötti titkosítással védett."; + +/* E2EE info chat item */ +"This chat is protected by quantum resistant end-to-end encryption." = "Ez a csevegés végpontok közötti kvantumrezisztens tikosítással védett."; /* notification title */ "this contact" = "ez az ismerős"; @@ -3633,7 +3915,7 @@ "Unexpected error: %@" = "Váratlan hiba: %@"; /* No comment provided by engineer. */ -"Unexpected migration state" = "Váratlan migrációs állapot"; +"Unexpected migration state" = "Váratlan átköltöztetési állapot"; /* No comment provided by engineer. */ "Unfav." = "Nem kedvelt."; @@ -3690,7 +3972,7 @@ "Unread" = "Olvasatlan"; /* No comment provided by engineer. */ -"Up to 100 last messages are sent to new members." = "Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagoknak."; +"Up to 100 last messages are sent to new members." = "Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagok számára."; /* No comment provided by engineer. */ "Update" = "Frissítés"; @@ -3722,9 +4004,15 @@ /* No comment provided by engineer. */ "Upgrade and open chat" = "A csevegés frissítése és megnyitása"; +/* No comment provided by engineer. */ +"Upload failed" = "Sikertelen feltöltés"; + /* server test step */ "Upload file" = "Fájl feltöltése"; +/* No comment provided by engineer. */ +"Uploading archive" = "Archívum feltöltése"; + /* No comment provided by engineer. */ "Use .onion hosts" = "Tor .onion hostok használata"; @@ -3755,6 +4043,9 @@ /* No comment provided by engineer. */ "Use SimpleX Chat servers?" = "SimpleX Chat kiszolgálók használata?"; +/* No comment provided by engineer. */ +"Use the app while in the call." = "Használja az alkalmazást hívás közben."; + /* No comment provided by engineer. */ "User profile" = "Felhasználói profil"; @@ -3782,6 +4073,12 @@ /* No comment provided by engineer. */ "Verify connections" = "Kapcsolatok ellenőrzése"; +/* No comment provided by engineer. */ +"Verify database passphrase" = "Adatbázis jelmondatának ellenőrzése"; + +/* No comment provided by engineer. */ +"Verify passphrase" = "Jelmondat ellenőrzése"; + /* No comment provided by engineer. */ "Verify security code" = "Biztonsági kód ellenőrzése"; @@ -3836,6 +4133,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "A hangüzenetek küldése le van tiltva ebben a csoportban."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "A hangüzenetek küldése le van tiltva"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "A hangüzenetek le vannak tilva!"; @@ -3860,6 +4160,9 @@ /* No comment provided by engineer. */ "wants to connect to you!" = "kapcsolatba akar lépni önnel!"; +/* No comment provided by engineer. */ +"Warning: starting chat on multiple devices is not supported and will cause message delivery failures" = "Figyelmeztetés: a csevegés elindítása egyszerre több eszközön nem támogatott, továbbá üzenetkézbesítési hibákat okozhat"; + /* No comment provided by engineer. */ "Warning: you may lose some data!" = "Figyelmeztetés: néhány adat elveszhet!"; @@ -3875,18 +4178,33 @@ /* No comment provided by engineer. */ "Welcome message" = "Üdvözlő üzenet"; +/* No comment provided by engineer. */ +"Welcome message is too long" = "Az üdvözlő üzenet túl hosszú"; + /* No comment provided by engineer. */ "What's new" = "Milyen újdonságok vannak"; /* No comment provided by engineer. */ "When available" = "Amikor elérhető"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Amikor egy bejövő hang- vagy videóhívás érkezik."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat."; /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott."; +/* No comment provided by engineer. */ +"WiFi" = "Wi-Fi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "A közvetlen csevegésekben engedélyezve lesz!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Vezetékes Ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Titkosított fájlokkal és médiatartalommal."; @@ -3908,9 +4226,15 @@ /* pref value */ "yes" = "igen"; +/* No comment provided by engineer. */ +"you" = "ön"; + /* No comment provided by engineer. */ "You" = "Ön"; +/* No comment provided by engineer. */ +"You **must not** use the same database on two devices." = "**Nem szabad** ugyanazt az adatbázist használni egyszerre két eszközön."; + /* No comment provided by engineer. */ "You accepted connection" = "Kapcsolódás elfogadva"; @@ -3921,7 +4245,7 @@ "You already have a chat profile with the same display name. Please choose another name." = "Már van egy csevegési profil ugyanezzel a megjelenített névvel. Válasszon egy másik nevet."; /* No comment provided by engineer. */ -"You are already connected to %@." = "Már csatlakozva van ehhez: %@."; +"You are already connected to %@." = "Már kapcsolódva van hozzá: %@."; /* No comment provided by engineer. */ "You are already connecting to %@." = "Már folyamatban van a csatlakozás ehhez: %@."; @@ -3930,7 +4254,7 @@ "You are already connecting via this one-time link!" = "Már csatlakozik ezen az egyszer használatos hivatkozáson keresztül!"; /* No comment provided by engineer. */ -"You are already in group %@." = "Már a %@ csoportban van."; +"You are already in group %@." = "Már a(z) %@ csoport tagja."; /* No comment provided by engineer. */ "You are already joining the group %@." = "Már folyamatban van a csatlakozás a csoporthoz %@."; @@ -3971,6 +4295,9 @@ /* No comment provided by engineer. */ "You can enable them later via app Privacy & Security settings." = "Később engedélyezheti őket az alkalmazás Adatvédelem és biztonság menüpontban."; +/* No comment provided by engineer. */ +"You can give another try." = "Megpróbálhatja még egyszer."; + /* No comment provided by engineer. */ "You can hide or mute a user profile - swipe it to the right." = "Elrejthet vagy némíthat egy felhasználói profilt – csúsztasson jobbra."; @@ -4038,7 +4365,7 @@ "You have to enter passphrase every time the app starts - it is not stored on the device." = "A jelmondatot minden alkalommal meg kell adnia, amikor az alkalmazás elindul - nem az eszközön kerül tárolásra."; /* No comment provided by engineer. */ -"You invited a contact" = "Meghívott egy ismerőst"; +"You invited a contact" = "Meghívta egy ismerősét"; /* No comment provided by engineer. */ "You joined this group" = "Csatlakozott ehhez a csoporthoz"; @@ -4047,7 +4374,7 @@ "You joined this group. Connecting to inviting group member." = "Csatlakozott ehhez a csoporthoz. Kapcsolódás a meghívó csoporttaghoz."; /* snd group event chat item */ -"you left" = "elhagyta"; +"you left" = "elhagyta a csoportot"; /* No comment provided by engineer. */ "You must use the most recent version of your chat database on one device ONLY, otherwise you may stop receiving the messages from some contacts." = "A csevegési adatbázis legfrissebb verzióját CSAK egy eszközön kell használnia, ellenkező esetben előfordulhat, hogy az üzeneteket nem fogja megkapni valamennyi ismerőstől."; @@ -4116,10 +4443,10 @@ "Your calls" = "Hívások"; /* No comment provided by engineer. */ -"Your chat database" = "Csevegési adatbázisa"; +"Your chat database" = "Csevegési adatbázis"; /* No comment provided by engineer. */ -"Your chat database is not encrypted - set passphrase to encrypt it." = "Csevegési adatbázisa nincs titkosítva – adjon meg egy jelmondatot a titkosításhoz."; +"Your chat database is not encrypted - set passphrase to encrypt it." = "A csevegési adatbázis nincs titkosítva – adjon meg egy jelmondatot a titkosításhoz."; /* No comment provided by engineer. */ "Your chat profiles" = "Csevegési profiljai"; @@ -4155,13 +4482,13 @@ "Your profile" = "Profil"; /* No comment provided by engineer. */ -"Your profile **%@** will be shared." = "**%@** nevű profilja megosztásra kerül."; +"Your profile **%@** will be shared." = "A(z) **%@** nevű profilja megosztásra fog kerülni."; /* No comment provided by engineer. */ "Your profile is stored on your device and shared only with your contacts.\nSimpleX servers cannot see your profile." = "Profilja az eszközön van tárolva, és csak az ismerősökkel kerül megosztásra.\nA SimpleX kiszolgálók nem látjhatják profilját."; /* No comment provided by engineer. */ -"Your profile, contacts and delivered messages are stored on your device." = "Profilja, ismerősök és az elküldött üzenetek az eszközön kerülnek tárolásra."; +"Your profile, contacts and delivered messages are stored on your device." = "Profilja, ismerősei és az elküldött üzenetei az eszközön kerülnek tárolásra."; /* No comment provided by engineer. */ "Your random profile" = "Véletlenszerű profil"; diff --git a/apps/ios/nl.lproj/Localizable.strings b/apps/ios/nl.lproj/Localizable.strings index c3417d5145..088623a69f 100644 --- a/apps/ios/nl.lproj/Localizable.strings +++ b/apps/ios/nl.lproj/Localizable.strings @@ -1893,6 +1893,9 @@ /* chat item action */ "Forward" = "Doorsturen"; +/* No comment provided by engineer. */ +"Forward and save messages" = "Berichten doorsturen en opslaan"; + /* No comment provided by engineer. */ "forwarded" = "doorgestuurd"; @@ -2124,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "In antwoord op"; +/* No comment provided by engineer. */ +"In-call sounds" = "Geluiden tijdens het bellen"; + /* No comment provided by engineer. */ "Incognito" = "Incognito"; @@ -2469,6 +2475,9 @@ /* notification */ "message received" = "bericht ontvangen"; +/* No comment provided by engineer. */ +"Message source remains private." = "Berichtbron blijft privé."; + /* No comment provided by engineer. */ "Message text" = "Bericht tekst"; @@ -2553,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Meer verbeteringen volgen snel!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Betrouwbaardere netwerkverbinding."; + /* item status description */ "Most likely this connection is deleted." = "Hoogstwaarschijnlijk is deze verbinding verwijderd."; @@ -2577,6 +2589,9 @@ /* No comment provided by engineer. */ "Network connection" = "Netwerkverbinding"; +/* No comment provided by engineer. */ +"Network management" = "Netwerkbeheer"; + /* No comment provided by engineer. */ "Network settings" = "Netwerk instellingen"; @@ -3059,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Het ontvangstadres wordt gewijzigd naar een andere server. Adres wijziging wordt voltooid nadat de afzender online is."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Gelijktijdig ontvangen"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Het ontvangen van het bestand wordt gestopt."; @@ -4169,6 +4187,9 @@ /* No comment provided by engineer. */ "When available" = "Wanneer beschikbaar"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Bij het verbinden van audio- en video-oproepen."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Wanneer mensen vragen om verbinding te maken, kunt u dit accepteren of weigeren."; @@ -4178,6 +4199,9 @@ /* No comment provided by engineer. */ "WiFi" = "Wifi"; +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Wordt ingeschakeld in directe chats!"; + /* No comment provided by engineer. */ "Wired ethernet" = "Bekabeld Ethernet"; diff --git a/apps/ios/tr.lproj/Localizable.strings b/apps/ios/tr.lproj/Localizable.strings index 7cec6e092f..22d7ad038e 100644 --- a/apps/ios/tr.lproj/Localizable.strings +++ b/apps/ios/tr.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "yönetici"; +/* feature role */ +"admins" = "yöneticiler"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Yöneticiler bir üyeyi tamamen engelleyebilirler."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Tüm grup üyeleri bağlı kalacaktır."; +/* feature role */ +"all members" = "bütün üyeler"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Tüm mesajlar silinecektir - bu geri alınamaz!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Dosya ve medya göndermeye izin ver."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "SimpleX bağlantıları göndilmesine izin ver."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Sesli mesaj göndermeye izin ver."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Dosya alınamıyor"; +/* No comment provided by engineer. */ +"Cellular" = "Hücresel Veri"; + /* No comment provided by engineer. */ "Change" = "Değiştir"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Sürüm düşür ve sohbeti aç"; +/* chat item action */ +"Download" = "İndir"; + /* No comment provided by engineer. */ "Download failed" = "Yükleme başarısız oldu"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "etkin"; +/* No comment provided by engineer. */ +"Enabled for" = "Şunlar için etkinleştirildi"; + /* enabled status */ "enabled for contact" = "konuşulan kişi için etkinleşti"; @@ -1830,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Dosyalar ve medya bu grupta yasaklandı."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Dosyalar ve medyaya izin verilmiyor"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Dosyalar ve medya yasaklandı!"; @@ -1869,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Konsol için"; +/* chat item action */ +"Forward" = "İlet"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Mesajları ilet ve kaydet"; + +/* No comment provided by engineer. */ +"forwarded" = "iletildi"; + +/* No comment provided by engineer. */ +"Forwarded" = "İletildi"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Şuradan iletildi"; + /* No comment provided by engineer. */ "Found desktop" = "Bilgisayar bulundu"; @@ -1947,6 +1983,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Grup üyeleri dosyalar ve medya gönderebilir."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Grup üyeleri SimpleX bağlantıları gönderebilir."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Grup üyeleri sesli mesajlar gönderebilir."; @@ -2088,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "Cevap olarak"; +/* No comment provided by engineer. */ +"In-call sounds" = "Arama içi sesler"; + /* No comment provided by engineer. */ "Incognito" = "Gizli"; @@ -2433,6 +2475,9 @@ /* notification */ "message received" = "mesaj alındı"; +/* No comment provided by engineer. */ +"Message source remains private." = "Mesaj kaynağı gizli kalır."; + /* No comment provided by engineer. */ "Message text" = "Mesaj yazısı"; @@ -2517,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Daha fazla geliştirmeler yakında geliyor!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Daha güvenilir ağ bağlantısı."; + /* item status description */ "Most likely this connection is deleted." = "Büyük ihtimalle bu bağlantı silinmiş."; @@ -2538,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Ağ & sunucular"; +/* No comment provided by engineer. */ +"Network connection" = "Ağ bağlantısı"; + +/* No comment provided by engineer. */ +"Network management" = "Ağ yönetimi"; + /* No comment provided by engineer. */ "Network settings" = "Ağ ayarları"; @@ -2616,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Geçmiş yok"; +/* No comment provided by engineer. */ +"No network connection" = "Ağ bağlantısı yok"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Sesli mesaj kaydetmek için izin yok"; @@ -2762,9 +2819,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Veya bu kodu göster"; +/* No comment provided by engineer. */ +"Other" = "Diğer"; + /* member role */ "owner" = "sahip"; +/* feature role */ +"owners" = "sahipler"; + /* No comment provided by engineer. */ "Passcode" = "Şifre"; @@ -2930,6 +2993,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Dosyalar ve medya gönderimlerini yasakla."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "SimpleX bağlantısı gönderimini yasakla."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Sesli mesajların gönderimini yasakla."; @@ -3008,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Alıcı adresi farklı bir sunucuya değiştirilecektir. Gönderici çevrimiçi olduktan sonra adres değişikliği tamamlanacaktır."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Eşzamanlılık alınıyor"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Dosya alımı durdurulacaktır."; @@ -3017,6 +3086,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Yakın geçmiş ve geliştirilmiş [dizin botu](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex. im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Alıcı(lar) bu mesajın kimden geldiğini göremez."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Alıcılar yazdığına göre güncellemeleri görecektir."; @@ -3212,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Hoşgeldin mesajı kaydedilsin mi?"; +/* No comment provided by engineer. */ +"saved" = "kaydedildi"; + +/* No comment provided by engineer. */ +"Saved" = "Kaydedildi"; + +/* No comment provided by engineer. */ +"Saved from" = "Tarafından kaydedildi"; + +/* No comment provided by engineer. */ +"saved from %@" = "%@ tarafından kaydedildi"; + /* message info title */ "Saved message" = "Kaydedilmiş mesaj"; @@ -3479,6 +3563,12 @@ /* chat feature */ "SimpleX links" = "SimpleX bağlantıları"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "SimpleX bağlantıları bu grupta yasaklandı."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "SimpleX bağlantılarına izin verilmiyor"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX Kilidi"; @@ -4043,6 +4133,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Bu grupta sesli mesajlar yasaktır."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Sesli mesajlara izin verilmiyor"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Sesli mesajlar yasaktır!"; @@ -4094,12 +4187,24 @@ /* No comment provided by engineer. */ "When available" = "Mevcut olduğunda"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Sesli ve görüntülü aramalara bağlanırken."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "İnsanlar bağlantı talebinde bulunduğunda, kabul edebilir veya reddedebilirsiniz."; /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Biriyle gizli bir profil paylaştığınızda, bu profil sizi davet ettikleri gruplar için kullanılacaktır."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Doğrudan sohbetlerde etkinleştirilecektir!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Kablolu ethernet"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Şifrelenmiş dosyalar ve medya ile birlikte."; @@ -4121,6 +4226,9 @@ /* pref value */ "yes" = "evet"; +/* No comment provided by engineer. */ +"you" = "sen"; + /* No comment provided by engineer. */ "You" = "Sen"; 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 94dc18a9a1..ce6d0dc2e0 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -1831,7 +1831,7 @@ Weitergeleitet von Nachricht weiterleiten… Kopfhörer - Gleichzeitiger Empfang + Gelijktijdige ontvangst Empfänger können nicht sehen, von wem die Nachricht stammt. abgespeichert von %s Abgespeichert 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 aba28b20a0..fec5df6866 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml @@ -788,8 +788,8 @@ La primera plataforma sin identificadores de usuario: diseñada para la privacidad. Este grupo ya no existe. Establecer 1 día - ¡Gracias a los colaboradores! Contribuye a través de Weblate. - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Para proteger la zona horaria, los archivos de imagen/voz usan la hora UTC. Aislamiento de transporte (para compartir con tu contacto) @@ -934,7 +934,7 @@ SimpleX Tu perfil se enviará al contacto del que has recibido este enlace. Te conectarás con todos los miembros del grupo. - tú + tu Estás conectado al servidor usado para recibir mensajes de este contacto. mediante enlace de dirección de contacto mediante enlace de grupo @@ -984,7 +984,7 @@ Ahora con soporte bluetooth y otras mejoras. ¡Guarda un mensaje para ser mostrado a los miembros nuevos! Interfaz en chino y español - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Error al actualizar privacidad de usuario Confirmar contraseña Reducción consumo de batería @@ -1112,7 +1112,7 @@ Código de acceso de la aplicación Interfaz en polaco Úsalo en lugar de la autenticación del sistema. - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Vídeos y archivos de hasta 1Gb ¡Rápido y sin necesidad de esperar a que el remitente esté en línea! Abrir perfiles @@ -1238,7 +1238,7 @@ - mensajes de voz de hasta 5 minutos. \n- tiempo personalizado para mensajes temporales. \n- historial de edición. - ¡Gracias a los colaboradores! Contribuye a través de Weblate. + ¡Nuestro agradecimiento a todos los colaboradores! Puedes contribuir a través de Weblate. Mensajes mejorados Al introducirlo todos los datos son eliminados. Personalizar y compartir temas de color. @@ -1731,7 +1731,7 @@ Enlaces SimpleX no permitidos Mensajes de voz no permitidos Enlaces SimpleX - Los miembros del grupo pueden enviar enlaces SimpleX + Los miembros del grupo pueden enviar enlaces SimpleX. Los enlaces SimpleX no se permiten en este grupo. propietarios Móvil @@ -1754,4 +1754,17 @@ Reenviado Mensaje reenviado… Los destinatarios no ven de quién procede este mensaje. + Bluetooth + Concurrencia en la recepción + Auriculares + Auriculares + Altavoz + Reenviar y guardar mensajes + Sonido de llamada + Interfaz en lituano + Gestión de la red + El autor del mensaje se mantiene privado. + Al iniciar llamadas de audio y vídeo. + ¡Será habilitado en los chats directos! + Conexión de red más fiable. \ No newline at end of file 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 229cee789d..43237fa2a9 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/lt/strings.xml @@ -49,14 +49,14 @@ prisijungta jungiamasi ryšys užmegztas - jungiasi… + jungiamasi… Ryšio klaida Prisijungti Prisijungė Prisijungti prisijungė - jungiasi… - jungiasi… + jungiamasi… + jungiamasi… Prisijungta Patvirtinti Konfigūruoti ICE serverius @@ -64,7 +64,7 @@ prisijungė Ryšys Patvirtinti duomenų bazių naujinimus - jungiasi + jungiamasi Ryšys Duomenų bazės šifravimo slaptafrazė bus atnaujinta. Branduolio versija: v%s @@ -1127,7 +1127,7 @@ Nustatyti slaptafrazę eksportui Šis veiksmas negali būti atšauktas - jūsų profilis, kontaktai, žinutės ir failai bus negrįžtamai prarasti. nustatyti naują kontakto adresą - nustatyti naują profilio nuotrauką + nustatė naują profilio nuotrauką Standartinis visapusis šifravimas Pristatymo kvitai Nusiųsta @@ -1744,4 +1744,24 @@ Tinklo ryšys Garsai skambučio metu Lietuviškas UI + Gavimas vienu metu + Garsiakalbis + Tinklo valdymas + išsaugota + išsaugota iš %s + Išsaugota + Balso žinutės neleidžiamos + WiFi + SimpleX nuorodos + Drausti SimpleX nuorodų siuntimą + SimpleX nuorodos yra uždraustos šioje grupėje. + savininkai + Laidinis internetas + Kitas + Nėra interneto ryšio + Išsaugota iš + Gavėjas(-ai) negali matyti kas šią žinutę išsiuntė. + SimpleX nuorodos neleidžiamos + Kai jungiami garso ir vaizdo skambučiai. + Bus įjungta tiesioginiuose pokalbiuose! \ No newline at end of file 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 f63cdb8d0c..4b37f5d725 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1754,4 +1754,14 @@ Oortje Koptelefoon Luidspreker + Bluetooth + Berichtbron blijft privé. + Netwerkbeheer + Bij het verbinden van audio- en video-oproepen. + Wordt ingeschakeld in directe chats! + Gelijktijdig ontvangen + Berichten doorsturen en opslaan + Geluiden tijdens het bellen + Litouwse gebruikersinterface + Betrouwbaardere netwerkverbinding. \ No newline at end of file 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 e1c0463d70..55fffb2728 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml @@ -1725,4 +1725,46 @@ Kamera ve mikrofon Bildirim gösterilirken hata oluştu, geliştiricilerle irtibata geçin. Ayarlarda izin verin + Bluetooth + sahipler + SimpleX bağlantısı gönderimini yasakla + Eşzamanlılık alınıyor + SimpleX bağlantıları + SimpleX bağlantıları bu grupta yasaklandı + Kulaklık + Hoparlör + Kulaklıklar + Doğrudan sohbetlerde etkinleştirilecektir! + Ağ yönetimi + Litvanya Kullanıcı Arayüzü + Diğer + kaydedildi + %s tarafından kaydedildi + İletildi + Kaydedildi + İndir + Şuradan iletildi + Mesaj ilet… + Alıcı(lar) bu mesajın kimden geldiğini göremez. + SimpleX bağlantılarına izin verilmiyor + Dosyalar ve medyaya izin verilmiyor + Sesli mesajlara izin verilmiyor + Grup üyeleri SimpleX bağlantıları gönderebilir. + iletildi + Ağ bağlantısı + SimpleX bağlantıları göndermesine izin ver. + Ağ bağlantısı yok + İlet + Mesajları ilet ve kaydet + yöneticiler + Hücresel Veri + Şunlar için etkinleştirildi + bütün üyeler + Arama içi sesler + Tarafından kaydedildi + Mesaj kaynağı gizli kalır. + Daha güvenilir ağ bağlantısı. + WiFi + Sesli ve görüntülü aramalara bağlanırken. + Kablolu ethernet \ No newline at end of file diff --git a/scripts/ios/import-localizations.sh b/scripts/ios/import-localizations.sh index 4bf33f7dbd..e323865f2d 100755 --- a/scripts/ios/import-localizations.sh +++ b/scripts/ios/import-localizations.sh @@ -2,7 +2,7 @@ set -e -langs=( en bg cs de es fi fr it ja nl pl ru th tr uk zh-Hans ) +langs=( en bg cs de es fi fr hu it ja nl pl ru th tr uk zh-Hans ) for lang in "${langs[@]}"; do echo "***" From 5ba7b58d7db2b7668f9c7381d64b88a844bf1f7d Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 12:45:20 +0100 Subject: [PATCH 086/147] website: translations (#4078) * Translated using Weblate (German) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/ * Translated using Weblate (Japanese) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ja/ --------- Co-authored-by: mlanp Co-authored-by: Miyu Sakatsuki --- website/langs/de.json | 4 +++- website/langs/ja.json | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/website/langs/de.json b/website/langs/de.json index aec3b7c2cc..eb817a50f0 100644 --- a/website/langs/de.json +++ b/website/langs/de.json @@ -253,5 +253,7 @@ "docs-dropdown-9": "Downloads", "please-enable-javascript": "Bitte aktivieren Sie JavaScript, um den QR-Code zu sehen.", "please-use-link-in-mobile-app": "Bitte nutzen Sie den Link in der Mobiltelefon-App", - "docs-dropdown-10": "Transparent" + "docs-dropdown-10": "Transparent", + "docs-dropdown-11": "FAQ", + "docs-dropdown-12": "Sicherheit" } diff --git a/website/langs/ja.json b/website/langs/ja.json index 0519766694..ca5fc4f12c 100644 --- a/website/langs/ja.json +++ b/website/langs/ja.json @@ -253,5 +253,7 @@ "docs-dropdown-9": "ダウンロード", "please-enable-javascript": "QRコードを表示するためにJavaScriptを有効にしてください。", "please-use-link-in-mobile-app": "このリンクをモバイルアプリで使用してください", - "docs-dropdown-10": "透明性" + "docs-dropdown-10": "透明性", + "docs-dropdown-11": "よくある質問", + "docs-dropdown-12": "セキュリティ" } From 68966a15515827eb4f6a69689fcc88c5718230fc Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Wed, 24 Apr 2024 20:39:06 +0700 Subject: [PATCH 087/147] android, desktop: alert for local encryption/decryption errors (#4081) * android, desktop: more alert in case of local encryption/decryption errors * sending a message without a file --- .../simplex/common/platform/Share.android.kt | 2 ++ .../common/views/helpers/Utils.android.kt | 9 +++++- .../chat/simplex/common/model/ChatModel.kt | 7 ++++- .../simplex/common/views/chat/ComposeView.kt | 21 +++++++++---- .../common/views/chat/item/CIFileView.kt | 1 + .../views/chat/item/ImageFullScreenView.kt | 1 + .../simplex/common/views/helpers/Utils.kt | 30 +++++++++++++++---- .../simplex/common/platform/Share.desktop.kt | 1 + .../views/chat/item/ChatItemView.desktop.kt | 1 + .../common/views/helpers/Utils.desktop.kt | 2 ++ 10 files changed, 62 insertions(+), 13 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt index dc8ead80ee..ad0d914ea8 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/Share.android.kt @@ -46,6 +46,7 @@ actual fun shareFile(text: String, fileSource: CryptoFile) { decryptCryptoFile(getAppFilePath(fileSource.filePath), fileSource.cryptoArgs, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return } getAppFileUri(tmpFile.absolutePath) @@ -112,6 +113,7 @@ fun saveImage(ciFile: CIFile?) { decryptCryptoFile(filePath, ciFile.fileSource.cryptoArgs, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return@createTmpFileAndDelete } tmpFile.inputStream().use { it.copyTo(outputStream) } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt index 904f9a555a..ed0c4c9532 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt @@ -27,6 +27,7 @@ import androidx.core.text.HtmlCompat import chat.simplex.common.helpers.* import chat.simplex.common.model.* import chat.simplex.common.platform.* +import chat.simplex.res.MR import dev.icerock.moko.resources.StringResource import java.io.* import java.net.URI @@ -187,7 +188,13 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? return if (filePath != null && file != null) { try { val data = if (file.fileSource?.cryptoArgs != null) { - readCryptoFile(getAppFilePath(file.fileSource.filePath), file.fileSource.cryptoArgs) + try { + readCryptoFile(getAppFilePath(file.fileSource.filePath), file.fileSource.cryptoArgs) + } catch (e: Exception) { + Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + return null + } } else { File(getAppFilePath(file.fileName)).readBytes() } 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 ca9056a058..a21e1c8cac 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 @@ -2696,7 +2696,12 @@ data class CryptoFile( private fun decryptToTmpFile(): URI? { val absoluteFilePath = if (isAbsolutePath) filePath else getAppFilePath(filePath) val tmpFile = createTmpFileIfNeeded() - decryptCryptoFile(absoluteFilePath, cryptoArgs ?: return null, tmpFile.absolutePath) + try { + decryptCryptoFile(absoluteFilePath, cryptoArgs ?: return null, tmpFile.absolutePath) + } catch (e: Exception) { + Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + } return tmpFile.toURI() } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt index 9ab2b47702..26ff8796d4 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/ComposeView.kt @@ -534,23 +534,34 @@ fun ComposeView( AudioPlayer.stop(tmpFile.absolutePath) if (remoteHost == null) { val actualFile = File(getAppFilePath(tmpFile.name.replaceAfter(RecorderInterface.extension, ""))) - files.add(withContext(Dispatchers.IO) { + val file = withContext(Dispatchers.IO) { if (chatController.appPrefs.privacyEncryptLocalFiles.get()) { - val args = encryptCryptoFile(tmpFile.absolutePath, actualFile.absolutePath) - tmpFile.delete() + val args = try { + encryptCryptoFile(tmpFile.absolutePath, actualFile.absolutePath) + } catch (e: Exception) { + Log.e(TAG, "Unable to encrypt plain file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + return@withContext null + } finally { + tmpFile.delete() + } CryptoFile(actualFile.name, args) } else { Files.move(tmpFile.toPath(), actualFile.toPath()) CryptoFile.plain(actualFile.name) } - }) + } + if (file != null) { + files.add(file) + msgs.add(MsgContent.MCVoice(if (msgs.isEmpty()) msgText else "", preview.durationMs / 1000)) + } deleteUnusedFiles() } else { files.add(CryptoFile.plain(tmpFile.absolutePath)) // It will be deleted on JVM shutdown or next start (if the app crashes unexpectedly) filesToDelete.remove(tmpFile) + msgs.add(MsgContent.MCVoice(if (msgs.isEmpty()) msgText else "", preview.durationMs / 1000)) } - msgs.add(MsgContent.MCVoice(if (msgs.isEmpty()) msgText else "", preview.durationMs / 1000)) } is ComposePreview.FilePreview -> { val file = if (remoteHost == null) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt index da766d920e..dbed57d5fc 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIFileView.kt @@ -222,6 +222,7 @@ fun rememberSaveFileLauncher(ciFile: CIFile?): FileChooserLauncher = decryptCryptoFile(filePath, ciFile.fileSource.cryptoArgs, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) tmpFile.delete() return@createTmpFileAndDelete } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt index 16d59f6aeb..316843a908 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt @@ -16,6 +16,7 @@ import chat.simplex.common.model.CryptoFile import chat.simplex.common.platform.* import chat.simplex.common.views.chat.ProviderMedia import chat.simplex.common.views.helpers.* +import chat.simplex.res.MR import kotlinx.coroutines.flow.distinctUntilChanged import kotlinx.coroutines.launch import java.net.URI diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt index 182861c0d6..9a6e3a0f9a 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/Utils.kt @@ -169,8 +169,14 @@ fun saveImage(image: ImageBitmap): CryptoFile? { val destFileName = generateNewFileName("IMG", ext, File(getAppFilePath(""))) val destFile = File(getAppFilePath(destFileName)) if (encrypted) { - val args = writeCryptoFile(destFile.absolutePath, dataResized.toByteArray()) - CryptoFile(destFileName, args) + try { + val args = writeCryptoFile(destFile.absolutePath, dataResized.toByteArray()) + CryptoFile(destFileName, args) + } catch (e: Exception) { + Log.e(TAG, "Unable to write crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + null + } } else { val output = FileOutputStream(destFile) dataResized.writeTo(output) @@ -216,8 +222,14 @@ fun saveAnimImage(uri: URI): CryptoFile? { val destFileName = generateNewFileName("IMG", ext, File(getAppFilePath(""))) val destFile = File(getAppFilePath(destFileName)) if (encrypted) { - val args = writeCryptoFile(destFile.absolutePath, uri.inputStream()?.readBytes() ?: return null) - CryptoFile(destFileName, args) + try { + val args = writeCryptoFile(destFile.absolutePath, uri.inputStream()?.readBytes() ?: return null) + CryptoFile(destFileName, args) + } catch (e: Exception) { + Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + null + } } else { Files.copy(uri.inputStream(), destFile.toPath()) CryptoFile.plain(destFileName) @@ -241,8 +253,14 @@ fun saveFileFromUri(uri: URI, withAlertOnException: Boolean = true): CryptoFile? if (encrypted) { createTmpFileAndDelete { tmpFile -> Files.copy(inputStream, tmpFile.toPath()) - val args = encryptCryptoFile(tmpFile.absolutePath, destFile.absolutePath) - CryptoFile(destFileName, args) + try { + val args = encryptCryptoFile(tmpFile.absolutePath, destFile.absolutePath) + CryptoFile(destFileName, args) + } catch (e: Exception) { + Log.e(TAG, "Unable to encrypt plain file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + null + } } } else { Files.copy(inputStream, destFile.toPath()) diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt index d1442bc5e3..5817275a5f 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/Share.desktop.kt @@ -32,6 +32,7 @@ actual fun shareFile(text: String, fileSource: CryptoFile) { showToast(generalGetString(MR.strings.file_saved)) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) } } else { copyFileToFile(File(absolutePath), to) {} diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt index 30e1ad0352..9b2911350f 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.desktop.kt @@ -66,6 +66,7 @@ actual fun copyItemToClipboard(cItem: ChatItem, clipboard: ClipboardManager) = w decryptCryptoFile(getAppFilePath(fileSource.filePath), fileSource.cryptoArgs ?: return@withLongRunningApi, tmpFile.absolutePath) } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return@withLongRunningApi } tmpFile.absolutePath diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt index 9fa93cdfdf..8fcd1ac5c7 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt @@ -12,6 +12,7 @@ import chat.simplex.common.model.CIFile import chat.simplex.common.model.readCryptoFile import chat.simplex.common.platform.* import chat.simplex.common.simplexWindowState +import chat.simplex.res.MR import kotlinx.coroutines.delay import java.io.ByteArrayInputStream import java.io.File @@ -142,6 +143,7 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? if (bitmap != null) bitmap to data else null } catch (e: Exception) { Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) + AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) null } } else { From 1967ac0880a38ea87cc55de0690838c89bef6b0a Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 14:42:17 +0100 Subject: [PATCH 088/147] ui: translations (#4079) * Translated using Weblate (German) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ * Translated using Weblate (Russian) Currently translated at 100.0% (1738 of 1738 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ru/ * Translated using Weblate (German) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ * Translated using Weblate (Russian) Currently translated at 100.0% (1512 of 1512 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ru/ * update --------- Co-authored-by: mlanp --- .../de.xcloc/Localized Contents/de.xliff | 9 +- .../ru.xcloc/Localized Contents/ru.xliff | 36 ++++++ apps/ios/de.lproj/Localizable.strings | 23 +++- apps/ios/ru.lproj/Localizable.strings | 108 ++++++++++++++++++ .../commonMain/resources/MR/de/strings.xml | 10 +- .../commonMain/resources/MR/ru/strings.xml | 36 ++++++ 6 files changed, 219 insertions(+), 3 deletions(-) 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 2f691fbf88..c756573675 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -2805,6 +2805,7 @@ Das kann nicht rückgängig gemacht werden! Forward and save messages + Nachrichten weiterleiten und speichern No comment provided by engineer. @@ -2814,7 +2815,7 @@ Das kann nicht rückgängig gemacht werden! Forwarded from - Weitergeleitet von + Weitergeleitet aus No comment provided by engineer. @@ -3174,6 +3175,7 @@ Das kann nicht rückgängig gemacht werden! In-call sounds + Klingeltöne No comment provided by engineer. @@ -3653,6 +3655,7 @@ Das ist Ihr Link für die Gruppe %@! Message source remains private. + Die Nachrichtenquelle bleibt privat. No comment provided by engineer. @@ -3772,6 +3775,7 @@ Das ist Ihr Link für die Gruppe %@! More reliable network connection. + Zuverlässigere Netzwerkverbindung. No comment provided by engineer. @@ -3816,6 +3820,7 @@ Das ist Ihr Link für die Gruppe %@! Network management + Netzwerk-Verwaltung No comment provided by engineer. @@ -6232,6 +6237,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s When connecting audio and video calls. + Bei der Verbindung über Audio- und Video-Anrufe. No comment provided by engineer. @@ -6251,6 +6257,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Will be enabled in direct chats! + Wird in direkten Chats automatisch aktiviert! No comment provided by engineer. 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 847e16e9f9..a4c0570bdb 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Разрешить отправлять ссылки SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Мобильная сеть No comment provided by engineer. @@ -2088,6 +2090,7 @@ This cannot be undone! Download + Загрузить chat item action @@ -2202,6 +2205,7 @@ This cannot be undone! Enabled for + Включено для No comment provided by engineer. @@ -2726,6 +2730,7 @@ This cannot be undone! Files and media not allowed + Файлы и медиа не разрешены No comment provided by engineer. @@ -2795,18 +2800,22 @@ This cannot be undone! Forward + Переслать chat item action Forward and save messages + Переслать и сохранить сообщение No comment provided by engineer. Forwarded + Переслано No comment provided by engineer. Forwarded from + Переслано из No comment provided by engineer. @@ -2921,6 +2930,7 @@ This cannot be undone! Group members can send SimpleX links. + Члены группы могут отправлять ссылки SimpleX. No comment provided by engineer. @@ -3165,6 +3175,7 @@ This cannot be undone! In-call sounds + Звуки во время звонков No comment provided by engineer. @@ -3644,6 +3655,7 @@ This is your link for group %@! Message source remains private. + Источник сообщения остаётся конфиденциальным. No comment provided by engineer. @@ -3763,6 +3775,7 @@ This is your link for group %@! More reliable network connection. + Более надежное соединение с сетью. No comment provided by engineer. @@ -3802,10 +3815,12 @@ This is your link for group %@! Network connection + Интернет-соединение No comment provided by engineer. Network management + Статус сети No comment provided by engineer. @@ -3920,6 +3935,7 @@ This is your link for group %@! No network connection + Нет интернет-соединения No comment provided by engineer. @@ -4138,6 +4154,7 @@ This is your link for group %@! Other + Другaя сеть No comment provided by engineer. @@ -4399,6 +4416,7 @@ Error: %@ Prohibit sending SimpleX links. + Запретить отправку ссылок SimpleX. No comment provided by engineer. @@ -4533,6 +4551,7 @@ Error: %@ Receiving concurrency + Одновременный приём No comment provided by engineer. @@ -4552,6 +4571,7 @@ Error: %@ Recipient(s) can't see who this message is from. + Получатели не видят от кого это сообщение. No comment provided by engineer. @@ -4856,6 +4876,7 @@ Error: %@ Saved + Сохранено No comment provided by engineer. @@ -4865,6 +4886,7 @@ Error: %@ Saved from + Сохранено из No comment provided by engineer. @@ -5294,10 +5316,12 @@ Error: %@ SimpleX links are prohibited in this group. + Ссылки SimpleX запрещены в этой группе. No comment provided by engineer. SimpleX links not allowed + Ссылки SimpleX не разрешены No comment provided by engineer. @@ -6138,6 +6162,7 @@ To connect, please ask your contact to create another connection link and check Voice messages not allowed + Голосовые сообщения не разрешены No comment provided by engineer. @@ -6212,6 +6237,7 @@ To connect, please ask your contact to create another connection link and check When connecting audio and video calls. + Во время соединения аудио и видео звонков. No comment provided by engineer. @@ -6226,14 +6252,17 @@ To connect, please ask your contact to create another connection link and check WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + Будет включено в прямых разговорах! No comment provided by engineer. Wired ethernet + Проводная сеть No comment provided by engineer. @@ -6721,6 +6750,7 @@ SimpleX серверы не могут получить доступ к Ваше admins + админы feature role @@ -6735,6 +6765,7 @@ SimpleX серверы не могут получить доступ к Ваше all members + все члены feature role @@ -7069,6 +7100,7 @@ SimpleX серверы не могут получить доступ к Ваше forwarded + переслано No comment provided by engineer. @@ -7280,6 +7312,7 @@ SimpleX серверы не могут получить доступ к Ваше owners + владельцы feature role @@ -7334,10 +7367,12 @@ SimpleX серверы не могут получить доступ к Ваше saved + сохранено No comment provided by engineer. saved from %@ + сохранено из %@ No comment provided by engineer. @@ -7482,6 +7517,7 @@ SimpleX серверы не могут получить доступ к Ваше you + Вы No comment provided by engineer. diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 18a56444f0..933bb5e02b 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -1893,6 +1893,9 @@ /* chat item action */ "Forward" = "Weiterleiten"; +/* No comment provided by engineer. */ +"Forward and save messages" = "Nachrichten weiterleiten und speichern"; + /* No comment provided by engineer. */ "forwarded" = "weitergeleitet"; @@ -1900,7 +1903,7 @@ "Forwarded" = "Weitergeleitet"; /* No comment provided by engineer. */ -"Forwarded from" = "Weitergeleitet von"; +"Forwarded from" = "Weitergeleitet aus"; /* No comment provided by engineer. */ "Found desktop" = "Gefundener Desktop"; @@ -2124,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "Als Antwort auf"; +/* No comment provided by engineer. */ +"In-call sounds" = "Klingeltöne"; + /* No comment provided by engineer. */ "Incognito" = "Inkognito"; @@ -2469,6 +2475,9 @@ /* notification */ "message received" = "Nachricht empfangen"; +/* No comment provided by engineer. */ +"Message source remains private." = "Die Nachrichtenquelle bleibt privat."; + /* No comment provided by engineer. */ "Message text" = "Nachrichtentext"; @@ -2553,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Weitere Verbesserungen sind bald verfügbar!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Zuverlässigere Netzwerkverbindung."; + /* item status description */ "Most likely this connection is deleted." = "Wahrscheinlich ist diese Verbindung gelöscht worden."; @@ -2577,6 +2589,9 @@ /* No comment provided by engineer. */ "Network connection" = "Netzwerkverbindung"; +/* No comment provided by engineer. */ +"Network management" = "Netzwerk-Verwaltung"; + /* No comment provided by engineer. */ "Network settings" = "Netzwerkeinstellungen"; @@ -4172,6 +4187,9 @@ /* No comment provided by engineer. */ "When available" = "Wenn verfügbar"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Bei der Verbindung über Audio- und Video-Anrufe."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Wenn Personen eine Verbindung anfordern, können Sie diese annehmen oder ablehnen."; @@ -4181,6 +4199,9 @@ /* No comment provided by engineer. */ "WiFi" = "WiFi"; +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Wird in direkten Chats automatisch aktiviert!"; + /* No comment provided by engineer. */ "Wired ethernet" = "Kabelgebundenes Netzwerk"; diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index ed6e03508e..758588bc35 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "админ"; +/* feature role */ +"admins" = "админы"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Админы могут заблокировать члена группы."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Все члены группы, которые соединились через эту ссылку, останутся в группе."; +/* feature role */ +"all members" = "все члены"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Все сообщения будут удалены - это нельзя отменить!"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Разрешить посылать файлы и медиа."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Разрешить отправлять ссылки SimpleX."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Разрешить отправлять голосовые сообщения."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Невозможно получить файл"; +/* No comment provided by engineer. */ +"Cellular" = "Мобильная сеть"; + /* No comment provided by engineer. */ "Change" = "Поменять"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Откатить версию и открыть чат"; +/* chat item action */ +"Download" = "Загрузить"; + /* No comment provided by engineer. */ "Download failed" = "Ошибка загрузки"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "включено"; +/* No comment provided by engineer. */ +"Enabled for" = "Включено для"; + /* enabled status */ "enabled for contact" = "включено для контакта"; @@ -1830,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Файлы и медиа запрещены в этой группе."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Файлы и медиа не разрешены"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Файлы и медиа запрещены!"; @@ -1869,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Для консоли"; +/* chat item action */ +"Forward" = "Переслать"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Переслать и сохранить сообщение"; + +/* No comment provided by engineer. */ +"forwarded" = "переслано"; + +/* No comment provided by engineer. */ +"Forwarded" = "Переслано"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Переслано из"; + /* No comment provided by engineer. */ "Found desktop" = "Компьютер найден"; @@ -1947,6 +1983,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Члены группы могут слать файлы и медиа."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Члены группы могут отправлять ссылки SimpleX."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Члены группы могут отправлять голосовые сообщения."; @@ -2088,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "В ответ на"; +/* No comment provided by engineer. */ +"In-call sounds" = "Звуки во время звонков"; + /* No comment provided by engineer. */ "Incognito" = "Инкогнито"; @@ -2433,6 +2475,9 @@ /* notification */ "message received" = "получено сообщение"; +/* No comment provided by engineer. */ +"Message source remains private." = "Источник сообщения остаётся конфиденциальным."; + /* No comment provided by engineer. */ "Message text" = "Текст сообщения"; @@ -2517,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Дополнительные улучшения скоро!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Более надежное соединение с сетью."; + /* item status description */ "Most likely this connection is deleted." = "Скорее всего, соединение удалено."; @@ -2538,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Сеть & серверы"; +/* No comment provided by engineer. */ +"Network connection" = "Интернет-соединение"; + +/* No comment provided by engineer. */ +"Network management" = "Статус сети"; + /* No comment provided by engineer. */ "Network settings" = "Настройки сети"; @@ -2616,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Нет истории"; +/* No comment provided by engineer. */ +"No network connection" = "Нет интернет-соединения"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Нет разрешения для записи голосового сообщения"; @@ -2762,9 +2819,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Или покажите этот код"; +/* No comment provided by engineer. */ +"Other" = "Другaя сеть"; + /* member role */ "owner" = "владелец"; +/* feature role */ +"owners" = "владельцы"; + /* No comment provided by engineer. */ "Passcode" = "Код доступа"; @@ -2930,6 +2993,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Запретить слать файлы и медиа."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Запретить отправку ссылок SimpleX."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Запретить отправлять голосовые сообщений."; @@ -3008,6 +3074,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "Адрес получения сообщений будет перемещён на другой сервер. Изменение адреса завершится после того как отправитель будет онлайн."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Одновременный приём"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "Приём файла будет прекращён."; @@ -3017,6 +3086,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "История сообщений и улучшенный [каталог групп](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Получатели не видят от кого это сообщение."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Получатели видят их в то время как Вы их набираете."; @@ -3212,6 +3284,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Сохранить приветственное сообщение?"; +/* No comment provided by engineer. */ +"saved" = "сохранено"; + +/* No comment provided by engineer. */ +"Saved" = "Сохранено"; + +/* No comment provided by engineer. */ +"Saved from" = "Сохранено из"; + +/* No comment provided by engineer. */ +"saved from %@" = "сохранено из %@"; + /* message info title */ "Saved message" = "Сохраненное сообщение"; @@ -3479,6 +3563,12 @@ /* chat feature */ "SimpleX links" = "SimpleX ссылки"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "Ссылки SimpleX запрещены в этой группе."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "Ссылки SimpleX не разрешены"; + /* No comment provided by engineer. */ "SimpleX Lock" = "Блокировка SimpleX"; @@ -4043,6 +4133,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Голосовые сообщения запрещены в этой группе."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Голосовые сообщения не разрешены"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Голосовые сообщения запрещены!"; @@ -4094,12 +4187,24 @@ /* No comment provided by engineer. */ "When available" = "Когда возможно"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Во время соединения аудио и видео звонков."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Когда Вы получите запрос на соединение, Вы можете принять или отклонить его."; /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Когда Вы соединены с контактом инкогнито, тот же самый инкогнито профиль будет использоваться для групп с этим контактом."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Будет включено в прямых разговорах!"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Проводная сеть"; + /* No comment provided by engineer. */ "With encrypted files and media." = "С зашифрованными файлами и медиа."; @@ -4121,6 +4226,9 @@ /* pref value */ "yes" = "да"; +/* No comment provided by engineer. */ +"you" = "Вы"; + /* No comment provided by engineer. */ "You" = "Вы"; 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 ce6d0dc2e0..c3a377cd8a 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -1828,7 +1828,7 @@ Kopfhörer Weiterleiten Bluetooth - Weitergeleitet von + Weitergeleitet aus Nachricht weiterleiten… Kopfhörer Gelijktijdige ontvangst @@ -1839,4 +1839,12 @@ Weitergeleitet Abgespeichert von Herunterladen + Nachrichten weiterleiten und speichern + Klingeltöne + Die Nachrichtenquelle bleibt privat. + Netzwerk-Verwaltung + Bei der Verbindung über Audio- und Video-Anrufe. + Litauische Bedienoberfläche + Zuverlässigere Netzwerkverbindung. + Wird in direkten Chats automatisch aktiviert! \ No newline at end of file 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 ce6f6bbe65..adb0d077cf 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ru/strings.xml @@ -1813,4 +1813,40 @@ Дать разрешение для совершения звонков Микрофон Открыть настройки + Bluetooth + Одновременный приём + Верхний динамик + Наушники + Громкоговоритель + Звуки во время звонков + Более надежное соединение с сетью. + Статус сети + сохранено + сохранено из %s + Переслано + Переслано из + Получатели не видят от кого это сообщение. + переслано + Файлы и медиа не разрешены + Ссылки SimpleX не разрешены + Голосовые сообщения не разрешены + Ссылки SimpleX + Разрешить отправлять ссылки SimpleX. + Запретить отправку ссылок SimpleX + Члены группы могут отправлять ссылки SimpleX + админы + все члены + владельцы + Загрузить + Сохранено + Сохранено из + Включено для + Переслать + Переслать и сохранить сообщение + Ссылки SimpleX запрещены в этой группе. + Переслать сообщение… + Литовский интерфейс + Источник сообщения остаётся конфиденциальным. + Во время соединения аудио и видео звонков. + Будет включено в прямых разговорах! \ No newline at end of file From cfa7e0bb284d21d3f25732a96c636df1b91d9c15 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Wed, 24 Apr 2024 21:20:26 +0100 Subject: [PATCH 089/147] ios: customizable profile images (#4084) * ios: customizable profile images * update slider * whats new --- .../Shared/Views/Call/ActiveCallView.swift | 4 +--- .../Shared/Views/Call/IncomingCallView.swift | 3 +-- .../Shared/Views/Chat/ChatInfoToolbar.swift | 2 +- apps/ios/Shared/Views/Chat/ChatInfoView.swift | 3 +-- .../Chat/ChatItem/CIGroupInvitationView.swift | 2 +- .../Views/Chat/ChatItemForwardingView.swift | 3 +-- .../Shared/Views/Chat/ChatItemInfoView.swift | 6 ++--- apps/ios/Shared/Views/Chat/ChatView.swift | 3 +-- .../Chat/Group/AddGroupMembersView.swift | 3 +-- .../Views/Chat/Group/GroupChatInfoView.swift | 6 ++--- .../Chat/Group/GroupMemberInfoView.swift | 3 +-- .../Shared/Views/ChatList/ChatListView.swift | 3 +-- .../Views/ChatList/ChatPreviewView.swift | 3 +-- .../Views/ChatList/ContactRequestView.swift | 3 +-- .../Shared/Views/ChatList/UserPicker.swift | 3 +-- .../Shared/Views/Helpers/ChatInfoImage.swift | 7 ++++-- .../Shared/Views/Helpers/ProfileImage.swift | 24 +++++++++++++++---- .../Shared/Views/NewChat/AddGroupView.swift | 4 +--- .../Views/Onboarding/WhatsNewView.swift | 5 ++++ .../UserSettings/AppearanceSettings.swift | 22 ++++++++++++++++- .../Views/UserSettings/SettingsView.swift | 5 ++-- .../Views/UserSettings/UserProfile.swift | 4 +--- .../Views/UserSettings/UserProfilesView.swift | 3 +-- .../bg.xcloc/Localized Contents/bg.xliff | 12 ++++++++++ .../cs.xcloc/Localized Contents/cs.xliff | 12 ++++++++++ .../de.xcloc/Localized Contents/de.xliff | 12 ++++++++++ .../en.xcloc/Localized Contents/en.xliff | 15 ++++++++++++ .../es.xcloc/Localized Contents/es.xliff | 12 ++++++++++ .../fi.xcloc/Localized Contents/fi.xliff | 12 ++++++++++ .../fr.xcloc/Localized Contents/fr.xliff | 12 ++++++++++ .../hu.xcloc/Localized Contents/hu.xliff | 12 ++++++++++ .../it.xcloc/Localized Contents/it.xliff | 12 ++++++++++ .../ja.xcloc/Localized Contents/ja.xliff | 12 ++++++++++ .../nl.xcloc/Localized Contents/nl.xliff | 12 ++++++++++ .../pl.xcloc/Localized Contents/pl.xliff | 12 ++++++++++ .../ru.xcloc/Localized Contents/ru.xliff | 19 +++++++++++++-- .../th.xcloc/Localized Contents/th.xliff | 12 ++++++++++ .../tr.xcloc/Localized Contents/tr.xliff | 12 ++++++++++ .../uk.xcloc/Localized Contents/uk.xliff | 12 ++++++++++ .../Localized Contents/zh-Hans.xliff | 12 ++++++++++ apps/ios/ru.lproj/Localizable.strings | 13 ++++++++-- 41 files changed, 296 insertions(+), 55 deletions(-) diff --git a/apps/ios/Shared/Views/Call/ActiveCallView.swift b/apps/ios/Shared/Views/Call/ActiveCallView.swift index cffdefaaa2..751eba80ae 100644 --- a/apps/ios/Shared/Views/Call/ActiveCallView.swift +++ b/apps/ios/Shared/Views/Call/ActiveCallView.swift @@ -277,9 +277,7 @@ struct ActiveCallOverlay: View { .foregroundColor(.white.opacity(0.8)) } VStack { - ProfileImage(imageStr: call.contact.profile.image) - .scaledToFit() - .frame(width: 192, height: 192) + ProfileImage(imageStr: call.contact.profile.image, size: 192) audioCallInfoView(call) } .foregroundColor(.white) diff --git a/apps/ios/Shared/Views/Call/IncomingCallView.swift b/apps/ios/Shared/Views/Call/IncomingCallView.swift index c2d5dabd48..4647995b28 100644 --- a/apps/ios/Shared/Views/Call/IncomingCallView.swift +++ b/apps/ios/Shared/Views/Call/IncomingCallView.swift @@ -30,8 +30,7 @@ struct IncomingCallView: View { VStack(alignment: .leading, spacing: 6) { HStack { if m.users.count > 1 { - ProfileImage(imageStr: invitation.user.image, color: .white) - .frame(width: 24, height: 24) + ProfileImage(imageStr: invitation.user.image, size: 24, color: .white) } Image(systemName: invitation.callType.media == .video ? "video.fill" : "phone.fill").foregroundColor(.green) Text(invitation.callTypeText) diff --git a/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift b/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift index d0f4b6e55a..140b609902 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoToolbar.swift @@ -25,11 +25,11 @@ struct ChatInfoToolbar: View { } ChatInfoImage( chat: chat, + size: imageSize, color: colorScheme == .dark ? chatImageColorDark : chatImageColorLight ) - .frame(width: imageSize, height: imageSize) .padding(.trailing, 4) VStack { let t = Text(cInfo.displayName).font(.headline) diff --git a/apps/ios/Shared/Views/Chat/ChatInfoView.swift b/apps/ios/Shared/Views/Chat/ChatInfoView.swift index 56e7cec697..55e84f20d3 100644 --- a/apps/ios/Shared/Views/Chat/ChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatInfoView.swift @@ -271,8 +271,7 @@ struct ChatInfoView: View { private func contactInfoHeader() -> some View { VStack { let cInfo = chat.chatInfo - ChatInfoImage(chat: chat, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 192, height: 192) + ChatInfoImage(chat: chat, size: 192, color: Color(uiColor: .tertiarySystemFill)) .padding(.top, 12) .padding() if contact.verified { diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift index 72013877ca..44bc579623 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift @@ -100,9 +100,9 @@ struct CIGroupInvitationView: View { ProfileImage( imageStr: groupInvitation.groupProfile.image, iconName: "person.2.circle.fill", + size: 44, color: color ) - .frame(width: 44, height: 44) .padding(.trailing, 4) VStack(alignment: .leading) { let p = groupInvitation.groupProfile diff --git a/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift b/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift index f575b6f9a2..7237711a2a 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemForwardingView.swift @@ -123,8 +123,7 @@ struct ChatItemForwardingView: View { } } label: { HStack { - ChatInfoImage(chat: chat) - .frame(width: 30, height: 30) + ChatInfoImage(chat: chat, size: 30) .padding(.trailing, 2) Text(chat.chatInfo.chatViewName) .foregroundColor(.primary) diff --git a/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift b/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift index 0d1f99f3bd..19aa261396 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemInfoView.swift @@ -334,8 +334,7 @@ struct ChatItemInfoView: View { @ViewBuilder private func forwardedFromSender(_ forwardedFromItem: AChatItem) -> some View { HStack { - ChatInfoImage(chat: Chat(chatInfo: forwardedFromItem.chatInfo)) - .frame(width: 48, height: 48) + ChatInfoImage(chat: Chat(chatInfo: forwardedFromItem.chatInfo), size: 48) .padding(.trailing, 6) if forwardedFromItem.chatItem.chatDir.sent { @@ -405,8 +404,7 @@ struct ChatItemInfoView: View { private func memberDeliveryStatusView(_ member: GroupMember, _ status: CIStatus) -> some View { HStack{ - ProfileImage(imageStr: member.image) - .frame(width: 30, height: 30) + ProfileImage(imageStr: member.image, size: 30) .padding(.trailing, 2) Text(member.chatViewName) .lineLimit(1) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 45819851f0..97ffd61116 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -597,8 +597,7 @@ struct ChatView: View { .padding(.top, 7) } HStack(alignment: .top, spacing: 8) { - ProfileImage(imageStr: member.memberProfile.image) - .frame(width: memberImageSize, height: memberImageSize) + ProfileImage(imageStr: member.memberProfile.image, size: memberImageSize) .onTapGesture { if chatView.membersLoaded { selectedMember = m.getGroupMember(member.groupMemberId) diff --git a/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift b/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift index b89c006c61..ed2afb91b3 100644 --- a/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift +++ b/apps/ios/Shared/Views/Chat/Group/AddGroupMembersView.swift @@ -194,8 +194,7 @@ struct AddGroupMembersViewCommon: View { } } label: { HStack{ - ProfileImage(imageStr: contact.image) - .frame(width: 30, height: 30) + ProfileImage(imageStr: contact.image, size: 30) .padding(.trailing, 2) Text(ChatInfo.direct(contact: contact).chatViewName) .foregroundColor(prohibitedToInviteIncognito ? .secondary : .primary) diff --git a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift index c6509c9502..c22f3f0fed 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupChatInfoView.swift @@ -172,8 +172,7 @@ struct GroupChatInfoView: View { private func groupInfoHeader() -> some View { VStack { let cInfo = chat.chatInfo - ChatInfoImage(chat: chat, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 192, height: 192) + ChatInfoImage(chat: chat, size: 192, color: Color(uiColor: .tertiarySystemFill)) .padding(.top, 12) .padding() Text(cInfo.displayName) @@ -217,8 +216,7 @@ struct GroupChatInfoView: View { var body: some View { let member = groupMember.wrapped let v = HStack{ - ProfileImage(imageStr: member.image) - .frame(width: 38, height: 38) + ProfileImage(imageStr: member.image, size: 38) .padding(.trailing, 2) // TODO server connection status VStack(alignment: .leading) { diff --git a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift index 766aaf6577..a24608b7e7 100644 --- a/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift +++ b/apps/ios/Shared/Views/Chat/Group/GroupMemberInfoView.swift @@ -305,8 +305,7 @@ struct GroupMemberInfoView: View { private func groupMemberInfoHeader(_ mem: GroupMember) -> some View { VStack { - ProfileImage(imageStr: mem.image, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 192, height: 192) + ProfileImage(imageStr: mem.image, size: 192, color: Color(uiColor: .tertiarySystemFill)) .padding(.top, 12) .padding() if mem.verified { diff --git a/apps/ios/Shared/Views/ChatList/ChatListView.swift b/apps/ios/Shared/Views/ChatList/ChatListView.swift index 38aabdc21d..6bf63bb2e3 100644 --- a/apps/ios/Shared/Views/ChatList/ChatListView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatListView.swift @@ -92,8 +92,7 @@ struct ChatListView: View { ToolbarItem(placement: .navigationBarLeading) { let user = chatModel.currentUser ?? User.sampleData ZStack(alignment: .topTrailing) { - ProfileImage(imageStr: user.image, color: Color(uiColor: .quaternaryLabel)) - .frame(width: 32, height: 32) + ProfileImage(imageStr: user.image, size: 32, color: Color(uiColor: .quaternaryLabel)) .padding(.trailing, 4) let allRead = chatModel.users .filter { u in !u.user.activeUser && !u.user.hidden } diff --git a/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift b/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift index 8bfc8fec03..fe8fd8b28e 100644 --- a/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift +++ b/apps/ios/Shared/Views/ChatList/ChatPreviewView.swift @@ -23,8 +23,7 @@ struct ChatPreviewView: View { let cItem = chat.chatItems.last return HStack(spacing: 8) { ZStack(alignment: .bottomTrailing) { - ChatInfoImage(chat: chat) - .frame(width: 63, height: 63) + ChatInfoImage(chat: chat, size: 63) chatPreviewImageOverlayIcon() .padding([.bottom, .trailing], 1) } diff --git a/apps/ios/Shared/Views/ChatList/ContactRequestView.swift b/apps/ios/Shared/Views/ChatList/ContactRequestView.swift index c5c062a6ec..dacf51a5e8 100644 --- a/apps/ios/Shared/Views/ChatList/ContactRequestView.swift +++ b/apps/ios/Shared/Views/ChatList/ContactRequestView.swift @@ -16,8 +16,7 @@ struct ContactRequestView: View { var body: some View { HStack(spacing: 8) { - ChatInfoImage(chat: chat) - .frame(width: 63, height: 63) + ChatInfoImage(chat: chat, size: 63) .padding(.leading, 4) VStack(alignment: .leading, spacing: 0) { HStack(alignment: .top) { diff --git a/apps/ios/Shared/Views/ChatList/UserPicker.swift b/apps/ios/Shared/Views/ChatList/UserPicker.swift index 922fc84e53..a615f9c118 100644 --- a/apps/ios/Shared/Views/ChatList/UserPicker.swift +++ b/apps/ios/Shared/Views/ChatList/UserPicker.swift @@ -127,8 +127,7 @@ struct UserPicker: View { } }, label: { HStack(spacing: 0) { - ProfileImage(imageStr: user.image, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 44, height: 44) + ProfileImage(imageStr: user.image, size: 44, color: Color(uiColor: .tertiarySystemFill)) .padding(.trailing, 12) Text(user.chatViewName) .fontWeight(user.activeUser ? .medium : .regular) diff --git a/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift b/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift index e253cdd72c..0180b066ab 100644 --- a/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift +++ b/apps/ios/Shared/Views/Helpers/ChatInfoImage.swift @@ -12,6 +12,7 @@ import SimpleXChat struct ChatInfoImage: View { @Environment(\.colorScheme) var colorScheme @ObservedObject var chat: Chat + var size: CGFloat var color = Color(uiColor: .tertiarySystemGroupedBackground) var body: some View { @@ -28,6 +29,7 @@ struct ChatInfoImage: View { return ProfileImage( imageStr: chat.chatInfo.image, iconName: iconName, + size: size, color: iconColor ) } @@ -36,8 +38,9 @@ struct ChatInfoImage: View { struct ChatInfoImage_Previews: PreviewProvider { static var previews: some View { ChatInfoImage( - chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []) - , color: Color(red: 0.9, green: 0.9, blue: 0.9) + chat: Chat(chatInfo: ChatInfo.sampleData.direct, chatItems: []), + size: 63, + color: Color(red: 0.9, green: 0.9, blue: 0.9) ) .previewLayout(.fixed(width: 63, height: 63)) } diff --git a/apps/ios/Shared/Views/Helpers/ProfileImage.swift b/apps/ios/Shared/Views/Helpers/ProfileImage.swift index cc4f09ae3b..96f0152d9e 100644 --- a/apps/ios/Shared/Views/Helpers/ProfileImage.swift +++ b/apps/ios/Shared/Views/Helpers/ProfileImage.swift @@ -9,29 +9,43 @@ import SwiftUI import SimpleXChat +let defaultProfileImageCorner = 22.5 + struct ProfileImage: View { var imageStr: String? = nil var iconName: String = "person.crop.circle.fill" + var size: CGFloat var color = Color(uiColor: .tertiarySystemGroupedBackground) - + @AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var radius = defaultProfileImageCorner + var body: some View { if let image = imageStr, let data = Data(base64Encoded: dropImagePrefix(image)), let uiImage = UIImage(data: data) { - Image(uiImage: uiImage) - .resizable() - .clipShape(Circle()) + clipProfileImage(Image(uiImage: uiImage), size: size, radius: radius) } else { Image(systemName: iconName) .resizable() .foregroundColor(color) + .frame(width: size, height: size) } } } +@ViewBuilder func clipProfileImage(_ img: Image, size: CGFloat, radius: Double) -> some View { + let v = img.resizable().frame(width: size, height: size) + if radius <= 0 { + v.clipShape(Rectangle()) + } else if radius >= 50 { + v.clipShape(Circle()) + } else { + v.clipShape(RoundedRectangle(cornerRadius: size * radius / 100, style: .continuous)) + } +} + struct ProfileImage_Previews: PreviewProvider { static var previews: some View { - ProfileImage(imageStr: "data:image/png;base64,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") + ProfileImage(imageStr: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAKHGlDQ1BJQ0MgUHJvZmlsZQAASImFVgdUVNcWve9Nb7QZeu9NehtAem/Sq6gMQ28OQxWxgAQjEFFEREARNFQFg1KjiIhiIQgoYA9IEFBisCAq6OQNJNH4//r/zDpz9ttzz7n73ffWmg0A6QCDxYqD+QCIT0hmezlYywQEBsngngEYCAIy0AC6DGYSy8rDwxUg8Xf9d7wbAxC33tHgzvrP3/9nCISFJzEBgIIRTGey2MkILkawT1oyi4tnEUxjI6IQvMLFkauYqxjQQtewwuoaHy8bBNMBwJMZDHYkAERbhJdJZUYic4hhCNZOCItOQDB3vjkzioFwxLsIXhcRl5IOAImrRzs+fivCk7QRrIL0shAcwNUW+tX8yH/tFfrPXgxG5D84Pi6F+dc9ck+HHJ7g641UMSQlQATQBHEgBaQDGcACbLAVYaIRJhx5Dv+9j77aZ4OsZIFtSEc0iARRIBnpt/9qlvfqpGSQBhjImnCEcUU+NtxnujZy4fbqVEiU/wuXdQyA9S0cDqfzC+e2F4DzyLkSB79wyi0A8KoBcL2GmcJOXePQ3C8MIAJeQAOiQArIAxXuWwMMgSmwBHbAGbgDHxAINgMmojceUZUGMkEWyAX54AA4DMpAJTgJ6sAZ0ALawQVwGVwDt8AQGAUPwQSYBi/AAngHliEIwkEUiAqJQtKQIqQO6UJ0yByyg1whLygQCoEioQQoBcqE9kD5UBFUBlVB9dBPUCd0GboBDUP3oUloDnoNfYRRMBmmwZKwEqwF02Er2AX2gTfBkXAinAHnwPvhUrgaPg23wZfhW/AoPAG/gBdRAEVCCaFkURooOsoG5Y4KQkWg2KidqDxUCaoa1YTqQvWj7qAmUPOoD2gsmoqWQWugTdGOaF80E52I3okuQJeh69Bt6D70HfQkegH9GUPBSGDUMSYYJ0wAJhKThsnFlGBqMK2Yq5hRzDTmHRaLFcIqY42wjthAbAx2O7YAewzbjO3BDmOnsIs4HE4Up44zw7njGLhkXC7uKO407hJuBDeNe48n4aXxunh7fBA+AZ+NL8E34LvxI/gZ/DKBj6BIMCG4E8II2wiFhFOELsJtwjRhmchPVCaaEX2IMcQsYimxiXiV+Ij4hkQiyZGMSZ6kaNJuUinpLOk6aZL0gSxAViPbkIPJKeT95FpyD/k++Q2FQlGiWFKCKMmU/ZR6yhXKE8p7HiqPJo8TTxjPLp5ynjaeEZ6XvAReRV4r3s28GbwlvOd4b/PO8xH4lPhs+Bh8O/nK+Tr5xvkW+an8Ovzu/PH8BfwN/Df4ZwVwAkoCdgJhAjkCJwWuCExRUVR5qg2VSd1DPUW9Sp2mYWnKNCdaDC2fdoY2SFsQFBDUF/QTTBcsF7woOCGEElISchKKEyoUahEaE/ooLClsJRwuvE+4SXhEeElEXMRSJFwkT6RZZFTko6iMqJ1orOhB0XbRx2JoMTUxT7E0seNiV8XmxWnipuJM8TzxFvEHErCEmoSXxHaJkxIDEouSUpIOkizJo5JXJOelhKQspWKkiqW6peakqdLm0tHSxdKXpJ/LCMpYycTJlMr0ySzISsg6yqbIVskOyi7LKcv5ymXLNcs9lifK0+Uj5Ivle+UXFKQV3BQyFRoVHigSFOmKUYpHFPsVl5SUlfyV9iq1K80qiyg7KWcoNyo/UqGoWKgkqlSr3FXFqtJVY1WPqQ6pwWoGalFq5Wq31WF1Q/Vo9WPqw+sw64zXJayrXjeuQdaw0kjVaNSY1BTSdNXM1mzXfKmloBWkdVCrX+uztoF2nPYp7Yc6AjrOOtk6XTqvddV0mbrlunf1KHr2erv0OvRe6avrh+sf179nQDVwM9hr0GvwydDIkG3YZDhnpGAUYlRhNE6n0T3oBfTrxhhja+NdxheMP5gYmiSbtJj8YaphGmvaYDq7Xnl9+PpT66fM5MwYZlVmE+Yy5iHmJ8wnLGQtGBbVFk8t5S3DLGssZ6xUrWKsTlu9tNa2Zlu3Wi/ZmNjssOmxRdk62ObZDtoJ2Pnaldk9sZezj7RvtF9wMHDY7tDjiHF0cTzoOO4k6cR0qndacDZy3uHc50J28XYpc3nqqubKdu1yg92c3Q65PdqguCFhQ7s7cHdyP+T+2EPZI9HjZ0+sp4dnueczLx2vTK9+b6r3Fu8G73c+1j6FPg99VXxTfHv9eP2C/er9lvxt/Yv8JwK0AnYE3AoUC4wO7AjCBfkF1QQtbrTbeHjjdLBBcG7w2CblTembbmwW2xy3+eIW3i2MLedCMCH+IQ0hKwx3RjVjMdQptCJ0gWnDPMJ8EWYZVhw2F24WXhQ+E2EWURQxG2kWeShyLsoiqiRqPtomuiz6VYxjTGXMUqx7bG0sJ84/rjkeHx8S35kgkBCb0LdVamv61mGWOiuXNZFokng4cYHtwq5JgpI2JXUk05A/0oEUlZTvUiZTzVPLU9+n+aWdS+dPT0gf2Ka2bd+2mQz7jB+3o7czt/dmymZmZU7usNpRtRPaGbqzd5f8rpxd07sddtdlEbNis37J1s4uyn67x39PV45kzu6cqe8cvmvM5cll547vNd1b+T36++jvB/fp7Tu673NeWN7NfO38kvyVAmbBzR90fij9gbM/Yv9goWHh8QPYAwkHxg5aHKwr4i/KKJo65HaorVimOK/47eEth2+U6JdUHiEeSTkyUepa2nFU4eiBoytlUWWj5dblzRUSFfsqlo6FHRs5bnm8qVKyMr/y44noE/eqHKraqpWqS05iT6aefHbK71T/j/Qf62vEavJrPtUm1E7UedX11RvV1zdINBQ2wo0pjXOng08PnbE909Gk0VTVLNScfxacTTn7/KeQn8ZaXFp6z9HPNZ1XPF/RSm3Na4PatrUttEe1T3QEdgx3Onf2dpl2tf6s+XPtBdkL5RcFLxZ2E7tzujmXMi4t9rB65i9HXp7q3dL78ErAlbt9nn2DV12uXr9mf+1Kv1X/petm1y/cMLnReZN+s/2W4a22AYOB1l8MfmkdNBxsu210u2PIeKhreP1w94jFyOU7tneu3XW6e2t0w+jwmO/YvfHg8Yl7Yfdm78fdf/Ug9cHyw92PMI/yHvM9Lnki8aT6V9VfmycMJy5O2k4OPPV++nCKOfXit6TfVqZznlGelcxIz9TP6s5emLOfG3q+8fn0C9aL5fnc3/l/r3ip8vL8H5Z/DCwELEy/Yr/ivC54I/qm9q3+295Fj8Un7+LfLS/lvRd9X/eB/qH/o//HmeW0FdxK6SfVT12fXT4/4sRzOCwGm7FqBVBIwhERALyuBYASCAB1CPEPG9f8119+BvrK2fyNwVndL5jhvubRVsMQgCakeCFp04OsQ1LJEgAe5NodqT6WANbT+yf/iqQIPd21PXgaAcDJcjivtwJAQHLFgcNZ9uBwPlUgYhHf1z37f7V9g9e8ITewiP88wfWIYET6HPg21nzjV2fybQVcxfrg2/onng/F50lD/ccAAAA4ZVhJZk1NACoAAAAIAAGHaQAEAAAAAQAAABoAAAAAAAKgAgAEAAAAAQAAABigAwAEAAAAAQAAABgAAAAAwf1XlwAAAaNJREFUSA3FlT1LA0EQQBN/gYUYRTksJZVgEbCR/D+7QMr8ABtttBBCsLGzsLG2sxaxED/ie4d77u0dyaE5HHjczn7MzO7M7nU6/yXz+bwLhzCCjTQO+rZhDH3opuNLdRYN4RHe4RIKJ7R34Ro+4AEGSw2mE1iUwT18gpI74WvkGlccu4XNdH0jnYU7cAUacidn37qR23cOxc4aGU0nYUAn7iSWEHkz46w0ocdQu1X6B/AMQZ5o7KfBqNOfwRH8JB7FajGhnmcpKvQe3MEbvILiDm5gPXaCHnZr4vvFGMoEKudKn8YvQIOOe+YzCPop7dwJ3zRfJ7GDuso4YJGRa0yZgg4tUaNXdGrbuZWKKxzYYEJc2xp9AUUjGt8KC2jvgYadF8+10vJyDnNLXwbdiWUZi0fUK01Eoc+AZhCLZVzK4Vq6sDUdz+0dEcbbTTIOJmAyTVhx/WmvrExbv2jtPhWLKodjCtefZiEeZeVZWWSndgwj6fVf3XON8Qwq15++uoqrfYVrow6dGBpCq79ME291jaB0/Q2CPncyht/99MNO/vr9AqW/CGi8sJqbAAAAAElFTkSuQmCC", size: 63) .previewLayout(.fixed(width: 63, height: 63)) .background(.black) } diff --git a/apps/ios/Shared/Views/NewChat/AddGroupView.swift b/apps/ios/Shared/Views/NewChat/AddGroupView.swift index 3f3623033e..4b272f4caa 100644 --- a/apps/ios/Shared/Views/NewChat/AddGroupView.swift +++ b/apps/ios/Shared/Views/NewChat/AddGroupView.swift @@ -70,9 +70,7 @@ struct AddGroupView: View { ZStack(alignment: .center) { ZStack(alignment: .topTrailing) { - ProfileImage(imageStr: profile.image, color: Color(uiColor: .secondarySystemGroupedBackground)) - .aspectRatio(1, contentMode: .fit) - .frame(maxWidth: 128, maxHeight: 128) + ProfileImage(imageStr: profile.image, size: 128, color: Color(uiColor: .secondarySystemGroupedBackground)) if profile.image != nil { Button { profile.image = nil diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index edb3dc17d3..6886c18447 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -394,6 +394,11 @@ private let versionDescriptions: [VersionDescription] = [ title: "In-call sounds", description: "When connecting audio and video calls." ), + FeatureDescription( + icon: "person.crop.square", + title: "Shape profile images", + description: "Square, circle, or anything in between." + ), FeatureDescription( icon: "antenna.radiowaves.left.and.right", title: "Network management", diff --git a/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift b/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift index 1f648b09dc..b91d2c9369 100644 --- a/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift +++ b/apps/ios/Shared/Views/UserSettings/AppearanceSettings.swift @@ -17,11 +17,14 @@ let interfaceStyleNames: [LocalizedStringKey] = ["System", "Light", "Dark"] let appSettingsURL = URL(string: UIApplication.openSettingsURLString)! struct AppearanceSettings: View { + @EnvironmentObject var m: ChatModel + @Environment(\.colorScheme) var colorScheme @EnvironmentObject var sceneDelegate: SceneDelegate @State private var iconLightTapped = false @State private var iconDarkTapped = false @State private var userInterfaceStyle = getUserInterfaceStyleDefault() @State private var uiTintColor = getUIAccentColorDefault() + @AppStorage(DEFAULT_PROFILE_IMAGE_CORNER_RADIUS) private var profileImageCornerRadius = defaultProfileImageCorner var body: some View { VStack{ @@ -44,6 +47,23 @@ struct AppearanceSettings: View { } } + Section("Profile images") { + HStack(spacing: 16) { + if let img = m.currentUser?.image, img != "" { + ProfileImage(imageStr: img, size: 60) + } else { + clipProfileImage(Image(colorScheme == .light ? "icon-dark" : "icon-light"), size: 60, radius: profileImageCornerRadius) + } + + Slider( + value: $profileImageCornerRadius, + in: 0...50, + step: 2.5 + ) + } + .foregroundColor(.secondary) + } + Section { Picker("Theme", selection: $userInterfaceStyle) { ForEach(interfaceStyles, id: \.self) { style in @@ -93,7 +113,7 @@ struct AppearanceSettings: View { } ._onButtonGesture { tapped.wrappedValue = $0 } perform: {} .overlay(tapped.wrappedValue ? Color.secondary : Color.clear) - .cornerRadius(20) + .cornerRadius(13.5) } } diff --git a/apps/ios/Shared/Views/UserSettings/SettingsView.swift b/apps/ios/Shared/Views/UserSettings/SettingsView.swift index 1799d8136a..e532448a90 100644 --- a/apps/ios/Shared/Views/UserSettings/SettingsView.swift +++ b/apps/ios/Shared/Views/UserSettings/SettingsView.swift @@ -45,6 +45,7 @@ let DEFAULT_ACCENT_COLOR_RED = "accentColorRed" let DEFAULT_ACCENT_COLOR_GREEN = "accentColorGreen" let DEFAULT_ACCENT_COLOR_BLUE = "accentColorBlue" let DEFAULT_USER_INTERFACE_STYLE = "userInterfaceStyle" +let DEFAULT_PROFILE_IMAGE_CORNER_RADIUS = "profileImageCornerRadius" let DEFAULT_CONNECT_VIA_LINK_TAB = "connectViaLinkTab" let DEFAULT_LIVE_MESSAGE_ALERT_SHOWN = "liveMessageAlertShown" let DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE = "showHiddenProfilesNotice" @@ -87,6 +88,7 @@ let appDefaults: [String: Any] = [ DEFAULT_ACCENT_COLOR_GREEN: 0.533, DEFAULT_ACCENT_COLOR_BLUE: 1.000, DEFAULT_USER_INTERFACE_STYLE: 0, + DEFAULT_PROFILE_IMAGE_CORNER_RADIUS: defaultProfileImageCorner, DEFAULT_CONNECT_VIA_LINK_TAB: ConnectViaLinkTab.scan.rawValue, DEFAULT_LIVE_MESSAGE_ALERT_SHOWN: false, DEFAULT_SHOW_HIDDEN_PROFILES_NOTICE: true, @@ -425,8 +427,7 @@ struct ProfilePreview: View { var body: some View { HStack { - ProfileImage(imageStr: profileOf.image, color: color) - .frame(width: 44, height: 44) + ProfileImage(imageStr: profileOf.image, size: 44, color: color) .padding(.trailing, 6) .padding(.vertical, 6) VStack(alignment: .leading) { diff --git a/apps/ios/Shared/Views/UserSettings/UserProfile.swift b/apps/ios/Shared/Views/UserSettings/UserProfile.swift index e5ec23178d..198fd495bd 100644 --- a/apps/ios/Shared/Views/UserSettings/UserProfile.swift +++ b/apps/ios/Shared/Views/UserSettings/UserProfile.swift @@ -188,9 +188,7 @@ struct UserProfile: View { } func profileImageView(_ imageStr: String?) -> some View { - ProfileImage(imageStr: imageStr) - .aspectRatio(1, contentMode: .fit) - .frame(maxWidth: 192, maxHeight: 192) + ProfileImage(imageStr: imageStr, size: 192) } func editImageButton(action: @escaping () -> Void) -> some View { diff --git a/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift b/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift index af3d60c9c0..8c1a3bf4e1 100644 --- a/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift +++ b/apps/ios/Shared/Views/UserSettings/UserProfilesView.swift @@ -309,8 +309,7 @@ struct UserProfilesView: View { } } label: { HStack { - ProfileImage(imageStr: user.image, color: Color(uiColor: .tertiarySystemFill)) - .frame(width: 44, height: 44) + ProfileImage(imageStr: user.image, size: 44, color: Color(uiColor: .tertiarySystemFill)) .padding(.vertical, 4) .padding(.trailing, 12) Text(user.chatViewName) 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 f62ef9fa92..2887496f78 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -4369,6 +4369,10 @@ Error: %@ Профилно изображение No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Име на профила @@ -5189,6 +5193,10 @@ Error: %@ Настройки No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Сподели @@ -5354,6 +5362,10 @@ Error: %@ Някой notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Започни чат 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 000dfd11bc..a1ef39b2fb 100644 --- a/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff +++ b/apps/ios/SimpleX Localizations/cs.xcloc/Localized Contents/cs.xliff @@ -4195,6 +4195,10 @@ Error: %@ Profilový obrázek No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4990,6 +4994,10 @@ Error: %@ Nastavení No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Sdílet @@ -5151,6 +5159,10 @@ Error: %@ Někdo notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Začít chat 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 c756573675..4f22a82e09 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -4374,6 +4374,10 @@ Fehler: %@ Profilbild No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profilname @@ -5194,6 +5198,10 @@ Fehler: %@ Einstellungen No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Teilen @@ -5359,6 +5367,10 @@ Fehler: %@ Jemand notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Starten Sie den Chat 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 71e1a726b8..2b5677dd61 100644 --- a/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff +++ b/apps/ios/SimpleX Localizations/en.xcloc/Localized Contents/en.xliff @@ -4374,6 +4374,11 @@ Error: %@ Profile image No comment provided by engineer. + + Profile images + Profile images + No comment provided by engineer. + Profile name Profile name @@ -5194,6 +5199,11 @@ Error: %@ Settings No comment provided by engineer. + + Shape profile images + Shape profile images + No comment provided by engineer. + Share Share @@ -5359,6 +5369,11 @@ Error: %@ Somebody notification title + + Square, circle, or anything in between. + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Start chat 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 3f1b2deb11..61a5e235bc 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -4374,6 +4374,10 @@ Error: %@ Imagen del perfil No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nombre del perfil @@ -5194,6 +5198,10 @@ Error: %@ Configuración No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Compartir @@ -5359,6 +5367,10 @@ Error: %@ Alguien notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Iniciar chat 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 90ce66b8d9..a239bebbcf 100644 --- a/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff +++ b/apps/ios/SimpleX Localizations/fi.xcloc/Localized Contents/fi.xliff @@ -4183,6 +4183,10 @@ Error: %@ Profiilikuva No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4977,6 +4981,10 @@ Error: %@ Asetukset No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Jaa @@ -5137,6 +5145,10 @@ Error: %@ Joku notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Aloita keskustelu 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 2dcc0dfd0c..d0e3babe6f 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -4357,6 +4357,10 @@ Erreur : %@ Image de profil No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nom du profil @@ -5172,6 +5176,10 @@ Erreur : %@ Paramètres No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Partager @@ -5335,6 +5343,10 @@ Erreur : %@ Quelqu'un notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Démarrer le chat 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 dd1d4749cd..791f21a440 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -4374,6 +4374,10 @@ Hiba: %@ Profilkép No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profilnév @@ -5194,6 +5198,10 @@ Hiba: %@ Beállítások No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Megosztás @@ -5359,6 +5367,10 @@ Hiba: %@ Valaki notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Csevegés indítása 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 ae2888c12b..9bb90886f8 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -4369,6 +4369,10 @@ Errore: %@ Immagine del profilo No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nome del profilo @@ -5189,6 +5193,10 @@ Errore: %@ Impostazioni No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Condividi @@ -5354,6 +5362,10 @@ Errore: %@ Qualcuno notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Avvia chat 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 b1f9294387..9f9915c0f9 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -4203,6 +4203,10 @@ Error: %@ プロフィール画像 No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4989,6 +4993,10 @@ Error: %@ 設定 No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share 共有する @@ -5150,6 +5158,10 @@ Error: %@ 誰か notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat チャットを開始する 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 76f634f917..f4056e359e 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -4374,6 +4374,10 @@ Fout: %@ profielfoto No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profielnaam @@ -5194,6 +5198,10 @@ Fout: %@ Instellingen No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Deel @@ -5359,6 +5367,10 @@ Fout: %@ Iemand notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Begin gesprek 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 a73e253e92..b5c60c2e1e 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -4357,6 +4357,10 @@ Błąd: %@ Zdjęcie profilowe No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Nazwa profilu @@ -5172,6 +5176,10 @@ Błąd: %@ Ustawienia No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Udostępnij @@ -5335,6 +5343,10 @@ Błąd: %@ Ktoś notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Rozpocznij czat 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 a4c0570bdb..ba1ac7a929 100644 --- a/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff +++ b/apps/ios/SimpleX Localizations/ru.xcloc/Localized Contents/ru.xliff @@ -2890,7 +2890,7 @@ This cannot be undone! Group image - Аватар группы + Картинка группы No comment provided by engineer. @@ -4371,7 +4371,12 @@ Error: %@ Profile image - Аватар + Картинка профиля + No comment provided by engineer. + + + Profile images + Картинки профилей No comment provided by engineer. @@ -5194,6 +5199,11 @@ Error: %@ Настройки No comment provided by engineer. + + Shape profile images + Форма картинок профилей + No comment provided by engineer. + Share Поделиться @@ -5359,6 +5369,11 @@ Error: %@ Контакт notification title + + Square, circle, or anything in between. + Квадрат, круг и все, что между ними. + No comment provided by engineer. + Start chat Запустить чат 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 71654d1578..1f62fad60f 100644 --- a/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff +++ b/apps/ios/SimpleX Localizations/th.xcloc/Localized Contents/th.xliff @@ -4164,6 +4164,10 @@ Error: %@ รูปโปรไฟล์ No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -4954,6 +4958,10 @@ Error: %@ การตั้งค่า No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share แชร์ @@ -5112,6 +5120,10 @@ Error: %@ ใครบางคน notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat เริ่มแชท 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 602519a962..1d0783c5e5 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -4374,6 +4374,10 @@ Hata: %@ Profil fotoğrafı No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Profil ismi @@ -5194,6 +5198,10 @@ Hata: %@ Ayarlar No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Paylaş @@ -5359,6 +5367,10 @@ Hata: %@ Biri notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Sohbeti başlat 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 348b06c16c..1ed1f5ffd6 100644 --- a/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff +++ b/apps/ios/SimpleX Localizations/uk.xcloc/Localized Contents/uk.xliff @@ -4357,6 +4357,10 @@ Error: %@ Зображення профілю No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name Назва профілю @@ -5172,6 +5176,10 @@ Error: %@ Налаштування No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share Поділіться @@ -5335,6 +5343,10 @@ Error: %@ Хтось notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat Почати чат 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 4190c5bc66..4bf9e05665 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 @@ -4269,6 +4269,10 @@ Error: %@ 资料图片 No comment provided by engineer. + + Profile images + No comment provided by engineer. + Profile name No comment provided by engineer. @@ -5075,6 +5079,10 @@ Error: %@ 设置 No comment provided by engineer. + + Shape profile images + No comment provided by engineer. + Share 分享 @@ -5237,6 +5245,10 @@ Error: %@ 某人 notification title + + Square, circle, or anything in between. + No comment provided by engineer. + Start chat 开始聊天 diff --git a/apps/ios/ru.lproj/Localizable.strings b/apps/ios/ru.lproj/Localizable.strings index 758588bc35..2c703f0095 100644 --- a/apps/ios/ru.lproj/Localizable.strings +++ b/apps/ios/ru.lproj/Localizable.strings @@ -1951,7 +1951,7 @@ "Group full name (optional)" = "Полное имя (необязательно)"; /* No comment provided by engineer. */ -"Group image" = "Аватар группы"; +"Group image" = "Картинка группы"; /* No comment provided by engineer. */ "Group invitation" = "Приглашение в группу"; @@ -2958,7 +2958,10 @@ "Profile and server connections" = "Профиль и соединения на сервере"; /* No comment provided by engineer. */ -"Profile image" = "Аватар"; +"Profile image" = "Картинка профиля"; + +/* No comment provided by engineer. */ +"Profile images" = "Картинки профилей"; /* No comment provided by engineer. */ "Profile name" = "Имя профиля"; @@ -3503,6 +3506,9 @@ /* No comment provided by engineer. */ "Settings" = "Настройки"; +/* No comment provided by engineer. */ +"Shape profile images" = "Форма картинок профилей"; + /* chat item action */ "Share" = "Поделиться"; @@ -3605,6 +3611,9 @@ /* notification title */ "Somebody" = "Контакт"; +/* No comment provided by engineer. */ +"Square, circle, or anything in between." = "Квадрат, круг и все, что между ними."; + /* chat item text */ "standard end-to-end encryption" = "стандартное end-to-end шифрование"; From 2b7f3099a62dc474c5ab43b7ccfa8ea05613cad0 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 25 Apr 2024 03:22:52 +0700 Subject: [PATCH 090/147] android, desktop: customizable profile images (#4087) * android, desktop: customizable profile images * better * fixes --------- Co-authored-by: Evgeny Poberezkin --- .../views/usersettings/Appearance.android.kt | 17 ++++-- .../drawable/icon_dark_blue_round_common.png | Bin 9870 -> 0 bytes .../res/drawable/icon_round_common.png | Bin 11666 -> 0 bytes .../chat/simplex/common/model/SimpleXAPI.kt | 8 +++ .../simplex/common/views/chat/ChatView.kt | 8 +-- .../common/views/helpers/ChatInfoImage.kt | 55 +++++++++++++++--- .../common/views/onboarding/WhatsNewView.kt | 5 ++ .../common/views/usersettings/Appearance.kt | 38 +++++++++++- .../commonMain/resources/MR/base/strings.xml | 3 + .../resources/MR/images/ic_account_box.svg | 1 + .../MR/images/ic_simplex_dark@4x.png | Bin 0 -> 10121 bytes .../MR/images/ic_simplex_light@4x.png | Bin 0 -> 10325 bytes .../commonMain/resources/MR/ru/strings.xml | 2 + .../views/usersettings/Appearance.desktop.kt | 3 + 14 files changed, 118 insertions(+), 22 deletions(-) delete mode 100644 apps/multiplatform/common/src/androidMain/res/drawable/icon_dark_blue_round_common.png delete mode 100644 apps/multiplatform/common/src/androidMain/res/drawable/icon_round_common.png create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_dark@4x.png create mode 100644 apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_light@4x.png diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt index ccb85c3982..5a60e1d1b0 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/usersettings/Appearance.android.kt @@ -12,10 +12,12 @@ import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.* import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyRow +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material.MaterialTheme.colors import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.shadow import androidx.compose.ui.graphics.* import androidx.compose.ui.layout.ContentScale @@ -34,11 +36,13 @@ import chat.simplex.common.helpers.APPLICATION_ID import chat.simplex.common.helpers.saveAppLocale import chat.simplex.common.views.usersettings.AppearanceScope.ColorEditor import chat.simplex.res.MR +import dev.icerock.moko.resources.ImageResource +import dev.icerock.moko.resources.compose.painterResource import kotlinx.coroutines.delay -enum class AppIcon(val resId: Int) { - DEFAULT(R.drawable.icon_round_common), - DARK_BLUE(R.drawable.icon_dark_blue_round_common), +enum class AppIcon(val image: ImageResource) { + DEFAULT(MR.images.ic_simplex_light), + DARK_BLUE(MR.images.ic_simplex_dark), } @Composable @@ -122,9 +126,8 @@ fun AppearanceScope.AppearanceLayout( LazyRow { items(AppIcon.values().size, { index -> AppIcon.values()[index] }) { index -> val item = AppIcon.values()[index] - val mipmap = ContextCompat.getDrawable(LocalContext.current, item.resId)!! Image( - bitmap = mipmap.toBitmap().asImageBitmap(), + painterResource(item.image), contentDescription = "", contentScale = ContentScale.Fit, modifier = Modifier @@ -132,6 +135,7 @@ fun AppearanceScope.AppearanceLayout( .size(70.dp) .clickable { changeIcon(item) } .padding(10.dp) + .clip(CircleShape) ) if (index + 1 != AppIcon.values().size) { @@ -141,6 +145,9 @@ fun AppearanceScope.AppearanceLayout( } } + SectionDividerSpaced(maxTopPadding = true) + ProfileImageSection() + SectionDividerSpaced(maxTopPadding = true) ThemesSection(systemDarkTheme, showSettingsModal, editColor) SectionBottomSpacer() diff --git a/apps/multiplatform/common/src/androidMain/res/drawable/icon_dark_blue_round_common.png b/apps/multiplatform/common/src/androidMain/res/drawable/icon_dark_blue_round_common.png deleted file mode 100644 index e413ad857da917bb0884e67a77f3db58e7227666..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9870 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 AtpET3 diff --git a/apps/multiplatform/common/src/androidMain/res/drawable/icon_round_common.png b/apps/multiplatform/common/src/androidMain/res/drawable/icon_round_common.png deleted file mode 100644 index 755904ee8efc18f9be8c9f70d773701e08948db7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11666 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 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 0bf3f23d2c..494f400fbc 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 @@ -171,6 +171,7 @@ class AppPreferences { }, decode = { json.decodeFromString(MapSerializer(String.serializer(), ThemeOverrides.serializer()), it) }, settingsThemes) + val profileImageCornerRadius = mkFloatPreference(SHARED_PREFS_PROFILE_IMAGE_CORNER_RADIUS, 22.5f) val whatsNewVersion = mkStrPreference(SHARED_PREFS_WHATS_NEW_VERSION, null) val lastMigratedVersionCode = mkIntPreference(SHARED_PREFS_LAST_MIGRATED_VERSION_CODE, 0) @@ -201,6 +202,12 @@ class AppPreferences { set = fun(value) = settings.putLong(prefName, value) ) + private fun mkFloatPreference(prefName: String, default: Float) = + SharedPreference( + get = fun() = settings.getFloat(prefName, default), + set = fun(value) = settings.putFloat(prefName, value) + ) + private fun mkTimeoutPreference(prefName: String, default: Long, proxyDefault: Long): SharedPreference { val d = if (networkUseSocksProxy.get()) proxyDefault else default return SharedPreference( @@ -331,6 +338,7 @@ class AppPreferences { private const val SHARED_PREFS_CURRENT_THEME = "CurrentTheme" private const val SHARED_PREFS_SYSTEM_DARK_THEME = "SystemDarkTheme" private const val SHARED_PREFS_THEMES = "Themes" + private const val SHARED_PREFS_PROFILE_IMAGE_CORNER_RADIUS = "ProfileImageCornerRadius" private const val SHARED_PREFS_WHATS_NEW_VERSION = "WhatsNewVersion" private const val SHARED_PREFS_LAST_MIGRATED_VERSION_CODE = "LastMigratedVersionCode" private const val SHARED_PREFS_CUSTOM_DISAPPEARING_MESSAGE_TIME = "CustomDisappearingMessageTime" 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 21a9cfa7b4..ff5364adc2 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 @@ -1010,13 +1010,7 @@ fun BoxWithConstraintsScope.ChatItemsList( swipeableModifier, horizontalArrangement = Arrangement.spacedBy(4.dp) ) { - Box( - Modifier - .clip(CircleShape) - .clickable { - showMemberInfo(chat.chatInfo.groupInfo, member) - } - ) { + Box(Modifier.clickable { showMemberInfo(chat.chatInfo.groupInfo, member) }) { MemberImage(member) } ChatItemViewShortHand(cItem, range) diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt index 6813bec550..72764f215e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt @@ -3,22 +3,24 @@ package chat.simplex.common.views.helpers import androidx.compose.desktop.ui.tooling.preview.Preview import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* -import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.* import androidx.compose.material.Icon import androidx.compose.material.MaterialTheme import androidx.compose.runtime.Composable +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.* import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.InspectableValue +import androidx.compose.ui.unit.* import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp import chat.simplex.common.model.ChatInfo +import chat.simplex.common.platform.appPreferences import chat.simplex.common.platform.base64ToBitmap -import chat.simplex.common.ui.theme.NoteFolderIconColor -import chat.simplex.common.ui.theme.SimpleXTheme +import chat.simplex.common.ui.theme.* import chat.simplex.res.MR import dev.icerock.moko.resources.ImageResource @@ -79,12 +81,32 @@ fun ProfileImage( imageBitmap, stringResource(MR.strings.image_descr_profile_image), contentScale = ContentScale.Crop, - modifier = Modifier.size(size).padding(size / 12).clip(CircleShape) + modifier = Modifier.size(size).padding(size / 12).clip(ProfileIconShape()) ) } } } +@Composable +fun ProfileImage(size: Dp, image: ImageResource) { + Image( + painterResource(image), + stringResource(MR.strings.image_descr_profile_image), + contentScale = ContentScale.Crop, + modifier = Modifier.size(size).padding(size / 12).clip(ProfileIconShape()) + ) +} + +@Composable +fun ProfileIconShape(): Shape { + val percent = remember { appPreferences.profileImageCornerRadius.state } + return when { + percent.value <= 0 -> RectangleShape + percent.value >= 50 -> CircleShape + else -> RoundedCornerShape(PercentCornerSize(percent.value)) + } +} + /** [AccountCircleFilled] has its inner padding which leads to visible border if there is background underneath. * This is workaround * */ @@ -109,11 +131,30 @@ fun ProfileImageForActiveCall( imageBitmap, stringResource(MR.strings.image_descr_profile_image), contentScale = ContentScale.Crop, - modifier = Modifier.size(size).clip(CircleShape) + modifier = Modifier.size(size).clip(ProfileIconShape()) ) } } +/** (c) [androidx.compose.foundation.shape.CornerSize] */ +private data class PercentCornerSize( + private val percent: Float +) : CornerSize, InspectableValue { + init { + if (percent < 0 || percent > 100) { + throw IllegalArgumentException("The percent should be in the range of [0, 100]") + } + } + + override fun toPx(shapeSize: Size, density: Density) = + shapeSize.minDimension * (percent / 100f) + + override fun toString(): String = "CornerSize(size = $percent%)" + + override val valueOverride: String + get() = "$percent%" +} + @Preview @Composable 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 0ea2d25c4f..43c492a732 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 @@ -539,6 +539,11 @@ private val versionDescriptions: List = listOf( titleId = MR.strings.v5_7_call_sounds, descrId = MR.strings.v5_7_call_sounds_descr ), + FeatureDescription( + icon = MR.images.ic_account_box, + titleId = MR.strings.v5_7_shape_profile_images, + descrId = MR.strings.v5_7_shape_profile_images_descr + ), FeatureDescription( icon = MR.images.ic_wifi_tethering, titleId = MR.strings.v5_7_network, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt index c55888d8a3..78e24e5e7e 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/usersettings/Appearance.kt @@ -5,14 +5,16 @@ import SectionItemView import SectionItemViewSpaceBetween import SectionSpacer import SectionView -import androidx.compose.foundation.* +import androidx.compose.foundation.Image import androidx.compose.foundation.layout.* import androidx.compose.material.* import androidx.compose.material.MaterialTheme.colors import androidx.compose.runtime.* import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip import androidx.compose.ui.graphics.* +import androidx.compose.ui.layout.ContentScale import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.unit.dp @@ -24,7 +26,6 @@ import chat.simplex.common.platform.* import chat.simplex.res.MR import com.godaddy.android.colorpicker.* import kotlinx.serialization.encodeToString -import java.io.File import java.net.URI import java.util.* import kotlin.collections.ArrayList @@ -33,6 +34,37 @@ import kotlin.collections.ArrayList expect fun AppearanceView(m: ChatModel, showSettingsModal: (@Composable (ChatModel) -> Unit) -> (() -> Unit)) object AppearanceScope { + @Composable + fun ProfileImageSection() { + SectionView(stringResource(MR.strings.settings_section_title_profile_images).uppercase(), padding = PaddingValues(horizontal = DEFAULT_PADDING)) { + val image = remember { chatModel.currentUser }.value?.image + Row(Modifier.padding(top = 10.dp), horizontalArrangement = Arrangement.Center, verticalAlignment = Alignment.CenterVertically) { + val size = 60 + Box(Modifier.offset(x = -(size / 12).dp)) { + if (!image.isNullOrEmpty()) { + ProfileImage(size.dp, image, MR.images.ic_simplex_light, color = Color.Unspecified) + } else { + ProfileImage(size.dp, if (isInDarkTheme()) MR.images.ic_simplex_light else MR.images.ic_simplex_dark) + } + } + Spacer(Modifier.width(DEFAULT_PADDING_HALF - (size / 12).dp)) + Slider( + remember { appPreferences.profileImageCornerRadius.state }.value, + valueRange = 0f..50f, + steps = 20, + onValueChange = { + val diff = it % 2.5f + appPreferences.profileImageCornerRadius.set(it + (if (diff >= 1.25f) -diff + 2.5f else -diff)) + }, + colors = SliderDefaults.colors( + activeTickColor = Color.Transparent, + inactiveTickColor = Color.Transparent, + ) + ) + } + } + } + @Composable fun ThemesSection( systemDarkTheme: SharedPreference, @@ -41,7 +73,7 @@ object AppearanceScope { ) { val currentTheme by CurrentColors.collectAsState() SectionView(stringResource(MR.strings.settings_section_title_themes)) { - val darkTheme = chat.simplex.common.ui.theme.isSystemInDarkTheme() + val darkTheme = isSystemInDarkTheme() val state = remember { derivedStateOf { currentTheme.name } } ThemeSelector(state) { ThemeManager.applyTheme(it, darkTheme) 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 f3a5c138d5..6ca14aace2 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/base/strings.xml @@ -1033,6 +1033,7 @@ LANGUAGE APP ICON THEMES + Profile images MESSAGES AND FILES CALLS Network connection @@ -1770,6 +1771,8 @@ Message source remains private. In-call sounds When connecting audio and video calls. + Shape profile images + Square, circle, or anything in between. Network management More reliable network connection. Lithuanian UI diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg new file mode 100644 index 0000000000..9680161c4f --- /dev/null +++ b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_account_box.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_dark@4x.png b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_dark@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..45fc44af4319b8e495f2b3908b37ec1762b12465 GIT binary patch literal 10121 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 KvChIL<^KaA7^!yv literal 0 HcmV?d00001 diff --git a/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_light@4x.png b/apps/multiplatform/common/src/commonMain/resources/MR/images/ic_simplex_light@4x.png new file mode 100644 index 0000000000000000000000000000000000000000..c372e25b769d776fd33a7053027ece4f58a231b9 GIT binary patch literal 10325 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Литовский интерфейс Источник сообщения остаётся конфиденциальным. Во время соединения аудио и видео звонков. + Форма картинок профилей + Квадрат, круг и все, что между ними. Будет включено в прямых разговорах! \ No newline at end of file diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt index 5ffc68be79..4e4846bc9f 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/usersettings/Appearance.desktop.kt @@ -62,6 +62,9 @@ fun AppearanceScope.AppearanceLayout( } } } + SectionDividerSpaced(maxTopPadding = true) + ProfileImageSection() + SectionDividerSpaced(maxTopPadding = true) ThemesSection(systemDarkTheme, showSettingsModal, editColor) SectionBottomSpacer() From 9e2a3fe848b5079e62f49c027a466705b58470a4 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 25 Apr 2024 03:39:59 +0700 Subject: [PATCH 091/147] android, desktop: more relaxed way of showing alerts for encryption/decryption errors (#4085) --- .../chat/simplex/common/platform/RecAndPlay.android.kt | 4 ++-- .../chat/simplex/common/platform/VideoPlayer.android.kt | 4 ++-- .../chat/simplex/common/views/helpers/Utils.android.kt | 1 - .../kotlin/chat/simplex/common/model/ChatModel.kt | 1 + .../simplex/common/views/chat/item/ImageFullScreenView.kt | 7 +++++-- .../chat/simplex/common/platform/RecAndPlay.desktop.kt | 2 +- .../chat/simplex/common/platform/VideoPlayer.desktop.kt | 2 +- .../chat/simplex/common/views/helpers/Utils.desktop.kt | 3 --- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt index 5cb10ff070..4dbc9bd9a9 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/RecAndPlay.android.kt @@ -156,13 +156,13 @@ actual object AudioPlayer: AudioPlayerInterface { } }.onFailure { Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) return null } runCatching { player.prepare() }.onFailure { // Can happen when audio file is broken Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) return null } } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt index 6ed054cae9..61b404f7d6 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/platform/VideoPlayer.android.kt @@ -88,7 +88,7 @@ actual class VideoPlayer actual constructor( player.setMediaSource(source, seek ?: 0L) }.onFailure { Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) brokenVideo.value = true return false } @@ -97,7 +97,7 @@ actual class VideoPlayer actual constructor( runCatching { player.prepare() }.onFailure { // Can happen when video file is broken Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) brokenVideo.value = true return false } diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt index ed0c4c9532..9ee816bb76 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/helpers/Utils.android.kt @@ -192,7 +192,6 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? readCryptoFile(getAppFilePath(file.fileSource.filePath), file.fileSource.cryptoArgs) } catch (e: Exception) { Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) - AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) return null } } else { 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 a21e1c8cac..3838cd45a6 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 @@ -2701,6 +2701,7 @@ data class CryptoFile( } catch (e: Exception) { Log.e(TAG, "Unable to decrypt crypto file: " + e.stackTraceToString()) AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) + return null } return tmpFile.toURI() } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt index 316843a908..1dd5e4ee69 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ImageFullScreenView.kt @@ -146,7 +146,7 @@ fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () -> onDispose { playersToRelease.add(decrypted) } } } else if (media.fileSource != null) { - VideoViewEncrypted(uriDecrypted, media.fileSource, preview) + VideoViewEncrypted(uriDecrypted, media.fileSource, preview, close) } } } @@ -163,10 +163,13 @@ fun ImageFullScreenView(imageProvider: () -> ImageGalleryProvider, close: () -> expect fun FullScreenImageView(modifier: Modifier, data: ByteArray, imageBitmap: ImageBitmap) @Composable -private fun VideoViewEncrypted(uriUnencrypted: MutableState, fileSource: CryptoFile, defaultPreview: ImageBitmap) { +private fun VideoViewEncrypted(uriUnencrypted: MutableState, fileSource: CryptoFile, defaultPreview: ImageBitmap, close: () -> Unit) { LaunchedEffect(Unit) { withBGApi { uriUnencrypted.value = fileSource.decryptedGetOrCreate() + if (uriUnencrypted.value == null) { + close() + } } } Box(contentAlignment = Alignment.Center) { diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt index 21a2ccd196..e1dba29f04 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/RecAndPlay.desktop.kt @@ -60,7 +60,7 @@ actual object AudioPlayer: AudioPlayerInterface { }.onFailure { Log.e(TAG, it.stackTraceToString()) fileSource.deleteTmpFile() - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) return null } } diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt index dcae784662..50eeaee604 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/platform/VideoPlayer.desktop.kt @@ -70,7 +70,7 @@ actual class VideoPlayer actual constructor( } }.onFailure { Log.e(TAG, it.stackTraceToString()) - AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.message) + AlertManager.shared.showAlertMsg(generalGetString(MR.strings.unknown_error), it.stackTraceToString()) brokenVideo.value = true return false } diff --git a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt index 8fcd1ac5c7..641ddb8744 100644 --- a/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt +++ b/apps/multiplatform/common/src/desktopMain/kotlin/chat/simplex/common/views/helpers/Utils.desktop.kt @@ -12,11 +12,9 @@ import chat.simplex.common.model.CIFile import chat.simplex.common.model.readCryptoFile import chat.simplex.common.platform.* import chat.simplex.common.simplexWindowState -import chat.simplex.res.MR import kotlinx.coroutines.delay import java.io.ByteArrayInputStream import java.io.File -import java.io.* import java.net.URI import javax.imageio.ImageIO import kotlin.io.encoding.Base64 @@ -143,7 +141,6 @@ actual suspend fun getLoadedImage(file: CIFile?): Pair? if (bitmap != null) bitmap to data else null } catch (e: Exception) { Log.e(TAG, "Unable to read crypto file: " + e.stackTraceToString()) - AlertManager.shared.showAlertMsg(title = generalGetString(MR.strings.error), text = e.stackTraceToString()) null } } else { From 063a6dbc92b3f503c2a959afa7aaccbc70bdf13c Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:37:05 +0400 Subject: [PATCH 092/147] core: apply disappearing messages setting to call and group invitation chat items (#4080) * core: apply disappearing messages setting to call and group invitation chat items * remove comment * fix incorrectly set edited field * sent group invitations * refactor * Revert "refactor" This reverts commit 4dd3070c2d13f8f8c07200185bf473c9a64092eb. --- src/Simplex/Chat.hs | 119 +++++++++++++++++-------- src/Simplex/Chat/Messages/CIContent.hs | 8 ++ src/Simplex/Chat/Store/Messages.hs | 46 +++++----- src/Simplex/Chat/Store/Profiles.hs | 1 - 4 files changed, 112 insertions(+), 62 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 6d6437fe37..7b82d997cd 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -729,7 +729,8 @@ processChatCommand' vr = \case currentTs <- liftIO getCurrentTime when changed $ addInitialAndNewCIVersions db itemId (chatItemTs' ci, oldMC) (currentTs, mc) - updateDirectChatItem' db user contactId ci (CISndMsgContent mc) live $ Just msgId + let edited = itemLive /= Just True + updateDirectChatItem' db user contactId ci (CISndMsgContent mc) edited live Nothing $ Just msgId startUpdatedTimedItemThread user (ChatRef CTDirect contactId) ci ci' pure $ CRChatItemUpdated user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci') else pure $ CRChatItemNotChanged user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci) @@ -751,7 +752,8 @@ processChatCommand' vr = \case currentTs <- liftIO getCurrentTime when changed $ addInitialAndNewCIVersions db itemId (chatItemTs' ci, oldMC) (currentTs, mc) - updateGroupChatItem db user groupId ci (CISndMsgContent mc) live $ Just msgId + let edited = itemLive /= Just True + updateGroupChatItem db user groupId ci (CISndMsgContent mc) edited live $ Just msgId startUpdatedTimedItemThread user (ChatRef CTGroup groupId) ci ci' pure $ CRChatItemUpdated user (AChatItem SCTGroup SMDSnd (GroupChat gInfo) ci') else pure $ CRChatItemNotChanged user (AChatItem SCTGroup SMDSnd (GroupChat gInfo) ci) @@ -765,7 +767,7 @@ processChatCommand' vr = \case | otherwise -> withStore' $ \db -> do currentTs <- getCurrentTime addInitialAndNewCIVersions db itemId (chatItemTs' ci, oldMC) (currentTs, mc) - ci' <- updateLocalChatItem' db user noteFolderId ci (CISndMsgContent mc) + ci' <- updateLocalChatItem' db user noteFolderId ci (CISndMsgContent mc) True pure $ CRChatItemUpdated user (AChatItem SCTLocal SMDSnd (LocalChat nf) ci') _ -> throwChatError CEInvalidChatItemUpdate CTContactRequest -> pure $ chatCmdError (Just user) "not supported" @@ -1143,7 +1145,11 @@ processChatCommand' vr = \case CallInvitationReceived {} -> do let aciContent = ACIContent SMDRcv $ CIRcvCall CISCallRejected 0 withStore' $ \db -> updateDirectChatItemsRead db user contactId $ Just (chatItemId, chatItemId) - updateDirectChatItemView user ct chatItemId aciContent False Nothing $> Nothing + timed_ <- contactCITimed ct + updateDirectChatItemView user ct chatItemId aciContent False False timed_ Nothing + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId) + pure Nothing _ -> throwChatError . CECallState $ callStateTag callState APISendCallOffer contactId WebRTCCallOffer {callType, rtcSession} -> -- party accepting call @@ -1155,7 +1161,7 @@ processChatCommand' vr = \case aciContent = ACIContent SMDRcv $ CIRcvCall CISCallAccepted 0 (SndMessage {msgId}, _) <- sendDirectContactMessage user ct (XCallOffer callId offer) withStore' $ \db -> updateDirectChatItemsRead db user contactId $ Just (chatItemId, chatItemId) - updateDirectChatItemView user ct chatItemId aciContent False $ Just msgId + updateDirectChatItemView user ct chatItemId aciContent False False Nothing $ Just msgId pure $ Just call {callState = callState'} _ -> throwChatError . CECallState $ callStateTag callState APISendCallAnswer contactId rtcSession -> @@ -1165,7 +1171,7 @@ processChatCommand' vr = \case let callState' = CallNegotiated {localCallType, peerCallType, localCallSession = rtcSession, peerCallSession, sharedKey} aciContent = ACIContent SMDSnd $ CISndCall CISCallNegotiated 0 (SndMessage {msgId}, _) <- sendDirectContactMessage user ct (XCallAnswer callId CallAnswer {rtcSession}) - updateDirectChatItemView user ct chatItemId aciContent False $ Just msgId + updateDirectChatItemView user ct chatItemId aciContent False False Nothing $ Just msgId pure $ Just call {callState = callState'} _ -> throwChatError . CECallState $ callStateTag callState APISendCallExtraInfo contactId rtcExtraInfo -> @@ -2448,7 +2454,7 @@ processChatCommand' vr = \case groupMemberId <- getGroupMemberIdByName db user groupId groupMemberName pure (groupId, groupMemberId) sendGrpInvitation :: User -> Contact -> GroupInfo -> GroupMember -> ConnReqInvitation -> CM () - sendGrpInvitation user ct@Contact {localDisplayName} gInfo@GroupInfo {groupId, groupProfile, membership} GroupMember {groupMemberId, memberId, memberRole = memRole} cReq = do + sendGrpInvitation user ct@Contact {contactId, localDisplayName} gInfo@GroupInfo {groupId, groupProfile, membership} GroupMember {groupMemberId, memberId, memberRole = memRole} cReq = do currentMemCount <- withStore' $ \db -> getGroupCurrentMembersCount db user gInfo let GroupMember {memberRole = userRole, memberId = userMemberId} = membership groupInv = @@ -2462,19 +2468,11 @@ processChatCommand' vr = \case } (msg, _) <- sendDirectContactMessage user ct $ XGrpInv groupInv let content = CISndGroupInvitation (CIGroupInvitation {groupId, groupMemberId, localDisplayName, groupProfile, status = CIGISPending}) memRole - ci <- saveSndChatItem user (CDDirectSnd ct) msg content + timed_ <- contactCITimed ct + ci <- saveSndChatItem' user (CDDirectSnd ct) msg content Nothing Nothing Nothing timed_ False toView $ CRNewChatItem user (AChatItem SCTDirect SMDSnd (DirectChat ct) ci) - sndContactCITimed :: Bool -> Contact -> Maybe Int -> CM (Maybe CITimed) - sndContactCITimed live = sndCITimed_ live . contactTimedTTL - sndGroupCITimed :: Bool -> GroupInfo -> Maybe Int -> CM (Maybe CITimed) - sndGroupCITimed live = sndCITimed_ live . groupTimedTTL - sndCITimed_ :: Bool -> Maybe (Maybe Int) -> Maybe Int -> CM (Maybe CITimed) - sndCITimed_ live chatTTL itemTTL = - forM (chatTTL >>= (itemTTL <|>)) $ \ttl -> - CITimed ttl - <$> if live - then pure Nothing - else Just . addUTCTime (realToFrac ttl) <$> liftIO getCurrentTime + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId' ci) drgRandomBytes :: Int -> CM ByteString drgRandomBytes n = asks random >>= atomically . C.randomBytes n privateGetUser :: UserId -> CM User @@ -2610,10 +2608,13 @@ processChatCommand' vr = \case updateCIGroupInvitationStatus user GroupInfo {groupId} newStatus = do AChatItem _ _ cInfo ChatItem {content, meta = CIMeta {itemId}} <- withStore $ \db -> getChatItemByGroupId db vr user groupId case (cInfo, content) of - (DirectChat ct, CIRcvGroupInvitation ciGroupInv@CIGroupInvitation {status} memRole) + (DirectChat ct@Contact {contactId}, CIRcvGroupInvitation ciGroupInv@CIGroupInvitation {status} memRole) | status == CIGISPending -> do let aciContent = ACIContent SMDRcv $ CIRcvGroupInvitation ciGroupInv {status = newStatus} memRole - updateDirectChatItemView user ct itemId aciContent False Nothing + timed_ <- contactCITimed ct + updateDirectChatItemView user ct itemId aciContent False False timed_ Nothing + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, itemId) _ -> pure () -- prohibited sendContactContentMessage :: User -> ContactId -> Bool -> Maybe Int -> ComposedMessage -> Maybe CIForwardedFrom -> CM ChatResponse sendContactContentMessage user contactId live itemTTL (ComposedMessage file_ quotedItemId_ mc) itemForwarded = do @@ -2714,6 +2715,23 @@ processChatCommand' vr = \case let ci = mkChatItem cd ciId content ciFile_ Nothing Nothing itemForwarded Nothing False createdAt Nothing createdAt pure . CRNewChatItem user $ AChatItem SCTLocal SMDSnd (LocalChat nf) ci +contactCITimed :: Contact -> CM (Maybe CITimed) +contactCITimed ct = sndContactCITimed False ct Nothing + +sndContactCITimed :: Bool -> Contact -> Maybe Int -> CM (Maybe CITimed) +sndContactCITimed live = sndCITimed_ live . contactTimedTTL + +sndGroupCITimed :: Bool -> GroupInfo -> Maybe Int -> CM (Maybe CITimed) +sndGroupCITimed live = sndCITimed_ live . groupTimedTTL + +sndCITimed_ :: Bool -> Maybe (Maybe Int) -> Maybe Int -> CM (Maybe CITimed) +sndCITimed_ live chatTTL itemTTL = + forM (chatTTL >>= (itemTTL <|>)) $ \ttl -> + CITimed ttl + <$> if live + then pure Nothing + else Just . addUTCTime (realToFrac ttl) <$> liftIO getCurrentTime + toggleNtf :: User -> GroupMember -> Bool -> CM () toggleNtf user m ntfOn = when (memberActive m) $ @@ -2901,13 +2919,30 @@ deleteFilesLocally files = withFilesFolder action = asks filesFolder >>= readTVarIO >>= mapM_ action updateCallItemStatus :: User -> Contact -> Call -> WebRTCCallStatus -> Maybe MessageId -> CM () -updateCallItemStatus user ct Call {chatItemId} receivedStatus msgId_ = do +updateCallItemStatus user ct@Contact {contactId} Call {chatItemId} receivedStatus msgId_ = do aciContent_ <- callStatusItemContent user ct chatItemId receivedStatus - forM_ aciContent_ $ \aciContent -> updateDirectChatItemView user ct chatItemId aciContent False msgId_ + forM_ aciContent_ $ \aciContent -> do + timed_ <- callTimed ct aciContent + updateDirectChatItemView user ct chatItemId aciContent False False timed_ msgId_ + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect contactId, chatItemId) -updateDirectChatItemView :: User -> Contact -> ChatItemId -> ACIContent -> Bool -> Maybe MessageId -> CM () -updateDirectChatItemView user ct chatItemId (ACIContent msgDir ciContent) live msgId_ = do - ci' <- withStore $ \db -> updateDirectChatItem db user ct chatItemId ciContent live msgId_ +callTimed :: Contact -> ACIContent -> CM (Maybe CITimed) +callTimed ct aciContent = + case aciContentCallStatus aciContent of + Just callStatus + | callComplete callStatus -> do + contactCITimed ct + _ -> pure Nothing + where + aciContentCallStatus :: ACIContent -> Maybe CICallStatus + aciContentCallStatus (ACIContent _ (CISndCall st _)) = Just st + aciContentCallStatus (ACIContent _ (CIRcvCall st _)) = Just st + aciContentCallStatus _ = Nothing + +updateDirectChatItemView :: User -> Contact -> ChatItemId -> ACIContent -> Bool -> Bool -> Maybe CITimed -> Maybe MessageId -> CM () +updateDirectChatItemView user ct chatItemId (ACIContent msgDir ciContent) edited live timed_ msgId_ = do + ci' <- withStore $ \db -> updateDirectChatItem db user ct chatItemId ciContent edited live timed_ msgId_ toView $ CRChatItemUpdated user (AChatItem SCTDirect msgDir (DirectChat ct) ci') callStatusItemContent :: User -> Contact -> ChatItemId -> WebRTCCallStatus -> CM (Maybe ACIContent) @@ -3940,7 +3975,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci_ <- withStore $ \db -> getDirectChatItemLast db user contactId >>= liftIO - . mapM (\(ci, content') -> updateDirectChatItem' db user contactId ci content' False Nothing) + . mapM (\(ci, content') -> updateDirectChatItem' db user contactId ci content' False False Nothing Nothing) . mdeUpdatedCI e case ci_ of Just ci -> toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci) @@ -4322,7 +4357,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci_ <- withStore $ \db -> getGroupMemberChatItemLast db user groupId (groupMemberId' m) >>= liftIO - . mapM (\(ci, content') -> updateGroupChatItem db user groupId ci content' False Nothing) + . mapM (\(ci, content') -> updateGroupChatItem db user groupId ci content' False False Nothing) . mdeUpdatedCI e case ci_ of Just ci -> toView $ CRChatItemUpdated user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci) @@ -4786,7 +4821,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci <- saveRcvChatItem' user (CDDirectRcv ct) msg (Just sharedMsgId) brokerTs content Nothing timed_ live ci' <- withStore' $ \db -> do createChatItemVersion db (chatItemId' ci) brokerTs mc - updateDirectChatItem' db user contactId ci content live Nothing + updateDirectChatItem' db user contactId ci content True live Nothing Nothing toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci') where brokerTs = metaBrokerTs msgMeta @@ -4804,7 +4839,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = when changed $ addInitialAndNewCIVersions db (chatItemId' ci) (chatItemTs' ci, oldMC) (brokerTs, mc) reactions <- getDirectCIReactions db ct sharedMsgId - updateDirectChatItem' db user contactId ci {reactions} content live $ Just msgId + let edited = itemLive /= Just True + updateDirectChatItem' db user contactId ci {reactions} content edited live Nothing $ Just msgId toView $ CRChatItemUpdated user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci') startUpdatedTimedItemThread user (ChatRef CTDirect contactId) ci ci' else toView $ CRChatItemNotChanged user (AChatItem SCTDirect SMDRcv (DirectChat ct) ci) @@ -4936,7 +4972,7 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = ci <- saveRcvChatItem' user (CDGroupRcv gInfo m) msg (Just sharedMsgId) brokerTs content Nothing timed_ live ci' <- withStore' $ \db -> do createChatItemVersion db (chatItemId' ci) brokerTs mc - ci' <- updateGroupChatItem db user groupId ci content live Nothing + ci' <- updateGroupChatItem db user groupId ci content True live Nothing blockedMember m ci' $ markGroupChatItemBlocked db user gInfo ci' toView $ CRChatItemUpdated user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci') where @@ -4955,7 +4991,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = when changed $ addInitialAndNewCIVersions db (chatItemId' ci) (chatItemTs' ci, oldMC) (brokerTs, mc) reactions <- getGroupCIReactions db gInfo memberId sharedMsgId - updateGroupChatItem db user groupId ci {reactions} content live $ Just msgId + let edited = itemLive /= Just True + updateGroupChatItem db user groupId ci {reactions} content edited live $ Just msgId toView $ CRChatItemUpdated user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci') startUpdatedTimedItemThread user (ChatRef CTGroup groupId) ci ci' else toView $ CRChatItemNotChanged user (AChatItem SCTGroup SMDRcv (GroupChat gInfo) ci) @@ -5501,8 +5538,11 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = _ -> do withStore' $ \db -> deleteCalls db user ctId' atomically $ TM.delete ctId' calls - forM_ aciContent_ $ \aciContent -> - updateDirectChatItemView user ct chatItemId aciContent False $ Just msgId + forM_ aciContent_ $ \aciContent -> do + timed_ <- callTimed ct aciContent + updateDirectChatItemView user ct chatItemId aciContent False False timed_ $ Just msgId + forM_ (timed_ >>= timedDeleteAt') $ + startProximateTimedItemThread user (ChatRef CTDirect ctId', chatItemId) msgCallStateError :: Text -> Call -> CM () msgCallStateError eventName Call {callState} = @@ -6031,11 +6071,12 @@ sameMemberId memId GroupMember {memberId} = memId == memberId updatePeerChatVRange :: Connection -> VersionRangeChat -> CM Connection updatePeerChatVRange conn@Connection {connId, connChatVersion = v, peerChatVRange, connType, pqSupport, pqEncryption} msgVRange = do v' <- lift $ upgradedConnVersion v msgVRange - conn' <- if msgVRange /= peerChatVRange || v' /= v - then do - withStore' $ \db -> setPeerChatVRange db connId v' msgVRange - pure conn {connChatVersion = v', peerChatVRange = msgVRange} - else pure conn + conn' <- + if msgVRange /= peerChatVRange || v' /= v + then do + withStore' $ \db -> setPeerChatVRange db connId v' msgVRange + pure conn {connChatVersion = v', peerChatVRange = msgVRange} + else pure conn -- TODO v6.0 remove/review: for contacts only version upgrade should trigger enabling PQ support/encryption if connType == ConnContact && v' >= pqEncryptionCompressionVersion && (pqSupport /= PQSupportOn || pqEncryption /= PQEncOn) then do diff --git a/src/Simplex/Chat/Messages/CIContent.hs b/src/Simplex/Chat/Messages/CIContent.hs index 13aa7ace10..3d71047d57 100644 --- a/src/Simplex/Chat/Messages/CIContent.hs +++ b/src/Simplex/Chat/Messages/CIContent.hs @@ -623,6 +623,14 @@ ciCallInfoText status duration = case status of CISCallEnded -> "ended " <> durationText duration CISCallError -> "error" +callComplete :: CICallStatus -> Bool +callComplete = \case + CISCallMissed -> True + CISCallRejected -> True + CISCallEnded -> True + CISCallError -> True + _ -> False + $(JQ.deriveJSON defaultJSON ''E2EInfo) $(JQ.deriveJSON (enumJSON $ dropPrefix "MDE") ''MsgDecryptError) diff --git a/src/Simplex/Chat/Store/Messages.hs b/src/Simplex/Chat/Store/Messages.hs index 69157eba0a..0d6592a311 100644 --- a/src/Simplex/Chat/Store/Messages.hs +++ b/src/Simplex/Chat/Store/Messages.hs @@ -1601,10 +1601,10 @@ updateDirectChatItemStatus db user@User {userId} ct@Contact {contactId} itemId i liftIO $ DB.execute db "UPDATE chat_items SET item_status = ?, updated_at = ? WHERE user_id = ? AND contact_id = ? AND chat_item_id = ?" (itemStatus, currentTs, userId, contactId, itemId) pure ci {meta = (meta ci) {itemStatus}} -updateDirectChatItem :: MsgDirectionI d => DB.Connection -> User -> Contact -> ChatItemId -> CIContent d -> Bool -> Maybe MessageId -> ExceptT StoreError IO (ChatItem 'CTDirect d) -updateDirectChatItem db user ct@Contact {contactId} itemId newContent live msgId_ = do +updateDirectChatItem :: MsgDirectionI d => DB.Connection -> User -> Contact -> ChatItemId -> CIContent d -> Bool -> Bool -> Maybe CITimed -> Maybe MessageId -> ExceptT StoreError IO (ChatItem 'CTDirect d) +updateDirectChatItem db user ct@Contact {contactId} itemId newContent edited live timed_ msgId_ = do ci <- liftEither . correctDir =<< getDirectCIWithReactions db user ct itemId - liftIO $ updateDirectChatItem' db user contactId ci newContent live msgId_ + liftIO $ updateDirectChatItem' db user contactId ci newContent edited live timed_ msgId_ getDirectCIWithReactions :: DB.Connection -> User -> Contact -> ChatItemId -> ExceptT StoreError IO (CChatItem 'CTDirect) getDirectCIWithReactions db user ct@Contact {contactId} itemId = @@ -1613,25 +1613,27 @@ getDirectCIWithReactions db user ct@Contact {contactId} itemId = correctDir :: MsgDirectionI d => CChatItem c -> Either StoreError (ChatItem c d) correctDir (CChatItem _ ci) = first SEInternalError $ checkDirection ci -updateDirectChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTDirect d -> CIContent d -> Bool -> Maybe MessageId -> IO (ChatItem 'CTDirect d) -updateDirectChatItem' db User {userId} contactId ci newContent live msgId_ = do +updateDirectChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTDirect d -> CIContent d -> Bool -> Bool -> Maybe CITimed -> Maybe MessageId -> IO (ChatItem 'CTDirect d) +updateDirectChatItem' db User {userId} contactId ci newContent edited live timed_ msgId_ = do currentTs <- liftIO getCurrentTime - let ci' = updatedChatItem ci newContent live currentTs + let ci' = updatedChatItem ci newContent edited live timed_ currentTs liftIO $ updateDirectChatItem_ db userId contactId ci' msgId_ pure ci' -updatedChatItem :: ChatItem c d -> CIContent d -> Bool -> UTCTime -> ChatItem c d -updatedChatItem ci@ChatItem {meta = meta@CIMeta {itemStatus, itemEdited, itemTimed, itemLive}} newContent live currentTs = +updatedChatItem :: ChatItem c d -> CIContent d -> Bool -> Bool -> Maybe CITimed -> UTCTime -> ChatItem c d +updatedChatItem ci@ChatItem {meta = meta@CIMeta {itemStatus, itemEdited, itemTimed, itemLive}} newContent edited live timed_ currentTs = let newText = ciContentToText newContent - edited' = itemEdited || (itemLive /= Just True) + edited' = itemEdited || edited live' = (live &&) <$> itemLive - timed' = case (itemStatus, itemTimed, itemLive, live) of - (CISRcvNew, _, _, _) -> itemTimed - (_, Just CITimed {ttl, deleteAt = Nothing}, Just True, False) -> - -- timed item, sent or read, not set for deletion, was live, now not live - let deleteAt' = addUTCTime (realToFrac ttl) currentTs - in Just CITimed {ttl, deleteAt = Just deleteAt'} - _ -> itemTimed + timed' = case timed_ of + Just timed -> Just timed + Nothing -> case (itemStatus, itemTimed, itemLive, live) of + (CISRcvNew, _, _, _) -> itemTimed + (_, Just CITimed {ttl, deleteAt = Nothing}, Just True, False) -> + -- timed item, sent or read, not set for deletion, was live, now not live + let deleteAt' = addUTCTime (realToFrac ttl) currentTs + in Just CITimed {ttl, deleteAt = Just deleteAt'} + _ -> itemTimed in ci {content = newContent, meta = meta {itemText = newText, itemEdited = edited', itemTimed = timed', itemLive = live'}, formattedText = parseMaybeMarkdownList newText} -- this function assumes that direct item with correct chat direction already exists, @@ -1819,10 +1821,10 @@ groupCIWithReactions db g cci@(CChatItem md ci@ChatItem {meta = CIMeta {itemShar pure $ CChatItem md ci {reactions} Nothing -> pure cci -updateGroupChatItem :: MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTGroup d -> CIContent d -> Bool -> Maybe MessageId -> IO (ChatItem 'CTGroup d) -updateGroupChatItem db user groupId ci newContent live msgId_ = do +updateGroupChatItem :: MsgDirectionI d => DB.Connection -> User -> Int64 -> ChatItem 'CTGroup d -> CIContent d -> Bool -> Bool -> Maybe MessageId -> IO (ChatItem 'CTGroup d) +updateGroupChatItem db user groupId ci newContent edited live msgId_ = do currentTs <- liftIO getCurrentTime - let ci' = updatedChatItem ci newContent live currentTs + let ci' = updatedChatItem ci newContent edited live Nothing currentTs liftIO $ updateGroupChatItem_ db user groupId ci' msgId_ pure ci' @@ -2144,10 +2146,10 @@ getLocalChatItemIdByText' db User {userId} noteFolderId msg = |] (userId, noteFolderId, msg <> "%") -updateLocalChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> NoteFolderId -> ChatItem 'CTLocal d -> CIContent d -> IO (ChatItem 'CTLocal d) -updateLocalChatItem' db User {userId} noteFolderId ci newContent = do +updateLocalChatItem' :: forall d. MsgDirectionI d => DB.Connection -> User -> NoteFolderId -> ChatItem 'CTLocal d -> CIContent d -> Bool -> IO (ChatItem 'CTLocal d) +updateLocalChatItem' db User {userId} noteFolderId ci newContent edited = do currentTs <- liftIO getCurrentTime - let ci' = updatedChatItem ci newContent False currentTs + let ci' = updatedChatItem ci newContent edited False Nothing currentTs liftIO $ updateLocalChatItem_ db userId noteFolderId ci' pure ci' diff --git a/src/Simplex/Chat/Store/Profiles.hs b/src/Simplex/Chat/Store/Profiles.hs index 312907fb16..c92bf3391c 100644 --- a/src/Simplex/Chat/Store/Profiles.hs +++ b/src/Simplex/Chat/Store/Profiles.hs @@ -87,7 +87,6 @@ import Simplex.Messaging.Agent.Store.SQLite (firstRow, maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import qualified Simplex.Messaging.Crypto as C import qualified Simplex.Messaging.Crypto.Ratchet as CR -import Simplex.Messaging.Crypto.Ratchet (PQSupport) import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON) import Simplex.Messaging.Protocol (BasicAuth (..), ProtoServerWithAuth (..), ProtocolServer (..), ProtocolTypeI (..), SubscriptionMode) From 1163fe7b562c2528fc6586346913e26b80d0ad03 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:41:20 +0400 Subject: [PATCH 093/147] ios: show disappearing message timer on calls and group invitations (#4086) --- .../Views/Chat/ChatItem/CICallItemView.swift | 4 +-- .../Views/Chat/ChatItem/CIEventView.swift | 2 +- .../Chat/ChatItem/CIGroupInvitationView.swift | 33 +++++++++++-------- .../Views/Chat/ChatItem/CIMetaView.swift | 31 +++++++++++------ apps/ios/Shared/Views/Chat/ChatItemView.swift | 2 +- .../common/views/chat/item/CIEventView.kt | 2 +- 6 files changed, 44 insertions(+), 30 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift index f0bf43dffe..e3913431f5 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CICallItemView.swift @@ -35,9 +35,7 @@ struct CICallItemView: View { case .error: missedCallIcon(sent).foregroundColor(.orange) } - chatItem.timestampText - .font(.caption) - .foregroundColor(.secondary) + CIMetaView(chat: chat, chatItem: chatItem, showStatus: false, showEdited: false) .padding(.bottom, 8) .padding(.horizontal, 12) } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift index 1866645316..1375b87a5a 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIEventView.swift @@ -17,7 +17,7 @@ struct CIEventView: View { .padding(.horizontal, 6) .padding(.vertical, 4) .textSelection(.disabled) - .lineLimit(3) + .lineLimit(4) } } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift index 44bc579623..1c9df5fcbf 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIGroupInvitationView.swift @@ -12,6 +12,7 @@ import SimpleXChat struct CIGroupInvitationView: View { @EnvironmentObject var chatModel: ChatModel @Environment(\.colorScheme) var colorScheme + @ObservedObject var chat: Chat var chatItem: ChatItem var groupInvitation: CIGroupInvitation var memberRole: GroupMemberRole @@ -37,16 +38,22 @@ struct CIGroupInvitationView: View { VStack(alignment: .leading, spacing: 2) { groupInvitationText() .overlay(DetermineWidth()) - Text(chatIncognito ? "Tap to join incognito" : "Tap to join") - .foregroundColor(inProgress ? .secondary : chatIncognito ? .indigo : .accentColor) - .font(.callout) - .padding(.trailing, 60) - .overlay(DetermineWidth()) + ( + Text(chatIncognito ? "Tap to join incognito" : "Tap to join") + .foregroundColor(inProgress ? .secondary : chatIncognito ? .indigo : .accentColor) + .font(.callout) + + Text(" ") + + ciMetaText(chatItem.meta, chatTTL: nil, encrypted: nil, transparent: true, showStatus: false, showEdited: false) + ) + .overlay(DetermineWidth()) } } else { - groupInvitationText() - .padding(.trailing, 60) - .overlay(DetermineWidth()) + ( + groupInvitationText() + + Text(" ") + + ciMetaText(chatItem.meta, chatTTL: nil, encrypted: nil, transparent: true, showStatus: false, showEdited: false) + ) + .overlay(DetermineWidth()) } } .padding(.bottom, 2) @@ -56,9 +63,7 @@ struct CIGroupInvitationView: View { } } - chatItem.timestampText - .font(.caption) - .foregroundColor(.secondary) + CIMetaView(chat: chat, chatItem: chatItem, showStatus: false, showEdited: false) } .padding(.horizontal, 12) .padding(.vertical, 6) @@ -115,7 +120,7 @@ struct CIGroupInvitationView: View { } } - private func groupInvitationText() -> some View { + private func groupInvitationText() -> Text { Text(groupInvitationStr()) .font(.callout) } @@ -137,8 +142,8 @@ struct CIGroupInvitationView: View { struct CIGroupInvitationView_Previews: PreviewProvider { static var previews: some View { Group { - CIGroupInvitationView(chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(groupProfile: GroupProfile(displayName: "team", fullName: "team")), memberRole: .admin) - CIGroupInvitationView(chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(status: .accepted), memberRole: .admin) + CIGroupInvitationView(chat: Chat.sampleData, chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(groupProfile: GroupProfile(displayName: "team", fullName: "team")), memberRole: .admin) + CIGroupInvitationView(chat: Chat.sampleData, chatItem: ChatItem.getGroupInvitationSample(), groupInvitation: CIGroupInvitation.getSample(status: .accepted), memberRole: .admin) } } } diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift index c189abde24..b0a3520fca 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift @@ -14,6 +14,8 @@ struct CIMetaView: View { var chatItem: ChatItem var metaColor = Color.secondary var paleMetaColor = Color(UIColor.tertiaryLabel) + var showStatus = true + var showEdited = true var body: some View { if chatItem.isDeletedContent { @@ -25,24 +27,24 @@ struct CIMetaView: View { switch meta.itemStatus { case let .sndSent(sndProgress): switch sndProgress { - case .complete: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .sent) - case .partial: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .sent) + case .complete: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .sent, showStatus: showStatus, showEdited: showEdited) + case .partial: ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .sent, showStatus: showStatus, showEdited: showEdited) } case let .sndRcvd(_, sndProgress): switch sndProgress { case .complete: ZStack { - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd1) - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd2) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd1, showStatus: showStatus, showEdited: showEdited) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, sent: .rcvd2, showStatus: showStatus, showEdited: showEdited) } case .partial: ZStack { - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd1) - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd2) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd1, showStatus: showStatus, showEdited: showEdited) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: paleMetaColor, sent: .rcvd2, showStatus: showStatus, showEdited: showEdited) } } default: - ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor) + ciMetaText(meta, chatTTL: ttl, encrypted: encrypted, color: metaColor, showStatus: showStatus, showEdited: showEdited) } } } @@ -54,9 +56,18 @@ enum SentCheckmark { case rcvd2 } -func ciMetaText(_ meta: CIMeta, chatTTL: Int?, encrypted: Bool?, color: Color = .clear, transparent: Bool = false, sent: SentCheckmark? = nil) -> Text { +func ciMetaText( + _ meta: CIMeta, + chatTTL: Int?, + encrypted: Bool?, + color: Color = .clear, + transparent: Bool = false, + sent: SentCheckmark? = nil, + showStatus: Bool = true, + showEdited: Bool = true +) -> Text { var r = Text("") - if meta.itemEdited { + if showEdited, meta.itemEdited { r = r + statusIconText("pencil", color) } if meta.disappearing { @@ -67,7 +78,7 @@ func ciMetaText(_ meta: CIMeta, chatTTL: Int?, encrypted: Bool?, color: Color = } r = r + Text(" ") } - if let (icon, statusColor) = meta.statusIcon(color) { + if showStatus, let (icon, statusColor) = meta.statusIcon(color) { let t = Text(Image(systemName: icon)).font(.caption2) let gap = Text(" ").kerning(-1.25) let t1 = t.foregroundColor(transparent ? .clear : statusColor.opacity(0.67)) diff --git a/apps/ios/Shared/Views/Chat/ChatItemView.swift b/apps/ios/Shared/Views/Chat/ChatItemView.swift index c2adcacbfe..d580fb5f3e 100644 --- a/apps/ios/Shared/Views/Chat/ChatItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItemView.swift @@ -127,7 +127,7 @@ struct ChatItemContentView: View { } private func groupInvitationItemView(_ groupInvitation: CIGroupInvitation, _ memberRole: GroupMemberRole) -> some View { - CIGroupInvitationView(chatItem: chatItem, groupInvitation: groupInvitation, memberRole: memberRole, chatIncognito: chat.chatInfo.incognito) + CIGroupInvitationView(chat: chat, chatItem: chatItem, groupInvitation: groupInvitation, memberRole: memberRole, chatIncognito: chat.chatInfo.incognito) } private func eventItemView() -> some View { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt index 17a45fd3bd..529a0e458b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIEventView.kt @@ -12,7 +12,7 @@ import chat.simplex.common.ui.theme.* @Composable fun CIEventView(text: AnnotatedString) { - Text(text, Modifier.padding(horizontal = 6.dp, vertical = 6.dp), style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp), maxLines = 3) + Text(text, Modifier.padding(horizontal = 6.dp, vertical = 6.dp), style = MaterialTheme.typography.body1.copy(lineHeight = 22.sp), maxLines = 4) } @Preview/*( uiMode = Configuration.UI_MODE_NIGHT_YES, From 6a8a8f242aafb70e1981346e6513f8f72e27f6e5 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 25 Apr 2024 13:20:52 +0400 Subject: [PATCH 094/147] ui: allow to delete any items (#4082) * ios: allow to delete any items * android * remove button android * remove button ios --- apps/ios/Shared/Views/Chat/ChatView.swift | 5 ++- apps/ios/SimpleXChat/ChatTypes.swift | 10 +++++ .../common/views/chat/item/ChatItemView.kt | 37 ++++++++++++++++--- 3 files changed, 45 insertions(+), 7 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 97ffd61116..5ec69412a6 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -827,6 +827,9 @@ struct ChatView: View { menu.append(deleteUIAction(ci)) } else if ci.mergeCategory != nil && ((range?.count ?? 0) > 1 || revealed) { menu.append(revealed ? shrinkUIAction() : expandUIAction()) + menu.append(deleteUIAction(ci)) + } else if ci.showLocalDelete { + menu.append(deleteUIAction(ci)) } return menu } @@ -1039,7 +1042,7 @@ struct ChatView: View { image: UIImage(systemName: "trash"), attributes: [.destructive] ) { _ in - if !revealed && ci.meta.itemDeleted != nil, + if !revealed, let currIndex = m.getChatItemIndex(ci), let ciCategory = ci.mergeCategory { let (prevHidden, _) = m.getPrevShownChatItem(currIndex, ciCategory) diff --git a/apps/ios/SimpleXChat/ChatTypes.swift b/apps/ios/SimpleXChat/ChatTypes.swift index d1f1fc06d1..24aca0dd18 100644 --- a/apps/ios/SimpleXChat/ChatTypes.swift +++ b/apps/ios/SimpleXChat/ChatTypes.swift @@ -2437,6 +2437,16 @@ public struct ChatItem: Identifiable, Decodable { } } + public var showLocalDelete: Bool { + switch content { + case .sndDirectE2EEInfo: return false + case .rcvDirectE2EEInfo: return false + case .sndGroupE2EEInfo: return false + case .rcvGroupE2EEInfo: return false + default: return true + } + } + public static func getSample (_ id: Int64, _ dir: CIDirection, _ ts: Date, _ text: String, _ status: CIStatus = .sndNew, quotedItem: CIQuote? = nil, file: CIFile? = nil, itemDeleted: CIDeleted? = nil, itemEdited: Bool = false, itemLive: Bool = false, deletable: Bool = true, editable: Bool = true) -> ChatItem { ChatItem( chatDir: dir, diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index 427f34b2e5..c9aea2c6dd 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -175,6 +175,13 @@ fun ChatItemView( } } + @Composable + fun DeleteItemMenu() { + DefaultDropdownMenu(showMenu) { + DeleteItemAction(cItem, revealed, showMenu, questionText = deleteMessageQuestionText(), deleteMessage, deleteMessages) + } + } + @Composable fun MsgContentItemDropdownMenu() { val saveFileLauncher = rememberSaveFileLauncher(ciFile = cItem.file) @@ -305,10 +312,13 @@ fun ChatItemView( } else { ExpandItemAction(revealed, showMenu) } + DeleteItemAction(cItem, revealed, showMenu, questionText = deleteMessageQuestionText(), deleteMessage, deleteMessages) } } else -> { - showMenu.value = false + DefaultDropdownMenu(showMenu) { + DeleteItemAction(cItem, revealed, showMenu, questionText = deleteMessageQuestionText(), deleteMessage, deleteMessages) + } } } } @@ -356,6 +366,7 @@ fun ChatItemView( @Composable fun CallItem(status: CICallStatus, duration: Int) { CICallItemView(cInfo, cItem, status, duration, acceptCall) + DeleteItemMenu() } fun mergedGroupEventText(chatItem: ChatItem): String? { @@ -439,12 +450,22 @@ fun ChatItemView( is CIContent.RcvCall -> CallItem(c.status, c.duration) is CIContent.RcvIntegrityError -> if (developerTools) { IntegrityErrorItemView(c.msgError, cItem, cInfo.timedMessagesTTL) + DeleteItemMenu() } else { Box(Modifier.size(0.dp)) {} } - is CIContent.RcvDecryptionError -> CIRcvDecryptionError(c.msgDecryptError, c.msgCount, cInfo, cItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember) - is CIContent.RcvGroupInvitation -> CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) - is CIContent.SndGroupInvitation -> CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + is CIContent.RcvDecryptionError -> { + CIRcvDecryptionError(c.msgDecryptError, c.msgCount, cInfo, cItem, updateContactStats = updateContactStats, updateMemberStats = updateMemberStats, syncContactConnection = syncContactConnection, syncMemberConnection = syncMemberConnection, findModelChat = findModelChat, findModelMember = findModelMember) + DeleteItemMenu() + } + is CIContent.RcvGroupInvitation -> { + CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + DeleteItemMenu() + } + is CIContent.SndGroupInvitation -> { + CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + DeleteItemMenu() + } is CIContent.RcvDirectEventContent -> { EventItemView() MsgContentItemDropdownMenu() @@ -479,6 +500,7 @@ fun ChatItemView( is CIContent.RcvChatPreference -> { val ct = if (cInfo is ChatInfo.Direct) cInfo.contact else null CIFeaturePreferenceView(cItem, ct, c.feature, c.allowed, acceptFeature) + DeleteItemMenu() } is CIContent.SndChatPreference -> { CIChatFeatureView(cInfo, cItem, c.feature, MaterialTheme.colors.secondary, icon = c.feature.icon, revealed, showMenu = showMenu) @@ -507,7 +529,10 @@ fun ChatItemView( is CIContent.RcvDirectE2EEInfo -> DirectE2EEInfoText(c.e2eeInfo) is CIContent.SndGroupE2EEInfo -> E2EEInfoNoPQText() is CIContent.RcvGroupE2EEInfo -> E2EEInfoNoPQText() - is CIContent.InvalidJSON -> CIInvalidJSONView(c.json) + is CIContent.InvalidJSON -> { + CIInvalidJSONView(c.json) + DeleteItemMenu() + } } } @@ -574,7 +599,7 @@ fun DeleteItemAction( painterResource(MR.images.ic_delete), onClick = { showMenu.value = false - if (!revealed.value && cItem.meta.itemDeleted != null) { + if (!revealed.value) { val currIndex = chatModel.getChatItemIndexOrNull(cItem) val ciCategory = cItem.mergeCategory if (currIndex != null && ciCategory != null) { From a1093b0671ae5be8c00f6dd19124ac2660c5fbb6 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 10:41:27 +0100 Subject: [PATCH 095/147] docs: update privacy policy (#4076) --- PRIVACY.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/PRIVACY.md b/PRIVACY.md index 3204fa1e53..ac355ac7f1 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -103,6 +103,8 @@ The cases when SimpleX Chat Ltd may share the data temporarily stored on the ser At the time of updating this document, we have never provided or have been requested the access to the preset relay servers or any information from the servers by any third parties. If we are ever requested to provide such access or information, we will follow the due legal process to limit any information shared with the third parties to the minimally required by law. +We will publish information we are legally allowed to share about such requests in the [Transparency reports](./docs/TRANSPARENCY.md). + ### Updates We will update this Privacy Policy as needed so that it is current, accurate, and as clear as possible. Your continued use of our software applications and preset relays infrastructure confirms your acceptance of our updated Privacy Policy. @@ -131,7 +133,7 @@ You accept the Conditions of Use of Software and Infrastructure ("Conditions") b **Traffic and device costs**. You are solely responsible for the traffic and device costs that you incur while using our Applications, and any associated taxes. -**Legal and acceptable usage**. You agree to use our Applications only for legal and acceptable purposes. You will not use (or assist others in using) our Applications in ways that: 1) violate or infringe the rights of Software users, SimpleX Chat Ltd, or others, including privacy, publicity, intellectual property, or other proprietary rights; 2) involve sending illegal or impermissible communications, e.g. spam. While we cannot access content or identify messages or groups, in some cases the links to the illegal or impermissible communications available via our Applications can be shared publicly on social media or websites. We reserve the right to remove such links from the preset servers and disrupt the conversations that send illegal content via our servers, whether they were reported by the users or discovered by our team. +**Legal usage**. You agree to use our Applications only for legal purposes. You will not use (or assist others in using) our Applications in ways that: 1) violate or infringe the rights of Software users, SimpleX Chat Ltd, or others, including privacy, publicity, intellectual property, or other proprietary rights; 2) involve sending illegal communications, e.g. spam. While we cannot access content or identify messages or groups, in some cases the links to the illegal communications available via our Applications can be shared publicly on social media or websites. We reserve the right to remove such links from the preset servers and disrupt the conversations that send illegal content via our servers, whether they were reported by the users or discovered by our team. **Damage to SimpleX Chat Ltd**. You must not (or assist others to) access, use, modify, distribute, transfer, or exploit our Applications in unauthorized manners, or in ways that harm Software users, SimpleX Chat Ltd, our Infrastructure, or any other systems. For example, you must not 1) access our Infrastructure or systems without authorization, in any way other than by using the Software; 2) disrupt the integrity or performance of our Infrastructure; 3) collect information about our users in any manner; or 4) sell, rent, or charge for our Infrastructure. This does not prohibit you from providing your own Infrastructure to others, whether free or for a fee, as long as you do not violate these Conditions and AGPLv3 license, including the requirement to publish any modifications of the relay server software. @@ -165,4 +167,4 @@ You accept the Conditions of Use of Software and Infrastructure ("Conditions") b **Ending these conditions**. You may end these Conditions with SimpleX Chat Ltd at any time by deleting our Applications from your devices and discontinuing use of our Infrastructure. The provisions related to Licenses, Disclaimers, Limitation of Liability, Resolving dispute, Availability, Changes to the conditions, Enforcing the conditions, and Ending these conditions will survive termination of your relationship with SimpleX Chat Ltd. -Updated February 24, 2024 +Updated April 24, 2024 From 20fa366231f68ecd8dc0ca0d0af2d5a4257731f1 Mon Sep 17 00:00:00 2001 From: Alexander Bondarenko <486682+dpwiz@users.noreply.github.com> Date: Thu, 25 Apr 2024 12:52:26 +0300 Subject: [PATCH 096/147] core: use contextless decompression (#4089) * core: use contextless decompression * fuse concatMap/map * nix * update simplexmq --------- Co-authored-by: Evgeny Poberezkin --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat/Protocol.hs | 5 ++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/cabal.project b/cabal.project index 6e8ae3302e..6c14023e17 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: daa866f3331cf882f1030ae636f9e27a2498ca8b + tag: b931c1be3721f002747742d1e100c566966523f7 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 4d29184ac0..253326900d 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."daa866f3331cf882f1030ae636f9e27a2498ca8b" = "1bfzw8q8jgblpqh0vjvhs3ddyvgxrdpv18gy84yr6kmvssmdgs76"; + "https://github.com/simplex-chat/simplexmq.git"."b931c1be3721f002747742d1e100c566966523f7" = "1wbbazc2a5dkjggwiha5b4bya34hf44wl15930h2mhsbj9xmzvig"; "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/Protocol.hs b/src/Simplex/Chat/Protocol.hs index bfa8383974..8c5a9e1905 100644 --- a/src/Simplex/Chat/Protocol.hs +++ b/src/Simplex/Chat/Protocol.hs @@ -48,7 +48,7 @@ import Simplex.Chat.Types import Simplex.Chat.Types.Shared import Simplex.Chat.Types.Util import Simplex.Messaging.Agent.Protocol (VersionSMPA, pqdrSMPAgentVersion) -import Simplex.Messaging.Compression (compress1, decompressBatch) +import Simplex.Messaging.Compression (Compressed, compress1, decompress1) import Simplex.Messaging.Encoding import Simplex.Messaging.Encoding.String import Simplex.Messaging.Parsers (defaultJSON, dropPrefix, fromTextField_, fstToLower, parseAll, sumTypeJSON, taggedObjectJSON) @@ -570,8 +570,7 @@ parseChatMessages s = case B.head s of decodeCompressed :: ByteString -> [Either String AChatMessage] decodeCompressed s' = case smpDecode s' of Left e -> [Left e] - -- TODO v5.7 don't reserve multiple large buffers when decoding batches - Right compressed -> concatMap (either (pure . Left) parseChatMessages) . L.toList $ decompressBatch maxEncodedMsgLength compressed + Right (compressed :: L.NonEmpty Compressed) -> concatMap (either (pure . Left) parseChatMessages . decompress1) compressed compressedBatchMsgBody_ :: MsgBody -> ByteString compressedBatchMsgBody_ = markCompressedBatch . smpEncode . (L.:| []) . compress1 From 3eb88ab896ab3f53b111e1eb0cdeb150f626223f Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 11:15:28 +0100 Subject: [PATCH 097/147] 5.7.0.4 (simplexmq 5.7.0.3) --- package.yaml | 2 +- simplex-chat.cabal | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/package.yaml b/package.yaml index c899587e16..f7e9260682 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.7.0.3 +version: 5.7.0.4 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 5af23471a8..71f216b6f0 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: 5.7.0.3 +version: 5.7.0.4 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat From fc6fa5315b222f31b0483480d6658ded34bbdcaf Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Thu, 25 Apr 2024 15:15:52 +0400 Subject: [PATCH 098/147] android: show disappearing message timer on calls and group invitations (#4090) * android: show disappearing message timer on calls and group invitations * fix padding --- .../Views/Chat/ChatItem/CIMetaView.swift | 26 +++++---- .../common/views/chat/item/CICallItemView.kt | 17 +++--- .../views/chat/item/CIGroupInvitationView.kt | 56 ++++++++++--------- .../common/views/chat/item/CIMetaView.kt | 56 +++++++++++++------ .../common/views/chat/item/ChatItemView.kt | 6 +- 5 files changed, 95 insertions(+), 66 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift b/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift index b0a3520fca..17b93930fe 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/CIMetaView.swift @@ -78,19 +78,21 @@ func ciMetaText( } r = r + Text(" ") } - if showStatus, let (icon, statusColor) = meta.statusIcon(color) { - let t = Text(Image(systemName: icon)).font(.caption2) - let gap = Text(" ").kerning(-1.25) - let t1 = t.foregroundColor(transparent ? .clear : statusColor.opacity(0.67)) - switch sent { - case nil: r = r + t1 - case .sent: r = r + t1 + gap - case .rcvd1: r = r + t.foregroundColor(transparent ? .clear : statusColor.opacity(0.67)) + gap - case .rcvd2: r = r + gap + t1 + if showStatus { + if let (icon, statusColor) = meta.statusIcon(color) { + let t = Text(Image(systemName: icon)).font(.caption2) + let gap = Text(" ").kerning(-1.25) + let t1 = t.foregroundColor(transparent ? .clear : statusColor.opacity(0.67)) + switch sent { + case nil: r = r + t1 + case .sent: r = r + t1 + gap + case .rcvd1: r = r + t.foregroundColor(transparent ? .clear : statusColor.opacity(0.67)) + gap + case .rcvd2: r = r + gap + t1 + } + r = r + Text(" ") + } else if !meta.disappearing { + r = r + statusIconText("circlebadge.fill", .clear) + Text(" ") } - r = r + Text(" ") - } else if !meta.disappearing { - r = r + statusIconText("circlebadge.fill", .clear) + Text(" ") } if let enc = encrypted { r = r + statusIconText(enc ? "lock" : "lock.open", color) + Text(" ") diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CICallItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CICallItemView.kt index 6f165515ec..5d3d5aa94a 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CICallItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CICallItemView.kt @@ -9,14 +9,20 @@ import androidx.compose.ui.graphics.Color import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import chat.simplex.common.ui.theme.* import chat.simplex.common.model.* import chat.simplex.common.views.helpers.SimpleButton import chat.simplex.res.MR @Composable -fun CICallItemView(cInfo: ChatInfo, cItem: ChatItem, status: CICallStatus, duration: Int, acceptCall: (Contact) -> Unit) { +fun CICallItemView( + cInfo: ChatInfo, + cItem: ChatItem, + status: CICallStatus, + duration: Int, + acceptCall: (Contact) -> Unit, + timedMessagesTTL: Int? +) { val sent = cItem.chatDir.sent Column( Modifier @@ -41,12 +47,7 @@ fun CICallItemView(cInfo: ChatInfo, cItem: ChatItem, status: CICallStatus, durat CICallStatus.Error -> {} } - Text( - cItem.timestampText, - color = MaterialTheme.colors.secondary, - fontSize = 14.sp, - modifier = Modifier.padding(start = 3.dp) - ) + CIMetaView(cItem, timedMessagesTTL, showStatus = false, showEdited = false) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIGroupInvitationView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIGroupInvitationView.kt index 911bbaf833..e3008f36b3 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIGroupInvitationView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIGroupInvitationView.kt @@ -9,11 +9,12 @@ import androidx.compose.runtime.* import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier +import androidx.compose.ui.text.buildAnnotatedString import dev.icerock.moko.resources.compose.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp import chat.simplex.common.ui.theme.* import chat.simplex.common.views.helpers.* import chat.simplex.common.model.* @@ -26,7 +27,8 @@ fun CIGroupInvitationView( groupInvitation: CIGroupInvitation, memberRole: GroupMemberRole, chatIncognito: Boolean = false, - joinGroup: (Long, () -> Unit) -> Unit + joinGroup: (Long, () -> Unit) -> Unit, + timedMessagesTTL: Int? ) { val sent = ci.chatDir.sent val action = !sent && groupInvitation.status == CIGroupInvitationStatus.Pending @@ -69,13 +71,15 @@ fun CIGroupInvitationView( } @Composable - fun groupInvitationText() { - when { - sent -> Text(stringResource(MR.strings.you_sent_group_invitation)) - !sent && groupInvitation.status == CIGroupInvitationStatus.Pending -> Text(stringResource(MR.strings.you_are_invited_to_group)) - !sent && groupInvitation.status == CIGroupInvitationStatus.Accepted -> Text(stringResource(MR.strings.you_joined_this_group)) - !sent && groupInvitation.status == CIGroupInvitationStatus.Rejected -> Text(stringResource(MR.strings.you_rejected_group_invitation)) - !sent && groupInvitation.status == CIGroupInvitationStatus.Expired -> Text(stringResource(MR.strings.group_invitation_expired)) + fun groupInvitationStr(): String { + return when { + sent -> stringResource(MR.strings.you_sent_group_invitation) + else -> when(groupInvitation.status) { + CIGroupInvitationStatus.Pending -> stringResource(MR.strings.you_are_invited_to_group) + CIGroupInvitationStatus.Accepted -> stringResource(MR.strings.you_joined_this_group) + CIGroupInvitationStatus.Rejected -> stringResource(MR.strings.you_rejected_group_invitation) + CIGroupInvitationStatus.Expired -> stringResource(MR.strings.group_invitation_expired) + } } } @@ -109,20 +113,24 @@ fun CIGroupInvitationView( Column(Modifier.padding(top = 2.dp, start = 5.dp)) { Divider(Modifier.fillMaxWidth().padding(bottom = 4.dp)) if (action) { - groupInvitationText() + Text(groupInvitationStr()) Text( - stringResource( - if (chatIncognito) MR.strings.group_invitation_tap_to_join_incognito else MR.strings.group_invitation_tap_to_join - ), + buildAnnotatedString { + append(generalGetString(if (chatIncognito) MR.strings.group_invitation_tap_to_join_incognito else MR.strings.group_invitation_tap_to_join)) + withStyle(reserveTimestampStyle) { append(reserveSpaceForMeta(ci.meta, timedMessagesTTL, encrypted = null, showStatus = false, showEdited = false)) } + }, color = if (inProgress.value) MaterialTheme.colors.secondary else if (chatIncognito) Indigo else MaterialTheme.colors.primary ) } else { - Box(Modifier.padding(end = 48.dp)) { - groupInvitationText() - } + Text( + buildAnnotatedString { + append(groupInvitationStr()) + withStyle(reserveTimestampStyle) { append(reserveSpaceForMeta(ci.meta, timedMessagesTTL, encrypted = null, showStatus = false, showEdited = false)) } + } + ) } } } @@ -136,12 +144,7 @@ fun CIGroupInvitationView( } } - Text( - ci.timestampText, - color = MaterialTheme.colors.secondary, - fontSize = 14.sp, - modifier = Modifier.padding(start = 3.dp) - ) + CIMetaView(ci, timedMessagesTTL, showStatus = false, showEdited = false) } } } @@ -157,7 +160,8 @@ fun PendingCIGroupInvitationViewPreview() { ci = ChatItem.getGroupInvitationSample(), groupInvitation = CIGroupInvitation.getSample(), memberRole = GroupMemberRole.Admin, - joinGroup = { _, _ -> } + joinGroup = { _, _ -> }, + timedMessagesTTL = null ) } } @@ -173,7 +177,8 @@ fun CIGroupInvitationViewAcceptedPreview() { ci = ChatItem.getGroupInvitationSample(), groupInvitation = CIGroupInvitation.getSample(status = CIGroupInvitationStatus.Accepted), memberRole = GroupMemberRole.Admin, - joinGroup = { _, _ -> } + joinGroup = { _, _ -> }, + timedMessagesTTL = null ) } } @@ -189,7 +194,8 @@ fun CIGroupInvitationViewLongNamePreview() { status = CIGroupInvitationStatus.Accepted ), memberRole = GroupMemberRole.Admin, - joinGroup = { _, _ -> } + joinGroup = { _, _ -> }, + timedMessagesTTL = null ) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIMetaView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIMetaView.kt index 72f7137b55..b40d8989e1 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIMetaView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/CIMetaView.kt @@ -33,7 +33,9 @@ fun CIMetaView( red = minOf(metaColor.red * 1.33F, 1F), green = minOf(metaColor.green * 1.33F, 1F), blue = minOf(metaColor.red * 1.33F, 1F)) - } + }, + showStatus: Boolean = true, + showEdited: Boolean = true ) { Row(Modifier.padding(start = 3.dp), verticalAlignment = Alignment.CenterVertically) { if (chatItem.isDeletedContent) { @@ -44,15 +46,31 @@ fun CIMetaView( modifier = Modifier.padding(start = 3.dp) ) } else { - CIMetaText(chatItem.meta, timedMessagesTTL, encrypted = chatItem.encryptedFile, metaColor, paleMetaColor) + CIMetaText( + chatItem.meta, + timedMessagesTTL, + encrypted = chatItem.encryptedFile, + metaColor, + paleMetaColor, + showStatus = showStatus, + showEdited = showEdited + ) } } } @Composable // changing this function requires updating reserveSpaceForMeta -private fun CIMetaText(meta: CIMeta, chatTTL: Int?, encrypted: Boolean?, color: Color, paleColor: Color) { - if (meta.itemEdited) { +private fun CIMetaText( + meta: CIMeta, + chatTTL: Int?, + encrypted: Boolean?, + color: Color, + paleColor: Color, + showStatus: Boolean = true, + showEdited: Boolean = true +) { + if (showEdited && meta.itemEdited) { StatusIconText(painterResource(MR.images.ic_edit), color) Spacer(Modifier.width(3.dp)) } @@ -64,18 +82,20 @@ private fun CIMetaText(meta: CIMeta, chatTTL: Int?, encrypted: Boolean?, color: } Spacer(Modifier.width(4.dp)) } - val statusIcon = meta.statusIcon(MaterialTheme.colors.primary, color, paleColor) - if (statusIcon != null) { - val (icon, statusColor) = statusIcon - if (meta.itemStatus is CIStatus.SndSent || meta.itemStatus is CIStatus.SndRcvd) { - Icon(painterResource(icon), null, Modifier.height(17.dp), tint = statusColor) - } else { - StatusIconText(painterResource(icon), statusColor) + if (showStatus) { + val statusIcon = meta.statusIcon(MaterialTheme.colors.primary, color, paleColor) + if (statusIcon != null) { + val (icon, statusColor) = statusIcon + if (meta.itemStatus is CIStatus.SndSent || meta.itemStatus is CIStatus.SndRcvd) { + Icon(painterResource(icon), null, Modifier.height(17.dp), tint = statusColor) + } else { + StatusIconText(painterResource(icon), statusColor) + } + Spacer(Modifier.width(4.dp)) + } else if (!meta.disappearing) { + StatusIconText(painterResource(MR.images.ic_circle_filled), Color.Transparent) + Spacer(Modifier.width(4.dp)) } - Spacer(Modifier.width(4.dp)) - } else if (!meta.disappearing) { - StatusIconText(painterResource(MR.images.ic_circle_filled), Color.Transparent) - Spacer(Modifier.width(4.dp)) } if (encrypted != null) { StatusIconText(painterResource(if (encrypted) MR.images.ic_lock else MR.images.ic_lock_open_right), color) @@ -85,10 +105,10 @@ private fun CIMetaText(meta: CIMeta, chatTTL: Int?, encrypted: Boolean?, color: } // the conditions in this function should match CIMetaText -fun reserveSpaceForMeta(meta: CIMeta, chatTTL: Int?, encrypted: Boolean?): String { +fun reserveSpaceForMeta(meta: CIMeta, chatTTL: Int?, encrypted: Boolean?, showStatus: Boolean = true, showEdited: Boolean = true): String { val iconSpace = " " var res = "" - if (meta.itemEdited) res += iconSpace + if (showEdited && meta.itemEdited) res += iconSpace if (meta.itemTimed != null) { res += iconSpace val ttl = meta.itemTimed.ttl @@ -96,7 +116,7 @@ fun reserveSpaceForMeta(meta: CIMeta, chatTTL: Int?, encrypted: Boolean?): Strin res += shortTimeText(ttl) } } - if (meta.statusIcon(CurrentColors.value.colors.secondary) != null || !meta.disappearing) { + if (showStatus && (meta.statusIcon(CurrentColors.value.colors.secondary) != null || !meta.disappearing)) { res += iconSpace } if (encrypted != null) { diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt index c9aea2c6dd..10078dc266 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/ChatItemView.kt @@ -365,7 +365,7 @@ fun ChatItemView( } @Composable fun CallItem(status: CICallStatus, duration: Int) { - CICallItemView(cInfo, cItem, status, duration, acceptCall) + CICallItemView(cInfo, cItem, status, duration, acceptCall, cInfo.timedMessagesTTL) DeleteItemMenu() } @@ -459,11 +459,11 @@ fun ChatItemView( DeleteItemMenu() } is CIContent.RcvGroupInvitation -> { - CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito, timedMessagesTTL = cInfo.timedMessagesTTL) DeleteItemMenu() } is CIContent.SndGroupInvitation -> { - CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito) + CIGroupInvitationView(cItem, c.groupInvitation, c.memberRole, joinGroup = joinGroup, chatIncognito = cInfo.incognito, timedMessagesTTL = cInfo.timedMessagesTTL) DeleteItemMenu() } is CIContent.RcvDirectEventContent -> { From f712eb0d1f11130b7c3445c09e30cf55b290a5ec Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 13:16:49 +0100 Subject: [PATCH 099/147] ui: add link to the release post --- apps/ios/Shared/Views/Onboarding/WhatsNewView.swift | 1 + .../simplex/common/views/onboarding/WhatsNewView.kt | 1 + ...ding-transparency-v5-7-better-user-experience.md | 13 +++++++++++++ 3 files changed, 15 insertions(+) create mode 100644 blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md diff --git a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift index 6886c18447..209c440b16 100644 --- a/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift +++ b/apps/ios/Shared/Views/Onboarding/WhatsNewView.swift @@ -378,6 +378,7 @@ private let versionDescriptions: [VersionDescription] = [ ), VersionDescription( version: "v5.7", + post: URL(string: "https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html"), features: [ FeatureDescription( icon: "key", 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 43c492a732..df6c66deb4 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 @@ -523,6 +523,7 @@ private val versionDescriptions: List = listOf( ), VersionDescription( version = "v5.7", + post = "https://simplex.chat/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html", features = listOf( FeatureDescription( icon = MR.images.ic_vpn_key_filled, diff --git a/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md new file mode 100644 index 0000000000..77254bbbea --- /dev/null +++ b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md @@ -0,0 +1,13 @@ + +--- +layout: layouts/article.html +title: "SimpleX network: legally binding transparency, v5.7 released with better user experience for calls and messages" +date: 2024-04-26 +preview: blog_previews/20240323.html +draft: true +permalink: "/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html" +--- + +# SimpleX network: legally binding transparency, v5.7 released with better user experience for calls and messages + +This is a permalink for the post From 5325b0a543bb9b82ce652161c054038802dc0dba Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 13:40:06 +0100 Subject: [PATCH 100/147] core: update simplexmq to 5.7.0.3 --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cabal.project b/cabal.project index 6c14023e17..04e92734c8 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: b931c1be3721f002747742d1e100c566966523f7 + tag: 935d2e25df80eed7761c48a01529b6c0da0d3baa source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 253326900d..badbf49541 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."b931c1be3721f002747742d1e100c566966523f7" = "1wbbazc2a5dkjggwiha5b4bya34hf44wl15930h2mhsbj9xmzvig"; + "https://github.com/simplex-chat/simplexmq.git"."935d2e25df80eed7761c48a01529b6c0da0d3baa" = "1gyis2zvxm6352x3myaxdifr9sy4fkhygwqmzgxvn669gmf4gx2n"; "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"; From 0fe949e225a7c80d615015a01ec59f63b6505842 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 15:51:23 +0100 Subject: [PATCH 101/147] 5.7-beta.3: ios 210, android 199, desktop 40 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 52 +++++++++++----------- apps/multiplatform/gradle.properties | 8 ++-- scripts/android/prepare.sh | 2 +- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 2830c57057..110c6ccd40 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,11 +29,11 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; - 5C2217A22BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */; }; - 5C2217A32BD7132100A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */; }; - 5C2217A42BD7132100A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C22179F2BD7132100A8B0E7 /* libffi.a */; }; - 5C2217A52BD7132100A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217A02BD7132100A8B0E7 /* libgmp.a */; }; - 5C2217A62BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */; }; + 5C2217B62BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B12BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a */; }; + 5C2217B72BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B22BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a */; }; + 5C2217B82BDA9B7000A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B32BDA9B7000A8B0E7 /* libgmp.a */; }; + 5C2217B92BDA9B7000A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B42BDA9B7000A8B0E7 /* libgmpxx.a */; }; + 5C2217BA2BDA9B7000A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B52BDA9B7000A8B0E7 /* libffi.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -279,11 +279,11 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; - 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a"; sourceTree = ""; }; - 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5C22179F2BD7132100A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 5C2217A02BD7132100A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a"; sourceTree = ""; }; + 5C2217B12BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a"; sourceTree = ""; }; + 5C2217B22BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a"; sourceTree = ""; }; + 5C2217B32BDA9B7000A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C2217B42BDA9B7000A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C2217B52BDA9B7000A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -525,13 +525,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C2217A32BD7132100A8B0E7 /* libgmpxx.a in Frameworks */, + 5C2217B92BDA9B7000A8B0E7 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5C2217A22BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a in Frameworks */, - 5C2217A42BD7132100A8B0E7 /* libffi.a in Frameworks */, - 5C2217A52BD7132100A8B0E7 /* libgmp.a in Frameworks */, - 5C2217A62BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a in Frameworks */, + 5C2217B82BDA9B7000A8B0E7 /* libgmp.a in Frameworks */, + 5C2217B62BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a in Frameworks */, + 5C2217BA2BDA9B7000A8B0E7 /* libffi.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, + 5C2217B72BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C22179F2BD7132100A8B0E7 /* libffi.a */, - 5C2217A02BD7132100A8B0E7 /* libgmp.a */, - 5C22179E2BD7132100A8B0E7 /* libgmpxx.a */, - 5C22179D2BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD-ghc9.6.3.a */, - 5C2217A12BD7132100A8B0E7 /* libHSsimplex-chat-5.7.0.3-1gdwVzNNUlPBAUpdkOuWsD.a */, + 5C2217B52BDA9B7000A8B0E7 /* libffi.a */, + 5C2217B32BDA9B7000A8B0E7 /* libgmp.a */, + 5C2217B42BDA9B7000A8B0E7 /* libgmpxx.a */, + 5C2217B12BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a */, + 5C2217B22BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a */, ); path = Libraries; sourceTree = ""; @@ -1544,7 +1544,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 209; + CURRENT_PROJECT_VERSION = 210; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1593,7 +1593,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 209; + CURRENT_PROJECT_VERSION = 210; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1679,7 +1679,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 209; + CURRENT_PROJECT_VERSION = 210; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -1716,7 +1716,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 209; + CURRENT_PROJECT_VERSION = 210; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -1753,7 +1753,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 209; + CURRENT_PROJECT_VERSION = 210; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1804,7 +1804,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 209; + CURRENT_PROJECT_VERSION = 210; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index a0b0b8839a..f9682ca089 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -26,11 +26,11 @@ android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=5.7-beta.2 -android.version_code=198 +android.version_name=5.7-beta.3 +android.version_code=199 -desktop.version_name=5.7-beta.2 -desktop.version_code=39 +desktop.version_name=5.7-beta.3 +desktop.version_code=40 kotlin.version=1.9.23 gradle.plugin.version=8.2.0 diff --git a/scripts/android/prepare.sh b/scripts/android/prepare.sh index 683d9cbf87..88f62af34a 100755 --- a/scripts/android/prepare.sh +++ b/scripts/android/prepare.sh @@ -3,7 +3,7 @@ # libsimplex.so and libsupport.so binaries should be in ~/Downloads folder in their directories based on archive name mkdir -p ./apps/multiplatform/common/src/commonMain/cpp/android/libs/arm64-v8a/ rm ./apps/multiplatform/common/src/commonMain/cpp/android/libs/arm64-v8a/* -unzip -o ~/Downloads/pkg-aarch64-android-libsupport.zip -d ./apps/multiplatform/common/src/commonMain/cpp/android/libs/arm64-v8a +unzip -o ~/Downloads/pkg-aarch64-android-libsupport.zip -d ./apps/multiplatform/common/src/commonMain/cpp/android/libs/arm64-v8a/ unzip -o ~/Downloads/pkg-aarch64-android-libsimplex.zip -d ./apps/multiplatform/common/src/commonMain/cpp/android/libs/arm64-v8a/ mkdir -p ./apps/multiplatform/common/src/commonMain/cpp/android/libs/armeabi-v7a/ From 957eda8a7838a505e1a23b5677abae0ad66b9057 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 25 Apr 2024 22:09:06 +0100 Subject: [PATCH 102/147] ui: variable profile image size (#4094) * ui: variable profile image size * changes * fix * clean up --------- Co-authored-by: Avently <7953703+avently@users.noreply.github.com> --- .../Shared/Views/Helpers/ProfileImage.swift | 20 ++++--- .../common/views/helpers/ChatInfoImage.kt | 52 ++++++++----------- 2 files changed, 37 insertions(+), 35 deletions(-) diff --git a/apps/ios/Shared/Views/Helpers/ProfileImage.swift b/apps/ios/Shared/Views/Helpers/ProfileImage.swift index 96f0152d9e..6b8439504a 100644 --- a/apps/ios/Shared/Views/Helpers/ProfileImage.swift +++ b/apps/ios/Shared/Views/Helpers/ProfileImage.swift @@ -32,14 +32,22 @@ struct ProfileImage: View { } } +private let squareToCircleRatio = 0.935 + +private let radiusFactor = (1 - squareToCircleRatio) / 50 + @ViewBuilder func clipProfileImage(_ img: Image, size: CGFloat, radius: Double) -> some View { - let v = img.resizable().frame(width: size, height: size) - if radius <= 0 { - v.clipShape(Rectangle()) - } else if radius >= 50 { - v.clipShape(Circle()) + let v = img.resizable() + if radius >= 50 { + v.frame(width: size, height: size).clipShape(Circle()) + } else if radius <= 0 { + let sz = size * squareToCircleRatio + v.frame(width: sz, height: sz).padding((size - sz) / 2) } else { - v.clipShape(RoundedRectangle(cornerRadius: size * radius / 100, style: .continuous)) + let sz = size * (squareToCircleRatio + radius * radiusFactor) + v.frame(width: sz, height: sz) + .clipShape(RoundedRectangle(cornerRadius: sz * radius / 100, style: .continuous)) + .padding((size - sz) / 2) } } diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt index 72764f215e..34d916781b 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/helpers/ChatInfoImage.kt @@ -18,11 +18,11 @@ import androidx.compose.ui.unit.* import dev.icerock.moko.resources.compose.painterResource import dev.icerock.moko.resources.compose.stringResource import chat.simplex.common.model.ChatInfo -import chat.simplex.common.platform.appPreferences -import chat.simplex.common.platform.base64ToBitmap +import chat.simplex.common.platform.* import chat.simplex.common.ui.theme.* import chat.simplex.res.MR import dev.icerock.moko.resources.ImageResource +import kotlin.math.max @Composable fun ChatInfoImage(chatInfo: ChatInfo, size: Dp, iconColor: Color = MaterialTheme.colors.secondaryVariant) { @@ -81,7 +81,7 @@ fun ProfileImage( imageBitmap, stringResource(MR.strings.image_descr_profile_image), contentScale = ContentScale.Crop, - modifier = Modifier.size(size).padding(size / 12).clip(ProfileIconShape()) + modifier = ProfileIconModifier(size) ) } } @@ -93,17 +93,31 @@ fun ProfileImage(size: Dp, image: ImageResource) { painterResource(image), stringResource(MR.strings.image_descr_profile_image), contentScale = ContentScale.Crop, - modifier = Modifier.size(size).padding(size / 12).clip(ProfileIconShape()) + modifier = ProfileIconModifier(size) ) } +private const val squareToCircleRatio = 0.935f + +private const val radiusFactor = (1 - squareToCircleRatio) / 50 + @Composable -fun ProfileIconShape(): Shape { +fun ProfileIconModifier(size: Dp, padding: Boolean = true): Modifier { val percent = remember { appPreferences.profileImageCornerRadius.state } + val r = max(0f, percent.value) + val pad = if (padding) size / 12 else 0.dp + val m = Modifier.size(size) return when { - percent.value <= 0 -> RectangleShape - percent.value >= 50 -> CircleShape - else -> RoundedCornerShape(PercentCornerSize(percent.value)) + r >= 50 -> + m.padding(pad).clip(CircleShape) + r <= 0 -> { + val sz = (size - 2 * pad) * squareToCircleRatio + m.padding((size - sz) / 2) + } + else -> { + val sz = (size - 2 * pad) * (squareToCircleRatio + r * radiusFactor) + m.padding((size - sz) / 2).clip(RoundedCornerShape(size = sz * r / 100)) + } } } @@ -131,31 +145,11 @@ fun ProfileImageForActiveCall( imageBitmap, stringResource(MR.strings.image_descr_profile_image), contentScale = ContentScale.Crop, - modifier = Modifier.size(size).clip(ProfileIconShape()) + modifier = ProfileIconModifier(size, padding = false) ) } } -/** (c) [androidx.compose.foundation.shape.CornerSize] */ -private data class PercentCornerSize( - private val percent: Float -) : CornerSize, InspectableValue { - init { - if (percent < 0 || percent > 100) { - throw IllegalArgumentException("The percent should be in the range of [0, 100]") - } - } - - override fun toPx(shapeSize: Size, density: Density) = - shapeSize.minDimension * (percent / 100f) - - override fun toString(): String = "CornerSize(size = $percent%)" - - override val valueOverride: String - get() = "$percent%" -} - - @Preview @Composable fun PreviewChatInfoImage() { From b3f80684468604a9507628a45dba5abc3676658a Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 26 Apr 2024 15:42:13 +0100 Subject: [PATCH 103/147] core: 5.7.0.5, increase min version of remote host/controller to 5.7.0.3 --- package.yaml | 2 +- simplex-chat.cabal | 2 +- src/Simplex/Chat/Remote.hs | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/package.yaml b/package.yaml index f7e9260682..054cddd9be 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.7.0.4 +version: 5.7.0.5 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/simplex-chat.cabal b/simplex-chat.cabal index 71f216b6f0..a72b51b82a 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: 5.7.0.4 +version: 5.7.0.5 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat diff --git a/src/Simplex/Chat/Remote.hs b/src/Simplex/Chat/Remote.hs index 75602c1e18..e8d13402ef 100644 --- a/src/Simplex/Chat/Remote.hs +++ b/src/Simplex/Chat/Remote.hs @@ -72,11 +72,11 @@ import UnliftIO.Directory (copyFile, createDirectoryIfMissing, doesDirectoryExis -- when acting as host minRemoteCtrlVersion :: AppVersion -minRemoteCtrlVersion = AppVersion [5, 6, 0, 0] +minRemoteCtrlVersion = AppVersion [5, 7, 0, 3] -- when acting as controller minRemoteHostVersion :: AppVersion -minRemoteHostVersion = AppVersion [5, 7, 0, 0] +minRemoteHostVersion = AppVersion [5, 7, 0, 3] currentAppVersion :: AppVersion currentAppVersion = AppVersion SC.version From e675efe6f36434c72b89c65bf0f8d199c76810c7 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 26 Apr 2024 17:38:57 +0100 Subject: [PATCH 104/147] ios: update library --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 110c6ccd40..feeea69376 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -29,11 +29,6 @@ 5C116CDC27AABE0400E66D01 /* ContactRequestView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C116CDB27AABE0400E66D01 /* ContactRequestView.swift */; }; 5C13730B28156D2700F43030 /* ContactConnectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C13730A28156D2700F43030 /* ContactConnectionView.swift */; }; 5C1A4C1E27A715B700EAD5AD /* ChatItemView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */; }; - 5C2217B62BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B12BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a */; }; - 5C2217B72BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B22BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a */; }; - 5C2217B82BDA9B7000A8B0E7 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B32BDA9B7000A8B0E7 /* libgmp.a */; }; - 5C2217B92BDA9B7000A8B0E7 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B42BDA9B7000A8B0E7 /* libgmpxx.a */; }; - 5C2217BA2BDA9B7000A8B0E7 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C2217B52BDA9B7000A8B0E7 /* libffi.a */; }; 5C2E260727A2941F00F70299 /* SimpleXAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260627A2941F00F70299 /* SimpleXAPI.swift */; }; 5C2E260B27A30CFA00F70299 /* ChatListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260A27A30CFA00F70299 /* ChatListView.swift */; }; 5C2E260F27A30FDC00F70299 /* ChatView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C2E260E27A30FDC00F70299 /* ChatView.swift */; }; @@ -73,6 +68,11 @@ 5C9329412929248A0090FFF9 /* ScanProtocolServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9329402929248A0090FFF9 /* ScanProtocolServer.swift */; }; 5C971E1D27AEBEF600C8A3CE /* ChatInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C971E1C27AEBEF600C8A3CE /* ChatInfoView.swift */; }; 5C971E2127AEBF8300C8A3CE /* ChatInfoImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C971E2027AEBF8300C8A3CE /* ChatInfoImage.swift */; }; + 5C9731F72BDC0C4F000538F2 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F22BDC0C4F000538F2 /* libffi.a */; }; + 5C9731F82BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F32BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a */; }; + 5C9731F92BDC0C4F000538F2 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F42BDC0C4F000538F2 /* libgmpxx.a */; }; + 5C9731FA2BDC0C4F000538F2 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F52BDC0C4F000538F2 /* libgmp.a */; }; + 5C9731FB2BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F62BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a */; }; 5C9A5BDB2871E05400A5B906 /* SetNotificationsMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9A5BDA2871E05400A5B906 /* SetNotificationsMode.swift */; }; 5C9C2DA52894777E00CC63B1 /* GroupProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9C2DA42894777E00CC63B1 /* GroupProfileView.swift */; }; 5C9C2DA7289957AE00CC63B1 /* AdvancedNetworkSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9C2DA6289957AE00CC63B1 /* AdvancedNetworkSettings.swift */; }; @@ -279,11 +279,6 @@ 5C13730A28156D2700F43030 /* ContactConnectionView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactConnectionView.swift; sourceTree = ""; }; 5C13730C2815740A00F43030 /* DebugJSON.playground */ = {isa = PBXFileReference; lastKnownFileType = file.playground; path = DebugJSON.playground; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.swift; }; 5C1A4C1D27A715B700EAD5AD /* ChatItemView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatItemView.swift; sourceTree = ""; }; - 5C2217B12BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a"; sourceTree = ""; }; - 5C2217B22BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a"; sourceTree = ""; }; - 5C2217B32BDA9B7000A8B0E7 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C2217B42BDA9B7000A8B0E7 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5C2217B52BDA9B7000A8B0E7 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5C245F3C2B501E98001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/Localizable.strings; sourceTree = ""; }; 5C245F3D2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = "tr.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5C245F3E2B501F13001CC39F /* tr */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = tr; path = tr.lproj/InfoPlist.strings; sourceTree = ""; }; @@ -349,6 +344,11 @@ 5C9329402929248A0090FFF9 /* ScanProtocolServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScanProtocolServer.swift; sourceTree = ""; }; 5C971E1C27AEBEF600C8A3CE /* ChatInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoView.swift; sourceTree = ""; }; 5C971E2027AEBF8300C8A3CE /* ChatInfoImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoImage.swift; sourceTree = ""; }; + 5C9731F22BDC0C4F000538F2 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; + 5C9731F32BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a"; sourceTree = ""; }; + 5C9731F42BDC0C4F000538F2 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5C9731F52BDC0C4F000538F2 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5C9731F62BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a"; sourceTree = ""; }; 5C9A5BDA2871E05400A5B906 /* SetNotificationsMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetNotificationsMode.swift; sourceTree = ""; }; 5C9C2DA42894777E00CC63B1 /* GroupProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupProfileView.swift; sourceTree = ""; }; 5C9C2DA6289957AE00CC63B1 /* AdvancedNetworkSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedNetworkSettings.swift; sourceTree = ""; }; @@ -525,13 +525,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 5C2217B92BDA9B7000A8B0E7 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5C2217B82BDA9B7000A8B0E7 /* libgmp.a in Frameworks */, - 5C2217B62BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a in Frameworks */, - 5C2217BA2BDA9B7000A8B0E7 /* libffi.a in Frameworks */, + 5C9731F92BDC0C4F000538F2 /* libgmpxx.a in Frameworks */, + 5C9731F82BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a in Frameworks */, + 5C9731F72BDC0C4F000538F2 /* libffi.a in Frameworks */, + 5C9731FA2BDC0C4F000538F2 /* libgmp.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 5C2217B72BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a in Frameworks */, + 5C9731FB2BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -595,11 +595,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C2217B52BDA9B7000A8B0E7 /* libffi.a */, - 5C2217B32BDA9B7000A8B0E7 /* libgmp.a */, - 5C2217B42BDA9B7000A8B0E7 /* libgmpxx.a */, - 5C2217B12BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV-ghc9.6.3.a */, - 5C2217B22BDA9B7000A8B0E7 /* libHSsimplex-chat-5.7.0.4-9w48ibH0KftLfWfQjuLznV.a */, + 5C9731F22BDC0C4F000538F2 /* libffi.a */, + 5C9731F52BDC0C4F000538F2 /* libgmp.a */, + 5C9731F42BDC0C4F000538F2 /* libgmpxx.a */, + 5C9731F62BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a */, + 5C9731F32BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a */, ); path = Libraries; sourceTree = ""; From 7f2462c936ee5f195ac58bbf289fa73e545f7a04 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sat, 27 Apr 2024 00:31:52 +0700 Subject: [PATCH 105/147] android: black background in call (#4098) --- .../kotlin/chat/simplex/common/views/call/CallView.android.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt index f676772714..c702264d82 100644 --- a/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt +++ b/apps/multiplatform/common/src/androidMain/kotlin/chat/simplex/common/views/call/CallView.android.kt @@ -689,6 +689,7 @@ fun WebRTCView(callCommand: SnapshotStateList, onResponse: (WVAPIM this.clearHistory() this.clearCache(true) this.addJavascriptInterface(WebRTCInterface(onResponse), "WebRTCInterface") + this.setBackgroundColor(android.graphics.Color.BLACK) val webViewSettings = this.settings webViewSettings.allowFileAccess = true webViewSettings.allowContentAccess = true From 1033f5559774bc060310271dd5338fe93588570b Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 26 Apr 2024 19:41:44 +0100 Subject: [PATCH 106/147] ios: fix sound in outgoing calls in iOS 15 --- apps/ios/Shared/Views/Call/ActiveCallView.swift | 1 - 1 file changed, 1 deletion(-) diff --git a/apps/ios/Shared/Views/Call/ActiveCallView.swift b/apps/ios/Shared/Views/Call/ActiveCallView.swift index 751eba80ae..d557d51182 100644 --- a/apps/ios/Shared/Views/Call/ActiveCallView.swift +++ b/apps/ios/Shared/Views/Call/ActiveCallView.swift @@ -139,7 +139,6 @@ struct ActiveCallView: View { await MainActor.run { call.callState = .negotiated CallSoundsPlayer.shared.stop() - try? AVAudioSession.sharedInstance().setCategory(.soloAmbient) } } case let .ice(iceCandidates): From 9db65a17750c24537b48d9f503e95cbde565f940 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sat, 27 Apr 2024 01:59:00 +0700 Subject: [PATCH 107/147] ios: audio device picker (#4091) * ios: audio device picker * removed unused * removed logs * correct routing * Revert "removed unused" This reverts commit d883d7a7194bce8e52d0025b4c2393898d7223ee. * changes --------- Co-authored-by: Evgeny Poberezkin --- apps/ios/Shared/Model/AudioRecPlay.swift | 2 +- .../Shared/Views/Call/ActiveCallView.swift | 48 +++++++++++-- .../Shared/Views/Call/AudioDevicePicker.swift | 25 +++++++ .../Views/Call/CallAudioDeviceManager.swift | 67 +++++++++++++++++++ .../Shared/Views/Call/CallController.swift | 18 ++++- apps/ios/Shared/Views/Call/WebRTCClient.swift | 31 ++++++++- apps/ios/SimpleX.xcodeproj/project.pbxproj | 8 +++ 7 files changed, 187 insertions(+), 12 deletions(-) create mode 100644 apps/ios/Shared/Views/Call/AudioDevicePicker.swift create mode 100644 apps/ios/Shared/Views/Call/CallAudioDeviceManager.swift diff --git a/apps/ios/Shared/Model/AudioRecPlay.swift b/apps/ios/Shared/Model/AudioRecPlay.swift index a9d0d6c1d9..99851f4be8 100644 --- a/apps/ios/Shared/Model/AudioRecPlay.swift +++ b/apps/ios/Shared/Model/AudioRecPlay.swift @@ -179,7 +179,7 @@ class AudioPlayer: NSObject, AVAudioPlayerDelegate { if playback { if AVAudioSession.sharedInstance().category != .playback { logger.log("AudioSession: playback") - try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, options: .duckOthers) + try? AVAudioSession.sharedInstance().setCategory(AVAudioSession.Category.playback, options: [.duckOthers, .allowBluetooth, .allowAirPlay, .allowBluetoothA2DP]) } } else { if AVAudioSession.sharedInstance().category != .soloAmbient { diff --git a/apps/ios/Shared/Views/Call/ActiveCallView.swift b/apps/ios/Shared/Views/Call/ActiveCallView.swift index d557d51182..97415018bf 100644 --- a/apps/ios/Shared/Views/Call/ActiveCallView.swift +++ b/apps/ios/Shared/Views/Call/ActiveCallView.swift @@ -110,8 +110,8 @@ struct ActiveCallView: View { call.callState = .invitationSent call.localCapabilities = capabilities } - if call.supportsVideo { - try? AVAudioSession.sharedInstance().setCategory(.playback, options: .defaultToSpeaker) + if call.supportsVideo && !AVAudioSession.sharedInstance().hasExternalAudioDevice() { + try? AVAudioSession.sharedInstance().setCategory(.playback, options: [.allowBluetooth, .allowAirPlay, .allowBluetoothA2DP]) } CallSoundsPlayer.shared.startConnectingCallSound() activeCallWaitDeliveryReceipt() @@ -235,6 +235,7 @@ struct ActiveCallOverlay: View { @EnvironmentObject var chatModel: ChatModel @ObservedObject var call: Call var client: WebRTCClient + @ObservedObject private var deviceManager = CallAudioDeviceManager.shared var body: some View { VStack { @@ -250,7 +251,16 @@ struct ActiveCallOverlay: View { HStack { toggleAudioButton() Spacer() - Color.clear.frame(width: 40, height: 40) + if deviceManager.availableInputs.allSatisfy({ $0.portType == .builtInMic }) { + toggleSpeakerButton() + .frame(width: 40, height: 40) + } else if call.hasMedia { + AudioDevicePicker() + .scaleEffect(2) + .frame(maxWidth: 40, maxHeight: 40) + } else { + Color.clear.frame(width: 40, height: 40) + } Spacer() endCallButton() Spacer() @@ -291,14 +301,33 @@ struct ActiveCallOverlay: View { toggleAudioButton() .frame(maxWidth: .infinity, alignment: .leading) endCallButton() - toggleSpeakerButton() - .frame(maxWidth: .infinity, alignment: .trailing) + // Check if the only input is microphone. And in this case show toggle button, + // If there are more inputs, it probably means something like bluetooth headphones are available + // and in this case show iOS button for choosing different output. + // There is no way to get available outputs, only inputs + if deviceManager.availableInputs.allSatisfy({ $0.portType == .builtInMic }) { + toggleSpeakerButton() + .frame(maxWidth: .infinity, alignment: .trailing) + } else if call.hasMedia { + AudioDevicePicker() + .scaleEffect(2) + .frame(maxWidth: 50, maxHeight: 40) + .frame(maxWidth: .infinity, alignment: .trailing) + } else { + Color.clear.frame(width: 50, height: 40) + } } .padding(.bottom, 60) .padding(.horizontal, 48) } } .frame(maxWidth: .infinity) + .onAppear { + deviceManager.start() + } + .onDisappear { + deviceManager.stop() + } } private func audioCallInfoView(_ call: Call) -> some View { @@ -376,12 +405,17 @@ struct ActiveCallOverlay: View { private func toggleSpeakerButton() -> some View { controlButton(call, call.speakerEnabled ? "speaker.wave.2.fill" : "speaker.wave.1.fill") { Task { - client.setSpeakerEnabledAndConfigureSession(!call.speakerEnabled) + let speakerEnabled = AVAudioSession.sharedInstance().currentRoute.outputs.first?.portType == .builtInSpeaker + client.setSpeakerEnabledAndConfigureSession(!speakerEnabled) DispatchQueue.main.async { - call.speakerEnabled = !call.speakerEnabled + call.speakerEnabled = !speakerEnabled } } } + .onAppear { + deviceManager.call = call + //call.speakerEnabled = AVAudioSession.sharedInstance().currentRoute.outputs.first?.portType == .builtInSpeaker + } } private func toggleVideoButton() -> some View { diff --git a/apps/ios/Shared/Views/Call/AudioDevicePicker.swift b/apps/ios/Shared/Views/Call/AudioDevicePicker.swift new file mode 100644 index 0000000000..3d846c7b68 --- /dev/null +++ b/apps/ios/Shared/Views/Call/AudioDevicePicker.swift @@ -0,0 +1,25 @@ +// +// MPVolumeView.swift +// SimpleX (iOS) +// +// Created by Stanislav on 24.04.2024. +// Copyright © 2024 SimpleX Chat. All rights reserved. +// + +import Foundation +import SwiftUI +import UIKit +import AVKit + +struct AudioDevicePicker: UIViewRepresentable { + func makeUIView(context: Context) -> some UIView { + let v = AVRoutePickerView(frame: .zero) + v.activeTintColor = .white + v.tintColor = .white + return v + } + + func updateUIView(_ uiView: UIViewType, context: Context) { + + } +} diff --git a/apps/ios/Shared/Views/Call/CallAudioDeviceManager.swift b/apps/ios/Shared/Views/Call/CallAudioDeviceManager.swift new file mode 100644 index 0000000000..d56849d16a --- /dev/null +++ b/apps/ios/Shared/Views/Call/CallAudioDeviceManager.swift @@ -0,0 +1,67 @@ +// +// CallAudioDeviceManager.swift +// SimpleX (iOS) +// +// Created by Avently on 23.04.2024. +// Copyright © 2024 SimpleX Chat. All rights reserved. +// + +import Foundation +import SwiftUI +import SimpleXChat +import AVKit +import WebRTC + +class CallAudioDeviceManager: ObservableObject { + static let shared = CallAudioDeviceManager() + let audioSession: AVAudioSession + let nc = NotificationCenter.default + + var call: Call? + var timer: Timer? = nil + + // Actually, only one output + @Published var outputs: [AVAudioSessionPortDescription] + @Published var currentDevice: AVAudioSessionPortDescription? = nil + // All devices that can record audio (the ones that can play audio are not included) + @Published var availableInputs: [AVAudioSessionPortDescription] = [] + + + init(_ audioSession: AVAudioSession? = nil) { + self.audioSession = audioSession ?? RTCAudioSession.sharedInstance().session + self.outputs = self.audioSession.currentRoute.outputs + self.availableInputs = self.audioSession.availableInputs ?? [] + } + + func reloadDevices() { + outputs = audioSession.currentRoute.outputs + currentDevice = audioSession.currentRoute.outputs.first + availableInputs = audioSession.availableInputs ?? [] + call?.speakerEnabled = currentDevice?.portType == .builtInSpeaker + + + // Workaround situation: + // have bluetooth device connected, choosing speaker, disconnecting bluetooth device. In this case iOS will not post notification, so do it manually + timer?.invalidate() + if availableInputs.contains(where: { $0.portType != .builtInReceiver && $0.portType != .builtInSpeaker }) { + timer = Timer.scheduledTimer(withTimeInterval: 2, repeats: false) { t in + self.reloadDevices() + } + } + } + + @objc func audioCallback(notification: Notification) { + reloadDevices() + + logger.debug("Changes in devices, current audio devices: \(String(describing: self.availableInputs.map({ $0.portType.rawValue }))), output: \(String(describing: self.currentDevice?.portType.rawValue))") + } + + func start() { + nc.addObserver(self, selector: #selector(audioCallback), name: AVAudioSession.routeChangeNotification, object: nil) + } + + func stop() { + nc.removeObserver(self, name: AVAudioSession.routeChangeNotification, object: nil) + timer?.invalidate() + } +} diff --git a/apps/ios/Shared/Views/Call/CallController.swift b/apps/ios/Shared/Views/Call/CallController.swift index 6da8294ef8..64b565e8e6 100644 --- a/apps/ios/Shared/Views/Call/CallController.swift +++ b/apps/ios/Shared/Views/Call/CallController.swift @@ -103,7 +103,23 @@ class CallController: NSObject, CXProviderDelegate, PKPushRegistryDelegate, Obse RTCAudioSession.sharedInstance().audioSessionDidActivate(audioSession) RTCAudioSession.sharedInstance().isAudioEnabled = true do { - try audioSession.setCategory(.playAndRecord, mode: .voiceChat, options: .mixWithOthers) + let supportsVideo = ChatModel.shared.activeCall?.supportsVideo == true + if supportsVideo { + try audioSession.setCategory(.playAndRecord, mode: .videoChat, options: [.defaultToSpeaker, .mixWithOthers, .allowBluetooth, .allowAirPlay, .allowBluetoothA2DP]) + } else { + try audioSession.setCategory(.playAndRecord, mode: .voiceChat, options: [.mixWithOthers, .allowBluetooth, .allowAirPlay, .allowBluetoothA2DP]) + } + // Without any delay sound is not playing from speaker or external device in incoming call + Task { + for i in 0 ... 3 { + try? await Task.sleep(nanoseconds: UInt64(i) * 300_000000) + if let preferred = audioSession.preferredInputDevice() { + await MainActor.run { try? audioSession.setPreferredInput(preferred) } + } else if supportsVideo { + await MainActor.run { try? audioSession.overrideOutputAudioPort(.speaker) } + } + } + } logger.debug("audioSession category set") try audioSession.setActive(true) logger.debug("audioSession activated") diff --git a/apps/ios/Shared/Views/Call/WebRTCClient.swift b/apps/ios/Shared/Views/Call/WebRTCClient.swift index ff36241daf..0b4917c103 100644 --- a/apps/ios/Shared/Views/Call/WebRTCClient.swift +++ b/apps/ios/Shared/Views/Call/WebRTCClient.swift @@ -605,9 +605,23 @@ extension WebRTCClient { self.rtcAudioSession.unlockForConfiguration() } do { - try self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue) - try self.rtcAudioSession.setMode(AVAudioSession.Mode.voiceChat.rawValue) - try self.rtcAudioSession.overrideOutputAudioPort(enabled ? .speaker : .none) + let hasExternalAudioDevice = self.rtcAudioSession.session.hasExternalAudioDevice() + if enabled { + try self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue, with: [.defaultToSpeaker, .allowBluetooth, .allowAirPlay, .allowBluetoothA2DP]) + try self.rtcAudioSession.setMode(AVAudioSession.Mode.videoChat.rawValue) + if hasExternalAudioDevice, let preferred = self.rtcAudioSession.session.preferredInputDevice() { + try self.rtcAudioSession.setPreferredInput(preferred) + } else { + try self.rtcAudioSession.overrideOutputAudioPort(.speaker) + } + } else { + try self.rtcAudioSession.setCategory(AVAudioSession.Category.playAndRecord.rawValue, with: [.allowBluetooth, .allowAirPlay, .allowBluetoothA2DP]) + try self.rtcAudioSession.setMode(AVAudioSession.Mode.voiceChat.rawValue) + try self.rtcAudioSession.overrideOutputAudioPort(.none) + } + if hasExternalAudioDevice { + logger.debug("WebRTCClient: configuring session with external device available, skip configuring speaker") + } try self.rtcAudioSession.setActive(true) logger.debug("WebRTCClient: configuring session with speaker enabled \(enabled) success") } catch let error { @@ -658,6 +672,17 @@ extension WebRTCClient { } } +extension AVAudioSession { + func hasExternalAudioDevice() -> Bool { + availableInputs?.allSatisfy({ $0.portType == .builtInMic }) != true + } + + func preferredInputDevice() -> AVAudioSessionPortDescription? { +// logger.debug("Preferred input device: \(String(describing: self.availableInputs?.filter({ $0.portType != .builtInMic })))") + return availableInputs?.filter({ $0.portType != .builtInMic }).last + } +} + struct CustomRTCSessionDescription: Codable { public var type: RTCSdpType? public var sdp: String? diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index feeea69376..6511b67ae9 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -188,6 +188,8 @@ 8C69FE7D2B8C7D2700267E38 /* AppSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C69FE7C2B8C7D2700267E38 /* AppSettings.swift */; }; 8C7D949A2B88952700B7B9E1 /* MigrateToDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7D94992B88952700B7B9E1 /* MigrateToDevice.swift */; }; 8C7DF3202B7CDB0A00C886D0 /* MigrateFromDevice.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C7DF31F2B7CDB0A00C886D0 /* MigrateFromDevice.swift */; }; + 8C81482C2BD91CD4002CBEC3 /* AudioDevicePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C81482B2BD91CD4002CBEC3 /* AudioDevicePicker.swift */; }; + 8CC4ED902BD7B8530078AEE8 /* CallAudioDeviceManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CC4ED8F2BD7B8530078AEE8 /* CallAudioDeviceManager.swift */; }; 8CC956EE2BC0041000412A11 /* NetworkObserver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8CC956ED2BC0041000412A11 /* NetworkObserver.swift */; }; D7197A1829AE89660055C05A /* WebRTC in Frameworks */ = {isa = PBXBuildFile; productRef = D7197A1729AE89660055C05A /* WebRTC */; }; D72A9088294BD7A70047C86D /* NativeTextEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D72A9087294BD7A70047C86D /* NativeTextEditor.swift */; }; @@ -483,6 +485,8 @@ 8C69FE7C2B8C7D2700267E38 /* AppSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppSettings.swift; sourceTree = ""; }; 8C7D94992B88952700B7B9E1 /* MigrateToDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateToDevice.swift; sourceTree = ""; }; 8C7DF31F2B7CDB0A00C886D0 /* MigrateFromDevice.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MigrateFromDevice.swift; sourceTree = ""; }; + 8C81482B2BD91CD4002CBEC3 /* AudioDevicePicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AudioDevicePicker.swift; sourceTree = ""; }; + 8CC4ED8F2BD7B8530078AEE8 /* CallAudioDeviceManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CallAudioDeviceManager.swift; sourceTree = ""; }; 8CC956ED2BC0041000412A11 /* NetworkObserver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NetworkObserver.swift; sourceTree = ""; }; D72A9087294BD7A70047C86D /* NativeTextEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NativeTextEditor.swift; sourceTree = ""; }; D741547729AF89AF0022400A /* StoreKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = StoreKit.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS16.1.sdk/System/Library/Frameworks/StoreKit.framework; sourceTree = DEVELOPER_DIR; }; @@ -549,6 +553,8 @@ 5C55A922283CEDE600C4E99E /* SoundPlayer.swift */, 18415323A4082FC92887F906 /* WebRTCClient.swift */, 18415B08031E8FB0F7FC27F9 /* CallViewRenderers.swift */, + 8CC4ED8F2BD7B8530078AEE8 /* CallAudioDeviceManager.swift */, + 8C81482B2BD91CD4002CBEC3 /* AudioDevicePicker.swift */, ); path = Call; sourceTree = ""; @@ -1237,6 +1243,7 @@ 5CB346E52868AA7F001FD2EF /* SuspendChat.swift in Sources */, 5C9C2DA52894777E00CC63B1 /* GroupProfileView.swift in Sources */, 5CEACCED27DEA495000BD591 /* MsgContentView.swift in Sources */, + 8C81482C2BD91CD4002CBEC3 /* AudioDevicePicker.swift in Sources */, 5CCB939C297EFCB100399E78 /* NavStackCompat.swift in Sources */, 5C764E89279CBCB3000C6508 /* ChatModel.swift in Sources */, 5C971E1D27AEBEF600C8A3CE /* ChatInfoView.swift in Sources */, @@ -1266,6 +1273,7 @@ 18415B0585EB5A9A0A7CA8CD /* PressedButtonStyle.swift in Sources */, 1841560FD1CD447955474C1D /* UserProfilesView.swift in Sources */, 64C3B0212A0D359700E19930 /* CustomTimePicker.swift in Sources */, + 8CC4ED902BD7B8530078AEE8 /* CallAudioDeviceManager.swift in Sources */, 18415C6C56DBCEC2CBBD2F11 /* WebRTCClient.swift in Sources */, 184152CEF68D2336FC2EBCB0 /* CallViewRenderers.swift in Sources */, 5CB634AD29E46CF70066AD6B /* LocalAuthView.swift in Sources */, From be9ae61a32a6989fc772c09168956f36aa181b96 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 26 Apr 2024 20:59:21 +0100 Subject: [PATCH 108/147] 5.7: ios 212, android 200, desktop 41 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 12 ++++++------ apps/multiplatform/gradle.properties | 8 ++++---- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index 6511b67ae9..c5d3665824 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -1552,7 +1552,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 210; + CURRENT_PROJECT_VERSION = 212; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1601,7 +1601,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 210; + CURRENT_PROJECT_VERSION = 212; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1687,7 +1687,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 210; + CURRENT_PROJECT_VERSION = 212; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -1724,7 +1724,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 210; + CURRENT_PROJECT_VERSION = 212; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -1761,7 +1761,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 210; + CURRENT_PROJECT_VERSION = 212; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1812,7 +1812,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 210; + CURRENT_PROJECT_VERSION = 212; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index f9682ca089..cda778515d 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -26,11 +26,11 @@ android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=5.7-beta.3 -android.version_code=199 +android.version_name=5.7 +android.version_code=200 -desktop.version_name=5.7-beta.3 -desktop.version_code=40 +desktop.version_name=5.7 +desktop.version_code=41 kotlin.version=1.9.23 gradle.plugin.version=8.2.0 From 406c35958e14e6343443b41650132925dbf2f1bb Mon Sep 17 00:00:00 2001 From: "M. Sarmad Qadeer" Date: Sat, 27 Apr 2024 03:00:49 +0500 Subject: [PATCH 109/147] web: add privacy page to website (#4096) * web: add privacy page to website * web: fix a blog frontmatter * web: fix privacy link from other docs * update --------- Co-authored-by: Evgeny Poberezkin --- .gitignore | 1 + PRIVACY.md | 14 ++++--- README.md | 6 +-- ...ransparency-v5-7-better-user-experience.md | 1 - docs/TRANSPARENCY.md | 8 ++-- website/.eleventy.js | 3 ++ website/langs/en.json | 2 +- website/src/_includes/footer.html | 4 +- website/src/_includes/layouts/privacy.html | 42 +++++++++++++++++++ website/src/_includes/navbar.html | 2 + website/web.sh | 1 + 11 files changed, 67 insertions(+), 17 deletions(-) create mode 100644 website/src/_includes/layouts/privacy.html diff --git a/.gitignore b/.gitignore index d7106ec8fa..63e7a018ad 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,7 @@ website/translations.json website/src/img/images/ website/src/images/ website/src/js/lottie.min.js +website/src/PRIVACY.md # Generated files website/package/generated* diff --git a/PRIVACY.md b/PRIVACY.md index ac355ac7f1..3b4ba2ba8a 100644 --- a/PRIVACY.md +++ b/PRIVACY.md @@ -1,16 +1,20 @@ +--- +layout: layouts/privacy.html +--- + # SimpleX Chat Privacy Policy and Conditions of Use SimpleX Chat is the first communication network based on a new protocol stack that builds on the same ideas of complete openness and decentralization as email and web, with the focus on providing security and privacy of communications, and without compromising on usability. SimpleX Chat communication protocol is the first protocol that has no user profile IDs of any kind, not even random numbers, cryptographic keys or hashes that identify the users. SimpleX Chat apps allow their users to send messages and files via relay server infrastructure. Relay server owners and providers do not have any access to your messages, thanks to double-ratchet end-to-end encryption algorithm (also known as Signal algorithm - do not confuse with Signal protocols or platform) and additional encryption layers, and they also have no access to your profile and contacts - as they do not provide any user accounts. -Double ratchet algorithm has such important properties as [forward secrecy](./docs/GLOSSARY.md#forward-secrecy), sender [repudiation](./docs/GLOSSARY.md#) and break-in recovery (also known as [post-compromise security](./docs/GLOSSARY.md#post-compromise-security)). +Double ratchet algorithm has such important properties as [forward secrecy](/docs/GLOSSARY.md#forward-secrecy), sender [repudiation](/docs/GLOSSARY.md#) and break-in recovery (also known as [post-compromise security](/docs/GLOSSARY.md#post-compromise-security)). If you believe that any part of this document is not aligned with our mission or values, please raise it with us via [email](chat@simplex.chat) or [chat](https://simplex.chat/contact#/?v=1&smp=smp%3A%2F%2FPQUV2eL0t7OStZOoAsPEV2QYWt4-xilbakvGUGOItUo%3D%40smp6.simplex.im%2FK1rslx-m5bpXVIdMZg9NLUZ_8JBm8xTt%23%2F%3Fv%3D1%26dh%3DMCowBQYDK2VuAyEALDeVe-sG8mRY22LsXlPgiwTNs9dbiLrNuA7f3ZMAJ2w%253D%26srv%3Dbylepyau3ty4czmn77q4fglvperknl4bi2eb2fdy2bh4jxtf32kf73yd.onion). ## Privacy Policy -SimpleX Chat Ltd uses the best industry practices for security and encryption to provide client and server software for secure [end-to-end encrypted](./docs/GLOSSARY.md#end-to-end-encryption) messaging via private connections. This encryption cannot be compromised by the relays servers, even if they are modified or compromised, via [man-in-the-middle attack](./docs/GLOSSARY.md#man-in-the-middle-attack), unlike most other communication platforms, services and networks. +SimpleX Chat Ltd uses the best industry practices for security and encryption to provide client and server software for secure [end-to-end encrypted](/docs/GLOSSARY.md#end-to-end-encryption) messaging via private connections. This encryption cannot be compromised by the relays servers, even if they are modified or compromised, via [man-in-the-middle attack](/docs/GLOSSARY.md#man-in-the-middle-attack), unlike most other communication platforms, services and networks. SimpleX Chat software is built on top of SimpleX messaging and application protocols, based on a new message routing protocol allowing to establish private connections without having any kind of addresses or other identifiers assigned to its users - it does not use emails, phone numbers, usernames, identity keys or any other user profile identifiers to pass messages between the user applications. @@ -20,7 +24,7 @@ While SimpleX Chat Ltd is not a communication service provider, and provide publ We see users and data sovereignty, and device and provider portability as critically important properties for any communication system. -SimpleX Chat security assessment was done in October 2022 by [Trail of Bits](https://www.trailofbits.com/about), and most fixes were released in v4.2 – see [the announcement](./blog/20221108-simplex-chat-v4.2-security-audit-new-website.md). +SimpleX Chat security assessment was done in October 2022 by [Trail of Bits](https://www.trailofbits.com/about), and most fixes were released in v4.2 – see [the announcement](/blog/20221108-simplex-chat-v4.2-security-audit-new-website.md). ### Your information @@ -34,7 +38,7 @@ You can transfer the profile to another device by creating a backup of the app d #### Messages and Files -SimpleX relay servers cannot decrypt or otherwise access the content or even the size of your messages and files you send or receive. Each message is padded to a fixed size of 16kb. Each file is sent in chunks of 64kb, 256kb, 1mb or 8mb via all or some of the configured file relay servers. Both messages and files are sent end-to-end encrypted, and the servers do not have technical means to compromise this encryption, because part of the [key exchange](./docs/GLOSSARY.md#key-exchange) happens out-of-band. +SimpleX relay servers cannot decrypt or otherwise access the content or even the size of your messages and files you send or receive. Each message is padded to a fixed size of 16kb. Each file is sent in chunks of 64kb, 256kb, 1mb or 8mb via all or some of the configured file relay servers. Both messages and files are sent end-to-end encrypted, and the servers do not have technical means to compromise this encryption, because part of the [key exchange](/docs/GLOSSARY.md#key-exchange) happens out-of-band. Your message history is stored only on your own device and the devices of your contacts. While the recipients' devices are offline, messaging relay servers temporarily store end-to-end encrypted messages – you can configure which relay servers are used to receive the messages from the new contacts, and you can manually change them for the existing contacts too. @@ -82,7 +86,7 @@ Additional technical information can be stored on our servers, including randoml #### SimpleX Directory -[SimpleX Directory](./docs/DIRECTORY.md) stores: your search requests, the messages and the members profiles in the registered groups. You can connect to SimpleX Directory via [this address](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). +[SimpleX Directory](/docs/DIRECTORY.md) stores: your search requests, the messages and the members profiles in the registered groups. You can connect to SimpleX Directory via [this address](https://simplex.chat/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion). #### User Support diff --git a/README.md b/README.md index d1ac0b676d..f800e9f5b1 100644 --- a/README.md +++ b/README.md @@ -412,13 +412,13 @@ We have never provided or have been requested access to our servers or any infor We do not log IP addresses of the users and we do not perform any traffic correlation on our servers. If transport level security is critical you must use Tor or some other similar network to access messaging servers. We will be improving the client applications to reduce the opportunities for traffic correlation. -Please read more in [Terms & privacy policy](./PRIVACY.md). +Please read more in [Privacy Policy](./PRIVACY.md). ## Security contact -To report a security vulnerability, please send us email to chat@simplex.chat. We will coordinate the fix and disclosure. Please do NOT report security vulnerabilities via GitHub issues. +Please see our [Security Policy](./docs/SECURITY.md) on how to report security vulnerabilities to us. We will coordinate the fix and disclosure. -Please treat any findings of possible traffic correlation attacks allowing to correlate two different conversations to the same user, other than covered in [the threat model](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#threat-model), as security vulnerabilities, and follow this disclosure process. +Please do NOT report security vulnerabilities via GitHub issues. ## License diff --git a/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md index 77254bbbea..46336a8673 100644 --- a/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md +++ b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md @@ -1,4 +1,3 @@ - --- layout: layouts/article.html title: "SimpleX network: legally binding transparency, v5.7 released with better user experience for calls and messages" diff --git a/docs/TRANSPARENCY.md b/docs/TRANSPARENCY.md index 55808c83c8..547660861b 100644 --- a/docs/TRANSPARENCY.md +++ b/docs/TRANSPARENCY.md @@ -1,12 +1,12 @@ --- title: Transparency Reports permalink: /transparency/index.html -revision: 09.04.2024 +revision: 26.04.2024 --- # Transparency Reports -**Updated**: Apr 9, 2024 +**Updated**: Apr 26, 2024 SimpleX Chat Ltd. is a company registered in the UK – it develops communication software enabling users to operate and communicate via SimpleX network, without user profile identifiers of any kind, and without having their data hosted by any network infrastructure operators. @@ -17,8 +17,8 @@ This page will include any and all reports on requests for user data. Our objective is to consistently ensure that no user data and absolute minimum of the metadata required for the network to function is available for disclosure by any infrastructure operators, under any circumstances. **Helpful resources**: -- [Privacy policy](https://github.com/simplex-chat/simplex-chat/blob/stable/PRIVACY.md) -- [Privacy and security: technical details and limitations](https://github.com/simplex-chat/simplex-chat?tab=readme-ov-file#privacy-and-security-technical-details-and-limitations) +- [Privacy policy](../PRIVACY.md) +- [Privacy and security: technical details and limitations](../README.md#privacy-and-security-technical-details-and-limitations) - Whitepaper: - [Trust in servers](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#trust-in-servers) - [Encryption Primitives Used](https://github.com/simplex-chat/simplexmq/blob/stable/protocol/overview-tjr.md#encryption-primitives-used) diff --git a/website/.eleventy.js b/website/.eleventy.js index 09fc7c2c44..64aedbc04c 100644 --- a/website/.eleventy.js +++ b/website/.eleventy.js @@ -394,6 +394,9 @@ module.exports = function (ty) { if (parsed.path.startsWith("../../blog")) { parsed.path = parsed.path.replace("../../blog", "/blog") } + if (parsed.path.startsWith("../PRIVACY.md")) { + parsed.path = parsed.path.replace("../PRIVACY.md", "/privacy") + } parsed.path = parsed.path.replace(/\.md$/, ".html").toLowerCase() return uri.serialize(parsed) } diff --git a/website/langs/en.json b/website/langs/en.json index 9d431ffbdb..e606fb9bf2 100644 --- a/website/langs/en.json +++ b/website/langs/en.json @@ -24,7 +24,7 @@ "copyright-label": "© 2020-2023 SimpleX | Open-Source Project", "simplex-chat-protocol": "SimpleX Chat protocol", "terminal-cli": "Terminal CLI", - "terms-and-privacy-policy": "Terms & Privacy Policy", + "terms-and-privacy-policy": "Privacy Policy", "hero-header": "Privacy redefined", "hero-subheader": "The first messenger
    without user IDs", "hero-p-1": "Other apps have user IDs: Signal, Matrix, Session, Briar, Jami, Cwtch, etc.
    SimpleX does not, not even random numbers.
    This radically improves your privacy.", diff --git a/website/src/_includes/footer.html b/website/src/_includes/footer.html index 1c23806760..0cc1b16f8d 100644 --- a/website/src/_includes/footer.html +++ b/website/src/_includes/footer.html @@ -20,11 +20,9 @@ {{ "simplex-chat-protocol" | i18n({}, lang ) | safe }} - {{ "terms-and-privacy-policy" | i18n({}, lang ) | safe }} - + + + + + + + SimpleX Privacy Policy + + + + + + {% if image %} + + {% else %} + + {% endif %} + + + + + + + + + + {% include "navbar.html" %} + +

    +
    {{ content | safe }}
    +
    + + {% include "footer.html" %} + + + diff --git a/website/src/_includes/navbar.html b/website/src/_includes/navbar.html index 55836bd576..89b3a122d8 100644 --- a/website/src/_includes/navbar.html +++ b/website/src/_includes/navbar.html @@ -60,6 +60,8 @@ >Whitepaper
  • +
  • {{ "terms-and-privacy-policy" | i18n({}, lang ) | safe }}
  • {{ "smp-protocol" | i18n({}, lang ) | safe }} diff --git a/website/web.sh b/website/web.sh index e64f74d21d..ca34b00cdd 100755 --- a/website/web.sh +++ b/website/web.sh @@ -8,6 +8,7 @@ rm website/src/docs/lang/*/README.md cp -R blog website/src cp -R images website/src rm website/src/blog/README.md +cp PRIVACY.md website/src cd website langs=() From 9148425ebaa8e0ab268d09d31f233ec27de41a4f Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 26 Apr 2024 23:06:40 +0100 Subject: [PATCH 110/147] blog: legally binding transparency, v5.7 announcement (#4097) * blog: legally binding transparency, v5.7 announcement * update * update, images * readme * update --- README.md | 2 + ...ransparency-v5-7-better-user-experience.md | 113 +++++++++++++++++- blog/README.md | 15 +++ blog/images/20240426-forward1.png | Bin 0 -> 787088 bytes blog/images/20240426-forward2.png | Bin 0 -> 294676 bytes blog/images/20240426-forward3.png | Bin 0 -> 515052 bytes blog/images/20240426-pq.png | Bin 0 -> 170591 bytes blog/images/20240426-profile.png | Bin 0 -> 286656 bytes blog/images/20240426-profile1.png | Bin 0 -> 244040 bytes blog/images/20240426-profile2.png | Bin 0 -> 170876 bytes blog/images/20240426-profile3.png | Bin 0 -> 171963 bytes .../src/_includes/blog_previews/20240426.html | 16 +++ 12 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 blog/images/20240426-forward1.png create mode 100644 blog/images/20240426-forward2.png create mode 100644 blog/images/20240426-forward3.png create mode 100644 blog/images/20240426-pq.png create mode 100644 blog/images/20240426-profile.png create mode 100644 blog/images/20240426-profile1.png create mode 100644 blog/images/20240426-profile2.png create mode 100644 blog/images/20240426-profile3.png create mode 100644 website/src/_includes/blog_previews/20240426.html diff --git a/README.md b/README.md index f800e9f5b1..5ef7c2f7cc 100644 --- a/README.md +++ b/README.md @@ -234,6 +234,8 @@ You can use SimpleX with your own servers and still communicate with people usin Recent and important updates: +[Apr 26, 2024. SimpleX network: legally binding transparency, v5.7 released with better calls and messages.](./blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md) + [Mar 23, 2024. SimpleX network: real privacy and stable profits, non-profits for protocols, v5.6 released with quantum resistant e2e encryption and simple profile migration.](./blog/20240323-simplex-network-privacy-non-profit-v5-6-quantum-resistant-e2e-encryption-simple-migration.md) [Mar 14, 2024. SimpleX Chat v5.6 beta: adding quantum resistance to Signal double ratchet algorithm.](./blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md) diff --git a/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md index 46336a8673..a321dbc6fa 100644 --- a/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md +++ b/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md @@ -1,12 +1,115 @@ --- layout: layouts/article.html -title: "SimpleX network: legally binding transparency, v5.7 released with better user experience for calls and messages" +title: "SimpleX network: legally binding transparency, v5.7 released with better calls and messages" date: 2024-04-26 -preview: blog_previews/20240323.html -draft: true +previewBody: blog_previews/20240426.html +image: images/20240426-profile.png +imageBottom: true permalink: "/blog/20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.html" --- -# SimpleX network: legally binding transparency, v5.7 released with better user experience for calls and messages +# SimpleX network: legally binding transparency, v5.7 released with better calls and messages -This is a permalink for the post +What's new in v5.7: +- [quantum resistant end-to-end encryption](#quantum-resistant-end-to-end-encryption) with all contacts. +- [forward and save messages](#forward-and-save-messages) without revealing the source. +- [in-call sounds and switching sound sources](#in-call-sounds-and-switching-sound-sources). +- [better network connection management](#network-management). +- [customizable profile images](#customizable-shape-of-profile-images) + +Also, we added Lithuanian interface language to the Android and desktop apps, thanks to [our users and Weblate](https://github.com/simplex-chat/simplex-chat#help-translating-simplex-chat). + +## Legally binding transparency + +We are committed to open-source, privacy and security. Here are the recent changes we made: + +- We now have a [Transparency Reports](https://simplex.chat/transparency/) page. +- We updated our [Privacy Policy](https://github.com/simplex-chat/simplex-chat/blob/stable/PRIVACY.md) to remove undefined terms "impermissible" and "acceptable", which would allow us to remove anything we don't like, without any clarity on what that is. You can see the edits [here](https://github.com/simplex-chat/simplex-chat/pull/4076/files). +- We published a new page with [Frequently Asked Questions](https://simplex.chat/faq/), thanks to the guidance from users. +- We also have a new [Security Policy](https://simplex.chat/security/) – we welcome your feedback on it. + +What do we mean by “legally binding transparency?”. It includes these principles: +- Accountability: an empty promise or commitment to transparency that is not legally binding is just marketing, and can provide opportunities for the organizations to be misleading or not disclose important information that can affect their users privacy and security. +- Consistency: often, there's a disconnect between marketing claims and legally binding policies. Our approach is to ensure that promises made in marketing materials or any external communications align with our legally binding documents, so that users can rely on our promises, and know exactly what to expect from us. + +For example: +- we use open-source code, and we made a legally binding commitment to use the published code in all released apps and deployed preset servers. +- we use precise and technical language in the Privacy Policy defining what data and metadata can be accessed via the preset relays. + +If you see any inconsistency between technical parameters of SimpleX Network and what is promised in our Privacy Policy please raise it with us. + +## What's new in v5.7 + +This release focus is improving the app usability, and preparing the foundation for v5.8 that will provide an in-built protection of user IP addresses when connecting to unknown file and messaging servers, reducing the need to use Tor (which would still remain supported via SOCKS proxy, for additional privacy). + +### Quantum resistant end-to-end encryption + + + +We [wrote before](./20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md) about how quantum resistant encryption was added to SimpleX Chat and also about other properties of end-to-end encryption, possible attacks on its security and known mitigations. + +Quantum resistant encryption will now be enabled by default in all direct chats. For the new conversations it will be enabled from the beginning, and for the existing conversations it will be agreed after you exchange several messages with your contacts - you will see a notice in the conversation when it happens. + +You can still safely downgrade the app to an earlier version if needed, as v5.6 already supports quantum resistant encryption. + +With the users who have an earlier version, the app will work using the conventional encryption, which is still very secure. It's important that we augmented the conventional encryption with post-quantum cryptographic algorithm rather than replaced it, using a hybrid construction as recommended by the cryptography experts. + +The groups currently do not support quantum resistant encryption yet - we plan to add it in the future to small groups. + +### Forward and save messages + +You can now save received messages to private notes and forward them to your contacts and groups. This is both more convenient than copy-pasting the messages, and also more private - you can forward files and preserve a disappearing file in your private notes without saving them outside of the app. + +You can see and navigate to the original source of the message via the message information, but the recipient of the message can only see that it was forwarded, but not from which conversation - in this way you can show that the message was quoted from another source without revealing the source ([Chatham House Rule](https://en.wikipedia.org/wiki/Chatham_House_rule)). + + + +### In-call sounds and switching sound sources + +This was the most frequent request of the users who use SimpleX Chat for audio and video calls - to add sound indication to the connection progress, as happens in all other apps. This release added these sounds and also vibration when call connects and disconnects. + +You can also switch between bluetooth headphones, speakerphone and earpiece via the new button in the call. + +### Network management + +To reduce traffic and battery usage, this release made connection timeouts dependent on which network your device uses - timeouts will be larger when you are on mobile connection and smaller when on WiFi. It also makes connection attempts very infrequent when the device is not connected to network. + +### Customizable shape of profile images + +To customizable the interface, you can now change the shapes of profile images to anything from squares with sharp corners to circles, as before, via the Appearance menu in the app Settings. The default shape of profile images is changed to squares with rounded corners. + + + +## SimpleX network + +Some links to answer the most common questions: + +[How can SimpleX deliver messages without user identifiers](./20220511-simplex-chat-v2-images-files.md#the-first-messaging-platform-without-user-identifiers). + +[What are the risks to have identifiers assigned to the users](./20220711-simplex-chat-v3-released-ios-notifications-audio-video-calls-database-export-import-protocol-improvements.md#why-having-users-identifiers-is-bad-for-the-users). + +[Technical details and limitations](https://github.com/simplex-chat/simplex-chat#privacy-technical-details-and-limitations). + +[Frequently asked questions](../docs/FAQ.md). + +Please also see our [website](https://simplex.chat). + +## Help us with donations + +Huge thank you to everybody who donates to SimpleX Chat! + +We are planning a 3rd party security audit for the protocols and cryptography design in July 2024, and also the security audit for an implementation in December 2024/January 2025, and it would hugely help us if some part of this $50,000+ expense is covered with donations. + +We are prioritizing users privacy and security - it would be impossible without your support. + +Our pledge to our users is that SimpleX protocols are and will remain open, and in public domain, - so anybody can build the future implementations of the clients and the servers. We are building SimpleX network based on the same principles as email and web, but much more private and secure. + +Your donations help us raise more funds – any amount, even the price of the cup of coffee, makes a big difference for us. + +See [this section](https://github.com/simplex-chat/simplex-chat/tree/master#help-us-with-donations) for the ways to donate. + +Thank you, + +Evgeny + +SimpleX Chat founder diff --git a/blog/README.md b/blog/README.md index 78cd0709ad..2f3b5aeeb2 100644 --- a/blog/README.md +++ b/blog/README.md @@ -1,5 +1,20 @@ # Blog +Apr 26, 2024 [SimpleX network: legally binding transparency, v5.7 released with better calls and messages](./20240426-simplex-legally-binding-transparency-v5-7-better-user-experience.md) + +We published Transparency Reports, Security Policy, and Frequently Asked Questions, and updated Privacy Policy. + +We are committed to have full consistency between marketing promises and legally binding documents. + +What's new in v5.7: +- quantum resistant end-to-end encryption with all contacts. +- forward and save messages without revealing the source. +- in-call sounds and switching sound sources. +- better network connection management. +- customizable profile images + +--- + Apr 16. 2024 [The dangers of metadata in messengers](./20240416-dangers-of-metadata-in-messengers.md) _By [Esra'a al Shafei](https://mastodon.social/@alshafei)_ diff --git a/blog/images/20240426-forward1.png b/blog/images/20240426-forward1.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb99a45801396b6c87f55af80013b343a36d4fb GIT binary patch literal 787088 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 z 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 z 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 eCKN_!K!b{Wa~T@=Dj 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�o}2i zF1qu_ii!XP{6v5a5?0D(K~VXLHt}dF(-7Tw^+WH)Sk`HxH=G@o$KLA2v>0D|B=n2M z2yt)@j<$_U=5^g>Z83Agn2bhiS|^^tWyW6B*>m1{=#>hNuj%5zIFSW@g&=fjwt+Buy%LxKfJnrPKNlr=M`(j#b-@vMGT|zV82L9I7 zbUSF)@3gTUY-)9+2V_Z>ckOoWV{6^o(}ro;XWwFy7(IJhh}I4r#`$u-u?4>pigViT zn{IZKzxE4m@*m-KYMs)x@a2F0Q#bO9XWSZg(QWsvAn}tfU#%tqcRzgp2z-AD`W-&3 zHxUI>EzoLi$B6Zq_)-}^58d^qqeK>}vFmU2o%H@#|!&$a=gPS<3TYC=P ziQe#i?)@s(+hk9ei7BC9snysW=`-_kKcLRYPJ%v9#Vlo@ZZtm|3&Sxuu?%K;3{x(R ze3}Y2>|`hasBu87P$UjI@ktY(A~D(bG~@=BH^Fi=j5opscfn&-&XZrnHAy`G#Xi1f zkxBRoEZ!PbQfUvxl(qS&M%|c9`zL`E6}hh}YCEI=pV;LcEMiAk4fCD_eFhpbZ!9oh z;g>(5=qh(ZN>)hS+rj=XH4kaR_9nlwePOe~_U^-0`@uZGMS4f>u*B}*5HBY1r~w!L z8h&JF{PD-!=-2L+hSd{@QpfQadlkVfC(~08xz%s^fLr;I8|6!(wg_Ve^^C|EWlkb^ zlr6u+$#Pkqp-Ya&)8P9ypK+MEQEjOW7k8#(zEcX$V0ofFv#%LLZ zpsPR;K=X+h6Mr374Mrp1)-rcNejgzAfw+Uram~7OkID5eKO}^hYlJ)KND`Ry?MA#_ zg+RdFKZr}EGU}Fzb&fFhsgU00a|%i6$}+Z2-Sot~DD#tP7CQ=Mdzxs?L*|VI=8j+f zTt$~9%A=pH4&BWZGj&Maw>7!BWm_9Du<|w%24>I_?i3H$BHYEEZ98YwDb5K1yW5nE-tsNQ`Eg!3#!||}Hz0S)uyZD7 zz6rA=kpgc7$akL``8xRiYRcD8nM&roI+|I^) z50tRts4hoPLNA1}P}lV_QYZQtug|im4c>NNQ6;Y$Bf%}dpTVOiOnlv;TyMbTPB?eO z%h!Y0h|LV{jz0n#;K?yG9$mYPFN8BO(C4WIz+#tFHBj`vKWQfzkNCS0${=q`GWYmO z|GUUBC*!!;dGKO9HPHv^VBgL;GV#Q4di!UF!!c26PTEm7c^{{pBYR{`>feOoEsqWH zfQ@87kT*nTD`cyC0Lx5Q6}w|}WwCh(GJ{9rS?BIH9$}9?`mme)H^1rJbEe(OH@(p< zUw^&4a*zS^>b2Jk(HPzbKFWpIuL`j*WQUpWE#9>Y=d=9+Z=zyE&dZdG8-bXwEb!z@ z+~|*d`F0iI>mRinTX0EJ3?N-11HWoo=pG56FzUm=0)fPuowH3iCybMp{wp!B{;B;6 zoF_Eamgli{ER?-U)A?sTZ1vbBaXE2D+)!6G0=CCE2JbZ=mcAs1_A)U>C2I!g29t*3 zBcn7yycx9}bNoUsgK0U+!n5ON@S{WA8MkW%r8NkU;GZ|iOvK~$%N=uk4}?jsC-4QP z)a@g!8I%ORYKN+@{d-x2n=-8BvtAysj_o&JFMX%S5Thj+cZ^_&s9|fqc&>L1A^(Mn5 zpyuS~|F~<-FJ3{e%(#~#hd}{=Cr!4A@pnU8B>JAy7{DkUW$QY)_ zRX3_NSn5I_tHv_X4c3KJ^yvkslj6hDcj7%@8&%>T-C(Y$WmO<}Y$5bU^}@uX*7Dz| z2IwKCc%3CPSSKC4*`(%fcX5;jf%zH(b3XOrjyZnPK%Rc(c=2WzNnW+c;GWkNU!h7E z<`&_>YciK&Fw0(lL1npH@-~iGL|&pXu(ByNcI4d;ZbwFqH=1U=q2LJ+sT zT-udLb;{2`chKoEZVSD=y8SHV5d5X*T`lycg7aoLOUK-Q*P{O+$L`fR&$aTvTGG6Y zaMXb40MWGP^}+6L4|);4Z@=ZEs8)(yY19xTkfzUK=ZE<#W}SVM z5`yixXjCXNQ#wg0yHln}3Vh@T#$-5|RG*`uTTB#8(oi27D^~oOb^A033bxI){o`$D z8FhiMwlU7ib8h^A?DdHt(+H9uxJJ32oiE$`Gl<%eAoON^ek%6m1n5Xy4+{>Itbh7D(cZ}^zWFP!&=QKO8cx&5r zWBTQ#q{G{^|0-keDW{$5rC_Va3t(&#b~{*5aq~k(`ayKWSO0<8dsAo!m-m+f;hyf| zwo_hdA+7l@9pA9S`c>Yw&=W=nme7a~eg{5A1bzPsn|Wb7xb${ofbn-fqb%vz!YiuW z&SRt+_`#p4zi~~aasW?KPTv&1)W~{!HIE4Ah<22SqQ|8__U5Kr&QRRxK&!c@(C?rG z42__8WX)366wmHin3snSoWh?{%KNO%8vbHoA$6rEN*T_-%At;g{r2MlvP?u)TOHZk z(3j7OZ?YYkuf;4ZLT^gg?n$K2vvTw-ppjkQ`42}>fD4iT>X6knvAxr{d)Fl6)-_J6 z%WaektQ?M+kfL$_A?iIt&tL3E<74WLiQ0F2y93ns6?wnMX_Zt-G}sSCq02+T$09rE zT5Y1;xWq?slLI0Oi{b>8>7DuYK4yE-QM&D3w2eI|dkNK^kD2Nn&WL{`PFto98ur&Q z_D=gkw{aVvpdOXm+s9N)yMgN`tmhs@`i4+=@AwHucspB7bveWE@6VXn*KgrwG`;(!Lj?2?kx~*twT!{SUjzm(97%ID}6S6y69jd_otP^B*-|1aArFr6vuXK|H>~Ypx%wie!_#=9hA07-bh~+A1-JGOG_j50aL$Jg7@?#>z;5;1Oxz-srectk?!M0~)E6kS zKuLCC)XJH?8@yR^X73<7?Ja0we>`l>WkR;*A(1T7>eC+8Z&&tP@2Yvzdt=~i zD}cSMHf40ZVVvryhde}taeE8xHZb~o_V=_L$G;Big?izEQcu#Ku7HTOy<&Geaj9_I z@Y&R1TNuZPRmG&>s}*FDR_3nLMNndkVVUAK#jY(b{*0dKD-;j&I3eWT*f)>oK)%;v zFzyzmr?$cR4gO;Dr=yh{^Z^ku&-~d=ge-z6R-}_+GJMu#d3r||5lga~e=@Lpg#tPm zS;8YRc`)-;n|J2wtk)V7lP0>&tSiClY2;`OnLbacnuza$XO(yLUebnW2Y{peZXif^R2!>|*+Ts+e)r?c1x-&Kj66SyCA2~L zn9^AYl0le4(F!q^ta#`(=Q<<6qqcqQ9J@CfKqfGjZplYI46%wNQhozCN$NIZnn4D* z21G~2@_N!mVIq74?π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�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 z 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�?rtsa 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%0D&r79j7KHuQoQ( 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

    a7 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
  • 53LAE=YNtOox(#RNjGI*W(IS0=~{G|Dpx!(@Eup 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

    +)JfB6-d_1pQ_K&6NAPBB#< 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

    LO{PwrMg~?a{ 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�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

    +FdvC?Y0R2o<8&E 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

  • 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 z z9Y3zLSuH^*JAnw=r_CHvByV$@I%`M2j1N917JXj~ZA64l_lioQuNEU6gyyYBrZv!} zorp%YCA_#f_i|43*Z~>brBNs(&0`qZH&heH0!qH6V$Vyd-^Ucc9_rB28Wa(`Z|Vr< zj1RMS%a)DO2RE2-#t9wC{*vNi9s7_r2BCDDaUAWoU-tj`&4 zP7c(1NsK}ts^3pLuOJ^X^lfP5Uznu@QP9IuA(mw`$W*K6{YMM7ijft^li)=O4mi;&*Ba~h9Arw!>trqG8KbJifAbl0R9T$9wG=)lK2f&en-R~=SSq~qJv8?MgM-)l9=(Zr z94mEf*)45l=8@O9SZrJ-qlhNsqm*MCw?}gtv<57x2jxIQB;A!RVzK5inM`C4UZ(%U zWyZOtlEl4jW%`?b94+xgaTyUq$Y3fxC(}v$r!_8DAW#V?L_#O8_*{({Vj?6^7~w$r zwD2bHa;l39eLY^H4%DPFE`~ZT(%_E)xGh-|E-Q7V1Kr&%yV|-}g+o$ z0kl*pBdr!z(;4I6kUGq z;jFX{(nw}5uv_tWxyvVCi9oU}!Ox=fM4g$S9O@(-w1C==-dAVndF1Y*%eC7i^%if{qD# ziHdRhh_R5XpT_@l#GhVXW3-Hr1>iw3W)`ICWalDFqECrt4VB+PQB*EVFe4yonR2fo zwCShtYw}JLkR0Gak9}{x@ch~Mq$xDLbp-u^y2_CzxH^0ealX8%A0awHHHem5R?bO_ ze!gN#7bNPzd5DX@WOZox@wa~Z%wY-u)@UwKl8B^~Vh~6>m7VHNKOm*7o6es4>Dp@g zlR_E)gym00Id`qMk~fKjnm;G?xaAO_B{_4Y71Tt9?&i5(q4yBdyFrR{o**EU(ac>+ zPmDTk&S26mrQm?4cd&vRq^?-Gix|B91I${yY?pd@(2Bfd?3egXHPxf8W0K7!Z9||A z+TXE$LYQ}Cw-Qv(BurDc;KaCPyK zYpdZswWnCvzq*I^w@LyFEO1*d6fPv2hut$Yr+h-6=%${W{nBKMyX~bdj;U*@DWSnPZ|_JDz)8Oro=Fz)ec(faW}+uxi`0| zm^0?ThTS|(YpsgkRVWd`{4KHYz4Kl1rUOj>FdFyE*33n(tR{FLY@Kw;35eh|Sr zgqwDuM5!OkNt}q{wThsawxWRdO{BtBlu}{Y*CN7P^=Vk?MW#T!b(=x#;+wMM_ojuU zB3jE7e(g!;wKjU_oD0pDq(qoTikam&P>aE1xnhGz)t+QUHtOIfre+QQ5rRe%Hmppk z!;6Kxaq6aH-$ME-0;t`nn9TRHxeo_bV~~;UQpOA9B9nBlB9+b{KEi(_?Y$NzQQYWw zVKeAnOyeR<9_J0ck)fX@S>?&ybshgK^gAm3w^kQ5c7d*M&gr0N{9JnFcaV%Jv0{k? zq|6FUZH4~A4R@L6IQI}KsK$^Qpqm`XH1!(YOs*WeA+d8@G?f)A(XcJ!1?@R9!pC5_ zw~#e-qm(bl)`StCW;Q0}o6U}Eaub!OvzO>GA8r)(pqK&QxPcTx1pnq z7WBEz^VwDt3+0 zK8|UUp044rmib}sOxYwY0}}m@rF~JOJzTMIR9F|Js5|McV!n`=mrGbv1S@}n+GKeMZA4B5VhFQ+N+=kS%{Ttt$^2oDPCidi6TPHxNiQs{DIClboxBBoQBdGnf^u2*QoB#c&W2~Hzz ztQmWhe1nZ?0Z&7KWxFhFY!H$X)?8D`s{^*Pzzuk~M_%GD;5A0e7PWgM_|tLBDxn?|6r$Z9Rbl1;#bU<))b?4!buKg%lCI|L}HZXNXJ#U zpUu3ooq{56Th88(9!}Ktk6@+R&o?=Hu=trMLAdNzvX|r(y#PYmA_oTLIFiMNbt+Xc z*7HBbclqGst1ZrtyXLCaV-@t)yw`eu^K}MlbT!K2m-Fr!Ds5B6Lw@lN8jc>3T7O`# zf_c*CU}OCdC=E@U{#@zE`!<{T8-gQU-8d-hTXiEMNw-o31s7Ysib`k4Y3`4n1x@hmkXD%DI4So~Y)ph*+Kuvzi`8Nt!8YM+?ri^iDzttZiTD zb3xT1Q)^691lhxO4yI&%5VWrZ4Lp z>aE6ALcWQWxF3jpggoYIi?AekVcr9jSBa`Gc8abQ{-> z1lI52D4GH)pAEE_`s?W`%q;$CN#E4eVKb-^S%UFfWo2T=atDrF=S1@?4;%=z53IJ5 z+hCL4R3T>%_^qw@I0n9LMsW;(=d+Si)OxE$r>vHG#)w^AoJT`&R|9_Tp7$J9&n~uYb)u+98HB+A>P&haVIBZ}xG_MncJev`LI- z=VTlX?{1lwZ+`ZbWl3Dh7w?Ob7Ubt+@9YRzDKg!OeOJ*gLu`F_VqjKZW=1X{cwVH4 z_Q~VvewHIb#jXLP>0CpWYmQQ-vT6b($43SmTbNr#kQu3-=l@&_kQdy`=U7-0oFZ>maf{d*qC0F=+q7p1o{@cD+ z)5{XO*C$OX4;q@BRGZ-h6%nE~m}Gn+tdSWlfZR%~K)H~pRhY3Ql3^^cXdxEMnTgL(l)3?x`< z!~JNXN|<#}@!|W$aMKpG&Ls)4`pgOOA68BQlN^s+b5{H`HR~y!G}~z_!jcXU%v(P> zj;6t(tSmFxLs+3)Hk6mwEs5#DVW({LbzZn{94}$~t51z0>1l`~!}=x(1j$ zm;Z~Mfs%oaH=|hTaAJE3$G=J6bSdTKPGC7q*H0EuCm}Uf$=b*O3Yo($U1`ijUgt}Y zyR76YAkR8R<0%Wv6da$T`v#8)KODf|Ocd8n@8Y$jOFRmE79H~+=$3i^!YTZo zzK0u6-WFp^#&&f`LPvZ%;=u^t<7v~+-a4^K$y(wkooTGTn$(_4A!a?sgBKWdEtkyS zB!YELcBhQC9zre{%w1*P`GS@Wcl&L}nWU;Y?IcjaXsC3?A--r91{ikr@$WA#xm;p3 zl&_${A7pgP4k}DnT6*IjnU#>z%gG%UCptSzgoU7LA#a#~NFvvRgs zR>v$26$9VyWyGK5DP)lFf3WjcP#Ln9qalKYvTi@rLQuR` zwav*tWwPXw1~f%1*V`pIFvdTxa;bH2Cu#Ys8qIxm@}H9w*nf-gz$Sh`s^#!jHfXCc zsp%07`})VYHy$k8O!et8h9B?THWM-&Vo}JZoOdJFDT7j^u3aRX?DX2BIAq&R!Ee3d zh|4*PiFg1Id%gdzI-OP`S7QOoprq}0=}6(R6nFeA%ql9@dXQw_rBZn{-BL5~AYQN} zQ-*`Cw2*VMqi0UhQM($H69mD|hn1s~PY}j^=eBRsTe8iu>PlahFfC^sDKRn+1@FfB zt=9!#u0(Ds!7g{ci*rpk1tA1Lewe;fme8O4bWYQNH;;v(&>_ozuJ2$*g&@RVL&T!u{1NB)Yu!C_?E>aqXqA^+aMzdN_$Sh|;>qZJrX@=v@!lc{^F(g?yy#Rj+_cycn^kxbrdg21BW#n7a5cP4zF0RnzL*;AA0RTkD7p^w$ zfPu6bRhfl0<^PN!ZR5!=iAxs|kNqDuEud-d_Pa=Joo0`Dws$F`+W4YMjwMbZ}97S<~@y zn9b7>GFS4q`=1_5R0&l^V~^44g)TQU)IWgZIiR&|;l5F$&C{oOcxs=`->v82H2BUi zdnx@&W8ab68=LeLvQ~0vSr1mTZ5ssrn5fF!sIHgows~({Xf#2Ol0eJ#$_y>_3P*dJY6pWH(aQThBksRy4iXFCe#1WBq{&=Ec}qQmI$DJ zd+=;6^whj5W@-@}t80?+KPX(_E4t}=IfD~Yf5K5}uzacZ@vZ&l4bx$!4?Kwa_n{zX z4qO|UxltawaLk~V%1-i$UnQHP%|2J)ztPr0GsL*!MSC$eBLYK6&6LOgKn(v4QvP3_ n^8Z)=MV9_QM|v+(}_y`0Ys literal 0 HcmV?d00001 diff --git a/blog/images/20240426-forward3.png b/blog/images/20240426-forward3.png new file mode 100644 index 0000000000000000000000000000000000000000..9cf97e8ae116e6847c18b38bd44da9c3dc8e16ab GIT binary patch literal 515052 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

  • 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

    p??vc=-p{0T)4dYv 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

    KMqe5P#j$E4fS_XCWtvHi(lK894#%nIrOWV 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 I&Ee7i0sQi;`~Uy| literal 0 HcmV?d00001 diff --git a/blog/images/20240426-profile1.png b/blog/images/20240426-profile1.png new file mode 100644 index 0000000000000000000000000000000000000000..f638b3b7bc1941d37caff218c3fd54b7e278add9 GIT binary patch literal 244040 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 z zP@|gGEAtt51Jj~?FH_6Y@D)a{N{?y$`2&&C_40jr6y9E`Qyys5-Q6X=oIIpr=gwW? zS5NmI>MIMG1~Ls~8kh(TaD3r7!*x8nu;Bv7A5OT?5F5o7hHA{!#+zfEj(Y)y`ipa> zQ)fHtryJ0#j8*cigsCOR%FkJ4zL0RXmVYmYOV39?`cZja(LIDOF!#c5`|7J-WOyD0 zC!b`CV2HuzcD;dyIA2mockjNvrVanjoP46WZ}eevaD3S8$00-g_|xm|@}OB;m}<_+ zO~*{uc5_AVxu&PH+dTNt@6Bzu-ex$<&$hhnw%g2UIL+MM-qM#25vw&@XO)?==&S?l z!^8U~;h-VPNBbi9mnC*au*l{;@>kyt*L{KgdIM z1y!#kBXN>QA}Qo63+*m-`yws>OYRfDV#y!j7Qwdl#t7QG7V%J$TU!= z1~{I`Oe)3~jx$_`#Bqn?4}dw;6ImLauJvySrbqIo*J{X z)F$Bs(8q85xL|M+j1yDb%8wI>++2aa@-*H#Db;9@=Qvz>>2~rMX6J`-kkOm^US@8b zbFEp^KHr>Bm}6GtXPTAy8UEiQ%$hH3pJhHa>rc!p7F=P+}it z*LT5=qAjI={K8GwQ~iQY8Td!Nb25~ND)9w{b+vXKljuW;pbmU7c@h)HogI_R zNvEEYp9wdbp5C4_@MZfHk5N*k>XIV~c%psGp73K^@TU!x(!T!H+U0~$X zPkzf5xHmZgYZdVDD4VNMmv4UK8-85^#ko4I)SE*JQMcU1bD)^bHzudpervHAn(eio zkLZ7dVUDs9h58^;U+f?e^P$f|I>35Z`opNdvFMAP+ff*sG`^nThDh zEae(cBp5E>*97jnPP^?*Z+fHor+@mgyfAQaW;4OQ5MdGM<}I>q_v0Hkn*-QYZZhr> zwmbE=ecM*prGsY0%GEj8Go{Vjc637B&j8{;*?mhMW!g@>jgv^dPPW zC9sc3my^zd7(clrb{vHcI;rNUXyJ4?B{1?yNAcCPi-FS~u7oXeI0Z7)4_`PK_*pG2 z@TOz<^{;eOj6W^sZpzTDyveiD4RSrt;8|&cbnhi&>Zf-a^0U@C(nfY?z>NP zl_n9N8+`8a@9^P4%#?4Dom{vcfEzS0pYkOKKC`^}aqki2LNhMe8cBRiu|R>M-0TYy z)+gf2&dbFxr#;6>s%D>iicfczHtaUHVZ%nVZtZE(9`rLmj7hMa+qao{*d6B7(@!&Z z{_-xmvpjdt@cz$3%JAa3sMt-WT|G8Qssdd!J$?F$-h5&2J&WhfT6+CozI*&-*Sspf z9-g)x* zP2mZ}HrR%Nn{Vy>G)H>ppMSpON9{iERs@#UeWax+I}P-_7>pWm%18e9+;flF-@l*i{OuCC zMKZZ@J4Gq?7K!S1iY!-}e3{_*#=yEow=XTNH_E18rHF-$I)IW`7xD3y0Opm_2#~nYBMo=H1IKuVh(U*>&?YQk84-4Q8&dwMOwmW#8qv4xOJ6D9d zr)3@fBBc!{$&K42v4hnUI17N@2NdmByrHqPm zyq>Nlx(96@?7)G7Z}vRp?Z5x~e{guz59Q#C1lHoS-_tW$?lC*~2A?(S?Jr3@viwW~ znFfxG26QaoRbRR}J`dpY`{>wcq7Xdo`FYQKo}6&alPr6Cr^qf_TvW#p9t-?YDoihN z{L})WgdgIE1L<>IcZ2_2L1wjbKBMUJN;p2HXrGS5Shd0O=K@n2&P?%HL;v8AEGnj6 zJ?!B5$Bc?X4=Tv#GmUl$?G^H~8%AiI12~_&Mzlz;njhjxBhhYx!Mcv2O?6|1P+fdn zBX$z&zGcg1v1xd)AGavxc7J@<))m0h9*|V9FLV5wj=c1Ma^K4U`j3EXZz2tir$7IE zs0z01^L#1e+O=!&WkBt^3cxxuI3dZG$LBuxxoF!lbIr?MAMyCw605v0`Ou;i4sl z!-o$^C20V%;`}Vn?S1y{JAltAhlLY6W-9^*1RCYM={QSl-vHw&i)pG(!DO%ZTReC| zZoJ%$8RXhY6Idae+=hlRlTfFu_QgaiX|L3I39}cYBkX6EpbsZWD-WB-Pr9NhIY>pA zVakO#7gpH%TZ3I@J^&Ck%2^rW#NN21E!6DQN?TF_+LAN;FbxNM=K;Bfh^&G5rFkRpdUX2U0lvQ^GsPKPFJB1fA}N#JpH8f z@%8K1%Zv$US{`}qQL|(Fc7GQHLC$_M4P+X4N@{>RR;^gELXKeP;``OBSDD3_kXnF~ zH0R?)$S$l0;u;^W1ER|c#~K}5e1*vP;|)%XbFk9j$2o3u3J1aSEw%#}2P@_(KH>sI zW3w!iVZ1VsujOr-FrUVx9lVi;|GNH55I`s}#BGj@l@5Q|l9#r4Qn0L1TCe;h2xKd& z)I;Rw#GcUPk5?F5f8rz5!XIFKCh`jc5y*#amKLZx8k0208Q8W3$kvXv1D?9m(ETzC z%NIVh6(^Civxm#yahvLD;K%_wF{c=FB!HoOE*eu3!F=U+OOzu!ebBuWL{ei#Cyl zxxCh5E4cHE?FF-H%^EWut9-Y??cxwVK@_odpBT!h{LWpw;bcDqLt?K;)vDQYZmmPV zx{rSJf6I}w@}?^{Qk>4%x#T}OwMGc%-&Ju)>3JX%9>9{owKuxuL{16;yqus`aZ@DW zX}(uKPZt=jy!(rT0YoliKv4F)YxO2Yl$<4KITDOYzDHJ2ICwE1HBIC{J8f zt|)&N*x4BlOeH)V@Ztm@&fctqe<2^jypL$SbCBjr{KJP1%couI-h%w`G5Hi~XJE+5 za+6>FP}ItVSAYu&`JfQJFsW&YI%QgASAib9!$fkVPgyZ+lsF=X3WKXgMK~rHTqK+0 z>x^X{8Y7+wAwcZo8u&m9)hEP9p#pe5bbNfUpakT}h#wa;rZfcjl*6X%uT-@Ld|!TH z!Wwxry|m?T6Cw{-SMahxq8E|On|ui52firKtCLa)vIWiK?DqlXC*)CR%PETn=2+QO zCefk?Qg(D|p@^sW%1v`z{ec?5L}b)OxZuZP_!>hxoTF(X3qKGLI^-%uz{8>-CyYzU zY>ohW{5=?777vI-C7|4bBPATYt1VTXE2s~`451O=i(L32IgX!P5XYH58Ymr@MeM>? z$VoW(hF8gliyLQ|IeX06Q_jAQjtFZg02&0_!g$8u4U2Z6Y)9n#G5wc>O7CT*tsIX0Y#9}; zvi>OX<&W^U9naGAeg)L4m%hxn0Ma!aShgqa8U}6K5)5n+&x7-7U{gp)ngEP@^-{X} ztnpASP>_g?sh@d>Pe=mMV1OG26i8+R8izD6~lFP5WX$8qPjcfb4HvUMWuyJmvg zn%l6@6Q|Le%{btaYu{v262h>27dF+HzhI$RwR&}7Dh_MfH!yS|4uP76UF5h)zo*G& zq^QK5D8pQYg}>O;&d!dt)35+!<*HTrVp|7J``jY;I;*3d>M?Ba-U&lv!-fr#7uO*x zMNiMMv%MDPqKht)0gG=z93;ZQ_7e9uxVez4JtmBlkaF7yao|cvLuFZ#9MVgZ@wB8? zd<$n~BCa#oAZ3Ra4&GX6zynxPdZxF{5A5YWHykmqd!R@&yk<~J`53HG8WdKLyZcMYT5MyCC?>^^!TtY z;LtAaRX=_DG|&iKS1k4HH`73-fv1`V_^jlged)Fb$c>J{1rfHIJasr;V0@5&G7P1S zzjhQ&AOGzT6hD4t_@edH=cl7Twv8C)(OxM9(M(D65fBY(kZXPvB$P(NPfOfOX{K#L zOG>PDw?H{WuNFq_2j__;fYMj+qq6fVc_>xt1k^bDpMB;ll#r2rP8S{8a~f#pabl{` zzQs%<|6FCz|fgfrgY6-v}j4WZ`pD)GB#{>V1I49u*3RD@z8;7J6Q2?yq#Dd zD;m(v2Cm%Y+td}8Um*(`IBO8?z?Mf`r$U}&^M{>7uhpco9ZC6Uw+cFJHT+u3MYvjl zEu5ePgR-Tdl0_x8rCM_m@NX*U!p(Q%gj2)U#@(BZIZW4&FVa|%gn|%?{Alsf;veoO zlty*x=|BZ+p#H3Ch5nHtT)YB(Kx1AV_mOP}M}&yBvSg-#OasTi1~3BH|Dmebm-5Jn zZloFv2N3uQmv_M}j#D;T1V~6<1ttZo28_mMsFM z5QA`~9>rwWzWx1XA+}BA3_XqZ{{7gd_}~E?Hnbquw`^JIz6T$M3EOrK>{J@&6A~uM zFqdZN>}tC>kGCHvvNU_noVNab`>{hxzf_inI6u4X*s&8UkIS+(4QogPqZNVM4{_D* zRaajnr)tSofS5&04&gzCaJEAszb27v&(i_O#}|f9uaxwW|Dgo(7K*DYjmDz`HYE(o zmGHdf@$n2_ z`*Xa0s^zBZFTIqs(;?DIZCM&bI`xUc*W2G8BfQZ<^I2z&H#h!}PI&wY(`G8rj`9q{ zJiYK$8`kcHMwlTXPCI^~0>xgHW^7@VOtFCh<8r4=oMiOvpENQ2=Z{j*YbE2j66RU? zoze(D%EHOpsn{m+s;jOR!(8pWN-nkM=!`pe#Oa+n9j?{8u#Mn+9Btufey!;YzgA7f!=>v_OXKc8OHU!vsmI}4%;OjT>0bXM-+tOx#H>J51uki!CmC)od0`R|6Rhjj ztrMcO^EkoVOwh?-Zad8bE+2b*gUrm+O-9Nf!cJ_aP{dy6%a*UmO~#(;ot^EcW6M#V z!pKGn3)ze?9_~aK=0X|^FXy$j<=4)dJ)8St!UHxBU!9#$s;vVn&AmW(?A(o7mEm>* z7Z(`Rs-$M>)`f*IyYSY-BjcAZTP~j@ly5yMq{i*70huMD*RXWzlV@SwGHoxtx@FD8 zT}~;qscTQ)K8Aq%shWfcLz6%_Crl)%O!G7ROn=%J!ac{PlFBsyX!V~sS>y6l&bYE# z@{TrsEi$ITG%J4^Z7oaVkyNJnN2~uFDgLUX;HsQ$PPO_6cpA&_RTI3{uRn{eS`6be zmyc+fFq4FZw!egRLp1G{wLVU9tke{c^!4iUvXhc-PBd<5M02aBEnXO#b{ySVmM>p! zuDtR}vGX{w+f1O%N#njBJF{@Jif!9=!rNlNo6w~XdYjq1XE*G~5!$l3`Pl6Uw(6o? zyZRSz?U=v#nh8tT76MhKqYh5Cm!WDI3JzQ#98YbsLgi9Jr#d8U0 zvE0J=ztDM5|7!RFCB`bDD{}&jq%t?(jR%-EmQ?2EyYUP^tbrumxcP28j2+k7mF@C$ z#EWL^1b@=eCJ-jh;PcZmw_XGMxHU zDi#W*XL*!bZb!GAAOsaHqEc&NnBxs&NofYQEj)B+01ov1b{iT1(FpH{ll{=ph@5uC z3hLH1j5iucSKVROo_@M4G*zVsCUnryX?%Pr_76?q%FdyI-4I<=lKidgmMjY31#m)t zz)RUd7=06`%$hx+>@(t-1~Ls~8pt$|X&}=;T^bOxf)DA~2elT&7S_e5R$!k~g8f5V zhks$q!pEwWO(I-Cmt2BCdycc%r^CKupuN}Zq^{bC`*8v-cQ)GvPYxdVM7xPQo^eBx zer#021G<*2SYB=~V9Vl39jAFxg$497o4HJcVJ=(86g!Kjb#%0wMT-}Ue>snrr4zj> zkc!~ySI%bd^N!!DA>mMfLTzy%_^9piLg zVO+YQ7HS&TqZ33Ld$&LU|NQ~kQjZB0s@cAo;WyVjnf{Kh{+i>SVK=LRr+fcT*Wc4! zJ4d_z>8%r#dQWhh5lS#CT8jz*z{KTQa_PTO+7?>u29Q(}htwGl*+1!on=7SQz9C~t z(O9OT%+o(lKKW#^_h|Pu6V&$H4qtMfroIh(m($CGytHiJ-aR-wpvc3!@{=)Rk3%vq zxcK6W>EKSAw^7B%irs3%T-uFJ@tqyT)swMh;ev$=bKJk2K04eBk`-mpg`YHL!L~q(aulwVB@j?# zwc`0ghvaWc!X$l>VNzKw3^V*pf5&tGsilu+FcYVNr~CMku33E?q(dc_X86gvX=RBR zy-JY7VMy_Af^m1e)G|fVv=Xa!jfc0UO|tzHmZ2Jt2FgVMx1LZ5^5|Vb`|h&KFB76_ z_cg#lP-uJ7&wL+t4&*_7`*0HdAP&9cY&ioDa^$Wpa!ac`E`JelnbO_E~Z| zBAxl!xx-ECa&kLlJXF-AcQIT_Xc=u$q7A{EhoYSbKmDR#I!>>h4$uODz zl66x{NwfN^g+~T6aT;j0{f>A1iPLOG`N(L1cBsrwr*=gxJ%`JxtpTUISziCeq< zQ;l{b<&HdBZIGdx31`XAI`b?cs&-!^927?^-87#i(d8#yp=0A3%% zX2#4}xq0*FmtmOq96B^){b}q$LrSXYYiq3GKnzhGD!3T?mrt29cdnT|Yql948OGbj zKJoYFF~M!{J*OMX02Y4oa{)suX3P1;bNJ99p|^BNpZyFW#37c~zD_fftH1_7PRj?G zUd)AMT>o6aG<+AXg>m}XXz-#=PWXizaBeLWExTqK$TW~?Ak)B8UjxmK{~7+o_YoTB z@(gz$5Io|<$Rt6Igs9ELgHLiX+5hgtJcd@eXF^=gG-&NnD-4u8P~ z7r+l_u^ELQlDq|p%Cwp7l}sUt{E7gfnC7@wSMQ8-DJkD2U3xD3k%)u86~$-fO6g}h z5w|>$+yX??4q6t?G>~Z^(?F(y<6HyHj{h0{k?R1eYk9_#ZR`V@P_YFq7F4AnS;qCR zao*K1eU2J&5nw2D+r%Y{7mK~OYv)c`wAoCh)iCex@0a@Z!!Qr*QtQ{womslNdJMNr zY-=xoXK}U1({BCOi~tU9s||A@T`W#oTz~`1!bOY5ySsa2_Z4-dCjb?&7rs25ogGrf zyg&g=H5Mjy+WjoK`FszKR4wBGBWY7MD0;VTS8Zk6we*)9gA(QM_5{rfuB2#yrPb)Q)rPt3$bwG_YbJGentAi)=iA%b4R>Ub_JwjeYt9w5yZ3N~Ydbb` zZ{5Pr?w)SZ!&zsYMTN;?Q^|n3sIjot+%C|l`l8-fadg650|@e0sazO09za*bLLM8!Sw2bX-0-0?cKhL7*RFp)i2bHOn-rreB}fYRg+%* z63xi;_w?2uJB0QHzjM?OadF&u4X70$&Ei)O%rYii1GTpqA;mV8NJKCWKQ)Cob!=X6hnUjk{db7I*Vp0^Cf5cHY@oPsq@X%|@CDoE)Y>zQ5ldG_-rqKCxBB>jGuE z0F?Lo>^XCCz1V1^y}dAR%9JTno8cRW+e*Wn`YX#Zr8#pJgf+A0&Vg=mkPr;>92a+@ za;zj5ejYkB$X6b$ad4`|qPx}n} zgvQY?q<^sEcp>XQRuS3#GjZdGXqX)@+WEXb=$C7naN1|xyn65zFS{On4QSif(|$TI zQTjBzpmvE+%DyTomuEn?G8XNd3ZeLkk|+azlawzA=NI%>LB z*Ou1D1J06RnD|R5{MFsrWIfFwcbcGORQwgQ&^^@ zP&2$VlM(re4};3y43;MMN0r4MQs$BH<8U1!c`gPK78!n~zpVdc_m2z)GA11H@k6Z# zZ>X}?geQ-m$20>6FE=nhn#XiK_)&UpIxQaML0FYD4NuE5{CIse+J4b~pn8tEx-8HP z@)-8OB<_~Spxdl!ZC$NAk#LI&Sh0YV+}A-;VjTBq=gpZjN77rjZWS+#2v}W7b*ZN7 z^}wOSWOYXc-prPd=9|AkbDangJB*l{A}KDo}V;EMn=pfmt11zVmBB$MbzuD z)w{gY141gQj%mROR}D7cQE?-YNKkA^$}cmuz>Djwmjjg^ReVBeT(6qv(e?>N%foPi z{9&WWN0$io;nMZul-~ygzLT=605~g-e4w+;8XZ88dIOXHeF7PNra!+kpljGZm-V0Q z{yAdfhYUt`T=IuC8Tk^%KRc>9pzOav9}WtV@x$uNprV@F@%1OhdKyW4Xe+x>Nk*Yw-N5>p^dC6jlcNngiUp_KnWej@ zCkJoH=t=sjIs?H-t^v>AK<@Sh$h-iGVIF zhww(ipvtIE^e}WMeA*dKJn2Nce>vS|B!?YPMPr zahp^a<;}Fm8&SqI2tE=tL<8wEe5;>Ke}2Ew-jVg6?EcZggX4xbRJ3yZ;AmvWDEvmo zKYjW*BKT2@<0rjHG*`#AC|pvS_)3FU;wz14JdQ?&-@N`*-_)-gkJGo7>opE0IgeQU z(-v1qKkbs$xFQL#o2l4G;;MX=S2V5p!BxbTAJi@aPTP^Y@tt_$iGrYZV1V6NY+zu( za4~5={mtQWt@bNt&JPV7GTdkcGxg&f0dT_oLXS&Cy2f}DtCfbiNP)e?=e4)z&CFRd z%bgvam=(wDINoHqMIr+$MpqVAmRl$?w8Ajg6}cy@IYB;W@PsA_7?H!;3a2bkt-r*r z7vI9WSd8-ql05b`x3C8KA@Eqy2~iy?jH>YQxLQga#>4WvI4)$EgQnsj^nvNht#I~A zjy7n%rg_cq)kp}mqp?hX>>*kIp%xglU)YrW&F-K2?;p{ljNgo@R`u#?x0bl#>9rOd z7e?`T)wo+;Ev`5je)IaPrfV&yt~o9RW0RKDdUackR5VR|X-Q?lj0#q6Aps^jR7eMg z)$1NW06$2Gu-uuY9lNBQaDv@VTVw2ff=^ z9GRGjLL!|+!~;z&PAGJ;Cq{nDz+sb8FO|Rr$?&O-On+{lh{jbrS^tS@MthEGsIr_n zTAJz4)sH)V%NXt!I&sxr8jJ&;992TG5UGV0BNZgIFvF(?YEY3?RKjlsJ~Q+$0VisW zCV;u5-FS$6sDOl&cSS)wmm0w;kv+r;{ECbURR5ld8G7h>(N<^^yN`&p19f)0f=~?^ zG|cI;vIpnvP_q91gJyJu=iyjnPB7CIn>=P<4P{qXH@s|ft31-OD`5?6s)Dp?#++hX z!#r15#;p>2r%uhcHlHCaHARiU5CZ18CRvG3(m%_mspWls5-=|FF){Z$d$hQmpvx8O+t}G=O z>qDjl1D!z)c1bk&L*stu&Rv2%4acRDhjc>WtbM&D`tl^Kg_Z}Spb7m?i>G7s;2T zBFB|!UK&hVS%z;lkfx)wvX<)4WyH9fRz~i%TDc1wPz#LPaCrcsy!9G|bJNviaLe7e zOC#y7aADHpv>!RyOS_L@Cr$uW?}>EGFF^#%1ufJ#ZIL$&TYTBW|C!-C->&2 zkZ*Z>2B_K7EtARCRnk(!90v#Wfcj;1cp^%1oSay4A~O51_G2K(&E(;0b}X`+sen<29&KMW z3a3}nAdZ{XJYFS4iE6&Bqu?q&KpT=jAeqH74P+X~G;myKK*w)hWeDW>2g!9flzb-q z3|sD}SxXmzaW{ClHILsJzNeOi{D;Ez84^Q`aYNeVHp=FCdMHu+r%z)gOFrRFCx_e9s4a_|sAA#s?n<#f`}yPq*3JK>lVa zCE-sjhl!=0RHx%9|7dHdS^gP*bG_|o>n|+5NTY+HUOf<*tU#V*15mbhWSSZL)2ax7 zm*?S1F>w%)V#4x|X=d;*!-oiMU8yV^I7_dT3hgQv)i!i9fY}BNiGv?STQD()5VVLtMQ&y0^ zJ3~XmW*C*i?79fAN@%7gx_6~r_=!cJdgnDmv~FB&k4OjevSrY$fu@KKI3M1@R}S%H zf>Pqj9|7a=15hF5!!iZ&6<-Ryp8$pRi`3BpY+QbaNNO~hcN$tCe;QORWl8+WA*rku zy6G^jlRur$#FsX!qa^%^)qkLuiQ?a^{26|8_g}O6^LmKaJvfFkM6Yh1-;+F8K|rRC zzmo0H@xlCvU<6}5lNtVTtv@!c_8EDcMB3W6cw@glDMZ-!_^eJ3A`L*?t6+L)8rO17 zD^=z*Br$T~71m-zf2~g9>2M8W!C3&>jvZ5)32Kva5}AhhAg-z_rs>AQS##K(xhYep zl?phU2a~~l9?$fO)F@c140B1+`5;rvctpt zL|_f`8s$s{(>J7f^XB=BNx?A{r}c%(kL{vy%cY){Vh7Ytpfc8m@9`vl75*W50Lli>gjmsY*lafg0or2WDqBQ<#Wi1rpxF*%Cj?(bc%37tgG#+VXweZjI zYtd3N%+b~#B!dX)<7Xf}rR8`T3NiRGAOQ;DgH$a44Bu5yzCVw3Kk<6>VHb+vr>bxdY{#uDA z!MXWvyn3}Pgp1?GYsJstG7TI98gR$Idd0EhZ-C{F%|UKB=E7w7;pbPNo9KYTw9N}( zJk!r{AqmQA!M9e2+x`K5xXs*D027#=lE)t*=0OC2E_y@pbW(Apad~9z>P2Dn+K^}o zNG_i+2yI9%_~Z$o4DIc$@i7-SY*d9l<}$G?)ba8Jespu;EIk&0ip|;9mdExitqU!k zF~`9|*ovhLVJDZ1FwD8lObO2OYMAq_gP#Qo`GOejt*8cR>nhyYGiQ0*+O&dly)@Vv zBOTI9Msn*V9D+}#WlP-O5MoS%Z}#!@+*~&vL*zKiI^JtDq4HNFu47{ooSW~)YwaU0 zjvKEPKZ9#R14mooN1J~Ws%sEcZzn~MrZqq5N_bam8NO=D)k;zxzp2Z9aSGs=nDyZM z=nj66mllh*Uli7tLL>DyaFk#q?ekZ<$|nMso+OeINQX==^(9FLL0btI=cS3jd~abs zZ9v^JF%SDvZO#;eRg1XQH^X7fnDg8n2B8avzG2?mgOfjtCRZrv;!hD%fSdSfsbQWg zw9RNM5>-hAu6w2y7T#>^Z3`ZpWG$^dxVk%}Nu) z2U)h}&C;$NKSl~c=0^O{KNdvcqv=YB+GTnAKpyEdDI6(jxnA8o#%m2q zQ?F_KtI>32sRkQY-Yk9`&FXnkuF-Tg3Q_oII>S%bfYn!^wICM7iyP#EJ3*n7@f9L` zCA{`}EpgNS#2GVNVxuS*d-eI(E4WWarEQpiM@c2AfsQPU^##D}b%4`_#h46syX+u8 zfUYejv*XbB!2<`du(T}eBE^*j=xh^)k&$6pJK5FMlk?U%&aox-JRdLK@TIvq{|H;W ze@>%ejvZOb`2x3<83Y7s;^~M6^udDz@^&+D@SwbXPzlWhp2Wnr7luw8Y!nWpoz_4s z1B}Sv#lr-uq?C3NAAa`mNO%!VMhQ2<-L0FvPr5`zG&?JRrZ63B>F8@1UIOt!LkxDR zi70{=60R~QC}x?~$c+aOwZ~k1H=ahpg-eR3;k#vx;46-{zv{xJTWeft5#EhYFg{sH zaCy3MEl;?{;mbp$7G1D^DxAyHjVJI8$y`PMN=~mnNjD=cP6XxQBO^i_4KBXs@rryc z(yL$03=I{9UIFs8NUw_0G=HBEA|$TCjU!L_vR$RQv|O*mQy`_GSLADvUbQH6WuXR* zdpZ|9#4GSML)%7#QzF4t!Sw2vXhyU6B&f7};#uS=qXD+<#Dpm2P})oQx1IDc%Ax(7 z0CDl!WmSH@ee05}N=C7(04hzr#)501UMqp5gg*>YZJUsMq}Bc#=DJ3C23gQXez{S} zD2$_V9x?=a+>#MlmN6L8$DH>(c4o zJqG^fVlaz6iXSS9M)+aOl(W)(@Ll?PODNBUH3?#oIkbPTH0BtL zWxhOck9WG3kR~>GgtjaVW{o4ya>Eukh_OUGoDh+|h&1ykH#<7xc|`Kq{iY4RR_*90 z-BYHR-uZLQZx2p0Uw$BGzOfBZG|IKFk|~Vy*Ul@O*Pl3Up0N;efa#bnJ{GEgNe$#I zmGGdVX+^GEb(a zUm_(CNScW~Aqp{pfP}`KQEIj>_hYcxBmW^Rk z6IyAVle%Q49$8(xckkwQFvpZ(E?R`Z-Q23C6K@d=^uys+i5h5_yW1pc<+Z$#t1kRp zwQ99B%*BwdLdh4&Yg`Z94$o+AdAK8!z09_}bM=7bB0a=r0F)cu7jW274)xsp+y62T z-gcYW{G*?ky+8Yj*u*^Rly)(VZ2ob>NOI`GA2r4nWjSqT=ChnFO<3ZR8_W4N#jC<1 zDsj%r6PL7D_TUY-n}1#OEEweDW+wXS6nOebl~6`C_2cjBPvp$kHxXXu$=KYI4@s|q9`F800|u1$5Q04_My--l5j#x5RhQdxL%pp z0{%W-avE)3t4m!%in6yvZ|;5P%shCrz5i3Ecw-zW&2zH$Oco(U!q^;b3L6d2#VT=5P;CDseb0)BFtI zYD#*hqZgZ7{a5v}*Q{P$zW@IFu*+f8Z`XycJx-gIv*qrLIc*La>Kui* zmw9JLC+u8PY|FRvZQxMt)RQ4wF=OtiwA|g%F^Mzg!jb!!TaB{;cw*9+DWQ_hy05s^ z(FT|~V+P(_I>aZ)mTPM}(2!Jx<&`N5#a{+Zdw@1GisalSmWqI(UTt_wJG^tJx$}#E zZ|;5n4U$cW!qoYuXL8Y$+qqgeZ^mi(qo4;mX~UK~18q5T2(B;v*b#F8eT7x=CA)JZ+4I5%m>dcnJyH7joe5msxf$k1)6b3HyTG4a|KdB zEDW_S4_ZmuN39sz4rj%4ucT%<0UHPwr#5_x*gStLqSVN#vnK;{z{1MtUA=U({3in6 z%4&7uG?_2I(;W884G~yJK!}MXbxX%*sp`XRKQ>-1{G<3HfKarO*fgN)M;jkfCF<`;$X|`Wy}v|AQ6O89L0ctFf8qAGc#YxvW0nl6 z%G*-3znZ64=DKkgR%KwG?Ug~Pi{r)v2#cfXrwhL7!quJXfMu>8qA+fGw2U;gTB_<*Q%2ANrfU2LMn%U z)%)MiK=m4EGJ1&H>>6h-`-Y~8D{=g&F`IBl2tc8)hVkA206+jqL_t(oGy_|=nVa8s zt$Fx+-!oH|FEd3n=ve=d8H3MLX<((SjW5=3ON5O1E-`NhM`|(1r*;42-TZa#s zfpN@}W4j+%@A!kM4IgnzG9S9Uux-Sg-c~kK@EIi!I6fF?K#M-v4|^8C`hLXR{la(a4A$%ZX72ufSr!#(%uHAe$uIke~y=uN*HQ#SsEr_`i)@{FNJO(9_ClDMm*u_6FjCyEi=sTzWeSr zO!!Zxk2(LS&@nO0*|1i*+zXO1zoBCUsy9nrS?FIL806%lx^Wwt%)O!zBMaj~x^Zu0 z4{&XDJPI(laO%_ue93SB>%TS|VU*8YxzgmeY?2p+9H+LqmpcsU&U}{{oz!7A;I-v< zxuUrz*J%pV=bIHX=9|L4J*I8XR?~|z&Z3(Vyvy_OM91RM+*q4AJgM7!r*zOfRvIvC z+k4C$^u2Z%>0RX!(=&R=jDp_yo=s-=s`Jcu*S*LT@g&>@Me{|Zmhd?0G#&4IufI2M zp0TKGmSJJ&2rTyiUFn1>A0e$U@!2fZ8&M%FeT(N}yKxJvIpGF8+W4+)Dk1aSxC;|> zA}?0}Ewqc{#*YTR<>~&aM78PP#cV|WTJc@lDq$rqbF{QJ`4u{zR(x(FI4-595M>!b;!ZU8-Exar z|JARUDXUhQ()#sqYr(8Ho=D?xN$JKzr_?#cY%WeR_hT0O2hfc%T`+#%ARsi>O!lyybWkoy{oA>-67RPKI zFy_gFcw!ErfMW_3g0ZHpqip72fz6W1WrO(&Q)Dr|)TtYt_S8!KRptcRu8f7Dm1-qi zQcg8|JXWNx#AlrKBTj5cEbyQ`{8(IOKGpFPEAACktN(=JI}IJ;L!sDk(GZsxg{d*E z^~N=oDhn01f;0+wQ>F%%TMi*eP3YC7L9%W-5@(sE7%4zf%3QGs=o1SiDv{kB%K(N| zj(c>sEYL9LA(^^1(i-esY|5GR5>6RyhldC@`Y4YV^Cir@wkWjBFo%B)#$$d-D2lMG zkW@xSDl6^SD7Kw}QOYs~eJio0js3cYId>&d#l=x$nKjpQ#5w+`pb-tmH&ja8THRUlF^!P`E9E~kL=``>uOE+9!@@?1(2)(x-IXl|sntQO%=1Ygh%(*Ck zbm2)-fkuvRq8~aRnE$agXI^{)UO2$e-Xp37UL!$^BH5aBivz94&{2e#Ykkm_1Ty?e zoz#<)>8~DbRl+_U^d~Rgs5%XDerdaRdrn^PZ+bFkescg{?>LXekIWqUIS_EpfCCH+ z@{3`dKOeh8U4$=nC(psj(a2K+oko78{wi}oEiu#wT}h@EeAhU)VM~e3-?|&Hs!stF&0yD`b?bLdtA$w(<0OpK2{_Js`HQ=OysBOxb@j}7c zvO4igS;b&S87F0F^TIGMfVW*-8K^CdMQT~g4D-Rk!2*PBqmXS7mV%FC`k&kQG1$u3 zDOjy^s$?}5hFw{z%@ErebDhPn#=`GovAvQV5r#RoC*1Y$dNXkE?@ag7Wv0C835>Bno$_ic^KqH_?2_=9Ns8^9zxe@Gh^)CczU%# zVI_Wb;9lr>dgbwUmcuN1sf@Qbbd+{r8iC5f=ixp)e*0nMqIPKZV)1oB{B_U8aVznz*+JlUg$Zx z|7J_hd==ZXegR+IOKv!x9OFU9ISzO-*5N8cxhuC<4_>59>m?Z;APH&OC+d}X@KUUBEK+#J zHJ{gG4WIJG2CrhVWwm4;DSTC~@>2zCI!RW=Q}`sfgnXcBpYorh9!a4{_Db5zm$c^j zWVO&m@Cz#!|zzBn8_(A)G zHB(zE(_f~)xO-QOa*RXUU|jzLc6PeqAwbdSW`}{tw{XtFHq5Mle;fbu<~56rdC%D;vj*qs!2?pp)HwdN^}_hAnyUivx?0XdP)aZiGl~& z@I>*uHs{UdzbKeLTTnKCcJ7$z!V5az!wKgG!bkJ`v{%S9qrUu%SA$Bo6FrH-lQ9_+Ak9}Mvs`8F8U-~~d|!M;NWP21jWX7-GE zX5Re8W^&JTxUdYGJ^P+8k8IzF-pzTXefZK$*EN6C6B5@KEz1Hz8}g3S73E|2=L z^_FS`)8b_O8`m8%GyOgF^v8Rht}FM#sD9y3^JX)LD>gJ-Q~rKU*<7-$Y!*%_%WRs| z9`OD{m(Nn^6lHVi8e^`*=LX~pjhQYy%N+Tm<0mJ1q}&B^!4Dx24D?M+RP_l!83iea}b&Y05ypKme@oRe|+`aEQmi}G|KgGTmoyhs#_*<{Chj_%lL_zk0oM&t}PR=#2f zmZI5&wE(vdW8-^hc@)#owXG=DX9h6hU<`*F%ayn1%|9M4n>XSBG;#X_$}!zq5U$$z7m}aw zew`3QUv%+9u%7NhdB+&Oe5tk7@Y~!I`#8RYH14-nWls!RGF;gxK1(%^IE@9NpkzRT z{f6!&e0E#%jyw{@53f~&;(5T}F^(@>*iS;9>zH>mJMgt@8D6@-e?iGy{htN%rsY^4 zGMlr=LCvbN0e~aE1xJQ(Wr0LI8KkrV+NWU0aG5dJ<#jHirQN_U7kE;yqu3tN3WRaV zdtT7Zh4yDVXD2Xmimk92X-Q~>VJ<2xjEod<7E+#WEP41{mr)@xz)=aUh#KPhd7u?F zP}-cS=ixmJ@$GUlJwus3a<7I1m%%485Z0_4KWN!NX4)eVSHlcjJSulU9>_=XB@*z{|J2@<5jj3s< z-+u6T-hBFZavyrOU3Fv^MB+|{6Rl1tgUB>chX#1>>6qf8q1W0mC#CZhWDh@!l|;v- znZ*MQsQb#V;75MZkGKW~k0lrb|M&c|xoR~|KSo-OaT?tmL!wO)O>=Cc=i_vI4F1D2 z#?9$-bLJe(!gK!X4}Xa<6%WAIoytX6ARa{yL^~#8@ndH6Sra@|g6gp6Ce^Ri_+(^h zHpagW{Gh7NLzVbXwGe1By=H`qwr4s#P zJ|Pb8$!I$$$tzKv zoZ`V-VVDbL?7)Kg{9KMgQdpfaXQ5V-S5~sjk-bGh4fBF1M~NnMe12ymYp>@d&a8W6 zl#28g;t8&I^}7&^10486MYaKei#H2+ZQY99Q*IwFm|om1T(DWjR}Rvne>v_K37lZ( zVM92R2}b#P^N}l0Gnbq>*Nl%2nMV&`k>~gj%zB(I1;k=Uo9PAI^q!)b+nY0I%%5Z~ zIdz(O&6C6CtH0P{esKQ|Gaq-+-aEc(N~b>8x^-p&*M%sz8IPL(}zMGkmMldiAF8PgnivctV#sy066r&Sr4$*`#vpB4sBI(4+Zc z%n5~h^;s``R89;PxIOuD5!9ichg#G8AyB|MDqVb9jB*TikM7Bt^Dvvu2RC+fH9vpO zxVdl%&#thWuZTe&Pr}c2zE8A{$dSd5YFej{YL%kZ_|zX?1RCXE9iI}Dy5Gqp5!XPq$`FUkyyFpH+tb%l zQsol!wbmR*Foc=g9?P3+ev>!*vE?!LlHeq6jX`DcDFP39{K5|d|MjPgn`h%oSQ{qm z#3;WV%s_kXEp6uR%Sz_i%S(6>$9AZ78s*9@UC1Q;XwMB%K_bsr_m%~^tmHA_OMBK0 zoLr_$HlHuFd2?t4Y?g6M&6tb4c(}EXmB+=Eg@*YUUe^Kx+%`NN=ou?TD(P0Z-neg= zgQpn%Xd3%)vphreqz!|7Hf_{6cbl0VULTb5>|`PT{9ro=zYYjhOdVkdcQjNdb{)WW zhT}yugNrqR!&!2gNYdh-)u(jxyh6+ zd=)5DTnZf2*%v($Sq6}Ya5I1H>~ZX`Zg)eFx@&zYcZ8CqAEq9KiLePJGyF=OX8H^F zr%;DMf&(PKjxp@nv&TI6&_iYjYdZ!84sjullr3Di&@5lRT;kla)t?Xm4tI&-@yhRf z=R3`B|LeDA>(;I2`gdM$-ul+JqA_SB2lu=%N%?8E|6<5Oz?U@7F_(k=vE2TYji1T~ zU>N`9U5H@3z;3SQM;BS69LsHFe527^ONi4ShbpQC8&{d-)63>ZmyDZLw;~6h&Yyc{ z-aJ0NWR_xmyYAK!)mJo~CPy6qBahD~KoIKZe>Cy!^OMqR9bEZ&FZl&Q6`hy@D7I5n zQ}lSpXC+yO#sam*7iFGr^FP?)_yu$+Va{L$Ky>BgA@cWfw_XTfcy4=?5$QT7t>n9 z5W&^8--rYI4>RU;FKAtmX9v`(lR+}Tfjs**PqEKolH5*4qy8l@0Ts#}+oBqHWbEez(zje~wi{=e{P!?;2@h&ECsgbt038yY zv=MOO!T_c?TaFzq&0u?nc@PH)aXP7ty~z2l1$!MO7KdrNys$Hs;7Hj9!~QVJK6Bf8 z#m@H1-k;$1S$Fl>AfW(A&rni>Pzz4|NA|6 z&iwAoZ+_+de)EzSxi@*gx#gU5&;8EKoik_7+}S2)95h*u!4>KVyl}A#Ry_F7vD47k zV!8YeB6F_4TwWcwyR4XfFzz3@!^TJrO(OP7tV)HY3@E|=o7`ZRsIY;>izY5H`z6ra_n>C(LHk4ydF9F7PMf6;_qSQmoFbjFIMqfM485K@+)oA^yzZoFNc6b zi@$bVF#Plq9~Vl=FoII;mFjnPevXf0aCSkZ(WcwU#q(erF7H2o4krw@lVJ<|a$cA0 z3!|AvyCQ@i+dt(^ucRKN z{iPKxQ%=(-%38orNu>++TQt5N*q+WPRU*gWj|oK% zlRz@Yy$2W9S3vL-mM|QQ^@KWma5X_F3r%;PC^X)?@JC~rH!lNQ@i!2baKk_uiKQkd zj~ysu1~$sDwl>gg#S&v(2w!QI(F|c3IZ&pIqZvI$uDYvT-gEWi@`39Y$}gY73NW}) zeD5)nXs3pmlfctDR_ zerUH0!sDy7T@EsLW@D2Yx;AD15Ur2`0{I}o_f_aApFe-TyyeYrkqa)kK%Rd3X_+={ zT2TkAyXKl}n-5`p(#c%nv$UnsW3kQhq^3aiO~%bNr`67IY2J{dfC zu$+6|d2;5NZ;|E8mutPRXa2p{CXvwbBE1}s$>0ANW&!+v;{=g&@tB*j;lzzJoa6HP z5?0R5Za>V;Z3)Lb} zxv%n)b~Jx^?fR-!4Rf3$kFLQUfPwrUI8P44`O*RhEy%jrJPPR{XJ)=gXg_ zcC=%xSm@WQarz`GG76@1q<2J-D3Jt7>+nNQIF4Bu=XenSM(}1F8>>49$tc8`Z)?Vd z3s)*EYYswq?V@;6#v~1F1>M@E6eVLuO~wf`P!2kDnygyALGJzABQj~ibXniNS+;C} zQG$;XZQhF4YZ3O++B{Uoj(|bmG(zrpvIBn)%SVnJCm(zBUUKFUyU364e?YcuoFuJZ zohMDFeoo}Dw@Jf<-DGQXt8Ar_&cp{k(BWOX;BSu}nKuP1v0z-C&@VAoC9dTsA1Sr; z9C-e*5O790zL2|kk?gkHZaTRA_upS0e)wV8v}u!k^rIh@z4qE0M%*^J=bn4iD5nv> z`|i8T$3ONleR1$ZANr8aOJwF$q%WpNF!_eCJ^hNBbW$#!TddV>DbLA>CWfe)d|ABK zH$KXylz;f$?_kU#b{erDl*5ZaBOZ~u3qYYSw)wic7W9ED<90dQFo)f~piwp==9?4V zrTca3doT2C;}sa^ohYbVe-3amWQ7kw&%+JCr|~GAA0+xI)=EDB#zEg01of-!B-Fb{ zb`(F4VfJ0Ff1|;1?@?Nw+w#dMeX4T(`E<z_&BgjM)u7b*!q zE%X!P{G2=t1zf|iYP1@SnIfVtx#6G6(K;tlv-n|%%wHBY%CR)caekYpoJRRXtfDl3 zZKI4Ih#LT$mdcaaS#K*TiBT5NC05MoKc>ZAM>hKhAi93mD_X{IKD0$5Vo7ivA)W`<4(?2Ns0U*S$F421wF6)D#M6#OTyUGZo23JWdmCycO2vwyzg9jY1uj%*f1Ez`v7^RaTW00hHw~ovS^W?`kwc^N8b0o_sOxx9xG2g@dOO^y_DwQ zgAbM?jyQtzl*+JknFV(~vqN}`V9=)%W72uD`#hu}2XDIRjPSkgY-8g5R_HIDCD4a^ z;%Q#{-RI1aXW;#3nT9;KoFn;Ukz6)U>PtpxCD2~!MOW%lPvSTkTEZ{_!-TCHM2{3ZT8N>7j_VUAM_jy+V4dEGv8!;Sw>o_y+2 z8H+W;zWDj~%RArwA9BGv-yk>Le!C1GItmxyt+LB5)8zKsAC+N4TBHje!j5eWjlrj` zM~;>+-MA1-B(=%p@q=XRqF1H686Nx5v!uBP@#^l=9pt*qul12AOGYhauAI3W-eclnngMJ>XN0{KK0a7vUCZaVxfN; z!n0vCPntMUjbELlqY2F}z+A%?A6JtXUU)%Pu3Q-#(fAUw%$_}4#*Q89jBI#bY*K&m z#TTJ-mn>YkP<7t8fy*d}Jp1gk(!RM}wr<@jQ>IRl;lqb3T{F&O-khvivqotwCZ6&p zOu+XJX3fHl{s64C8{I&twETWJR>qb;`*MTaw8qJO+f00)0rxPxXW{EKXJVy>hd3NY z2%(%vEOUR_Hqn@xb&Q77Bb*m6yqzzjqZ0q;O~Vg9WFmMU=85Gn%&~l1NPU4odS?-5 z+fTN2{aOnRyw~*JFd(Ack$JrYbcT~d*s#nQIkmP;cC_aT#rQPTUY#P)+UdY^9pB8s z_X+T^AkR~N7FJ18qZ}`LKC!$>4!yZa-Z>Sv4E?ZV<)7CFN_8YBNWJEfUX_G#p11k6 z5^ZnV>0su90bS9@G3|Q7J22~$tF};M&e3_L+zfMEv<6Z;4uSv`{2;!nAczL!*XEMv znUF~7G8)SsJk*)Tmhss(Ayf<6!k_3Y<8I;QULUPud`zmtlcKosq3Ql%3i0`=LPHo;08L=0C^kOy2X~fc~wn>?f9Jj&6y62vI%K!Y& z|Hy?GUZ{LO`2P3h6PI2pGiT0>jc4nx4exWTU%y_y^{sEoXFvN{tB$wVUVELKb=KQ( ze&hV*{Dl@q)C(H-~R32*St$@0BCr;ctSUgCQ@!`qi)GKfn4_dFsh0)7{A1-+ng2 zc`lZN4><%Y1<*xMTdH*YytoQ809In*mp%6wPtS{+Qd@96`tYtj@^idXGZGUaZEDJ5 zvN^*qTi#JP8ml8cFK?S5WM6!wXjGfS8=;=E+sGbyJ)$^oUM}+I6^L=4i<>7fus`xq zhV_SRuT$Xn@$-=^gKh*`(G!tgqrVd~7*xQ*H$$`S!<_pWUg8EsL_od9M#Qtg zWaR~nd(G|j!~vU&<|!enL|kXP*tT(l9!OLvE0w6uBGnzCMm(5|kK?76Z2%S$9XVy9 zeCpEo%HJP&4E*gfWKgrLTaRbKI6GUL@SI52$`Oa3CWG7H@xyXMO>K=bY5YhTJNzJd zW#xJqikCf4fBigJwDc7@_K5xE*4zIsd(56CW5$eDeb&DEiX4365s0zvgaQ7lw6zSw zBjpDDK+uL|?f5uR17h8Ag8=V+;{dK}hTzQh1{u)?Lk6#>_H=KBp+TdZ$A2^eZuE@M zE($+No=@}?|LkW!)#e2Y7RdWAe80w; zGfad=xu4<*8kHxVbdvl8o^pDx+uLbTT1q0tHO*;Ur;TzN_w;U`ciy?WV#?dz_BMEk zooBuQ=hf9$U!^ahn$+}`2K7Z3T_g)3O&c*!j2tOz*RI8R zs1v&y$!;;;Aw!#qWLYfa3N>0?#Sc07=cjbpZ}aoko9#d9qMmYuulSzw zx5HD;m~tBBT&EmsdpIvS90oiu{Zwt=K98UG`8AIp_l<{CM?O^N65>7wh{WlqaG~B#<+J4Uhmu>dqNhjsfcr@ zUy8;6)#DHJbD~*MI;DXqO&PaD(&KW-1O%!=00$@Mlb2q4NuGeGc<$UiuoBBt^7@ls zuSV)Nd}+o!*SR6j@b;geqQ)oz)d6DDvgzH|sLKO2{ zVd6k8N`*XEl6o1AhMDm2)&7j2ph92fpl;Fiqc{EaFaG4tQr%GHt|QSvSy?KTYb(X$ z*Y`tyOgG8#`}!iU7@6MK79&UoBSCs{VDX~uT`VS36feBbc7> z{5H{J?hizFzbdSQv(e->1QS$QF#D%&(WzpL6}MRjwUgocbdNM}@KZLfU?bt7>t4T6 z=0CpxA3%9tC3`BE!a zm*GcAChrca+P>t0<4Beq)}eCPpq_!p{SUYP4lTJ2j-YrMK{qZ1$7X;{0M9~z=D z?k5_^B&Aoa+`eIJxx}y)J~?K;l;@{`_|OTjG>bulsZVBt05wH)KF^NMr^nD+efl%M z>BfC!MqWHVHgf0md8+pasF6P!pK^2j7$>XJ$zbp?B5l2?&{rXsC9_m3b>QCsgrx9A z&q_wQ+rOoxW%capde339N}-e`k+i6X&69WH^@H;%|Kh}~PJl4T+0KR>`_9cU$LEEb z8W4ZvE`rcm6{oh*VB#{(_bgyZTTiM+rUNjS{@In{1}|#DKp+-yHLYE@RmR~OzHaj-S+`-cj2zx3=biHgdEn6n^3`wrP!2m} zZ+XKT=gCOKkVAm%K5e4B?ey2lYCMj=>yG>6$}e3a!$u60mzQjoH=K5eY~0)-e}8;| ztbFBJtm4up+j<6LNyTRU@Bo)-9E1aC&Bo1gA;M|K;iATS1YFwVU6VbXfXGs`3#&oc zSi&|SkQV}5++D5BBnV$n%det%&P6sKl{&^5s&eR|hib?PjdBYiVg8J_yjf_N+ha^? z+XjRAEogi5o8P2uG?clTO9#$zJE{26=V_;%78~XZ<}bjFLZ|A^@D$4DmdWHZ^o5iE zR;)n77d~0P>XlVW!ym4`vJKvNGt4P({P^*5&9&D68wRA&F@hU(%t7fJkXT5q8O#BA zJx0?|Om_61(TnX*<-8>FMbP^eH(*YpV*qGGbBE(B^Q-eI#KEU<;N)%@fqO8@Dw=cH z2`gc^(~DnBP^OR2lq&+ZYZLp3mC?S8Pgv_UBIMI%Ffwe+v+R#A zzkC%tPvcJ_-Fn$Er6)L9fwO{jEx1DQ8qtia3SO_2VWWmf)8Zx4GH|2}9)fkgWR*0x z4wEf#{I%eD?1pvo<H`)8(z2)CNcZq!Sil4~OFS<;w z{K{uwl#d19I+?c11Zl$83XeN#jvR6DL3jzHLykOnSJ|+kLtb9>s=R6WE3){dRr1v< zuA)M?sC7UWEY}Fsw{&lkNnM-dh#`Zet-F&S(32*+so=iRzr^TJ=Os3QtOx^-q*AsX z-b%7V`)dOMJ3$=YaoqH7a}^k-c5b^8FutUk*6n0AZ-hm@#8; z)BZ-h1imZ6YDViSP}H5NivHpu|)OGfBli)&PTg2a9>f+c%P8K z6xRlKz0@kB-LbnRzuqG-qD?H9$E)HJZP^glX~95>08)#>^0AoAOu8>el+DXppPo9T z!&hjOpB=5fG7eA07*oz0@S>F6MG=`_k?!AbE1$2nv#5vEQ@rxBt7!EVCl>yM6k`L^ zmva$~z?@QkhPf&fYwBGbB4A^DZDsL}4xbQ9_XkJb6u0}rp^6Q+>sw{w=#jE<6Fg@a+aSc$uJ7oPGY8XePp=z3UV<%` zcI-{+C3%tP-t|_*9x7hL2(-1~D&ZwFkiDwREaw(~esLaj9{or>?W4rd7#CjVD)m@L zmR~WZaold6ZC=fgD3h|dWr)j@STFsNM<2tNJC_NUGNh5tB@`ci_z@X8bSQ3~u^eK2 z0(c!q{g>OEeDcZgijPA)`a@VMbr<>C*S@BIGiS_{efHZ|jz_#Xmyq0NpM7M+h!MHQ zmM8Rr{&*0m<5&tuKSNF8HOpCzc6yMeV`;-L9^4}@;9YaZg!gW=l+z=7P5>AF$B=o7 zbZtW|FMya%hiYU~WE&Uz7j-=4WLD9+!7*>&A@$mWFG_%9QlZ!)3GuUjkjf zd7G?W_>}zdwm&6EQqn`LSjyz4^;;oV$3CU0%l5hm}1E04Js$dmys zGzA2zN5GECp;)V&$wEIEkIm$s&S|#jN6$^1Gd>OLENsL-%~_wA|8cOp^VAvk?q<3$ zGtf&;!~476{f>O{lbM^SH6y!5RdFo9sJ6|rn|Ng(rcfRu-`6`x6 zw6tL10^#3pfAbryI_jt+yxMr6pvJL{ zh5L%3Cu0zO_sJu=rGw6U+kw64nDY`p37+QXMUSgMJnfczmt$a*Pr@g`yAeL=@5^3v z6-aYHplBDPg2#*P`=WOA$vQofNNYO88LQa2wl?1QMxScu<68cjO zqxH^-Dc|J61XD77<+$?|_!LbY#e5BOoMtYbg&H|Td4b@C&rf|4(qdK-3JQXO7BW(YX5!hY_fzBP>SY2hR z9CRR7C3)}xMfHY1-XL#!)0^e0*(*28RcBHgkdPHh)HK$_}o3_%9P1d)T8aw z$5w<@^4y4zc^>puh_hrn@fthMFTo9jm;X1v{zi~mr`fXnT`2|j)176g2?pX;!3(e_fK zthwIban`d!R*-0Ko#+*SySg`;q-0Sls=Dz^chaNJ3m>+3U}?fmT#>rFv1B63`wtx~ zceD?d23)OFBY3$xxcDwYSyr!EtE(I|z&PJ?_9WSD#vA4JuRj93%`#!^IN7{$o-`qj z{Pa^#fSz5_xfLNOEd%A2yY81Sf9?A+YWQf`YxXpG>lr7>z6Z{cKi~0yJT-r@j2%5f zHsQ-bt=-#XLUV`ghV@1d9^NX0a3i@HFQ+!akm2zYAHGzKH<=m3L#<1yycG&t-JgY` zo;u~kc%&h_Gb6B_b~5LRPMlv1(RlmWZ&$;dU(@{YPkt;P{n$r^E1zuL+JTttf`5U> zB)#I~<%%e0pM7?WG*?n#itX&EB|RLSN%Vb`h#)#SjBm+HOXSi^F2RZ{v(zZR>Z+^c z{PWK*iWz74iJ$x#iuKlSDMtmLunpkN2NGZSoP{rZ^6z!8J6=Bc!4JyIc;|#4HoExY zi{q7JZoB<9HOyn-%3a@&={;jKa&TwAjCW<8eWgKW-~&KxvvIH&%WJd=3N3|QQ$mSI z0_LC&{E^>e7z1%o5Fv zUg?gfQoTy)qor5OAg+_2?4Hi0r4_dr{%-teH~Xa8A(#MiRKgq0)mc!F?GU)6#~{j^OQ5t2Y{Ao|Cc$wpo7=l(*32=oB2d!Ukj<~FB&KX1p|SrX;P341q%FU^)&QfFOARvFiY#CL@|Wd% z-}|1v0NIHrLv|?hd~88n`18*{FPB{MaW!O_f9E^Tml-prJEJ|mE2YHZS_j~!dz;+(mpeV-{@LN@>G{Rg5-EQM8sbGlrH;iS@|q_hesB5 zah;9Ym$M`Ib@vskw{z4)fEk9p#xG_-hWTnz)LBt{c?DiNb+_V<`FAfi%4K`^$lLeq zmf2$vjtjo6YLp|RLMtd@gZ28es(3hFTdAz^`0YNwyJ7KLtH|eR9iuz5XL*cTUiFHV zcUZAl;j&VN@&%GSW#PD@_66b0#djH;-7Qtv??%>}ZT3z~byTFDo6`M$JT3j|qP$85 zF}J*6yGv^iyxO?y#G~w1_@zfSqcvJbnV$+L^;RrxIAK(q>^fxSpFK*6u3LZX#G$I@u1TK9(=0W(ya58H2@N-Zc%h zsQBh$e0>vMb3Uv{hpRCDocI6tENGOIeulrB8|0)L@ONYJ--&-}kT?9gQ9gAao{l)t z2?eNG3$9XY@G+rpJ%^6*|Lx;&lK_LFi|^7?>2dh*2x2Nl;#!M;_4rL%dc{N~ zYO?zB&8#dod;?NGduW$@{@5pRylCLgXD$z zi)7vr2Z5&%?O5j=#}hd-z{f5wa%`V~)#qMUdNjLyAr zs!?WJ`nxA6QMDC!6^UCzg{Mv`OIf@y#M^q|17IluNHpEjuDpt z06+jqL_t*Kh`MavyivdW`S-uyAAgwW$Rm%8G|$?2V~o!iZ?IZNKL5P(W0Sv_*` z)8K(O{6~*B%2&s6UL#FGwoY@PrC0lt$8_TnxoahrFWJ~S@K)#9c%;siqWFTR|CEBC zg^a>4`t9sMGo zMpCx#jer8f~b;J}^ zlyRX8N;WSky|uEx*ArJ!v>1>-bd6VhqiwpYwbAXNV-n&dCU(g{^L-x&f9sx5zwuL zA#}2m2iyod$~T`G+kIeH%U<4Q+ztV=4NAJ5!6XcSF)fCwquuhcP@VO`^A>`%&&ru+ z9s+KPxbFc6{}u+7ELy+3&lN^??6LQgqS0^hr)7%@8HCLR))WTqQYoBeEPlMLKd0XY zBgQc9s)<=@I&ASNz7Oro01QvdEb6B-5JiHKk|y4s59XM3tMoc5=wHL+w9@s!ca5Du zBG{)vae?2rd&g^u%?yyq`9*;HRf#15KPD|OGW)v}b-Jv$;}Cy=4KDm(&X zR~UZm?X>HkqL<8F<42rO6sZthl~p`2D}yUO)~g@pQ|H!!Y#^6)+fwspZ$qV}qzbbx z2*xHKgx+1j6+sO*i~Wk(5uG15U* z(mWLB1y+wVD_>8Nu5;dgJnmXQ>mRUiowCCcESByoX-;uPC_HZ4=c(})_ZFc4dGFjZ zO{>Xkl$fy7FANgv^@xuT<`iUNduKyY|0j<%b|N&^-PU878bQ3$C(5i!mWZr962a3Z?+>@=zq5*XX2a z%6?%ZE0Iyx4JeJxDWL*fBd14Rse1a}C><>B-PjGRNyCy_rK{hn2$OnkAhj+;e>C>| z&?fqko%WrE!V9e7W>^F8MQ$BT?KJ7A7{@i z>b?ANz%FVxqW3@7fk#Ez@Ny5;H5;$bC3KL>nEq{1Tij!|(dI%oo>RyhwyQ8X&rh5r za)TvBS*7rTv(cYeRW2HnsnX;OjI7^B6yrrmU`Lv$TrF9Je@MKT-Szm&oV@gNmQR-gY^8GULP8o%cP+gaIp zr06Ea@ajgRe51iq%VBIWYu_@Bn`aeSqHDvK_M&Of8!MckuqRa+d%wqep5LrtQELUK z;5B)2vZVAj<*PnYlsns;u!YQBu*$a&sfZb?iheMfe~&Jo0kbVEB(e%WaG4)m%y;`r z9_4ixJEgd4mvPy`{&X`>Ml`5U`YhPYbKj}6HpLHW4V@VaWO#%W(~>C1XqO0vrk zF?P?2o+~Q;Bzf88H&ZH*9N#Oo+l61}$dj@~rro=kXBGF`RaOnHD&o&NXUfO(`bo)A z;biXid?tKgy}1M!s{u z<=)xyl3$fJm3VYQQ($oD(f?(sWHLa0#&|a_xSwWuEP3WKV0LJMe&rSLj!Fo(uO|dK zK;adW`?43q=oO4*c)G0W#Qj~sdRHoDrbtc|CToikNmn6+9#xMVx7X9|O0b#ImCfuz zRO$ekDvCE4`*>}6`m5jr6cz%Tfa}`UkujK4Rh38Y?PV`S5S$Bs?tE*tHS0$w3+^cs zl$bE;cV%VU8)cnP^3D<(^ZZ@t)#4VXbDb*^GQ@q5L1yE94VdfcKsn&qnGHedQDm!Q z<+H`^hrHB2&>uC~lz5jcDawV|DJ|JjqF6LotndI$J#KSAW8$KI5UiMYQ<VKi~eJlJr9-M zVNbknNX&VgDj1=I2NE8v_JlXrLkw5|hEq+q^9>bM}P~x%JuXx#3OVT*r+*_aR;YwG>8XdTDk8mr>iI9$Wf>p-+fvSZ>jM2I0ae2mvH=;G5UBeoet z?~Rn#T%cLCj4kkOHVn}ffL}F1nED1VLe#m?YS(YCXq!aXX@|+aUk`3l;mPG7wsz`C zpKJLkg4%Yr#w6hFvZK4#;6ap3lR!CG^TlEoV|)^;P=7K+fsH?QDpUn^$n`m(6`hywyq z4>y74j-Gzg(UilWDNgLPS`Be-p$UwX1Fe0APkat~`QJL$5TqfS)G*W7THQ}vsI3XA zhdo2vl~F+$5UvyZt7Iv+64C|2C9;FHsQUS8^0_lk_TioZmk|NAel%3sThVd<%h4%Tb)t$yaG$*av4Jna z0+nuf47S()nOHN3LVnA5lhxy9@bQ^vY3Y}AgH^&bZA#=sLw_8D=8NEZvPVhQ)O^o` z_YAl&!V3A)G3^#|e{@6NS}%OPdpg$Flqipj)EesFXMP-xjq|>5X8*l^rYlvUZ(GFn~K!MX$&cWN7p*OtlV)m zS2^-02yqW1`>74Qjnx@jJI+(azz^aW1>Qp*WcC!}zek-!Gm-xjz-x>4jnUTcsGoSb z%8-bNrgk(!W}Sv+%DK)8vHdcYe$MNsm>(7IL2)zRvU_{|iXyEC=wAe|b0`)B@`5pjWACmaFC{5J5gM)~13l6?o? zFdOt1V?dmV9&-C*sF%NRH2t!Bl_BXmYoAMaFlgF(SpF#S%9kc2J3)CXrDiz8prDzI zBK(1WuM}OYSGQ$gG`UN6=QUz-6iP6?@AFI)TD2_p<`H5X?he-w>p@zv&w4KvDvl!b!^0&^L7OHOO+5tHnS@CsZhpha#F^46bT}u-dTx}k9 z&Wpf(^=GR2EPaFE1cWL#zj8#da&1)@Y_*0zy0!wwJ>>R zhhF~{wR>-0b$@3#icf4)8|lsv?^aurN!*|ZI_WjOfZ_K%aQxaMyF%N$NYWPC_<&Ln zMpEcgd6tCuCbq@)z5DVMIP2>XopKo!-0OOtxMm%18#Uu+N98KF@Ej%rw1^ZakHw%`^6XmyupDd|tj(BY5o;m!v24dVI z-+{^*s*jHG@GU$JzaKMiJ?&eZELxEW`OwZEqEejH8h9!bS6)Q11cF6SKQShr^^tj- zhS(iE7@RmJGP<|2SH_X=E=D&1EoLKBYrb|Xm&OX9{NmxzJD^*K(|rW{4*H2B|H0jH zrKz>ZWN=xGz8zTMUD+MGzU#|7OS08)8B$?T@a=gVQPrW3NN)c+77zl8LbBrqH5nL= zy~K>5q6$h?@Lgx`rfj^F(0SQ+;CpYbH)#TVQ+{af-gWYQEy}ngQTDT|C2(B@ikC)@ z@P}bXvl??nI^3%tQ(|wHo2>FQsG$;UolWx?m%DE&%WvP9H)+hw= z?lf7KFanEDJ?uT)!RiX}`HNx#*hoLX@(&#T0_&~sF)e*B&C?Fo7VRX5`(XFi7>1A( z@VHo-ivwiK3i9T^Iv?no9GESz+si4Von!Z=&e#-hZlvkn&@`T0=+cFe`c~bQ?VGm{ zWdBed#i(-ZJ@@T)+n~8>+x=orw(wcC$>7tgfLS;9jK(%9>Rymf{uW1JfZOD-Ah2hq ztT@Wi>Vn4F|McP@W$OKK?S;Z`%-)sscCGgPJ?b5WzSzS^gSiHJD$)fGE{ThnXe=JN z)%m4bP-J&or5qiv+4EI2MRp=!KnuC^aQhQvN%3;q+VmR;OLapjwE1b&{E__2l=d0Q zrnw`H=n%o&EQ=5dk0+6OxYut+Ytk&ddtw&73sdzf*mJsi)RdW+G5U$E3a$$bakYWqM2oh9r(&fI4{vi|hZpvN$@poq zxEROaz}qr)V<+9!b-{z?I(21_dF+AQaok!}W_Zl|sJ;-tlaA1aL3g#ChSw-2CkMnxtV5xe`C(Zi;rAtHN zFln~)%R^4Do=wts_t|s$$GW_CE~E)L;C0ewiY~tv?-L#Km6Uh#^d z38>o;@_kon54?G3RlJ@lUmYUf4{=``4?|{e z7$c(kBVw|uJ{`}@JHD9Z@B_7-IHKT2`IV}#(uhR$$1>=s?it+|8Js-^<3CqM*FKu$ zt(WJ-4~?T*Uk)HA$ZeZnf$LxN+Z8yjRdg#Dvl${bD)Tbv(o_y+(zQCr5AKg^A4ZNW zZ^R6Ybd3vMqZ$)slOA3=YM$=*imt_MZdLA#R6rZ9&1(wa!pht8V}FRD;52zl*lz~u7JegZNJk(`rFNUqm2i#$oW(Rdep8cGj- zS@@Bbze|B3JHyTWb?JJvAV%ldPMx7M?>t#>HD|nQ-h|)Ag6&!&`|b_b_Utw>dPP+5JP`q%yIPc&^G&RSx$)~3bCW*jlK}3~kix#+5w5YZe@h+vaL%Qwl3LY@lx6Gd zSnm15@WNHS!LCW`R(E1>il{|imPg;l?P{FYC|kQI=lp$jDNM|naW5G#P7#G)X}|NL z4ZLyhLw?YHY>5Mv*H+f9O(_jv$V7nk*&l+tnz8VqQuRFNWU*n4^NP+6MGdP+J~F^F zx*SGPk70zpm}0WwOn2q!{t?nluQmZi#I;;V=%USBSOy2rLwLW_pX+fOG3^NA!>Pmj zHIJhu2Ic*W*+0HDoa!q{tyTE)K{@leQ}HJ-VU2>E^X|;E+fPv#36}4-`Rwj_*CV5v zUK+l0&o^f2KaFrl|k93w-+Y26D^WMPvn_>>Q-6i!}<~{(`@z- zE@7n*Q@p13t{+J|!jhKR$w!CU)(g zc@PD8-IZ9ZFg_i5=BC+iZ*%b9Zvs}}II9^mRw*{Tn-pFHZIexGXIlLV#j-w#t-n4T zUOuw6?18U4&OApGC{CI4#1u9Spr6ig~-C+l@+4wwNDkkU2ISAEl|WT{3?> zdV8(RxS8i1$(K+xTJkTr8UUOnmkGSd;Jmk)0mNj%KDz#NmoOZ7W$%g0P z_w>%o#TPsuxxMCK(8XK=pcVb60~8N(VUq{5ydTQ)r6i)3n8J z1{b1_xi$+e(s4S>-aS>lrBgL^X@=lFWui{OdmL)CW}W+w_6J!H2q6;k_BdgQx^XecAPACH0HhkiC|OP70r{oqSE37JRWg zrlr8Dgl;m*t$BL@e%ruj?0rO%aw%2TL!rp0hPzu9yIH2C>1rA8+jgSiV85N+N35(k z-Hoe2{B{VB5sy)<<;qp5WjCD6+`)3lnx-LNg=woSA@z02uUowGkx|BjOShTwlAg_G z^MpbMOU-!$xMYSSkkF5*s;QdOvk;>j3Zi5?s;o$?MpqLFzN+r3HNW%HY3fC;spXKc zb{5f(6n9b-$lyEkhp6?23X^-yunil|Os`kR^`h#wTMNzXffSotGalNN`NJk)?|CCY zK){FRd`4~ksUA47Gt&6PmYHN_;kbJC!#kQ$ib}V$ylp};>eUSA_Nr*l>bzz~*XMG^ zkIIfeHR8fNLOP_I-zyMcVH$f}2XkxcXy8XpuJr5Ijt93V-FW`O$1nTCysw;6IP*)7 zRXglRxF?_CIa+3^vP66!?rVPh3bU& zyiCwx;`R*P z3g8D)poT2$Bx{>yP?wO!pf5|55nrLIRJXs!620nIQl zCxFiEBw09;%I440k=k9(!MeC%ujqNQS&Fw9E;`Ic03KA+($2NSQr^}x^}{0@sh4U+ zz3NV_l?^+az)JGAiN}+xUbB|ujLDQnXT#WU8dVd|271wvyE*~hgx9_Pz6Qyi%3j^l z_Mh#y7AulBN6wJ8E$y8tnd?ZVyN;t|A8Ff44r6K>dOx2HJ{>W# z-%Vso9>{w4TzHJhnbXHxj`sdePn>VV_eoE_nsItb6GV)udyVdoCa;ZgOjSQoo?UwE z!7A9gK2{EYRt<`OPBba*D8rPf^RD5&aC>Pxt+cEtUry~|IZ?Y-iR(_vw$ef)yj92M zqy<+`ZB5eSacn7w%9dF7fMt8-Sham#Z1%d}6Ll9AY>=B|I5o8S$9x#`*;4R~iq~!J z;fX~kQ@b7hTHdopX|eEqLM@TClE}vdz3$h=?C&}A_odpOOJ|6i$p#I;ZJNJM9tN3r z_AqoGquH#qqdUKZb}my!!N89k((D*+)y5#IN!0??Felu>x~qLI1)iW8j=IrtvC60TdnMY6QPENxPm58EUu`+k>E9gmzw@)0NP zE=6>@F`QK-9^}d8t5uo+zDVzddYf3Ni@JNhdM#Cb9H+hoL-6By9Hl2kED4=;oTp25 zq}=ci1`g!{q`W+$eL7u80c75@Qw7-> zo5dA6-AFX|XO}w_5RB<&%3cnpZKa_Nq?ue|E%bp)3e6{IcMc$tkisA1B(t;tChov#C6n%#So zWYZ_?0x?%6bUWO~6XMJBGu^E5T<7nXa!(5Q_Y$FM(iYG?t#7KvW>b_* zF8es(()Q;s7Wdts^DceP>5HlPP*`TqV!bK*Yt7k*2+%Z z?4(9(jDQK!*%q~xPoIgH8~^A8Em67tl(zkJRne%G8!*bPKlFLrz(On+q)t?yZo%* zWETJc=#^hfx%J1Lb7)$F^t!9Nd-7uA6Fwd%oWc$N|#HH$kUU(2`C|kYL%EvHZbII5j5!+5TcLM zPx2%jZw((T+VZ9U(}x-_|KDK@lZg}mggRHN^X4CIH36^*bzY5yWk*&!gVTRZ!5lmH z#|Jc950PjD!G-uLYUBeA;X!R>U=>wyf8pY?S`kHD-Z%At?&uZKdeGiNy~+h z5B~J5=m6iUwl`(H8@@C7nk>=7QzmzF{)NuMv0+UIyv`I}tJJT(6tUv2Zm?6HEHhxE zmuU2pLhu!XYMr(x(;MCUZ`MdZ6=E3+tWUM!B4-L(tt zG++&UnfzWH=q?rT38{Lqr9k_fbhK%^qAK;uvS+F38R8C+RGRHQIJblnBo^;~PE9Eg z4-NLwP7-5k*>x@OwBl(P%_hdNQ1X~k+f9VJ;Q2F!$Y#=!Iny8j@Ql2W%PWMG1;pE0 z(ZBWb3a}5~_64#S(3qEE7G1e3ZJ2*tERIUJRY^(W6v%6|;wGFiC}; zJ1jH2v%NcJAH3S>ZCJ{-IF~h^QNbv;z8m9qug}jz<0%VQ$pjo3;9hC?TF)M>>hEv8bP-*pNL@fV9JNFHgEImwf7<&P!RH} zhug%^hQg4y)vQ&-Y1j-j1VwPKj4z)ZldhbP;oX>GTbpl~V=bVAWvwn}L-%Y}Yb zM&9W2V{j@YBqs<)ht_>%G^f+s+C7%avW$RxoULG-&o?JCTd}~P4MEB4E)y$EGCMrp z$=kVRva#~&vw13P?C?&yDkMAde?_5R(G8ADYGyAdFw!TgZEL@*6_6>K>|CL3=zN{J z&pw6JY0pLTKJ^^@_9r^-kGh4D^Xx@>p<4hJENC_211U;gE$J{b!7-orzJWoOed<$c zcFUrgR!E612>m#fIv?S=qWCW0C|17vV*`BwOqxW3Y`@8hqenA~t7lw&C^c0_Foy#R zZCRxzxl~Lm?yhn5u6Zh_y;nJPp9`jnAMn&;#a)Km(5s{X<+HPaM^lbPje|ww@=wQk z9rNSkcQ{Xi@q6LSdAQRG7{cKT=TV2{G{!#+GcHf>lTD5NqQVmCtK}__g3@6lc6wjmFzMT}B_EJDzU)%X@E;X{#`Co9Is8jp#nc zB@cz6jZD#~Tv7}uJxroGqpM*&3^Bf`0Sfp|0m3|7T(>h7ucL26;RM(3ulxO34<{;$lR*^Qjp zymQ~uoi#`6YIm?u4F_a$vp&9X0_?oHEAH<*vMbH;+l_xnKnC>H5c4GYYpCK^s&Mw2 z0ZThdk~!K$vWpdP+d$T0tG8E)=Vz8b#`p~8n$tgqxg6s^*|VEzAK-{w)zKa*DKzF6 z?nypIK?`4Md1m=t2FZV1aMId;ciNDbp;BM>WoS%@24?e{s`X>RlY((4j#o-)l;gCx zC7h8~MR^C!FUK^>iCIz^!(YF=cWQv>O6$p=w9{DSVPT=6q5Kv&pl`>sdC7b%Qwte5 zOST19{kpx9@X4fx(shtqROa1L)72ytyBh37zNFDnkcu-jzZeS=NsX6BY90^Ua$Ux1 z1y2#rR_NK+yrmXbK&tF;_Gk&>L%n#4t!x>f`fV0F!-1E)O`uZoW{ETR^~c$# zPx4mj`Oj2*cG~bBtH~wsP%dBy*TroDF%>fHg9xc$^;j6q*!fJ#P?2Z~39!9nT^8Es zbTNT-6YHYvz2Cyqr6PRm0x8?;ZOmghb|Tr2#)6SvfwJ*Ci57b8ie4N0X-&Ck?FsdQ z1;a}EF_oI~ND57lxy>D2T)YX}!CB7Q>6tuPZ`Wb=@!z{mw72Ia(<_#xa?7>mGc_Yk zV{6|RJ5H^z)Nh(`_Q8iH!m6hDLG`BP%|*-NX$cqk9ihU137`pq@vtE*Q^O|dieQxBESIlr*H2KqGiZAav0d!0a9pad-5V`I+O$_jFT}QMERER95XO;0@IR~NWaEYe%Str zq}Qi(<2UwI-CWU;rLNDjAR~sx6hVN-CTqwvCfaYV{^BRzPNp0kkVbNb zE>=C@opr>g7@9e`IXd$Sr8pAiUt8+G-osoI8kL&L5C#ob*_Ssc=OmG)wtZDq*j^~2 zlGAGN{}7JbG^MO3O}HG@TiQflK}Ka^B~`kf|HBVyC~H1Ws1tRD{DRjO36=^%uLAA|YI%j#+9$@6Ca z$32hJ`$|1?s5nU1NZh}erM4R125CM;Mf6suwiNBUIsSG3C80sSIN+$z%B&##^Th{G z>rYQsqLB)4W|5VjyzD#*We%MBoOyIwTOF?1%N&u_!{UB@afGq$9bcQ|vf2-1 zNkg1LeS2B=Hti4YT|{t+iOVJssHDdo@l0km034fnp1uNeWsbT#DK1D6SM>2 z1kYdQutrVu6%ryQMngkD*o_uSQU!c6Y%?ybTr>MgFP^l@v=v`eLg=0JWyt9dX)XoF zCHs2oy0LDG%*ZEycXfi5FZhniziZ)@!47(YxjFOM2_O55p^|+fccx?JyGAGKDh8 zD^@EFGz-H?v_?bm6c3J|WLK&=;tEo!E3_!F)N)6dg9qeyKlVCq!i}D%5i7mCc1$?>;5OgD7 zu2`Fr4d1*tX?Ylh5&-Rwj*fxYIijZG}QZ9?` z^z_urJoVtWBibj3LjNz${*Qj;IiZ0-p!t1$J@QZWec?(~CjKpFnE1p3hW*8ssPc7k z34(t(eActsx-1~oGP`(D-7M3@K}&0Jhto1nNL|idzECj4jl%HA_Pm8CaenOoV=@2R zfgaVjF8uoDpqj}Q{N{^18N-bhb6~{D68_jSSU`Dp+W#VHk-Er$k5H^mGjqB8RzwrD zc0f7O(8i2F^WR_EtPc=+z0)P}3`a3K5H4~mOD?}oWd#&9;%sa6ddfbJp(oMg2N8|rH2%qo1%=;ZWa0#oW?12EWX61)n_I(G|(N>-+T*Pg4T;`ANLpy-? zhQBJ^#)lWU_Pa3uTgzx@)B(OWR;^gV>INJY4C$ui)l-^cT1hexG5(+;2@C6TdN{Dp z_ras721@^bUjM&3%*iGZ0?a#5vzBpKTOPJZFW&)OK0_MHOy=W7r173N)lOy-Wa&ql zD9!Q4b`kyE^B^*mn4f9J$J6CSQq@c2d@76MbI6jsTE_<9ZHf6|p4xc#KbJB8WtM1Y z#Y9lJ+Yi?p39~g%V~Ftd{QGW&U?d0cC)VV`^Wtw#U#*7?0JT?c(CCK$nsIz+CJnMy zc8+laRQEsy7)wo72M2$8j)LQ)B4=*+$+1?%kF=3gpQ1i0t~cB|<37OrZ7I!Uu~*5@ zR|dTE^v<7_&ILrr9wAO(p5wkf(6`fM-$sh4c|F^%zEQ1iD;{^f~iXovLB#%0q8G0;Pq$j7**Go{)i zzo+gRVvwF7omUKRZ|~;GC;uK_T?G^_7VCF`~~mbyQ~`am2*=Q%N0jJ0oV zp6H#3#;^7rX%sR9(tma8MvCS(I%jx$s=`#we!pG7_rZ|rSx=7FC33nX=9^)fBg!((1XNdPV9-SjOo7#M7E+K;bmwDNXz2gAB zdFKZk<{@JBeiPwmfe_iR{1yc*kU;vEWKZRC@zIxTO}*AjTIg)`5BzJwJH&Gqt)2F{ zb_BFEnMGeT(kQe$$-gf-l6AE4ZY><3>17R&Fjym0aD*@fg#OjmS7;rfcu0e({m8K4 z>j8TsiaH>hJ2RUcBpv|>=4Khkbbcns{{VxLi-!K3c_A5y&n+f}VTh}&{ zw$pbH4x8Ne2Ce8|Zp=spz)JaAIfez~Eu~eP--vl1dcR#! z!M~&B#|gm5?Ss$?xwxMZ!~6XuEtKCAn!F9ychf{?($&08{j(!60UdCD$LnAwV4#i0 z{joMTF3SOX50gB59^Fc`n%gX09_2q5w||0{6Jl7?0eeWE?KPm5;Z%!bho6!CALPtY zz^MN{{opW!+$X7#LjB!PALDQ2I;29F^tWP?Ytq;l_jO7Jrh$lumnz1_n5d#9)`}gK zFz`Ud)79iOLwG;`g_%CYn=x4Q5FE*!&9RHA(v4 zD;zPg9)juMM+LuvM$Hb<2Ti zsz{J6Fl@qaFC<%hB z(-iYoOBeC~Z481WLS)HeoIrJU(@bT}DvN45u2XfT1GD*k%T#emaa^7Wt}l$mTG)C% z-vkf;wJe09g+^M}w~R%zudE9F;;tvnWuI#qn`3gR@JwAVb?wHkRBrCV`rCLH&k(wj z*-h-X_T=h&6H2>GRckrbH63UmIlAcz-0Nyhc*sTO`a%khZdFSb>-v7o|80ypHt6zs ze4s!0`xRxcoQfbVUny zMcQrP$tupf@RV^!5M>wYSV24=PORB$iB+>CgMH$ReD+`F1^OlwWtCbHd3&KqDvgJ1 zUd*{`B6~pffzZJ;CC*aF8bBxyFH-#1Kp`+A1gqC5Mp-Ue-=zFLQ?r zz&MqvN3A%w9USKI0q;Ypn@O$j6uC5+OuomsKPrOVNP7E` z`}uaPo6|h8^eQc8{kZ>oj){roKSG&!Sy(&~NJhNa-tnyMKc>w*O8f@BBE#HBQ<+p0 zS&00r&14Lk@0?ZcV)YBiZ9KEJ84Wo;WgmhtLA)O|_Am|3O49YqJ%A*5e;eiDdj#SO z9{1y!6Fb^gAivnMb?l|1IwtoQAL^mGhHHuN{T^_9pQ$1FFncsA0%_x)TD33 zt(g-#9(X#Nr%z?2OhbZErNKZW-hRaTAiq8KNMfqL2N{b2eZzspoiJ8wc`oBmY%;QH zdDJ4_9pkML+6-*@rAf64-xHth0^It`1c`|!8PP()Lv^i)4K7M0AE$?d_yM&NkS%IO zE?q|lVd)X*`(T7PR?S}uf$SFo-|Y-)(=`(n62Mu`49eiOI8j5mjbvloo}x+TYbRqr zey8hcPx zK93i(t2#!leXiaEF`vug?4RNIvU1!+liHj{1Ym6U#i`m(M?%aL^*^A43Kq;{8DXX{H9mv?wr{zz4`Q~7 z6j2}j)<`e@a}dj(+YhT378dkfZ>CTNLb@hrfrN8SKtM1(Jxv<$9yL137I$K7Z0w)B z9~@TWNF*GV@5pZRtZCKjn#!Zpx}Dzb8Fu|RSF?(8Ll;{;d#u@yk?v!R&AajGM)xWy zLjSpg2^6xdB84f!uUwe=A{fpou3fF#!th|vK8nbRb#~X?p9dq{J<~1zn*W&nCapuctl12s+dXu)I1b~*!3YEESKsN z&1ixE?hDhzL(-t$ob~__pSsJ|qH&I*jV2vmHuJ7Us(1?pDt}S2j;r*6UK-vf{S`U1 zst@*%j8G5_r$HK_y+s~#z0n9}F8UipTF{13iZKaxy817KV~!IAN!{hvS}lK`qUYfdgyOH~Ik)k0Y%cbscMZo+k5PTWqlj!rZ;FAQ&u^xFZ zZ~@hP_&Y)==#__iCKf!C{YuWc=BS7?2ca~lC3<@pfN)fjqpP*M*MlK>w9-mhF6(Y# z_SFBxE4+fx95xQoMKjw;s;jp_dvRpqkbIoH*-Hb*BlPFnHo~~dk`fwc%z`5i&9lS9 zNMu=_+?r2LIWUDkS=PQzooby{{W2Sz78oEJIE-JpTG(q^)|*Z2q4bd3B~B%kp7^83 z#nti#q$rB^PxTd&MVOr2HK)eov`!?8;rltxf3KB^K$AsyVv^-1R?+cfJ{ChHsIxPD zzih$Sd^0Vz=L>@p3*jTwiLoQRPE3-$Nxj0?yP81USC>=oeCT7mDb$Ec);$SSQmZ#Pt~%5Hq$vOShi2l(~;n$z_!rP$91j=}J!ggq+{Y9cL+X zw7+oRWgnd$8{DYx+!(2KBw81Myaev_Uq&-|RX5aK!IuL&Ji~e{xI6V$G}^WOMtnz* zlPzhmvjy#3rySnZKTu)@>&kG6zjK!xLYVw~?(M@F3Sm%Jb))(3Oby-!7XN_mRM8z%H*pD9s)$2J z)lG5^SWmQ&uY+gVH{f?s(*L}>QsDpb0pSK2S|kKTxd$9d7ANkGyN_1h z>xZ6Ro;{QIquBJ1FKzTkgHK}sPKUfxD=Vw?#<2ARW?WFp8NldD%`06lNacYhNEz27 zS;AsVGU=(tc_s?H8ba9vdbxZoUH0a%Y_M9v+-O^R<-pCJ*tN4T$Ya>=ySh)9if5o* z!Y+i8W6H; z61U4fQMIsReBk{A_Z6dNgO+vMrLo&q(BtsNJF1u@5=ue;>52xObuwL!}xins0T8}x5NL~>r1A6Q&S$$bxofUV_ zT@rv>x2Fx^aF+0UE1v9~XkIA45-hAU6LbbF_vK<>KX^2a)rqF(AKs4|`#nkR=AiZK zUY=`j_PEO0kcc?=z!{UUv`U#XW@m_aJ;wt58B#o=~h;7uUA9NqUyHtWSZ6Aoo zbl;v-Z<7;3EYfE1ydaFNGz6*^`uLm}L=k5Y-fR|&`EoVRc|aCYN{;8S{%@%MDu4(I zH+i~NCT9r7SN?{?mo6C8!E|zg9B9~J_vxP!%syp*23&YBMrV_xi~J)f%HUY`+d;!`8V5x;mpCjDB(&4_7SN8mYpu9clplbs_${MS~{>m>6_{55EaLIel50CTL>7&fqfpt$)I% z;*U_g3lO-cX+Ey-V7`}2=zz#sNojn+;OV z4Nri3*Zquu;ioP-nlKm_U-i9s+UO z_Tlzmhk9=ZJ4BFKM4 zg*Du_9q?cIyxsd;!VZf8Jk6Ri9j7HexK9(hALdq9i^5zZ>OS~u`MlhIXmQ-~M`V~R zz%v<5%?&1wvSXlk1CM9ipBHK(xiK)~T z*uCCX`e;J{N^P&Y`U|?)m-$yn^0NBtWA+=jaD(X-sT(9_y6q>Q@`bk3Z@F8xV0V;2 zT#p$l=$2Qe_4;b;Hs&E(9|AB^tF|+ z^rUji&$99}>{Oo~2;6gf#U)mk^^b7i!Pp(xJwI=}t*fy>m`d9qG)h|(fY{gs3H-1B zY@=bJGj?3Z`L71^Qd__4+_xA6iE$sNHtlh{PfJh@vM+!?_diPE`UqHOc(@$RzfG*W zz5DS~`MA^Afm{lu))$r)p%@z>{0WKpD>Z4j0CPxD$H9!rJBRV7(bOy-AyH;T>fgSS zpOALzdMO5ij11l;&Xv688ZBB(Oj<0A-Hj*Gjw(tuIWw-6o#tHRGChuGH+bFF&CBR( zVNg9AUQjq|?PxY=M#@kSSjH2Hz?*@VL-Cq)iT2qiI1{Gr=dJ-m3ri;11|(@Inuo*P zOTR@|(pV2Ij}ryShvF(hSuPu1QuKkwg=?*tJbu}nj4mk1G)!MGP8RF294x=^f>W1; z=bfLyc~U^w?8pk+bU+C9n0&HUpNi;dAl-v&J7vB`uRAf5H-b0bkb(QwFeA&`tV;N8P!W2Nz86p75Y8z!xRI#a8+35w zd*N3{b{HCkW>V#sIMZ-*Eqw=PoWC_zkO!?V=9qU8rQbo^i=bl3NgODi8J9Jun4n@yEuDd(F&mu) zID~t6ymFgd;t@X2_!q}*2tkBotFs`bM<1<@apxSti+eA7$r?M_w&wtW%d(eYa@;lG zr zZ|<~~!O=M~A81ZXU_vW5gqi_70I=6%&cQ-sM7#_9=ocAY1@f2T(PxlKrlaX$juw1< zn3j54=zLA0W6*jaFIQwVB+9jB@SgpLG@thw!b^U>MN;Rm6@;}62ezkrY`OReA3u7+ z@PDZK%77@NZfgaEK@bLzl5UYkI)-ipr5mIh=>};Kq`Nz$ySux)n_=iq{T_Yq{qDVg z;1|O)&pBtGz1LoAFVOMjS0~&k594%KsEqDm8u9>Tx~4-wgUB4H;5#Z-wD5amgfu6} zb&0iNRxU(+4u)SarI{hZ&Lrc~gi`+IDn=$_RT z1sOcl)whloQ(gst34`HvY}1dvJsmiFTj8eZNFF1APg6X~Riuaa5!7=*xFaI5?UCV| zc7yGbxi(pM-5%LNzlM&~3F~NIHufFYuPYw$R4Lv+=3&Mu7cZ?@H(MQ>tyI(3SXH7^ z&a#U=D#w3|otAsdsdw#o`RKly3wgM z%DTKRgn|(22@Tz0PX5yQ@}*#I16R!;O4RPIpvBo@p)U~d0rpEqR?zTOw^%R=HUicK z(!Fpn4ep`>YQyRKHqxQkD9(81m%{uFVEaj|ulZiu2TG7tYA<}Ul2`hH;Qg>$?IznO zsvEpjQaAGcNH+&TQZ4eHktASFUx9#Q+JFdAf8u`JH&hUbqli}fRUT90KF)<4Ju4-K z@NLt4D;m zff8YA`}kar;@~nSI-61hb#tR zMKI6n88Mx%Z)?Cjd!EXEM*Usgo2rES5`M5V5B|uh+}-PR6CRa~{+K|4-{%p;h`HfN zMDUVq@-n0oU{@l#yS5>k>uRYGwb8_;JL}~gsnG+z#6E~`Wt;i8Dq%X_acOq?D zw%Mh75S{i9;0&b-2_QpHcRKRg=UpGnN3pV}pTSA=M}YI`Si;!g4C8D`V|(Y)UU0uL z#(UB*ETYV@WGXT~WOIiRF_58WXN4cmReaKVv((Kq?QS|)yH< zZvvlZ)oiB}vW}+mZh2|s>+UED@F-A5n{ z7rOpT=vxYQwdX4D^ zzT518kI?gKQtssZW=qI(?J|A;zR)k_ZQt@XDDQ+h>NW5=S;DHKJnfrL02h(Vh7Ym%%X>e=&7wX6 zR5Ml29ubO#&R&w%9l#-_!3xr38bh6hhGC8&c|rS$^38?ZyXBGsVXvvhaUPN*KQ)S; z?^y5Py`V1?pz_4MGgwU&{Ge5z#De>QWvKxPO^4)gp2PPvyHhAnome&;J%oIYs0YlF zZ;QvL-$20jUA}4sXp53w!Hj+%&ts>PI=g$`CcD%_wI(>M6woj@O6Y!4xn=Ug2fJQ; z|BUA2A~F>90nMRofr;0Jf+5{AyfvJ}O85e!O9^C@HJ$YUWotcDF28u5EjM?ceXb+| zmaP<|{QM@xORN*a$C3Ev%v#Yl?e-Kne8S(?2wAL30%B5tGmU9euTzT zHL^OzVbV84IH`1P*pkU0qn@j!v*IJJk|*^h&|;&a1a-+|h>=@K7|zSFxVLK#X-!XB zRZP0naqf^u1uupe`bu+L8J z|6LkdgaTQHx-~zO|Jd-~@DT#->XGW#@+}{bmID;pksss)ExxrLUn2Tm7Iq_?=vC1T{@E6@C~&o`0LZ2#6(wBa@|5D-;y6N6yFRJ$b&`_5$%AT}@-UPK&!7Cp%j9=0|%y zu56B%TcpBP4a6-wR6!4dGc`}yVt&MB_J>8@%t5mxRvW)FwI%lD8SK)NzD3B{Ohb7d zKmCw#X`9@3w(42I7ExE_ns0K<{k7^szi8uje?qLR>m0gY|Lw90Kb&slzOKtnl+0=p5H?SWvD2xE#F?4u>O49PN!Ha5+KLfa?1XoJI2JKLV+k!=rRm<;JG zn0xGNFa}8!nJ@#XH+k)cZiO{TzO+>x7iBb78Ox97fLwz)@+~@-E67BzF21v~Gg@iO zQ+%O3lzmMznA5%zi;)cO5I=@Vk_`TRaSz`hYqqk(?02ayMbZJ63FOWLO1<%E5Qv!) zEBX^Zc~9C9Es?vJ=`7h4gkjcoQV}z+TGr8+sMVE#{ws4DWv^6!tM+QzP)wPDXb@;K zXsn7xpUyZ`Y_g{1zM_Zf*XM`5$IWG^;#jJ1wlqTCuau0SH~rvi$` zA}&^>=%`5WO9@dRJ3*0`Nmi7eWoa0fM_gl-RAxuI^Zo#z0Ykyh#EpwgC8aY0oKbnh z_{*zHfOL=COP2QzDESwe(%;R{$}`(;`G1gXs1Uqc`}6zOC((zzUW=wccaDvW9D#Sf6E5Z?=Yl!6dkS} z*zx%X61#!R<0UQme%1Nx!;2OBanAio_8Yq#6IV^sT)ys78T%6o@}(-Fd9p*YpN|u0 zyp}fA{?F6tz1F2sURLZ%FH^rkeIu>Q$|02K`}9p1KR4Ms4qHo#_lCvmWbNwS$%($k zG}!f()U7Y91Gfi7xEmFl$)yuT8l6Evy5+z>a--Mqj5OjIo3$-)}-eJgUPoCKov$ zr%J~TwI+p>OkYoP3&%>yEE}iQkCh~wZm7r)6A$oux=TRUriN^khO{dlWWX~y<20NB+#X{%e4F*Tb& zha)Q@VN!0bMH-`?lT~*ydxvd2&vzN$d;kTk~?p63NnAo-Z?S?>FqVH7mYfRGW<31tC%XZn^xuhu{@N zgkuD@zhGr2w|Tv4Rp0O8(X>=T-ofq%C1IBKc$LIy8g+&`re z;u>nsn*TGs`^Y@TeO20Rf^QD258~dzV`UU(^r$67F;wF0mn3@8a#gQhc$mha{)+hO zXIL)Q1*@_cE)%0QW?toJuN3b4scFw40UVj7P5n?Ehj*lV7ZX5NtZ|oAaj()il61{_ zbc4+EZE{SX7M3EaI>m{W)!B@ot5NY`A!DB3)TBJI@v#A~XEzNI{GLY86^j5bXXIO( zVCLg(brYiK(D0sxhyv3I$_GDqVHYF>b+xE5FJZ?-@3SDI628mPkIm?CbyGe-&HFt(;ZT$b#7+c1!0%WcLDio@LslcUAC9ib zf6?QgWb-~}f`W%!(#?a9tPRdbFp~oA={M=_(+#jV{Wr_QRo!U3Gx;g2Yr`|w?!Ks( zk47y6#wk`Bzvb?KP9sk^3eUfKC&7uBs^k6qbCI^-X>EwVhnmSH3q}?6g5bcT^VOfT z@COl+A-2ZqVVGWI zs2CP|+)P!CedlVWlt7NrpQgGfVwsjLPIayW{gjF=If}g_KRlFawo{kQT#m_?+F-te z1D706VzxA@q2lABik&SgsrkkZ+b^G(9ELdOWNHEHJ(Twdgk+RH;8&uCF5d1jCQYMm z=0O)B-$l^K%p>^_Yq!)T8aA9Uuc9Q<9^Ma^FuyyH^7H^Z1fnX`FBv0ZNz&*1Hq*`M z<@m!xM$qC#Y$q!jxE7zhG$B>qG&PCui@Hg*Ml_=PxHRt;B)so)^f>0+wq0F#CMu%H zcQL0hH>uu_Mt}igO*iweAVYZKsvj8VvB41|9n!nKANO8Ev`^b}o!S;7HU?)aiX#Q1 z6WjI{UCycS{YKRZD7oCqSs9M|QxQ;fm7kh!X&UAmj&BtJq*8(=2v_bVzt4cBr-7*K zn#nJ(8&pCCw}T74zJ-N}JMe!61DMSNxqIiL%+c}aqZ@Y3xMRpS{Fe0=qF6`Ig*~3y zSryGD5kyRR2&5%XY2HsP6mhii3}hcoU)j0celx~%eCT(%Io}RhM2uZGo)*owGlxGsQWP z=A8{247DM)ph*fvbNEwFyhD_=bBaWU%helW_Nq_D=q|Dkq6h5pR{8s8O^|r2vQlfP z4^8U*ApQW-CeL=*$0rd>W-{a!1j+N>4p0u} zq!GX8v)@Ir1G$Qk&b!zQj9aV}!LtSt*T`tgjyv~YNN}kKBwkceS}Pq0x`1Gj4?v6H z6LC}La73_Q&|86BTKS?HNL|W7&{)eoR@$Uk_1T8^49%``+w`m}7IlCG9Zhnfa& zur`N?_P@-I_>R^8vTB?_lB^4C4&qM3v@ZFJYxIX*1gc^f_Pv?lkbl>aapUrE)`{*l zarvF%vK%Xdk>6zyV*v|Ax)8_4+jISKZ9fgw*tAonOC3)s>>K^;W@P`mbB`)17*vA& z(hH{bD8~ccpL^Lh%sU5|5R`q=ba9fQN&9gSZ2xoF{j~pagqHle^e5XB=g?_Q+JxCY z#bm8Gf+kcWTCQ2ExiAL(_C*SIS`FVjBNVkPC9lX3Y#dro{ley^7;5B#)lo+)jV|>%S@jTRs3|gO=BO%P zu{lIbw)LR;dcO2k_X0BIybRgwhbI?SH(0H30)Oxhr zh=e!bk5fKG(iPduxfJORC{D{(B5W1cd+MjwuSUCJB(yc*Ui4$J6RznOL zH3Q3mv8NXPkmI)#MP!B{ot+DU^dIEu?!fQ-Zo|PuqMJ-T372-1T~6S%lr{`qAO~co zha;bKskuL{7_F6>r@^LP$F79hq+dDtKBD+`DyZ-!gk|eN>Xuz1kK&DP^b-Jw!Hu8?VIng3* z0!6g$Q9OugGt5~NRwjL>Wv~@0r?E*H zvq(_i@H+pP~@K{Q|xQ5XFc|+;aA3~*D zx1{5#qo+j5L3=FWJko*Fr5V4dG^;scVR-rVC`Pj3{V~8ikTX{6k3ltqsx%00+6Lwd z|JZRQE`tm)--SN`{xOLI`WkY$0$1B{FjTmJToKFj9bvoWfXdI|p)`-KMd0%0pzl}( zWn6Y3=CvDu4m7b{XqMnQP5W4^`~2(bw+zYQHeydrkc&QkVXy?D9gQ!IeDM-Zi?8bp za{1k4gjcNRE}bsz`mZ9l$v?o5V|yER%D4E?0Fo#0<~U0vS{udvmYU)p@=Fd8IkI7T zs-iKzG(DUoEP1|3UNVh@Hy;X{JAA$(&f`eAR(-Bv^WtxNboE!R9Bmj1mW0mu^NEE`EE<;`C0#9e%trRb; z&G=_I40ypH1RjbBD6Q5$=JD+}e!U9g)vnX#>Dn(=lXYb;wMecgRUXyNy^}fE=TeSF z7_;(ritp>SOILr}nY^KMte_c-SKcFXAN6!zxtqQ9-pMImzasg={Y-r+_8WZ0hcyWg- zLd9{Rdv1Bc9tFDG9UsMVxN6UEvHM2Rd^Aj_jn+ZN&H$?P^59RXsA?Z*YDaqbSI#QEl zak%_CPtKu{XL9)w`Pxd_TUZ0HLWVn>-{`=SW$wFUuJ)tZJG`&(Buipk;{MwcZA;R_ zF8TkCh$GI+G9+cG^6FX7?V6toD=*5~_j_n>{IB0P2bI({JkJr#zK`vswp<-43*hB* zD6ouJC5}37KUF-^W-5MKy373e#;wP|X`J}Ju-{OCXA`Mdz+uF_V7=C1x4^n#GyhMO zv1$FY-gk_{&lb2NJi4!z3Ej>n`iuOI%@u+%%(-7xv80XbvcbDc&S<`CN*)1E`%w?sFhW4b))$5oHg>VLss5! zmXh6L3{dCd2oDydIf$T6y5}}UTs0K%C?aBx6@2KDyDxs6wpyG!!OOi@EBG|~iAFFY zqWC_xK>IP*OyKTY7!MH*bgnGjJmnu&2}6W~tz46~EAJxJH`qWW_nUv9)|Cs0sFy@c z%q+*o2~oN+(aD?cMY$?^H}1R)6{>Zy3n-KI483e{HBM1C+VLp9AD#ZHUE#^PP>4d0 zAZz%O%~RaM?=VNJnP+(xX|ZHa6#|W#EB3@{Bn%m&n3bQK}>j@r5 zrOW%aQysHui8QYuGPE zlSAPetrWSTg59MH=Oy`j9oT`Ab1o8)z>+dUG0tS{y*#a#6fBp?b*pKj*sGhD0;4dM zVkC0%uc|*cH=OS@CCsrMr)FEU_y@g=g1w`i-+aq$(soIJ8hSPIIsI=rF9@Vce-mQT z31?74J+}#Cb|o{uZoQ#xvWIxrLrwY5#GI+`ESKW&Zt2CmxwxBr{FV6--iI>kF4Z|B zg);cAB*A_JJ2?p|%K!SDf4|x!NL_y=O883}5RS;1u3A_twNgTdCWosy^xNF7lPx>o z4Ak~2xo#5KX6Y-XTf-b~l{8EuX;^k)zY1F1=*7m6E!6cD#RC65*?&LaJZM8guECIu?nDmU%sm=B>tj=z#aB&y1-cdfmLrTSZqhu+5dBI&t-qMxq9` zZ8-Bdw<0Z~iXvqJ+d0JF3}Vm`WuE z-jxT+=U#N)!&TySBYb-pT~#*}-BSI-L8SX+|NSw47yF6`ju`sIktBaPQp3N<~nZj>|CF=0vcM*r~0_k1f$lT6+Bf%q1f4jSz~jip&L#05^{&# zIV9LI!*xoUK^FQ>DhqNwK8r3s8H2$~+Zp`-?8CqBaFzVU7usCI%J_JieGw7<)dFPI zv9*M2%uA(=t{;4Dgdbm{z^-l!jz3L29E;QAUoFx_hDUk|UCrOnM#}OCVHtWvjQZl| zJ~^f6u>PNY=_Rc9-pI;GPi{QO_;3&*#kB?E6S{qq024TsPsDA_t{M4Nz8g|x)`(#z z%;FY8hlJ8~YVuAd?JG&k02(gukFlS(W`rv(?$t{-LZ+&V(RDP%dgKq6pWVAIyR(Vws28>($7k9@hXm@YvV}#HpTe(2>=9>G~v=j*};_7(LD^5P4 z1)J^vEL(^~=4uad1s!Fhe1@FVz(hby=%r(~x1P z*d_A&P=@d5w5L>cgylDUm*3>+GTuAb$hxtX2w0G6uItYdU7i$cxl38Rc*K8_=0dML z0mF3sx4@og)^rdzbO0noN&18881u4Zj>-g0v5~W?g z58^qWN8T6bu_1HurX)9Qedx4{4xuNTfs?l_r@lJ;dV+N4kF4`BO0SbHC&Sb=IKUS9 z4q?f_v9%EMe|;@IZSjsAevOx;v>CRa{p-H26zJ4Vy2zi#st#V*5jm>Xf~rpNJ$u2&D9V!svD@Rji95GsSDhIcyV z|B2{f{BYkexl?A7(XSlHb(nE91!oq2$%qpS!Ks?_L8auE&Hz7#rzK+dqsmaLj|qK; zp^Qz2p`SRDgY3j_7*a|z3vnxqJ~+OMoa3E?x%lH}E?D6WtHC(GTtC{@!GDq*W=$#0 zUv^!cB(Ze;;Ir>R-mQLRFyh{45M;SFIp&RFusXM(j=}!_uLDJtmnVZ(r^8^)Ml>s; zwhbxvB!Lh5ZKrLIasohwr;1POJsZWu`xME4v+|LEnVKEof*wVOG7UnWlg5{o_Tb^o zK%vF*Ho|3IoHf+P{f)^+I9*j!TuNz3da0lAruPoXr+_LX)q)fzy0LoG&xLrfINoVU zPEQDLkUjMOW5h4g4G*Svf&JUVF6P_3`vj^EH_tCAvpM8@QpK9jk6-?zA2-3e+{eqi98tO9Yeh#{=PHR2P$Er{0 zMj4C6Wx2I4QtcI2PnX+Cb6$&E_5Sm`csM&pFg$+nWsWua$lqhJCS|(71O=CIgkwSP zIqI#31@RRVZTyW`o_$ZpxzvPal&XZXT#1Zoq#qz7H6nF6gh=5Scd=38Y9bC>s zVs;MUSPX#^J`~nd>ftkU&}&+KQYq6)E3K$s97+Djlv3xR4B-!Dt^Haq{jQw(WsyRE z^w|$2Ron=Ax01;2#xDKB1kJo+OOZSh5E})&D z%Zoq)>k;ebV>FcU-1)PbJfyy0NP+5k_WflkWBTn)>NhHRpYc zK)Wr2-!ehFnxSrmwHdmXl9pH?UW19U>~|qGdudI;>VEq} z$AZADcsl{zS10H@d!oolXGy*}@2|ebAy-#`fJpF_XrOLE|I%_YyEFVAwj$K*0<~$o zSFs_{Uwc@_Z(|>d$(Ts_+qhj!09>Yz4Xh}Qw`(^%^3JoypA)4setE81`yn@MvyjO9c$8>0PVo;CSk+{4mfEYiRit^v zt{q1=-FZ&v%=VG{(y^{yqOH%f{LG#Y1H} ztBEDV#i_?-_aY6(HN2_CDMmelc5;7}Z=qePsz`BJXf0ieQd~8Tt|Og*vYa)&AS@$$ ztzSk4{?pG}LWWC$x{0nKj?0d0Q4S}_L)C&4b?pg$l zw;#wJ7CMfPN^LxgV;qIm+iqJ=jmq6uVO7BMpNr^MD%a$ zfBNn8)F1om3(c=<-FRaY#`nK9r=NDK@-*LYdvU<@>(b8~e;Utwur(|H%D1~!TX~v7 zy1;wTDfT}oXRYXL*8S|OM6csv^%qx{Vz`doZkXkd&9Z%8OQrjG2;-{ z1OM?&j%Y6IFZCk*&(priU#b>s0A+5E)ct#jkq3tQ75%ix-Nn5Wn-lpy(Y~3wLz6|B z#Tw#LMG~hHwaPA$FiD!3;0c_YEKZL6hnOHw5ES6%H@h!#t1OWEuFHAneWf@C?3dDX z;*013aoDuwSSq)Ujd=l0$u3G7tzX%XapRN%JkI5X)Sp%@XhbwbOwh@)r6x;?s}KVj zi69!fh2YiMy2&&?LU{i>&oQKnDDi%!eT2v93v|A-@7qE3M2~p$nc1$D+9wzn|_; z7)Xv2H z%bD*n?^^)XT-C89Axc`vw7kHoy~pp%4CmJKtM>DsHV)Ba;Yzs1Q$AO1Fzr)2;X6P& z$F~f;!RiA3V>1Xd&T=I;LpMM*^aOaTZkE3dh%Xb5Fd|(1VP}BGf{7PUrFhQaGDnA( z%`oc{M*J0C$Q?%To^Xxd*S9}2xL+6R9)H~V{71+AIIi^~u6zVwd9$tS&N7s?;VvIo z>Jb=V5Z^ZR8*N-n1VPw%H@?GH6e7{ z&~oqR;({1eJRN|7zW7%VF?1YgTOg(@t!U@=th%HjZPTfOe)+SDc&f zb@TKo*iHv~mn`1Be$|Q2`Ly+R?Zn8q4=Z2K9}f!=o?FqgHI{+Eyc#Y_tI9CMAoP~F zvs>0Z)QXfYH~RXQme>8R+z=2qbdCQqz1x%SVio1i7u>dB~t|m^B7cwhyT6ldQLMzv}R=GYk*H3hA3^^ zzsqp2ncmR;UwKR#R}Q+NDqai;bdIBC{;!6z8r@?9-c{`8xx|EjIOE4(38sVWf-|59 zeZayt$|mghT(+veraWtUI4u6y)d+S(kSgdF?te4I^tI!?{0AJ^FafFptru)weQK)$5nDxt8_Bms%uklZbs96>}aw@e9!=!!}+e zmr+LS>da`fnddvxZiL_QyQv-WXKue0IvW)Ww0Q6e^e@kjxyq+MDgMEy6z)!4l?N1Z z+OPO3b?=8%`TPZQk-BnQE-d%j2emAA{RDr+{?$-ARUu|QFOGY~WAv8^c{8~$4zmsr z!nx+3SP$j%>?H53AB1j9_Fj7S;hPwayYzkJJ5DqRKljOWv2F*ts|i^cRp{e)fVCLh zc&Nz(a94jSYTr7;rz|eQ<~KOMUOn}yr`$yi>!lX<8smY{)9kv`LGN0gk8PawrBl)@ zC1J`Qb&}k~4j_)EXTaHN;5V>Y9xSVuJJ>Hg8R;*T=v5-?twRoWiFibsS)y#3#xO>n~Cg zy+7917z!p=jESd{k8)(Cr_LIRc{x`LTR`dvZD7qK+oS{eli!*Ot8kcFAh{m3-_6`t zkEUQ1k=@|Smm}CAb^ea{bB9io2WF6b>lB<@kQ?C!Zs`P3CVoZ;ey?MsALhJbD?w8l zDZK-b+;jU0hCi-=A=P29s@q2S!<*>A<+J20*)KLL^Oaw7Dv z&0ct?7C|N&{dqohwh`dSBH5%TxgU_I`b*ro^aMoQHwmK1n({T} z)>Z}_1Y@rde9@5m;nCXs`}iIvBgP=W4`YW0utO&W8e`8+3{nXO5B^4{Eh&die}Jb0 z2t)Wg;8j!ZdWW@3D?<4Am(ChChTe6a)g2IqATo~kxAO@Gh0(z&!zrvxr;Q3PH9F(S zKbyDoI?Id{FR5foJEc_JkH*AF*DatTP``w`zfV!W>rz=%k;O3A(T7B?5IL`8Q8EnC z#GJI=>bM_y|MXTPLCN|Q{AT9_pmJR;m@a+QquGQ5Ptx#hBFoVyb*Dz6>U&J4*^!H( zB0T-oxO~{c2$cMqBbsg-Rj>PesEW_B0otU_VQ@e1#dTM&Jp~%k#}rz^F!DxAm?G_7 zkLp7);e&{8$gVivLea~gmcue5Y%wE$!j+bNJA^ebj!fEH9@7^#>G+vQ|HMjF_Ck0B zZQQ0)S`hiJy6QBja@#bQ&x}RFF>28vHRzM^^Mp)oOR9y^$-1xwCJ)!9Ge4524p<+7 zTp{{>jjkHzc$vDN7jQ8};E9xT{pIA4g7It+FxSlMHJkIZzI!gN>~c?kVx7s=tnX?0 zJc47&BU;XvbtJzNzw?16^>4wLmrO<-E>k=?Fkx@8#q9GLNUcRiDem514xQ)|FG{4S zI)>K0X88>CtL_rsj46@Z?CSOLCV5Q1wh|o#A$1e?UyQZ8uP(MHw45;7INU zzK@#-JTA($yr=2%=fu&MU*Ukiraaou;W(>lI}2dCT1}qaoswZ9a#Yvvou?+R(a67- znx^?=LZlF!`=}hm*Ul%D>E|mr0j(f)Fg$}(9W1B|ps{y@y~!cZ&=E>us{M(p)0DUN zEuiTLV262G7W#5oOKG$ZMa*z)?HMfta_htMhna$#A_*9wa{wwv{FIa-x(rmj5Nn4p z3*PU{{fo|=BQZvO1Q=G1R(yC)^pD2xBbY(1m(ZGe`y*3i++wd*8~wM#h_n&U#9Y_+ zr!6f*V6MMdi=PG$nxo%(R-+^b0+(h-Yf$=j;%2aOTx0CP@EWa#XhgK zeUAs0N_B7csYxfhSKtThmeMp2D+>qKEt%7;=M!BO@16E>@Z;;z!(|&l32vxl4ij=Cu^rs1m6Q9*S$^YS-yXLC!dZUiWewmujl0w^uL^# zjjB*PHv@U_xPiqF<1Z?&-4)7e3BKg-C(oC7*E>a&rPA`RO6&c&jTcwtv2zZ2QC%r} z6-Hll=%Pke@goJhQz`+FcGU(%(N{JcCCPmsBB@f2#cJ-AGeknFmnl9m(?(Dfl}wkC zB(&}DxLL86&v1&Q{o^tTzWDQd{mK8~;e0`~iZH;7p6a@X1*0a{?*eoKXtG zK)Qsz&SF_4#4nO#-;5T6`US3U@~@SL%}FXRg2xifA$9EIJh|;eEUMbaLmwDM;c4e9 ziNa@!OL)>+zAEoW-Mp!vnT8)buZ?o$C(DG4)_o+T?ye5Yo8PG$? z7dOjd8OqOXJwH%%WXvp*q9MjmZH zt32;Q&%V#9GnMA-Rmddv{tQpYX%TzxWlJmN?y-Y$2hp0t#c4(NOeSmLBd0 zg+!=tU}%pW6Md{f#9U}@I*vA$z3Pj3LW&G>^-1oFOE?LA?yU)oohR%t^U&AI>2zVc*n)df9gkx;vBy~| z4_|X0%vdKgqMLFWO}hnZCZubiB{=zjY6?iJ5B%k`;2J5hy~oh1T? zU^Csn6nIkb0TV*9AxHb~B&S!`qqx`AU1jim+GJ1*TnnkTrNs<6Q{iTm=AqkV1?n-j z+?q8T9yxYThve~thohr67y}?CbYD?zhe;|9nma4G{37;s&TjrbTwRZ%pi(W5b1J!^ zb5_+5S>8_r@IJa#JI0~UZ6npP8R_HEQ;dJUnK=+9`kvCtyGq{_$$Jh}Up!*sE2-B3 zDRt&2Q1%q*wu{-gz#k894D?;nAF;U*nDhU9|j@Q3_WI<;Y3mqB8vU^2vl zwry_J;WKFo$Uc>hO=3-VDLx^AV{ts_Ix6^rWi>mv{wT9$4j-u_>^&%Pj%*?SW!ead z98#H^SE1+DUXmseRCI*fdMHAh$2&1RdQl&|XC%?_sjhm*!=Q)*RIY&Z`P!xPU!z|z z6CGpYVRxQQbE%hU-@k4s6pZz5rFu_Wk))j}&SRzS^GvQ!I$wI8_}Z;wz-U9rcvD znU~!CSl;)$s&@pUysiqovtmRJh&ty#R9$d%2)kvpBh9tRH(ll0G%RB?pC}8+p8tCm05`-%^j?rSsS$yk39fFGW7$Dl#eX^O;Ov!|B3B@yZgjqU zkbaJ|v9y#wGqFyS-+P^RkGqbD+hTj8dq(^elWA^K_CcTVMTw0|vG&K7C8PQwH%3h?O=* zVpO9$JZ<%jVcLZpiP$9*#-c#j`uRT~7PAhhroxJw{Ph-Hl?7QnH*bl2(cWz1Fwb-T zw%hK|9>$z249?HAK-eYm;HNvM$B~Sc1xSDM8RYAExQci zR63@Ic%L3e)PxIy8z+(`5w*A>vWkP6Qm(YH=l z8*;VdN=Y?E38Lo+f#KkWgS%V#xa(VJsOib>^)HdphNTY^il-GZ}X1- zurP;@SJCyPdK}VL#-SwtUnd>~fs`UI_ZHC6(ruWl5Hk!vt(K1*w3(JguB-5_XwgCJ zIWq~iCR@X=<5G>LtH6QPOCwGxuwou_bH5jAe%!2WE}Y&TE(r5ZZDm&8)L&a&v z+D~2c*6jX)tf*Z*)6MH%k469w=CWS%CE$Oc zyQsU|%Koc&h479wuRmMQldNL53A3zi{Bmsz_~~Hm-8AO(VQGG>ZXU?(A?%wpkaJ}3 zZdxXuE)E_=2}d1=1dFyboZW5@RE(I ze9tlOW0$|EiMUnqU`|CT&Egij4DTn-dq97!?6iG0|M8)-h;{gk*d~HofJeV|G>ZF# z91h{j^n+w9Dbr41qT#^D^3eS^VJ-Zar*|H-kWOs0L+d3{xibQ7n?Y}$u(O!KkxXXKmwuWvER=6X4t zNP*s)gt|(d2q{^ZgKVNSCjI#Zd5wI~i$~X8zUZY>WTLiQik-N#H{ox{So%r4J=Ec* zmOWAIe3q7 zET@FOX;wQ`&a$&G&3=!iXmq-7qUG*EyScO(CVTv$@Z8iP?2v9iyz)r8SEsYIUM?-K z--;*6;+*dqtvOay$q70IL|&Kt#;Hk);#m0;#ZFI*iFrnyzV|w_rjjT|lX3S$NoePJ zOrAxfl=cDcZp!FuRxL|ALa`?Vy|~wrau8uU7co9EX7I)+=laU9FNy-gy3AtseJvwt zocn2OJ*<1i4{QeQ-Vn+67G;V$ok=NmG={^-QiV83ybr}qpn2o}#GDupCN{R*%;Rnm zq{WVtnGV!cHGRzie(mo}=z*-c*$YW_s`_E2T~}l;b}$Wq$hNncF@2ezj3p*n43n1f z9WMT&54V?FfHK3@rWw)WwXQ=!j3gJTJZVM5XHrYb^1j#K+J23EOYCj?n+73Jzkb5+7~5REh^`?{HWuZ(QyPHd(ANk*C%ndyB4>JY8f$5TV~VVh-jj`4|i z6_G<1da^k1)KTeOZq^tR=yTEpG9S4l$VfG9T8$8)+ZX~mUFVqkj{D;o7CT0YHmp?Q z6q7HbbJp<@Fwt#jqDqf%Lj5cKWzVI=tZJsq6ROMz(&o%k47yh4lmBSAR_an}n;pl; zo;qmd3G9*{_&=OU<>3m`jugTZ)vegc{3-Mz!rfJLTdniK@?*cxWlgo}3Z&XarZT57 zgQWj5Epy+Uy~oPc3hw#K@_N92S!Uv~(HLAdSFb1~rqj)(`vz0u@w{!4IY1ovQ`2Cb8wCSc8O*>2pGODS4nrB&CcIZ@V zeM488T)%u=1KBKOi(dsx$0f+kOuni6uzt)sD^m9b7fMlCs-a_4{P13Pwh!Rg?fzqL z!uhlb3X0B2S!YGXT&)-|dSx4F^V|xKe8R2~Iu|w54)auP@++w-W&~Qz#Gq{tkt4>G zHgzV#cP7{mP25E5IHm>+l>t?4+nN$kLP9{gLAtv^Kw3aLrMqj>jdXXZba!_M z(nxo0y4gtATbz6DJ@J0+Uu&vyrU4tgH%Jgv)QZ zGVT4EoBN)ILd1ZpY?N)0+?N+MLBAbH3N4M%Nx!*MBfRRdoVOfDNP$ootVa+mhjvQ{ z^{tmhwmr)mkjRFn>b|ub{JIqL#}~r*N%;%ozow1i+i8$c)~7vvlkaL1UuQ}FJX1lLw@s?0j|^`7DlYHa)YS%hpWa_hy=gs@jb;1i5(G+CIE@ zs#_kDiOPxEDl-|PCEr0iw+W<13w$}kv@z6DL_YX;bl^t>7)O@q+q501yG@8Y@S;siAW zQ(ohC3|KYxTkR$#D8Dux2(E$1Yq|GTGW`RNWG~s-WJO13PBpLTn8P{kewvbwTK@5y z41V`AFJ1UnKythQgW8*HE2P$z;c*z!qZv!o*q{tO%ifu`AKRe~T-{d!{Ji4HTHL6% zqDMcJN9~gvJliyGLRntOM-RC0hP3~&Fa7a#F(hl+{q5?5_PWQM-!}-<0t=UZ-AUW_ zE-gwPJ#)ytGy zJdQAyVR=|9^Mu31d$Y{)FX1of|KLlydh90sd1TaEaPcnsF=m6obj87>S%iulzG?gH zSy8&tviRajQl`UEo0Ud$SYIj zm&*-LdSnOHloo#jE1rDIe9JGfNJ|(ecQhdO;ScD+pa1(1C`_#juV*`G^Mb8^>R_k6(2m5|pFmD!eulz!MD z$1yLeIVbAxvFk3<36eTf*?KqX7e2V`s7qdTl$KJVQ9}h*PW((Q_WrEcdHNOAullH- zTTV0khtx>T*6sM8_gSBU62{m>M==rJt8Z)ly#s*c5$Q)r9IFw&PQpUOEA#T{9Lw3> z)?ds9D?jxvb_Ecc&gz^l9AP1-As00HXfzew9XCsUR!QG@YD<(xa2H905r?qP58ur4 z5LN!KSAk9#r$*#9c8-dRQ`2gA%4q4d4EHimBDy$9O93&w(=3$4bw_YzG z{tRpM$Yxh2$Q19knCh6==(RFaMkO~U!FApD2~ zQ?wf6Y;X5^nv*Dgvdu3eqafA8s_mdFyF{&G)TZMh>oEABV(fU;%p8D>G_=rWx)p5< zJBF>$s724nezX_TpW(DETN?g(gW-X+jVzO)sd|aZ$j$O0sS$!g7MSNMoD=+4_rDc` zi)czw!xg07agaV<P{Pw)_tWI{xhEAAE z!qmiJ$FX__(NRTNBQXK6v5;r9y6uc&iHs`Si4Wo|;5P6mVE?C@{bywED#K+&hane+EtX(G__?+~1L!ehgG*l_5*`x6fS=l48{3zN>jc)^spB^O*ma52wJYv2u( zz!IC6fuH#xKta!?Ph-af$#l*Xd{GmG&9(GNRRhyl%EIJ>i)@+7@Y3K<5cn~;t=d~Z zlWIr53z@zqGQrj`*Rz?@?p4e`;g}udB)1I5-Eq<9xMfpDy@g*u3)|RQ)`<`OKJ9I1 zhdY7|ET+%sG8v{3!Qbl&>WK2+T=vMuWI$H(T|d=joj=dSmhAwaUD~sm!6uUHsYSkp z9D|}HI6Zb>$@E7x6!@r=d&JJqkh9o!)wjLPQdOr|%v*w33%Ll~Zr6h;<@QQwcEJo(M~WVsoBS-lC8*Mpyg zHa_e9cP(KSM+f|9x&#fm`)rkX4;)ju_VMp|7Sc$zVRte>qg#MB>9FCmuAprTZF&t@ zCERww?4q;Qb&Q$J#OBFAm23J^652#PtJ~F)*rXh(d&nuJC7q|W%A5AwQ7*Lc$e(2E zpu35X^M4pOWprqRq4R5pJC}XU)7gw{zT|+02D>XFzqg6~t!6`@JoIywdavXKVl$(w zmI+EQy;=gL+EOhOczj6Upl`5GVi*?=6hGqFKG@6+p-^~nz_ZXBe;%k$myW79L@k6I7r$w8&4@1ql_|Z)ZNt!<#2a zENj4Y$sVAhyL!(;=vzhv>5xutjNXgrLgbFjJE<-mDCM=Srf&FftzZ2e^1LhoMWh^g z>bv^E$}X>>+Z>_V=3%M0tm!Z)h0F4+Zcig%ElDYDiay&We{OwX#LM{7*@&{vQ;fX& ze8kcFEZlF3SkQyom!n4hgEQ^7eYxAF+#-A&MnFv%`yrk#mK&e7N z1Wvi5ggobAS#}d0Yu+KlbcB13gn>=&ge87)Mt@cdOTJz^i-mZB0d!27ab_ulwf^pH zP4yuv`L0a(C<+{*Ki`{?P!Z8)v(tTkz8QS2eggsWZAAAt>VF(A2BLf&)3%e(&ir2{ z2KIkxiv6C@I{VqNte0RywfR9=0ym=Us7m^Cs;#6!`wvqlo%u?0EQIR2$ggy=fd~{d z8P;_8IlUX~PC8~VqV4OY67?&kkPjY1MGS_y(x34E+LHY`8%aOLo#l#)sww%Us7+2h zK;!sdr~~^5^Do5Q6+7-yiX9P&sP}2NY<){p z42hg_%1B{4g3K|$S+iv$jIp5kCp|e?l-iw)<;Rn;be-0e3z4>*bR)25EO-XNd6FrE z=uCnvn@FbY)fxxg>9G!z;AcMCpJ$92dpJ#=M3htd56aU#Qi5kiyd)*FhVsa*Lv|K3 z2N1PzW#<88Mr4ewfE@w_-fZJbJnDMV30@F4i_?a$WDBM^Xz~&LhU6AIGj4=~Y_vAS z=~arOK(Y(RfAiXZz9~f$F&B>ig2Q7@S|r@_GoL^i)ww14wjG3uhFyhDTmH_$Kz&{# zo<+G1j~SNb1MfP8=LaqGP0uFij_xEntCxzVg7(x0^%M#!cAjG0FBQHC!e`(1f8dr0 z8Y(1k9(Vc2`R0HOrZ>%lzUi&INTuiGOB=qvX+otsbVslgA?53=u{}b87!r5FZx$`& zKV;sg)@sCHmM#6p*1g*92|#)%iHJXX<8hTyGLAQKCbvokH`-e0E#pcVpxdmk6k*=@WoNp?7z_^NxVfaxvk>#`;@z-mTj2@02TYj(Rl z6C&B93yY-QQeHa?(cvO^@z=5s6c0?{A}B-*OXSZy>y!Ks7OVm|>c_uP-JGvp(Y?`IIH;osf+(N0)Rl!BY}z!D%c*BUf_~cbOa4 zSgHAic<}6pVQULCZcuTXowJJ#UuI3i^{+(o|Mxi14lM@oz_-d#<50G-8>@C9HD{En zB@U^`-qwuYylQ1mi8!7apGqr#-**XTF|_}^3!dZ5TcQ)eCu|Wf+uC7XqP|!t6eQXy zGQ+vvl)d9f6cc)rrjE%_$)ALRxC@&mE8QI49 zG;B3Ly~Pgy>xB2mRQl?JX4kA~r>Z#1zb{7g+ka7W2^4A6JldS^!Q|g~y#$r2=)1Hb ze?q(_7XR-@!-RQMtEJ5a$a|LrLritw8LJt|d_ zoj0Xtvl+AXmaoe#1)Z@cEpjK1()M{rY9%|Cs7EzRc+y<*;|?h|{(~L+tJS**a1Mf6 z@HOlz(uLNePWaA!L9?347jM(tYm#<#k3SU1&|?}>{=0MW;ShVU7e7<<&RL7MP)t4n>D|J4fOdVbLwg z#jYWYN|E%D=h(rjkfMg} zADbM|GrM$fv>A2P=EXA#qm~rglQm1p(FP)Tve+YtT3-+Ug8_c3X;oIQIC9V;86VEY4Fb{#>rvERb1b>mi9Zw445EQM9a^r zVTL8wp-g7JHBpmXG?e`JE94QslyCncUQhxr)Ekd{CZSAJRbFOHrOn?%Zs6Eks_*{n zTF-zU`u8;x=*Uht(s553s!1|h)WDg~t#XW7JAt8f=;!A1`!n(Zd-UJ4`jc?rW3xsD z*mQR#`2PL$JG5~(sj$t~`h7}Uc324sMcaZ>;A#3A4UM!+1Y3o4BEu}S3yXI7L2>tg zH<$(S4O2h+#=^!Y8++#0zfX{Y-`>xY8EpS%QD+j|>+wyxuR{NCX#F|lz%W3fULy2(+zRVYWf!zg`QN2jHBhrXFnq=k{zQc(49Dlk(AE*i1)%dq5ytL(9dQp-qkSjwv`S z+dOqxiUm@w6XWadxi|(+9E6^UsywBcS{=J;3BZ$F6W zE`xM2G*%&fc-Z}!XscORyTK`wk7?8b=3_@={O3!=bMAYBOZTKmvRkAzsW@kX;$tv5 z@5env$Ww-=K%kv$8z@pBGe#A!z1RQ{6xR~#}c!6^xrv*tEA z%730m(=4M?jvlh%-(K0|m|f-o$B*&7<2(HtU{bE$M6cCk(6qQ#C19P9n{Oc^S3v}|XEJM$*FPGJ<8kcyr#yWa;ZoK5cms$#(cUc&bd1)BQw-D<`bbC|ph2r*3rrbE6+o0dL!>_dns7U_3wiS09jfinBm`|Ob*KM`1FNA zPQb*>Z#IgT(ev%3dy%F7=poNMww6`w(ZyVd>7q@GoXgXoiA<5D5cS@r4qn1eJXf0r z?acqC)Snw#sQA~2Q|99|hzd`Z4&Trevnwd`yeneCFsqy0uy5E39LY5R5D5;f7JknU zFdhhv_nbZkQnsYG?%J;@GPUkW`KhD)Ery=Q=N1Oqv}9C+ZvQ&UzaDJoQm#eJaT1yW z?$xW*_pS${z8*Q&xfL!4&Hpe9uG!=p#)x2{dFj!P`w#Bl^M9_AKxHzBsRx@;idr@u z`e;UW(YFOwH(L6v`v=W4wjA%1GVEr?9|vZ>W-)2>5@VGV{dahbB08;=P*ArZS{IG! zWf=>&5980bzCfx5cqP1A?oX@;rH49iGD9)MT~l(rAJy{vrT_I0iD>!jAYB7 z;$QItIBhP~4HzL&$|$(Yn;}@Zq+Y!rCf!7Hq+TW`Sz@iIEmC;>zVKQ1_pc~ML#&<9 zsz1zmukK+e7wK62`?{LUz%pOs9TFMgd88-ZRj!BhW6+(?hgtG@;*!5V_xvwLCb{^M=HQ;*^#)N9|jBz)u`WvrX6 zR9haej0dJ^r=1ehUe)IhK^gAO^qZYk%o<65!u(fTrvij0Z!#dN;0D<1p-}8D%N0qc zw}UFuiCAcb^U|F|jSyNrwb*~;$)DFJuP?%EkRCT%DGM!C%U{is(LD5grVAU3f@o8B z=wcU+e3b?7*w`g=|JgBcFb{#g>g7(|G?|WT{I7D`Ut)StY>#A#@^v&#nGSe!k?$Gj z-Wdw~wF3U}rMp6K4oT_C>g1dCsjnYvRa~a~hdi>^^KgBXJ5vsh@fott$gcUvvW@nI zev9S&bNHR#`l;sAM)Sxl#ydJn_Fw%z+_r&PR#qu@nucXu*171VA4@*8+DEhe_du)y zuE`whjW>KA5E_hh>4nQQ4rktBkKZXhEl3J(L|VF5aW;LqMCTcCJMRU)9mp*j{J*;a zK3uOlL)?-n7D4e__C{(Z*Sx{3eGB$nyPBB^7Tx)+`^?%`pKX&O>i*ee;jemVW)kiR zsJluW)OGbLq^(nGBZI5#EfIgO}3{fteOUC~cbCxe&L{#;^MO;<`uJQFgn-Y1VP)7)-Oqq2{YE47k znMDB?Lyi*(vmjzEcj^$;`P*}cn&3pDP|$>{nap@PJ%2~%CLWivWhF^5uywul<3K*F zRB(?s(AhIw^86$eggy?M+FO#IltdD1X)el9zBN0DzPFSl5%4C;wzwL&bkOL=?(X#wI$Qi#O5j($#64a$s{iYY7t>0ta(J4s|AxFPFYeynOG}qr?mP z0Ip#~aHBEIVUO5N@l z9?9k(qWOR!m?;uAy`AjkqHV`v=80zk=J4ZGvrp~BO;^(oUbq8*Dq&~vqp8kmPe~{n zKo6HZn|BNm0hoW2^PMqQSdy6peECm8pmIQy{tz<6G-lJhMm|OdzR7V`*u+GD1UTm*?buE`q}rcrr6+>AZlk5!X@#9@5qpw#3<@zSQVnMS$3@dj8`#?O48dH}+C zcT*B2sdFSQ0LVFzu2E?BPIJlf5!gx7B~TWn&4d#QU^u>^uMPU*8k0m^p%K&a#Ag(> zDXb5Jj&{?f+#7k?2#y*8JZ$DZbGUD_Wv8|QuNqSaXmgV<2Nw{hDzPrlL zPz6texn@@Y=6m?elEF0n+3_2{{$qM3?Nv?o1HDH---_b4+dY^#`>5mTaqF_Vnv8$< z%`bC>7or{)(`p_CQhS4A5XbC0?aRxC4xN^2fKNEir%16TB1y8xjYI@!f0{mX09|Li z&%*VLo+${@2!5uA>*42!UXS-XLLLlS07SgL3m)GHN83)sWh+q)o`o2?el1xV>9w?L ztp)(dNZ+@R*;i|`V5?M8L@L4RH#QHc=WlNBo;{V1m!9sixqLtD$mLz`ZZ6y;ia@ry zre9AqPBB@z|6^2G{~m3PAm}4F_7*U)O7;4kLwwQatnBYZz6mA^ze?$!bVIy(c6gEx zK9vqz^YEj&{DFd}QEL_(9|$_%mSaIW;F8=K2C#0~UO@YYS1!t3LF51{UaF7!BEtdI z!A9V;6L$W@=gH&g5MTnYNG+KcWDcG)O)FhwdqM`}Hvo7z;TYeFd{DAoDK{6uHPgNN ziGgar=7+!=yJ}T4vM`fbudJii;L1)vnN@>(AD z(|j#($!h9n+N+(_^#IA$iiAL|yGDN?Uj0&m0sVOvmH3E`O-;47BfUBis1+OneGF(` z8dKiXd+DzkAT@$U4eGj8iEh(O_m5hr0qk45qj8>-Aw9&%A9!W=NC+>1#1Z8NM6=gwrelF6HBRLbquh z4LHt`wiG`B)ZK7Q_Ai1LqQ@_z&8eqQ?05KqIq8!%lF2uljV!XHqSxXu&5n*Z>IFB( zmwP{;;O$TkP@Ub=AlH3wo-kYjsl5Oa@HrS^;8`w$ApW)2t{9Ot92J|%W`o{(PyD;U zQNc{Ma`ET7RE?>?frdBA25*2>?JtRW;N3Dl3nKS7mVmPAAx8x$@0n}mPEPb1$naSX%*bSeZOjqOk?Izs`o)xFb5adOW^w0{xQ}iZ+ zLhhK9ivBIR0NNjTonK1e~pQ({ArA{tWgp=f1Y z)N}#ebZb`7TG_Rre!_*XOqsLHvi8EcT5`@$gj#Xlse{>4P4}kcHh*jKLcY;ST1{i` zKC!|xk76rBD?-6no%DI>tO*e~{OoNQSc$m}`NKn7oLye>Q0y&z^653)msNoP zPITt4ldvq*!y#R1MIVVpsig_oXGpgKVeAi!6>{I5f05+x9z%yz6AMU5R=AM0@y#pC z6%Y-cQtUiyH(WxJJC=_8^@D3Ag|AlulZJU*(+qR4Wclv`T)=>I6tE+Wv99`IG7lzd zNOra(63B%~Yy-BewnK3o9gEyYqM_N-(dF`%W22qX_@kEt64uddTd}{dOGZn|n-`9i zJE|S+b+!CQtAJ$}p}JqtrNL^|DYQ9XjeCo~hV3FHr#EvQg8=2G9jFT)*FHIs# z6Y#1BM-#PyZpJHXC+2QNxvkzam^|@m0)Sv6iwM)~iyqYtcI|%AC>6%-^=u}DkC_$z zN%zzr#|SytAk-8y?!`CLkF()`V!$D=le(v7hHJV1qIaDOvkB|1t0}jJeBjEn2jh^E zqEzR(CvuggJ15Fb4x}IF$WIh1-0)2&&*WTKc+H98QHWpEk;_a&xtbZYRm6(E^lF`7K= z+ZB(~ElVPa*4EV}Lfk8*ef#V)I!m}%=?8F$@p{vx=Ad)$BW*nmgF})W*|2_+=0;O~ zVk(cRsEmU|Njf!na z9Zd7yp)IK16^r$2?j7x~XNcBr&d~@d2o`_$(wA&RC%bP#ts~!}?NN?p_Y~hV$M2cX zIak|Sn9pf`yGuBM3;o#@xR=kzPl7Xl9#{5!KYXb$H{^r!j9o{+7_$C&qOcU+4uGr^ z5{u|pE&vh8u5u)Lse6xV9^BMhM& zFr4Fszp3@-6-5IM_ZB%SV}nW7-`QoCE5O>PuNFoJHt#+u0>#*u!oKG*=^KE8tg$U2 zMz62L7tY)a5f#Lp;!(9hJ7tP;>@lh#LYKL36jU)8&#ZGwknb*Ljuh^`??;g+Ak0%T z0iUYlJnGlZ_g6ko4XZH&l6>0iPtO!u--`25zA-7BTQogsb=ZK;(_KeLHC%?KcWfWy ztrH(ifmV}e;Kq_kXmrU!Sb?{1z90}N$={I`AMU85TlgnG zGT4H`(|*5onLr#O)5BV2HT;Eo_p)Ve53ReDsn%onTgdI2@WdyC3-scyVTp`_47Ryz zKoz!%qH0sECD6xCH_Q!!uOE!(o&3{oheOwBlr)N~KdhR-(D?&NszpB?UHb%kIrQ$( zNfb5q+yKk?+4fZcHGv|J)kecG=N1|-?XC5*|FWPQnF3p7I1M5X(*RQJ&NbQE7rUr& z9$4zZQ~XYi&XX{a)VTrst!s?--+<@P%+Q{UdzBntMoVwrB&zjCcv&7-jSUoFh;C3O zVr46|GENdyi0T>`nRv!{7=e2QjmvQI!ilBr-SY8CzkK8UMTP02^P_@`Zr0}x@KH6O z(yhhJzm>4MXx}^#1vaGj+`|<-z%tH04eVb8*;%*%CZ1Xk)Qb^i zy5Y)nKp$hc4@-^FJK|^^T)mh>!H*|%eSE8DGkwaJ z^9`S=^LFZBPhaz&W+6BZg&5x}00jMJ~=pe&rm# z+ns)=r&$n7w#q&+Q;FtFx>Fe&&f0=rLwd(>pLYfvvt2(l$Cg%S#K!lLh7hn)C|q1Y z2G!cDKf`qoeM@!{3$a*vb~k+FyV+Ok;5EvI90O+~6!K1 zq1L3leGbu;O77Lq2h7zIm1u=YkcqJ`k;xp<<~={P#byPNLLm1NrJ93P-|96QXb{@? z-Cm=j-rl;lpA)(y&bB?NnN_Ul9{#2^cp3}ZuTE$6q- zJdz$nQ*g)QK}T?cO8PU^ACEKW+iVW!{5bDU!^q-tRqOsdpnXNiR8e^Sz0}!auzH4u zb{3HKDK9|{)95duTt=+4#mBXkDu|HN*=4Yg_!N?KIh9xICtHocZKl%)XjG$ee)m`T?276$|ORa@|!VaFnK-0_!6g*z$ky<9!^$GeWz zN#^fIcR}mZYI>90x4W-71n=gV76f)|R+E$JP<6q8q`d{W?c_nYhyR4ZxQR&VnDE3+ z0o>3razGidAaF4?*(&GA4r+?^EIOQ4i`HdIB$VRg*c!0yjqKaN0r<*pFB?P7-`f3b z;+tUC$+6ZJ28Sx#KOHV3eJ$&E<2n`hFU)-}B^v06W{)Gigb~W8GW)6Io#Is9wY1i3 zl4s$BlHLWK<}H>;OmAjmcq0e8zeO)4g?-1YfcR$mYUzcZ$EC;2f=5}~C6DPz{1uPs z(UsRu<`CQ1FyDE$X;v!Fp}(X6M1hg}v96+!`?9XT{oX&h?ROAPhWBkz(1V`dX_{I` zY5w`Jso=vsAcGyy!GE(E@BLU?@HqX#L(l!RG>%A9a09ow?ArC)gHBkxN6JOqdkHlO z3+G1FcF=8%|f-CQfVr)`FH|1 zQH&LdQRw2a>~T&twFe<2Bx9wJgg-LI|uu>8KAFafs$=Jk6g=%LQNhh4_{p})D%XS?1#J8MKdiaKX`G-hoUy@c0Tp_;8SC;A-IS#o zMD=?B!+&guerLzhe}xp!J)HGw4!mJ}G|AO(oP4!k=g~E&uA&I;*FvBm`pinD zBb5HY%*6NDQ%CGJFxv;|%U)H7i`9s-_ ztPS(+Ct2z<4ZF{h*&9>$x!QDU<(;8vxIAD(s*xh1GLD)@F}ayl%oR!2P_Lo%gh`%! z1$E^Xamqe(bVwPJ>aNqPjtFQ{-B?MJ&EvQ))1s~DsUCZHx;)dMZ0+Fqe9EF3{?7J+tp{+pi<@wZoHsB6of>W z^5<-0e)ypAPV&8~H@u{{hvxD)YwAD=1=VR5KqEt8-Ppj;o)c1x_MQzHxci-2 zGbcg6UujVDBwb@|&CdWcUGTE1VDFK-wjA5X)L6ydzerGG99xPncQo>>sJI% z-8+xcY6~5~hW(60&L}!tv}%kdwjIg~2Q}fKsc+z0@{C%~bdN*(P$jkCd_W_tJ~vu! zX^`iNV*(!=~BoOA{DThRPVm}uzxiP zr};{7Xj$py$c6{LPzpYa`YUV{9vYwI>r3a?t93Thc~6rv`a3eh;1~2Hk@1taPM@Ip ztOF9^Wkb^Re0y>;at()C0uc)5yY}BWXLaTie-%qd9Nv2e&8H8A2#)>nmJsn{UP9?%QLrbP0Lwy85u56FGItFMTE&w1R3A{5;3AV8uJz;{kX=ip8f&lyPWzlXvoh zH=B3`ko5Nu8EjxF1k=8AER62*%XIx2-wMTbQy28vmun>K>x42(E=0K;f>grcXV4vpk}h-3|3?bhb|;9o8^XKGJVuVDpX^#Zgzd0~;l z-Tkb$;O6khx7OYreb|J4R}yedPi2+(nhgf3o`J4RS!56=btI;}3_Y=cgXSIoY{)1v zNE99k8}Ux{r-(Q53^F6VdNT1Uk)Rin+YSzhSlSbGTro-cRo?7?5j0@!TCQla0JE0L z;Q9u}VA6Y0^K2sdafH_{J*nH6sl^rd;4#}_uwOdUTe40IP?S=rKvDsBM8>Q7D7Mqar$3BwHahQqtlOJgLwsEkFru1W85vT zM?NFp)p?WQtNv!+yMTSaJH_z5+Ae{rMuvB=ATh|#ZG7(> zGala4Y}0%+brFh~_uOp6SL@#O7hw{nKe~3_2GWPAo?P=`wsrZSNIX!4g=`e-OXdYc`4=sPZbX@ z!Je^UNDKGQv>vJhx*XNF3qd1i3i<|S!q4XtBBG(H<4RHF^PWUukorM6foi=FM0h$3rF0*jKlmg<)*PG)`|CZOsahbHac~0cDYi8amow7^ z({U`Zt3L18ea=+Q`Xr409Yu zi%NpQzB77GD`P(VjS!Uzp1CWBWE$%W=z!HZLvA)+Prj$sAYTwX9K(1!Nd|Vm_4LzQ z?QLG6ey=aOFbDL|#5(!&n04|jgcf*x?C$Kks1NFqW?59wj%zVgv&VQ)T&GFwy+!B< z+z)Xk>DV26rLa)f;aX7c_()Dz-8wl4+vkhT~3=!f@peaowrV&fYYLh%BtEeQ7ZaX0$W%x;*a zKLR=x_sg7w>j5?oJX-x(;L~LqWUNzyNNF@wjo=>o+pss3Eo?;$^ed>Bn|oH%uuxds zD&^i4o?CP!We*nj6!L1C+P>`h*h^EXpbaz=MWtX9%EM3be(~;K63XV`O+EwZ+-`N{ zBAec5_mn#5&M?BB&3(z;(Bkaa$IoQ z&@d>Tx47W*4E>+>lw{_L%J(P?r?5=}QY{-<$+RA-{iW#dnqpmU!K8C3R z%^EBo{FSKi(~)eW*H)=KH=l58+p4Y?+e&*HM;pCM5%kt=Cv}Gk7QJDQydZFpi5R_n zWS7h4DN0Me5_+6(LB2O1uLNKg@0XA8ip`gbS)R!EkwPCef<*t#fF7NxKI)4vjmfAJpZnUm zw_m~I4x@A{U#LI2B{A`T+YFcwxX#7rQGLDjT0`1ZX*n!g`v+6joOFrlH_nx7HplM3 zE`L?$00v$;bED)+KtQ+1^DO!`o|662Rr^)hUQ@Qj^_d_nuBVZ{@yF>h*vSnIrmLS_ zrQ#E#DtK-qrJt@p^?84>8u2X(*$--V1iZnU>R%4f`Giioqnc34c0&j?s4>t+PAI}; zbr$c+S6jhZ9%`+_qV1u`RDOq>{l29m3hkg(Gxo#K4mmEH2WP>TF?GB>hnqmHQ5m{_ zm2TU}m3CVRA<+SV``s91jx_`X0NSa{wb%!bq=I=#KHfHuh*6LO|4Rv`ws;bclK z3--Pd(7IdGufamaU+)-@8ZCvcxhKEof7VlN6ent-r96QwZiC3Txkxa7PWa6`zO~C0 z-&g8HXV8%8r0)FD3Z1v4CA5h)o)V;`GmqFW$J>deFK$U#IoG#C^z|!?HcE==DYSYn zqYF5Wkx%PADm*T)J1i_x_X2;AZD*k~4kzeKK9}#$mXET=W)E@&Lm{wPs${KnbY!@W)s=lypWeg}#}>R3>}Go;J-v!T+s^Ej-DEnE5-|6%&)aG& z_&m!j8S0+GAy|)`7tYAPBwld(Z)Uano1vUB0aw%4sPspDE5;1M=%=C@x`-*S<56qG z1e1g!-M}nN(#Gnjb2uA5J@Be~v9C#pUvg!(qoRzT{X#uz^j754CXOKXIa1)a_H5c| zZ=-2#P`eT|6UzJ^tp5cZ$B)=R#HkUMiJ8ujOPvp+& zh*LnmnkkinFU=8dnIV!c?A!danCpcrsc@6U?tY)^5TC*dwJ@aDH8HFrxM)s26i2N) zLWFk|P>aFY2{C=u63zz%pY11 zdfC<>R_GP2B?_syv13yV!YyT5-A*rwCsc9hXWsLgkf1RSTR{m8ycRmnlgrwF_w^_w zgTnpyFUi>#-oh=Y>By;FZ+)v2vawPW;*dacIpt5s=e2evP1Gk%@{m=pS;2-2X8ybt zg>X7&&J(r|1Lvcy@`DOEZVmUb;&joiatQBo!5QaP!cy74e?8P)j*pSJm_Q!MZ7pHt8gM+U0K1{+11)P#d;^-`My6J zo)o25;-@Q=Y!q5SP{fVDju5@Otj6}>QcjCobkdub+49YcZZ7BP%@fVkC`i`SsHMeAEegVnr}2(Qn+$o^U`H&p-WURvXI-f}~d@1mk4A%~!x zQfntq+8a}^U-wcEoa%_DY(ojQ#b>-{oSt&-dxU90(NgO>_A&zOn6aFL5%6gVf?O9h zlx*Db_x0ZOS6&li!+!ThP~T8Hcz0f$3l6&uUzM^~X2fC|n$avn(2Ji~;8@b1!=6LManLJHfj+Vil{wVb*IjpB zFEh4Pzc$WYmevcsi!@W4PH7;Fiyof&giQc=RN6|<^s6cNL(xa3^|2Alm-CnZCXFQ5 z+>+QSnwTfMVP#nUod33Gl-uh;^ zv5BubkKJA3F^k;2nzD$9H!1IQyL8&=uL%%0i2BvXHRQz=-Q9~K{JxXq95(#kVWlS!+=rtDGkrk>BK6i@0*IR8Ty8lMyE#Sxv}B6$9Ld70L<;Y~b$ ztWQ*{T0=rW7siNdC$nq)W~d~gOG=cE4~BvfqxWiY<^5O2FBMUA_fp!>+wj%U0mH^| z+qLgnB@a)vFlo*tOx)fx*iL^Ye4-#O3VB002!8`l4~ZbQxskXwj6c#@xm&4wan|!R z`W<=hH1%>IBI_30`wUw*6=K#vZt0Euh@!4UM7KqGMsdvF@Ogvt&mh?Mf~>i3gr3lA z_3?f>+Rj^TnPi=Jxgj2%IM!X`E75hHyX@85s4L*696_-)yDF857&^&t9A$V5 zwyv}C3I{SQ4;Zy+g&7WmMU=x`L)b1+0ueT~G&oH^#rs#QY@NzHoxv;jW2XnqID_A1 z6xmO7Wg{5-N>2>L_-8M;#?D3Y&eJ|xXVlBF66<>@vnjKFdW?oNSo_KyfA3`Xr{zx9 zN7@xV#FC4IDd*KpTp6p0;$<%yKet&aY0QRj{_TjOnUlzI->i^U&j=hOj!Jqz^_%b3c`K zld)=Wvai=wd);9e7&p}!C@IAE)lVC3QLjL`55o2e>2WO)X8m zW<{%)*?0xzQn8e4Yu!b0&ZLD#77*3D9O>AWH9(BmVA^q+%0IF+SJvnHmH&)hZ{F}ADKZ5_c>7?kmT_vW`)k)=y))pU;Q@;!6QAkn@Qlgkw-%PCSej`3rm zP2G`d_nBDz^|uuBo_c4w^qeRqJS)yHf|ZBkt0WF-;-bq<*Oo<{zE!Q2h8yV>Kx=(} ziy&ONIC!}}$mD&U#~1#em%k^4RJI((MTTaDt_6|jPvTBJo?MSf!ZKdRm`AgZuy7al-Br6dGtm6nv0Mv;;R0cnu#?v@gf z?rsn%W#}0gQo5S~hVIS*1~{ANeb0BE@9+GXz3;vEeXn(`E84Xvhl^WigQtr4ol2uv zIlB)RTHiz1GZ*qkw41UZkfae{Cq`$pBDMtP zy5AA+SLsF4kKDqJf5Pm#QmwaKkJGU%D}31~l&+CnmJ-E9c#I${VW(JX6-L98A0ct| zDM{*Y2On+O^8TD{QF-AM-wRFTjgPhgHAEADUaFg`@>a>tl@Vr7N_NsLCi{C1#P}Tt z_w)ad)sNaxyeq6Rb2)rl}9wG^$r{l!x0CT}A1`u#5%(cfY?Ww;aUaH~1<(XT4|-&_-$xmq-EjPbq( zIrDF~ymH^W_*vgCyA#or;vI;+jSc#iUHTQ>(fG4?9SAh@xJ`@^uh_@1KFhfL{aesJ`IC zg}!DAI3M1<7QdPUnuoai_huJIaI>I`n@`OY=^CXTn^~9QW>u)m6tSgUH?5=xlF+xG zuua5uMSt=Iir_~vs)cXx+WE|4cZ$8M@T`epPvD2uAiUd;Bkg9p0C9KWk?g)AT(r=j zX=QU!^=e%6u{fvU%EG$kld)*9CjFO#{>YO-4GJ@1yV;pl3VYJ2R01#Zw_!o^$z>jW zj}iWKE#1?6N07X4HMGeE{}egtvP>klhrYf8WlBd@2;9X=`}hQ<$$2r*WmU9A(4OLp zj3^0v9UR^r99ql#3Q{uRV#(g$X4LoP20O9U2R(N*!QrF$NMSC%ZWH%QDY7o6n2Nce zVnnc)(y^?72Ptv7#)7BQN_d2hqPuaTJWKU!V_m|kS(dy$))G~|qSKQg&XoZGQP&>c z(HiT=FUbtC$p6M=6YYN(y0FGR=wSza*u)2fIv6lhc@sMadw&qW`!q7?^1M=bhn4)@ z6|o~DwtciS_RB;}n)!tL0$>{RlsC`}gJOxiL84UG)V9hNgWoNZTt>J4z&Qmn;V!vQ zEn3v^Gxl8&)4G!M0~;3mA`7445a>yp%Y2Va6(hA-Pq;zJ*sZF~)zn2n5*IPkN}vG{ zlSJ}3tvXr4P+=K#xgXTg%)4)1$YF&sDR8_-VKl^h*@$Zf2@NxBF_I5LKBRcGzd6<3C|`C3wA6 zVB^0QB%S^wt)sJs0mV#adV%Sglf=xFIyXB1hR3b-vJ{^=00RbaoT3w{b}E9DcgS6o z5pkDT!aK-hcHN!2#L`vp3Ao_4$UnzxW3#XRC|WImLyN$|2S|?9pMx7lty8ohnRagw z_XLsiDRWiA^ULn%kay=3F)6zqyZMSIf~Nz+DGodRMLAI4zZx(}_Kd=`cX*6ExogRX zO4JSGSqCb0xqf!4RM`f7D;W%nd1>)>Q~*rLgTs7puZ?P~#rXte+-$#A4YI<3=u9k$mTco0^a# zwael@+l6`>di!zcN(&e{wsnoxz?;kK4T_02q2p~;s_G=hD~#5{4ix~!UCdW8P;-Oq zgt@bL_p1wk&mIC!<)S|CM$h_Dz-qUwrTG0d7s8;M1~2feHK z^Pc?(&QM)kG`WqTCSfff;lV&&f48t|l|Bz5DajsF!6-Mijd6olV>#L%F@$}Iu zmtvcbC(?lwcyK~Mo1P&1+Ycvl{4Iw2PXoLDEyNv4XtX4)r8PIS;WnbRE<(@~1h;vd zApcCe5*r(m2-LAjT6Q}U#aGC}uqNDp?zn>L4@-)U9{&=g|52KF*k$|Z8E)!LD6X`n z7Tz0NXmOJA&Nv&;aCLGnN}ha}nsd@IJRf1hgbjR0eV9M8)f`;vQ|K*hnkyEFy6;T0 zp$yY)0Ye?Cyi!nWS?|_luI4Dzua3$pdlTxWsu&Jh{DS$zvu6uL-Cm0HN+yavVKuM| zT_}$|Q6ccl!Mf|CEH&%_*C_~}#Z^z1ldGS{w4+sh*E^=ey;@-q`Ak50L@uiClIMgD|3~1;%$65afza%vX(4HF;?OQ_D@9;+hcBg|jH&g$b zX?$x%?5A#=Zp+NbUJPl{Uv^}&i?T0N@C~zGu9bBPm7|A7*ddS1x8D8cT-UCYCfsQH zgrdB1d&8y3t5UgIOnBiGjpK}A`VtR`Wn@N<18_q4Do*KWj=%pFEU1mpOYvGnBd`i_ zbyaFHCG(w7m5EZH8XfiaRxTDI4$O3aHY$d83gY96^KHn-{TUcHzo~!Db)De2r>p#i zzg=4vXA6x$0n;+~*-Na>@#t4`qP#2y2dy;m1mU<+HlJ|zv+(s%H3kxmd}uWl`f9_f zWBp52yTjmjaiunal%cR5suz7647~M^M=&3ScxV_}ej^OD>88kPxV&0?Jw0j47JUSg z_+H|MV;G24(OAud^RZvvpwCc0wncQPL%?w}QHrF6C`V}yw+q-W-bi4s5au$$KmxEe zxqoq0Ct|=B#G0#|4L=le+jyWpCq2h=c-%u6h8x5x@niOfx6RAE#q=lK602JNa}C79 zH8wR%D+=#Ghy3-8gGj+Et!|Kbs~)+TPgnK+ z&Q(yA7A-dslDkyZk&9}wZrbXWRu3izWNdNMp2aieGJMNoT(zq9GS5JRM2~ah_8ecC zUab~zrPeX1mibEVuAzu(VD8VPK<=qN-F~{zK+Fl*qCj9aU}isc5h>E6=BFrzluPdo zFLU@PY%d-6n$8U5815_HBTycl7QtKaLfH9yjE$&0<4o0jq>#A&`fKoQV=jhuhPb0$YW3{#;S71Z8s;;8)QfxPd_xh8dhHIy zHbR{4E<$`16;Y4-1gaI>aD{LvNOA5!3RzTtcuIq22)*R!*7_DR>mvB4hgCNv6jEGW zd1v?B6sPN)YW%IrpW)TxFLF{_?s6`>eG(GxhGHzWD(%^!iN91>;9>u1xf5FC#?T@6 zvGRLeHmROPe`27f2sQMwCOr^h((6XEaPo}w8AvuzI%}JE3|SyaAXaP26&WWn~T$$|0$ z!8{FZ59t(ddzJ~%o)<4#&2&XHam)Kw*0i;zv_0NuIK@jp<3Jm49m_g!EwOf|ud?#d zf!WQkndF+hXCD;RJponm|Mc0##dTh*m~8jBRrF3~9J@gC2j!w+sX1819n(IIF_oh1 z!-_fRTzDNZwQGO1rmJ?4#`np4p{y+;OL{^d}Vd^ z8r?JZlR?pHVD0r?f9JMI@J@ZV!i2~r{y15i85euGPt$gdnN#b;y`Suc18tkQ&*V%)H%#BDpmV9#zQTWf@14#kYKX%7KE1DV-Z*TXVxv zA8&u)TQJL<_j=lOIZb+2AHKOcHTW@749y=+Q6h=l^ zTzOHC6<4WaixfX)qQ*%SZF=CIu4ApwE9eIsqlKwqp2s9aO3-Z)JjNL^jFG=u=J;`4 z-`gW-Rd_LS*({$F3|e2wQjG4cYiGAB&pRhsh*TyYUO>z~fpEzsMs|8*f}YxC`0z$l zd6}|_-bv~=)*dYD8}tx19N{@xw4+I2zEE6Y1%zSOd5sJ{UK%ZnR;)oBR~n0X{Ce|E z(^CXAle+5}-em@{c}>sM*_~>Zo1BzZJszp^UDymoT9Dta|!FWkO5_;TX%ubL={R{f&Km9qD~ zn$lGAr>)#IPk!9y{TMd+E>{%gf93xCR|nqxcxklfJp{t^Ij2@M$XaMZ4`P} zw50o~ajc9KyI#rZL9R7gbkpgFfwZK{1<%k7rUQGVSNl-kDg}y=^vF#~brD)Npd(gO z)4!Qg_gqt-xHkn#@m=q>H5f|(dRL1jL*@U)&V@r~ZX_qA$vYU)BB!0=zS?FJ3K0%9CJ++l5a_Q=e5Br%RMv7BA-en+U#Tg^^8xRcwjM5l+d%Uszi3__;WIU!D82ilr*kA zq$8Cdw?~NUcC{>$hoCq1V_?s*$76HXwTT|%E4YVtsq;*>p4p`0G>q#OM7eVF3#@+< z-+#E&zbP*uFf7*OX`Z`wq7_d-rpx>r%V40D3ol=j6g|)Q$l41%=NwwY_%qDwzgyC* zEEt+{p?@jn1gVZF3DS>f?`CsSj%32oN1FxNFun@(5?D-zRRCC7!E=1^vPsJ00X6?+ zuesK@hc0%zuVQ=mY=~HhMUaa5lgJzrb4{AfUSU|=wl!k15LKQW(^-Z0R-HJ$*n?g5 zsbae7C#oGA(m@;nmT3MK{i_yM$a&vx{xJuIfAh&-x>fBy9zEgTG?#($)b9IJ5~Xa#tk7s7|1sAYylzq;mtHJe^4=tM!Gs?@ zhDB?=k}mt~6kjU1CfipYQKcxpy}s~zJ9N|Pn3L#Ir=3w5Y323$@_gV@$1{VzY$80l zUVGJmrE0-5;X=ge6rNe!=QE~OcyM34c13%EHevkT>iEf=o0 zY_X9O)U3{^Yw7AqCCwwNAJe&LW=j&3Q7Zu1bf7u1M(sMXRwUW=iD_s zkKl$j_$uy=Gi+X4SMv=-pyHahQ=(k^<3lrU7_%7*-^?V+?vn-V$uBa`iMAO2Xg(oH z6h=SXo&CpdX(IM$y?B4ds)5wh^3Uh;yDk} zKV9`oW6{sug}nw$Xw;P(zz%LT+ms9h1KPHtR?2G!1`x{7?!g`zcg-HYTq~Z9qD`+= zc?sQwrj3>=2TIt0H@?r4GosX&XhyZDe4`iFOG}k^4?P8^4|H+UrBHV{m+ZBC-OuAG;iXFQysGy zvp~A(`re2}$(bD&FPuzrNNC8|;{*SxwWMJd>Ot?6TkJvmUq}`?8mm&q zyj~f#bSeeSd9|kbzzET4zp>(o%N(pK*i}+SirU?q8Ez%D9!3v5pA93!QL|tG0WIQX z<)Q!)5|69i=kc5@R3q$K{Qtj%3g}Uv8W-^g!Md+Hv424x11nheG+>|&X^z{|@dYy) zGl`%=f9_by*LKe)u&Ozi5YJ`aoqrSg{U7R~oEz8!wIYB-Jb}b0!3`ebwnTQ;B%N2x3y|lhxR${XG2?F$sJDb#n(EAXW089n;=22DczTRMr$?6VuP-Bu z5#fjb{fNDv46p}rBtL&ocIZsezT8-lLt+GsS3~AH*pYP_8Jx8la_q4#j16Edp%9| zS?UEYc;8|D57~ylClO=SFREO-_jW8;LYwFDlh?UYZUq^^eMMxFzm4?P$!{ZX%$u-M zl~>5WVD-@gT5^I1i-4(dQp8!Y03N>3R_;^ZlC;Q?*F1-yYP7E}>mc9NjU#i!K`HzX z5sr6D7_`XN*1B+1j_a5lM#;g#wvxy1@W+0Do}IRnkp|{zq3#c`vvBtooeL-zEFUsc z9UK9T5`Lvyg$-UdAp9kGAgH!IaQdH)u(x!|dq^zLE`h49&}R18(EUx!F#<8}0*=W7 zRQXONt{%{hHy`}x94qup_$QjqFaP_6YjuA1q6l8IE5#`!vitGAdEepJpA6Ev{eo#6 zPy6JPT?$X!Q*q~g>(t0o=Zw?ZP3Oy6?9i?h*URO=VHU_8Z817ShvuMT? z&X1Pvj%n|mqPkB@fN;__*ex7}_aOiDEDyW^G|T&~hd>nJ{SuZy!+X3#dPUzX_c^Oz z8@*ME+P%(mAj-D>`P%&hjJ@=y1HWwf{)piIPg4N!o>AH^G}UhG%7|a9PC5!V^epAd zKd^Ln^Q14Nu(z!C*LMMB;3am9|5*WcIE}X@-nW4gVj;w2dzG+m4kJGx;_}7!>pfoDmuM;+>^ZpWMoH` z!OHa3-<)^kmIC3I2)&@%)osxnAPvPN(5GK_vD#nZ;z|sN`Yh}HiLCV7x6x83l`wo) z?GK>G+5wAnAVllZLnO$p>;n9D?LQp%Xb-3f=508wKXNJi5^8}t_8&eU#4l@C&qCy# zC*b^`jV8|C($)bi@n{>MGS5txHh-*Vh-@drf57BFOAyTDc&*P!?*e zVH~;N{(svE8TXS%xV!LS;X|nN%<^>P>!ZCkAStz?4S3?gJJNZ8X+@TyMNdi~l88Bn zp8MD>KmrK}&onJs(h3YNs(r|O!49eub}UShhJVw4{a_VoL@<>06wm!~<<^Q@q8E8b z{o4KOmn$b=gIY5_6TsDw5JOAyp%rI6tuaPmrIvN-uV7iyIJTl`5DyK_A8HSKPb~pX z9EOu>7&WBU4^9=-&^<6XXE=wWrzh5e|z%W2z~N}mTBvY%|HMO<*B~T+WfubT#LxSQgj5UUDG89lU+tZh0B@x)=K?dnoFX!47b)1*H zi45mK$8sC5+3%OhzFV-~<&!o4x|>7m8kM2duia9@F~i9@b506J-0dSOy$YjBB4lj) z9}?xKvkXNjL7p+2R=FZhD`o#%8b7Rtqj7Se7-1c9@v_D6`p$z)eT;L$%}hZ-h71n8RNXN~s9$p*4 z-9Q_3_&fvY|Gq4f!)sR*1|}+3e|@XIbdIWc=R%0XLkmPy1rr8P$kHa6>hA4 zJ^1!e@M{V?Q@E1^-T>AUxy7o~WXRy*Ku?UPw0Uiv>e(lWZ7?8y3ixt(df#IaF4x~a zYs5I%dhm2ua;x&uA1t##RhJ4F5fjYcgJKFZ@@9S@{O-i$s8x-4x)Yvf+L3 zz1Hfwn|e}a1#SJ4zHyAfr#=~?8;11zDvtS{s~l%WI1#U7sge3BmC+2z-$Ux<+E6>ak(^V%MAhQ?vf3U6^HfmU{zmIty$gQDOP>*H^8!*Fy#Yp`0R1 zq3wX%!34~wUOo<$crPC-e1&1&$k|+)zUkJ70_+z_ivy37IdrI!Lv0KX@-N@K&Da6l zQeYb+{J~|a5^Upy!jKVZ9<*6i5E+cr<8`E5T3Pu=l9@xq7C zA}dJ$1e=_Nr96J290EnpD>?D}Tbyb6yc*)e7Yk@<<5?0=43 zcAXODht<;{+C=;}KgtHcL@?=McVlh(TkY{k*ab$y9UJ{mf|&zO$Wu2;@?rgYeTJ$G zcG}ZKDMRy&3RfS0pC@{r46!YDz?;>x1V}_Q7ch%#n%W8G&&PA_%HOmy);e9AgyY-- zwlfv{JHRdm=;n^X-3p!_YSLK&-w&)jHzU5HKiC3Nw?tUQ46P!)EcO&{pMP$tb=35z zy&GkboD0=y%35-uGCI#ln#?T=;ha+L3P-FRzc+Ip*j5322Owo!HCcwrzmZ@@7F$qb z+H3?m6>93b#4=3 zt8-Oz2yo6=?=M;u>)jCAzICXx|E*iTD56`{w*aZ|_+od*e1);H0J zC9LT(o;hGA(C#;%Ky&Dm0M9&}j63#k0BzGv>s$?|?{efMiXOa@;5lYKhjk68qXPa6 zi=|YFWcpn+J}<1#H4u-HfzFk#2Vzv#lvibvTyD5f&L+rAma|d?&8|1+XFAPJO=f5V zj6(Ywe$!mnkphx&wBLGEqSHQ0%_kH&V8C|}Nf!*#2uGQUpI9}nrd;({h@GZ+e`Pw2 zwT*bkKHv?xIT{6CrR26?nzP(CGY*%uQrgV-!7=B+6O-2GvM&2bdv2c3`+cYUy&M)J zDa7z>Zy#dGgnJ1|jG6s)Qe0RFid$qKkpbWYuo2hY&BS1c^!@G)TPv@fc-`)HvBs z`FwX{m=N;UGJ7Eytv{W(Ke@@R`Q2SF6_3CPUTpLR#=C3m3z$ibYVocEY;khbY|gFr z!l&4upEr6G>K3pQg+)&f@9z%Fc-g9FM$h^U@2WY_YZX^B7SD>)eLd~H;=+ICK8zub zON&qbYJZ@JLq94!&j<)@n8*Q>t@qmDYO?Ne$iF$w*eSH&D&A* zOU+oBopf>f|IMDc27=Hb*)MGzyh}#wB4a&5*y6)F8rf71lBN1x>Z!8AB8j?RS8sP* z{O9~MYG#P7>z(>uGnWEgqv@Y>^-Gk>1>Pq-Yyz*I;5W=M=%%n}D%AXObbVRwJeqV@ zX-yU^I>k)u1*ppNpYT)hei8fj@E`RM-wtR{^&{}lrr~~rp|d}!|DcR{HOZb-zk8b> zPt%D#J$>o}*x`rk-;bfsbc<}f4Gy?U2`I&3EmM##QkJd(D|MsbKq=kiam82Z6xDR^ zu~tvV(3NPuJ5>=}(09PrngeVcgqt0wY`}PU&;~2uZZp7uK%K~*XY6e^6^|#-r8N9J zw;Td^DfI*`=M@f<9$2iiReoukSx13PU>3l%=%9%|Y=;tLE0Y^=I~|af3KmCoh*SOQ z7l6zT{=>+iR#i?4oh9cjWn)ZQHP2{EV?J7R8kdu}$*Y)9vWENYF#Jh>wC8*R7;O{| z3>@%bZR`;EoWK_^zH_hopI+bbRSDWl+%%i@Yy5z{+E|HseOT$y?4rTu2gHDLltjQP zvKLG3?&ddJR3t8kaV%jr+Z~mH4|E64T>*D^l=L0bBx>DS3t}xgAlvMAZ84VG33IhN zIktB=)ersA^E7>bY1S-8o3jroTms9EzfG5$kR)#H}faA@egFhG@Z)t=-R6;NoLf1M}_@Ol+x+|g>(4u7R zKFJ=isYZueX5pcDvX6gyx0h1uu@TKGe7sn*;W~TZPE{X}j02`k{gcs$KtJr@1_A7( z#D}JU_->&V#H@fe#K>XxJQuft%GB+4*DwILk3e|uPuqh6wk-$Mn}eIV_v68Yt;uGj z%;5a@HMC%-G{I4lB~rWJN#^(k;My0eg+4d*U|Ucb-fQ-6qn$NMY_m-6rCkD8f1nYYC^tw^%L5V8>AoQ@_&0 z&{xpn$L`lT12hISIYk==?eMGSuIiijvsTZY^!=LvZv^2_22K9_3odcJ&m5JPQQwN3 zbv`tzqlUJivHyHoqS|Lrx3^Z!wg=U4$&!T&KIM`Ix{03j(CsQ0*ufk& zhygC;y=oVs3dg|EYuc2duJ7dH7fdp|zaFq+?2;UR@7k12bHoV{%--!5_%}_g57flz zw=JI(;MEA6YXURXW|8o>f(xGu=p0B_^OH`}ymKCFo=}Q6KBa7Fs376rUQ2&BEzdP{k7RJxMs41DW;{r<(1oSQ9_Lhj9mp+}TPfknH1%QcKRLSHlM-1z_ z4blCvcq!XTK&|sn7`2l=FASd0E#;|8Z+k+IFK(9ZJP6UQw84WhAA&=aTYQ;F$P&pF zh*jIG_=Y1)Wcn+(#n+Wj5`Bj=>O+*zPD2pd#vQxfhLhwtyg?iM4)a+nPVITf@}&$`+bz+@<|>E=gh+IOorjp%zo!YE%^hEOlBIl!vm(J66_8^gY{bxeWG zmlgvQ?3U((74Ck87}w*U9#ExS4D0rcE#)=g5Ckv)Y-)w{AD1)Pn-JLaZGZhl1{NudG;Z+NboWabE}6IG(d$0D%QYu7WlA!@%Cl}m)_pBfO0bb zd+DdW9tY=yjL(BDpG1@knh5*&Q1RlSz6L+%13bGs>pVEmjke%8*eJ1y7JInLdNaz z61}cwwc9iQqCZ~Uh);>Ug&9Ia_vLPG70YnPUNCEV=q1vsgVA@TGA>EnDFwzxGCZK! z-hIe6-I?=8Sk0dGxSrYYw5O)O`?WE|SEh1I7P@fe4itxkjI36XknMC0*i4sumEG~x zrgGg?G7RWv1l}wq3piQT+u3<`5{5rF>)&UUsPB5^$T^IXy_}nF(VW#^7YgR|KQ7Pr zz4~0MnxnxOVZxA*V(-sC=winj=6B=FyBM^=b@(k!N5KR?@TbuH7?FmiG#UFiQv21q zWNhC0>=!QV4Bmzq%wL0OB33T~-RP8PpVdc6W0Ca8M7Nt=D3C#(n?3PZn5G z%39w@`zNvbaW`;pVvIj?{)&m z$A8s-VARCBSDF^JfI}^a2@1b}{{Z%W8iM~2*3k9a!s^soD&p?KGUsk4fA#1Dl+)@k z!Qshx^1jXqE5~*u(@T4`xznSWu$Z3^Xeqp}9Us?@#{7w}yx<#F5jsTt*>OG%7p=?p z^dQGIYO#d7{N*k>{O#9>q8jR{;=4YNMYr({ar@IAMejcKEQO5aPxy;*E+?!}NzB`) zt2gKaoo2b^cHf`q?#3X_V>3L9RWlYvd?PrGH{-03U+BxdO&EvpX=Bd{{(h7eNVv!R;jB% zsV!oOwu7xoN?QP<1g(zh5`O?B6JG3P+OBj}%mj()UU@yqm1xD;nUWb!TZDE{AE=-O zcfm&S8DlCaKj8seN0wTJ_-tCry ze-AT>U-hykuZD}AV7-tZrd|9^=xhzr~^-Sl$$H|9d4Za{5%t;08UPJ+XI~0WTd72E2pm=wEL51 zXr`Er$i3p~8rdywu>P_5;h6rdhld;xDP5i7crnv_;8sUq|cJZ%+C%|?FN{%XkH0r|R)9wAv(jIuYH2nmC zH(T2dZx=;>vo})fft({1fwMo^Ef=*+5a4?B;9XnC6PxiamUXe1Fk8!8oP9pbjaG7U zISQ5V@mAMt#cHqA9K-goX_CwZr7dg1am9{rgd1G(u$t|N_eIF3cW)% z3o93lr%~hA`ex){djB(cDO4I6%IRyo?`gFP!sjoRNI{6-0zCR76B)AY34&%{T7_U5 z;MCOu6N>2FoupK~OrAn@(B3)D(q0g|z2$OzqEHyT;z1Na_6}q)O1XFx)@0;T>xe?1 zm%#j*jjl3|4A*ICw3@)^S!LROVJosJI7}{byRAH2*0hyIx&eUW5|aZy9_>$>XLDPA1_ILzt z7+}DbNpV;s{+6yluxr?wBzw{#_;H}vqtw#-hy3sU1Dulo;ONu)A12|Qiu{pltii%M z8dkEzXlXm~6#{sbxQlGBu_cPq&Za30D0(3dBU9YKk<(osV;hTPl z{6tefl)X1K6uc$>^;GQ9)M(j2<(u6P|^P4=_ zIhZInK_T!dwW)jC-^W6c*-TyI>tIFkLr_9eAK?qhig{xGmy-s4~a<|V5A9&$uU9$eu z@l_#Fs3W{Yj5yxbi!=|;xrq~Ios_YarsV~)oHv&(9x>1bJAA{3^#~1Lee34QQ z#=#|3?d!aSIurkEh3C!%cH5G3$Et4*Qdly5jaM;rzv~fROi~4AGJt}p$&aPciZZp= zif2Up{#1OrEYL-5 zC#S`co4~6Kv+-fZht#|?m4&aQk@o}Rjau$qX9?AIDwV02Ti4bLy*XeWM%JfrIN85+ zyknN|qbzwg%_e5L9qn+saj5obfF$HBxhgL+K;MgOxbma-O`=rS-{(E}Z(E(|K`Z!f z8YLzW|6y)=^D=|sZg!t-vUj}p{UWfKv%Z6u%o{jVRbl92X|Qwulm{^ zx__+2Bth9*C}1@vOMg7-A2NnW|_e;4Hf$W;8R-y#!3Ro1{$w zO+6UEuXjRf2}qB|k}=kMG%H$vqAK|ew=+Ac$muAoFqnCWu}J$O1*6(j%spPii=rK8 zdHf%0H-=X$LW=X@!sKCetG^zDc+F=%8!(cckm>L6baYn%So zPt_!=4Pc#IwV&A(zrQ-C1SI22f>+t}3FofzLN^DH;hu7v#hGxZwaKAt349tOgqxYL zKBtLJnMB00s`;Wk-Sw74XyvB2ue=EGt?oUaf$u>4=`2T zjM`22VCd`PSyVkyqvhYF^>q7uCx10clSF3nd6#B=uDObH^BVk^i}Q&-7cz%i^cv{w zEsst|^IMH~K~)Tki>eixDH9wpj=NrZaKbn;7SvDIRqD z0g#mKeoJ#nEaZMzO~M*@E`?!#Ny>l2T-_S3jbX%~<1(jC&6yrLyz}=ep~2<3%z-*- z)TNz$hrkiB<4`hn1gpqfRpi4!aA)YBXpO8taksZ&LdnB$kk7iV_aa{=PI2v#Y;^|q zXEe8$1PptC6QT47$_v0E^x8ZJItnXn*}l4ddH$pHi>Jdkf{iDfnNr#K86WB{YI^vt zHZ}}|$fwt6yqx9IArFPn_*OQ6g>cyY7_IvhH87tb17B0+aMovkhd&YK55iY1;jp z{kDJ!zY$KSh)B+|ZqF{BMGuzrFOM0(bSjWScO~P|G*0P$4L+A{w>TkR2io z7auF_sGc0%CF%00`H92MBF#GZh$Smo^C@@?(%D8pbKJKUw2|D4af)O1_{*`$9}{De zeeT84{3|?yUB52Q+*Iy@zgVqINtgl@GO$?RI5Zu3LB?!7KMZCwM6$fn*ksBQ!=dwY z`>CTAGQ=wtoGo43%xWTKiRy+TGsewJ|HI3jiyT4KDUfG{a{`vN7j2V*dq3nLDf2b! z;TYDEHVxDz#<_xET{+{T+^xMH@w@TW?JUug*iC|L}yGdlV_e5$JbSN)zVoZ5tQhGUP~0{D={ zbjOdGgn+YxlBv4ah>)_5@Rpl}!<4i%@k+#^Rf%8z8Ky z#=nY{N&I?-Dh3a{U;1}3`?JlC&mA%Uz9L~w z{qiU3Jbc12&BF%hlm_TlA(pjGi5|tnkVyKg$%f42FY-{_CCQZ{GBaZmNo84ex7uVF7s76uvBYb ze~bHcSS*_?b{$4Hg~@>NzRzMSvVvodIuo(qDytP+#-SJoDMsCq1^9(*=uJ#TX(%^s z*%_~X;MBnPiP!#u>Vle3(AqqqUBs(PHI5M8?zK2T^Kzqjd;8SP-J0E5p30^#q{Y{e5!8HZx zz!PBT)SQpRWqHWZaf@rK269S`Z zH#{o9ugcct8@FYTlC$1(XYkm}NcH{A;6#;wgs=Mbg^&loUt=Q)Y$0tNB)Tv6=a%^U zC0(1`sDwfHRuYP>v&!%<@04BbWy?^Ju);N`ZS)Zdp zC*&5sb#LtVlE;Q}ky8M%fw;eXbaOZFeM;j%kqzWGJJ3&ZCh3=msb`0SYge*KU_uOd zpYl$JZoD*z(A9w75$jns``c^o9UEADhrqgj!sVWMXl`#L_T|F{ z8R{fubCM7;xeW74v*Qc>qH5WJ&Z$klUL3yFkHdmTtwp;OKahL_msMsTUbf*mqBaod z(~$f`r*uO>X%;!T7f{LZN4zA-ZJ1Pe?(cpV%t1r2ZXNDd88zNRJ5G&Lz84(jYAR8o z^lEO@Dll(QGLR0^9k_aN8x5s(mnNf}2hf7D)_Hz^kEZb~YjQ3VC-h2o`u#=X{8}9w ze+WiOB{bn5bUHDw?KAJqD1}latJ!Yz(QaCmm6g5nWnu&$g#$qAuxZ|#lDSf7!DD0_ z`goF!wp#A2TUFifVR@Of7i*fwsH#KfU2X?4$ts3ebuI!;U-yRmrM-V7BkUSudmf)w^`J;og;w+tmC!O>Kg1a zehnVuyRGgQzdtC+a`%?oEHE2AG2qMQ|M~8IGr(Wfs|)N=F%N%utK(8om=Mjo^(xH8 z{>Y*hv_Z1GtDvhd`Ua$V&lLyiBN1uyK8Edh2SM$rXH3lKR1Q>0&m z&Q-pKKYD|Y_G$skC*IJC*`$~k3)Gi*^)0NC!5^h|Atdy2QVCD4+b0VP-P~%ru{QC{ za`bC|+U@vhHzQa~?dA@30{wH&v~4!Dk%w+~QPeX}%sorSUB=_H@F}mvA_3l30qT zh)5C4=br3tdD1F(-&viv`rMK|R?;+;Nb$Luk}V<24n-6k07>DfW@}W$p%v7>VwVE6GLU zzeA3D)yjmx@rFj7%rMI=G-G=#n?A90p<)i+da&Bc^pk-x!tVmcZ1GK#74{l+b4_yk zBAfaU$`Ff0v?4Tmm1woQ9oGv7_jD_)G&?^fPxteSF==+LDtuu;2X1tKXtTsIc~#Mq1M#u1J6;QS zpAEDUJz=<`R*Yldvd0T?m!}N%RbSg?Lc|55suKnU>c7v&i(QrM#pBl}?tXH93zCN$ zG0~$!Je;Hid+eId1@8*Rs=2M|uWHDRiGJIrj(;xMvEOMSRAwPSlF|AtE+KkC&C(!0nIe32b zg6a5XZ1@FNb=U8_?`=IIuhXaa)k8+k=CLe9izzisX1#TjkKn`^uk^SL9u8;?ra|q( z7Z30!TiGKqb%sb@Z{WaczcI?&$hm^URokq3`5LgP93@1JI*e(1NPe3PD!&Pb&luoK zwVFj9FZMmyRz z^w)m1(U<^(gTLug$$qs4%S+na$n`Zpn#R)USH7K@|MC?(*->4HLRKkRb7pX}wP!cj zwWgQUpul%EVMRx|Ug}CGQbAqoVYi(wA5f>Uk|Zm|xfVAorrN`mBwU`oT;E&_oW_^N zI%Yxm29OY&!>g(H*w*8a>$iX;&2I7&e8Q(8UVBBCK-}}&@lhaIx-)e7t@D={ zSAGR5ymotgT~Fbl$ybY6M_$uTfgMQBLhB8) zbZc{*FnGa=`GP`IDN0q31F99pYuCU&6Zl-WQkyr9U^a-PZURFy8(_nJc2pwHBJh=w zAHv?m=CyWpMOPr>9rAR>Tw_xjOB-(};+Y+VR%&_Mbqm>KvcM)$*n2g1;3!JapzXK1 z36GECCfJFvs|;A__zXaa-0IvS)~YOJT>+mjRRC2EFn>ShVR?NR!bce|DL)efhs+yn zxqp9RSUj6G(v5gvXBA-h;_`Pbchh%&(=>er`1i9PByzrNZylG55d>{Kkik6r+!(}c zLU>TxKp{R?=ztYGD8fZ!CkUn@G0NoDxA7;AIedeG=3IM&BbY!YVMUmmtaO@IJ;Es18m7nte5A|&hpexRiYwXL#)1WR*8suYHNib0c;oKw zPJm#+-Q9u)cL?qp+}+*%JIvgCbML&rdM#Le`jqY3Rr?Xk(mMzvb%;o^ndugHL3(X- zMB>%`TzMF+@pOFuKHf~jZy%r7%=OE!JtEBG@SnfryDT?4nh$4R9vK+qD>j69qlt>i zC_;$TfI|ni;;)coI-mDb%``^N4PM2A66&s2%}ZHiH8rI9DHDEo*G#|h%w(x*PwQC$ z8xabXd5jIN9V&UXeyO&|D&rFbt~85QYFkBKYo_Do>(Yx8(fQR!LtnA^TqDHyj_eexHb<+Q=^Ge5hmYeIXUJmmvYv*r zBFd7_fD4qIf;f^ zul376;xC@P3+n5OxIScjUT56@JO_3L(1V>4#d7H}=RNW4V1~gE*BFWE+wgEku_(cf zv8d-`W|g&4g3X@j5O%728GyUQmX@1TF&09wI>}sHano4MBt~%2aB0r=&zuM&GR3Ua zLWg7Ew0M(N^F?2Lprs&P@AnF3j0rhU&Ce3|R^#65(sQwLd32Ezea04=PlJ-sSR!| zIClEodIauQA-FQ?Fsig1ZM@AGureeCDWY{&!t)La3r3|;i9 z?vO^$q%Tx!^ke9~p}UA5(YX?mBs#Hq6lfq8p)YX=oZFAbT=Kn9>Nk8#s}${<32d0A zbCu?G%&UjCEqZIU&d+ouT+*&>rzD1WOZHREoCs;>l#3O$(TmtShWSx z;-{1ksa|8NvhEhOdIu(Bh8$m(e&T2~N#|H)h8bVY;eq?X2dboL)@}_cM`_;4xnaRH zG!Z$B`5KlE#z{S#223z!sO=xm?32iXn4reM?rkbQsTZOd;piK1QhQky(RRu^27Nee zK0nY#mTl=OUDmw%0g_(v8Xkbj)95I}^1iA!eKBc^KRr|}WEYe^_FeBhhz5L+4DD90ONE`!RD(z zJKlY8h~_!9B0BqME=+Ery;{b>0pn7_0n*{Yd_(fU(I*LWxb*7((};5U3W2_-*5^lo4HPTzMOusWES$F1ncU_kVElxgfiX4?MEZws4&{xHu3tq;_2 zyfv^f2E;qgH?-1bsJRg_Z>N8bKW3NaeX(~d)IV}GDMZvJ%zsQ$#M&cJrtPKvY_&n4 zHM9S z+B2wq?LOsGzs=`%%3`i(8T{HYseXYOe_lF9DR*DC&UiJyTAnA`xv>Hk80^bqqPz;Y zerd~o)C4yp%*_iMT$8q3o}sA&+|^C$5FIS*Oe1y1TF~-_5F&lJ!8DQ#0ZDxDL!|kB zD>(p9rG~YYZ3n`d+tvNtisn_yq7-kAm{Pq{`nITQ-iuWhx_jQ24yiW=yxAAa8PvCp ze=gT_1ZvV&3p8GHTwXI)4q54PKK(VrxccnoNO=V4=ASg4eMRT<)`6J@WqdAqGA;_H?ZkE3pR@9mZJm)+i{ZY%AV0Tq}N z*Ip0|cGE3|S-_{UjOWo&1OdB&JwN-==kwJ=mUWd(nt3tRjpiKozQAgUX3JS0 zxyeX2BC#g5)Tw*Wo|YE-y~U78n?rlBvjUeL>Nk$S{E5K)jrk~{g!~bqkNTUdiKlGA z+E&Zv2nduW$g#325A5_7i&NPakRssegU`o>jpgd#E%j=_{z7rVZM-Z+}D^;ZxeyS)F&qcGr=AZ^reY1g_kv!X;Ek7viZ45Mma2Hg6POncI=<&B?@z6-@gwkbhM`7GsD+IBkKI80mDwMIicp_o5Et>zRYIlqr@ z|IyHhr1jGP*#BQiNCp6J_qJ(yYA9ykKs&K z+Pi-Tsfiqgo4ddQ|GrF*>~Sm`g{Lji9g%mIy@J&GyaB*pGD`h4N3ybM@q-Rr*&myK zF(>y{zW&;_7KV(wcq+z;OYpFtfPC!U1_LldB1Q=b+y+4iWfd>rZ9x6It?A(xXZ@PJ z)Py`8-;uHrX~M!)X~!fPo;~2d?x(F?ov06`KVyD38Gj#yIuTkIH5ss;o#|*2gk`Hd z0h@wWW#hjW3hg5P*(XO1tf-LI^ZW81SoWFJEn)Xb_TH*9MY?CCW$#Qrw#|H_Y-0w7 zKp5D|0PkB8bO90@1y!&7ywYZ)y~h|icUkUG;nt~^!^DYu`wX`zrlSWA>su901wi2U zZt#NcKSNF7<(2D;kURd$0y4|q5;$3`t0uamkT+~}JeaSdt|x`)!kL`jgbK>F|BcN%Ucc`l53~zv}?Sv zJgeNtWepK+qGd~L)2zp$xAUaB;yR9rJ8M4TjnbkOidfQ*GIk(0-od3>?F+iB_y^pL zLkc6HU&2O~t@;x@vlo|5K67w^2%_e{!jrX00#qA-KXeW3ZcH&der z;6s6xG@(#ZX+)?-{M9lMVB(H=?lL}__fjdk@Pn~j$uRZF*VSWCY7RzcBo~pEv=Ud9 z4BlN~D;A^1q@mQGljGuGb(kY7-a{7+v93IWx2_l5#V?|pQEXVj`r{Q*mM&^XjS9FWS4(E5*C)==P-2#%oQ@=(64I(phstU3 ziyQXo2aVwNF|F7bTHi6hDf-;9$gKFljS zLeHNrejHLgEPkl0%y78og&Ff*n&s_1anq2kT3^VP57pFC!YZBB=J}F0SsmaKPrP8srgM=@PcW=_XLMw;fuDHUa*g)?38tE#AP}))nsllt z=wOS(D(D{%euAx0KvDgEthQ?RV5(#$uJjjfBNgtHL8$rM-}zW#m5u@*k&gpjZ!u`H zOlJb6VVZrEXYR=H!1E00vLsG!oR!pV>r?-fdE}z!_zXvt`bk9+R4-DTFi@!s2WR~= z#IoZM%m)F2fDGf|d{U0LbRK5`4x)TOv0m{LABZ4``0dtT)W3jAr^`OAX^Vm_!c)n5 zQ$BI%$>p14pll9;D2i#Ng*3fds7vw8UbqJ&D{jtSnd5(vfyH9l?Fdo?$jo-&ZKVZK zXeig3;*U=Grh$}BHJuFEfL0Vvv2!$%lR=9V}MO-Ge&v1*0FZ`98wBE8vkyj zCs;LqU|kp+PhM!~s%~&e3a*F9tzN4gtWqLmvewqMa zT+Fb$3b%%3WCGXK8PAsm2O~5>+;s(fThv$YBo?k+k%Xe4)8~d*>wXf(64D|N9hR(< zU_7WS5DjryJLQ58ok1Ow%<#=_MqXdbVklwOG)cXY*ze*^5<|l>HO3fhqEm1R5+RAG zP>COk!!hi8M+xbn&tR$x@be2;IJHNqw}g5^O;!)$?N~N-j6e9lb(_i?x{E{ZU2}&w zz{X%F?`FhXdYEjTL0Z%qxEBDT5Yv!w%@Ik6vUN|nvU3a8^CZ7&vDX`_)JcJH~f z&LV}8itY?AtSWS^o&1rn>#ub=-v3Of_0&JQgRfr@Pog_K1s@a7XSca9W_Q2tG521O z)>)#6^v$_XT4|)35dZ&#;S^zrJVu-^0X~DanFY6nKAwlJ&nb?O+oG=OFmSpS!I%uv z@jIQ&J+-azkJgJ#rX*;+Lfk%YgP!j)UR>Xdf!E8(A3}!fSzEs7h~Gf0yQ=Vie+C2` zHEUx+ndE#fA!7+4Al|cL>ki6>rf+oEpC_7FoIv+YCZ;4ia|Hjw9Z~Ay7%0L_r#pwdJn{icQJau|Re1?Mqd-7ZUp_7Me8vs(96Mh2Qsot)u z@1}QgQ2Bhn{D{ss z$_ZHO^q|k04>QmoVbL9$yUjPq-884R&Y=sl;~5&wzr)YuLX@yGj)C`wC<1H98E88V zVEhhlRc$|u{rFLJh}R!G;(0oFn&_)d@N?Qj)f*Fy%8eD=Ne zn`AOW;3m&cl|JE5u5t<(fxpD1qii?FTMthD;l}+%0p=Bf06RoW)r{YqZ3w7pj?kvN z5SZy~G#!E=54+>Kf)0bR2wSn7NQtX9X{SE5_(^_x2PFPhr?0jPU#(VgVMi}rQatfC zd`faAK01~06d%v`xZ|KW-OnvLM3n(j2BBSeS6Tu-cQteP~d(1 z4|(#HoNB=c2W1SoDD6T~Mo+^?@abcM_HtQV!4>4T-x7_mzSyQ-SK3hh)~3jlnPox10-IfZFVuqE2uAa8ZRHsB!NSkow;FG>E0$F(VNa&P|M zCdN>~!SLV>8H>&i*j#(oqtA1B$cI&(weDTL0@ptq+1FkP#EspgpO)V=yL3ytyZ|?E znm1I&?%~?Hwb*SFdA`nZSi^!90%79KEDLi)mFUhunfeb)ZnfjRuMU{&Oz-v6A$*OG z$H0NI(V(Y_?1dfGa{>99<)fUPYTXeU`W=opKAQ{jm2v#zN7C=EENV=2I8F3eMP;3dVqDJOJqL%g2L)f_C|I;Hn zxn^B=apxkdt?6m0OlMurkn{2oeKZh-+ZZ^uHPz!OQsY}9S7atizfuwDax z2|Q@DTA9meO?!FXPi7Q7gWG35{>A2e6(>G+rlkry(XRX2dT4mF46O}ScoI$GX>ctp z2EOzr)`f0VKjD7yc6NKXuX88?XpMqFBZ~nhy!J?S^Y6#+VE01=R$viDHrG(jGW=%Z zF}x|FAnbY2Bkrh+*iypdsvmM0xt2$uGaqzp6U+eW@C#q^HJ%CY(=YSt8yU6#RSHo~ z5E8lrm@7-an0uSuP620g;}X=iiMVUx!@8B$tM(2KO5Mu_U~EC$r>E_|l8n7t56_*N z8l8>|8Qqn-9RMbt%IAB}>gAKR7tG=|0N3S%w&La2a;@HqMaNfdYO(Lmla zt4XmFV`GEZiR_1%{a!(1Q-02{yTdx`z>Uz-s;RuYIw8fvQr?@BsSCM#KjcuO&sddK z7|Tx4688rG1pW3QwA&%$=iLmGcAKHFe7Q{Z_gkmA`b{`UqxmyvG`Uc2P>d9&R;^!_05>1 z5V}T~jM8V%z85h+KFx}e7jU)Nj1otB-nM==vgsoYj72@t!gK*un3?Ur7EvDJCo58x z=Ox-zAZ@4Bj1dpJz1qQHEHK8eJ^t{%fxS(Z6db<3<+@RE%0!>5YHZQ>ymnM@C)GYQ z+V)0o-mZH;qvH&~8kafk!Vo%K!4GtUJ3K4_{K@kC^6Il!l2dWgko(HRGyHl|1A*Hv zJv1kvs^23eq|3>US&v6(A5fMvB;!+eB|8M-_`N>*wr4TC2R(cUo znkwR(j2~1H%i!fD7vL!fg;V@zeN|gtHS7 z0gb=aYv~0%;Gq`vZ1KxK(F>sAszIpKcX)MUY_-wa7}-T9*|qwqX~+vc#k{H^Oidk) zM|io^2x4CYuyBG@_hS_pK)k?27OX;^%XY88bo~j5dy~?U6(Lmm<)Cc@r}@~CO7SB8 zKcXXpc$~zV!?WOXEsvF>bjqQl=Jf`D@{N3*tO@y_=FE^^L<&V zW-%RUq!1aoYLq<(E;$RtcW_7~pD6O4Ij>Q#*`77-wMSn59UpWYCLMhyT>t)lC{(B* z5|Ma+D71n3r-LSb<9sJ4Bj<@q)?)X(x#O}jn*&A1o1%rfAH-g>;lZ5xJqV%UFWgYA za}wMGXIK!ghP0N&QLTix#NzF!Hc$lMz{f5sxJR4#cN|^XQWV?n5X`mw6szEOkE69B z+4V!I-1eOSx)M)L@X7OC!9M4KQH7vh`zO*Wj_=QLL?$ASNI1*wIlLo%bAT`WKH+)JtgA0NxITo$ zBeh@-ir*IGn@Qf7SpNw%VBrJ$)2}eY>%+OTo(iQ|U|z_wE(s+|$f|Vzd216MsLN)9 zk4EkfJ!@yZtonr7UQ>hJJz^m1!x?T2Aqu)f7<9Mj@nDQPg@ z&+8P<^rlWEaaWL`oqeDkrEZcIbG{K-0&k84-cYkY9;_=VrVT`sHN!u&-UxP`*YoFX8q|t{P)@} zYj0TL2PV=ZW+!;L=jmIQgf)4{!rw^Vyv>R`p3-LyH2%^^pH0|*b8!8uu-Oh5k?P~L zT4i6pRVa%CzE0Qu&-H#_Ta`|E_iLZ@_h_CIRQ(4g)Hue3R$zNA;wP8i`}?g|VN2Fw znUXH9X0UtT5T_%0cpENQ)-j(Cr|iX+x0{k|$v|x3@;MzQZ$q=1DPG6fw*tY6^8}sB z@z`+ML5Bj-Yxm{GyX|}Ytv3!X6~Q2%G)p)>XSi^vF>mRk__uBUs_i{31adCxL`+1P z^=b7hb^2|LrG_P^qk~cn?#oOrT#`n5Mi2WS;>hn(JHH32tAk9a^312I`zO+DI^Z~d zMn@q2^d~FM9@EwQA?%X^<(C3OGzZn zrF&kx0;B_0CB8QaGr;_z=EF%)F-SWH%4*dWJ$UA`iw%Z@@%Z08PEPs|saR*RWT_QGfNdo56U(-rxkep#bfex zHzz_g^v0`4EnnXI_bnXXR$hWpZ*XSSdUF}~HZM|?F})pSNTpW;-8R`}q@4%@V|}#; zz_elG#9emTnEt30LxtU%!SbmdWrQxf{71}Zd-5a6g#HUhr*jxd{{iP>%5AE2m-Wng zsFi`MX)X7g`p2!Z7)rufW}`4>-EG#PtK-T1^5Wk~_Jb$E^>? zYZKCph`j{%-{~bKY~@C1Aqf=(ydH0vEMJ{FZF>V)NBJhj_8U>~Yc(!7TPIdHx*u#1q-MdHz^&$pIl9&n0=x8EM> zmxrbp1z5=fr=%ZYx$c;V5wcsi;z5OdryXw@=kI*CwA0Ippm!EObm+${eH`jJRFWN1 zIy`b-s<{Vh{ew31re9nf$DN+8Wp&>Nc$*hTFHPQbB-OL)4S&J&!9PhhC z8(1T%~r2T7C=)}dIvll zySHm7sgAfD&NAy}cwUDbB%Gx0VAznxs~U(VFzfe34*OgX^u>$i8b$TiZl!*-)9{Q8 z=T3|9f2Jw?VL9Bz7eCQo$;E2SKXpAz9w9Qg(?+upzg2+)>?%fY-EBYm2}>)zmrmw|Gf|>QED*ac#Gs+tgNqx3L+30Mi-(DU|cc z<)uC;$2zkkeBE1YprGL)_%_xk=~7%yf5mhFo=(HtR!6N5Wov*GOa-HT54SHze~gk6 zibt1q{aTOB%hTk#iqK3bbmcGI`^!DCdgpo5hh4Y|zM(W;&gX4W;Y|u7<`v7jL)zWj zCfzSNmgb=i5%XgUYHiWY7=FE1}!4Z{A+C5xe3HVI|d zrW6JC45x?8vB@*mCfG6#>s%jHa(if46uVZbkVk+I01sq+?uRvrG3T6>qRn)F53{fD zcb}j$K$*x0T?h~}g0L4~!(j>cMNq3W2rljG*c`=WO=p@Au$&hjx8WGRu3NAIk*{@i zqpt>2rNe(IcwUItTXb3|wWO#KCrYyN+Dox+#T|!^7pX*y=ib-Mwi@rJ5dTdtcNau4 z5s&;MIgv`O1`(Hq?K=@akHycqd)+5Q4mkN?4*}jZ6^1tb9C*rNqel;&D0>>&ja7TE z=ewOi!1KcT%v`--C#$17U`8m?P=ZG!me}-n;Q)C?VL0KrMzf2pj?L*WWG|+SNq;zW z85qs#J9PHr+&k5sJjh;R5dvbi{UHJJqh4a~MX6s>&j8Szs}+8sGkiRbi{Vdb0(Lwc zs7njaK~Okby3^IvOn~>xLwrR)CHnWoPSjJx48fPFdb`1{Q$UA@R}N=ssP8^bMGJky z(xQyfL|DtF1rYc8rJ-!qu%&!KO+{~eGpk?snDFt7)>vZlr9MN{4~3hr5w3Cx{v9D( zJtnT7RRuB!(%gbv-)WI&<99Ub>OFKZ*(q*=e%CyTOg;vGZ{9+N=|f6GtsFL^k6a@U z=OUAgRJBVx{$oLVBVm!G+8@?gm&Gc(xj~M~ zJQj~1Dg%?jJ?J+3ZkoxU21-bT5zs%~XESn!@0V&+z@!C9;9pXW9z}4~W z&j@7T3R$r|ZgbiFB&_^vdQeqrM%9!=y2p9HQJI`<C5Oq~g4z!RnkN`D>`Ofr zKB=Mp2kTR|vTt0;{)D%7)c2u2ecYhd#eU>*Rxa81#~m=i`7+!T8eVsCYk-!Qu*Pq_ zs)~*9g@uWpNDl;?l4ZL|*}7!f!J>lJ!9F+Oi0}w<6BKW4QX46Xy`=+1U3%zP)|7=N z=8W%-7YCHq&2cp2%yf&K8%PiIFyWQh^m(oIp&@1p{%GUj&QYNBJLlam%sG$Wa=qA2 zGE9o1^;#(*RzF-sr6aqe;8~P0QLxr} z@+arvf(R2A8nvIT%sbYq*gR&b5jJ${D;&9By zyOF0SC9ER!q^<$FqG4v7-Ykv^ObR=JCFhMn#QvU{q5J7Ip4;vMV+V&<_J6j-WJGY= zXvK0nUB0F@+7hJ^WbaF$u_>swCXYUdU7F|;!62H9>eTopY;QjYR+=cBx-Iz*V||U7 zvfnDyKjx=Jhp0_O9y@?RHy6w1ZZ!X;9K{CvHJPX!?}04O)Kc^}ob=5kS808DDC?40 z8|J|V5ASR8`kHJM<3YGtg*seNeD>DbrY4V>k&K*(hr40ooSxd3Yfw|ZPp?}sHVTiiO zM$eGF_=Bwc`ad)MuhDJ(4BHMOEsL7K8y}8Kd1DB3_e9WZ3C3FbxO{~2=NEUOPi_Lh?fU$g3>jIO7N_1tm?O+6(5?GrIK&;n4yW zE#Ktqv{&_#3&XRD3$gJ2+&}a0@A=J661h=zI&&Li?nFxdmX2Uvi^1-*347obsy!{- zg=coq;ZrI(SBMg&;G$0ocAq;|=L^rDweg=NGVJGbw&369G)cGB>{RLH1tMk^&r;w) zfu?5UF(%?-UZme%N}h)N(`|pJO3AR`taRdKZ}X^elF2dP+34T=!~y3FJgSrUxgPA8SM`5(w?9V_QCJaylqgG7P*SRN?ufYWMhHqmkjjTo zo?U#SKhY`d{51@BjDPmL$7-?st$aGiI{xPbjc@O zH#_xQ6q;xp!);$icNc9B-|I-+Bq67A@r#;giXxr(uaotER`2V_Q;-m|Qe0MpxyxEm zOULJn@JS+HL~s}jWp@(&7U6sd;SslQVNq)F2+WQA8~DK za~_*#g)#HKepM<~nfz@W^U|Y(&c+$lXey=f%GAFj9*vk#Do0hKvC)oO*eK9tTxNY? zM2excAGo2*eClgZ#nON6I7j2O9{g*`v%x_`jSR3b2(!LTc~5r%+3yfA7qVmqGN<2v zx1B`xhC&zzLsKcT%z&>T-4t}9N|uoDe}Yb{5Q&|#J;*nX$^xWpXAjw*U|z*wFD|+H zcsJm@PqtlzSIehIr!qL0Ye48&h#k9V%575rzcYr77a~d9Rc^4ap<6#|W!@N+xdC5V zY6QgWBHf(8RKI2#9r*mlZm@M!EgZ|=`PBvgbvFGgdf%h@TCFSxH!DN&k#C5K)PWBG zL&qwgqFAIzUX&hSD6XcVq`1Hqck=IOGaMu&*2g;B$mlx}_b{F9t=Xlq@onOFGm6=NMOB!TUj9~>3tr6Px112J%{l7q%3j3-oEj*$20Kg#d$ zlFs*34!&1lv&j_j)7fDN7YZe-u-h7_(CZE<bI~HbkyV zPdT4tsphW%m8J*B`pul@_eBANUO1YK#l{@BG?&@7ih(4Y%kLSa4UQYiOrjS4Qt~lI z*pk|LGvAERKaX97WkZI@5es86#53fg-9jas$d~}ZPuZrwOoL0m_9`yb<$2 zzqeuLZP8aX&k+3rfba9Kz`d&tbxzQng10s55UOq{q}jDd&_m6%HOI}eEW2gGzmuUh zGI^^+b2$FbTmBV)d^r((yCC0fG?P`rEz~S+){AWc3+6Tse=grft=E1ag;*||xXI4Q zRz4mNG#JDEKl|JzHw3QrFeW(>60Ll_B{s!(m>qH_Zl&Q5z|R-fmUev2reKr3l)j=z zt-?#=FZ*Yx{=Nq_hQ$ep8|Oa3L&Gge^XaFgMN7sSSJVu7t5T$!)PK5vsgSl%GZp{j5ue5B$J}nR2zn$&UOB*jlX*;|0Bs( zDOokMOp|CMT2oaF1%O{xbX860)-a5lA}#&$`?nTcY*@*n$G=0|C7|AKr4UJwRU?a* zzM%P2&s7yb=&JtoFqDZ-WiPl=E)+JfCAdi`?5RVuG3%49g7X+{!~VM zMBA9alQ0WI69*|MKJz2su@$cVP}r>0<7;_eVl>R3_3z061M9%-D$c?%lG5ObF%qsu z@2{fmPS1Ck4jNDb`LV|j5)_lBPX(f#Buzhc3v>01=Jxa~yH-Qir7 zef&P17lk*FMf}vDt^CB0K|UOT4*x4D+{r?zRD?6)|76gt5P68J_128R)i=4$&8!6O ziy&U{at;nae}iz>?7Q>+?;@oGO>AaP+Irgy1$b=LhLWu}#1|b6c6c%Qn-X~%5XjE| zI?Ukt_;8nO?uho}JPITkH>>bn0k_YHb&Gc93lkL53uVpg@MLtW^7IPW%n2XUxV7=W zkd(XlmL$v{$f|8Ef%pXf>p1<_47|jJ(4sQ+huf{SMoqqd(V zW2(Y06Dd&YH;m2I)_$PHW=!UEIVi1rJcwVgd`c57XTYm68P6`TYPp(DN)2!0j8E(w zXhI;9*-;I~v3ke%!(X|ldyd)Gh~eG87V?+}Y*4M z!ydh0O<-+HcljkBPSnmo9BpR^CT#~$Av;oCi`(8fqY)Q+ipDS{R&?>!pp7#>VFu!6 zrZ$Si_fa<_)lUP4DIH+!~4!?d-DUgiR5B9bAgA5 zggk7oNsp^u52ROLB&qH&`wYTHZv=9Vcm&5s`eMy|#G}MPGH6+)r9` z2V$vpdkLM{^rSVt0R@!J3&yyNdEZL>x#_$C8l*3tzcvA&0y47TqYVzLk<6qJx z3Lr;v_pF>c9Z@VUr{K8k@VaK3NY`lwT#xt6a3cLFYG1y}=Wm(ZS9uRg0xd75ySd{YV1WwDY#?l4N zvBBX$(GH8D?eY8+aCBhoia^?R=syAo?Wh9hQ4#(}wF_ki>D|GKJxk6j0L|>QeSLBb zD5N0)H9^}5ks44o4P-84*G{?jlQ{qv5kTJ_PEp}VK$qtmU-#jJgv(=0$?SqdRDZQj zIR!vA^FlC{4|Ahl)6nu1(VK&Np|uQ3T18A#S49QsEDCbGqe-m2(6~T(NU#&YuQ8MF z=1sV%I>N#pwEjIw%B5h(UKGapX%T7bwB_gRTxs}*oAA;kGV-_T=Pz?j>4V=X592IU zxqDW{gwwpg4Nn1~WV&X+JmmEVFj(-#4VK2>47jKbQ^GH1#&SOI`XQ^9 z3u<=xiCXpJ|#1jNItGuclN$v8A>10}frrxJ!&phm}nFJ>M&aITmJ% z-MbkRv}@KXHQIohn^8kN5y+|`uLY5WpkooJvN)y-dVAFa|2et=UV}RoxM+6uD5l2O zI2~=h+fJd!J#u<^x(S3t;%YyS(aJl=$PY6+P%w;r`(-Z0qEd3THzmM!qi0TNJBU2o zMnMayo~Co9@St3(hVP!n$LBu1?5cWzC*fP(1CO@!JX?ms!`8X7OA#CVm(ytp3Ib;m6cK$-`o*K$2?jt|$1xCX$3Dq1KL@V{E=y&h_?-$-yD<1@D2W_Ndn<;7amuYJ>9 za-2Z~PABkyUB<_HK!$f1zU(n%@;$-1`}Lgh0(&5ZQyBYnMWs!|hvUWr2J-DZs~_F2 z%JwpMC{J(RVkPEbDbCM!?P9p4{Vxs->o>T8KE|xcA}gPY#oN0HCTf{roDHyLLG#UuW_oW8$`!2g+Yt zTibiebnBrtmg$K0dLvL}&m`GNY>qmIZZ@5n7CP&g9LYBn)10U{g&o&O9(|gu5 z*gIMRjTZoTh$XLHmklfYcLMIpUJFIaD%zYhaT|LTR4}sYyy11q#Oa zfHI}?mNlPhTY-EA5n!z&m>7VL7N&gcp8;WiyNn)?_;!*CWCeJMz0_XNtRh!KL% zF6p~3Z7(-39Slu}dYlJ`Mx30l&Ot~()*`KH-Ewu#x%pb_TN|J)XG1GU(GQ91sK6jU zIyySjJq=M?=HAZoS=F+ekfc&`#Tr``RMD^%t>4WKg}Cwn3TLGnk6Yenq1yiRwX+?k zUFA2gCMmaooW6ly#9Wne3Kqiq>qUF{svrX>XxRLEGtG$eow@I`S1xsY`m$4ONcs7sN3L;Eb6<{P zGMi_kHiK7#&4lugf`O=39wSguxToh+mUKg7{97tn>d*Y43wav#=VPvfRY!0c3bzG@ z@x1cf0}D=%@|;lZu!qK@>F8FCd)oj)fc233r(X9!#r=Lx4yxXgOZfu%@`E!?iqmrQ zUHo-cV1DnzZZWe~!SDxQ%b?$QclJacrA6xq+FIqwbK`%)gwY{oUFeI}pfM zMbf6<0!1UaBwnNBg6pD5Ks?jZbdEve*6r{nO}PLLodW@YHK?%lS!C@(nx`yJpd*z@ zt>Z^a2FHXbcGfcJmF;|5W+B2H^8!7SOK{hao^dZ>7C?LQ2a}KOz?QV$?~4uH%o!6` zeJgl#z6!wbTL04f2n71}Mhu=br_b8^VW9$`uBEucORs+T7?q&q)?Y#-6Vkl)4ZkB- zGKP-tscOaRA>ahSWf|RlTdl3D3k3AzJ2eP#NOtox^4EN&xVmtBH}y-O0ohQi7&7a| zy?iF!4k+GHcoN>D>MxwpiQ6i}t(U*v1p2~%9fY5@Uq)K}*eN0p=a=|u`K0^|h?8Ph zS$ydQw#w=KdVsMUTaq(T0E&A$A7lhEm6057959A*BgaVPrq>#=V=e~d$~UlxdhDVj z%mx+IBS73qVwADLpICwzS{?L5a}9GMM!q0#WmVW2?l-U7%Z}ajrQB2V(SLE>OAQAy z6CR^tCf(@t1JjJ#-N}TR42LhC?~w_(7uExP!DZCgm?I;pJz4-0$p3XcFRY`nw#J-nJ$s?&j~#V?vv(=&Y`5yp5Sx*Zf^OedG@PWeb)7=Rja{`&6pLn=+uOL$UBJj5zD$I zB8HYrZLuEbS=}ZR0<~Uf6l6g@empCNkej1`sN0hS%Kn=y(@CQ5ZrXa5@@YU`A$)L9 zWyIX@Lj6E!KlJ(Y%F?-MqrvYEnCvBsh5#%ZN`GS+!_g!&Qj@-^IQ1S`aQF9O0ZOzG zMT%A_&>)YO4Olj62)Flp+x>oTi|Gaz)?koG4Ysg?c7VFAxxkLhu3yFaLf9#aU#h-m z;1DSp%V7-XF|*8l*H^kaoEwrkMtu3JV}W-qO_8s zBUtT|B23k?TfIlf9t-58Ry`%1tEO^2s+rN6MrwxB6%r$`;l3DRwbTNi_G0?zU0ZV5 znX7kg%6o-+?spiKF<*sK@G91KpST}^j|GXj++L`a`zs8-&1qXalX3P!Dp{Zf_^C=NDxcE%NY7=WvuWY8 z3ARhdeX(WOW9gF9&V_FZ*?jls_g`@92Tp54f@kWj)_(MmMAeBj^XF)31O`py@)YQ5 z@NNn(@IA39_XkW9JI(6C3e!8`g5SU7{o>g{8c1L; z(@;_Wbj`c&xw>*DyDyv7;u*tatLKjWSk`*qSg$a1aYj^O&vo9{dDIBVCAptqmNo7t z??$`G554@jC2)23^2y`KCtl6&cru)=$a*)p^K?1Mx{)$tel&aloLx~LdTX811sAMe zTyA#+86zy+)6_=mX7%i)d%5?!gf^n3pK%}hPi0aLUI~|T_wA9mmd|LLS5W2dE6AmGgnY0 z9=MU&Jo4IZyBX)ZB@CFdbR# z5$-5#)F1@K@`hU{nkrYwZMOe5FgX6!LAWDUdB<#y2ASx*nZk#T6h%;Nz_ni5`WjU& z@D~an%J~nmKJ<;(NQE<-RnI&tujfzk{O?@|HCj;YOU z`O7_H=bO3$#l&JT=7J;K=2K`&%sw_tkcQwroWOqM55?aw?GV{g#J8(3f{9|(4c^PH zJ4pxVd%s6QU^y;7Q}Sy&PAS1NG#FaFiE$TwZ)&}q>+$lia)L(eT-u2&*bGt=$qwr$ z$2|8*#NLSPSv!)|*6{Aw003OD^~t86lH*G~=R+FhLah7RWlg!uJ(XD?3II)z7%64D zK`AjHrY3|r#3=9KCbF7xVJhEHiw-py?dI5de!*L^c3E%&z|ik!YwMS6z0IwyPtd}n z!1az5Oa_x!GlHi#sB%EP+iPRO$RmtoU}DuTTJA@})Q71QwVN<5-&XJc%52+*X4-6>M+Us1&-P{6Q*dYODB}zMQ3ZP*LArb&|_<>{?cvuAq1CCXkbsJx@|E~qCNBbFH)>i z!2RuM`}z&_CxH{dlz~qBva1HZ;bMf>GUXb3-S5p49JqHM_6mP$KRS_n8e)wF7e6TK9Yi!*nzI<2urXzw0Vy#+ygbF@ z_qE0W>@AZDB(*btl-v{KQ$KMBV+$80!BY(s-Q8Mk;Azjd=b%0mU6|)y6c+%_L*8A{h?@?Iy2=56_2BtopS29+1cn#jl>E2{j z@ReB|klN4Z4xy5N6SaHRYqgGK^t%8+VL>xj^|RuYbu#YJH^#xPB|aDQV?c@=qXFihA5{nXlj57^Ha@w4ug}Z_S1{mT10Fw8F3R z!?8refHXpht17#w2ol|q5kM-DSx^(9$6dazcT1dN$w-{mY4Jx=e9qOh&nl5-44Y|} zz-HK9pi1Y9BII8 zh@Iefz=Z5A@5x>$+`=d7g0+i%u1tlDOT`R?lVm?gAsvi#D~gkMyT}vbWHu(Fhw#gg zz?0}%Qh0BVcfUOnf|o=ly2p;s9{5+X)UkpRYN%m-UF6TRE(Q;?t1vZ)`8m`dc@2m; z=FwkcuKsH~zDMcqhev|Ub*J!s)`}204+bsqeB-xM#R{0KNLtK??6M%kGeU~=op>ZD zS~kLMiN|uOew}SB?<(LSkUhDdB$KBUPKvzx9lf?3vx5*Q0}=7B9hakByr{$5F}gC5Rs(A=8k$@XOFAbB26<5w}u~;mIom6cQu;n5&6y_U+K4I&}#!Ge34%K>2jPivDFHok9O| zDu$8tQ&bn?Vqub(mqEPf3*5H&TmmuaBluSfW$k>0A2R++SY)O8YPS~!wU#Q%9woYQ z4?4^YOw{0);UkmE3GnvEFK+O2MZt zky8?yDX4MDq-YzKdM~ls@B}OjXBJiFqF>mP(x15vzE-v&j9tb%3W@)0thsEXdGA`# z2AQu}Zc?n*5Te-7`a-Fm$mZvJuMk)L?)uH>XX3Jhk`EeIGViI5Xb^O1qFk{4gs^Q z*G3k1NfAUEv=@r`mK39}LoU@QGuv#7WYwq>5_ghL^N6V-w)hCiuy1kpG1vGhHZ&Fa zk>Y{5;4tXVb~rqThOVCLI1g`EXeV0U{`k$fDBNn|zitAlFSERlhnihBW_hr@@am`N zK=k>We=M3f8prE_QlJf?Xzw*$bTdA-+aYQp+tleb3t|8u5PvoG&k*h>hS%PkH+&S2 z&=^ZO$~sD)SB!p>v!BsYiADzQ-=$%|SR|Hbihoxx6);uqdf-vjxDdPTgWev&)rzb9 zcvd@fx(Rd;QHmI;wu}Dq=4u6|7v_3Z-@D!m?HyETjnHbXqu?Cu`gERkB0*ixmhYz9 z0{a8l=PNG`w}kXlMgi};!0xibNh-v(&i*rZdTJM~yZpMYs6M_cXPGf7ZcZY}V=4T$ zAguH8ZBM>9dy+m$aH)hSA0TrXPU&?+LouF5V%AQ?WKMHIDiFW+Hh9bf3QYfv8#Sbv zx3#h$m&tr)q2%)Da_40OfjDq*)7uth5v|YyRFGmx-(i@jWJ9N*^R}yk9^GH#i*3!0 z(HQ+cj?TmHE#y$7&aW9a*H zZf?@(X@Ua2gvGKSf-cG?H*E&G#TK;aJZC&17^dST=m%%ld=HO6yX5JUq{cj~CNg5s z^-s5-0S~#WmfP8A##1YB!}+W9b9AW*=Nm(u3BKvW<4Kzm1zgYL;)ywk!%CKL3?BF0wrXN;{(bH#WUQGBJ^|vv(;A5}0+H zz}Q#w@6QTH8%2UHD8sdoC`F#)1$Hyf zzmY$`Z)k4blg0Bsq)RZk%S{IH*_o-(lp#xoKS8*~F={(T)=B?R?*2$|D8^)2rIU1E z`Bo%S9K0{qHmqbFQ}o-|2jeJzn4&HC-Q~ZbvZGMCut!mbNQ)n21_h1`c^gS~tTD*o zWo~7`CZU0F8KEf3k+nES@JK8wz^HPIJNGv14GnIf!&>YV2$SxVC_3}8NY^UVq>`d+99%Rw(KJ)Fn-X)UV(bD1$xYP$%k%>J{Mpu<{#1%P%uC1 zoqdWfCQDYMuf{@@L0j7~>AeAQ4CO}Rw(gZDLoap_|A#O4{qrPB3q%&*VEtVpl9O}wd+=1D`F-Wl=)q5HbZWg~1^U$r;7)H8&bBJ05lm;>a zgS{Hn$B;ehO%V9J09|zbB0eQ{*mW#&o&?h*hsP777WQ4I`4DeFc~z(R2J1?TF}EVs z3_b6=WBcy`lGk*(y3tT)XNqNv)aWCs#U}Nm0b6qiwNDmvM1Ka{HygPYSclm_)?`^) zL9|8%*%bIZ$Q=Cy8F+dK=R!klYH(tkV)8_h;LgTGrKdnurWOdTP_IPRB^KEOavL=! zGTl?HNyIRI&7go(;AnC@I5bAn6Y@#!sb_f+heI=u#+()t`E7B6ZRFvVoxbCr2Jaar#XqQbsK3bO5IO;g9P?bv?ap zL&jGZsLA}G$UA7v`#2|Rv?G$|crl7?#n5-ytWXA9l7rNU2g1DuW;%azWfJ2_4td$q zNyJ=gr3V3E`j$TS94Y)!cQl_2RbY>@D=|QF!3>KCmH8^-QtiyAS|pwIBmE^dV#kT- z{;Xcvk8HI~LcJbB<-n;8L;^y@g}Jz+j2E!?r5W+IjO9%ETB4u!5{h*6*e`M7zkH;} z6*aQ?gK3-)*CLiye5VgRH>S78t-(8Qo7a3QmhvAu(T~Ik{%`~pyxuIX6FxpjIg<@I z-}C8h$33Dt`m(le&v@DYibQx0-X9#~iu7IW-tcl#pQkfe@SfHObMfL-CisBo z_vU=-lAE818OrVP7=}CfbIr$F(J6U<>{_K&|Ctwbk^wieMFX*=AUfe8Pn_shY!IHn6=k9 zJu`uz>=)PLj%$3vWiJk6LZ`qL9Bqy7!S86@B-chworo_Pt(tc{b5IxU_M_l$HVOW%ak!G6meW3FD87NAve$MpysQSijW#T z89%t7CCU{`0@=%bTq4mmvy8xj69pqCH}g@;O3+nR^BR%k!=rZI zK%iHeqL7(-c&0LI+k2%4a(~tIeJFTl3%dASP&#+M>268fiV*E{_)}ahuDCcdj)t7! zfrf^Q_9cbA&*$mc{7q{Nnqhf4Q!UF5WaI#8}l7H(0<|)T0 z5_k;7ouL}!oYtf#2s$H2uwq&c-x~tv?Mk|9=Rxqdjg8~eGJ7SY{hq*#jpL>6&SU3> zABKE^HXgcV(VO6#d+I+b;V-6JVvO$AYv9Y0JymtL%qR>WIWh4ovrnLx$@D$Uih*+rm~Tn3nxh}$R%{*<^)zpQRA4Vg=&OJ2^@nS+1zU{~O8hX-TbGyI!1$mq9R*wCi@ zYkS`WPQoqsv?=7`-gj?eDBdR=+udfkVxlWxe44~EbnoZOOB3BkO(c8}_76@t87`q6 zU>q+i^Pl-_sKF;|u0m6tn4=bP?Wgn@XLaOqpV14^TZKA7XoNrletwj@y#$``{j$x? zcTeCKES^$ZZ)y66p2drETuEG&OxPoja6sxpL0^qz)~??`WssKjark=P6_Puxmz|~e z{w%wt6>h1w!IV_@Hkr13L+~Kvn1uNNDiX5X6s4a5R3WbJ`lX=x5h{Jk;dZvee z^(;d#cqJBNFIBzmrtu2x4h#7dilx7o9V!MyUN?l?MfjmGVJzOOtf;iT&pSV6h=*#l zr&SA;9I+@m?)i?kznhQ^L_RUk&^NBgJnnk!oK`<@vX#h{)@)>e|A?kT$hMD^rKhb& zz7{``|7zohAKPrpJ-!8yb5X#J4>Tvp{};?Rmw)v3BGFL_6Z5#H;0C;sp`Pa-_har& zAlsv;mu4yJ*HlU7PMS)0R5$q?O#V!Y`Y4L+byN@;_AYIU7tZ(u|CLCaub1q#f2;x3 zyM`bHNZF`aTof(#9k;B}*3e)PmDSJAofHw{F=4IJDprsegU}uJnVG`ULL>AUdN@ai zGZe?+zvQ#x+RK+5O|r8(gjNNt9=|IPdx1n=N@R|+8RweNaf>5vYw8?I72Z9!hHZ;m z01a*IkL;)?MLroe84YC1mPG`@p5V})2)9HAhu(flC6u8jh}G8K_>ew@eB?x}5)m>E zlNbfs`M$&*TG`8?M_oU;LkAiog)m+KSgyftAZ<(=MDIy$GKNO(?Sps#QHd=iM=`hIAQUHv|;?d5&KOWgS_ z5?0Ty&LB^f4lGw_+aXbrf)=W9RsJDd{Kkm;H}+V#x=%m+evUv{h>AK=!>bTsex%GS z)T_S?>;UN@{IcdNYlHE&8bQcUXmo|0{`vFm%7?YT3Hvi10}rl06*3{lezp(aTXXE& ztUan2@-EG*T=Qyy1cIrbu-T$O=48(OCpYEx)#Ys8{`Pf$mrg^D0y8*z>w6gN$5AES zOTXQ(+EU$7Y@1mF$x3;@{o9W+g3|IVvC{)&gz$YN{l&Z+PkE(BP2YTXd@`jGI$d)1 z@N7syuQCBJF0r{UZ&3TT5`>6$CwzHSnLSeLk}E!Ta+*^&Euh#!zH{ zS1Mq#2=do7Q{XsOWjr9@oA#>4{`o;CD9f z0=9Io1()ztRg5D&S5m(dTSG4B$5kEKRwr}zFOP_eDXadFUg`n&nqo$|6lekajB52L z9auV{zO`&hp7V8oB-98Q^jB=v zOtRG3)bxgA0!wo#gdUMh#+T73Z1|ztwAYJxtk`&m@{?D^mx&Jl+2^pko5)K#&~jWG ze!I34hW`7MhoX8n`R4v_`Cq=F;e<9ue&HP6JXzB-l&1lQGLvO-Ilj z#!e5R1@)#kL0)1~ncoLOB4WZ(!;vs_9SZc!S_sc!w&^M(h`h^jxIa+Lq_I4xf*d+J z^1@QZ@FCyD@>;a7*fW9OzEJErwRt%hGBxlg_C{fa>Q7nK^oO6Y_(yCE{lf3y;cTQkP~e@!kwgdQVxRp?v8=v>M@t)p5k{eS!yJ*bv#v~F3k-?>^)!A& zOX@&Kl2VhcxS?w<47REAQ886GqSR=GND?Gq^4V7as`uSKmAX9{wmyJO`7(}uM zOkC%W4PPmK@CkRQLziKsH%Ex+g=NBhvF<5aqAv8ryiBFuHN5jmTK|_Gqu$8Td^Jz( zhIuFEd4q)d{Q`6%_A>WMynYwnh=T~%N|{u(9NRgN&2_3k{=6@JVoz>89meudZ-Of? zRri1~$Wl_J{4+q-V=Int!1rm~*{JO!|9*k&eH-5T6+eE!dqLo))NZ{hmcr2Y)4hul<2o-vDq(!+&ZYMqQ_=d6yCh5beO#nEThVL^oQ zB|$i=YU9oB)BYGBl&DC%DdjtHc+PNp+W&VSozaLD5(iw~H&mv1{I1(^uAZGwY7jAd zcFxfEXu2vU<;Q;Xif{d)F(-l}4o!Ht-8fW5#aGw;wUrUE^)RBL2IM!#w#GMZ*qL;Y zq~j(k-;z4}%Qwa}eKo1&{Gr5>#cNFD?x(gT7A3+t17yVTRkiDwo$#LFrB*|^owj;< zm^LQ;cDba)y&=Z5P{b-?g?dr-7MOY@JzAe~3~=N<1Qi~WIqwchT#^3cWvnC1QH;cL zEvB(|zYwe~KfK_RC#AMl#C+NNZ16T&zeJ`f*$ZZ%WIFGM;b&OQ;a+8FQgiZvV7-g2 z@Ys30FWI+S-1d%-8xk+z)ccVLZOQPRO-Q5)`LOu~Ix$>t5CSUe!E}Ajcb0AhWxdL@ zWwwl_WTzdaRkyC>2LE@`_SClg#e~U&izZmhWQ!aRC^Whk0z({k|DrzOB8z13eKkWj z^HGz;EQsn_%Fd=#!uMlu<;i-#H2fkpVsWnQ^wAB@Mj`JgJfZZh#Fo$%Cp=ielusWE z1yi*Nr?M@=h_CN;c5mPY-*F)q1di#{aN`&LBHvjbK1y(DZEE3lo-Yz^fHn3L!c(~q z<`+v9te+G`*+TPAJBqPQvlSf^DiTbo=^-Y-yWAnW18Qpr&P`w@Z+bWI2}BX6`lq`i z#0YPSt6J0FwVXGF+-~Ouu^WZK)IXpf9I)*NVba^1qE>DuEN|twPSleb z{JiLp-o|g6XY5BvjH>sXM%x+D%SbWz#u21;!e;~qUa}<2j<(O}1e`KF@D(E|pvE4A zgS7Z(AfH0l87K6^)}uTiFv-e4b1)= z&EZ5>hoJ3o8ldZ>*Vc9BGRRa`ESlD|$yrwERz_Ruu{@T-EM1rPe`rC&GaT*_;bhdF&m(=BvtQBhH)Lgl0yJTPQpn&n* zju{(LoRuwJVJFZWhNiLzH^8tKE%~DhFMm(Vxy68jY1P&X#`P!rMi??B+BIfl%z043 z=GCN8RMQuuE#4kBJY>$|$a(*z8BO&jXzgu_u!vG%(d%@+Q;J;JBgF!5Bv0>U!JKj% z7F~zeiu3MQ%PeBt6ER{OP%lb&qS1qAR{FJ26qFZuqca=BGVEp}=w%zhyc^^*e7P?- z&@1a8-3l1$*BIt&yVx2>2q9!1-bUZuK%Cyoc)MxTEt(;QXNE^fJ~PAG1@wS2E3FN> z2z?{K-&Z44lO?#^8ZTWIyRhPu^sl??fLf1m)=SJ>YQU;YWV4_T68ce)aLE{b zmJs>ox2z2>2xX`E)>*u1Ag%8^8|?PXQ2VYZzNdPKXOV<>#ijwvMYvbh&ym&uze_a! zJGniIY~W)18Wz&zYrK0P_wCm}ZGQ6G-|maKegBkGGfJx_pO7V@`@+To9#2gDkDFE; z5@J5D;;b*T)otA@8q&9MlaU~u|9+OZm^}e5;~d+Jorg|#npRG^O@{#%zaJJTh9u(x zTrac?nw`0JJtBiT*6Vj{NVSc!;k2!Qx6Yz#H<{G3qJh2WqNX{@bQhWX{wSPr&LH)<5>Euk(wBEHiC{l(_o#vL zIfb&nt3(9wF@=(>^n%rHW8)|${qW&pMEUaznrH$MuPl;LdDn?!u9dgKvuthbPbMSOQ67g+1QWo_1<(DaoeVvy!x;;p}oQ3)04*nnn! zP^7pbCNeDCbfr4c^a3NXc+^x)V@*T}v>2EP??xiq2>_Z~@l>x_IF3C9J)#VCT`NOL ztvXs#_z&qDbBn|y5x2Wwe^q-A#Rea!9IUYkB(^w&{{bna25@!^?F#k>;S_=-K2y%8 zB7H@KM>!?d>JTUksB}GaZ4qG?fvp?f!1#l!`P{DNv!mKU%i_&<_@MgRjxt|soN{6P zX_v3c>Qomk)e7gl#EyAMuM8Pp6R{h)t=vItN}DhUrT8!gZDIt32E?2AwmZWr2v3cR zr3s)EiN1P+{0Zz!g+eX7`!R=xe%G?_oIkzgRx-ifeZf|6T@Q6{((mBOFdY!>QY-FO zacGRf&KFX7H;Hyx-aVsi8VnL+gtnoQx85NK#!Q61cEZoAnm{#E z{h*?>suC~qvJ|OqEQVfA%Gp50u_$+)r`ZC@X`$!K3q^5WCR2t0044a)cZAtP8Ouw+#-u`ffetTb`5h#8DO z6P{DJnTc#=v0o&Ot&1r~IKQaWj=Y|%&%ykD6P+P*9x{%NHF1ED5M(L?mgr#LHIctb z2*rV+C0^8^`>So(Z9ltcZgdT?aj*BPQl^5$IM0-w&A-#Fv(Xd36zB6$>lMTBS_!re)&cNsm z0hcp5(zf7F2tOV_ZK!)YVKn1MaydK46p?ywiM2DaO_aaRV5~YqIx=wPkqB^49kZ^w zDNqS$Liw*<(EvSKnmqNX;wqP0;8w**M^tyon;vw)ob|PsQTso~ggGXc?XJQfhj}s~DcqqM@PK&vo(&V)X5#%o$x|`qfpK8wa{LZ|fxCC>YLuh#Kyynz@lPAB0!ngA8OW`~leZR%*GzO3OebTtw< zt;MA--kvJ0;n)b}r{o{s@8vs!T#Z**2L8+FWX){tVff))4^$$pe zE&pP61v7*WCp+sL>kvK3p;8sF9W~#2hxiM=PJ?n%XPvp&{I)ox`k;I|?#;R$B6Y{^ z;Fs9fhBdO{`?p$hPKfP~>|j z;qh#6^h(&(sM52x2KNJpM#Jr`$4atr+@v$3V8jQE1=C%yC zerZ}~qh6r3H$W*M8ujt~Do}>6;tt3HJst?GMr0O`=prqD4JLpm)(BD-k=p`t=dlf1 z!#!&D%rQLAWN4B3(aV|V*E+kIye9__D!+f>83#!{nu=+X%Z?eJkE{@)!J-Y)j>5|` zI}%MrfLs0^=0K|%bq{mp7{IevX{VOI7xFv}57f(F%%RGZEyurxm1^R{A)tO+C-V+O z#EhtQTXrwiMR%xQa8=V9uU*&4uJP+WMuW+KTsuC&fO)UyifPRqK2%|IGVtlo=;ZSx zJz_Ju;gN5>h4ACoOo1JXn$Ny00{%U(VdJn*EJ-CZPPw@2k>32b*Fnr_O3sAdmk`I|L`%bs^uzbe*FO3* zVR)7{J;iLxZOgaic+ECQ(Y^7)VewjHquRe1M|AJSE`1Is+ZLGumh+bPNG=EyB}Q9W zDM}Ni5o|eC4t*dvcu&gjBu`}5xhvL2Rdap%g1}58G5p9Ot^p;I_ur4X6?LQ$;XBkB z@MmVv+)r@x_cHx{{7hHpb;N4$!SI$fyrm^1llv+3nM`Z1^;KSOr_dGNAC=CZQoE^f z?~kU>%}0IW6w3~2Z7HL4`i9n@%*?`7rV%wy3eL1XfML$Glvl9T>2NO0+0AA365@B| zY#W>H`gqdZ8MqrOJrVt)aZ$be+q^ir{mcw6rrdSDLb9tg`Wx{Z$(%*c4h-gilO?sc z&5@iPw?jg(Od#RMJ7o+SSx1X&%7BtkuZJ|jt{>sSC}!v}0#r{kJPp27BVvy|XZ=g;ott!JNTD?sO2x+!nXmCcQgRY>9DP6Ow+%bNO65)uw%oaQOWn-X383Su;UlvjP4 z=l6B3wc|!p{4njASVZC$-|NqSnSR$4udYF_Jvy<4!12^mP6$xUen1#mYJ0uy7iJC%j zlz1`dP8i5s>V|)UljvSGpO+H#4?>C2(!?4j?yUU9CgxSp4q$F|+_pwxk8c-Tmfe9^ z3omS<_lK5fuazdn_O{aa?jQ+@zgE-!GLzI5Wfv*2-}>DPhyXpNp0>&x!7ZqHsj{>l zdpPAsX=&b88ea{3vP=yQjIA2XEQ|ToN2=Y9aC1B?<~A*FeWD1MYG&m6tFKxWNM2iV z=Q%ofurkX)M!=RyiM=NdrJ$o$+-=rwzO9PUry@6VBZ`eA_IlCwy@h%Sr`dD)3?Zm@xYcIr;wZC#|PKR0$MCg0aFI~^xRZT)}k`@bzVL=8@8um z?OPRbFTsns8gI(2e{v*%(>$*DkTjb9^q|<`*yA!jO`E)O8r$qKe&lR^pz>oOJjumk zXAzdeR8%)4?W{*KCC`1ZpQya?gpSgv3lt>}-3 zB{{3yw4%Ywyv1)F_2{&QZ+Q4#Ge2)RBN?{RZ&YvmGb&YJ!1;WrJDgjxJp}$5j}N*y zqnfaZnC?!D(sJCgnGrR~GgqHjF6;?YFTA+1BB7#nNuEzPf4*igU9k1EW`;XpvJ-CF z{BJpvXdp!pD(dU9;KyE7mO9r^?yMO=sp}c~<@8OMIy&{Sz=^<0bnl|DW9tsS>Ypg@ z^#+PlX5{>BsZsRnkK z7RSn|pc`j5VlojbY4&t?A$-AQI~x8vPhWWN=4vD6=p~l-|1s_6n8WW`&^o%U2awv^ zE%s2HzOFKY94I)Hyu8aVXWMqJ9eKX6cDZPnjqoX!xA|y|BkwEpcX(gfk#1#iU55TQ z+dLN{Dn43oMJHmp0Gjnx^?j$G*bd!(Y3m(^de>RRQj#JsE8I zA6DH6SOX?k^FAj!HW`Q`u|K9lQbGm>tSFjw@vY;pse{Y- zbM?v}pJtaBaWBt~gxojOTT?of3AcD@Iv(3TP5!S3L<0+*T+g49K_zt(L4m{jB@xf;9 zJG;kmCcEF=x!*F>FRNp@u_6PIylE>-y(!9jm$li6C6HU~yCP~r_B^U7H4*o*qr3O& zEp#-wwH}fJawrGdlvHkP%cC2D>RgCzVAb_M{^xlWSYu%(g}00L<_Gv#`~#8uTql2G z-i`7)e%Gvw3;>a0Ud48pnvrsvIS~rFS^Z;+0XpNR&m!BNXnBPXCDC2dIlBpZ!)Vc; z7G0|0s;Aj@xdf+N)7;JM4<9A4a0!TtcvN?-TmF zO0b~snG4y=YmXrHSXz^5zdYNsxwXDn%0j)}?lsVOkD5jE)C8NwotQbaNFH{B-CmJi zUqnpLR;~GWiL5S~dZXVD?+nJk|NlOU;5JN5>%0$t(*Sq1W`s0(E|ye036_STf5Q$F zw93AYeRjac6TXb_;+7&wEBkp#eJ$vRqj00rGj3d|F!zeQ+IRW3iJNs%7FnLfxc#5 zG%JIx7ty+K} zVqeL$d^`R6Fw>%Cu3pXGp>dQ6 zGvvrrk=G~GO#s7)3fPJ1v#E%SPWhmz@u^^ZSf_|?TS0g`qD$~zb)uVQ&z!&Fi)$>O zMkj(wBN7krcxB;7(ZdaBw5g?cw#o-J3cnX<@P}T<$8?okG*^zUw{Zx=MIQAVHXh*R z*DXeNaa?FJ13i*~Y5US7P>DPJ|7SZXSjWUKf0Dk{(#@ie2;OukrV zq+PpUNp{9;l?_#HaM~@gkLA0(cPvP9&9n=*)N#Er6)e*cm_WJtS| zOmM=@>0mMFA1cfxrtbAlWj`#O1^bR_u7b{fDZQwXXqW^; z{@xaf=;>zi%L%0Nd0!gCUu!2)D`HV>W*etf4fUErupemsd{=-Rs{>yhmCl5<`3GaQR%Zy$*G`K@^8?h%{*&Vlq~DJmum!;(Cb%utLc^w zO=5n>d(@c~IE@$Oq89DiCF8bTsCRyo=4+p9dBG>9750Wn&^GO?VHRVTOW1S}CzxlP zatmO(QHRJL(_6q$#LXPn7hFKY9Xudg^A#8V(vp*5$G+>i$ry0VyJ+l6smwR@^Eu=b z1=08Gn(*VcRyWY@;nn2X153?VMHvo^N!n*#jqWV^a_u8NP4q-l{Xx!Wm+kIAVj`(y zLH=L&qsddP?BUaIu_}0F>=~l0KTv-quT$40{A)2VHW-^-R4A9Cg3 zu=X95xZmwQ^Wr^pUVuPO^QFTHnqw`_H0!S=b@vvj`!35g!@bw_$PjDD>&^Xr5b>-X z3%#9VqRiu8A0iV3UT5ko;%QGB+-p`8O}1&NFfBupBWkZfukce$TG>?CJ{2)M3) zSJxs2D95Gn{lKu&b8KJC?sWcM`lzgd zhYRK)tD5%H2Ulrr9i>O1#WU-KZp>YR2-4DZJNYdTqM4w8kF!zU`PB{ ziFA||3rQ;b;;?V*6XA$CTeaL$cUFm7#f04!l59H~u~F2mh@0prrHjT_!5HiLZOoON z_Th7T#E4cyUF`IHRZ@y1n=nm29ek-{PJW%=5}AKvN{oLi*&3EwPPohW33`G+eUp*j zw(~9T(H=#0_r0pPehJ|&j4xLDWc-%T2)zjq=4?1=Vs=}@*^-!WcDAP6+`amjpY_8j zvH|?N>Gw-K@;o0u<>*?gc6W3JfI@$WlqL|dliUjtZH?f{^#O>}WFRBw(&Ifi{Y_6hC}K$k)NA3y89 zuwRLgFPyYyl#XfXrK5VElN45RV>~kV$+V`5B&L7Ht=5lhCOxMoSl%hdtnvT%E@s&k zV$8_-hx^b+#q z$?>ORn#W4{X~2rfa0JWOZ{k~*_XrqT-qF9W)tND&^$y>UVdlv)8H~#?c#xUDvx4ux zXwQD5=Xd`6w*c~>Je`ySi&$oQALF2hg`e9vgNQ;ZZ?Yx1%r(^u^3 zj>}QVL1}gtR4;L$R{;h4{Jak|l)&>TrslNC@%;e{Yt3A3<>r2`t!$J7#j0I7Qk|Fc zdR*emO-wEseiyA#OpPl=bUk3Q);9)gnv>`@?_vx-D zlzL2eDL@FI7;@I>yK>+4a?|^dSx4;L{*9$?-Y&->8{>FjN_Ll%!Z#_ZVJ@4Wlru!6 zbdPxzOu@i-5TMZvG$er3C{>EWW#O+(NL?fKN&_A+e>KEyQf2?KU4p!Al$4q->!`Al z;kJ5iVt+W_G{zikip0Tpj;Sx=LRR!$?8xaUNrWOE?nBGuFUw&R~`M6w^ z|6uco!J(4(W@){b9J=Fn6l%A(YOAs0=tS5l0j>q(hb!u$V|-i7`Dhn|qdF}eG9+$M z)ku&1xSgVe7@%bz6Q~5f2u*UaDa~FZ)|QvKCjfv~$We7WBC-@?+ir`P+>C!1j}4Q! zJa9MCY$#C&*s&N;LUxdzhv^`9IsWUZ5V^IZ_ZgR12dcvByCU$>{HC71WQ2QA5XS19`{$2qZ_*a{ zrF$6T)>J!w4N1jKS5eWFko|d-SNe*v>bd|C`1IX;`%g<^M~C!ZbA>?z%*l$9)OhX# z;i062D&`cVvZN+-Xc6mTJaS8Ar57h%ROg{}w&(G~)qh4&a zy9n@IlEwig;om==hJc12>8j>JJsp}pCOn?NKU%N%1U-jd1J0c6KcOR*&o^6Uq3?Gt zKh37csOlM%Z*k}6jc$=RFai<$pl8Srs$!+F#TTEWDuO)k-LFnS`YwDc{zJ7cSU%@T zS@7rA?k}P5!BNZR|DM;h?h|WNN(gR*&*kUz`RzhMwXCLOkIx2a4$}legrD`jHp4di zag?~n?zcx$`T&mGzL@eS>u>s($$(ofrY~-1K-rL8{&~a8{6dXNE-_Y(#-CJ0cZDO} za)aV3dVi&zYx6b63{I8uHzC~qT&GulnS720%_CW%2}C@Mt4@7geKBmEX8r!x`}37T zzST&@evqU~0OMu{3Ww-F5@b?d*k6R)@+QyghBE1{eNqwLDOog}H0M71T`ffCiF+o* zU^$A>Hdxs#RpfiKixXwuBd5vArJMuoAoZ+S2w8)o)%cFQl(kwV9%9|II4L}(`Zh23 z1bdgb*j=RqYlrF6MR2LF!q)Z;xQd0s#TKxbFUu8WarVY24QQYtQWqOr6mL`XxIjoB z?9xPBPlB!MS79nK^u(@gBx!SN6FZf154)&}yJS9{26;Dg-sDp%_z z;?|l=`GZmqhLVH{hTNw9D%>;f1f7|T8F}N9ON~tET>D9RUL0$Mf&P&~g8W-nrkzvQ zf6|=$^x60r0@JV~ZBCWW_ZUHZ(T-Vb){Db{S4+|B_V?cLQU3Lq8t{XhruKHuma=a3 z*HdqcjEsL%hEOhF*@i(R{i`;4*Zo)rOAyw*@XP&s_i`Z^oFP0+Z4BoV-SCJBS}bOR zj{~o{@*nyj`=fQ|b#|N<1k$A@?54yG13RdTodP4@2!D9>^z-R(tnVjrGF5lDsOZ7u z8eoo*`?%<89mQg8Hp;u0)82bZ{Y^{qMMK}>Tr_vJ)xOoTATo3|w$yr<#xwpS5|7O0 zK+NVLbH8*K!!**6ypI^a&i*Bk)1S|uu;fOz&pl*sP_pg*YA;(CVf!5%pkk?58CSWO z@oQ<_Ec#*;OkwDE@6^@(!0rs~2aeZEK?b4nB2C5ALe?!&rGiQM4mqL!EK-%nn6%9O zRCfb{H>FBI22;VMIInzd00e(Y8_RMNG|V~ekn6s{!5I^<-2+nob3$>iYERnzX0;KK zja82MO*mPovSO`MylggszMC>XpraTc2zH4%N-b>%3`{3ZF)U4xr&-qnVebn4Oq$Wq zkBD%9-=s-FD^=JUTvEomFSat{u-(Vub(u)Y=a94WEm+!_tY4it$>7GA4DLC`6|I`0 zPNr3`Y_nr#a0ltrf%LV)PIkJX?1xmjvbMiXc=!#(@HCMEj_j+u^t^*^EpQxtkr_g3tU&cD%68SoS-8_DFq%;+u?j!De;+Wm~K?CE4b+)Jj1yVj|_LEMhdf2uy%)Y zpirxE%P&_7)=gcO7r^OMX4mR-HyM)~B#&)=|XMjw` zm98GBZe@n*os;+9$oGzBBBjWWNZco8Je%+zq)$eZBQDv?5Q^~V=u_^LHHNu&@^Lb^ zfE7>g&ZDPzDJ=+5c*nS@Y784WncHaBj;SoqA_ZAmeLre>eN?=6m&kPOo|&pG;Hvy9 z4rf3HnJMY9g0EGB+4YSeX3s~j=o*8&+S}r-XpTHHL05%2me^!R^XG!mr zbR+~9KoOT2cAIG$UkmJ={;oUL>;e@XpetI-B8JXW@ZCRAKsX?00=j*HINK&*>Vk}f z|ND4_!2I*z@&Owg$vGIgXjVhl-W-PvAg}XxGd|ELlsvE-WArG5j?@4G8Y4g_8Xi_+ zuDbZoY_ge>|74cQZJj)@6YK>L_K0-xRGw?zW%GdML#a9H2ZJy^Q`zc23v zLKwF0bg}c+|5`4B%<-^2f&Ir`6wMyiDtR|@lJ8r4LuMP>VPQ#3x6a0PE?$yS- z+)jptlP-anr`E!uLV#ItAtDnbPUO@Zw+D2)X8$BDBF9On3r#zfzJ6Ct`oOwKe`-^_ z4z$LdRL#60&@=i=Qld1*y2duqzWOu%5w^FWSx2wc08^h24Q%CkICvwGzwR=|f{vt- z^3YE&Z0w4`IK9s4kR0h)9{u%YM?UPFGbGyS6bjB{W2mIO56!gc=t#@Q3XLzrR1tS;T)K(*Y<4O zfmul1X@3xF)=JybWPgg~n|a!>*7t92!Xz2gfl6oIX0;qvY@nmb$T5;rl3pTu5W4)S zp)om|P0ZDjVA-C@c+3h1CG(?s#B*xX7;iN)4i$Nz_hgCjA8YE~LlIIEd_QgvL^_K- zw9!OK6fecy-QC^2xEFWVA6ndsyF+nzx8m;Z z?poaY-R^sDcfal*aC0ZgB$-U+oFo0+D9h(7l^%wNlwcCDCLyFo}1$3pyv1e?47?(muG+v_T2~4IYz`h zIvl4Ng@g##nXt~KPDs2`!+HdDBl%K`sJFdE&2!aTEItTDDd`NS?`WQ93f8cgR>P^@`@Nn-z7+ z>ho~WC+H_@RI({%f34lt8;s&J16iVUH0}+4~N-2_Od){mkZg!SI<28FI!>R$O|E#%=luy zR}zBvVD)!rpbe>;r0>!R=zzDP+nN?nENq27^;FWZz(#3`bL564(n_5RxJ^3hT>&dE zvW0I6cLi8;J9HSe8m0m)(nU|OqwEix6SWz@0d^R~_naO3rR|^th-R6YdvGVb0%L@bGl(PSrEgGLWWElKb?V-L@vTn>aIZ({xywZ$bxaW+B4E#j zNe=W7oC1V29m!y$95}%dd3FT^yF_xaKZ1i$6C4rMWZvHa5?BoiiIkaB-(w+Z5vPHq z!us;)qDf|YdD9-|Irmon9U?U7rXZUz#Ik(g%3&k>Iug=%AMu=m4K zkOo60F(Q-2lb4Lf^bC%vj zIOgsa*sz3iB^4EQ&wzCuVl37&<-xA}6V8Ur@WhcVP52}W|v0WgM6BP3!Gh+7F z0`UZJ+goCJ-VjhbJ#_TkLeAuGt+m}0w1G5dIy2*wOqB=(1caA{2N8P|;icDr;Hufu zvA&QjxB?1gQ`i|jH0U74W{q@`aXQ0Pvmni0QXiT>@I={pmc;OzEN;5+QV#Z>jAPah z$Z+zW6xlcI0|I+?1LAFaP7<2F;yKVSGX=c6J?K}MmDpxLb) zxO4{Qu?;cz?5iS9dEV1oN%!3Ggw2c3ZnL(W{nUsL@O;k~f$X&)PSbDYUv7Im?*P@i zh0$hlxjSp3E^v;h6F{g>{qfYMqQU-~vaR%d=l~GsEzT+EniJW1>)#znjjmWmQ-HiI z?pSv^lpSQfxcdk3$UuFRA}&2t&?%nWib`c4s9&!QMlP~hAw^0CliP4l$}Qn^f~$#} zK?6`;xYnlNZr@I5Tecpq@6VSn{cn?>dMm0=3sKA_1%{`mkWY;lhPIY(M|79aPT+Mi zP&@Krg&OVMu{&InvtjNMp+bk3$Y>d=Pbga41cbV}YID!6!nb*df4BYiHS$>vF3P0`r)C6sYH%Pl)|2g;76ck}2B-Qo44pj_IgMIh-mw7<9jUPH;M z+SyM|+O=~=`jvJ^uOHZ>3uUWYbbnaVj(wlSBCXjn>2z1Y+%?WAM2c4rZNHiabLpC2h z44~p99IG)zO3L+Ip|~+QaL=ZA9qJT!^Y$m!)_7~$cdYyDmbD^E_qGTTOLkixOx$jsP zu7(|mAIvj@gpgqbR3DZC2D?=wl@r?AdD)P*I59ngi$trUP{fuT3;W#9-Sk<0 z;bU1Tkdl(WGff=GFz9CRs-+p=z!3@0w+nxgI`!i@{HQa|p_knj8odqwwtx5Gh|>zb zf9KL1(<^&4a?9R~dOU$uqW zshaA_(rV6KI2i}QN->BDd0FYXDP}Zl6&Y*9Xa9@gT3#R8Fx1OC?j?35jhf+yD2KTJtJ6p z)($!K`V`-9Mb6P^HBRKvk9c=MlQnws8NTPBhv?Kvza`LgH?$$^V0J(>R>|qCg8^Rr zB@i9N8S+VHLd3z2v#aa|_lgOi7P#QKX6Aqzo2L|{xm9?if4SC;OmaG!`MGVTN z%PcM{3cBXg=clAEE;PlU3E5v|GD=1hj=&GzPrW0yQy zED&Yu9-beCdGoD}$I_y27q&%MJMXy93lBMzXwdX-+9}S$ws?rW=?x8P!P5Yy>JQ!- z=XLYA?fDO81)lTEV22+w??@hEI+ny)#-ZJ z)7ZzfUWdzw#5 z0EdP$ih4WPNQq>Qrph`-4cGrp5tF9NUgz#53r&ejeP^CxL~VC)c!I)eH$5m`*NIOH z(;rVF$-H^iA+NKTIBBDD2%dFbx^=hrox1)tct0YahIHE2gTyUSmk^FBv>xgR!j*HD zvP&Z%Hrn}??m>APaqz1vfyEkbm5AzcN#Asn&QzL|^PsN;3{HG>IQ4 z6ATt-C!rBx)CV%ys<4XVHRYx4RVh~SrpkE-vs^QnchWIxvPk;8aXDqR4&AG%-P$&Z z`OkfimI}|Dw*!0`j57q?DUt@jYX^(wg@xyfR|d`L&>$K&KCkX@6@0_&P+p)Xqf69cVjJ$D!`%kf^H^y%G7x0lijU(3NhxaN$pBQX3DQmMH;5M_LZF`Pr)LxD`?5^S!wjLw zmyfwiho(k2a;}4%fKOnVEo@G?5okeDExkK^1TwV@vE}DaJeqCi>_K03-40QB8JSGR zEWM3Cy(&(TBx;?#dWZ*`K)(_m09XEqb;TZq0=tJxlnlIwkIvOI>H?Zlg4Vk+7Pu&! zL(RjQR1D{%Tx;TMCtvQXhT_pAA;Mpv5Z}mIj*QkC<($h%G2K-q?o6|Cw|GT*mpL2; zjn2gzA&&Y7I1RWPN8pb_Rbzq?vYa@zYGh6MVSQebC9SBc7P%pv_4}|z^tAk2^Z}_H zvt3c=Qq}czcb&%F%tbxnTS#!!n}KLsbI*ayQ+*51Z5D<1wwN?3fU-l-vL_RCTpnIB zdH)eSJE{Hc%?;cW*ysK*=;(#j9FVGJVS-|A3W^NA7rP;YtL5n?k#WQBk8x0ibWe1faB%h(Hgm4$K z)+^>KSBtAgYb`ONC;3x_`5%R$$WBw`I-;?6u3eHD07oqajh1U=8JBm}YD10caTeir zAeQx)@lPYlp|aEuQ^G&V(pwd!Tvu8_u;Xa?COz8KJ7$_Ud-9sI`DSZ}Z%I2NXUiQ_ ze+@pA8cen(s_Rs9sTw8gw-t}HXH(d#aDDn_zXvfw+rLQ<^;L86A-USjM#KK`@_GPw zJZ~SblH}T%Hl=sN34($wFP^Uw6T?&!x!dqlqL}X+1j<^ul!-x&nFq`XNg)KbIWXfF zJ?tJ2>Im+e&+^UpW>``wPW=KckB{>mYq7KQA|hWeX2Sds;!P=9v<$QwxTEHKfcF9(C?~HA)6$YniVRzPI4u`^jl?(V4p#W;K>bcTY^AlHj4R9f6^(@qiNKs z+n+>5uZ|)HnU!wvxj;+#{j+*1cE3MR!8!ExeMaNs7M1H~c-G5ASVwLQtE1daoO0YB z-;pI8JI$Z7pPg1(%!kd1g2^psc}1ytkU@;^5>TN z8a}`F(UO!f1c`fUin} zA$@$x#$xqcb7(d_Y?3QOmm1C5WGK3HGK66^WLcsgZny&~g17H@Zq&}-ocH~TE2!Zd z=H#i4jGc%KD^8JuS7tVPgl0<8zvYT9n0tUT;{KveG>! zNyNSBXmm((mznpZ2pS77StNA$&R+8p`X)n3=V5cia=@ROab%LQGI1w3K zj1LJuAMoS}!YtL3#ff1nDKn)I=2SObC2-5_45YSngr$EVz(eAt{~@uqdGvOaUXB04 z4z#$M(}$PGv*w;C8{~lY2-?9DT$(aL5nHda7<{V z(J}CLl3?pOw*IsCuo4saTpV?|tzBFJr=Pvs#KkBxx`bw~dj;mch_-~xeIOi?ioEe> z@SX_LxR;0B!TgxYrIYc{7OOkWp!fLn^b!{moTPdIwgJHqlh{5rc*m`@+!Q^a7*6(p zMys_j5$Fe55?aYjXn|L=#&rx+^BCSfM4q~5?ncBjK8%lHuer}O&dmgf@_1UCz(p%3 z9c4W4^iz^~hzFq6CW!mz>c?vKYFG(e9vPM1460iNIGsH7a2ST7VF{zqkWqDPsG(NG zo^onD#>#RI@{tO2%+%wndGspl+UKSVm={~Yz_BCqFD6Y44Zt%_IOB(Vm_h{Ar@h4~|;OPTkd-g5_iV7&RZh@iW5X=-mtmMrS_%O&)@%klm& zuKviQwUII%evz%Uq`G9Z!6LG`ZvcsESH5CK;_N_J!KN0P_gRDsqlg;B>4Y6i$9QGQ z4b-umZX5Lm^-N?`s3~|f_*#7VD)C{n1nX6c40}FU%p-##SFBl!2(Mg@)g<_ni2czt zbxPPdi zxRNI4MKrvcam!Dk%CJUh83o1s4+$Kf3mKAlcl zmvZEb{%wwJlG%>zD^Yw~g1K`{<8ylK>A(iXma zQgN13ffcsvhR+%=y~q#jP-VGFDwVaKXlTS!DE*NjLvl!~uh5>QbYrTtcC`#;LA0=! zJi1-NSnWWjjqJw^%qb*@`O*HUsGu2#Bk4-eSPmBv1v_Qg^LDZSioiRV`*z%;5c0dP zO1f;q7IJ|i&xCrk0WTPQwK!xwJk6QyUCq+0+L^YVkoqC|=D}Ay>wKbG49<*|#2Kul zLI=fDdQcC6*P2nuuZhJjyN=3B2& zYLXk+E|F-7+I|Hv*#$Xt=aoGfw>BPm;lkUPwU(e4@=O&ex#y1AIR@LVER!2vMzo(1 z9r+G!Yl!pj-UeIz6myN)1*jVgb9DQcdv50!rdl=G2fZ!_N!BEE>n)qs9ULEP?GU!) z$TDoB?6;6I9mNsE7O&InA|C2!5oA^9jl@GTjii_}#oC&TBq-jBouxL8d7 zfC4l3awqJZ*AHhorZWVN{ zHyh8*0vZn_ExPouZVTlohqar=YqZbx^LglXVYRZ{Vvx|?vBdEy7Yh$aGI}Db%s}V1 z?Hh+04OUTReM_E0M%&1~TB$y~2Gci)OepKu=LcHS?t3C9w+n%LeD6{lI6#nQV6Ud5 zV_kQqAJ4lL8DnY;Z-!7eiiziWdAA}6@7N^gri=M~%XZi|=AU2_PU5se*VLK?waa-y za~~ilKWmMln6QJOAdO31O4)nHr+x1Qj3;rk1^k1N#r)F}-^gNO@KKESE55%V8U0=K zSX5C#mk#hKzxobJaDV_23kBHS3bzdin5H1DDhg~PB^-O$hn_frq?m{<{%`o}1pxd) z(4j&i*T1tAy2~FL2AN7i5kv)diwN6wVI^h+`^)(t+fUwwZUe)E!Ef?8 zrR{rlQrrf2FGfTkgdpD+NW{$^P%Z;5y;c0J)~0qU2~6*MZ!mboQ=AbS!6c)|WY1bL z^{m5S-vDM$rn`@cq_xzT#s;tlX5{W_cYa!-Hvy9(_4yci8<|sX_U_x*K}mt9v-ghd z-KFha#~F_2J*8aE^iT0AT)OfelP(Tfs%6I*F)Lvsg~nDMU%dHE){SAY%0dUum6h=$ zX@_u5GFs&JPIcoT%GfF0RQFw(mM^t7=WV)M$KiaB2ZWhi-7!H)k2IRMX;dysvPb4^ zHy>&W0ja1JvOJsm#r$xSv@^N94%Xq?`pYefgH%2Q7#+=>@QSwnVO?66EL~jvT0W7Z zobXvpT>FlxK+pA;5k-V&fOzqx0P^+Ok4zSH;qx>-KK4|_av=DQc@=kKUdP3=c}sOZ z*ZsU{S>hdvWqV+q3wY<<>($ZKc9uf$c3?Dd)-M#PRPC_!SzqeyH27nL}3C# z-5}|mb&57_-7bmp6>oA-90H?CH-)#YWg_2vNRH7ezEc!tGC9YIylr|VF&-!SiA2MavpomBu3i8NQJBt}+gRh5TcP%E?H=1$>lbn* z$BI`2U6|duLYSrsMjvup<52yhBi<6je_o%T-yd{{tV$yR*~-N7pvWw!n1t-_({$`YShL;az0(kDYyGoS(GE|*4%f1No2Z`xVjgGRAAD! z)2*BO43#6}b;6Yw9i%?o|LMc6V`MnkYmcar96c_>mz!x$SgsG*uV){}G#h9fK*(KBPfWGrP(y6T)O@=lZ|g zY&xlvSQaxR&2_CkSu^*Y6BBZEWwH~Amh^i2!uz53>OpQzRGtA9XAT?_p9)1K>s5Gg#Tvfh2WWp>HUrf=fw2Voq*R_@9gnI?MUHfZx4 zG;=0^nzuQ|mZ#+p$-TP}O_=Y>r}CZ=&t6}>*6qC`#Dw}#522n5ox-1jXk41-&XUuDG!y#=$P1jmX0mFR zoR#R6%#+=4M1j2X;hc4BukPr)-Lf>Y3Zs+IVzE;YZa<5=f01xD3#h4AkRl)j>f#)Z z67xbCPJ5|y9V0#&qIFs4lL|HWI-^|5vPbU{5Y_5jw@#Q&S9ITE7hIoF$v)6n(24w7QX=D8@62V!S4AQBo1d3p>` z(%|dIRTut9gL2ylyujNVgtRxb-;~jM7mN+7kqj{)sWh#tP2*T`?^0ka49h(^o2gVx z1{Rwk=3|zpsL1j|aV0Rv^}B8nCT>yjJliMRdzY8NCGLlKG=0;;I$Klr=$&o4-KG%A z2%IA0d9JII(*5~KY=5aCY}(2z#>pzt$72wg48wm^t%Aa<;iP02Q?h*0ABQqM#JQ}~ z8_{keelqDH@qgf_cl;O0OZQsj5IK&uN-UFc-Ci4P%ae`XD~S z7i@BSWVW+6fy(Z%V|2SsK7duO?dDHJ$BA@`y_3d#S>5_Z0)&EzYiO~pSI>G`m|#V` zzrbUlIwpzqTW-$NAci0}J=<$>GX|BE+WoXHk&i2oh@WV%MKQ_xha{uvx`fI@LuyZc z;}Vr+OIt?&Y=}o_iDye=`tv8TC)rKT2ba+K!45@Epz4aFk8;>`D*bh454ITBF z3luw*5IsgHw4cYAHr|iyU}+VD_V=+9wP&~TbS=>E!%4k~ZBDaVX1UPj0EJ+P2ayb2 z7X+9OKmLWF;MaKdv}$7wJB3x>A$yz}`-cd;bhi)?DT2`k#OkNI&Z$v881x_?ek^d` z+`6|$zOEr@267(={J%0`BtV-kWHJ#%geX)i?r|X9w7Kn0HR*A1i{k#UXO<;GaQs@U zA1Utkg$I+E$PynBs#PAzw)lgdNQvdI&x{RQK8(fLLDp@|eKnXNpsGF-0v&-a46q9# z)%f9&yhc`05YZA0_*f~`{(3aHP#jSX{GFBb(nf zC)$HU#&Uez8`9o3I_XO6eoJ`L8h2A&Uczs|h!Y(gLVT6dV<3}{)8irYz2$Zq{$u+s zLnQX!?e&FxMY1W_OSW$cc(>KT>4K-4UuU-da7kwP;Viu+0nOg842?kJL!#KxlmU`M z&v0am(h4+1f-O#&%&9-MB@_P9o$c<9T#kp;_#&9 zyO)zNy{IdSl4u7cTQY6+3IlBWir7NJaLRE`B>fl@%5PO=vp_5@{Zs@P}nql8c z*EqD#b6bB@KX9efH62Od#IRuix|>wZ-0{44BFPN%`LT)$p`Yq`DT40m1F!E#>rs4s z#td&nqtTsDMeqMHjLs5#!&D~YwyW>E!J!l`t=ATD{k6lT4iSY|;A3zT$=r!h9GU2k zR0y;8Q6gav(&YV@M(n{LsU}h-ie^o<&E_??V~D<0ZDj)Oe|6O72e=Twu$Ez(OZi$0 zaw)lmmexE`3p9+FI%K{QZP?Y4<)DU9kobEfv;2pwZg(*3h3Mz}j!sJgu&) z8}e}F8~tcBcu8bZswZfC2DfCx$6l?cXC$COkn>7VjyYZ73L?$1_>6moidd4Osrv%YT_uPEJT@oxH(`3fPwC06lBAG-DQ6UcMn z|C#VPc(7R)($F3;T+j^Ez270gpC%5#59Bo3JwSp&?EoSr_Z`B@`rt#;{wwp%-Cf>q z1UAb-lfE=|@WhqNaL-b1ZLhG<$2x~C(fvdH;4(GhL&Ok{PahGu=dr?l_nl*dO9 z$JUuLtcyLEKYb1X44|B;v)Rh#kqCb*Z^Npyrd;D=R1sT)IL$wPn1l^=;Q274D3=F_ zb}_Bm^{2P*d%WD3?v1Z6b*ymPtQ`?85|+fq1eTbZXTev<1kL~ zwV!#5LXX0B(Wv8M8z8

    b7b*^^mfGX{i?oo6};fHDt_|Q(@Dk2%RRb!iK{PbSlsN zOvJ!e6&UsH18S#L)E%^np0qRopU2TQKN(G=R%h&#oLJrRrMtChtU;Dg zRtk*kH`gg+t-Pv442kl=hn`TNdmSP$5%r;ub^Zru$Zqkl=O+#8UbF{*^78sBm>mBh zx{CYtq}Vi&$(x!1LVgl?6KgP3GU5NYC?(iM92}e0I?Iw_>3R8v?yM=Gx7}v8R9j>X z{q=nsht6;0+j2G_stQK7oBQ_Acp0bzn*wz0wXh;bIrkXRv~06uT}QOwIS<~rd!HX` zg}BCchWG_{vknvET9nkQL7G6dIWi4FMVgcB1#HNmbinSBz=VHqObM9mg|0@^GZcj2 zkx7t+RYd@Ebj|>>M~(pY>*)fc=qSICEJ&Q>-+tQ)WeKo`7>8cw%H8(tfD6+0KPl}z z1GL9705x9GYsAYB$hGa;{hl_UqyY&fWFrqu<5&e zKnIH52&l9qm@xQvOPpK5M6HuoNNKh=1eKldv0U{50)-?#>Y3>Zx*&0i|1vx4p>ITZ z7{6SriBa3_a96aeV_S+ibeQ{gVe7hBwT-atY4yB1Bs&1&jq{!~dO(H1lwFkF)($vc zO!*y?^YP1zXTn@`xpGjh93~{9tSZ6gD2MIX9M zpd&qI$(?z!E;)rjf%zR=mlZqOO8~0KjU=3j$T$UK0tMGFujBrpgMi2vlKIy;_j}!$ zhJ9U2lpZ)aUY<)3ZC&jK5W75w-oNfFGbaWqsqA6UaJPCqfbGCuF#Ol^!}0>-#5=QC z8CKSgQJw=j?}rk{*9ShC;RKp12eTEC8Ig%ZYS2*a{_s>E*7%j}>IIQ>A0>>Dl|iz$ zL<9mNhkM0+i0+t;;Qkdw9CVNL>Gnud5z@)*b0_tgdaR$YIld0+#~srazw~z^z`Bng|7b zG6+3R8Z#<9j=_{)0J_@CyO~QpbZ7_i-VUCO6jIdf2O=$0%@#ZRBgv~1^?cV8LWjR8 z-b|OU-p+5nHNvX6`jpnPXErOGg#2pR? zR_VL-Us+))B-^gvR{;gJr)fa1I1|7Z+bp1sqO~ZzOSwj&%D8h?1IGsKP)$|!w=Z^l zqO6HWp-Nchaxbz0H$?jO`zQvmAraOh8_{HgkyPP^XEuzCzz zcA`HOi5ME>Vi=#M)m@4x=^(Q8&FEuAU?jJ5t8W1$iX*@#o6pw%Gu(R3H(WXDD!PGJ z+V`yWN>+DwFE>{9G7?!j0n2TNTzKH06_|w!eht5BR**hbRNytw2M_+U{j3>lsuxYy z+R%+i^U^kj&Ru)~07xux-P3#j0$`|~`5fM*3>cq6a9uY9ekBotr#aq#Bp1dxZCnvT z;5o6#vLHcwkPGyTZD0k_G@^W4xwX|?0J)ft$c!oHg|=1>{p8GkqZ3#fh<_N{tB33f zWb*U3Bl*_mZdUr{uRWfB_LE8doKxfYt)Q%#a2VmZ;RCs}@7Hlkg!oOkP^`U=F~a}v zm>bMTBH{-;m!-|^uEP|a*U#bW$9cTiHGr{{y{dgPFm>v3clbrSr581IvGCVxzS@Zc zv)98g)k}_G8k61iuh;W5M*#oRRP@22b8jp?7M}f!w`PY&W*{lX*3ieW(u41G&TNCF zWL(+an2sy(Jw`IKmPY2*xP6Hvr3Hm7<|FRYl0+&z`7&bwlM{)U<+ooN z6wC~_eCkZ`91(|zVa>f`VO!rKVi0zij`Dm^cw|_)J-kb> zhv{;ti0j$yxYkgj4(W=5R3mb5-l9uN=TtdPw8}A?eAfSE6pJ9`O80pS?eHDmJ%962 zafyfV<$Em44XTDO-8X_Sg5>B7;H)lZS`ED>)zobFCIFSSBT$p(iohlQ;NJ!zc=5NB z(F*bRxMq6Z-a=;;q~B_@iEUytj*0o$CaqNy4jU!DbnUsVZsxu`9@{Y2Bp$!G0`a5O zLLyV-Sp?UaB!IgNq3dk~fbt75p~rauzQwpfO1JV$5Ur5j^A=P;VP4l-hQY7Ew%{@* zof9=oT#*aAXCPjM9Ql#ozwq$YY&7r8CirlV+Bp!ir7yrve2qjwWDE&1^$G|m*wVco z4`n9^ve*-7x1_XyJ@N+YtqdoYVH^Do#oWi6AGeANbcdx}cObvrBsiu|#&$IVeGe(< zPXJ(|e_kk$7@&ktozi`o)m^k*c&k&1zq_j5L7@Ei<)%mE4Q?mb!$FR2to+B<9Wu0B zKv{Z4g*WxQ2RneEep8OOiTJcq$lGn7>(>v`Z)Y3WyRBDV=9~3S(`bnJG*b%><7iET zL%WH(o9E73ADug1ZmmmoGaURv!gMG&4C}%Pn~J=g9WiHG%P)Z*E9|yB3ss#F^0(N} zDQ7svL|_sU$Ifc30ThM>IT4(cF90~OK`(c@)CDA<*#rfnXF>?UhL}1v)o#_}bWkMw z&fUt9Ud=6p1R)a`l|aX)vKL68IQzPJzHKZqX=dL$L@v4eU#W$^4na?-9|W%b-?6y> zq}&t`&>U&lkve>**yjPXjv@1{8q&|HspluaN9R{TE7laRn(5}tQkwe@FdZ8 zJlki!tbF6)h(M)Q`%+Wqa;e}8glSwrd6RWJD~CmV$ypxB{KF2A4JZ8PbU(lackSwaP#E6C;)Gv1@1V$*azMYR&Q zi*wGtHt5#Ee05E>Wf$99uff7RNb5ibGp1UcZ$V)k-s2Hp7Eh5Zf6b=W%suQ`Qy32u zyQO5P7@n3FaJ%9lw?2WMqn)o;LyWX!QY6*0%fcegRBa0m|xLuUAr* zZCCpzFQdYf%Eoim?a60n$5hP#{me?eu=i-3u~orRNJUDAE~P}pqFsf?Y{*rF&K_n+ z(_nJE9z7pLWV)@}ukY<(-`WQ($V9!Eqm)^b9ZGS`=Co-Ex8wLmROYmKgvb64 zKIpW-dnD|^IUhRJU3F_zIIwOH02++kva#x}+C4?>w*}C-TWp}_*!{+x;){#4=>&-D zl2-%pHqnw5AaP`4?ub5l-y%3X1Zn|8eM`1ZXH=Gu82D}4t2$0&cP7Ig0wa^U z4r}-CbcZVeewIt4I9o|YrE+??>I>O0Xz+{FaC~1f%6P;n-ZJ8R8e6Hz5d{cvC|-D? z@TMJ`YkG2UQq1-%uvwzl9%+$qou?4>&?wG-d;v%mQGs!Y6;Xa{O3=;xh8{eHYGlEq z2qM_`V=*6=Xb{!6#&o#Blzh+(6(G?F3@B<%Y6(Ss`saZCYcH@C{!$%#;he;lWDb+8 zt=%xf=5gf6a`_w+-=YDCzNkx;gm-m+P_21((nm7;uQm3sugj&Kr;d8+26Y@VbS|{a z@{Zq@0Y5#qWy@tzkn&xtG#1dgqHTv=f>M*CAdLV2KjzOO1rBJb^bv`}YN5L#cjjzS z{jprx*s6PqTe#Oz0fjhopCS7`+W++SU&)>WOmNKlYf%FulXKzLPMh%ATmC#O-0g%m z6@4A$J+@x|h*T#IT<1cF#eN!3;y*ryDkT8N-=Q&Hl-FQwdRFt=UI1qj z{nw0=X0`jwe6)1^|6}t9@Fja?Ro;frx1F8wPF}i&?X~%F^tVf}@@^=ygW3T)S{oB# z`Xr-aGbjf^i2n|c|286o-+J|}L}GZ;%rJyq16|9q>gSUDmF>4xtl42xou3?A1G$Q9(EjCwUh zxA>i`t*M`VSRpgK=?3k+y#p#ITHb~Zy2-YyVID@o1rpC6K2?b2)Aigu5x4(nKVGoe zN$F3WxNw2qfX?#qYE6(@eW<&`fn%4?I-2OuAAcDo*f8H2=>b^W5`1@9Uyh^mMD^P# zlapmi(j|+q#SR2L9`T%&(q%FBUnbd|2d$8#c&srNsGgmmsCGI;*b_~cRj=5;>0Zy+4#pFe;h%@ z9Yfb^nWh+T)37ipHSe_1WcNFN#$q6Iw;V|iR^4&vz89qvf*`OY*;p7ttokRN`%gQV zNQgx=;R4)72X1}ZG~#U~N%N0B1X3d>>M4dT6phR4?9e9a7!JF6&8PO}rQza~|8H(K zAVR;EL@Q8YnFMs9KBMY(e9i*P#JSE~k}p;@u&zddsPZf#upu9kG5oN*ubym9B|-e@ z57(Lr&{&F_ZM-L@rbaa!iKCInlv19U4zZ@Q z{6!3RI{v(rO2H|qwKF6hxyXOo7x@(mRHf1+U8_mzt&z`TJfQ!csIEyP1XMBf)zw)G zr9EniZbs#+IQjn@8GOV-G#?dDR|mUTm0xaGrIR}8P9s(!_LE!fzpj0n|%PSrru*N@bZHUPEA#VOTlaGi8 zr)AMo3HlrsPJud6S6WNH>nR`HP{eM2E*F7Fx4F(_@|o%CHm~tN5In?Rz*S*EZVxl) zLxNdg`Mkx#)M&ELGg`J>w9pJ3_^$^9{wy+?Ox{rrvU8I(%gz_WRz8jJynqH&vd2?9 zt~1}m2sW-QV27WK3-fOX-6L*`Yie5sS=_V3fH$M~>}R;s0>l#2W-`|!Ep;OVs{hR3 zL>ZKHD(mR_;BX?H3(_&+-i7kdpSQ-;5QIDPupC}-z%yan;^S`R1*w!vRH>r}b`kB5 zKHY0^0z`Bku;YpjFMSxa|IE{>-;YxD8m*+}PbMR=)J{WIABw0@NtxEIk!@#mSUx(` zFcerQJU2$Sh7#AH<~s1jo6Ky9`tyHTB|=OecG86;5ctQgH(*;yy!}<8;<+@sJQCuT z^~CH{nXm$zs*!xPa^XF#^MkH6`1uQTRt{+chKAf+*c#1^m{5)cVCM7MM<=ZUy z@)PIAf--qposOvbH&WPup2O)6cJX+?;~&`qHm1#j;O?Q|LenlEzB7o z{`e9}3Nj1C@orbz()uRU&3lLP=%fPX4XHkSr8;(30=J*@XP5V3A1VG5`u%mbIN?t) zt5U%6b5D|XJE>TEDbrlvUjpAQ@5mV%;z&r8wGFFXGibPBZpZQfv;WUV@Ylx{Z+!O5 zsY-`@MWEcHwaQUV6g_n3NVIf5#3U5?z*=hJ8DQtX*WdHw9n-ShpBw>Z_vJz5Cr%D-I z7RvxjVxIbE!buH!c#FPPO}4V3C_oRO(m&nxLva-hW*5UzR%}fsxD`&lk(H;{9?-Z!U8a41Nr@^6W|5on>lz zMpQ>?Fx(>C$#bz|@cPqeTEQPpCDDuDmQbfy#4YvGXd*Nd4*=IrkffGY3DuX!L~f>5 z&>QQD->N7F``>dZ9g6*zb(C%Gp2zB%{e((N$n}o%3Ja7x7DHx?+cc%-0Cp!<-=6b| z(l0dF)ry9N)*1Ow@qgcl{_aL0@>_~TEaKJ_cJ2mN%F~ef1WeLBwVEG2SU9j$@?oJJ z3jE_-UjKh?!F-RtR#ADdEWK{tlmeeZbz-5dXJ|~t$CkZu@px5s@mrhG-G&q_S&eXuz zq5nDD&|oq;%M$pd!rvt42l6eXhy0E8P)BcbVXdIpwRjK&EB_}_X~2J@Tc+Xp36(&L zJa0y4eZExS{`Xx3)A20~MQSW>n_)m<-h1ucLV?%+9UhdocC&$9i|m%Mg=nhUlUnx6 z&5RX5c?eFhZ&Xe0H|TU^y9ni>=G;ifKgVbZX#kbUOahBB6{{(!xmA=^+u$>;N!S5r zcEejbn`=%-g4;h_pTB`X{wOh3<5G~{q_*6(K0x+MLz`llGPFfZhmL-PeBRq8i!mlR zkX;gJM(L|K=^qOfm`YVjtn)FaZ8(UUNp*CZnH7*txMg!+F5-linN|i`k2{tT0XDNF z^8W(tLpS{~p{SU#l)>KaJWh#OySGZwhFNr8b8jvT0Pe|GdK-z=QXgQB4^Nr*+Q;yOZ3T%2|acHfz}&VW3MZ z=1be5c#}4myus-A%FuTvH`n(4z23^8N;Q-hOzo}?-y0eR)7+J?OpE^?O=rOrSJy3J z9Fm|RKyVEbT!IV^!GcR5I0SchcXxMpcXxLW?lQQ;;N0_mRrd!_Q+1fxXRp=WPnW|( zZ$}teSt({sS6Zr(4N8c?*-BxFpQ*b&MmbfvDu7%FN2}I5?m$trIX%8`SB-MuK=%n5PdlWEU8Z(7s z2$tXnCvsJ9bQEOd=JBT#ki)TBjKe-q5gB$}Fqf%E^PY2`aapJ#yf7hWQW<7;QcHAw zO%}9LdH;C#!ikpl9JSx9*%7sui7PW$GyK`+e_zqBxG>aP-${Qw*4^F%oNTFYqsFpk z-wxhtWb4CHq6v=ozrRyv;8rwa@S*>?K?-KF?&AgO-;Mz3M=A`P{#O*=lkwB~g(n#1 zw0Squ1mLBK|EFTD04;QQ{)#q>?eW53lAWh8?H96+*E1_wL;`DX%v-mM4i1mIGHq!_ z*O{=`UgV6~rOH{{hv%;MXZyPal_F`5bv8|#0j#6d&9}xe=2>?;I%3ZU-Jv&t1|t2R z{Ok%Wjc0)%@X-TcDm63#v}9>J@T7yTSnAu-FZR|yu?Ct8e)(95WW)6*Lqu-l983k6 z4R22;|I=zBI5s!|{nnM?xJY|HK?jWn}>$l@@6;M5fpOzm;w_FAVj1EiJv&`q#?$v|jR0EE|2mD2s8ONmIt# zj?qX04mK5Y_{G05EA}Fg?du)<1#Zjt6N7kBrmN}Gq*JHjhXvQCAg_m@qp7#ksaZfw zRj_&|!>Y(R<|g-G=enqA;^DIYR$wreSkQLSxytb<)c-GDaT(BSMs8)_Z)NFiEdhm) zd{o&)t`g9JSzj;S->jZ)i}*9d>*7`c0?{lY-=&W|pwNI?l<+co7q?}J%x%||&|*V8 zA_stH9RD9?)_%hUT<~8D*wOu})s$Z$V5+;g{7>#ZD$a}i1uQ~~oXU~%-SWQmqEn3~ z$;@{?pRaztj#reCSmVe@-`Q|j)cl}o3#qX3pzYWtycq7-;Y2_D1$PaGg=swTcl^u~ z#hvP$F&pQV$>5nM%^k(R(j2Rsd+O54+JdQ=fIU>=hUMQFlpt$r54`K*N}2VwuyYj> z@%AJ0VSH9FwtW0VZLW3(WZ=3k0~no&0KLZ{mDkNNmEA&3GSirFCfDmGZS(fbF6&vt zb@O>63CJ2R3k9l?Mclwi-vV3s^z-Ij)J0PU?M@z`ryU@KwWqr4e?vI}q^U%Ji^CN~ z)nyYp%MSW_T^%TA*M2j}-8Og=EsS~<15btmVOn$mi2^$082%&EFP}uLxUVrkFSGM( z{@cgj|F=7z!!-i3%`0YAKa>%X=FjfD!%IJ1wgY_JjtI{K)~sy>F+>bQJ^$U!x3f*2 zwg03Wd%ytT(uRFbh-qvmc(-hoPn^;m^>!HbHY~w^$EK8OTE=}=9|!hYcUW}6H;$8b zhKJGg6Y#wF9WdKa$`5vQyF8f^U*~ujM!{0it*5Hc(9UbtlW3A@q1gPn^c+gdU@Ve1 zUg9RN+Zg)zJxyCx&*#6JHeX9!bOqf{Wo*1)yq}kMcxFtorSQnB=Co&f%) zX!E&aQxc8uA-hRErCNzq?+@Y7CI6l?&;w)H>qFQyTRw<8#YKT&0S08cRdIxhgCM@! zoIw{)Z)8poMmWsY9+=APFlZ8GlFDzDNI^OXz6k7{rR3?q49HK3K#AK!{Rm|m1>4!y z6F{nK!nvW$&{*wqE_L$u!xNJ?(mIlre{o2#4tAp@u}Ygt7E zH{)yiaS^Y8r*u12W6sOmmL}sv+my3;9x`r7gJt~o;soA})Sr*p*VDtYrpMl7XpNZMIpVi2+=FRj38k=PwH=6!2dWR zTL^5n8Gw!W#WA3U*qhHH96*!u4lAs&PSE-f*<{E-p{_czf%l^Lbw!0!Da109URFj9 zQc!R5obAo6e?0?gliju0({&l;x8<2oq0t_^RnM0!=baB|GT@+k!->>=!ifJ^W=C~d zujSh01di|amDByRCB3K}ikZR*3H8x+-)U{EH7*WZqu0i%yrInYV5EOg@&ixC&DXxk zuF8F%b`D_IZrC3cBo%UWJx&nqwQasy{?((%2XeqlXHqWSxcG1xt*-!jIN@!V|Bc+^ zHjh{n#b{tg%c0;V=l)|^V{vsUw=TKYeQ4ZsLz!2lVqj_6!N6TiVTtwGEJ>A&t&&0T zjYAmJow#OA*VD1txc=#PHw51FL`H!qIkbp`p~;OEM9zuK;S`X3vkt%qQn3 z46&R0D^Usoi%v3(X_5UfDdOsl`G)D#uYJWJjWhiWCeM94FNXuu3nZ~x2cLke#4^!{ z7RjNs=B4u4vD)TvCF{5p#dzQ%>O_(qgr;UZF8`I?s23OR8909=lIvfth~I1Y`)xzC z-=7w#PBk|HL5JIC$P?%91C`e`)e%;ev&f3$s)ag{y(iiqn8z?>+N7R1muJE~ z_sEH_B&G273T^?$*Rwu9TNk=zLY4sFC(B>O*E8**&}0)hu673q#FAcbV6RN0-65Cd z_<#DPh`R1Tn>QDY*NCLnPMkHf#G@bogWn)Eg2m4>I0AooH&N1!+d>YPp$mX)Y|ri0 zE$kLK@h*yQF+a?SPlb=E>^qz-sO71z=%*#ay1MEBQwYHub7^NQmO>rRJZk zqFv`nf3c4`ZeQ2B3j7tv#MxVI6WJcRdgLQ}K`KU_;=U+4$_-a@0i#Tp#F%S*o^!xl^58KjzWoZ}*D=vD9nDpr zUER1>&VuAP=ElbHLvB1E>sF9|j&BS*cxMTZTtyjT|EsOE4!5G(yqc}y}MK#z1Q2*VXvmOAdW|SH0jPI`V^tFzNnO7eQhw~G`?l6v+ zXL6Ikic9d{mD~rS?CU(1>rQY?h#M!szwDWzoM}~zDyOpp zlFJ4Ey-F=B7fKkyl7-)68PDK`cwko8Xe-3ua`dV^ea+gp zrceS|4$BY_4E47F_c#3elkp*){p90g#(rqTb5*9FTB25e?!=wNu_-&={-aXbr_O+4 zDbJW0saR%9jN(I#PzfzT$!oCorNzR^?7cJ=fIX>FP~grMXb>;>Pp>_8mSiP%vp7Ck ztt8$3PfpKNG*Tzr{GW4fPJQ#KFwxQZs6gcpck?pa5_b_mfJ^wtwNXA(NaXbrVn4|R zPU$^lj{>faR+bv%u=`WrMFCiQFs3=%ZR>qpmWGbSi=bQQMS|8%stWt~h}M1W>)a#w zeST%bYMkfV9lylgY&RwQo`HP0`V3@hCiEi;{6fsX% zgXXkMU;OPaPKExJ8^%?z7H*RZoW9E_UEfId5&3oZiws)XS`-tyUEt%s_$RO6R-)8s zLuKd3IsR8g_><_dD(PeMyDdr->o{x2s!#T|Xn;WUo#AV(oU_ixJhDogt)Cqy0Xc z)VWtnGj45i)Ve~bpK8kr?MCf1D?!!5g(fLnD(xfY>4lM1|COeX22K3N2a)K|^AU}6 zR-P)oSIhHpU$k>0712ybl6M9*g>y1gMwkmEru{go@S-SB!J~x?<*K zb_OaSkNg8%9Uiuq<~9J5`2IZ)_e7={q~-Mys8>3MK|Y-qmqxW!h`J}>wlVK(No@LHzQXL|G85)_HzWF4P#A5Sit&0=#}5V1b|SSQGvb`c zGBhPf!wu*JaB3b2KR;>RGyP&nM#RQh_M0wJ)8!C+uP2)Sn^6;Qu2VVet`Ni@*Dep` zrjtuwCrkfsJh5$WP2_|8~26>Px=L#F1MZiLBoIfn) zvF{8qftnRTxOB6`xDH7DKib+02m{kH|nMJ|L%UxoursC%F;B1Kq@i`7Ofpd_CutHiTiqTs4p+c z;xj6KsHT@VPJfskpML+m|g8Rn{!{hDz2(YKS>~%>#Mw=2aj>WWg zy`6O3C&-J-GRh#a4L!U91CEpwoq@C=5=-AH=RZABzX(x+y3bmZ(eQl9eQ-RzdRk;b z=Fz{ATCT}>DEtxWWEi0bbfXB+NzH@aH{YMVA{L}CaURJ~B1ilZSV*j**-j6BNAgS@ z*C34m{F+(Yqb)x)%jg7|T6yg2K_0}jRxKW>+yx5B-g>)Vn4e*Bg_OB871u^I(7xxb zusCP_JqfrGDvFqsVM^1XfEB~<^A|$>J1Uj~uo3Vrgcg^CxAp z*byEYVpH&CSt9CbD9)Xe` za$Ng*TwOB0A^YU#rzajO5FRIG!VMiXaVDa@zNjs~>)wN^8Pesc=MZ-!`ITvKPg2Ol zb8}t`^~vB58WK{aT<=;mF0Y8Xvsb%a3sT*;Rt?c68FA)#vBCUvFXFU(iPx&MB`W_t zlwm405nCHrgs@*F_fBIPAgX%Hvt)o1I(CJRRL%-FjaRMUPv9Ro5qh6@DG%Z|!oj8hrAR=h*51J!JlgyEU#53uU9+^)b z9p}gqmGFxWI0{zy)X^p$o<5zz%~T)POnk9hN6EqNp%|F~-R2jPl|DAAPG z0=-~q{<6HS>77}IukfWHP^pyZpe_S^N`FMYB~SM2VSp@R43?vHeje%<$cLYauK1HS zn>%06a`nR9>%9&%1WcLpa$zq+WZio&P{wVNReT%?VPsQoWb#3D@j)`*7Y~QGy0N_+ zT$}l0P5@=$6MQigX|WDYe47NIkxfjmOPl z46VbEt2qy(OH={;$-;X&8qx_)DN$go>%}4tKi!%)e93?5k;OMbK`y_>`W^gUn{;-P zAv3V>3b~z|`cnka1-{0UHubWnbAa9Vj9lV;`2f-Fw#ClKOvAhm6#s4s)?9!>}xQtbJr*&RP&eOEOSLS<7h;*E`8Zd*KD5t*zmKW<7 zr36>;4f#BTVe4wYHEV8`%s^9C0UqQg@MT~`%$5c_p&kEt`bhs{5zl5R4~RHSBa|Bh z(tbB8mKes^u7oYGRyBl&H3=-TPLC-nu?lB~qO)SY5VE80VLSs`Bx$$wH?mUvC>%O8 zne-P?+MFFhLy!lQ_?~b545evo{>#kyek7@_)@h5d=L@M!2GOm5kT>f~r1F>RT+Vzk zjd5k`cJ%xj|1Vog*!(6pdG0^vWrtv9eR0Fs4*CjWk|cE(KA6Pq2X_FoS|#E(T1tFg zB(C7}59#ClIe%g9Pc%h@a+~%`$+TBZUe8T3hj%g5y|KXT){oA=&PovVF9tjE@oT-9 zlyUV9rAPhxaPQ*Z8+Q2#Ki7aQR(ZT4_D@&m^9K*bpBEjxbXQSBieSaX2rL>-2P7~f zTFyU3G7I+1_~_cQV{+hXHlNmxxtmB#+)R6rq*U)0#f6evVK@)-fbHW`x}{SVOi0Q_ zsX0*>Uy%+~$t4^vY&^FEaMDm97JSTh|Iq{lOSiB5kuse&WGyHTn+y*cIx+2(UAWGh zIiCB+$)xP;2Qh22#E3QbbPZ~K`7@x;=S=39V%W+8NeM7zKhVNU{5brxUs}i-GfBDu zpJXAdcJ{Y#F;m2$6_9$kXt5qa!@~+ugbWL+g_W{lX;?+C;_!~AtuWn_LSN46Zth|d z9V`NOw~LcNRjf>&U$-am^ z&MKS(h5w3YoG_^)z6b`!DBA9A-`p~*_t<~DVO+M=%e4bc*RF_)SH(^%Ih0nm7d~i) zY-?e?AIZW)!dAHRRIJ=qS9vPyxAxF*jSBFUk$dOi#MIF3h9lTcMzf;++KhKZ61Zz7 zk1WhXPvK^M2q&113CL#sD<<|Cg>Q*hj}XeIcDoE*5C@dgyzvlTRX??F|Te2+q$m*y~{~tI~<>Jv>Ua&Py

    p#VFw-Z&IH|g0 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 literal 0 HcmV?d00001 diff --git a/blog/images/20240426-profile2.png b/blog/images/20240426-profile2.png new file mode 100644 index 0000000000000000000000000000000000000000..6592eec8867865fc4391f49124ced6c4e5573399 GIT binary patch literal 170876 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


    PLA}7UlQ&1t6zA&NS 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

    eSSns-nCEzJ&G$CYnM#r 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 V0*v+Ao@daXl(@WDrHKCL{{zxCq<{bb literal 0 HcmV?d00001 diff --git a/website/src/_includes/blog_previews/20240426.html b/website/src/_includes/blog_previews/20240426.html new file mode 100644 index 0000000000..648bcc0744 --- /dev/null +++ b/website/src/_includes/blog_previews/20240426.html @@ -0,0 +1,16 @@ +

    Legally binding transparency

    + +
      +
    • We published Transparency Reports, Security Policy, and Frequently Asked Questions, and updated Privacy Policy.
    • +
    • We are committed to have full consistency between marketing promises and legally binding documents.
    • +
    + +

    v5.7 is released:

    + +
      +
    • quantum resistant end-to-end encryption with all contacts.
    • +
    • forward and save messages without revealing the source.
    • +
    • in-call sounds and switching sound sources.
    • +
    • better network connection management.
    • +
    • customizable profile images.
    • +
    From a28d965a65c3e5eb3255712e491d598233c15295 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Fri, 26 Apr 2024 23:24:54 +0100 Subject: [PATCH 111/147] website: fix privacy page --- .gitignore | 2 +- website/web.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 63e7a018ad..e3ea5d267b 100644 --- a/.gitignore +++ b/.gitignore @@ -54,7 +54,7 @@ website/translations.json website/src/img/images/ website/src/images/ website/src/js/lottie.min.js -website/src/PRIVACY.md +website/src/privacy.md # Generated files website/package/generated* diff --git a/website/web.sh b/website/web.sh index ca34b00cdd..4feba4be50 100755 --- a/website/web.sh +++ b/website/web.sh @@ -8,7 +8,7 @@ rm website/src/docs/lang/*/README.md cp -R blog website/src cp -R images website/src rm website/src/blog/README.md -cp PRIVACY.md website/src +cp PRIVACY.md website/src/privacy.md cd website langs=() From d5a0c5e56a9c8598ea859e1b625a006cab086759 Mon Sep 17 00:00:00 2001 From: sh <37271604+shumvgolove@users.noreply.github.com> Date: Sat, 27 Apr 2024 08:23:14 +0000 Subject: [PATCH 112/147] scripts/build-android: update nix and refactor (#4099) --- scripts/android/build-android.sh | 38 ++++++++++++++++---------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/scripts/android/build-android.sh b/scripts/android/build-android.sh index 174db533a3..97190ec103 100755 --- a/scripts/android/build-android.sh +++ b/scripts/android/build-android.sh @@ -8,9 +8,9 @@ u="$USER" tmp="$(mktemp -d -t)" folder="$tmp/simplex-chat" -nix_ver="nix-2.19.2" +nix_ver="nix-2.22.0" nix_url="https://releases.nixos.org/nix/$nix_ver/install" -nix_hash="435f0d7e11f7c7dffeeab0ec9cc55723f6d3c03352379d785633cf4ddb5caf90" +nix_hash="4fed7db867186c01ce2a2077da4a6950ed16232efbf78d0cd19700cff80559f9" nix_config="sandbox = true max-jobs = auto experimental-features = nix-command flakes" @@ -43,12 +43,13 @@ nix_setup() { } git_setup() { - [ "$folder" != "." ] && { + if [ "$folder" != "." ]; then git clone "$repo" "$folder" - } + fi - # Switch to nix-android branch - git -C "$folder" checkout "$commit" + if [ -z ${git_skip+x} ]; then + git -C "$folder" checkout "$commit" + fi } checks() { @@ -100,14 +101,10 @@ build() { sed -i.bak 's/${extract_native_libs}/true/' "$folder/apps/multiplatform/android/src/main/AndroidManifest.xml" sed -i.bak 's/jniLibs.useLegacyPackaging =.*/jniLibs.useLegacyPackaging = true/' "$folder/apps/multiplatform/android/build.gradle.kts" sed -i.bak '/android {/a lint {abortOnError = false}' "$folder/apps/multiplatform/android/build.gradle.kts" + sed -i.bak '/tasks/Q' "$folder/apps/multiplatform/android/build.gradle.kts" for arch in $arches; do - - tag_full="$(git tag --points-at HEAD | head -n1)" - tag_version="${tag_full%%-*}" - - if [ "$arch" = "armv7a" ] && [ -n "$tag_full" ] ; then - git checkout "${tag_version}-armv7a" + if [ "$arch" = "armv7a" ]; then android_simplex_lib="${folder}#hydraJobs.${arch}-android:lib:simplex-chat.x86_64-linux" android_support_lib="${folder}#hydraJobs.${arch}-android:lib:support.x86_64-linux" else @@ -150,10 +147,6 @@ build() { zipalign -p -f 4 "$tmp/$android_apk_output_final" "$PWD/$android_apk_output_final" rm -rf "$libs_folder/$android_arch" - - if [ "$arch" = "armv7a" ] && [ -n "$tag_full" ] ; then - git checkout "${tag_full}" - fi done } @@ -161,15 +154,22 @@ final() { printf 'Simplex-chat was successfully compiled: %s/simplex-chat-*.apk\nDelete nix and gradle caches with "rm -rf /nix && rm $HOME/.nix* && $HOME/.gradle/caches" in case if no longer needed.\n' "$PWD" } -main() { - while getopts ":s" opt; do +pre() { + while getopts ":sg" opt; do case $opt in s) folder="." ;; + g) git_skip=1 ;; *) printf "Flag '-%s' doesn't exist.\n" "$OPTARG"; exit 1 ;; esac done + shift $(( $OPTIND - 1 )) - commit="$1"; shift 1 + + commit="${1:-HEAD}" +} + +main() { + pre "$@" git_setup checks build From aeb28400e9e814ead4e7be3da482f80e9f71c72a Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 29 Apr 2024 19:32:53 +0400 Subject: [PATCH 113/147] core: take entity lock before processing file (#4105) --- src/Simplex/Chat.hs | 18 +++++++++--- src/Simplex/Chat/Store/Files.hs | 44 ++++++++++++++++++++++-------- src/Simplex/Chat/Store/Messages.hs | 1 - 3 files changed, 47 insertions(+), 16 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index 7b82d997cd..f8285770e0 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -3577,14 +3577,19 @@ processAgentMessageNoConn = \case processAgentMsgSndFile :: ACorrId -> SndFileId -> ACommand 'Agent 'AESndFile -> CM () processAgentMsgSndFile _corrId aFileId msg = do - fileId <- withStore (`getXFTPSndFileDBId` AgentSndFileId aFileId) - withFileLock "processAgentMsgSndFile" fileId $ + (cRef_, fileId) <- withStore (`getXFTPSndFileDBIds` AgentSndFileId aFileId) + withEntityLock_ cRef_ $ withFileLock "processAgentMsgSndFile" fileId $ withStore' (`getUserByASndFileId` AgentSndFileId aFileId) >>= \case Just user -> process user fileId `catchChatError` (toView . CRChatError (Just user)) _ -> do lift $ withAgent' (`xftpDeleteSndFileInternal` aFileId) throwChatError $ CENoSndFileUser $ AgentSndFileId aFileId where + withEntityLock_ :: Maybe ChatRef -> CM a -> CM a + withEntityLock_ cRef_ = case cRef_ of + Just (ChatRef CTDirect contactId) -> withContactLock "processAgentMsgSndFile" contactId + Just (ChatRef CTGroup groupId) -> withGroupLock "processAgentMsgSndFile" groupId + _ -> id process :: User -> FileTransferId -> CM () process user fileId = do (ft@FileTransferMeta {xftpRedirectFor, cancelled}, sfts) <- withStore $ \db -> getSndFileTransfer db user fileId @@ -3699,14 +3704,19 @@ splitFileDescr rfdText = do processAgentMsgRcvFile :: ACorrId -> RcvFileId -> ACommand 'Agent 'AERcvFile -> CM () processAgentMsgRcvFile _corrId aFileId msg = do - fileId <- withStore (`getXFTPRcvFileDBId` AgentRcvFileId aFileId) - withFileLock "processAgentMsgRcvFile" fileId $ + (cRef_, fileId) <- withStore (`getXFTPRcvFileDBIds` AgentRcvFileId aFileId) + withEntityLock_ cRef_ $ withFileLock "processAgentMsgRcvFile" fileId $ withStore' (`getUserByARcvFileId` AgentRcvFileId aFileId) >>= \case Just user -> process user fileId `catchChatError` (toView . CRChatError (Just user)) _ -> do lift $ withAgent' (`xftpDeleteRcvFile` aFileId) throwChatError $ CENoRcvFileUser $ AgentRcvFileId aFileId where + withEntityLock_ :: Maybe ChatRef -> CM a -> CM a + withEntityLock_ cRef_ = case cRef_ of + Just (ChatRef CTDirect contactId) -> withContactLock "processAgentMsgRcvFile" contactId + Just (ChatRef CTGroup groupId) -> withGroupLock "processAgentMsgRcvFile" groupId + _ -> id process :: User -> FileTransferId -> CM () process user fileId = do ft <- withStore $ \db -> getRcvFileTransfer db user fileId diff --git a/src/Simplex/Chat/Store/Files.hs b/src/Simplex/Chat/Store/Files.hs index 81a5897c89..528290aa59 100644 --- a/src/Simplex/Chat/Store/Files.hs +++ b/src/Simplex/Chat/Store/Files.hs @@ -29,8 +29,8 @@ module Simplex.Chat.Store.Files createExtraSndFTDescrs, updateSndFTDeliveryXFTP, setSndFTAgentDeleted, - getXFTPSndFileDBId, - getXFTPRcvFileDBId, + getXFTPSndFileDBIds, + getXFTPRcvFileDBIds, updateFileCancelled, updateCIFileStatus, getSharedMsgIdByFileId, @@ -109,7 +109,7 @@ import Simplex.Chat.Store.Shared import Simplex.Chat.Types import Simplex.Chat.Util (week) import Simplex.Messaging.Agent.Protocol (AgentMsgId, ConnId, UserId) -import Simplex.Messaging.Agent.Store.SQLite (firstRow, maybeFirstRow) +import Simplex.Messaging.Agent.Store.SQLite (firstRow, firstRow', maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Crypto.File (CryptoFile (..), CryptoFileArgs (..)) @@ -336,15 +336,37 @@ setSndFTAgentDeleted db User {userId} fileId = do "UPDATE files SET agent_snd_file_deleted = 1, updated_at = ? WHERE user_id = ? AND file_id = ?" (currentTs, userId, fileId) -getXFTPSndFileDBId :: DB.Connection -> AgentSndFileId -> ExceptT StoreError IO FileTransferId -getXFTPSndFileDBId db aSndFileId = - ExceptT . firstRow fromOnly (SESndFileNotFoundXFTP aSndFileId) $ - DB.query db "SELECT file_id FROM files WHERE agent_snd_file_id = ?" (Only aSndFileId) +getXFTPSndFileDBIds :: DB.Connection -> AgentSndFileId -> ExceptT StoreError IO (Maybe ChatRef, FileTransferId) +getXFTPSndFileDBIds db aSndFileId = + ExceptT . firstRow' toFileRef (SESndFileNotFoundXFTP aSndFileId) $ + DB.query + db + [sql| + SELECT file_id, contact_id, group_id, note_folder_id + FROM files + WHERE agent_snd_file_id = ? + |] + (Only aSndFileId) -getXFTPRcvFileDBId :: DB.Connection -> AgentRcvFileId -> ExceptT StoreError IO FileTransferId -getXFTPRcvFileDBId db aRcvFileId = - ExceptT . firstRow fromOnly (SERcvFileNotFoundXFTP aRcvFileId) $ - DB.query db "SELECT file_id FROM rcv_files WHERE agent_rcv_file_id = ?" (Only aRcvFileId) +getXFTPRcvFileDBIds :: DB.Connection -> AgentRcvFileId -> ExceptT StoreError IO (Maybe ChatRef, FileTransferId) +getXFTPRcvFileDBIds db aRcvFileId = + ExceptT . firstRow' toFileRef (SERcvFileNotFoundXFTP aRcvFileId) $ + DB.query + db + [sql| + SELECT rf.file_id, f.contact_id, f.group_id, f.note_folder_id + FROM rcv_files rf + JOIN files f ON f.file_id = rf.file_id + WHERE rf.agent_rcv_file_id = ? + |] + (Only aRcvFileId) + +toFileRef :: (FileTransferId, Maybe Int64, Maybe Int64, Maybe Int64) -> Either StoreError (Maybe ChatRef, FileTransferId) +toFileRef = \case + (fileId, Just contactId, Nothing, Nothing) -> Right (Just $ ChatRef CTDirect contactId, fileId) + (fileId, Nothing, Just groupId, Nothing) -> Right (Just $ ChatRef CTGroup groupId, fileId) + (fileId, Nothing, Nothing, Just folderId) -> Right (Just $ ChatRef CTLocal folderId, fileId) + (fileId, _, _, _) -> Right (Nothing, fileId) updateFileCancelled :: MsgDirectionI d => DB.Connection -> User -> Int64 -> CIFileStatus d -> IO () updateFileCancelled db User {userId} fileId ciFileStatus = do diff --git a/src/Simplex/Chat/Store/Messages.hs b/src/Simplex/Chat/Store/Messages.hs index 0d6592a311..8163bd336c 100644 --- a/src/Simplex/Chat/Store/Messages.hs +++ b/src/Simplex/Chat/Store/Messages.hs @@ -146,7 +146,6 @@ import Simplex.Messaging.Agent.Store.SQLite (firstRow, firstRow', maybeFirstRow) import qualified Simplex.Messaging.Agent.Store.SQLite.DB as DB import qualified Simplex.Messaging.Crypto as C import Simplex.Messaging.Crypto.File (CryptoFile (..), CryptoFileArgs (..)) -import Simplex.Messaging.Crypto.Ratchet (PQSupport) import Simplex.Messaging.Util (eitherToMaybe) import UnliftIO.STM From 37e03a838cbdeb47d7f361cf951886e5865a51bf Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 29 Apr 2024 19:49:04 +0400 Subject: [PATCH 114/147] core: forward group message before ack (fixes forwarding message that deleted connection causing error in ackMsg) (#4108) --- src/Simplex/Chat.hs | 45 ++++++++++++++++++++------------------- tests/ChatTests/Groups.hs | 13 +++++++++++ 2 files changed, 36 insertions(+), 22 deletions(-) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index f8285770e0..e13dbfcbff 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -2932,7 +2932,7 @@ callTimed ct aciContent = case aciContentCallStatus aciContent of Just callStatus | callComplete callStatus -> do - contactCITimed ct + contactCITimed ct _ -> pure Nothing where aciContentCallStatus :: ACIContent -> Maybe CICallStatus @@ -4269,12 +4269,8 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = Right (ACMsg _ chatMsg) -> processEvent chatMsg `catchChatError` \e -> toView $ CRChatError (Just user) e Left e -> toView $ CRChatError (Just user) (ChatError . CEException $ "error parsing chat message: " <> e) + forwardMsg_ `catchChatError` \_ -> pure () checkSendRcpt $ rights aChatMsgs - -- currently only a single message is forwarded - let GroupMember {memberRole = membershipMemRole} = membership - when (membershipMemRole >= GRAdmin && not (blockedByAdmin m)) $ case aChatMsgs of - [Right (ACMsg _ chatMsg)] -> forwardMsg_ chatMsg - _ -> pure () where aChatMsgs = parseChatMessages msgBody brokerTs = metaBrokerTs msgMeta @@ -4322,22 +4318,27 @@ processAgentMessageConn vr user@User {userId} corrId agentConnId agentMessage = where aChatMsgHasReceipt (ACMsg _ ChatMessage {chatMsgEvent}) = hasDeliveryReceipt (toCMEventTag chatMsgEvent) - forwardMsg_ :: MsgEncodingI e => ChatMessage e -> CM () - forwardMsg_ chatMsg = - forM_ (forwardedGroupMsg chatMsg) $ \chatMsg' -> do - ChatConfig {highlyAvailable} <- asks config - -- members introduced to this invited member - introducedMembers <- - if memberCategory m == GCInviteeMember - then withStore' $ \db -> getForwardIntroducedMembers db vr user m highlyAvailable - else pure [] - -- invited members to which this member was introduced - invitedMembers <- withStore' $ \db -> getForwardInvitedMembers db vr user m highlyAvailable - let GroupMember {memberId} = m - ms = forwardedToGroupMembers (introducedMembers <> invitedMembers) chatMsg' - msg = XGrpMsgForward memberId chatMsg' brokerTs - unless (null ms) . void $ - sendGroupMessage' user gInfo ms msg + forwardMsg_ :: CM () + forwardMsg_ = do + let GroupMember {memberRole = membershipMemRole} = membership + when (membershipMemRole >= GRAdmin && not (blockedByAdmin m)) $ case aChatMsgs of + -- currently only a single message is forwarded + [Right (ACMsg _ chatMsg)] -> + forM_ (forwardedGroupMsg chatMsg) $ \chatMsg' -> do + ChatConfig {highlyAvailable} <- asks config + -- members introduced to this invited member + introducedMembers <- + if memberCategory m == GCInviteeMember + then withStore' $ \db -> getForwardIntroducedMembers db vr user m highlyAvailable + else pure [] + -- invited members to which this member was introduced + invitedMembers <- withStore' $ \db -> getForwardInvitedMembers db vr user m highlyAvailable + let GroupMember {memberId} = m + ms = forwardedToGroupMembers (introducedMembers <> invitedMembers) chatMsg' + msg = XGrpMsgForward memberId chatMsg' brokerTs + unless (null ms) . void $ + sendGroupMessage' user gInfo ms msg + _ -> pure () RCVD msgMeta msgRcpt -> withAckMessage' agentConnId msgMeta $ groupMsgReceived gInfo m conn msgMeta msgRcpt diff --git a/tests/ChatTests/Groups.hs b/tests/ChatTests/Groups.hs index ff577dc737..4d9d94e24d 100644 --- a/tests/ChatTests/Groups.hs +++ b/tests/ChatTests/Groups.hs @@ -120,6 +120,7 @@ chatGroupTests = do it "forward file (x.msg.file.descr)" testGroupMsgForwardFile it "forward role change (x.grp.mem.role)" testGroupMsgForwardChangeRole it "forward new member announcement (x.grp.mem.new)" testGroupMsgForwardNewMember + it "forward member leaving (x.grp.leave)" testGroupMsgForwardLeave describe "group history" $ do it "text messages" testGroupHistory it "history is sent when joining via group link" testGroupHistoryGroupLink @@ -4437,6 +4438,18 @@ testGroupMsgForwardNewMember = "dan (Daniel): member" ] +testGroupMsgForwardLeave :: HasCallStack => FilePath -> IO () +testGroupMsgForwardLeave = + testChat3 aliceProfile bobProfile cathProfile $ + \alice bob cath -> do + setupGroupForwarding3 "team" alice bob cath + + bob ##> "/leave #team" + bob <## "#team: you left the group" + bob <## "use /d #team to delete the group" + alice <## "#team: bob left the group" + cath <## "#team: bob left the group" + testGroupHistory :: HasCallStack => FilePath -> IO () testGroupHistory = testChat3 aliceProfile bobProfile cathProfile $ From 19fc44efae82a9cb299df6a30b566a607ef932fc Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Tue, 30 Apr 2024 07:53:27 +0100 Subject: [PATCH 115/147] rfc: commercial model for infrastructure operators (#4102) --- docs/rfcs/2024-04-26-commercial-model.md | 68 ++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 docs/rfcs/2024-04-26-commercial-model.md diff --git a/docs/rfcs/2024-04-26-commercial-model.md b/docs/rfcs/2024-04-26-commercial-model.md new file mode 100644 index 0000000000..841d800715 --- /dev/null +++ b/docs/rfcs/2024-04-26-commercial-model.md @@ -0,0 +1,68 @@ +# Commercial model for SimpleX communication network + +## Problem + +SimpleX two-tier network design provides a _potential_ for a much higher degree of decentralization and privacy than a p2p network can achieve even theoretically. This is a very strong statement, and its formal proof is out of scope of this document, please see the old comparison of SimpleX network and p2p network designs [here](../SIMPLEX.md#comparison-with-p2p-messaging-protocols). + +The main downside of most, if not all, p2p networks is the lack of (or very limited) asynchronous message delivery that is critically important both for the network usability and for privacy and protection against traffic correlation attacks. + +But while two-tier network design has a _potential_ for higher privacy, this potential is hard to realize as it does not have an in-built mechanism for network operator incentives. All SimpleX network relays preset in the app are operated by SimpleX Chat Ltd., and while there are probably over 1000 self-hosted and community-hosted messaging relays - not having a single register of such relays is important for true decentralization, so we cannot know the exact number - it is probably a valid argument that a substantial part of SimpleX network traffic is provided by preset relays. Again, while we don't know the exact share, it is probably not much less than 40-50% and probably not much more than 65-75% - which is a very large share in any case for a single entity. + +For SimpleX network to achieve the level of decentralization that is designed, the applications have to be able to offer multiple network operators via the app who have commercial incentives to operate these relays. + +Traditional commercial models for consumer Internet products rely on some of these ideas: +1. Offer service for free, sell users' data. We obviously had enough of such Internet and can't wait to see it implode, lose all users, and become illegal. +2. Create a cryptocurrency or issue cryptocurrency tokens, sell them for real money, and use this money to fund service operation. While many people believe that this is the future of the Web, calling it Web3, we see it as a technological dead end, that although it provides a great platform for speculation and a playground to test such ideas as smart contracts and consensus algorithms, all of which can be used outside of the context of cryptocurrency blockchains, is not a sustainable technological foundation for a general purpose communication or information management system due to its inherent regulatory risks and distorted commercial incentives. Moxie Marlinspike wrote [a good critique of Web3](https://moxie.org/2022/01/07/web3-first-impressions.html). +3. Freemium models where some users pay for the service and, effectively, sponsor the users of the free tier. This model is free from the downsides of the previous two options, and there are many commercial services operated on this model, but this model is suboptimal for privacy in the worst case, and in the best case it still does not achieve decentralization, as whoever charges the money (the app provider) should also provide the infrastructure. + +In the mentioned critique of Web3 Moxie wrote: _We should accept the premise that people will not run their own servers by designing systems that can distribute trust without having to distribute infrastructure_. + +This statement is interesting, as it contains the correct premise - that most people do not want to and won't run their own servers - but it reaches an incorrect and limited conclusion, that the only way to provide value is by figuring out how to decentralize the trust without decentralizing infrastructure. I completely disagree that this conclusion is the only one possible, and the offered solution actually offers a way for extreme infrastructure decentralization - when not just users are distributed across providers, as happens with federated designs, but each conversation between two users is supported by infrastructure of 4-6 different independent operators - and also provides commercial incentives for these operators. + +## Solution design requirements + +So, we want to find a solution that will: +1. Offer extreme decentralization, without any kind of central authority (unlike Tor that has central authority, and unlike p2p networks that have a single addressing space) or any kind of centralized state (unlike cryptocurrency blockchains that have a centralized single state that the whole network should reach consensus about). +2. Offer low barrier for entry for infrastructure operators. +3. Offer extreme data and infrastructure portability, when infrastructure operators offer standardized primitives used by client applications - such as messaging queues and file chunks in SimpleX network. Migrating from one operator to another should not be just possible or simple, it should happen continuously and automatically, all the time, without any user action, when files and conversations move from one set of operators to another, similarly to how data moves around on SSD drives - to balance the load on the whole network, to provide reliability and redundancy, and to ensure that infrastructure operators have zero control of users and their data, and have very limited knowledge of users activity. This limited knowledge both achieves users' privacy and reduces the legal responsibility of infrastructure operators to the level of network operators. +4. Offer commercially profitable model for infrastructure operators. + +If these requirements are satisfied it would achieve a radical shift of control from infrastructure operators of today (that is achieved via SaaS model, when infrastructure operators are also software vendors, and software is provided as a service, which seems to be the root cause of corruption of Internet services - the process that Cory Doctorow refers to as [enshittification](https://www.youtube.com/watch?v=q118B_QdP2k)) to the software users, who use client software to directly consume low level infrastructure primitives of commoditized infrastructure operators that have zero control of how these primitives are used, other than pricing, that can be determined in a competitive process (e.g., via the real-time reverse auction). + +## Solution concept + +There are three types of participants in the network: +- software vendors (e.g., SimpleX Chat ltd.). +- infrastructure operators - commercial entities that have agreement with software vendors - they run server software provided by software vendors. +- users - they run client software. + +These roles can obviously overlap, but strategically it is better if they don't, e.g. we would benefit from not operating infrastructure, and users would also achieve better metadata privacy by not running the servers. + +To use SimpleX network client software needs to provision simple infrastructure resources - such as, create a messaging queue to receive the messages, create or use a session from a sending proxy to a particular destination relay, or to upload a file chunk that will be stored for a defined number of days. These resources are very cheap to provide, their price could be a very tiny fraction of a cent. + +For the users' client software to be able to provision these resources, the software vendor will issue infrastructure certificates to the users. Some number of them can be provided for free, a larger number can be sold for a monetary payment (can be in-app purchase, or cryptocurrency payment, or any other process). Software vendor will keep a private record of issued certificates. Technically, certificates can be usual cryptographic certificates that sign a public key presented by the client (while the client holds the private key). + +These certificates cannot be used as a cryptocurrency, as there is no public record of all issued certificates, and they can only be "spent" once with the infrastructure operator that has a commercial agreement with a software vendor. + +When the client wants to provision infrastructure resource it signs the request using the private key (a public counterpart of which was signed by the vendor's root certificate) and present this signed request together with the client's certificate to infrastructure operator. Operator validates the signature and certificate using vendor's root certificate and immediately provisions the resource. + +Operator then within a limited time presents its own signed request for payment to the software vendor - it would include the original request, without specifying which resource was provisioned, but only confirming that it was to this vendor. Software vendor can either confirm the acceptance and void the certificate or inform the vendor that this certificate was previously used (double spend), in which case the operator will stop provisioning the resource. + +Pros: +- this design decouples payments from resource allocation, providing better privacy, and decentralizes the infrastructure. +- this design achieves extreme provider portability and lack of control of user and user data. + +Cons: +- this design creates a strong dependence on software vendor's payment infrastructure availability - even though there can be many software vendors using this approach in a compatible way, it still creates a strong dependence of client software functioning on a single vendor. +- as described, this design allows software vendor to correlate payments of a given software user to specific infrastructure operators. + +Problem 2 can be solved by using some sort of [zero-knowledge proofs](https://en.wikipedia.org/wiki/Non-interactive_zero-knowledge_proof), where infrastructure operator can prove to software vendor that 1) they received a valid request 2) software vendor can also prove that the same certificate was not presented before, but cannot determine which certificate it was. + +Problem 1 can possibly be solved by delegating the right to issue a limited number of certificate to infrastructure operators, and making all records in the private blockchain accessible and writable by the operators using the agreements with the vendor that would also be visible on this chain, so that the operators cannot issue more certificates than agreed. In this case the payments will be made not by the software vendor to the operators but by the operators to the vendor, by compensating the buy/sell price difference. + +This is a concept of design, rather than the actual design, and the details of cryptographic primitives and consensus algorithms for this chain are out of scope. It is important that this design limits the number of operations with each certificate to three: +1. certificate issued to the user, based on the rules agreed with the software vendor. +2. certificate is used as a micro-payment for infrastructure resource (it cannot be transferred to any other user without risks of double spend). +3. certificate can only be voided by software vendor (or delegate who issued it), so it cannot be used directly as a payment. + +If we see cryptocurrency as similar to money, with similar regulations, this cryptographic primitive is close to gift cards, that have zero monetary value and can be only exchanged to a specific resource/service, thus avoiding the usual regulatory risks, and also avoiding speculative hype that could decouple the value of the certificates from the price of the infrastructure. From 7cc86574fe61cb7fad329da223cf0dd5153ea765 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 2 May 2024 16:43:08 +0100 Subject: [PATCH 116/147] core: update simplexmq to 5.7.1.0 --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cabal.project b/cabal.project index 04e92734c8..e3a7628eb2 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 935d2e25df80eed7761c48a01529b6c0da0d3baa + tag: 8d8010a62aef2241fec3876fcfe57d51456b2bc0 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index badbf49541..0b37e0eb20 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."935d2e25df80eed7761c48a01529b6c0da0d3baa" = "1gyis2zvxm6352x3myaxdifr9sy4fkhygwqmzgxvn669gmf4gx2n"; + "https://github.com/simplex-chat/simplexmq.git"."8d8010a62aef2241fec3876fcfe57d51456b2bc0" = "0x7fq33c0x7i9jjp42la3zkha1wk6s3bv7dkz9z39a02s9rfkfla"; "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"; From 5f501f1cb9f638ebcf57939b758d647dfbf28e95 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Thu, 2 May 2024 22:47:52 +0700 Subject: [PATCH 117/147] android, desktop: fix android video calls (#4118) --- .../src/commonMain/resources/assets/www/call.js | 14 ++++++++++++-- packages/simplex-chat-webrtc/src/call.ts | 13 +++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js index 218fe0c660..571c494c7c 100644 --- a/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js +++ b/apps/multiplatform/common/src/commonMain/resources/assets/www/call.js @@ -453,7 +453,11 @@ const processCommand = (function () { // For opus (where encodedFrame.type is not set) this is the TOC byte from // https://tools.ietf.org/html/rfc6716#section-3.1 var _a; - const capabilities = RTCRtpSender.getCapabilities("video"); + // Using RTCRtpReceiver instead of RTCRtpSender, see these lines: + // - if (!is_recv_codec && !is_send_codec) { + // + if (!is_recv_codec) { + // https://webrtc.googlesource.com/src.git/+/db2f52ba88cf9f98211df2dabb3f8aca9251c4a2%5E%21/ + const capabilities = RTCRtpReceiver.getCapabilities("video"); if (capabilities) { const { codecs } = capabilities; const selectedCodecIndex = codecs.findIndex((c) => c.mimeType === "video/VP8"); @@ -464,7 +468,13 @@ const processCommand = (function () { // Firefox doesn't have this function implemented: // https://bugzilla.mozilla.org/show_bug.cgi?id=1396922 if (((_a = t.sender.track) === null || _a === void 0 ? void 0 : _a.kind) === "video" && t.setCodecPreferences) { - t.setCodecPreferences(codecs); + try { + t.setCodecPreferences(codecs); + } + catch (error) { + // Shouldn't be here but in case something goes wrong, it will allow to make a call with auto-selected codecs + console.log("Failed to set codec preferences, trying without any preferences: " + error); + } } } } diff --git a/packages/simplex-chat-webrtc/src/call.ts b/packages/simplex-chat-webrtc/src/call.ts index e7788ac723..19682249e9 100644 --- a/packages/simplex-chat-webrtc/src/call.ts +++ b/packages/simplex-chat-webrtc/src/call.ts @@ -657,7 +657,11 @@ const processCommand = (function () { // For opus (where encodedFrame.type is not set) this is the TOC byte from // https://tools.ietf.org/html/rfc6716#section-3.1 - const capabilities = RTCRtpSender.getCapabilities("video") + // Using RTCRtpReceiver instead of RTCRtpSender, see these lines: + // - if (!is_recv_codec && !is_send_codec) { + // + if (!is_recv_codec) { + // https://webrtc.googlesource.com/src.git/+/db2f52ba88cf9f98211df2dabb3f8aca9251c4a2%5E%21/ + const capabilities = RTCRtpReceiver.getCapabilities("video") if (capabilities) { const {codecs} = capabilities const selectedCodecIndex = codecs.findIndex((c) => c.mimeType === "video/VP8") @@ -668,7 +672,12 @@ const processCommand = (function () { // Firefox doesn't have this function implemented: // https://bugzilla.mozilla.org/show_bug.cgi?id=1396922 if (t.sender.track?.kind === "video" && t.setCodecPreferences) { - t.setCodecPreferences(codecs) + try { + t.setCodecPreferences(codecs) + } catch (error) { + // Shouldn't be here but in case something goes wrong, it will allow to make a call with auto-selected codecs + console.log("Failed to set codec preferences, trying without any preferences: " + error) + } } } } From fb0718adacf969b0e43166758458a2996117b7d1 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Thu, 2 May 2024 21:40:08 +0100 Subject: [PATCH 118/147] core: forward agent errors without connections to UI (to show CRITICAL alerts) (#4120) --- src/Simplex/Chat.hs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Simplex/Chat.hs b/src/Simplex/Chat.hs index e13dbfcbff..a186649f72 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -3532,6 +3532,8 @@ processAgentMessage _ connId (DEL_RCVQ srv qId err_) = toView $ CRAgentRcvQueueDeleted (AgentConnId connId) srv (AgentQueueId qId) err_ processAgentMessage _ connId DEL_CONN = toView $ CRAgentConnDeleted (AgentConnId connId) +processAgentMessage _ "" (ERR e) = + toView $ CRChatError Nothing $ ChatErrorAgent e Nothing processAgentMessage corrId connId msg = do lockEntity <- critical (withStore (`getChatLockEntity` AgentConnId connId)) withEntityLock "processAgentMessage" lockEntity $ do From 535ff1d8361942162b9c031295830e7c462fb159 Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Fri, 3 May 2024 03:41:15 +0700 Subject: [PATCH 119/147] actions: add macos aarch64 build and fix openssl include path (#4107) --- .github/workflows/build.yml | 41 +++++++++++++++++++++++++-------- scripts/ci/build-desktop-mac.sh | 2 +- 2 files changed, 33 insertions(+), 10 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index a5a07a8722..c41fb4646a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -65,6 +65,11 @@ jobs: asset_name: simplex-chat-ubuntu-22_04-x86-64 desktop_asset_name: simplex-desktop-ubuntu-22_04-x86_64.deb - os: macos-latest + ghc: "9.6.3" + cache_path: ~/.cabal/store + asset_name: simplex-chat-macos-aarch64 + desktop_asset_name: simplex-desktop-macos-aarch64.dmg + - os: macos-13 ghc: "9.6.3" cache_path: ~/.cabal/store asset_name: simplex-chat-macos-x86-64 @@ -107,18 +112,36 @@ jobs: if: matrix.os == 'macos-latest' shell: bash run: | - echo "ignore-project: False" >> cabal.project.local - echo "package direct-sqlcipher" >> cabal.project.local - echo " extra-include-dirs: /usr/local/opt/openssl@1.1/include" >> cabal.project.local - echo " extra-lib-dirs: /usr/local/opt/openssl@1.1/lib" >> cabal.project.local - echo " flags: +openssl" >> cabal.project.local + echo "ignore-project: False" >> cabal.project.local + echo "package simplexmq" >> cabal.project.local + echo " extra-include-dirs: /opt/homebrew/opt/openssl@1.1/include" >> cabal.project.local + echo " extra-lib-dirs: /opt/homebrew/opt/openssl@1.1/lib" >> cabal.project.local + echo "" >> cabal.project.local + echo "package direct-sqlcipher" >> cabal.project.local + echo " extra-include-dirs: /opt/homebrew/opt/openssl@1.1/include" >> cabal.project.local + echo " extra-lib-dirs: /opt/homebrew/opt/openssl@1.1/lib" >> cabal.project.local + echo " flags: +openssl" >> cabal.project.local + + - name: Unix prepare cabal.project.local for Mac + if: matrix.os == 'macos-13' + shell: bash + run: | + echo "ignore-project: False" >> cabal.project.local + echo "package simplexmq" >> cabal.project.local + echo " extra-include-dirs: /usr/local/opt/openssl@1.1/include" >> cabal.project.local + echo " extra-lib-dirs: /usr/local/opt/openssl@1.1/lib" >> cabal.project.local + echo "" >> cabal.project.local + echo "package direct-sqlcipher" >> cabal.project.local + echo " extra-include-dirs: /usr/local/opt/openssl@1.1/include" >> cabal.project.local + echo " extra-lib-dirs: /usr/local/opt/openssl@1.1/lib" >> cabal.project.local + echo " flags: +openssl" >> cabal.project.local - name: Install AppImage dependencies if: startsWith(github.ref, 'refs/tags/v') && matrix.asset_name && matrix.os == 'ubuntu-20.04' run: sudo apt install -y desktop-file-utils - name: Install pkg-config for Mac - if: matrix.os == 'macos-latest' + if: matrix.os == 'macos-latest' || matrix.os == 'macos-13' run: brew install pkg-config - name: Unix prepare cabal.project.local for Ubuntu @@ -190,7 +213,7 @@ jobs: - name: Mac build desktop id: mac_desktop_build - if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'macos-latest' + if: startsWith(github.ref, 'refs/tags/v') && (matrix.os == 'macos-latest' || matrix.os == 'macos-13') shell: bash env: APPLE_SIMPLEX_SIGNING_KEYCHAIN: ${{ secrets.APPLE_SIMPLEX_SIGNING_KEYCHAIN }} @@ -241,7 +264,7 @@ jobs: ${{ steps.linux_appimage_build.outputs.appimage_hash }} - name: Mac upload desktop package to release - if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'macos-latest' + if: startsWith(github.ref, 'refs/tags/v') && (matrix.os == 'macos-latest' || matrix.os == 'macos-13') uses: svenstaro/upload-release-action@v2 with: repo_token: ${{ secrets.GITHUB_TOKEN }} @@ -250,7 +273,7 @@ jobs: tag: ${{ github.ref }} - name: Mac update desktop package hash - if: startsWith(github.ref, 'refs/tags/v') && matrix.os == 'macos-latest' + if: startsWith(github.ref, 'refs/tags/v') && (matrix.os == 'macos-latest' || matrix.os == 'macos-13') uses: softprops/action-gh-release@v1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/ci/build-desktop-mac.sh b/scripts/ci/build-desktop-mac.sh index 259b946228..9adea013b4 100755 --- a/scripts/ci/build-desktop-mac.sh +++ b/scripts/ci/build-desktop-mac.sh @@ -8,7 +8,7 @@ echo "desktop.mac.signing.keychain=/tmp/simplex.keychain" >> apps/multiplatform/ echo "desktop.mac.notarization.apple_id=$APPLE_SIMPLEX_NOTARIZATION_APPLE_ID" >> apps/multiplatform/local.properties echo "desktop.mac.notarization.password=$APPLE_SIMPLEX_NOTARIZATION_PASSWORD" >> apps/multiplatform/local.properties echo "desktop.mac.notarization.team_id=5NN7GUYB6T" >> apps/multiplatform/local.properties -echo "$APPLE_SIMPLEX_SIGNING_KEYCHAIN" | base64 --decode - > /tmp/simplex.keychain +echo "$APPLE_SIMPLEX_SIGNING_KEYCHAIN" | base64 --decode -o /tmp/simplex.keychain security unlock-keychain -p "" /tmp/simplex.keychain # Adding keychain to the list of keychains. From 15a226cfd1b0955900017e25ace408fa5c7eb5c4 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Fri, 3 May 2024 15:34:15 +0400 Subject: [PATCH 120/147] ui: limit length of member names in chat view (#4122) --- apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift | 5 ++++- apps/ios/Shared/Views/Chat/ChatView.swift | 1 + .../kotlin/chat/simplex/common/views/chat/ChatView.kt | 3 ++- .../chat/simplex/common/views/chat/item/FramedItemView.kt | 3 ++- 4 files changed, 9 insertions(+), 3 deletions(-) diff --git a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift index ed724599be..95c3347f90 100644 --- a/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift +++ b/apps/ios/Shared/Views/Chat/ChatItem/FramedItemView.swift @@ -248,7 +248,10 @@ struct FramedItemView: View { Group { if let sender = qi.getSender(membership()) { VStack(alignment: .leading, spacing: 2) { - Text(sender).font(.caption).foregroundColor(.secondary) + Text(sender) + .font(.caption) + .foregroundColor(.secondary) + .lineLimit(1) ciQuotedMsgTextView(qi, lines: 2) } } else { diff --git a/apps/ios/Shared/Views/Chat/ChatView.swift b/apps/ios/Shared/Views/Chat/ChatView.swift index 5ec69412a6..4055ca2b28 100644 --- a/apps/ios/Shared/Views/Chat/ChatView.swift +++ b/apps/ios/Shared/Views/Chat/ChatView.swift @@ -593,6 +593,7 @@ struct ChatView: View { Text(memberNames(member, prevMember, memCount)) .font(.caption) .foregroundStyle(.secondary) + .lineLimit(2) .padding(.leading, memberImageSize + 14) .padding(.top, 7) } 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 ff5364adc2..e6f90c1599 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 @@ -1003,7 +1003,8 @@ fun BoxWithConstraintsScope.ChatItemsList( Text( memberNames(member, prevMember, memCount), Modifier.padding(start = MEMBER_IMAGE_SIZE + 10.dp), - style = TextStyle(fontSize = 13.5.sp, color = CurrentColors.value.colors.secondary) + style = TextStyle(fontSize = 13.5.sp, color = CurrentColors.value.colors.secondary), + maxLines = 2 ) } Row( diff --git a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt index a3b70e65ec..2ac97321c6 100644 --- a/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt +++ b/apps/multiplatform/common/src/commonMain/kotlin/chat/simplex/common/views/chat/item/FramedItemView.kt @@ -76,7 +76,8 @@ fun FramedItemView( ) { Text( sender, - style = TextStyle(fontSize = 13.5.sp, color = CurrentColors.value.colors.secondary) + style = TextStyle(fontSize = 13.5.sp, color = CurrentColors.value.colors.secondary), + maxLines = 1 ) ciQuotedMsgTextView(qi, lines = 2) } From b6e57c0fa26b0bcda3d622d10f52b8acaf1a8bd0 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 5 May 2024 13:11:30 +0100 Subject: [PATCH 121/147] core: fix connection failure because of race condition when connecting via link or joining group via invitation (#4133) * core: fix connection failure because of race condition when connecting via link or joining group via invitation * fix race for connection via contact address * simplexmq --- cabal.project | 2 +- scripts/nix/sha256map.nix | 2 +- src/Simplex/Chat.hs | 37 ++++++++++++++++++++++++------------- 3 files changed, 26 insertions(+), 15 deletions(-) diff --git a/cabal.project b/cabal.project index e3a7628eb2..8e1335028f 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: 8d8010a62aef2241fec3876fcfe57d51456b2bc0 + tag: ee8e4067b02c520a41b82ab972e262b24f58cd69 source-repository-package type: git diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 0b37e0eb20..6a0b2a5cff 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."8d8010a62aef2241fec3876fcfe57d51456b2bc0" = "0x7fq33c0x7i9jjp42la3zkha1wk6s3bv7dkz9z39a02s9rfkfla"; + "https://github.com/simplex-chat/simplexmq.git"."ee8e4067b02c520a41b82ab972e262b24f58cd69" = "1r59dpmb16gg5cc4kdxv1dfpl64ia093ki6mlfrdx6hz1bi01k02"; "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.hs b/src/Simplex/Chat.hs index a186649f72..8a3541af0a 100644 --- a/src/Simplex/Chat.hs +++ b/src/Simplex/Chat.hs @@ -1494,8 +1494,9 @@ processChatCommand' vr = \case Just (agentV, pqSup') -> do let chatV = agentToChatVersion agentV dm <- encodeConnInfoPQ pqSup' chatV $ XInfo profileToSend - connId <- withAgent $ \a -> joinConnection a (aUserId user) True cReq dm pqSup' subMode + connId <- withAgent $ \a -> prepareConnectionToJoin a (aUserId user) True cReq pqSup' conn <- withStore' $ \db -> createDirectConnection db user connId cReq ConnJoined (incognitoProfile $> profileToSend) subMode chatV pqSup' + void . withAgent $ \a -> joinConnection a (aUserId user) (Just connId) True cReq dm pqSup' subMode pure $ CRSentConfirmation user conn APIConnect userId incognito (Just (ACR SCMContact cReq)) -> withUserId userId $ \user -> connectViaContact user incognito cReq APIConnect _ _ Nothing -> throwChatError CEInvalidConnReq @@ -1748,12 +1749,13 @@ processChatCommand' vr = \case Just Connection {peerChatVRange} -> do subMode <- chatReadVar subscriptionMode dm <- encodeConnInfo $ XGrpAcpt membershipMemId - agentConnId <- withAgent $ \a -> joinConnection a (aUserId user) True connRequest dm PQSupportOff subMode + agentConnId <- withAgent $ \a -> prepareConnectionToJoin a (aUserId user) True connRequest PQSupportOff let chatV = vr `peerConnChatVersion` peerChatVRange withStore' $ \db -> do createMemberConnection db userId fromMember agentConnId chatV peerChatVRange subMode updateGroupMemberStatus db userId fromMember GSMemAccepted updateGroupMemberStatus db userId membership GSMemAccepted + void . withAgent $ \a -> joinConnection a (aUserId user) (Just agentConnId) True connRequest dm PQSupportOff subMode updateCIGroupInvitationStatus user g CIGISAccepted `catchChatError` \_ -> pure () pure $ CRUserAcceptedGroupSent user g {membership = membership {memberStatus = GSMemAccepted}} Nothing Nothing -> throwChatError $ CEContactNotActive ct @@ -2278,23 +2280,28 @@ processChatCommand' vr = \case where connect' groupLinkId cReqHash xContactId inGroup = do let pqSup = if inGroup then PQSupportOff else PQSupportOn - (connId, incognitoProfile, subMode, chatV) <- requestContact user incognito cReq xContactId inGroup pqSup + (connId, chatV) <- prepareContact user cReq pqSup + -- [incognito] generate profile to send + incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing + subMode <- chatReadVar subscriptionMode conn <- withStore' $ \db -> createConnReqConnection db userId connId cReqHash xContactId incognitoProfile groupLinkId subMode chatV pqSup + joinContact user connId cReq incognitoProfile xContactId inGroup pqSup chatV pure $ CRSentInvitation user conn incognitoProfile connectContactViaAddress :: User -> IncognitoEnabled -> Contact -> ConnectionRequestUri 'CMContact -> CM ChatResponse connectContactViaAddress user incognito ct cReq = withInvitationLock "connectContactViaAddress" (strEncode cReq) $ do newXContactId <- XContactId <$> drgRandomBytes 16 let pqSup = PQSupportOn - (connId, incognitoProfile, subMode, chatV) <- requestContact user incognito cReq newXContactId False pqSup + (connId, chatV) <- prepareContact user cReq pqSup let cReqHash = ConnReqUriHash . C.sha256Hash $ strEncode cReq + -- [incognito] generate profile to send + incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing + subMode <- chatReadVar subscriptionMode ct' <- withStore $ \db -> createAddressContactConnection db vr user ct connId cReqHash newXContactId incognitoProfile subMode chatV pqSup + joinContact user connId cReq incognitoProfile newXContactId False pqSup chatV pure $ CRSentInvitationToContact user ct' incognitoProfile - requestContact :: User -> IncognitoEnabled -> ConnectionRequestUri 'CMContact -> XContactId -> Bool -> PQSupport -> CM (ConnId, Maybe Profile, SubscriptionMode, VersionChat) - requestContact user incognito cReq xContactId inGroup pqSup = do - -- [incognito] generate profile to send - incognitoProfile <- if incognito then Just <$> liftIO generateRandomProfile else pure Nothing - let profileToSend = userProfileToSend user incognitoProfile Nothing inGroup + prepareContact :: User -> ConnectionRequestUri 'CMContact -> 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 @@ -2302,10 +2309,14 @@ processChatCommand' vr = \case Nothing -> throwChatError CEInvalidConnReq Just (agentV, _) -> do let chatV = agentToChatVersion agentV - dm <- encodeConnInfoPQ pqSup chatV (XContact profileToSend $ Just xContactId) - subMode <- chatReadVar subscriptionMode - connId <- withAgent $ \a -> joinConnection a (aUserId user) True cReq dm pqSup subMode - pure (connId, incognitoProfile, subMode, chatV) + connId <- withAgent $ \a -> prepareConnectionToJoin a (aUserId user) True cReq pqSup + pure (connId, chatV) + joinContact :: User -> ConnId -> ConnectionRequestUri 'CMContact -> Maybe Profile -> XContactId -> Bool -> PQSupport -> VersionChat -> CM () + joinContact user connId cReq incognitoProfile xContactId inGroup pqSup chatV = do + let profileToSend = userProfileToSend user incognitoProfile Nothing inGroup + dm <- encodeConnInfoPQ pqSup chatV (XContact profileToSend $ Just xContactId) + subMode <- chatReadVar subscriptionMode + void . withAgent $ \a -> joinConnection a (aUserId user) (Just connId) True cReq dm pqSup subMode contactMember :: Contact -> [GroupMember] -> Maybe GroupMember contactMember Contact {contactId} = find $ \GroupMember {memberContactId = cId, memberStatus = s} -> From 2e18b97077593a926184010770d284c503ca9a7b Mon Sep 17 00:00:00 2001 From: Stanislav Dmitrenko <7953703+avently@users.noreply.github.com> Date: Sun, 5 May 2024 22:30:17 +0700 Subject: [PATCH 122/147] android: enable Android 8 support (API 26) (#4132) --- apps/multiplatform/android/build.gradle.kts | 2 +- apps/multiplatform/common/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/multiplatform/android/build.gradle.kts b/apps/multiplatform/android/build.gradle.kts index e2a5b49d0b..4e279d3ccb 100644 --- a/apps/multiplatform/android/build.gradle.kts +++ b/apps/multiplatform/android/build.gradle.kts @@ -13,7 +13,7 @@ android { defaultConfig { applicationId = "chat.simplex.app" namespace = "chat.simplex.app" - minSdk = 28 + minSdk = 26 //noinspection OldTargetApi targetSdk = 33 // !!! diff --git a/apps/multiplatform/common/build.gradle.kts b/apps/multiplatform/common/build.gradle.kts index 42e4ac2591..1f55a7195c 100644 --- a/apps/multiplatform/common/build.gradle.kts +++ b/apps/multiplatform/common/build.gradle.kts @@ -113,7 +113,7 @@ android { compileSdk = 34 sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml") defaultConfig { - minSdk = 28 + minSdk = 26 } testOptions.targetSdk = 33 lint.targetSdk = 33 From d832afa7e86ecf18d76cde754f4ab28119433b9f Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 5 May 2024 16:56:34 +0100 Subject: [PATCH 123/147] docs: calls without e2e encryption (#4134) --- docs/FAQ.md | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/FAQ.md b/docs/FAQ.md index 2484738808..a9f94b49eb 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -23,6 +23,7 @@ revision: 23.04.2024 - [I see image preview but cannot open the image](#i-see-image-preview-but-cannot-open-the-image) - [I cannot play a voice message](#i-cannot-play-a-voice-message) - [Audio or video calls do not connect](#audio-or-video-calls-do-not-connect) +- [Audio or video calls without e2e encryption](#audio-or-video-calls-without-e2e-encryption) - [I clicked the link to connect, but could not connect](#i-clicked-the-link-to-connect-but-could-not-connect) [Privacy and security](#privacy-and-security) @@ -161,6 +162,21 @@ If you can connect to the server, please report this issue to us privately, incl Thank you for helping us debug and improve calls. +### Audio or video calls without e2e encryption + +During the call, the app indicates whether or not the call has end-to-end encryption. + +If one of the call parties uses Android (or desktop) app, the call would use Android system webview (or browser). Some older systems do not support media stream encryption, in which case the call will connect without it. + +To determine whether it is the limitation of your, your contact's or both devices: +- if some of your calls have e2e encryption but some don't, then it's certainly the old webview version or browser of your contacts - please ask them to upgrade. +- if you are not sure, you can check at what point "no e2e encryption" appears: + - if it is shown when the call rings on your device, then your contact's device does not support call encryption. + - if it is shown on your screen as soon as you start the call, then your device does not support call encryption. + - if in the beginning of the call your device shows "e2e encryption" but when your contact accepts the call it changes to "no e2e encryption", then it is only your contact's device that does not support it. + +You need to upgrade webview (some Android systems allow it), Android system or the device to have support for e2e encryption in the calls - all modern webviews (and browsers) support it. + ### I clicked the link to connect, but could not connect If you confirmed the connection in the app, pending connection will be shown in the list of chats - you can assign the name to it, so you know who it was when your contact is connected (e.g., if they choose some name you don't recognize). From 26c5ed4caf4a36829893b5d4a06b352902217d4e Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 5 May 2024 17:43:09 +0100 Subject: [PATCH 124/147] core: 5.7.1.0 (simplexmq 5.7.2.0: reduce "ping" traffic, remove TLS timeouts) --- cabal.project | 2 +- package.yaml | 2 +- scripts/nix/sha256map.nix | 2 +- simplex-chat.cabal | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cabal.project b/cabal.project index 8e1335028f..a8d751d4b8 100644 --- a/cabal.project +++ b/cabal.project @@ -12,7 +12,7 @@ constraints: zip +disable-bzip2 +disable-zstd source-repository-package type: git location: https://github.com/simplex-chat/simplexmq.git - tag: ee8e4067b02c520a41b82ab972e262b24f58cd69 + tag: 93fd424f86086c6f378b50e343f32ec47f8b0c3f source-repository-package type: git diff --git a/package.yaml b/package.yaml index 054cddd9be..7201b664ac 100644 --- a/package.yaml +++ b/package.yaml @@ -1,5 +1,5 @@ name: simplex-chat -version: 5.7.0.5 +version: 5.7.1.0 #synopsis: #description: homepage: https://github.com/simplex-chat/simplex-chat#readme diff --git a/scripts/nix/sha256map.nix b/scripts/nix/sha256map.nix index 6a0b2a5cff..995d096223 100644 --- a/scripts/nix/sha256map.nix +++ b/scripts/nix/sha256map.nix @@ -1,5 +1,5 @@ { - "https://github.com/simplex-chat/simplexmq.git"."ee8e4067b02c520a41b82ab972e262b24f58cd69" = "1r59dpmb16gg5cc4kdxv1dfpl64ia093ki6mlfrdx6hz1bi01k02"; + "https://github.com/simplex-chat/simplexmq.git"."93fd424f86086c6f378b50e343f32ec47f8b0c3f" = "1jijzj8k4pxv4ri76n1m1c576w0g78vl39z8x2mhyyfip7zcal4i"; "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/simplex-chat.cabal b/simplex-chat.cabal index a72b51b82a..e9e1a4a723 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: 5.7.0.5 +version: 5.7.1.0 category: Web, System, Services, Cryptography homepage: https://github.com/simplex-chat/simplex-chat#readme author: simplex.chat From 156e41950a1101580e29f300d42303868dc46c63 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 5 May 2024 18:01:14 +0100 Subject: [PATCH 125/147] ios: update library --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 40 +++++++++++----------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index c5d3665824..cec89e8eea 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -68,11 +68,6 @@ 5C9329412929248A0090FFF9 /* ScanProtocolServer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9329402929248A0090FFF9 /* ScanProtocolServer.swift */; }; 5C971E1D27AEBEF600C8A3CE /* ChatInfoView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C971E1C27AEBEF600C8A3CE /* ChatInfoView.swift */; }; 5C971E2127AEBF8300C8A3CE /* ChatInfoImage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C971E2027AEBF8300C8A3CE /* ChatInfoImage.swift */; }; - 5C9731F72BDC0C4F000538F2 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F22BDC0C4F000538F2 /* libffi.a */; }; - 5C9731F82BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F32BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a */; }; - 5C9731F92BDC0C4F000538F2 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F42BDC0C4F000538F2 /* libgmpxx.a */; }; - 5C9731FA2BDC0C4F000538F2 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F52BDC0C4F000538F2 /* libgmp.a */; }; - 5C9731FB2BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C9731F62BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a */; }; 5C9A5BDB2871E05400A5B906 /* SetNotificationsMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9A5BDA2871E05400A5B906 /* SetNotificationsMode.swift */; }; 5C9C2DA52894777E00CC63B1 /* GroupProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9C2DA42894777E00CC63B1 /* GroupProfileView.swift */; }; 5C9C2DA7289957AE00CC63B1 /* AdvancedNetworkSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C9C2DA6289957AE00CC63B1 /* AdvancedNetworkSettings.swift */; }; @@ -120,6 +115,11 @@ 5CD67B8F2B0E858A00C510B1 /* hs_init.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD67B8D2B0E858A00C510B1 /* hs_init.h */; settings = {ATTRIBUTES = (Public, ); }; }; 5CD67B902B0E858A00C510B1 /* hs_init.c in Sources */ = {isa = PBXBuildFile; fileRef = 5CD67B8E2B0E858A00C510B1 /* hs_init.c */; }; 5CDCAD482818589900503DA2 /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CDCAD472818589900503DA2 /* NotificationService.swift */; }; + 5CE0E8972BE7F144008D6E06 /* libgmp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE0E8922BE7F144008D6E06 /* libgmp.a */; }; + 5CE0E8982BE7F144008D6E06 /* libgmpxx.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE0E8932BE7F144008D6E06 /* libgmpxx.a */; }; + 5CE0E8992BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW-ghc9.6.3.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE0E8942BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW-ghc9.6.3.a */; }; + 5CE0E89A2BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE0E8952BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW.a */; }; + 5CE0E89B2BE7F144008D6E06 /* libffi.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE0E8962BE7F144008D6E06 /* libffi.a */; }; 5CE2BA702845308900EC33A6 /* SimpleXChat.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE2BA682845308900EC33A6 /* SimpleXChat.framework */; }; 5CE2BA712845308900EC33A6 /* SimpleXChat.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 5CE2BA682845308900EC33A6 /* SimpleXChat.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 5CE2BA77284530BF00EC33A6 /* SimpleXChat.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CE2BA76284530BF00EC33A6 /* SimpleXChat.h */; }; @@ -346,11 +346,6 @@ 5C9329402929248A0090FFF9 /* ScanProtocolServer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ScanProtocolServer.swift; sourceTree = ""; }; 5C971E1C27AEBEF600C8A3CE /* ChatInfoView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoView.swift; sourceTree = ""; }; 5C971E2027AEBF8300C8A3CE /* ChatInfoImage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatInfoImage.swift; sourceTree = ""; }; - 5C9731F22BDC0C4F000538F2 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; - 5C9731F32BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a"; sourceTree = ""; }; - 5C9731F42BDC0C4F000538F2 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; - 5C9731F52BDC0C4F000538F2 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; - 5C9731F62BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a"; sourceTree = ""; }; 5C9A5BDA2871E05400A5B906 /* SetNotificationsMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SetNotificationsMode.swift; sourceTree = ""; }; 5C9C2DA42894777E00CC63B1 /* GroupProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GroupProfileView.swift; sourceTree = ""; }; 5C9C2DA6289957AE00CC63B1 /* AdvancedNetworkSettings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdvancedNetworkSettings.swift; sourceTree = ""; }; @@ -425,6 +420,11 @@ 5CDCAD7428188D2900503DA2 /* APITypes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = APITypes.swift; sourceTree = ""; }; 5CDCAD7D2818941F00503DA2 /* API.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = API.swift; sourceTree = ""; }; 5CDCAD80281A7E2700503DA2 /* Notifications.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Notifications.swift; sourceTree = ""; }; + 5CE0E8922BE7F144008D6E06 /* libgmp.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmp.a; sourceTree = ""; }; + 5CE0E8932BE7F144008D6E06 /* libgmpxx.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgmpxx.a; sourceTree = ""; }; + 5CE0E8942BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW-ghc9.6.3.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW-ghc9.6.3.a"; sourceTree = ""; }; + 5CE0E8952BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = "libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW.a"; sourceTree = ""; }; + 5CE0E8962BE7F144008D6E06 /* libffi.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libffi.a; sourceTree = ""; }; 5CE1330328E118CC00FFFD8C /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = "de.lproj/SimpleX--iOS--InfoPlist.strings"; sourceTree = ""; }; 5CE1330428E118CC00FFFD8C /* de */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = de; path = de.lproj/InfoPlist.strings; sourceTree = ""; }; 5CE2BA682845308900EC33A6 /* SimpleXChat.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SimpleXChat.framework; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -529,13 +529,13 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 5CE0E8992BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW-ghc9.6.3.a in Frameworks */, + 5CE0E8982BE7F144008D6E06 /* libgmpxx.a in Frameworks */, 5CE2BA93284534B000EC33A6 /* libiconv.tbd in Frameworks */, - 5C9731F92BDC0C4F000538F2 /* libgmpxx.a in Frameworks */, - 5C9731F82BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a in Frameworks */, - 5C9731F72BDC0C4F000538F2 /* libffi.a in Frameworks */, - 5C9731FA2BDC0C4F000538F2 /* libgmp.a in Frameworks */, + 5CE0E89A2BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW.a in Frameworks */, + 5CE0E89B2BE7F144008D6E06 /* libffi.a in Frameworks */, + 5CE0E8972BE7F144008D6E06 /* libgmp.a in Frameworks */, 5CE2BA94284534BB00EC33A6 /* libz.tbd in Frameworks */, - 5C9731FB2BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -601,11 +601,11 @@ 5C764E5C279C70B7000C6508 /* Libraries */ = { isa = PBXGroup; children = ( - 5C9731F22BDC0C4F000538F2 /* libffi.a */, - 5C9731F52BDC0C4F000538F2 /* libgmp.a */, - 5C9731F42BDC0C4F000538F2 /* libgmpxx.a */, - 5C9731F62BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB-ghc9.6.3.a */, - 5C9731F32BDC0C4F000538F2 /* libHSsimplex-chat-5.7.0.5-KRbIOKUzDlJ3qPYhEOgsVB.a */, + 5CE0E8962BE7F144008D6E06 /* libffi.a */, + 5CE0E8922BE7F144008D6E06 /* libgmp.a */, + 5CE0E8932BE7F144008D6E06 /* libgmpxx.a */, + 5CE0E8942BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW-ghc9.6.3.a */, + 5CE0E8952BE7F144008D6E06 /* libHSsimplex-chat-5.7.1.0-dbWFHyA3wYHsyiwKvX3TW.a */, ); path = Libraries; sourceTree = ""; From b8e8124fafd3619fd5f7f331a004e995c1b40571 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 5 May 2024 18:57:52 +0100 Subject: [PATCH 126/147] ui: translations (#4135) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (Hungarian) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: summoner001 Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Hungarian) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: Ghost of Sparta Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Polish) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Polish) Currently translated at 99.9% (1740 of 1741 strings) Translated using Weblate (Polish) Currently translated at 99.1% (1727 of 1741 strings) Co-authored-by: B.O.S.S Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/pl/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/pl/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (German) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (German) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: mlanp Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/de/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/de/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Italian) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Italian) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: Random Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/it/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/it/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Spanish) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Spanish) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: No name Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/es/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/es/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Dutch) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Dutch) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: M1K4 Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/nl/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/nl/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Arabic) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: jonnysemon Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ar/ Translation: SimpleX Chat/SimpleX Chat Android * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: 大王叫我来巡山 Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/zh_Hans/ Translation: SimpleX Chat/SimpleX Chat Android * Translated using Weblate (Japanese) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: Miyu Sakatsuki Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/ja/ Translation: SimpleX Chat/SimpleX Chat Android * Translated using Weblate (Czech) Currently translated at 98.1% (1709 of 1741 strings) Co-authored-by: zenobit Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/cs/ Translation: SimpleX Chat/SimpleX Chat Android * Translated using Weblate (Bulgarian) Currently translated at 100.0% (1741 of 1741 strings) Translated using Weblate (Bulgarian) Currently translated at 100.0% (1515 of 1515 strings) Co-authored-by: elgratea Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/bg/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/bg/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Turkish) Currently translated at 100.0% (1741 of 1741 strings) Translated using Weblate (Turkish) Currently translated at 100.0% (1515 of 1515 strings) Co-authored-by: z0rden Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Hungarian) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (1741 of 1741 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (1741 of 1741 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (1515 of 1515 strings) Translated using Weblate (Hungarian) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: summoner001 Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/hu/ Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/hu/ Translation: SimpleX Chat/SimpleX Chat Android Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Japanese) Currently translated at 80.7% (1224 of 1515 strings) Translated using Weblate (Japanese) Currently translated at 80.3% (1218 of 1515 strings) Co-authored-by: koreirozzu Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/ Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Japanese) Currently translated at 80.3% (1218 of 1515 strings) Co-authored-by: a4318 Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/ja/ Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Turkish) Currently translated at 100.0% (1515 of 1515 strings) Co-authored-by: xe1st Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/tr/ Translation: SimpleX Chat/SimpleX Chat iOS * Translated using Weblate (Turkish) Currently translated at 100.0% (1741 of 1741 strings) Co-authored-by: J R Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/tr/ Translation: SimpleX Chat/SimpleX Chat Android * Translated using Weblate (Persian) Currently translated at 9.8% (171 of 1741 strings) Translated using Weblate (Persian) Currently translated at 9.4% (164 of 1741 strings) Co-authored-by: Siavash Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fa/ Translation: SimpleX Chat/SimpleX Chat Android * Translated using Weblate (Persian) Currently translated at 10.1% (176 of 1741 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fa/ * Translated using Weblate (French) Currently translated at 100.0% (1741 of 1741 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fr/ * Translated using Weblate (French) Currently translated at 100.0% (1515 of 1515 strings) Translation: SimpleX Chat/SimpleX Chat iOS Translate-URL: https://hosted.weblate.org/projects/simplex-chat/ios/fr/ * Translated using Weblate (Persian) Currently translated at 11.9% (208 of 1741 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/fa/ * Translated using Weblate (Vietnamese) Currently translated at 8.5% (148 of 1741 strings) Translation: SimpleX Chat/SimpleX Chat Android Translate-URL: https://hosted.weblate.org/projects/simplex-chat/android/vi/ * import/export localizations * tr revert --------- Co-authored-by: summoner001 Co-authored-by: Ghost of Sparta Co-authored-by: B.O.S.S Co-authored-by: mlanp Co-authored-by: Random Co-authored-by: No name Co-authored-by: M1K4 Co-authored-by: jonnysemon Co-authored-by: 大王叫我来巡山 Co-authored-by: Miyu Sakatsuki Co-authored-by: zenobit Co-authored-by: elgratea Co-authored-by: z0rden Co-authored-by: koreirozzu Co-authored-by: a4318 Co-authored-by: xe1st Co-authored-by: J R Co-authored-by: Siavash Co-authored-by: Ophiushi <41908476+ishi-sama@users.noreply.github.com> Co-authored-by: tuananh-ng <158744840+tuananh-ng@users.noreply.github.com> --- .../bg.xcloc/Localized Contents/bg.xliff | 10 + .../de.xcloc/Localized Contents/de.xliff | 5 +- .../es.xcloc/Localized Contents/es.xliff | 3 + .../fr.xcloc/Localized Contents/fr.xliff | 39 ++++ .../hu.xcloc/Localized Contents/hu.xliff | 191 ++++++++--------- .../it.xcloc/Localized Contents/it.xliff | 10 + .../ja.xcloc/Localized Contents/ja.xliff | 10 +- .../nl.xcloc/Localized Contents/nl.xliff | 3 + .../pl.xcloc/Localized Contents/pl.xliff | 39 ++++ .../tr.xcloc/Localized Contents/tr.xliff | 7 +- apps/ios/bg.lproj/Localizable.strings | 30 +++ apps/ios/de.lproj/Localizable.strings | 11 +- apps/ios/es.lproj/Localizable.strings | 9 + apps/ios/fr.lproj/Localizable.strings | 117 +++++++++++ apps/ios/hu.lproj/Localizable.strings | 193 +++++++++--------- .../hu.lproj/SimpleX--iOS--InfoPlist.strings | 2 +- apps/ios/it.lproj/Localizable.strings | 30 +++ apps/ios/ja.lproj/Localizable.strings | 22 +- apps/ios/nl.lproj/Localizable.strings | 9 + apps/ios/pl.lproj/Localizable.strings | 117 +++++++++++ apps/ios/tr.lproj/Localizable.strings | 13 +- .../commonMain/resources/MR/ar/strings.xml | 12 ++ .../commonMain/resources/MR/bg/strings.xml | 3 + .../commonMain/resources/MR/cs/strings.xml | 69 ++++++- .../commonMain/resources/MR/de/strings.xml | 3 + .../commonMain/resources/MR/es/strings.xml | 3 + .../commonMain/resources/MR/fa/strings.xml | 48 +++++ .../commonMain/resources/MR/fr/strings.xml | 26 +++ .../commonMain/resources/MR/hu/strings.xml | 171 ++++++++-------- .../commonMain/resources/MR/it/strings.xml | 11 + .../commonMain/resources/MR/ja/strings.xml | 3 + .../commonMain/resources/MR/nl/strings.xml | 3 + .../commonMain/resources/MR/pl/strings.xml | 16 ++ .../commonMain/resources/MR/tr/strings.xml | 5 +- .../commonMain/resources/MR/vi/strings.xml | 14 ++ .../resources/MR/zh-rCN/strings.xml | 3 + scripts/ios/export-localizations.sh | 2 +- 37 files changed, 975 insertions(+), 287 deletions(-) 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 2887496f78..3d0bb2bf2c 100644 --- a/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff +++ b/apps/ios/SimpleX Localizations/bg.xcloc/Localized Contents/bg.xliff @@ -2805,6 +2805,7 @@ This cannot be undone! Forward and save messages + Препращане и запазване на съобщения No comment provided by engineer. @@ -3174,6 +3175,7 @@ This cannot be undone! In-call sounds + Звуци по време на разговор No comment provided by engineer. @@ -3653,6 +3655,7 @@ This is your link for group %@! Message source remains private. + Източникът на съобщението остава скрит. No comment provided by engineer. @@ -3772,6 +3775,7 @@ This is your link for group %@! More reliable network connection. + По-надеждна мрежова връзка. No comment provided by engineer. @@ -3816,6 +3820,7 @@ This is your link for group %@! Network management + Управление на мрежата No comment provided by engineer. @@ -4371,6 +4376,7 @@ Error: %@ Profile images + Профилни изображения No comment provided by engineer. @@ -5195,6 +5201,7 @@ Error: %@ Shape profile images + Променете формата на профилните изображения No comment provided by engineer. @@ -5364,6 +5371,7 @@ Error: %@ Square, circle, or anything in between. + Квадрат, кръг или нещо между тях. No comment provided by engineer. @@ -6244,6 +6252,7 @@ To connect, please ask your contact to create another connection link and check When connecting audio and video calls. + При свързване на аудио и видео разговори. No comment provided by engineer. @@ -6263,6 +6272,7 @@ To connect, please ask your contact to create another connection link and check Will be enabled in direct chats! + Ще бъде активирано в личните чатове! No comment provided by engineer. 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 4f22a82e09..29384aecc4 100644 --- a/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff +++ b/apps/ios/SimpleX Localizations/de.xcloc/Localized Contents/de.xliff @@ -4376,6 +4376,7 @@ Fehler: %@ Profile images + Profil-Bilder No comment provided by engineer. @@ -5200,6 +5201,7 @@ Fehler: %@ Shape profile images + Form der Profil-Bilder No comment provided by engineer. @@ -5369,6 +5371,7 @@ Fehler: %@ Square, circle, or anything in between. + Quadratisch, kreisförmig oder irgendetwas dazwischen. No comment provided by engineer. @@ -6029,7 +6032,7 @@ Bitten Sie Ihren Kontakt darum einen weiteren Verbindungs-Link zu erzeugen, um s Use current profile - Nutzen Sie das aktuelle Profil + Das aktuelle Profil nutzen No comment provided by engineer. 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 61a5e235bc..5d2482ae27 100644 --- a/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff +++ b/apps/ios/SimpleX Localizations/es.xcloc/Localized Contents/es.xliff @@ -4376,6 +4376,7 @@ Error: %@ Profile images + Imágenes del perfil No comment provided by engineer. @@ -5200,6 +5201,7 @@ Error: %@ Shape profile images + Dar forma a las imágenes de perfil No comment provided by engineer. @@ -5369,6 +5371,7 @@ Error: %@ Square, circle, or anything in between. + Cuadrada, circular o cualquier forma intermedia. No comment provided by engineer. 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 d0e3babe6f..ac7fc8cc8b 100644 --- a/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff +++ b/apps/ios/SimpleX Localizations/fr.xcloc/Localized Contents/fr.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Autorise l'envoi de liens SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Cellulaire No comment provided by engineer. @@ -2088,6 +2090,7 @@ Cette opération ne peut être annulée ! Download + Télécharger chat item action @@ -2202,6 +2205,7 @@ Cette opération ne peut être annulée ! Enabled for + Activé pour No comment provided by engineer. @@ -2726,6 +2730,7 @@ Cette opération ne peut être annulée ! Files and media not allowed + Fichiers et médias non autorisés No comment provided by engineer. @@ -2795,18 +2800,22 @@ Cette opération ne peut être annulée ! Forward + Transférer chat item action Forward and save messages + Transférer et sauvegarder des messages No comment provided by engineer. Forwarded + Transféré No comment provided by engineer. Forwarded from + Transféré depuis No comment provided by engineer. @@ -2921,6 +2930,7 @@ Cette opération ne peut être annulée ! Group members can send SimpleX links. + Les membres du groupe peuvent envoyer des liens SimpleX. No comment provided by engineer. @@ -3165,6 +3175,7 @@ Cette opération ne peut être annulée ! In-call sounds + Sons d'appel No comment provided by engineer. @@ -3644,6 +3655,7 @@ Voici votre lien pour le groupe %@ ! Message source remains private. + La source du message reste privée. No comment provided by engineer. @@ -3763,6 +3775,7 @@ Voici votre lien pour le groupe %@ ! More reliable network connection. + Connexion réseau plus fiable. No comment provided by engineer. @@ -3802,10 +3815,12 @@ Voici votre lien pour le groupe %@ ! Network connection + Connexion au réseau No comment provided by engineer. Network management + Gestion du réseau No comment provided by engineer. @@ -3920,6 +3935,7 @@ Voici votre lien pour le groupe %@ ! No network connection + Pas de connexion au réseau No comment provided by engineer. @@ -4138,6 +4154,7 @@ Voici votre lien pour le groupe %@ ! Other + Autres No comment provided by engineer. @@ -4359,6 +4376,7 @@ Erreur : %@ Profile images + Images de profil No comment provided by engineer. @@ -4403,6 +4421,7 @@ Erreur : %@ Prohibit sending SimpleX links. + Interdire l'envoi de liens SimpleX. No comment provided by engineer. @@ -4537,6 +4556,7 @@ Erreur : %@ Receiving concurrency + Réception simultanée No comment provided by engineer. @@ -4556,6 +4576,7 @@ Erreur : %@ Recipient(s) can't see who this message is from. + Le(s) destinataire(s) ne peut(vent) pas voir de qui provient ce message. No comment provided by engineer. @@ -4860,6 +4881,7 @@ Erreur : %@ Saved + Enregistré No comment provided by engineer. @@ -4869,6 +4891,7 @@ Erreur : %@ Saved from + Enregistré depuis No comment provided by engineer. @@ -5178,6 +5201,7 @@ Erreur : %@ Shape profile images + Images de profil modelable No comment provided by engineer. @@ -5302,10 +5326,12 @@ Erreur : %@ SimpleX links are prohibited in this group. + Les liens SimpleX sont interdits dans ce groupe. No comment provided by engineer. SimpleX links not allowed + Les liens SimpleX ne sont pas autorisés No comment provided by engineer. @@ -5345,6 +5371,7 @@ Erreur : %@ Square, circle, or anything in between. + Carré, circulaire, ou toute autre forme intermédiaire. No comment provided by engineer. @@ -6150,6 +6177,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien Voice messages not allowed + Les messages vocaux ne sont pas autorisés No comment provided by engineer. @@ -6224,6 +6252,7 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien When connecting audio and video calls. + Lors des appels audio et vidéo. No comment provided by engineer. @@ -6238,14 +6267,17 @@ Pour vous connecter, veuillez demander à votre contact de créer un autre lien WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + Activé dans les discussions directes ! No comment provided by engineer. Wired ethernet + Ethernet câblé No comment provided by engineer. @@ -6733,6 +6765,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. admins + admins feature role @@ -6747,6 +6780,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. all members + tous les membres feature role @@ -7081,6 +7115,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. forwarded + transféré No comment provided by engineer. @@ -7292,6 +7327,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. owners + propriétaires feature role @@ -7346,10 +7382,12 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. saved + enregistré No comment provided by engineer. saved from %@ + enregistré à partir de %@ No comment provided by engineer. @@ -7494,6 +7532,7 @@ Les serveurs SimpleX ne peuvent pas voir votre profil. you + vous No comment provided by engineer. 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 791f21a440..9618bab95a 100644 --- a/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff +++ b/apps/ios/SimpleX Localizations/hu.xcloc/Localized Contents/hu.xliff @@ -94,17 +94,17 @@ %@ and %@ connected - %@ és %@ csatlakozott + %@ és %@ kapcsolódott No comment provided by engineer. %1$@ at %2$@: - %1$@ %2$@-kor: + %1$@ ekkor: %2$@ copied message info, <sender> at <time> %@ connected - %@ csatlakozott + %@ kapcsolódott No comment provided by engineer. @@ -114,7 +114,7 @@ %@ is connected! - %@ csatlakozott! + %@ kapcsolódott! notification title @@ -139,7 +139,7 @@ %@ wants to connect! - %@ csatlakozni szeretne! + %@ kapcsolódni szeretne! notification title @@ -149,7 +149,7 @@ %@, %@ and %lld other members connected - %@, %@ és további %lld tag csatlakozott + %@, %@ és további %lld tag kapcsolódott No comment provided by engineer. @@ -319,7 +319,7 @@ (this device v%@) - (ez az eszköz v%@) + (ez az eszköz: v%@) No comment provided by engineer. @@ -329,7 +329,7 @@ **Add contact**: to create a new invitation link, or connect via a link you received. - **Ismerős hozzáadása**: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő csatlakozáshoz. + **Ismerős hozzáadása**: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő kapcsolódáshoz. No comment provided by engineer. @@ -585,7 +585,7 @@ Add address to your profile, so that your contacts can share it with other people. Profile update will be sent to your contacts. - Azonosító hozzáadása a profilhoz, hogy az ismerősök megoszthassák másokkal. A profilfrissítés elküldésre kerül ismerősők számára. + Azonosító hozzáadása a profilhoz, hogy az ismerősei megoszthassák másokkal. A profilfrissítés elküldésre kerül az ismerősei számára. No comment provided by engineer. @@ -640,7 +640,7 @@ Admins can create the links to join groups. - Az adminok hivatkozásokat hozhatnak létre a csoportokhoz való csatlakozáshoz. + Az adminok hivatkozásokat hozhatnak létre a csoportokhoz való kapcsolódáshoz. No comment provided by engineer. @@ -665,7 +665,7 @@ All group members will remain connected. - Minden csoporttag csatlakoztatva marad. + Minden csoporttag kapcsolódva marad. No comment provided by engineer. @@ -685,7 +685,7 @@ All your contacts will remain connected. - Minden ismerős csatlakoztatva marad. + Minden ismerős kapcsolódva marad. No comment provided by engineer. @@ -795,7 +795,7 @@ Already connected? - Csatlakoztatva? + Már kapcsolódott? No comment provided by engineer. @@ -805,7 +805,7 @@ Already joining the group! - Csatlakozás folyamatban! + A csatlakozás folyamatban van a csoporthoz! No comment provided by engineer. @@ -920,7 +920,7 @@ Authentication is required before the call is connected, but you may miss calls. - A hívás csatlakoztatása előtt hitelesítésre van szükség, de előfordulhat, hogy nem tud hívásokat fogadni. + A hívás összekapcsolása előtt hitelesítésre van szükség, de előfordulhat, hogy lemarad a hívásokról. No comment provided by engineer. @@ -1070,12 +1070,12 @@ Cancel - Megszakítás + Mégse No comment provided by engineer. Cancel migration - Átköltöztetés megszakítása + Átköltöztetés visszavonása No comment provided by engineer. @@ -1350,17 +1350,17 @@ Ez az egyszer használatos hivatkozása! Connect via contact address - Csatlakozás ismerős azonosítója által + Kapcsolódás a kapcsolattartási azonosítón keresztül No comment provided by engineer. Connect via link - Csatlakozás egy hivatkozáson keresztül + Kapcsolódás egy hivatkozáson keresztül No comment provided by engineer. Connect via one-time link - Csatlakozás egyszer használatos hivatkozáson keresztül + Kapcsolódás egyszer használatos hivatkozáson keresztül No comment provided by engineer. @@ -1440,12 +1440,12 @@ Ez az egyszer használatos hivatkozása! Contact is connected - Ismerős csatlakozott + Ismerőse kapcsolódott notification Contact is not connected yet! - Az ismerős még nem csatlakozott! + Az ismerőse még nem kapcsolódott! No comment provided by engineer. @@ -2570,7 +2570,7 @@ Ez a művelet nem vonható vissza! Error stopping chat - Hiba a csevegés megszakításakor + Hiba a csevegés megállításakor No comment provided by engineer. @@ -2700,12 +2700,12 @@ Ez a művelet nem vonható vissza! File will be received when your contact completes uploading it. - A fájl akkor érkezik meg, amikor ismerőse befejezte annak feltöltést. + A fájl akkor érkezik meg, amikor a küldője befejezte annak feltöltését. No comment provided by engineer. File will be received when your contact is online, please wait or check later! - A fájl akkor érkezik meg, amint ismerőse online lesz, várjon, vagy ellenőrizze később! + A fájl akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később! No comment provided by engineer. @@ -3105,12 +3105,12 @@ Ez a művelet nem vonható vissza! Image will be received when your contact completes uploading it. - A kép akkor érkezik meg, amikor ismerőse befejezte annak feltöltését. + A kép akkor érkezik meg, amikor a küldője befejezte annak feltöltését. No comment provided by engineer. Image will be received when your contact is online, please wait or check later! - A kép akkor érkezik meg, amikor ismerős elérhető lesz, várjon vagy ellenőrizze később! + A kép akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később! No comment provided by engineer. @@ -3368,7 +3368,7 @@ Ez a művelet nem vonható vissza! It seems like you are already connected via this link. If it is not the case, there was an error (%@). - Úgy tűnik, már csatlakozott ezen a hivatkozáson keresztül. Ha ez nem így van, akkor hiba történt (%@). + Úgy tűnik, már kapcsolódott ezen a hivatkozáson keresztül. Ha ez nem így van, akkor hiba történt (%@). No comment provided by engineer. @@ -4004,17 +4004,17 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Onion hosts will be required for connection. Requires enabling VPN. - A csatlakozáshoz Onion host-okra lesz szükség. VPN engedélyezése szükséges. + A kapcsolódáshoz Onion kiszolgálókra lesz szükség. VPN engedélyezése szükséges. No comment provided by engineer. Onion hosts will be used when available. Requires enabling VPN. - Onion host-ok használata, ha azok rendelkezésre állnak. VPN engedélyezése szükséges. + Onion kiszolgálók használata, ha azok rendelkezésre állnak. VPN engedélyezése szükséges. No comment provided by engineer. Onion hosts will not be used. - Onion host-ok nem lesznek használva. + Onion kiszolgálók nem lesznek használva. No comment provided by engineer. @@ -4214,7 +4214,7 @@ Ez az ön hivatkozása a(z) %@ csoporthoz! Paste link to connect! - Hivatkozás beillesztése a csatlakozáshoz! + Hivatkozás beillesztése a kapcsolódáshoz! No comment provided by engineer. @@ -4376,6 +4376,7 @@ Hiba: %@ Profile images + Profilképek No comment provided by engineer. @@ -4585,12 +4586,12 @@ Hiba: %@ Reconnect all connected servers to force message delivery. It uses additional traffic. - Az összes csatlakoztatott kiszolgáló újrakapcsolása az üzenetek kézbesítésének kikényszerítéséhez. Ez további forgalmat használ. + Újrakapcsolódás az összes kiszolgálóhoz az üzenetek kézbesítésének kikényszerítéséhez. Ez további forgalmat használ. No comment provided by engineer. Reconnect servers? - Kiszolgálók újracsatlakoztatása? + Újrakapcsolódás a kiszolgálókhoz? No comment provided by engineer. @@ -5000,7 +5001,7 @@ Hiba: %@ Send direct message to connect - Közvetlen üzenet küldése a csatlakozáshoz + Közvetlen üzenet küldése a kapcsolódáshoz No comment provided by engineer. @@ -5200,6 +5201,7 @@ Hiba: %@ Shape profile images + Profilkép alakzat No comment provided by engineer. @@ -5219,7 +5221,7 @@ Hiba: %@ Share address with contacts? - Megosztja az azonosítót az ismerősökkel? + Megosztja az azonosítót az ismerőseivel? No comment provided by engineer. @@ -5304,7 +5306,7 @@ Hiba: %@ SimpleX contact address - SimpleX ismerős azonosítója + SimpleX kapcsolattartási azonosító simplex link type @@ -5369,6 +5371,7 @@ Hiba: %@ Square, circle, or anything in between. + Négyzet, kör vagy bármi a kettő között. No comment provided by engineer. @@ -5388,62 +5391,62 @@ Hiba: %@ Stop - Megszakítás + Megállítás No comment provided by engineer. Stop SimpleX - A SimpleX megszakítása + SimpleX megállítása authentication reason Stop chat - Csevegési szolgáltatás megszakítása + Csevegési szolgáltatás megállítása No comment provided by engineer. Stop chat to enable database actions - Csevegés megszakítása az adatbázis-műveletek engedélyezéséhez + Csevegés megállítása az adatbázis-műveletek engedélyezéséhez No comment provided by engineer. Stop chat to export, import or delete chat database. You will not be able to receive and send messages while the chat is stopped. - A csevegés megszakítása a csevegőadatbázis exportálásához, importálásához vagy törléséhez. A csevegés megszakítása alatt nem tud üzeneteket fogadni és küldeni. + A csevegés megállítása a csevegő adatbázis exportálásához, importálásához vagy törléséhez. A csevegés megállítása alatt nem tud üzeneteket fogadni és küldeni. No comment provided by engineer. Stop chat? - Csevegési szolgáltatás megszakítása? + Csevegési szolgáltatás megállítása? No comment provided by engineer. Stop file - Fájl megszakítása + Fájl megállítása cancel file action Stop receiving file? - Fájl fogadás megszakítása? + Fájl fogadás megállítása? No comment provided by engineer. Stop sending file? - Fájl küldés megszakítása? + Fájl küldés megállítása? No comment provided by engineer. Stop sharing - Megosztás megszakítása + Megosztás megállítása No comment provided by engineer. Stop sharing address? - Címmegosztás megszakítása? + Címmegosztás megállítása? No comment provided by engineer. Stopping chat - Csevegés megszakítása + Csevegés megállítása folyamatban No comment provided by engineer. @@ -5498,7 +5501,7 @@ Hiba: %@ Tap to Connect - Koppintson a csatlakozáshoz + Koppintson a kapcsolódáshoz No comment provided by engineer. @@ -5600,7 +5603,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő. The contact you shared this link with will NOT be able to connect! - Ismerőse NEM fog tudni csatlakozni, akivel megosztotta ezt a hivatkozást! + Ismerőse, akivel megosztotta ezt a hivatkozást, NEM fog tudni kapcsolódni! No comment provided by engineer. @@ -5640,7 +5643,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő. The profile is only shared with your contacts. - Profilja csak az ismerősök számára kerül megosztásra. + Profilja csak az ismerőseivel kerül megosztásra. No comment provided by engineer. @@ -5745,7 +5748,7 @@ Ez valamilyen hiba, vagy sérült kapcsolat esetén fordulhat elő. To connect, your contact can scan QR code or use the link in the app. - A csatlakozáshoz az ismerős beolvashatja a QR-kódot, vagy használhatja az alkalmazásban található hivatkozást. + A kapcsolódáshoz az ismerőse beolvashatja a QR-kódot, vagy használhatja az alkalmazásban található hivatkozást. No comment provided by engineer. @@ -5797,7 +5800,7 @@ A funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befej Toggle incognito when connecting. - Inkognító mód csatlakozáskor. + Inkognitó mód kapcsolódáskor. No comment provided by engineer. @@ -5807,12 +5810,12 @@ A funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befej Trying to connect to the server used to receive messages from this contact (error: %@). - Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz (hiba: %@). + Kapcsolódási kísérlet ahhoz a kiszolgálóhoz, amely az adott ismerőstől érkező üzenetek fogadására szolgál (hiba: %@). No comment provided by engineer. Trying to connect to the server used to receive messages from this contact. - Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz ettől az ismerőstől. + Kapcsolódási kísérlet ahhoz a kiszolgálóhoz, amely az adott ismerőstől érkező üzenetek fogadására szolgál. No comment provided by engineer. @@ -5918,8 +5921,8 @@ A funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befej Unless your contact deleted the connection or this link was already used, it might be a bug - please report it. To connect, please ask your contact to create another connection link and check that you have a stable network connection. - Hacsak az ismerős nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, hiba lehet – kérjük, jelentse. -A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsolati hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e. + Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, lehet hogy ez egy hiba – jelentse a problémát. +A kapcsolódáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsolati hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e. No comment provided by engineer. @@ -5964,7 +5967,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Update .onion hosts setting? - Tor .onion host beállítások frissítése? + Tor .onion kiszolgálók beállításainak frissítése? No comment provided by engineer. @@ -5989,7 +5992,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Updating this setting will re-connect the client to all servers. - A beállítás frissítésével a kliens újracsatlakozik az összes kiszolgálóhoz. + A beállítás frissítésével a kliens újrakapcsolódik az összes kiszolgálóhoz. No comment provided by engineer. @@ -6014,7 +6017,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Use .onion hosts - Tor .onion hostok használata + Tor .onion kiszolgálók használata No comment provided by engineer. @@ -6074,7 +6077,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Using .onion hosts requires compatible VPN provider. - A .onion hosztok használatához kompatibilis VPN szolgáltatóra van szükség. + A .onion kiszolgálók használatához kompatibilis VPN szolgáltatóra van szükség. No comment provided by engineer. @@ -6134,12 +6137,12 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola Video will be received when your contact completes uploading it. - A videó akkor érkezik meg, amikor az ismerőse befejezte annak feltöltését. + A videó akkor érkezik meg, amikor a küldője befejezte annak feltöltését. No comment provided by engineer. Video will be received when your contact is online, please wait or check later! - A videó akkor érkezik meg, amikor az ismerős elérhető, várjon, vagy ellenőrizze később! + A videó akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később! No comment provided by engineer. @@ -6254,7 +6257,7 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola When people request to connect, you can accept or reject it. - Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat. + Amikor az emberek kapcsolódást kérelmeznek, ön elfogadhatja vagy elutasíthatja azokat. No comment provided by engineer. @@ -6339,12 +6342,12 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You are already connecting to %@. - Már folyamatban van a csatlakozás ehhez: %@. + Már folyamatban van a kapcsolódás ehhez: %@. No comment provided by engineer. You are already connecting via this one-time link! - Már csatlakozik ezen az egyszer használatos hivatkozáson keresztül! + A kapcsolódás már folyamatban van ezen az egyszer használatos hivatkozáson keresztül! No comment provided by engineer. @@ -6354,17 +6357,17 @@ A csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsola You are already joining the group %@. - Már folyamatban van a csatlakozás a csoporthoz %@. + A csatlakozás már folyamatban van a(z) %@ csoporthoz. No comment provided by engineer. You are already joining the group via this link! - Már csatlakozott a csoporthoz ezen a hivatkozáson keresztül! + A csatlakozás már folyamatban van a csoporthoz ezen a hivatkozáson keresztül! No comment provided by engineer. You are already joining the group via this link. - Ezen a hivatkozáson keresztül már csatlakozik a csoporthoz. + A csatlakozás már folyamatban van a csoporthoz ezen a hivatkozáson keresztül. No comment provided by engineer. @@ -6376,7 +6379,7 @@ Csatlakozási kérés megismétlése? You are connected to the server used to receive messages from this contact. - Kiszolgálóhoz történő csatlakozás, mely az adott ismerőstől érkező üzenetek fogadására szolgál. + Már kapcsolódott ahhoz a kiszolgálóhoz, amely az adott ismerőstől érkező üzenetek fogadására szolgál. No comment provided by engineer. @@ -6436,12 +6439,12 @@ Csatlakozási kérés megismétlése? You can share this address with your contacts to let them connect with **%@**. - Megoszthatja ezt a hivatkozást ismerőseivel, hogy kapcsolatba léphessenek önnel a **%@** nevű profilján keresztül. + Megoszthatja ezt az azonosítót az ismerőseivel, hogy kapcsolatba léphessenek önnel a **%@** nevű profilján keresztül. No comment provided by engineer. You can share your address as a link or QR code - anybody can connect to you. - Megoszthatja azonosítóját hivatkozásként vagy QR-kódként – így bárki csatlakozhat önhöz. + Megoszthatja azonosítóját hivatkozásként vagy QR-kódként – így bárki kapcsolódhat önhöz. No comment provided by engineer. @@ -6481,13 +6484,13 @@ Csatlakozási kérés megismétlése? You have already requested connection via this address! - Már kért egy csatlakozást ezen az azonosítón keresztül! + Már kért egy kapcsolódási kérelmet ezen az azonosítón keresztül! No comment provided by engineer. You have already requested connection! Repeat connection request? - Már kérelmezte a csatlakozást! + Már kért egy kapcsolódási kérelmet! Kapcsolódási kérés megismétlése? No comment provided by engineer. @@ -6538,22 +6541,22 @@ Kapcsolódási kérés megismétlése? You will be connected to group when the group host's device is online, please wait or check later! - Akkor tud csatlakozni a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később! + Akkor lesz kapcsolódva a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később! No comment provided by engineer. You will be connected when group link host's device is online, please wait or check later! - Akkor lesz csatlakoztatva, amikor a csoportos hivatkozás tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később! + Akkor lesz kapcsolódva, amikor a csoportos hivatkozás tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később! No comment provided by engineer. You will be connected when your connection request is accepted, please wait or check later! - Akkor lesz csatlakoztatva, ha a csatlakozási kérelme elfogadásra került, várjon, vagy ellenőrizze később! + Akkor lesz kapcsolódva, ha a kapcsolódási kérelme elfogadásra kerül, várjon, vagy ellenőrizze később! No comment provided by engineer. You will be connected when your contact's device is online, please wait or check later! - Akkor csatlakozik, amikor az ismerős eszköze online lesz, várjon, vagy ellenőrizze később! + Akkor le kapcsolódva, amikor az ismerőse eszköze online lesz, várjon, vagy ellenőrizze később! No comment provided by engineer. @@ -6563,7 +6566,7 @@ Kapcsolódási kérés megismétlése? You will connect to all group members. - Csatlakozni fog a csoport összes tagjához. + Kapcsolódni fog a csoport összes tagjához. No comment provided by engineer. @@ -6578,7 +6581,7 @@ Kapcsolódási kérés megismétlése? You won't lose your contacts if you later delete your address. - Nem veszíti el ismerőseit, ha később törli az azonosítóját. + Nem veszíti el az ismerőseit, ha később törli az azonosítóját. No comment provided by engineer. @@ -6655,7 +6658,7 @@ Megszakíthatja ezt a kapcsolatfelvételt és törölheti az ismerőst (ezt kés Your contacts will remain connected. - Az ismerősök továbbra is csatlakoztatva maradnak. + Az ismerősei továbbra is kapcsolódva maradnak. No comment provided by engineer. @@ -6857,7 +6860,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. changed role of %1$@ to %2$@ - %1$@ szerepköre megváltozott erre: %2$@ + %1$@ szerepkörét megváltoztatta erre: %2$@ rcv group event chat item @@ -6887,7 +6890,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. connect to SimpleX Chat developers. - Csatlakozás a SimpleX Chat fejlesztőkhöz. + Kapcsolódás a SimpleX Chat fejlesztőkhöz. No comment provided by engineer. @@ -6922,7 +6925,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. connecting (introduction invitation) - csatlakozás (bemutatkozás meghívás) + kapcsolódás (bemutatkozó meghívó) No comment provided by engineer. @@ -6947,7 +6950,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. contact %1$@ changed to %2$@ - %1$@ ismerősének neve megváltozott erre: %2$@ + %1$@ megváltoztatta a nevét erre: %2$@ profile update event chat item @@ -7207,7 +7210,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. join as %@ - csatlakozás mint %@ + csatlakozás mint: %@ No comment provided by engineer. @@ -7227,7 +7230,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. member %1$@ changed to %2$@ - %1$@ tag megváltoztatta a nevét erre: %2$@ + %1$@ megváltoztatta a nevét erre: %2$@ profile update event chat item @@ -7364,7 +7367,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. removed contact address - törölt csatlakozási cím + törölt kapcsolattartási azonosító profile update event chat item @@ -7404,7 +7407,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. security code changed - biztonsági kód megváltozott + a biztonsági kód megváltozott chat item text @@ -7414,7 +7417,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. set new contact address - új kapcsolattartási cím beállítása + új kapcsolattartási azonosító beállítása profile update event chat item @@ -7479,7 +7482,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. via contact address link - ismerős azonosítójának hivatkozásán keresztül + kapcsolattartási azonosító-hivatkozáson keresztül chat list item description @@ -7564,7 +7567,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. you changed role of %1$@ to %2$@ - megváltoztatta %1$@ szerepkörét erre: %@ + %1$@ szerepkörét megváltoztatta erre: %@ snd group event chat item @@ -7616,7 +7619,7 @@ A SimpleX kiszolgálók nem látjhatják profilját. SimpleX needs camera access to scan QR codes to connect to other users and for video calls. - A SimpleX-nek kamera-hozzáférésre van szüksége a QR-kódok beolvasásához, hogy csatlakozhasson más felhasználókhoz és videohívásokhoz. + A SimpleX-nek kamera-hozzáférésre van szüksége a QR-kódok beolvasásához, hogy kapcsolódhasson más felhasználókhoz és videohívásokhoz. Privacy - Camera Usage Description 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 9bb90886f8..a5fe0ec830 100644 --- a/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff +++ b/apps/ios/SimpleX Localizations/it.xcloc/Localized Contents/it.xliff @@ -2805,6 +2805,7 @@ Non è reversibile! Forward and save messages + Inoltra e salva i messaggi No comment provided by engineer. @@ -3174,6 +3175,7 @@ Non è reversibile! In-call sounds + Suoni nelle chiamate No comment provided by engineer. @@ -3653,6 +3655,7 @@ Questo è il tuo link per il gruppo %@! Message source remains private. + La fonte del messaggio resta privata. No comment provided by engineer. @@ -3772,6 +3775,7 @@ Questo è il tuo link per il gruppo %@! More reliable network connection. + Connessione di rete più affidabile. No comment provided by engineer. @@ -3816,6 +3820,7 @@ Questo è il tuo link per il gruppo %@! Network management + Gestione della rete No comment provided by engineer. @@ -4371,6 +4376,7 @@ Errore: %@ Profile images + Immagini del profilo No comment provided by engineer. @@ -5195,6 +5201,7 @@ Errore: %@ Shape profile images + Forma delle immagini del profilo No comment provided by engineer. @@ -5364,6 +5371,7 @@ Errore: %@ Square, circle, or anything in between. + Quadrata, circolare o qualsiasi forma tra le due. No comment provided by engineer. @@ -6244,6 +6252,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e When connecting audio and video calls. + Quando si connettono le chiamate audio e video. No comment provided by engineer. @@ -6263,6 +6272,7 @@ Per connetterti, chiedi al tuo contatto di creare un altro link di connessione e Will be enabled in direct chats! + Viene attivata nelle chat dirette! No comment provided by engineer. 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 9f9915c0f9..3f32998707 100644 --- a/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff +++ b/apps/ios/SimpleX Localizations/ja.xcloc/Localized Contents/ja.xliff @@ -379,12 +379,12 @@ **e2e encrypted** audio call - **e2e 暗号化**音声通話 + **エンドツーエンド暗号化済み**の音声通話 No comment provided by engineer. **e2e encrypted** video call - **e2e暗号化**ビデオ通話 + **エンドツーエンド暗号化済み**の テレビ電話 通話 No comment provided by engineer. @@ -434,6 +434,7 @@ 0 sec + 0 秒 time to disappear @@ -684,6 +685,7 @@ All your contacts, conversations and files will be securely encrypted and uploaded in chunks to configured XFTP relays. + すべての連絡先、会話、ファイルは安全に暗号化され、設定されたXFTPリレーに分割でアップロードされます。 No comment provided by engineer. @@ -733,6 +735,7 @@ Allow to send SimpleX links. + SimpleXリンクの送信を許可。 No comment provided by engineer. @@ -787,10 +790,12 @@ Already connecting! + 既に接続中です! No comment provided by engineer. Already joining the group! + すでにグループに参加しています! No comment provided by engineer. @@ -815,6 +820,7 @@ App data migration + アプリデータの移行 No comment provided by engineer. 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 f4056e359e..c5a9ba4ea8 100644 --- a/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff +++ b/apps/ios/SimpleX Localizations/nl.xcloc/Localized Contents/nl.xliff @@ -4376,6 +4376,7 @@ Fout: %@ Profile images + Profiel afbeeldingen No comment provided by engineer. @@ -5200,6 +5201,7 @@ Fout: %@ Shape profile images + Vorm profiel afbeeldingen No comment provided by engineer. @@ -5369,6 +5371,7 @@ Fout: %@ Square, circle, or anything in between. + Vierkant, cirkel of iets daartussenin. No comment provided by engineer. 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 b5c60c2e1e..d71bd5843a 100644 --- a/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff +++ b/apps/ios/SimpleX Localizations/pl.xcloc/Localized Contents/pl.xliff @@ -745,6 +745,7 @@ Allow to send SimpleX links. + Zezwól na wysyłanie linków SimpleX. No comment provided by engineer. @@ -1089,6 +1090,7 @@ Cellular + Sieć komórkowa No comment provided by engineer. @@ -2088,6 +2090,7 @@ To nie może być cofnięte! Download + Pobierz chat item action @@ -2202,6 +2205,7 @@ To nie może być cofnięte! Enabled for + Włączony dla No comment provided by engineer. @@ -2726,6 +2730,7 @@ To nie może być cofnięte! Files and media not allowed + Pliki i multimedia nie są dozwolone No comment provided by engineer. @@ -2795,18 +2800,22 @@ To nie może być cofnięte! Forward + Przekaż dalej chat item action Forward and save messages + Przesyłaj dalej i zapisuj wiadomości No comment provided by engineer. Forwarded + Przekazane dalej No comment provided by engineer. Forwarded from + Przekazane dalej od No comment provided by engineer. @@ -2921,6 +2930,7 @@ To nie może być cofnięte! Group members can send SimpleX links. + Członkowie grupy mogą wysyłać linki SimpleX. No comment provided by engineer. @@ -3165,6 +3175,7 @@ To nie może być cofnięte! In-call sounds + Dźwięki w rozmowie No comment provided by engineer. @@ -3644,6 +3655,7 @@ To jest twój link do grupy %@! Message source remains private. + Źródło wiadomości pozostaje prywatne. No comment provided by engineer. @@ -3763,6 +3775,7 @@ To jest twój link do grupy %@! More reliable network connection. + Bardziej niezawodne połączenia sieciowe. No comment provided by engineer. @@ -3802,10 +3815,12 @@ To jest twój link do grupy %@! Network connection + Połączenie z siecią No comment provided by engineer. Network management + Zarządzenie sieciowe No comment provided by engineer. @@ -3920,6 +3935,7 @@ To jest twój link do grupy %@! No network connection + Brak połączenia z siecią No comment provided by engineer. @@ -4138,6 +4154,7 @@ To jest twój link do grupy %@! Other + Inne No comment provided by engineer. @@ -4359,6 +4376,7 @@ Błąd: %@ Profile images + Zdjęcia profilowe No comment provided by engineer. @@ -4403,6 +4421,7 @@ Błąd: %@ Prohibit sending SimpleX links. + Zabroń wysyłania linków SimpleX. No comment provided by engineer. @@ -4537,6 +4556,7 @@ Błąd: %@ Receiving concurrency + Konkurencyjne odbieranie No comment provided by engineer. @@ -4556,6 +4576,7 @@ Błąd: %@ Recipient(s) can't see who this message is from. + Odbiorca/y nie mogą zobaczyć od kogo jest ta wiadomość. No comment provided by engineer. @@ -4860,6 +4881,7 @@ Błąd: %@ Saved + Zapisane No comment provided by engineer. @@ -4869,6 +4891,7 @@ Błąd: %@ Saved from + Zapisane od No comment provided by engineer. @@ -5178,6 +5201,7 @@ Błąd: %@ Shape profile images + Kształtuj obrazy profilowe No comment provided by engineer. @@ -5302,10 +5326,12 @@ Błąd: %@ SimpleX links are prohibited in this group. + Linki SimpleX są zablokowane na tej grupie. No comment provided by engineer. SimpleX links not allowed + Linki SimpleX są niedozwolone No comment provided by engineer. @@ -5345,6 +5371,7 @@ Błąd: %@ Square, circle, or anything in between. + Kwadrat, okrąg lub cokolwiek pomiędzy. No comment provided by engineer. @@ -6150,6 +6177,7 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc Voice messages not allowed + Wiadomości głosowe są niedozwolone No comment provided by engineer. @@ -6224,6 +6252,7 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc When connecting audio and video calls. + Podczas łączenia połączeń audio i wideo. No comment provided by engineer. @@ -6238,14 +6267,17 @@ Aby się połączyć, poproś Twój kontakt o utworzenie kolejnego linku połąc WiFi + WiFi No comment provided by engineer. Will be enabled in direct chats! + Zostanie włączone w czatach bezpośrednich! No comment provided by engineer. Wired ethernet + Połączenie ethernet (po kablu) No comment provided by engineer. @@ -6733,6 +6765,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. admins + administratorzy feature role @@ -6747,6 +6780,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. all members + wszyscy członkowie feature role @@ -7081,6 +7115,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. forwarded + przekazane dalej No comment provided by engineer. @@ -7292,6 +7327,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. owners + właściciele feature role @@ -7346,10 +7382,12 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. saved + zapisane No comment provided by engineer. saved from %@ + zapisane od %@ No comment provided by engineer. @@ -7494,6 +7532,7 @@ Serwery SimpleX nie mogą zobaczyć Twojego profilu. you + Ty No comment provided by engineer. 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 1d0783c5e5..62c6f39d80 100644 --- a/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff +++ b/apps/ios/SimpleX Localizations/tr.xcloc/Localized Contents/tr.xliff @@ -4376,6 +4376,7 @@ Hata: %@ Profile images + Profil resimleri No comment provided by engineer. @@ -4525,7 +4526,7 @@ Hata: %@ Receipts are disabled - Makbuzlar devre dışı bırakıldı + Gönderildi bilgisi devre dışı bırakıldı No comment provided by engineer. @@ -5065,7 +5066,7 @@ Hata: %@ Sending delivery receipts will be enabled for all contacts. - Teslimat makbuzlarının gönderilmesi tüm kişiler için etkinleştirilecektir. + Gönderildi bilgisi tüm kişiler için etkinleştirilecektir. No comment provided by engineer. @@ -5200,6 +5201,7 @@ Hata: %@ Shape profile images + Profil resimlerini şekillendir No comment provided by engineer. @@ -5369,6 +5371,7 @@ Hata: %@ Square, circle, or anything in between. + Kare,daire, veya aralarında herhangi birşey. No comment provided by engineer. diff --git a/apps/ios/bg.lproj/Localizable.strings b/apps/ios/bg.lproj/Localizable.strings index 7f37591861..06d9f1f43e 100644 --- a/apps/ios/bg.lproj/Localizable.strings +++ b/apps/ios/bg.lproj/Localizable.strings @@ -1893,6 +1893,9 @@ /* chat item action */ "Forward" = "Препрати"; +/* No comment provided by engineer. */ +"Forward and save messages" = "Препращане и запазване на съобщения"; + /* No comment provided by engineer. */ "forwarded" = "препратено"; @@ -2124,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "В отговор на"; +/* No comment provided by engineer. */ +"In-call sounds" = "Звуци по време на разговор"; + /* No comment provided by engineer. */ "Incognito" = "Инкогнито"; @@ -2469,6 +2475,9 @@ /* notification */ "message received" = "получено съобщение"; +/* No comment provided by engineer. */ +"Message source remains private." = "Източникът на съобщението остава скрит."; + /* No comment provided by engineer. */ "Message text" = "Текст на съобщението"; @@ -2553,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Очаквайте скоро още подобрения!"; +/* No comment provided by engineer. */ +"More reliable network connection." = "По-надеждна мрежова връзка."; + /* item status description */ "Most likely this connection is deleted." = "Най-вероятно тази връзка е изтрита."; @@ -2577,6 +2589,9 @@ /* No comment provided by engineer. */ "Network connection" = "Мрежова връзка"; +/* No comment provided by engineer. */ +"Network management" = "Управление на мрежата"; + /* No comment provided by engineer. */ "Network settings" = "Мрежови настройки"; @@ -2945,6 +2960,9 @@ /* No comment provided by engineer. */ "Profile image" = "Профилно изображение"; +/* No comment provided by engineer. */ +"Profile images" = "Профилни изображения"; + /* No comment provided by engineer. */ "Profile name" = "Име на профила"; @@ -3488,6 +3506,9 @@ /* No comment provided by engineer. */ "Settings" = "Настройки"; +/* No comment provided by engineer. */ +"Shape profile images" = "Променете формата на профилните изображения"; + /* chat item action */ "Share" = "Сподели"; @@ -3590,6 +3611,9 @@ /* notification title */ "Somebody" = "Някой"; +/* No comment provided by engineer. */ +"Square, circle, or anything in between." = "Квадрат, кръг или нещо между тях."; + /* chat item text */ "standard end-to-end encryption" = "стандартно криптиране от край до край"; @@ -4172,6 +4196,9 @@ /* No comment provided by engineer. */ "When available" = "Когато са налични"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "При свързване на аудио и видео разговори."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Когато хората искат да се свържат с вас, можете да ги приемете или отхвърлите."; @@ -4181,6 +4208,9 @@ /* No comment provided by engineer. */ "WiFi" = "WiFi"; +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Ще бъде активирано в личните чатове!"; + /* No comment provided by engineer. */ "Wired ethernet" = "Кабелен Ethernet"; diff --git a/apps/ios/de.lproj/Localizable.strings b/apps/ios/de.lproj/Localizable.strings index 933bb5e02b..5fc393fa1f 100644 --- a/apps/ios/de.lproj/Localizable.strings +++ b/apps/ios/de.lproj/Localizable.strings @@ -2960,6 +2960,9 @@ /* No comment provided by engineer. */ "Profile image" = "Profilbild"; +/* No comment provided by engineer. */ +"Profile images" = "Profil-Bilder"; + /* No comment provided by engineer. */ "Profile name" = "Profilname"; @@ -3503,6 +3506,9 @@ /* No comment provided by engineer. */ "Settings" = "Einstellungen"; +/* No comment provided by engineer. */ +"Shape profile images" = "Form der Profil-Bilder"; + /* chat item action */ "Share" = "Teilen"; @@ -3605,6 +3611,9 @@ /* notification title */ "Somebody" = "Jemand"; +/* No comment provided by engineer. */ +"Square, circle, or anything in between." = "Quadratisch, kreisförmig oder irgendetwas dazwischen."; + /* chat item text */ "standard end-to-end encryption" = "Standard-Ende-zu-Ende-Verschlüsselung"; @@ -4020,7 +4029,7 @@ "Use chat" = "Verwenden Sie Chat"; /* No comment provided by engineer. */ -"Use current profile" = "Nutzen Sie das aktuelle Profil"; +"Use current profile" = "Das aktuelle Profil nutzen"; /* No comment provided by engineer. */ "Use for new connections" = "Für neue Verbindungen nutzen"; diff --git a/apps/ios/es.lproj/Localizable.strings b/apps/ios/es.lproj/Localizable.strings index 3482dfe262..8a61d6c438 100644 --- a/apps/ios/es.lproj/Localizable.strings +++ b/apps/ios/es.lproj/Localizable.strings @@ -2960,6 +2960,9 @@ /* No comment provided by engineer. */ "Profile image" = "Imagen del perfil"; +/* No comment provided by engineer. */ +"Profile images" = "Imágenes del perfil"; + /* No comment provided by engineer. */ "Profile name" = "Nombre del perfil"; @@ -3503,6 +3506,9 @@ /* No comment provided by engineer. */ "Settings" = "Configuración"; +/* No comment provided by engineer. */ +"Shape profile images" = "Dar forma a las imágenes de perfil"; + /* chat item action */ "Share" = "Compartir"; @@ -3605,6 +3611,9 @@ /* notification title */ "Somebody" = "Alguien"; +/* No comment provided by engineer. */ +"Square, circle, or anything in between." = "Cuadrada, circular o cualquier forma intermedia."; + /* chat item text */ "standard end-to-end encryption" = "cifrado estándar de extremo a extremo"; diff --git a/apps/ios/fr.lproj/Localizable.strings b/apps/ios/fr.lproj/Localizable.strings index 264a0b1299..5e6c9c1b40 100644 --- a/apps/ios/fr.lproj/Localizable.strings +++ b/apps/ios/fr.lproj/Localizable.strings @@ -389,6 +389,9 @@ /* member role */ "admin" = "admin"; +/* feature role */ +"admins" = "admins"; + /* No comment provided by engineer. */ "Admins can block a member for all." = "Les admins peuvent bloquer un membre pour tous."; @@ -416,6 +419,9 @@ /* No comment provided by engineer. */ "All group members will remain connected." = "Tous les membres du groupe resteront connectés."; +/* feature role */ +"all members" = "tous les membres"; + /* No comment provided by engineer. */ "All messages will be deleted - this cannot be undone!" = "Tous les messages seront supprimés - il n'est pas possible de revenir en arrière !"; @@ -464,6 +470,9 @@ /* No comment provided by engineer. */ "Allow to send files and media." = "Permet l'envoi de fichiers et de médias."; +/* No comment provided by engineer. */ +"Allow to send SimpleX links." = "Autorise l'envoi de liens SimpleX."; + /* No comment provided by engineer. */ "Allow to send voice messages." = "Autoriser l'envoi de messages vocaux."; @@ -707,6 +716,9 @@ /* No comment provided by engineer. */ "Cannot receive file" = "Impossible de recevoir le fichier"; +/* No comment provided by engineer. */ +"Cellular" = "Cellulaire"; + /* No comment provided by engineer. */ "Change" = "Changer"; @@ -1401,6 +1413,9 @@ /* No comment provided by engineer. */ "Downgrade and open chat" = "Rétrograder et ouvrir le chat"; +/* chat item action */ +"Download" = "Télécharger"; + /* No comment provided by engineer. */ "Download failed" = "Échec du téléchargement"; @@ -1476,6 +1491,9 @@ /* enabled status */ "enabled" = "activé"; +/* No comment provided by engineer. */ +"Enabled for" = "Activé pour"; + /* enabled status */ "enabled for contact" = "activé pour le contact"; @@ -1830,6 +1848,9 @@ /* No comment provided by engineer. */ "Files and media are prohibited in this group." = "Les fichiers et les médias sont interdits dans ce groupe."; +/* No comment provided by engineer. */ +"Files and media not allowed" = "Fichiers et médias non autorisés"; + /* No comment provided by engineer. */ "Files and media prohibited!" = "Fichiers et médias interdits !"; @@ -1869,6 +1890,21 @@ /* No comment provided by engineer. */ "For console" = "Pour la console"; +/* chat item action */ +"Forward" = "Transférer"; + +/* No comment provided by engineer. */ +"Forward and save messages" = "Transférer et sauvegarder des messages"; + +/* No comment provided by engineer. */ +"forwarded" = "transféré"; + +/* No comment provided by engineer. */ +"Forwarded" = "Transféré"; + +/* No comment provided by engineer. */ +"Forwarded from" = "Transféré depuis"; + /* No comment provided by engineer. */ "Found desktop" = "Bureau trouvé"; @@ -1947,6 +1983,9 @@ /* No comment provided by engineer. */ "Group members can send files and media." = "Les membres du groupe peuvent envoyer des fichiers et des médias."; +/* No comment provided by engineer. */ +"Group members can send SimpleX links." = "Les membres du groupe peuvent envoyer des liens SimpleX."; + /* No comment provided by engineer. */ "Group members can send voice messages." = "Les membres du groupe peuvent envoyer des messages vocaux."; @@ -2088,6 +2127,9 @@ /* No comment provided by engineer. */ "In reply to" = "En réponse à"; +/* No comment provided by engineer. */ +"In-call sounds" = "Sons d'appel"; + /* No comment provided by engineer. */ "Incognito" = "Incognito"; @@ -2433,6 +2475,9 @@ /* notification */ "message received" = "message reçu"; +/* No comment provided by engineer. */ +"Message source remains private." = "La source du message reste privée."; + /* No comment provided by engineer. */ "Message text" = "Texte du message"; @@ -2517,6 +2562,9 @@ /* No comment provided by engineer. */ "More improvements are coming soon!" = "Plus d'améliorations à venir !"; +/* No comment provided by engineer. */ +"More reliable network connection." = "Connexion réseau plus fiable."; + /* item status description */ "Most likely this connection is deleted." = "Connexion probablement supprimée."; @@ -2538,6 +2586,12 @@ /* No comment provided by engineer. */ "Network & servers" = "Réseau et serveurs"; +/* No comment provided by engineer. */ +"Network connection" = "Connexion au réseau"; + +/* No comment provided by engineer. */ +"Network management" = "Gestion du réseau"; + /* No comment provided by engineer. */ "Network settings" = "Paramètres réseau"; @@ -2616,6 +2670,9 @@ /* No comment provided by engineer. */ "No history" = "Aucun historique"; +/* No comment provided by engineer. */ +"No network connection" = "Pas de connexion au réseau"; + /* No comment provided by engineer. */ "No permission to record voice message" = "Pas l'autorisation d'enregistrer un message vocal"; @@ -2762,9 +2819,15 @@ /* No comment provided by engineer. */ "Or show this code" = "Ou présenter ce code"; +/* No comment provided by engineer. */ +"Other" = "Autres"; + /* member role */ "owner" = "propriétaire"; +/* feature role */ +"owners" = "propriétaires"; + /* No comment provided by engineer. */ "Passcode" = "Code d'accès"; @@ -2897,6 +2960,9 @@ /* No comment provided by engineer. */ "Profile image" = "Image de profil"; +/* No comment provided by engineer. */ +"Profile images" = "Images de profil"; + /* No comment provided by engineer. */ "Profile name" = "Nom du profil"; @@ -2930,6 +2996,9 @@ /* No comment provided by engineer. */ "Prohibit sending files and media." = "Interdire l'envoi de fichiers et de médias."; +/* No comment provided by engineer. */ +"Prohibit sending SimpleX links." = "Interdire l'envoi de liens SimpleX."; + /* No comment provided by engineer. */ "Prohibit sending voice messages." = "Interdire l'envoi de messages vocaux."; @@ -3008,6 +3077,9 @@ /* No comment provided by engineer. */ "Receiving address will be changed to a different server. Address change will complete after sender comes online." = "L'adresse de réception sera changée pour un autre serveur. Le changement d'adresse sera terminé lorsque l'expéditeur sera en ligne."; +/* No comment provided by engineer. */ +"Receiving concurrency" = "Réception simultanée"; + /* No comment provided by engineer. */ "Receiving file will be stopped." = "La réception du fichier sera interrompue."; @@ -3017,6 +3089,9 @@ /* No comment provided by engineer. */ "Recent history and improved [directory bot](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)." = "Historique récent et amélioration du [bot annuaire](simplex:/contact#/?v=1-4&smp=smp%3A%2F%2Fu2dS9sG8nMNURyZwqASV4yROM28Er0luVTx5X1CsMrU%3D%40smp4.simplex.im%2FeXSPwqTkKyDO3px4fLf1wx3MvPdjdLW3%23%2F%3Fv%3D1-2%26dh%3DMCowBQYDK2VuAyEAaiv6MkMH44L2TcYrt_CsX3ZvM11WgbMEUn0hkIKTOho%253D%26srv%3Do5vmywmrnaxalvz6wi3zicyftgio6psuvyniis6gco6bp6ekl4cqj4id.onion)."; +/* No comment provided by engineer. */ +"Recipient(s) can't see who this message is from." = "Le(s) destinataire(s) ne peut(vent) pas voir de qui provient ce message."; + /* No comment provided by engineer. */ "Recipients see updates as you type them." = "Les destinataires voient les mises à jour au fur et à mesure que vous leur écrivez."; @@ -3212,6 +3287,18 @@ /* No comment provided by engineer. */ "Save welcome message?" = "Enregistrer le message d'accueil ?"; +/* No comment provided by engineer. */ +"saved" = "enregistré"; + +/* No comment provided by engineer. */ +"Saved" = "Enregistré"; + +/* No comment provided by engineer. */ +"Saved from" = "Enregistré depuis"; + +/* No comment provided by engineer. */ +"saved from %@" = "enregistré à partir de %@"; + /* message info title */ "Saved message" = "Message enregistré"; @@ -3419,6 +3506,9 @@ /* No comment provided by engineer. */ "Settings" = "Paramètres"; +/* No comment provided by engineer. */ +"Shape profile images" = "Images de profil modelable"; + /* chat item action */ "Share" = "Partager"; @@ -3479,6 +3569,12 @@ /* chat feature */ "SimpleX links" = "Liens SimpleX"; +/* No comment provided by engineer. */ +"SimpleX links are prohibited in this group." = "Les liens SimpleX sont interdits dans ce groupe."; + +/* No comment provided by engineer. */ +"SimpleX links not allowed" = "Les liens SimpleX ne sont pas autorisés"; + /* No comment provided by engineer. */ "SimpleX Lock" = "SimpleX Lock"; @@ -3515,6 +3611,9 @@ /* notification title */ "Somebody" = "Quelqu'un"; +/* No comment provided by engineer. */ +"Square, circle, or anything in between." = "Carré, circulaire, ou toute autre forme intermédiaire."; + /* chat item text */ "standard end-to-end encryption" = "chiffrement de bout en bout standard"; @@ -4043,6 +4142,9 @@ /* No comment provided by engineer. */ "Voice messages are prohibited in this group." = "Les messages vocaux sont interdits dans ce groupe."; +/* No comment provided by engineer. */ +"Voice messages not allowed" = "Les messages vocaux ne sont pas autorisés"; + /* No comment provided by engineer. */ "Voice messages prohibited!" = "Messages vocaux interdits !"; @@ -4094,12 +4196,24 @@ /* No comment provided by engineer. */ "When available" = "Quand disponible"; +/* No comment provided by engineer. */ +"When connecting audio and video calls." = "Lors des appels audio et vidéo."; + /* No comment provided by engineer. */ "When people request to connect, you can accept or reject it." = "Vous pouvez accepter ou refuser les demandes de contacts."; /* No comment provided by engineer. */ "When you share an incognito profile with somebody, this profile will be used for the groups they invite you to." = "Lorsque vous partagez un profil incognito avec quelqu'un, ce profil sera utilisé pour les groupes auxquels il vous invite."; +/* No comment provided by engineer. */ +"WiFi" = "WiFi"; + +/* No comment provided by engineer. */ +"Will be enabled in direct chats!" = "Activé dans les discussions directes !"; + +/* No comment provided by engineer. */ +"Wired ethernet" = "Ethernet câblé"; + /* No comment provided by engineer. */ "With encrypted files and media." = "Avec les fichiers et les médias chiffrés."; @@ -4121,6 +4235,9 @@ /* pref value */ "yes" = "oui"; +/* No comment provided by engineer. */ +"you" = "vous"; + /* No comment provided by engineer. */ "You" = "Vous"; diff --git a/apps/ios/hu.lproj/Localizable.strings b/apps/ios/hu.lproj/Localizable.strings index deb4e02a51..303b48b6be 100644 --- a/apps/ios/hu.lproj/Localizable.strings +++ b/apps/ios/hu.lproj/Localizable.strings @@ -50,7 +50,7 @@ "(new)" = "(új)"; /* No comment provided by engineer. */ -"(this device v%@)" = "(ez az eszköz v%@)"; +"(this device v%@)" = "(ez az eszköz: v%@)"; /* No comment provided by engineer. */ ")" = ")"; @@ -65,7 +65,7 @@ "[Star on GitHub](https://github.com/simplex-chat/simplex-chat)" = "[Csillag a GitHubon](https://github.com/simplex-chat/simplex-chat)"; /* No comment provided by engineer. */ -"**Add contact**: to create a new invitation link, or connect via a link you received." = "**Ismerős hozzáadása**: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő csatlakozáshoz."; +"**Add contact**: to create a new invitation link, or connect via a link you received." = "**Ismerős hozzáadása**: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő kapcsolódáshoz."; /* No comment provided by engineer. */ "**Add new contact**: to create your one-time QR Code for your contact." = "**Új ismerős hozzáadása**: egyszer használatos QR-kód vagy hivatkozás létrehozása a kapcsolattartóhoz."; @@ -134,19 +134,19 @@ "%@ and %@" = "%@ és %@"; /* No comment provided by engineer. */ -"%@ and %@ connected" = "%@ és %@ csatlakozott"; +"%@ and %@ connected" = "%@ és %@ kapcsolódott"; /* copied message info, at
    s dokonalým dopředným utajením, odpíráním a obnovou po vloupání.]]> + Mobilní + Žádné připojení k síti + Ostatní + Kabelový ethernet + Chyba zobrazení oznámení, kontaktujte vývojáře. + Soubory a média nejsou povoleny + SimpleX odkazy jsou zakázány + Hlasové zprávy nejsou povoleny + kvantům odolné e2e šifrování + standardní koncové šifrování + správci + všichni členové + majitelé + Obrázky profilů + Souběžné přijímání + SimpleX odkazy + Povoleno pro + Členové skupiny mohou odesílat SimpleX odkazy. + Zvuky v hovoru + Zdroje zpráv zůstávají důvěrné. + Správa sítě + Tvar obrázku profilů + Čtverec, kruh, nebo něco mezi. + Při spojování audio a video hovorů. + Udělit v nastavení + Otevřít nastavení + Najděte toto oprávnění v nastavení Android a povolte ho ručně. + Mikrofon + Udělit oprávnění + Udělit oprávnění pro volání + Kvantům odolné šifrování + Kamera + Kamera a mikrofon + SimpleX odkazy jsou v této skupině zakázány. + koncovým
    šifrováním s dokonalým dopředným utajením, odmítnutím a obnovením po vloupání.]]> \ No newline at end of file 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 c3a377cd8a..6f4afec2f3 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/de/strings.xml @@ -1847,4 +1847,7 @@ Litauische Bedienoberfläche Zuverlässigere Netzwerkverbindung. Wird in direkten Chats automatisch aktiviert! + Profil-Bilder + Form der Profil-Bilder + Quadratisch, kreisförmig oder irgendetwas dazwischen. \ No newline at end of file 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 fec5df6866..54512aca34 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/es/strings.xml @@ -1767,4 +1767,7 @@ Al iniciar llamadas de audio y vídeo. ¡Será habilitado en los chats directos! Conexión de red más fiable. + Imágenes del perfil + Dar forma a las imágenes de perfil + Cuadrada, circular o cualquier forma intermedia. \ No newline at end of file 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 53d9859802..5031330e4d 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fa/strings.xml @@ -156,4 +156,52 @@ \nممکن است دقایقی زمان ببرد. به SimpleX اجازه دهید در پس‌زمینه اجرا شود

    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 literal 0 HcmV?d00001 diff --git a/blog/images/20240426-profile3.png b/blog/images/20240426-profile3.png new file mode 100644 index 0000000000000000000000000000000000000000..f6972f20136507226d2b8d7a3ace5872c5250d0c GIT binary patch literal 171963 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ΝSrHwUtU{}=16Av}96hZO@P~z(y-s^}^ zi@BpZ1Wijl?lL6{p)IY#kkGvtq<%ZQd}1cn5g%CSqwJRTwnuU9qvUHQz07lDJZm#2 z$&E3Q0O=rZTm&jYIar*6P�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

    . در غیر این صورت، اعلان‌ها غیرفعال خواهند شد.]]> سرویس پس‌زمنیه SimpleX
    دارد – سرویس، هر روز درصد معدودی از باتری را استفاده می‌کند.]]> + ذخیره شده + ذخیره شده از %s + ذخیره شده از + فرستاده شده + رمزگذاری سرتاسر
    با محرمانگی پیشرو، مردودسازی و بازیابی ورود غیرمجاز محافظت شده‌اند.]]> + بهینه‌سازی باتری فعال است، سرویس پس‌زمینه و درخواست‌های متناوب برای پیام‌های جدید خاموش می‌شوند. می‌توانید آن‌ها را از طریق تنظیمات باز فعال کنید. + اعلان‌های متناوب + اعلان‌های متناوب غیرفعالند! + رمزگذاری سرتاسر مقاوم در برابر کوانتوم
    با محرمانگی پیشرو، مردودسازی و بازیابی ورود غیرمجاز محافظت شده‌اند.]]> + این گپ به وسیله رمزگذاری سرتاسر محافظت شده است. + این گپ به وسیله رمزگذاری سرتاسر مقاوم در برابر کوانتوم محافظت شده است. + غیرفعال کردن اعلان‌ها + SimpleX نمی‌تواند در پس‌زمینه اجرا شود. فقط وقتی برنامه در حال اجراست اعلان‌ها را دریافت خواهید کرد. + برنامه پیام‌های جدید را به طور متناوب دریافت می‌کند - درصد معدودی از باتری در روز استفاده می‌کند. برنامه از اعلان‌های رانشی استفاده نمی‌کند - داده‌ای از دستگاه شما به سرورها فرستاده نمی‌شود. + اجازه دادن + باز کردن تنظیمات برنامه + نمایش پیش‌نما + وقتی برنامه باز است، اجرا می‌شود + هر ۱۰ دقیقه به مدت ۱ دقیقه پیام‌های جدید را بررسی می‌کند + فقط نمایش مخاطب + گشودن کنسول گپ + پنهان کردن + پیام‌های SimpleX Chat + تماس‌های SimpleX Chat + سرویس اعلان + نام مخاطب + پنهان + پنهان کردن مخاطب و پیام + مخاطب پنهان: + گشودن نمایه‌های گپ + سرویس پس‌زمینه همیشه در حال اجراست - اعلان‌ها به محض موجود شدن پیام‌ها به نمایش درمی‌آیند. + قفل SimpleX + پایان تماس + پیش‌نمایش اعلان + به طور متناوب شروع می‌شود + همیشه روشن + برنامه فقط وقتی در حال اجراست می‌تواند اعلان‌ها را دریافت کند، هیچ سرویس پس‌زمینه‌ای شروع نخواهد شد + متن پیام + متصل + پیام جدید + نمایش مخاطب و پیام + درخواست مخاطب جدید + توقف گپ + گشودن صفحه جابه‌جایی + می‌توانید قفل SimpleX را از طریق تنظیمات روشن کنید. + خطا در نمایش اعلان، با توسعه‌دهندگان تماس بگیرید. + قفل SimpleX فعال نیست! + تصدیق دستگاه غیرفعال است. قفل SimpleX خاموش می‌شود. \ No newline at end of file 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 9889856c33..77f0abbf2d 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/fr/strings.xml @@ -1743,4 +1743,30 @@ Ethernet câblé Liens SimpleX Autres + Connexion réseau plus fiable. + Activé dans les discussions directes ! + Bluetooth + Écouteurs + Haut-parleur + Casque audio + La source du message reste privée. + enregistré + enregistré depuis %s + Transféré + Transféré depuis + Le(s) destinataire(s) ne peut(vent) pas voir de qui provient ce message. + Enregistré depuis + Enregistré + Télécharger + Transférer + Transfert du message… + Images de profil + Réception simultanée + Transférer et sauvegarder des messages + Sons d\'appel + Gestion du réseau + Images de profil modelable + Carré, circulaire, ou toute autre forme intermédiaire. + Lors des appels audio et vidéo. + Interface utilisateur en lituanien \ No newline at end of file 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 60c36757df..96fe8870ff 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/hu/strings.xml @@ -40,7 +40,7 @@ A hang- és videóhívások le vannak tiltva. Külön TCP kapcsolat (és SOCKS bejelentkezési adatok) lesz használva minden ismerős és csoporttag számára. \nFigyelem: ha sok ismerőse van, az akkumulátor- és adathasználat jelentősen megnövekedhet és néhány kapcsolódási kísérlet sikertelen lehet. - hivatkozás előnézet megszakítása + hivatkozás előnézet visszavonása az alkalmazásban minden csevegési profiljához .]]> Mindkét fél küldhet eltűnő üzeneteket. Az Android Keystore-t a jelmondat biztonságos tárolására használják - lehetővé teszi az értesítési szolgáltatás működését. @@ -98,12 +98,12 @@ További másodlagos Hozzáadás egy másik eszközhöz Az üzenetreakciók küldése engedélyezve van. - Fájl előnézet megszakítása + Fájl előnézet visszavonása Minden csoporttag kapcsolatban marad. Több akkumulátort használ! Háttérszolgáltatás mindig fut - az értesítések megjelennek, amint az üzenetek elérhetővé válnak.]]> Letiltás admin - Fénykép előnézet megszakítása + Fénykép előnézet visszavonása A jelkód megadása után minden adat törlésre kerül. Felkérték a videó fogadására Tag letiltása @@ -120,8 +120,8 @@ mindig A hívás már befejeződött! Engedélyezés - Minden ismerős csatlakoztatva marad. - Élő csevegési üzenet megszakítása + Minden ismerősével kapcsolatban marad. + Élő csevegési üzenet visszavonása Üzenet végleges törlésének engedélyezése kizárólag abban az esetben, ha az ismerőse is engedélyezi. (24 óra) Hang- és videóhívások téves üzenet hash @@ -136,7 +136,7 @@ Jó akkumulátoridő. A háttérszolgáltatás 10 percenként ellenőrzi az új üzeneteket. Előfordulhat, hogy hívásokról, vagy a sürgős üzenetekről marad le.]]> szerző Elküldött üzenetek végleges törlésének engedélyezése az ismerősei számára. (24 óra) - Megszakítás + Mégse Az alkalmazás csak akkor tud értesítéseket fogadni amikor fut, háttérszolgáltatás nem indul el Jobb üzenetek A cím módosítása megszakad. A régi fogadási cím kerül felhasználásra. @@ -172,14 +172,14 @@ Adatbázis jelmondat megváltoztatása? kapcsolódva Jelkód megváltoztatása - %s szerepköre megváltozott erre: %s + %s szerepkörét megváltoztatta erre: %s A fogadó cím megváltoztatása Változtatás Jelkód megerősítése Jelszó megerősítése Csoport szerepkör megváltoztatása? Zárolási mód megváltoztatása - Csatlakozott + Kapcsolódott kapcsolódva Kapcsolódás kapcsolódva @@ -193,7 +193,7 @@ Önmegsemmisítő mód megváltoztatása megváltoztatta az ön szerepkörét erre: %s Kapcsolódás - Közvetlen csatlakozás? + Közvetlen kapcsolódás? Kapcsolódás közvetlenül kapcsolódva kapcsolat %1$d @@ -205,7 +205,7 @@ Kapcsolódás egy hivatkozás / QR-kód által Kapcsolódási hiba (AUTH) Ismerős neve - Kapcsolódik ehhez az ismerőshöz? + Kapcsolódik a kapcsolattartási azonosítón keresztül? Azonosító létrehozása Másolás Folytatás @@ -234,12 +234,12 @@ Kapcsolódás egy hivatkozáson keresztül Ismerősök Kapcsolódási hiba - Az ismerős még nem csatlakozott! + Az ismerős még nem kapcsolódott! - kapcsolódás könyvtár szolgáltatáshoz (BÉTA)! \n- kézbesítési jelentések (20 tagig). \n- gyorsabb és stabilabb. Hozzájárulás - csatlakozás (bemutatkozó meghívó) + kapcsolódás (bemutatkozó meghívó) SimpleX azonosító létrehozása törölt ismerős Csoporttag üzenet törlése? @@ -318,7 +318,7 @@ Hivatkozás törlése? kapcsolódás Személyreszabott idő - Csatlakozás inkognitóban + Kapcsolódás inkognitóban CSEVEGÉSEK Új profil létrehozása a számítógép alkalmazásban. 💻 kapcsolódás (bejelentve) @@ -547,11 +547,11 @@ Üdvözlő üzenetet megadása… Titkosított adatbázis Jelszó megadása a keresőben - A fájl akkor érkezik meg, amikor az ismerőse befejezte annak feltöltését. + A fájl akkor érkezik meg, amikor a küldője befejezte annak feltöltését. Fájl letöltése A csevegés betöltése sikertelen Kiszolgáló megadása kézzel - A fájl akkor érkezik meg, amikor az ismerőse online lesz, várjon, vagy ellenőrizze később! + A fájl akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később! Hiba a csoport hivatkozásának létrehozásakor A Galériából Engedélyezés (csoport felülírások megtartásával) @@ -602,7 +602,7 @@ Adatbázis exportálása Teljes név: Tovább csökkentett akkumulátor használat - Hiba a csevegés megszakításakor + Hiba a csevegés megállításakor titkosítás rendben %s számára Csoport törlésre kerül minden tag számára - ez a művelet nem vonható vissza! Titkosítás javítása az adatmentések helyreállítása után. @@ -675,8 +675,8 @@ Ha az alkalmazás megnyitásakor megadja ezt a jelkódot, az összes alkalmazásadat véglegesen törlődik! Ha nem tud személyesen találkozni, mutassa meg a QR-kódot egy videohívás során, vagy ossza meg a hivatkozást. mutassa meg a QR-kódot a videohívásban, vagy ossza meg a hivatkozást.]]> - Megerősítés esetén az üzenetküldő kiszolgálók látni fogják az IP-címét és a szolgáltatóját – azt, hogy mely kiszolgálókhoz csatlakozik. - A kép akkor érkezik meg, amikor az ismerőse befejezte annak feltöltését. + Megerősítés esetén az üzenetküldő kiszolgálók látni fogják az IP-címét és a szolgáltatóját – azt, hogy mely kiszolgálókhoz kapcsolódik. + A kép akkor érkezik meg, amikor a küldője befejezte annak feltöltését. QR kód beolvasásával.]]> Kapott SimpleX Chat meghívó hivatkozását megnyithatja böngészőjében: Ha az alkalmazás megnyitásakor az önmegsemmisítő jelkódot megadásra kerül: @@ -689,7 +689,7 @@ Különböző nevek, avatarok és átviteli izoláció. Elutasítás esetén a feladó NEM kap értesítést. Szerepkör kiválasztásának bővítése - A kép akkor érkezik meg, amikor az ismerőse elérhető lesz, várjon, vagy ellenőrizze később! + A kép akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később! meghívta Érvénytelen kapcsolati hivatkozás Némítás @@ -707,7 +707,7 @@ Győződjön meg róla, hogy az XFTP-kiszolgáló címei megfelelő formátumúak, sorszeparáltak és nem duplikáltak. Nem kerültek ismerősök kiválasztásra Nincsenek fogadott, vagy küldött fájlok - Megnyitás mobil alkalmazásban, majd koppintson a Csatlakozás gombra az alkalmazásban.]]> + Megnyitás mobil alkalmazásban, majd koppintson a Kapcsolódás gombra az alkalmazásban.]]> Markdown az üzenetekben meghívás a %1$s csoportba Zárolási mód @@ -740,7 +740,7 @@ Új tag szerepköre Ki Érvénytelen hivatkozás! - A csatlakozáshoz Onion kiszolgálókra lesz szükség. + A kapcsolódáshoz Onion kiszolgálókra lesz szükség. Változások a %s verzióban Onion kiszolgálók használata, ha azok rendelkezésre állnak. Érvénytelen kiszolgálócím! @@ -776,7 +776,7 @@ elhagyta a csoportot Ebben a csevegésben az üzenetek végleges törlése le van tiltva. Max 40 másodperc, azonnal fogadható. - inkognitó az ismerős azonosító hivatkozásán keresztül + inkognitó a kapcsolattartási azonosító-hivatkozáson keresztül A kapcsolódáshoz Onion kiszolgálókra lesz szükség. \nFigyelem: .onion cím nélkül nem fog tudni kapcsolódni a kiszolgálókhoz. Olasz kezelőfelület @@ -822,7 +822,7 @@ Csatlakozás Az értesítések az alkalmazás elindításáig nem fognak működni ki` - (ez az eszköz) v%s)]]> + (ez az eszköz: v%s)]]> ajánlott %s Csoport elhagyása Minden %s által írt üzenet megjelenik! @@ -896,8 +896,8 @@ Kapcsolódási kérés megismétlése? Véglegesen csak ön törölhet üzeneteket (ismerőse csak törlésre jelölheti őket ). (24 óra) Szerepkör - SimpleX ismerős azonosítója - Megszakítás + SimpleX kapcsolattartási azonosító + Megállítás Előre beállított kiszolgáló Új csevegés kezdése Nyílt forráskódú protokoll és forráskód – bárki üzemeltethet kiszolgálókat. @@ -906,7 +906,7 @@ titkos Előnézet megjelenítése várakozás a visszaigazolásra… - Fájl megszakítása + Fájl megállítása csoport hivatkozáson keresztül PING időköze Eltűnő üzenet küldése @@ -939,11 +939,11 @@ Megosztás Fogadott üzenet Üdvözlő üzenet - %s, %s és további %d tag csatlakozott + %s, %s és további %d tag kapcsolódott Csak az ismerőse tud hívást indítani. TÉMÁK Túl sok videó! - Csevegési szolgáltatás megszakítása az adatbázis műveletek elvégzéséhez. + Csevegési szolgáltatás megállítása az adatbázis műveletek elvégzéséhez. Üdvözöljük! Önmegsemmisítési jelkód (beolvasás, vagy beillesztés a vágólapról) @@ -955,14 +955,14 @@ Frissítse az alkalmazást, és lépjen kapcsolatba a fejlesztőkkel. SimpleX Hivatkozás előnézete - biztonsági kód megváltozott + a biztonsági kód megváltozott Kizárólag ismerős megjelenítése Hangszóró bekapcsolva Importált csevegési adatbázis használatához indítsa újra az alkalmazást. jogosulatlan küldés Csak az ismerőse tud hangüzeneteket küldeni. Beállítások - A csatlakozáshoz az ismerőse beolvashatja a QR-kódot, vagy használhatja az alkalmazásban található hivatkozást. + A kapcsolódáshoz az ismerőse beolvashatja a QR-kódot, vagy használhatja az alkalmazásban található hivatkozást. visszaigazolás fogadása… Biztonsági kód beolvasása az ismerősének alkalmazásából. Lépjen kapcsolatba a csoport adminnal. @@ -989,13 +989,13 @@ Ismerős és üzenet megjelenítése BEÁLLÍTÁSOK Felhasználói fiók jelszavának mentése - Fájl küldés megszakítása? + Fájl küldés megállítása? Számítógép leválasztása? A hangüzenetek le vannak tilva! - Közvetlen üzenet küldése a csatlakozáshoz + Közvetlen üzenet küldése a kapcsolódáshoz PING számláló Fejlesztői beállítások megjelenítése - %s csatlakozott + %s kapcsolódott Rendszer Amikor elérhető Hangüzenet (%1$s) @@ -1012,14 +1012,14 @@ Túl sok kép! Archívum mentése %s, %s és %d tag - Csevegési szolgáltatás megszakítása + Csevegési szolgáltatás megállítása SimpleX hivatkozások Az elküldött üzenetek törlésre kerülnek a beállított idő után. Némítás feloldása Elküldve ekkor: %s Jelenlegi profil használata Ez az eszköz - Megosztja az azonosítót az ismerősökkel? + Megosztja az azonosítót az ismerőseivel? Profiljelszó Téma Jelmondat eltávolítása a beállításokból? @@ -1074,7 +1074,7 @@ Privát értesítések Meghívta egy ismerősét %s nincs ellenőrizve - Koppintson a csatlakozáshoz + Koppintson a kapcsolódáshoz Ennek az eszköznek a neve Jelenlegi profil Fájl feltöltése @@ -1093,7 +1093,7 @@ Csevegési profilok tulajdonos Bekapcsolás - %s, %s és %s csatlakoztak + %s, %s és %s kapcsolódott SimpleX egyszer használatos meghívó Hívások nem sikerült elküldeni @@ -1134,11 +1134,11 @@ Használat számítógépről ÖN port %d - Csatlakozás hivatkozáson keresztül + Kapcsolódás hivatkozáson keresztül Azonosító megosztása A kiszolgáló QR-kódjának beolvasása - Megszakítás - Címmegosztás megszakítása? + Megállítás + Címmegosztás megállítása? Csevegés profilok megnyitása Csatlakozási kérés megismétlése? Képre várakozás @@ -1151,7 +1151,7 @@ fogadott válasz… Adatbázismentés visszaállítása? Üzenetek fogadása… - %s és %s csatlakoztak + %s és %s kapcsolódtak megfigyelő szerep Port Jelkód beállítása @@ -1216,7 +1216,7 @@ QR-kód Titkosítás újraegyeztetése Eltávolítás - Tor .onion hostok használata + Tor .onion kiszolgálók használata Felfedés SimpleX zárolási mód Fájl visszavonása @@ -1225,7 +1225,7 @@ Fájl megosztása… Mentés átjátszón keresztül - Megosztás megszakítása + Megosztás megállítása eltávolította őt: %1$s Jelmondat mentése és csevegés megnyitása Beállítások mentése? @@ -1250,7 +1250,7 @@ Feloldás Némítás feloldása SimpleX Chat megnyitása a hívás fogadásához - Fájl fogadás megszakítása? + Fájl fogadás megállítása? - opcionális értesítés a törölt ismerősök számára \n- profil nevek szóközökkel \n- és továbbiak! @@ -1279,7 +1279,7 @@ Kapcsolat ellenőrzése Tudjon meg többet A küldő megszakította a fájl átvitelt. - Csevegési szolgáltatás megszakítása? + Csevegési szolgáltatás megállítása? Fogadva ekkor: Beállítva 1 nap Felfedés @@ -1292,7 +1292,7 @@ Videók és fájlok 1Gb méretig TCP kapcsolat időtúllépés A(z) %1$s nevű profiljának SimpleX azonosítója megosztásra fog kerülni. - Ön már csatlakozott ehhez: %1$s. + Ön már kapcsolódott ehhez: %1$s. Jelenlegi csevegési adatbázis TÖRLÉSRE és FELCSERÉLÉSRE kerül az importált által! \nEz a művelet nem vonható vissza - profiljai, ismerősei, csevegési üzenetei és fájljai véglegesen törölve lesznek! Ötletek és javaslatok @@ -1309,21 +1309,21 @@ Csoport profil mentése Alaphelyzetbe állítás Hacsak az ismerőse nem törölte a kapcsolatot, vagy ez a hivatkozás már használatban volt, lehet hogy ez egy hiba – jelentse a problémát. -\nA csatlakozáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsolati hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e. +\nA kapcsolódáshoz kérje meg ismerősét, hogy hozzon létre egy másik kapcsolati hivatkozást, és ellenőrizze, hogy a hálózati kapcsolat stabil-e. videóhívás (nem e2e titkosított) Alkalmazás új kapcsolatokhoz Az új üzenetek rendszeresen letöltésre kerülnek az alkalmazás által – naponta néhány százalékot használ az akkumulátorból. Az alkalmazás nem használ push értesítéseket – az eszközről származó adatok nem kerülnek elküldésre a kiszolgálóknak. Számítógép azonosítójának beillesztése - ismerős azonosítójának hivatkozásán keresztül + kapcsolattartási azonosító-hivatkozáson keresztül SimpleX háttérszolgáltatást használja - az akkumulátor néhány százalékát használja naponta.]]> Az ismerősnek online kell lennie ahhoz, hogy a kapcsolat létrejöjjön. \nMegszakíthatja ezt a kapcsolatfelvételt és törölheti az ismerőst (ezt később ismét megpróbálhatja egy új hivatkozással) A jelszó nem található a Keystore-ban, ezért kézzel szükséges megadni. Ez akkor történhetett meg, ha visszaállította az alkalmazás adatait egy biztonsági mentési eszközzel. Ha nem így történt, akkor lépjen kapcsolatba a fejlesztőkkel. - Az ismerősei továbbra is csatlakoztatva maradnak. + Az ismerősei továbbra is kapcsolódva maradnak. A kiszolgálónak engedélyre van szüksége a várólisták létrehozásához, ellenőrizze jelszavát Az adatbázis nem működik megfelelően. Koppintson további információért A fájl küldése leállt. - Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz ettől az ismerőstől. + Kapcsolódási kísérlet ahhoz a kiszolgálóhoz, amely az adott ismerőstől érkező üzenetek fogadására szolgál. Nem lehetett ellenőrizni; próbálja meg újra. Az üzenet minden tag számára moderáltként lesz megjelölve. Értesítések fogadásához adja meg az adatbázis jelmondatát @@ -1337,11 +1337,11 @@ meghívást kapott a csoportba engedélyezze a SimpleX háttérben történő futását a következő párbeszédpanelen. Ellenkező esetben az értesítések letiltásra kerülnek.]]> A kiszolgálónak engedélyre van szüksége a várólisták létrehozásához, ellenőrizze jelszavát - Csatlakozni fog a csoport összes tagjához. + Kapcsolódni fog a csoport összes tagjához. Lehetséges, hogy a kiszolgáló címében szereplő tanúsítvány-ujjlenyomat helytelen Az adatavédelem érdekében kapcsolja be a SimpleX zárolás funkciót. \nA funkció engedélyezése előtt a rendszer felszólítja a hitelesítés befejezésére. - A videó akkor érkezik meg, amikor az ismerőse elérhető, várjon, vagy ellenőrizze később! + A videó akkor érkezik meg, amikor a küldője elérhető lesz, várjon, vagy ellenőrizze később! Hálózati kapcsolat ellenőrzése a következővel: %1$s, és próbálja újra. A SimpleX zárolás a Beállításokon keresztül kapcsolható be. Az alkalmazás összeomlott @@ -1349,16 +1349,16 @@ A kép nem dekódolható. Próbálja meg egy másik képpel, vagy lépjen kapcsolatba a fejlesztőkkel. Érvénytelen fájl elérési útvonalat osztott meg. Jelentse a problémát az alkalmazás fejlesztőinek. Már van egy csevegési profil ugyanezzel a megjelenített névvel. Válasszon egy másik nevet. - Csatlakozási kísérlet a kapcsolat üzeneteinek fogadására használt kiszolgálóhoz ettől az ismerőstől (hiba: %1$s). + Kapcsolódási kísérlet ahhoz a kiszolgálóhoz, amely az adott ismerőstől érkező üzenetek fogadására szolgál (hiba: %1$s). A fájl fogadása leállt. Ne felejtse el, vagy tárolja biztonságosan – az elveszett jelszót nem lehet visszaállítani! - A videó akkor érkezik meg, amikor az ismerőse befejezte annak feltöltését. + A videó akkor érkezik meg, amikor a küldője befejezte annak feltöltését. egyszer használatos hivatkozást osztott meg inkognitóban - Kiszolgálóhoz történő csatlakozás, mely az adott ismerőstől érkező üzenetek fogadására szolgál. + Már kapcsolódott ahhoz a kiszolgálóhoz, amely az adott ismerőstől érkező üzenetek fogadására szolgál. Később engedélyezheti a Beállításokban - Akkor tud csatlakozni a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később! + Akkor lesz kapcsolódva a csoporthoz, amikor a csoport tulajdonosának eszköze online lesz, várjon, vagy ellenőrizze később! különböző átköltöztetés az alkalmazásban/adatbázisban: %s / %s - %1$s.]]> + %1$s.]]> Profil felfedése Ez a hivatkozás nem érvényes kapcsolati hivatkozás! A végpontok közötti titkosítás ellenőrzéséhez hasonlítsa össze (vagy szkennelje be) az ismerőse eszközén lévő kódot. @@ -1366,7 +1366,7 @@ Ez a beállítás a jelenlegi csevegési profilban lévő üzenetekre érvényes Meghívást kapott a csoportba. Csatlakozzon, hogy kapcsolatba léphessen a csoport tagjaival. Ez a csoport már nem létezik. - Ezen a hivatkozáson keresztül már csatlakozik a csoporthoz. + A csatlakozás már folyamatban van a csoporthoz ezen a hivatkozáson keresztül. Meghívást kapott a csoportba Ismerőse a jelenleg megengedett maximális méretű (%1$s) fájlnál nagyobbat küldött. Az ismerősei és az üzenetek (kézbesítés után) nem kerülnek tárolásra a SimpleX kiszolgálókon. @@ -1375,11 +1375,11 @@ Csevegési profilja elküldésre kerül \naz ismerőse számára Egy olyan ismerősét próbálja meghívni, akivel inkognitóprofilt osztott meg abban a csoportban, amelyben a saját fő profilja van használatban - %1$s csoporthoz.]]> + %1$s csoporthoz.]]> Amikor az alkalmazás fut Inkognító profilt használ ehhez a csoporthoz - fő profilja megosztásának elkerülése érdekében meghívók küldése tiltott Kapcsolat izolációs mód - Akkor lesz csatlakoztatva, ha a csatlakozási kérelme elfogadásra került, várjon, vagy ellenőrizze később! + Akkor lesz kapcsolódva, ha a kapcsolódási kérelme elfogadásra kerül, várjon, vagy ellenőrizze később! A hangüzenetek küldése le van tiltva ebben a csoportban. Alkalmazás akkumulátor használata / Korlátlan módot az alkalmazás beállításaiban.]]> Biztonságos kvantumrezisztens protokollon keresztül. @@ -1387,11 +1387,11 @@ \n- egyedi eltűnési időhatár. \n- előzmény szerkesztése. Használat számítógépről menüpontot a mobil alkalmazásban és olvassa be a QR-kódot.]]> - %s at %s - Akkor csatlakozik, amikor az ismerősének az eszköze online lesz, várjon, vagy ellenőrizze később! + %s ekkor: %s + Akkor lesz kapcsolódva, amikor az ismerősének az eszköze online lesz, várjon, vagy ellenőrizze később! Kéretlen üzenetek elrejtése. - Használja az .onion hostokat NEM értékre, ha a SOCKS proxy nem támogatja őket.]]> - Megoszthatja azonosítóját hivatkozásként vagy QR-kódként – így bárki csatlakozhat önhöz. + Használja az .onion kiszolgálókat
    NEM értékre, ha a SOCKS proxy nem támogatja őket.]]> + Megoszthatja azonosítóját hivatkozásként vagy QR-kódként – így bárki kapcsolódhat önhöz. Létrehozás később Profilja az eszközön van tárolva és csak az ismerőseivel kerül megosztásra. A SimpleX kiszolgálók nem láthatják a profilját. %s szerepkörét megváltoztatta erre: %s @@ -1420,7 +1420,7 @@ Alkalmazás akkumulátor használata / Korlátlan módot az alkalmazás beállításaiban.]]> Ez a karakterlánc nem egy meghívó hivatkozás! Új csevegés kezdése - Ön már csatlakozik ezen az egyszer használatos hivatkozáson keresztül! + A kapcsolódás már folyamatban van ezen az egyszer használatos hivatkozáson keresztül! Nem veszíti el az ismerőseit, ha később törli az azonosítóját. A beállítások frissítése a kiszolgálókhoz való újra kapcsolódással jár. kapcsolatba akar lépni veled! @@ -1432,8 +1432,8 @@ Opcionális üdvözlő üzenettel. Ismeretlen adatbázis hiba: %s Elrejthet vagy némíthat egy felhasználói profilt - tartsa lenyomva a menühöz. - Inkognító mód csatlakozáskor. - Tor .onion host beállítások frissítése? + Inkognító mód kapcsolódáskor. + Tor .onion kiszolgálók beállításainak frissítése? Megoszthat egy hivatkozást vagy QR-kódot - így bárki csatlakozhat a csoporthoz. Ha a csoport később törlésre kerül, akkor nem fogja elveszíteni annak tagjait. Csatlakozott ehhez a csoporthoz %1$s csoporthoz!]]> @@ -1441,18 +1441,18 @@ Ön irányítja csevegését! Kód ellenőrzése a számítógépen Az időzóna védelme érdekében a kép-/hangfájlok UTC-t használnak. - Csoporttag részére a csatlakozási kérelem eküldésre kerül. + Csoporttag részére a kapcsolódási kérelem elküldésre kerül. Inkognitóprofil megosztása esetén a rendszer azt a profilt fogja használni azokhoz a csoportokhoz, amelyekbe meghívást kapott. - Már kért egy csatlakozást ezen az azonosítón keresztül! - Megoszthatja ezt a SimpleX azonosítót ismerőseivel, hogy kapcsolatba léphessenek vele: %s. - Csatlakozási kérelmek esetében, elfogadhatja vagy elutasíthatja azokat. + Már kért egy kapcsolódási kérelmet ezen az azonosítón keresztül! + Megoszthatja ezt a SimpleX azonosítót az ismerőseivel, hogy kapcsolatba léphessenek vele: %s. + Amikor az emberek kapcsolódást kérelmeznek, ön elfogadhatja vagy elutasíthatja azokat. Megjelenítendő üzenet beállítása az új tagok számára! Köszönet a felhasználóknak - hozzájárulás a Weblaten! A kézbesítési jelentés küldése minden ismerős számára engedélyezésre kerül. Protokoll időkorlát KB-onként Az adatbázis jelmondatának megváltoztatására tett kísérlet nem fejeződött be. Ez a művelet nem vonható vissza - a kiválasztottnál korábban küldött és fogadott üzenetek törlésre kerülnek. Ez több percet is igénybe vehet. - Profilja csak az ismerősei számára kerül megosztásra. + Profilja csak az ismerőseivel kerül megosztásra. Néhány kiszolgáló megbukott a teszten: Koppintson a csatlakozáshoz Ez a művelet nem vonható vissza - az összes fogadott és küldött fájl a médiatartalommal együtt törlésre kerülnek. Az alacsony felbontású fotók viszont megmaradnak. @@ -1465,10 +1465,10 @@ A bejegyzés frissítve: %s Tagok meghívásának kihagyása Ezek felülbírálhatóak az ismerős- és csoportbeállításokban. - Ismerőse NEM fog tudni csatlakozni, akivel megosztotta ezt a hivatkozást! + Ismerőse, akivel megosztotta ezt a hivatkozást, NEM fog tudni kapcsolódni! A véletlenszerű jelmondat egyszerű szövegként van tárolva a beállításokban. \nEz később megváltoztatható. - Koppintson az inkognitóban való csatlakozáshoz + Koppintson az inkognitóban való kapcsolódáshoz Jelmondat beállítása az exportáláshoz Kézbesítési jelentések le vannak tiltva a(z) %d csoportban Néhány nem végzetes hiba történt az importálás során – további részletekért a csevegési konzolban olvashat. @@ -1476,7 +1476,7 @@ Az átjátszó kiszolgáló csak szükség esetén kerül használatra. Egy másik fél megfigyelheti az IP-címét. Rendszerhitelesítés helyetti beállítás. A fogadó cím egy másik kiszolgálóra változik. A címváltoztatás a feladó online állapotba kerülése után fejeződik be. - A csevegés megszakítása a csevegő adatbázis exportálásához, importálásához, vagy törléséhez. A csevegés megszakítása alatt nem tud üzeneteket fogadni és küldeni. + A csevegés megállítása a csevegő adatbázis exportálásához, importálásához, vagy törléséhez. A csevegés megállítása alatt nem tud üzeneteket fogadni és küldeni. Jelmondat mentése a kulcstárolóba Köszönet a felhasználóknak - hozzájárulás a Weblaten! Jelmondat mentése a beállításokban @@ -1521,7 +1521,7 @@ GitHub tárolónkban.]]> hiba a tartalom megjelenítése közben hiba az üzenet megjelenítésekor - Láthatóvá teheti SimpleX beli ismerősei számára a Beállításokban. + Láthatóvá teheti SimpleX-beli ismerősei számára a Beállításokban. Legfeljebb az utolsó 100 üzenet kerül elküldésre az új tagok számára. A beolvasott kód nem egy SimpleX hivatkozás QR-kód. A beillesztett szöveg nem egy SimpleX hivatkozás. @@ -1532,7 +1532,7 @@ Ismerős hozzáadása Koppintson a beolvasáshoz Koppintson a hivatkozás beillesztéséhez - Ismerős hozzáadása: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő csatlakozáshoz.]]> + Ismerős hozzáadása: új meghívó hivatkozás létrehozásához, vagy egy kapott hivatkozáson keresztül történő kapcsolódáshoz.]]> Csoport létrehozása: új csoport létrehozásához.]]> A csevegés leállt. Ha már használta ezt az adatbázist egy másik eszközön, úgy visszaállítás szükséges a csevegés megkezdése előtt. Az előzmények nem kerülnek elküldésre az új tagok számára. @@ -1588,13 +1588,13 @@ %s mobil eszköz elfoglalt]]> Legutóbbi tag %1$s ismeretlen státusz - %1$s tag neve megváltozott erre: %2$s - törölt csatlakozási cím + %1$s megváltoztatta a nevét erre: %2$s + törölt kapcsolattartási azonosító törölt profilkép - új kapcsolattartási cím beállítása + új kapcsolattartási azonosító beállítása új profilkép beállítása frissített profil - %1$s ismerős neve megváltozott erre: %2$s + %1$s megváltoztatta a nevét erre: %2$s Privát jegyzetek Hiba a privát jegyzetek törlésekor Hiba az üzenet létrehozásakor @@ -1605,7 +1605,7 @@ Minden üzenet törlésre kerül – ez a művelet nem vonható vissza! Továbbfejlesztett üzenetküldés Csatlakozás csoportos beszélgetésekhez - Hivatkozás beillesztése a csatlakozáshoz! + Hivatkozás beillesztése a kapcsolódáshoz! Privát jegyzetek A keresősáv elfogadja a meghívó hivatkozásokat. Titkosított fájlokkal és médiatartalommal. @@ -1644,7 +1644,7 @@ Minden ismerőse, a beszélgetései és a fájljai biztonságosan titkosításra kerülnek, melyek részletekben feltöltődnek a beállított XFTP átjátszókra. Alkalmazásadatok átköltöztetése Adatbázis archiválása - Átköltöztetés megszakítása + Átköltöztetés visszavonása A csevegés átköltöztetve! Ellenőrizze az internetkapcsolatot, és próbálja újra Archív hivatkozás létrehozása @@ -1675,7 +1675,7 @@ Sikertelen importálás Ellenőrizze, hogy a hálózati beállítások megfelelőek-e ehhez az eszközhöz. A folytatáshoz a csevegést meg kell szakítani. - Csevegés megszakítása + Csevegés megállítása folyamatban Vagy a fájl hivítkozásának biztonságos megosztása Csevegés indítása Nem szabad ugyanazt az adatbázist használni egyszerre két eszközön.]]> @@ -1761,4 +1761,7 @@ Üzenetek továbbítása és mentése Bejövő hívás csengőhangja Az üzenet forrása titokban marad. + Profilképek + Profilkép alakzat + Négyzet, kör vagy bármi a kettő között. \ No newline at end of file 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 02bf35dc53..310a021ff2 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/it/strings.xml @@ -1758,4 +1758,15 @@ Cuffie Altoparlante Ricezione concomitanza + Viene attivata nelle chat dirette! + Inoltra e salva i messaggi + Quando si connettono le chiamate audio e video. + Interfaccia in lituano + Connessione di rete più affidabile. + Gestione della rete + Immagini del profilo + Suoni nelle chiamate + La fonte del messaggio resta privata. + Forma delle immagini del profilo + Quadrata, circolare o qualsiasi forma tra le due \ No newline at end of file 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 618cf6afae..feb6345c9c 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/ja/strings.xml @@ -1766,4 +1766,7 @@ 並列受信 受信者は発信者を特定できません。 保存済 + プロフィール画像 + 正方形、円形またはその中間 + プロフィール画像をシェイプ \ No newline at end of file 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 4b37f5d725..ab10a01a66 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/nl/strings.xml @@ -1764,4 +1764,7 @@ Geluiden tijdens het bellen Litouwse gebruikersinterface Betrouwbaardere netwerkverbinding. + Vorm profiel afbeeldingen + Profiel afbeeldingen + Vierkant, cirkel of iets daartussenin. \ No newline at end of file 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 a1316fc258..d667126730 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/pl/strings.xml @@ -1753,4 +1753,20 @@ Zapisane zapisane zapisane od %s + Bluetooth + Przesyłaj dalej i zapisuj wiadomości + Słuchawki douszne + Słuchawki + Głośnik + Podczas łączenia połączeń audio i wideo. + Dźwięki w rozmowie + Zdjęcia profilowe + Konkurencyjne odbieranie + Litewski interfejs użytkownika + Bardziej niezawodne połączenia sieciowe. + Zarządzenie sieciowe + Kształtuj obrazy profilowe + Kwadrat, okrąg lub cokolwiek pomiędzy. + Źródło wiadomości pozostaje prywatne. + Zostanie włączone w czatach bezpośrednich! \ No newline at end of file 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 55fffb2728..915c643dee 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/tr/strings.xml @@ -1530,7 +1530,7 @@ Yerel ağ üzerinden keşfedilebilir Kayıt güncellendi Sunucu kullan - Şuradan alındı: %s + Alınma tarihi: %s Kişi Ekle - dizin hizmetine bağlan \n(BETADA!) @@ -1767,4 +1767,7 @@ WiFi Sesli ve görüntülü aramalara bağlanırken. Kablolu ethernet + Profil resimleri + Profil resimlerini şekillendir + Kare,daire, veya aralarında herhangi birşey. \ No newline at end of file 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 0297b7fd8b..dc893c7d17 100644 --- a/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml +++ b/apps/multiplatform/common/src/commonMain/resources/MR/vi/strings.xml @@ -130,4 +130,18 @@ Xác thực Quá trình xác thực không có sẵn Quá trình xác thực đã thất bại + Phông nền + Hàm băm tin nhắn xấu + ID tin nhắn xấu + ID tin nhắn xấu + Dịch vụ nền luôn luôn chạy - thông báo sẽ được hiển thị ngay khi nhận được tin nhắn. + Tự động chấp nhận yêu cầu liên hệ + Địa chỉ máy tính xấu + Thêm liên hệ: để tạo liên kết mời mới, hoặc kết nối qua liên kết bạn nhận được.]]> + hàm băm tin nhắn xấu + " +\nCó sẵn ở v5.1" + Tự động chấp nhận + Quay về + Tự động chấp nhận hình ảnh \ No newline at end of file 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 ba9ed618e9..536207892d 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 @@ -1766,4 +1766,7 @@ 立陶宛语用户界面 连接音频和视频通话时。 将在私聊中启用! + 个人资料图 + 改变个人资料图形状 + 方形、圆形、或两者之间的任意形状 \ No newline at end of file diff --git a/scripts/ios/export-localizations.sh b/scripts/ios/export-localizations.sh index cc6eed25a9..88555ba70b 100755 --- a/scripts/ios/export-localizations.sh +++ b/scripts/ios/export-localizations.sh @@ -2,7 +2,7 @@ set -e -langs=( en bg cs de es fi fr it ja nl pl ru uk zh-Hans ) +langs=( en bg cs de es fi fr hu it ja nl pl ru th tr uk zh-Hans ) for lang in "${langs[@]}"; do echo "***" From 9f33e5d35e4a83e81e63c56e702768a036b52d00 Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 5 May 2024 19:00:16 +0100 Subject: [PATCH 127/147] website: translations (#4136) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Translated using Weblate (German) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/ * Translated using Weblate (Dutch) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/nl/ * Translated using Weblate (Arabic) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/ * Translated using Weblate (Italian) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/ * Translated using Weblate (Polish) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/pl/ * Translated using Weblate (German) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/de/ * Translated using Weblate (Dutch) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/nl/ * Translated using Weblate (Arabic) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/ * Translated using Weblate (Italian) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/it/ * Translated using Weblate (Polish) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/pl/ * Translated using Weblate (Arabic) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ar/ * Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/zh_Hans/ * Translated using Weblate (Japanese) Currently translated at 100.0% (257 of 257 strings) Translation: SimpleX Chat/SimpleX Chat website Translate-URL: https://hosted.weblate.org/projects/simplex-chat/website/ja/ --------- Co-authored-by: mlanp Co-authored-by: M1K4 Co-authored-by: jonnysemon Co-authored-by: Random Co-authored-by: B.O.S.S Co-authored-by: 大王叫我来巡山 Co-authored-by: Miyu Sakatsuki --- website/langs/ar.json | 8 +++++--- website/langs/de.json | 2 +- website/langs/it.json | 6 ++++-- website/langs/ja.json | 2 +- website/langs/nl.json | 6 ++++-- website/langs/pl.json | 7 +++++-- website/langs/zh_Hans.json | 6 ++++-- 7 files changed, 24 insertions(+), 13 deletions(-) diff --git a/website/langs/ar.json b/website/langs/ar.json index 59b5002bc4..7b087aab42 100644 --- a/website/langs/ar.json +++ b/website/langs/ar.json @@ -15,7 +15,7 @@ "chat-protocol": "بروتوكول الدردشة", "donate": "تبرّع", "terminal-cli": "طرفية CLI", - "terms-and-privacy-policy": "الشروط وسياسة الخصوصية", + "terms-and-privacy-policy": "سياسة الخصوصية", "hero-header": "إعادة تعريف الخصوصية", "hero-overlay-1-textlink": "لماذا تعتبر معرّفات المستخدم ضارة بالخصوصية؟", "hero-overlay-2-textlink": "كيف يعمل SimpleX؟", @@ -34,7 +34,7 @@ "copyright-label": "مشروع مفتوح المصدر © SimpleX 2020-2023", "simplex-chat-protocol": "بروتوكول دردشة SimpleX", "developers": "المطورين", - "hero-subheader": "أول نظام مُراسلة
    بدون معرّفات المستخدم", + "hero-subheader": "أول نظام مُراسلة
    دون معرّفات مُستخدم", "hero-p-1": "تحتوي التطبيقات الأخرى على معرّفات مستخدم: Signal ،Matrix ،Session ،Briar ،Jami ،Cwtch وما إلى ذلك.
    SimpleX ليس لديه، ولا حتى أرقام عشوائية.
    وهذا يحسن خصوصيتك بشكل جذري.", "features": "الميزات", "hero-2-header": "أجري اتصال خاص", @@ -253,5 +253,7 @@ "docs-dropdown-9": "التنزيلات", "please-enable-javascript": "الرجاء تفعيل جافا سكريبت (JavaScript) لرؤية رمز QR.", "please-use-link-in-mobile-app": "يُرجى استخدام الرابط في تطبيق الجوال", - "docs-dropdown-10": "الشفافية" + "docs-dropdown-10": "الشفافية", + "docs-dropdown-11": "الأسئلة الأكثر شيوعًا", + "docs-dropdown-12": "الأمان" } diff --git a/website/langs/de.json b/website/langs/de.json index eb817a50f0..c6bcc9920f 100644 --- a/website/langs/de.json +++ b/website/langs/de.json @@ -25,7 +25,7 @@ "chat-protocol": "Chat Protokoll", "simplex-chat-protocol": "SimpleX Chat Protokoll", "terminal-cli": "Terminal Kommandozeilen-Schnittstelle", - "terms-and-privacy-policy": "Bedingungen & Datenschutzbestimmungen", + "terms-and-privacy-policy": "Datenschutzrichtlinie", "hero-header": "Privatsphäre neu definiert", "hero-overlay-2-textlink": "Wie funktioniert SimpleX?", "hero-subheader": "Der erste Messenger
    ohne Nutzerkennungen", diff --git a/website/langs/it.json b/website/langs/it.json index e5ad1490c1..c2425f93fd 100644 --- a/website/langs/it.json +++ b/website/langs/it.json @@ -13,7 +13,7 @@ "copyright-label": "© 2020-2023 SimpleX | Progetto Open-Source", "simplex-chat-protocol": "Protocollo di SimpleX Chat", "terminal-cli": "Terminale CLI", - "terms-and-privacy-policy": "Termini e Informativa sulla privacy", + "terms-and-privacy-policy": "Informativa sulla privacy", "hero-header": "Privacy ridefinita", "hero-subheader": "Il primo messenger
    senza ID utente", "hero-p-1": "Le altre app hanno gli ID utente: Signal, Matrix, Session, Briar, Jami, Cwtch, ecc.
    SimpleX invece no, neanche dei numeri casuali.
    Ciò aumenta radicalmente la tua privacy.", @@ -253,5 +253,7 @@ "docs-dropdown-9": "Download", "please-enable-javascript": "Attiva JavaScript per vedere il codice QR.", "please-use-link-in-mobile-app": "Usa il link nell'app mobile", - "docs-dropdown-10": "Trasparenza" + "docs-dropdown-10": "Trasparenza", + "docs-dropdown-12": "Sicurezza", + "docs-dropdown-11": "Domande frequenti" } diff --git a/website/langs/ja.json b/website/langs/ja.json index ca5fc4f12c..3ac040272f 100644 --- a/website/langs/ja.json +++ b/website/langs/ja.json @@ -32,7 +32,7 @@ "simplex-explained-tab-1-p-2": "ユーザー プロファイル識別子なしで単方向キューをどのように処理できるのでしょうか?", "simplex-chat-protocol": "SimpleX チャットプロトコル", "terminal-cli": "ターミナル CLI", - "terms-and-privacy-policy": "利用規約とプライバシーポリシー", + "terms-and-privacy-policy": "プライバシーポリシー", "hero-header": "プライバシーの基準を新境地に", "hero-subheader": "
    ユーザーIDを持たない最初のメッセンジャー", "hero-overlay-1-textlink": "ユーザー ID がプライバシーに悪影響を与えるのはなぜですか?", diff --git a/website/langs/nl.json b/website/langs/nl.json index 9eb119c525..15729fbfe9 100644 --- a/website/langs/nl.json +++ b/website/langs/nl.json @@ -20,7 +20,7 @@ "copyright-label": "© 2020-2023 SimpleX | Open-sourceproject", "simplex-chat-protocol": "SimpleX Chat protocol", "terminal-cli": "Terminal CLI", - "terms-and-privacy-policy": "Voorwaarden & Privacybeleid", + "terms-and-privacy-policy": "Privacybeleid", "hero-subheader": "De eerste messenger
    zonder gebruikers-ID's", "hero-overlay-1-textlink": "Waarom zijn gebruikers-ID's slecht voor de privacy?", "hero-overlay-2-textlink": "Hoe werkt SimpleX?", @@ -253,5 +253,7 @@ "docs-dropdown-9": "Downloads", "please-enable-javascript": "Schakel JavaScript in om de QR-code te zien.", "please-use-link-in-mobile-app": "Gebruik de link in de mobiele app", - "docs-dropdown-10": "Transparantie" + "docs-dropdown-10": "Transparantie", + "docs-dropdown-11": "FAQ", + "docs-dropdown-12": "Beveiliging" } diff --git a/website/langs/pl.json b/website/langs/pl.json index 3e7c546cf1..bbfb2dd9b7 100644 --- a/website/langs/pl.json +++ b/website/langs/pl.json @@ -18,7 +18,7 @@ "copyright-label": "© 2020-2023 SimpleX | Projekt Open-Source", "simplex-chat-protocol": "Protokół SimpleX Chat", "terminal-cli": "Terminal CLI", - "terms-and-privacy-policy": "Warunki i polityka prywatności", + "terms-and-privacy-policy": "Polityka prywatności", "hero-header": "Prywatność zdefiniowana na nowo", "hero-subheader": "Pierwszy komunikator
    bez identyfikatorów użytkowników (ID)", "hero-overlay-1-textlink": "Dlaczego identyfikatory użytkowników (ID) są złe dla prywatności?", @@ -252,5 +252,8 @@ "hero-overlay-card-3-p-1": "
    Trail of Bits jest wiodącą firmą konsultingową w zakresie bezpieczeństwa i technologii, której klientami są duże firmy technologiczne, agencje rządowe i główne projekty blockchain.", "docs-dropdown-9": "Pliki do pobrania", "please-enable-javascript": "Prosimy o włączenie JavaScript w celu wyświetlenia kodu QR.", - "please-use-link-in-mobile-app": "Prosimy o skorzystanie z linku w aplikacji mobilnej" + "please-use-link-in-mobile-app": "Prosimy o skorzystanie z linku w aplikacji mobilnej", + "docs-dropdown-10": "Przezroczystość", + "docs-dropdown-12": "Bezpieczeństwo", + "docs-dropdown-11": "Często zadawane pytania" } diff --git a/website/langs/zh_Hans.json b/website/langs/zh_Hans.json index 4009a05ac9..a81f4d123c 100644 --- a/website/langs/zh_Hans.json +++ b/website/langs/zh_Hans.json @@ -1,7 +1,7 @@ { "simplex-explained-tab-3-p-2": "用户可以通过使用 Tor 访问服务器以进一步提高元数据隐私,防止通过 IP 地址关联实际身份。", "chat-bot-example": "聊天机器人示例", - "terms-and-privacy-policy": "条款和隐私政策", + "terms-and-privacy-policy": "隐私政策", "hero-overlay-1-textlink": "为什么用户 ID 不利于隐私?", "hero-2-header": "建立私人连接", "hero-overlay-2-title": "为什么用户 ID 不利于隐私?", @@ -253,5 +253,7 @@ "docs-dropdown-9": "下载", "please-use-link-in-mobile-app": "请使用移动应用程序中的链接", "please-enable-javascript": "请启用 JavaScript 以查看二维码。", - "docs-dropdown-10": "透明度" + "docs-dropdown-10": "透明度", + "docs-dropdown-11": "常问问题", + "docs-dropdown-12": "安全性" } From 98f5e5d22ba1194d41abeb6d0ec1fea0a12796ed Mon Sep 17 00:00:00 2001 From: Evgeny Poberezkin Date: Sun, 5 May 2024 21:01:57 +0100 Subject: [PATCH 128/147] 5.7.1: ios 213, android 202, desktop 42 --- apps/ios/SimpleX.xcodeproj/project.pbxproj | 24 +++++++++++----------- apps/multiplatform/gradle.properties | 8 ++++---- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/apps/ios/SimpleX.xcodeproj/project.pbxproj b/apps/ios/SimpleX.xcodeproj/project.pbxproj index cec89e8eea..a5a222f13f 100644 --- a/apps/ios/SimpleX.xcodeproj/project.pbxproj +++ b/apps/ios/SimpleX.xcodeproj/project.pbxproj @@ -1552,7 +1552,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 212; + CURRENT_PROJECT_VERSION = 213; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1577,7 +1577,7 @@ "@executable_path/Frameworks", ); LLVM_LTO = YES_THIN; - MARKETING_VERSION = 5.7; + MARKETING_VERSION = 5.7.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; SDKROOT = iphoneos; @@ -1601,7 +1601,7 @@ CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_ENTITLEMENTS = "SimpleX (iOS).entitlements"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 212; + CURRENT_PROJECT_VERSION = 213; DEAD_CODE_STRIPPING = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; @@ -1626,7 +1626,7 @@ "@executable_path/Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.7; + MARKETING_VERSION = 5.7.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.app; PRODUCT_NAME = SimpleX; SDKROOT = iphoneos; @@ -1687,7 +1687,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 212; + CURRENT_PROJECT_VERSION = 213; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; GCC_OPTIMIZATION_LEVEL = s; @@ -1702,7 +1702,7 @@ "@executable_path/../../Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.7; + MARKETING_VERSION = 5.7.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1724,7 +1724,7 @@ CODE_SIGN_ENTITLEMENTS = "SimpleX NSE/SimpleX NSE.entitlements"; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 212; + CURRENT_PROJECT_VERSION = 213; DEVELOPMENT_TEAM = 5NN7GUYB6T; ENABLE_BITCODE = NO; ENABLE_CODE_COVERAGE = NO; @@ -1739,7 +1739,7 @@ "@executable_path/../../Frameworks", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.7; + MARKETING_VERSION = 5.7.1; PRODUCT_BUNDLE_IDENTIFIER = "chat.simplex.app.SimpleX-NSE"; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -1761,7 +1761,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 212; + CURRENT_PROJECT_VERSION = 213; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1787,7 +1787,7 @@ "$(PROJECT_DIR)/Libraries/sim", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.7; + MARKETING_VERSION = 5.7.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; @@ -1812,7 +1812,7 @@ CLANG_TIDY_BUGPRONE_REDUNDANT_BRANCH_CONDITION = YES; CLANG_TIDY_MISC_REDUNDANT_EXPRESSION = YES; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 212; + CURRENT_PROJECT_VERSION = 213; DEFINES_MODULE = YES; DEVELOPMENT_TEAM = 5NN7GUYB6T; DYLIB_COMPATIBILITY_VERSION = 1; @@ -1838,7 +1838,7 @@ "$(PROJECT_DIR)/Libraries/sim", ); LLVM_LTO = YES; - MARKETING_VERSION = 5.7; + MARKETING_VERSION = 5.7.1; PRODUCT_BUNDLE_IDENTIFIER = chat.simplex.SimpleXChat; PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; SDKROOT = iphoneos; diff --git a/apps/multiplatform/gradle.properties b/apps/multiplatform/gradle.properties index cda778515d..0806f086da 100644 --- a/apps/multiplatform/gradle.properties +++ b/apps/multiplatform/gradle.properties @@ -26,11 +26,11 @@ android.enableJetifier=true kotlin.mpp.androidSourceSetLayoutVersion=2 kotlin.jvm.target=11 -android.version_name=5.7 -android.version_code=200 +android.version_name=5.7.1 +android.version_code=202 -desktop.version_name=5.7 -desktop.version_code=41 +desktop.version_name=5.7.1 +desktop.version_code=42 kotlin.version=1.9.23 gradle.plugin.version=8.2.0 From db136116d328dbc9ddb41214bb43e9db8a9e2ede Mon Sep 17 00:00:00 2001 From: "M. Sarmad Qadeer" Date: Mon, 6 May 2024 12:31:34 +0500 Subject: [PATCH 129/147] web: make image of full width for mobile screen (#4101) --- website/src/css/blog.css | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/website/src/css/blog.css b/website/src/css/blog.css index f3517958e2..c671e6e6ce 100644 --- a/website/src/css/blog.css +++ b/website/src/css/blog.css @@ -215,4 +215,10 @@ h6{ float: right; margin-left: 3rem; } +} + +@media (max-width:768px) { + img { + width: 100%; + } } \ No newline at end of file From 9615e525c0ee4b1fcb73cb425819e4c9eae21d4d Mon Sep 17 00:00:00 2001 From: "M. Sarmad Qadeer" Date: Mon, 6 May 2024 12:36:13 +0500 Subject: [PATCH 130/147] web: fix list numbering for safari (#4106) Co-authored-by: Evgeny Poberezkin --- ...istance-signal-double-ratchet-algorithm.md | 12 +++++------ website/src/css/blog.css | 21 ++++++++++++++----- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md b/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md index 219dd2d5fe..1e4c3adfb5 100644 --- a/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md +++ b/blog/20240314-simplex-chat-v5-6-quantum-resistance-signal-double-ratchet-algorithm.md @@ -17,12 +17,12 @@ This post also covers various aspects of end-to-end encryption, compares differe - [Why do we need end-to-end encryption?](#why-do-we-need-end-to-end-encryption) - [Why is encryption even allowed?](#why-is-encryption-even-allowed) - [End-to-end encryption security: attacks and defense.](#end-to-end-encryption-security-attacks-and-defense) - - Compromised message size - mitigated by padding messages to a fixed block size. - - Compromised confidentiality - mitigated by repudiation (deniability). - - Compromised message keys - mitigated by forward secrecy. - - Compromised long-term or session - mitigated by break-in recovery. - - Man-in-the-middle attack - mitigated by two-factor key exchange. - - "Record now, decrypt later" attacks - mitigated by post-quantum cryptography. + 1. Compromised message size - mitigated by padding messages to a fixed block size. + 2. Compromised confidentiality - mitigated by repudiation (deniability). + 3. Compromised message keys - mitigated by forward secrecy. + 4. Compromised long-term or session - mitigated by break-in recovery. + 5. Man-in-the-middle attack - mitigated by two-factor key exchange. + 6. "Record now, decrypt later" attacks - mitigated by post-quantum cryptography. - [How secure is encryption in different messengers?](#how-secure-is-end-to-end-encryption-in-different-messengers) - [Adding quantum resistance to Signal double ratchet algorithm.](#adding-quantum-resistance-to-signal-double-ratchet-algorithm) - [When can you start using quantum resistant chats?](#when-can-you-start-using-quantum-resistant-chats) diff --git a/website/src/css/blog.css b/website/src/css/blog.css index c671e6e6ce..897fbafb10 100644 --- a/website/src/css/blog.css +++ b/website/src/css/blog.css @@ -85,7 +85,8 @@ section.container>div>p:nth-child(2) { } } -.dark #article h3, .dark #article h4 { +.dark #article h3, +.dark #article h4 { color: white; } @@ -112,7 +113,8 @@ section.container>div>p:nth-child(2) { #article ol li { margin-right: 0; margin-left: 0; - -webkit-margin-start: 1.1rem;; + -webkit-margin-start: 1.1rem; + ; color: #000; } @@ -193,7 +195,7 @@ h2, h3, h4, h5, -h6{ +h6 { clear: both; } @@ -206,12 +208,12 @@ h6{ } @media (min-width: 1024px) { - #article .float-to-left{ + #article .float-to-left { float: left; margin-right: 3rem; } - #article .float-to-right{ + #article .float-to-right { float: right; margin-left: 3rem; } @@ -221,4 +223,13 @@ h6{ img { width: 100%; } +} + +#article ol>li { + list-style-position: inside !important; + margin-left: -0px !important; +} + +#article ol>li::marker { + font-weight: 500; } \ No newline at end of file From 1b081197d42fcbcf3d05b010018f8248fbbb1977 Mon Sep 17 00:00:00 2001 From: spaced4ndy <8711996+spaced4ndy@users.noreply.github.com> Date: Mon, 6 May 2024 20:27:35 +0400 Subject: [PATCH 131/147] multiplatform: add error to response (#4140) --- .../commonMain/kotlin/chat/simplex/common/model/SimpleXAPI.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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 494f400fbc..b71610597e 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 @@ -4175,7 +4175,7 @@ sealed class CR { @Serializable @SerialName("rcvStandaloneFileComplete") class RcvStandaloneFileComplete(val user: UserRef, val targetPath: String, val rcvFileTransfer: RcvFileTransfer): CR() @Serializable @SerialName("rcvFileCancelled") class RcvFileCancelled(val user: UserRef, val chatItem_: AChatItem?, val rcvFileTransfer: RcvFileTransfer): CR() @Serializable @SerialName("rcvFileSndCancelled") class RcvFileSndCancelled(val user: UserRef, val chatItem: AChatItem, val rcvFileTransfer: RcvFileTransfer): CR() - @Serializable @SerialName("rcvFileError") class RcvFileError(val user: UserRef, val chatItem_: AChatItem?, val rcvFileTransfer: RcvFileTransfer): CR() + @Serializable @SerialName("rcvFileError") class RcvFileError(val user: UserRef, val chatItem_: AChatItem?, val agentError: AgentErrorType, val rcvFileTransfer: RcvFileTransfer): CR() // sending file events @Serializable @SerialName("sndFileStart") class SndFileStart(val user: UserRef, val chatItem: AChatItem, val sndFileTransfer: SndFileTransfer): CR() @Serializable @SerialName("sndFileComplete") class SndFileComplete(val user: UserRef, val chatItem: AChatItem, val sndFileTransfer: SndFileTransfer): CR() @@ -4501,7 +4501,7 @@ sealed class CR { is RcvFileSndCancelled -> withUser(user, json.encodeToString(chatItem)) is RcvFileProgressXFTP -> withUser(user, "chatItem: ${json.encodeToString(chatItem_)}\nreceivedSize: $receivedSize\ntotalSize: $totalSize") is RcvStandaloneFileComplete -> withUser(user, targetPath) - is RcvFileError -> withUser(user, json.encodeToString(chatItem_)) + is RcvFileError -> withUser(user, "chatItem_: ${json.encodeToString(chatItem_)}\nagentError: ${agentError.string}\nrcvFileTransfer: $rcvFileTransfer") is SndFileCancelled -> json.encodeToString(chatItem_) is SndStandaloneFileCreated -> noDetails() is SndFileStartXFTP -> withUser(user, json.encodeToString(chatItem)) From 10f41aa1c9af4696a5802ab97f0f9684eed3dd30 Mon Sep 17 00:00:00 2001 From: "M. Sarmad Qadeer" Date: Wed, 8 May 2024 13:31:02 +0500 Subject: [PATCH 132/147] web: add scroll to navbar (#4100) * web: add scroll to navbar * web: add scroll to whole navbar instead of scrolling the opened menu --- website/src/_includes/navbar.html | 4 ++-- website/src/css/style.css | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/website/src/_includes/navbar.html b/website/src/_includes/navbar.html index 89b3a122d8..5f9d4be3f3 100644 --- a/website/src/_includes/navbar.html +++ b/website/src/_includes/navbar.html @@ -13,7 +13,7 @@ -