diff --git a/Telegram-iOS.xcworkspace/contents.xcworkspacedata b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
index 8eb96be7d5..5a635e9d0e 100644
--- a/Telegram-iOS.xcworkspace/contents.xcworkspacedata
+++ b/Telegram-iOS.xcworkspace/contents.xcworkspacedata
@@ -217,6 +217,12 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/Telegram-iOS/en.lproj/Localizable.strings b/Telegram-iOS/en.lproj/Localizable.strings
index 631a6cff30..811f5ba21d 100644
--- a/Telegram-iOS/en.lproj/Localizable.strings
+++ b/Telegram-iOS/en.lproj/Localizable.strings
@@ -4481,7 +4481,8 @@ Any member of this group will be able to see messages in the channel.";
"Chat.SlowmodeTooltip" = "Slowmode is enabled. You can send\nyour next message in %@.";
"Chat.SlowmodeTooltipPending" = "Slowmode is enabled. You can't send more than one message at once.";
-"Chat.AttachmentLimitExceeded" = "Slowmode is enabled. You can't select more items.";
+"Chat.AttachmentLimitReached" = "You can't select more items.";
+"Chat.SlowmodeAttachmentLimitReached" = "Slowmode is enabled. You can't select more items.";
"Chat.AttachmentMultipleFilesDisabled" = "Slowmode is enabled. You can't send multiple files at once.";
"Chat.AttachmentMultipleForwardDisabled" = "Slowmode is enabled. You can't forward multiple messages at once.";
"Chat.MultipleTextMessagesDisabled" = "Slowmode is enabled. You can't send multiple messages at once.";
@@ -4653,3 +4654,5 @@ Any member of this group will be able to see messages in the channel.";
"Appearance.ThemePreview.Chat.3.Text" = "Twenty years from now you will be more disappointed by the things that you didn't do than by the ones you did do, so throw off the bowlines, sail away from safe harboor, catch the trade winds in your sails.";
"Appearance.ThemePreview.Chat.4.Text" = "Nearly missed the sunrise.";
+
+"GroupInfo.Permissions.SlowmodeValue.Off" = "Off";
diff --git a/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj b/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj
index e4a5d654e9..b265aed4b3 100644
--- a/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/AccountContext/AccountContext_Xcode.xcodeproj/project.pbxproj
@@ -36,6 +36,7 @@
D0C9C3D72300CC2500FAB518 /* FetchMediaUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3D62300CC2400FAB518 /* FetchMediaUtils.swift */; };
D0C9C3D92300CC6000FAB518 /* IsMediaStreamable.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9C3D82300CC6000FAB518 /* IsMediaStreamable.swift */; };
D0C9CA8A2302314400FAB518 /* ContactSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CA892302314400FAB518 /* ContactSelectionController.swift */; };
+ D0C9CB842302B4B900FAB518 /* StoredMessageFromSearchPeer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB832302B4B900FAB518 /* StoredMessageFromSearchPeer.swift */; };
D0D3285422F329A900D07EE2 /* AccountContext.h in Headers */ = {isa = PBXBuildFile; fileRef = D0D3285222F329A900D07EE2 /* AccountContext.h */; settings = {ATTRIBUTES = (Public, ); }; };
D0D3285F22F335B000D07EE2 /* AccountContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0D3285E22F335B000D07EE2 /* AccountContext.swift */; };
D0D3289D22F3461700D07EE2 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0D3289C22F3461700D07EE2 /* Foundation.framework */; };
@@ -75,6 +76,7 @@
D0C9C3D62300CC2400FAB518 /* FetchMediaUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchMediaUtils.swift; sourceTree = ""; };
D0C9C3D82300CC6000FAB518 /* IsMediaStreamable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = IsMediaStreamable.swift; sourceTree = ""; };
D0C9CA892302314400FAB518 /* ContactSelectionController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContactSelectionController.swift; sourceTree = ""; };
+ D0C9CB832302B4B900FAB518 /* StoredMessageFromSearchPeer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoredMessageFromSearchPeer.swift; sourceTree = ""; };
D0D3284F22F329A900D07EE2 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0D3285222F329A900D07EE2 /* AccountContext.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AccountContext.h; sourceTree = ""; };
D0D3285322F329A900D07EE2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -152,6 +154,7 @@
D0C9C3D62300CC2400FAB518 /* FetchMediaUtils.swift */,
D0C9C3D82300CC6000FAB518 /* IsMediaStreamable.swift */,
D0C9CA892302314400FAB518 /* ContactSelectionController.swift */,
+ D0C9CB832302B4B900FAB518 /* StoredMessageFromSearchPeer.swift */,
);
path = Sources;
sourceTree = "";
@@ -255,6 +258,7 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
+ D0C9CB842302B4B900FAB518 /* StoredMessageFromSearchPeer.swift in Sources */,
D0879B6122F7A7A600C4D6B3 /* UniversalVideoNode.swift in Sources */,
D0879A4E22F65B2A00C4D6B3 /* MediaManager.swift in Sources */,
D0879A4A22F6584B00C4D6B3 /* SharedMediaPlayer.swift in Sources */,
diff --git a/submodules/AccountContext/Sources/AccountContext.swift b/submodules/AccountContext/Sources/AccountContext.swift
index 7b8e3df112..40d7dc4f6c 100644
--- a/submodules/AccountContext/Sources/AccountContext.swift
+++ b/submodules/AccountContext/Sources/AccountContext.swift
@@ -367,6 +367,8 @@ public final class ContactSelectionControllerParams {
}
}
+public let defaultContactLabel: String = "_$!!$_"
+
public protocol SharedAccountContext: class {
var basePath: String { get }
var mainWindow: Window1? { get }
@@ -405,13 +407,17 @@ public protocol SharedAccountContext: class {
func makePeerInfoController(context: AccountContext, peer: Peer, mode: PeerInfoControllerMode) -> ViewController?
func makeDeviceContactInfoController(context: AccountContext, subject: DeviceContactInfoSubject, completed: (() -> Void)?, cancelled: (() -> Void)?) -> ViewController
func makePeersNearbyController(context: AccountContext) -> ViewController
+ func makeComposeController(context: AccountContext) -> ViewController
func makeChatController(context: AccountContext, chatLocation: ChatLocation, subject: ChatControllerSubject?, botStart: ChatControllerInitialBotStart?, mode: ChatControllerPresentationMode) -> ChatController
func makeContactSelectionController(_ params: ContactSelectionControllerParams) -> ContactSelectionController
+ func makeProxySettingsController(context: AccountContext) -> ViewController
+ func makeLocalizationListController(context: AccountContext) -> ViewController
func navigateToChatController(_ params: NavigateToChatControllerParams)
func openExternalUrl(context: AccountContext, urlContext: OpenURLContext, url: String, forceExternal: Bool, presentationData: PresentationData, navigationController: NavigationController?, dismissInput: @escaping () -> Void)
func chatAvailableMessageActions(postbox: Postbox, accountPeerId: PeerId, messageIds: Set) -> Signal
func resolveUrl(account: Account, url: String) -> Signal
func openResolvedUrl(_ resolvedUrl: ResolvedUrl, context: AccountContext, urlContext: OpenURLContext, navigationController: NavigationController?, openPeer: @escaping (PeerId, ChatControllerInteractionNavigateToPeer) -> Void, sendFile: ((FileMediaReference) -> Void)?, sendSticker: ((FileMediaReference, ASDisplayNode, CGRect) -> Bool)?, present: @escaping (ViewController, Any?) -> Void, dismissInput: @escaping () -> Void)
+ func openAddContact(context: AccountContext, firstName: String, lastName: String, phoneNumber: String, label: String, present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void)
func presentContactsWarningSuppression(context: AccountContext, present: (ViewController, Any?) -> Void)
func navigateToCurrentCall()
diff --git a/submodules/AccountContext/Sources/ChatController.swift b/submodules/AccountContext/Sources/ChatController.swift
index 00f8172a2f..598493f70c 100644
--- a/submodules/AccountContext/Sources/ChatController.swift
+++ b/submodules/AccountContext/Sources/ChatController.swift
@@ -246,6 +246,34 @@ public enum ChatControllerPresentationMode: Equatable {
case inline
}
+public final class ChatEmbeddedInterfaceState: PeerChatListEmbeddedInterfaceState {
+ public let timestamp: Int32
+ public let text: NSAttributedString
+
+ public init(timestamp: Int32, text: NSAttributedString) {
+ self.timestamp = timestamp
+ self.text = text
+ }
+
+ public init(decoder: PostboxDecoder) {
+ self.timestamp = decoder.decodeInt32ForKey("d", orElse: 0)
+ self.text = ((decoder.decodeObjectForKey("at", decoder: { ChatTextInputStateText(decoder: $0) }) as? ChatTextInputStateText) ?? ChatTextInputStateText()).attributedText()
+ }
+
+ public func encode(_ encoder: PostboxEncoder) {
+ encoder.encodeInt32(self.timestamp, forKey: "d")
+ encoder.encodeObject(ChatTextInputStateText(attributedText: self.text), forKey: "at")
+ }
+
+ public func isEqual(to: PeerChatListEmbeddedInterfaceState) -> Bool {
+ if let to = to as? ChatEmbeddedInterfaceState {
+ return self.timestamp == to.timestamp && self.text.isEqual(to: to.text)
+ } else {
+ return false
+ }
+ }
+}
+
public protocol ChatController: ViewController {
var chatLocation: ChatLocation { get }
var canReadHistory: ValuePromise { get }
diff --git a/submodules/TelegramUI/TelegramUI/StoredMessageFromSearchPeer.swift b/submodules/AccountContext/Sources/StoredMessageFromSearchPeer.swift
similarity index 89%
rename from submodules/TelegramUI/TelegramUI/StoredMessageFromSearchPeer.swift
rename to submodules/AccountContext/Sources/StoredMessageFromSearchPeer.swift
index f094ef2417..01deab5599 100644
--- a/submodules/TelegramUI/TelegramUI/StoredMessageFromSearchPeer.swift
+++ b/submodules/AccountContext/Sources/StoredMessageFromSearchPeer.swift
@@ -3,7 +3,7 @@ import Postbox
import TelegramCore
import SwiftSignalKit
-func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal {
+public func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal {
return account.postbox.transaction { transaction -> PeerId in
if transaction.getPeer(peer.id) == nil {
updatePeers(transaction: transaction, peers: [peer], update: { previousPeer, updatedPeer in
@@ -17,7 +17,7 @@ func storedMessageFromSearchPeer(account: Account, peer: Peer) -> Signal Signal {
+public func storedMessageFromSearch(account: Account, message: Message) -> Signal {
return account.postbox.transaction { transaction -> Void in
if transaction.getMessage(message.id) == nil {
for (_, peer) in message.peers {
@@ -35,7 +35,7 @@ func storedMessageFromSearch(account: Account, message: Message) -> Signal
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ChatListController.swift b/submodules/ChatListUI/Sources/ChatListController.swift
similarity index 98%
rename from submodules/TelegramUI/TelegramUI/ChatListController.swift
rename to submodules/ChatListUI/Sources/ChatListController.swift
index ceaf9dddbb..d7d29afae8 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListController.swift
+++ b/submodules/ChatListUI/Sources/ChatListController.swift
@@ -13,6 +13,8 @@ import AlertUI
import UndoUI
import TelegramNotices
import SearchUI
+import DeleteChatPeerActionSheetItem
+import LanguageSuggestionUI
public func useSpecialTabBarIcons() -> Bool {
return (Date(timeIntervalSince1970: 1545642000)...Date(timeIntervalSince1970: 1546387200)).contains(Date())
@@ -65,7 +67,7 @@ private func fixListNodeScrolling(_ listNode: ListView, searchNode: NavigationBa
public class ChatListController: TelegramBaseController, UIViewControllerPreviewingDelegate {
private var validLayout: ContainerViewLayout?
- let context: AccountContext
+ public let context: AccountContext
private let controlsHistoryPreload: Bool
private let hideNetworkActivityStatus: Bool
@@ -109,7 +111,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool = false) {
+ public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, hideNetworkActivityStatus: Bool = false, enableDebugActions: Bool) {
self.context = context
self.controlsHistoryPreload = controlsHistoryPreload
self.hideNetworkActivityStatus = hideNetworkActivityStatus
@@ -324,7 +326,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.titleView.openProxySettings = { [weak self] in
if let strongSelf = self {
- (strongSelf.navigationController as? NavigationController)?.pushViewController(proxySettingsController(context: context))
+ (strongSelf.navigationController as? NavigationController)?.pushViewController(context.sharedContext.makeProxySettingsController(context: context))
}
}
@@ -349,7 +351,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.searchContentNode?.updateExpansionProgress(0.0)
self.navigationBar?.setContentNode(self.searchContentNode, animated: false)
- if !GlobalExperimentalSettings.isAppStoreBuild {
+ if enableDebugActions {
self.tabBarItemDebugTapAction = {
preconditionFailure("debug tap")
}
@@ -709,7 +711,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.chatListDisplayNode.chatListNode.groupSelected = { [weak self] groupId in
if let strongSelf = self {
if let navigationController = strongSelf.navigationController as? NavigationController {
- let chatListController = ChatListController(context: strongSelf.context, groupId: groupId, controlsHistoryPreload: false)
+ let chatListController = ChatListController(context: strongSelf.context, groupId: groupId, controlsHistoryPreload: false, enableDebugActions: false)
navigationController.pushViewController(chatListController)
strongSelf.chatListDisplayNode.chatListNode.clearHighlightAnimated(true)
}
@@ -815,7 +817,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
self.chatListDisplayNode.requestAddContact = { [weak self] phoneNumber in
if let strongSelf = self {
strongSelf.view.endEditing(true)
- openAddContact(context: strongSelf.context, phoneNumber: phoneNumber, present: { [weak self] controller, arguments in
+ strongSelf.context.sharedContext.openAddContact(context: strongSelf.context, firstName: "", lastName: "", phoneNumber: phoneNumber, label: defaultContactLabel, present: { [weak self] controller, arguments in
self?.present(controller, in: .window(.root), with: arguments)
}, pushController: { [weak self] controller in
(self?.navigationController as? NavigationController)?.pushViewController(controller)
@@ -1042,7 +1044,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
if let controller = languageSuggestionController(context: strongSelf.context, suggestedLocalization: suggestedLocalization, currentLanguageCode: currentLanguageCode, openSelection: { [weak self] in
if let strongSelf = self {
- let controller = LocalizationListController(context: strongSelf.context)
+ let controller = strongSelf.context.sharedContext.makeLocalizationListController(context: strongSelf.context)
(strongSelf.navigationController as? NavigationController)?.pushViewController(controller)
}
}) {
@@ -1114,7 +1116,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
super.navigationStackConfigurationUpdated(next: next)
}
- @objc func editPressed() {
+ @objc private func editPressed() {
let editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Done, style: .done, target: self, action: #selector(self.donePressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Done
if case .root = self.groupId {
@@ -1134,7 +1136,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- @objc func donePressed() {
+ @objc private func donePressed() {
let editItem = UIBarButtonItem(title: self.presentationData.strings.Common_Edit, style: .plain, target: self, action: #selector(self.editPressed))
editItem.accessibilityLabel = self.presentationData.strings.Common_Edit
if case .root = self.groupId {
@@ -1153,7 +1155,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- func activateSearch() {
+ public func activateSearch() {
if self.displayNavigationBar {
let _ = (self.chatListDisplayNode.chatListNode.ready
|> take(1)
@@ -1172,7 +1174,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- func deactivateSearch(animated: Bool) {
+ public func deactivateSearch(animated: Bool) {
if !self.displayNavigationBar {
self.setDisplayNavigationBar(true, transition: animated ? .animated(duration: 0.5, curve: .spring) : .immediate)
if let searchContentNode = self.searchContentNode {
@@ -1181,8 +1183,8 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- @objc func composePressed() {
- (self.navigationController as? NavigationController)?.replaceAllButRootController(ComposeController(context: self.context), animated: true)
+ @objc public func composePressed() {
+ (self.navigationController as? NavigationController)?.replaceAllButRootController(self.context.sharedContext.makeComposeController(context: self.context), animated: true)
}
public func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
@@ -1218,7 +1220,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
sourceRect = CGRect(x: sourceRect.minX, y: sourceRect.minY + bounds.minY, width: bounds.width, height: bounds.height)
sourceRect.size.height -= UIScreenPixel
- let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(peerId), mode: .standard(previewing: true))
+ let chatController = self.context.sharedContext.makeChatController(context: self.context, chatLocation: .peer(peerId), subject: nil, botStart: nil, mode: .standard(previewing: true))
chatController.canReadHistory.set(false)
chatController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate)
return (chatController, sourceRect)
@@ -1227,7 +1229,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
sourceRect = CGRect(x: sourceRect.minX, y: sourceRect.minY + bounds.minY, width: bounds.width, height: bounds.height)
sourceRect.size.height -= UIScreenPixel
- let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(messageId.peerId), subject: .message(messageId), mode: .standard(previewing: true))
+ let chatController = self.context.sharedContext.makeChatController(context: self.context, chatLocation: .peer(messageId.peerId), subject: .message(messageId), botStart: nil, mode: .standard(previewing: true))
chatController.canReadHistory.set(false)
chatController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate)
return (chatController, sourceRect)
@@ -1250,7 +1252,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
switch item.content {
case let .peer(_, peer, _, _, _, _, _, _, _, _):
if peer.peerId.namespace != Namespaces.Peer.SecretChat {
- let chatController = ChatControllerImpl(context: self.context, chatLocation: .peer(peer.peerId), mode: .standard(previewing: true))
+ let chatController = self.context.sharedContext.makeChatController(context: self.context, chatLocation: .peer(peer.peerId), subject: nil, botStart: nil, mode: .standard(previewing: true))
chatController.canReadHistory.set(false)
chatController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate)
return (chatController, sourceRect)
@@ -1258,7 +1260,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
return nil
}
case let .groupReference(groupId, _, _, _, _):
- let chatListController = ChatListController(context: self.context, groupId: groupId, controlsHistoryPreload: false)
+ let chatListController = ChatListController(context: self.context, groupId: groupId, controlsHistoryPreload: false, enableDebugActions: false)
chatListController.containerLayoutUpdated(ContainerViewLayout(size: contentSize, metrics: LayoutMetrics(), intrinsicInsets: UIEdgeInsets(), safeInsets: UIEdgeInsets(), statusBarHeight: nil, inputHeight: nil, standardInputHeight: 216.0, inputHeightIsInteractivellyChanging: false, inVoiceOver: false), transition: .immediate)
return (chatListController, sourceRect)
}
@@ -1273,7 +1275,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
func previewingCommit(_ viewControllerToCommit: UIViewController) {
if let viewControllerToCommit = viewControllerToCommit as? ViewController {
- if let chatController = viewControllerToCommit as? ChatControllerImpl {
+ if let chatController = viewControllerToCommit as? ChatController {
chatController.canReadHistory.set(true)
chatController.updatePresentationMode(.standard(previewing: false))
if let navigationController = self.navigationController as? NavigationController {
@@ -1446,7 +1448,7 @@ public class ChatListController: TelegramBaseController, UIViewControllerPreview
}
}
- func maybeAskForPeerChatRemoval(peer: RenderedPeer, deleteGloballyIfPossible: Bool = false, completion: @escaping (Bool) -> Void, removed: @escaping () -> Void) {
+ public func maybeAskForPeerChatRemoval(peer: RenderedPeer, deleteGloballyIfPossible: Bool = false, completion: @escaping (Bool) -> Void, removed: @escaping () -> Void) {
guard let chatPeer = peer.peers[peer.peerId], let mainPeer = peer.chatMainPeer else {
completion(false)
return
diff --git a/submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift b/submodules/ChatListUI/Sources/ChatListControllerNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListControllerNode.swift
rename to submodules/ChatListUI/Sources/ChatListControllerNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift b/submodules/ChatListUI/Sources/ChatListEmptyNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListEmptyNode.swift
rename to submodules/ChatListUI/Sources/ChatListEmptyNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift b/submodules/ChatListUI/Sources/ChatListRecentPeersListItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListRecentPeersListItem.swift
rename to submodules/ChatListUI/Sources/ChatListRecentPeersListItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift b/submodules/ChatListUI/Sources/ChatListSearchContainerNode.swift
similarity index 96%
rename from submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift
rename to submodules/ChatListUI/Sources/ChatListSearchContainerNode.swift
index e9586d9321..31b9d455d2 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListSearchContainerNode.swift
+++ b/submodules/ChatListUI/Sources/ChatListSearchContainerNode.swift
@@ -178,13 +178,13 @@ private enum ChatListRecentEntry: Comparable, Identifiable {
}
}
-enum ChatListSearchEntryStableId: Hashable {
+public enum ChatListSearchEntryStableId: Hashable {
case localPeerId(PeerId)
case globalPeerId(PeerId)
case messageId(MessageId)
case addContact
- static func ==(lhs: ChatListSearchEntryStableId, rhs: ChatListSearchEntryStableId) -> Bool {
+ public static func ==(lhs: ChatListSearchEntryStableId, rhs: ChatListSearchEntryStableId) -> Bool {
switch lhs {
case let .localPeerId(peerId):
if case .localPeerId(peerId) = rhs {
@@ -214,13 +214,13 @@ enum ChatListSearchEntryStableId: Hashable {
}
}
-enum ChatListSearchEntry: Comparable, Identifiable {
+public enum ChatListSearchEntry: Comparable, Identifiable {
case localPeer(Peer, Peer?, (Int32, Bool)?, Int, PresentationTheme, PresentationStrings, PresentationPersonNameOrder, PresentationPersonNameOrder)
case globalPeer(FoundPeer, (Int32, Bool)?, Int, PresentationTheme, PresentationStrings, PresentationPersonNameOrder, PresentationPersonNameOrder)
case message(Message, RenderedPeer, CombinedPeerReadState?, ChatListPresentationData)
case addContact(String, PresentationTheme, PresentationStrings)
- var stableId: ChatListSearchEntryStableId {
+ public var stableId: ChatListSearchEntryStableId {
switch self {
case let .localPeer(peer, _, _, _, _, _, _, _):
return .localPeerId(peer.id)
@@ -233,7 +233,7 @@ enum ChatListSearchEntry: Comparable, Identifiable {
}
}
- static func ==(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
+ public static func ==(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
switch lhs {
case let .localPeer(lhsPeer, lhsAssociatedPeer, lhsUnreadBadge, lhsIndex, lhsTheme, lhsStrings, lhsSortOrder, lhsDisplayOrder):
if case let .localPeer(rhsPeer, rhsAssociatedPeer, rhsUnreadBadge, rhsIndex, rhsTheme, rhsStrings, rhsSortOrder, rhsDisplayOrder) = rhs, lhsPeer.isEqual(rhsPeer) && arePeersEqual(lhsAssociatedPeer, rhsAssociatedPeer) && lhsIndex == rhsIndex && lhsTheme === rhsTheme && lhsStrings === rhsStrings && lhsSortOrder == rhsSortOrder && lhsDisplayOrder == rhsDisplayOrder && lhsUnreadBadge?.0 == rhsUnreadBadge?.0 && lhsUnreadBadge?.1 == rhsUnreadBadge?.1 {
@@ -286,7 +286,7 @@ enum ChatListSearchEntry: Comparable, Identifiable {
}
}
- static func <(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
+ public static func <(lhs: ChatListSearchEntry, rhs: ChatListSearchEntry) -> Bool {
switch lhs {
case let .localPeer(_, _, _, lhsIndex, _, _, _, _):
if case let .localPeer(_, _, _, rhsIndex, _, _, _, _) = rhs {
@@ -316,7 +316,7 @@ enum ChatListSearchEntry: Comparable, Identifiable {
}
}
- func item(context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ListViewItem {
+ public func item(context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ListViewItem {
switch self {
case let .localPeer(peer, associatedPeer, unreadBadge, _, theme, strings, nameSortOrder, nameDisplayOrder):
let primaryPeer: Peer
@@ -433,11 +433,18 @@ private struct ChatListSearchContainerRecentTransition {
let updates: [ListViewUpdateItem]
}
-struct ChatListSearchContainerTransition {
- let deletions: [ListViewDeleteItem]
- let insertions: [ListViewInsertItem]
- let updates: [ListViewUpdateItem]
- let displayingResults: Bool
+public struct ChatListSearchContainerTransition {
+ public let deletions: [ListViewDeleteItem]
+ public let insertions: [ListViewInsertItem]
+ public let updates: [ListViewUpdateItem]
+ public let displayingResults: Bool
+
+ public init(deletions: [ListViewDeleteItem], insertions: [ListViewInsertItem], updates: [ListViewUpdateItem], displayingResults: Bool) {
+ self.deletions = deletions
+ self.insertions = insertions
+ self.updates = updates
+ self.displayingResults = displayingResults
+ }
}
private func chatListSearchContainerPreparedRecentTransition(from fromEntries: [ChatListRecentEntry], to toEntries: [ChatListRecentEntry], context: AccountContext, filter: ChatListNodePeersFilter, peerSelected: @escaping (Peer) -> Void, peerLongTapped: @escaping (Peer) -> Void, clearRecentlySearchedPeers: @escaping () -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, deletePeer: @escaping (PeerId) -> Void) -> ChatListSearchContainerRecentTransition {
@@ -450,7 +457,7 @@ private func chatListSearchContainerPreparedRecentTransition(from fromEntries: [
return ChatListSearchContainerRecentTransition(deletions: deletions, insertions: insertions, updates: updates)
}
-func chatListSearchContainerPreparedTransition(from fromEntries: [ChatListSearchEntry], to toEntries: [ChatListSearchEntry], displayingResults: Bool, context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ChatListSearchContainerTransition {
+public func chatListSearchContainerPreparedTransition(from fromEntries: [ChatListSearchEntry], to toEntries: [ChatListSearchEntry], displayingResults: Bool, context: AccountContext, enableHeaders: Bool, filter: ChatListNodePeersFilter, interaction: ChatListNodeInteraction) -> ChatListSearchContainerTransition {
let (deleteIndices, indicesAndItems, updateIndices) = mergeListsStableWithUpdates(leftList: fromEntries, rightList: toEntries)
let deletions = deleteIndices.map { ListViewDeleteItem(index: $0, directionHint: nil) }
@@ -510,7 +517,7 @@ private struct ChatListSearchMessagesContext {
let loadMoreIndex: MessageIndex?
}
-final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
+public final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
private let context: AccountContext
private let recentListNode: ListView
@@ -534,13 +541,13 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
private let statePromise: ValuePromise
private let _isSearching = ValuePromise(false, ignoreRepeated: true)
- override var isSearching: Signal {
+ override public var isSearching: Signal {
return self._isSearching.get()
}
private let filter: ChatListNodePeersFilter
- init(context: AccountContext, filter: ChatListNodePeersFilter, groupId: PeerGroupId, openPeer: @escaping (Peer, Bool) -> Void, openRecentPeerOptions: @escaping (Peer) -> Void, openMessage: @escaping (Peer, MessageId) -> Void, addContact: ((String) -> Void)?) {
+ public init(context: AccountContext, filter: ChatListNodePeersFilter, groupId: PeerGroupId, openPeer: @escaping (Peer, Bool) -> Void, openRecentPeerOptions: @escaping (Peer) -> Void, openMessage: @escaping (Peer, MessageId) -> Void, addContact: ((String) -> Void)?) {
self.context = context
self.filter = filter
self.dimNode = ASDisplayNode()
@@ -974,12 +981,12 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func didLoad() {
+ override public func didLoad() {
super.didLoad()
self.dimNode.view.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(self.dimTapGesture(_:))))
}
- @objc func dimTapGesture(_ recognizer: UITapGestureRecognizer) {
+ @objc private func dimTapGesture(_ recognizer: UITapGestureRecognizer) {
if case .ended = recognizer.state {
self.cancel?()
}
@@ -1007,7 +1014,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func searchTextUpdated(text: String) {
+ override public func searchTextUpdated(text: String) {
if text.isEmpty {
self.searchQuery.set(.single(nil))
} else {
@@ -1072,7 +1079,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
+ override public func containerLayoutUpdated(_ layout: ContainerViewLayout, navigationBarHeight: CGFloat, transition: ContainedViewLayoutTransition) {
super.containerLayoutUpdated(layout, navigationBarHeight: navigationBarHeight, transition: transition)
let hadValidLayout = self.validLayout != nil
@@ -1120,7 +1127,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
}
}
- override func previewViewAndActionAtLocation(_ location: CGPoint) -> (UIView, CGRect, Any)? {
+ override public func previewViewAndActionAtLocation(_ location: CGPoint) -> (UIView, CGRect, Any)? {
var selectedItemNode: ASDisplayNode?
var bounds: CGRect
if !self.recentListNode.isHidden {
@@ -1170,7 +1177,7 @@ final class ChatListSearchContainerNode: SearchDisplayControllerContentNode {
|> deliverOnMainQueue).start()
}
- override func scrollToTop() {
+ override public func scrollToTop() {
if !self.listNode.isHidden {
self.listNode.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: ListViewScrollToItem(index: 0, position: .top(0.0), animated: true, curve: .Default(duration: nil), directionHint: .Up), updateSizeAndInsets: nil, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in })
} else {
diff --git a/submodules/TelegramUI/TelegramUI/ChatListSelection.swift b/submodules/ChatListUI/Sources/ChatListSelection.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListSelection.swift
rename to submodules/ChatListUI/Sources/ChatListSelection.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift b/submodules/ChatListUI/Sources/ChatListTitleLockView.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListTitleLockView.swift
rename to submodules/ChatListUI/Sources/ChatListTitleLockView.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift b/submodules/ChatListUI/Sources/ChatListTitleProxyNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListTitleProxyNode.swift
rename to submodules/ChatListUI/Sources/ChatListTitleProxyNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTitleView.swift b/submodules/ChatListUI/Sources/ChatListTitleView.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListTitleView.swift
rename to submodules/ChatListUI/Sources/ChatListTitleView.swift
diff --git a/submodules/ChatListUI/Sources/ChatListUI.h b/submodules/ChatListUI/Sources/ChatListUI.h
new file mode 100644
index 0000000000..4a3e46fa3c
--- /dev/null
+++ b/submodules/ChatListUI/Sources/ChatListUI.h
@@ -0,0 +1,19 @@
+//
+// ChatListUI.h
+// ChatListUI
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for ChatListUI.
+FOUNDATION_EXPORT double ChatListUIVersionNumber;
+
+//! Project version string for ChatListUI.
+FOUNDATION_EXPORT const unsigned char ChatListUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/ChatListUI/Sources/FrameworkBundle.swift b/submodules/ChatListUI/Sources/FrameworkBundle.swift
new file mode 100644
index 0000000000..8ca13d7d92
--- /dev/null
+++ b/submodules/ChatListUI/Sources/FrameworkBundle.swift
@@ -0,0 +1,13 @@
+import Foundation
+import UIKit
+
+private class FrameworkBundleClass: NSObject {
+}
+
+let frameworkBundle: Bundle = Bundle(for: FrameworkBundleClass.self)
+
+extension UIImage {
+ convenience init?(bundleImageName: String) {
+ self.init(named: bundleImageName, in: frameworkBundle, compatibleWith: nil)
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift b/submodules/ChatListUI/Sources/Node/ChatListArchiveInfoItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListArchiveInfoItem.swift
rename to submodules/ChatListUI/Sources/Node/ChatListArchiveInfoItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListBadgeNode.swift b/submodules/ChatListUI/Sources/Node/ChatListBadgeNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListBadgeNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListBadgeNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift b/submodules/ChatListUI/Sources/Node/ChatListHoleItem.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListHoleItem.swift
rename to submodules/ChatListUI/Sources/Node/ChatListHoleItem.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListItem.swift b/submodules/ChatListUI/Sources/Node/ChatListItem.swift
similarity index 97%
rename from submodules/TelegramUI/TelegramUI/ChatListItem.swift
rename to submodules/ChatListUI/Sources/Node/ChatListItem.swift
index 513d6122f0..5fb4d03f4f 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListItem.swift
+++ b/submodules/ChatListUI/Sources/Node/ChatListItem.swift
@@ -16,11 +16,11 @@ import PeerPresenceStatusManager
import PhotoResources
import ChatListSearchItemNode
-enum ChatListItemContent {
+public enum ChatListItemContent {
case peer(message: Message?, peer: RenderedPeer, combinedReadState: CombinedPeerReadState?, notificationSettings: PeerNotificationSettings?, presence: PeerPresence?, summaryInfo: ChatListMessageTagSummaryInfo, embeddedState: PeerChatListEmbeddedInterfaceState?, inputActivities: [(Peer, PeerInputActivity)]?, isAd: Bool, ignoreUnreadBadge: Bool)
case groupReference(groupId: PeerGroupId, peers: [ChatListGroupReferencePeer], message: Message?, unreadState: PeerGroupUnreadCountersCombinedSummary, hiddenByDefault: Bool)
- var chatLocation: ChatLocation? {
+ public var chatLocation: ChatLocation? {
switch self {
case let .peer(_, peer, _, _, _, _, _, _, _, _):
return .peer(peer.peerId)
@@ -30,7 +30,7 @@ enum ChatListItemContent {
}
}
-class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
+public class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
let presentationData: ChatListPresentationData
let context: AccountContext
let peerGroupId: PeerGroupId
@@ -43,19 +43,19 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
let hiddenOffset: Bool
let interaction: ChatListNodeInteraction
- let selectable: Bool = true
+ public let selectable: Bool = true
- var approximateHeight: CGFloat {
+ public var approximateHeight: CGFloat {
return self.hiddenOffset ? 0.0 : 44.0
}
let header: ListViewItemHeader?
- var isPinned: Bool {
+ public var isPinned: Bool {
return self.index.pinningIndex != nil
}
- init(presentationData: ChatListPresentationData, context: AccountContext, peerGroupId: PeerGroupId, index: ChatListIndex, content: ChatListItemContent, editing: Bool, hasActiveRevealControls: Bool, selected: Bool, header: ListViewItemHeader?, enableContextActions: Bool, hiddenOffset: Bool, interaction: ChatListNodeInteraction) {
+ public init(presentationData: ChatListPresentationData, context: AccountContext, peerGroupId: PeerGroupId, index: ChatListIndex, content: ChatListItemContent, editing: Bool, hasActiveRevealControls: Bool, selected: Bool, header: ListViewItemHeader?, enableContextActions: Bool, hiddenOffset: Bool, interaction: ChatListNodeInteraction) {
self.presentationData = presentationData
self.peerGroupId = peerGroupId
self.context = context
@@ -70,7 +70,7 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
self.interaction = interaction
}
- func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal?, (ListViewItemApply) -> Void)) -> Void) {
+ public func nodeConfiguredForParams(async: @escaping (@escaping () -> Void) -> Void, params: ListViewItemLayoutParams, synchronousLoads: Bool, previousItem: ListViewItem?, nextItem: ListViewItem?, completion: @escaping (ListViewItemNode, @escaping () -> (Signal?, (ListViewItemApply) -> Void)) -> Void) {
async {
let node = ChatListItemNode()
let (first, last, firstWithHeader, nextIsPinned) = ChatListItem.mergeType(item: self, previousItem: previousItem, nextItem: nextItem)
@@ -93,7 +93,7 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
}
}
- func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
+ public func updateNode(async: @escaping (@escaping () -> Void) -> Void, node: @escaping () -> ListViewItemNode, params: ListViewItemLayoutParams, previousItem: ListViewItem?, nextItem: ListViewItem?, animation: ListViewItemUpdateAnimation, completion: @escaping (ListViewItemNodeLayout, @escaping (ListViewItemApply) -> Void) -> Void) {
Queue.mainQueue().async {
assert(node() is ChatListItemNode)
if let nodeValue = node() as? ChatListItemNode {
@@ -117,7 +117,7 @@ class ChatListItem: ListViewItem, ChatListSearchItemNeighbour {
}
}
- func selected(listView: ListView) {
+ public func selected(listView: ListView) {
switch self.content {
case let .peer(message, peer, _, _, _, _, _, _, isAd, _):
if let message = message, let peer = peer.peer {
@@ -295,7 +295,6 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
private let highlightedBackgroundNode: ASDisplayNode
let avatarNode: AvatarNode
- var multipleAvatarsNode: MultipleAvatarsNode?
let titleNode: TextNode
let authorNode: TextNode
let textNode: TextNode
@@ -1238,22 +1237,6 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
}
strongSelf.onlineNode.setImage(onlineIcon)
- /*if let multipleAvatarsApply = multipleAvatarsApply {
- strongSelf.avatarNode.isHidden = true
- let multipleAvatarsNode = multipleAvatarsApply(animated && strongSelf.multipleAvatarsNode != nil)
- if strongSelf.multipleAvatarsNode != multipleAvatarsNode {
- strongSelf.multipleAvatarsNode?.removeFromSupernode()
- strongSelf.multipleAvatarsNode = multipleAvatarsNode
- strongSelf.addSubnode(multipleAvatarsNode)
- multipleAvatarsNode.frame = avatarFrame
- } else {
- transition.updateFrame(node: multipleAvatarsNode, frame: avatarFrame)
- }
- } else if let multipleAvatarsNode = strongSelf.multipleAvatarsNode {
- multipleAvatarsNode.removeFromSupernode()
- strongSelf.avatarNode.isHidden = false
- }*/
-
let _ = dateApply()
let _ = textApply()
let _ = authorApply()
@@ -1544,9 +1527,6 @@ class ChatListItemNode: ItemListRevealOptionsItemNode {
var avatarFrame = self.avatarNode.frame
avatarFrame.origin.x = leftInset - 78.0 + editingOffset + 10.0 + offset
transition.updateFrame(node: self.avatarNode, frame: avatarFrame)
- if let multipleAvatarsNode = self.multipleAvatarsNode {
- transition.updateFrame(node: multipleAvatarsNode, frame: avatarFrame)
- }
var onlineFrame = self.onlineNode.frame
onlineFrame.origin.x = avatarFrame.maxX - onlineFrame.width - 2.0
diff --git a/submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift b/submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListItemStrings.swift
rename to submodules/ChatListUI/Sources/Node/ChatListItemStrings.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListNode.swift b/submodules/ChatListUI/Sources/Node/ChatListNode.swift
similarity index 93%
rename from submodules/TelegramUI/TelegramUI/ChatListNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListNode.swift
index bd9ffa68d6..99761c57a7 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListNode.swift
+++ b/submodules/ChatListUI/Sources/Node/ChatListNode.swift
@@ -35,7 +35,7 @@ public struct ChatListNodePeersFilter: OptionSet {
public static let includeSavedMessages = ChatListNodePeersFilter(rawValue: 1 << 11)
}
-enum ChatListNodeMode {
+public enum ChatListNodeMode {
case chatList
case peers(filter: ChatListNodePeersFilter)
}
@@ -64,7 +64,7 @@ final class ChatListHighlightedLocation {
}
}
-final class ChatListNodeInteraction {
+public final class ChatListNodeInteraction {
let activateSearch: () -> Void
let peerSelected: (Peer) -> Void
let togglePeerSelected: (PeerId) -> Void
@@ -81,7 +81,7 @@ final class ChatListNodeInteraction {
var highlightedChatLocation: ChatListHighlightedLocation?
- init(activateSearch: @escaping () -> Void, peerSelected: @escaping (Peer) -> Void, togglePeerSelected: @escaping (PeerId) -> Void, messageSelected: @escaping (Peer, Message, Bool) -> Void, groupSelected: @escaping (PeerGroupId) -> Void, addContact: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, setItemPinned: @escaping (PinnedItemId, Bool) -> Void, setPeerMuted: @escaping (PeerId, Bool) -> Void, deletePeer: @escaping (PeerId) -> Void, updatePeerGrouping: @escaping (PeerId, Bool) -> Void, togglePeerMarkedUnread: @escaping (PeerId, Bool) -> Void, toggleArchivedFolderHiddenByDefault: @escaping () -> Void) {
+ public init(activateSearch: @escaping () -> Void, peerSelected: @escaping (Peer) -> Void, togglePeerSelected: @escaping (PeerId) -> Void, messageSelected: @escaping (Peer, Message, Bool) -> Void, groupSelected: @escaping (PeerGroupId) -> Void, addContact: @escaping (String) -> Void, setPeerIdWithRevealedOptions: @escaping (PeerId?, PeerId?) -> Void, setItemPinned: @escaping (PinnedItemId, Bool) -> Void, setPeerMuted: @escaping (PeerId, Bool) -> Void, deletePeer: @escaping (PeerId) -> Void, updatePeerGrouping: @escaping (PeerId, Bool) -> Void, togglePeerMarkedUnread: @escaping (PeerId, Bool) -> Void, toggleArchivedFolderHiddenByDefault: @escaping () -> Void) {
self.activateSearch = activateSearch
self.peerSelected = peerSelected
self.togglePeerSelected = togglePeerSelected
@@ -98,25 +98,36 @@ final class ChatListNodeInteraction {
}
}
-final class ChatListNodePeerInputActivities {
- let activities: [PeerId: [(Peer, PeerInputActivity)]]
+public final class ChatListNodePeerInputActivities {
+ public let activities: [PeerId: [(Peer, PeerInputActivity)]]
- init(activities: [PeerId: [(Peer, PeerInputActivity)]]) {
+ public init(activities: [PeerId: [(Peer, PeerInputActivity)]]) {
self.activities = activities
}
}
-struct ChatListNodeState: Equatable {
- var presentationData: ChatListPresentationData
- var editing: Bool
- var peerIdWithRevealedOptions: PeerId?
- var selectedPeerIds: Set
- var peerInputActivities: ChatListNodePeerInputActivities?
- var pendingRemovalPeerIds: Set
- var pendingClearHistoryPeerIds: Set
- var archiveShouldBeTemporaryRevealed: Bool
+public struct ChatListNodeState: Equatable {
+ public var presentationData: ChatListPresentationData
+ public var editing: Bool
+ public var peerIdWithRevealedOptions: PeerId?
+ public var selectedPeerIds: Set
+ public var peerInputActivities: ChatListNodePeerInputActivities?
+ public var pendingRemovalPeerIds: Set
+ public var pendingClearHistoryPeerIds: Set
+ public var archiveShouldBeTemporaryRevealed: Bool
- static func ==(lhs: ChatListNodeState, rhs: ChatListNodeState) -> Bool {
+ public init(presentationData: ChatListPresentationData, editing: Bool, peerIdWithRevealedOptions: PeerId?, selectedPeerIds: Set, peerInputActivities: ChatListNodePeerInputActivities?, pendingRemovalPeerIds: Set, pendingClearHistoryPeerIds: Set, archiveShouldBeTemporaryRevealed: Bool) {
+ self.presentationData = presentationData
+ self.editing = editing
+ self.peerIdWithRevealedOptions = peerIdWithRevealedOptions
+ self.selectedPeerIds = selectedPeerIds
+ self.peerInputActivities = peerInputActivities
+ self.pendingRemovalPeerIds = pendingRemovalPeerIds
+ self.pendingClearHistoryPeerIds = pendingClearHistoryPeerIds
+ self.archiveShouldBeTemporaryRevealed = archiveShouldBeTemporaryRevealed
+ }
+
+ public static func ==(lhs: ChatListNodeState, rhs: ChatListNodeState) -> Bool {
if lhs.presentationData !== rhs.presentationData {
return false
}
@@ -277,14 +288,14 @@ private final class ChatListOpaqueTransactionState {
}
}
-enum ChatListSelectionOption {
+public enum ChatListSelectionOption {
case previous(unread: Bool)
case next(unread: Bool)
case peerId(PeerId)
case index(Int)
}
-enum ChatListGlobalScrollOption {
+public enum ChatListGlobalScrollOption {
case none
case top
case unread
@@ -295,18 +306,18 @@ private struct ChatListVisibleUnreadCounts: Equatable {
var filtered: Int32 = 0
}
-enum ChatListNodeScrollPosition {
+public enum ChatListNodeScrollPosition {
case auto
case autoUp
case top
}
-enum ChatListNodeEmptyState: Equatable {
+public enum ChatListNodeEmptyState: Equatable {
case notEmpty(containsChats: Bool)
case empty(isLoading: Bool)
}
-final class ChatListNode: ListView {
+public final class ChatListNode: ListView {
private let controlsHistoryPreload: Bool
private let context: AccountContext
private let groupId: PeerGroupId
@@ -314,18 +325,18 @@ final class ChatListNode: ListView {
private let _ready = ValuePromise()
private var didSetReady = false
- var ready: Signal {
+ public var ready: Signal {
return _ready.get()
}
- var peerSelected: ((PeerId, Bool, Bool) -> Void)?
- var groupSelected: ((PeerGroupId) -> Void)?
- var addContact: ((String) -> Void)?
- var activateSearch: (() -> Void)?
- var deletePeerChat: ((PeerId) -> Void)?
- var updatePeerGrouping: ((PeerId, Bool) -> Void)?
- var presentAlert: ((String) -> Void)?
- var toggleArchivedFolderHiddenByDefault: (() -> Void)?
+ public var peerSelected: ((PeerId, Bool, Bool) -> Void)?
+ public var groupSelected: ((PeerGroupId) -> Void)?
+ public var addContact: ((String) -> Void)?
+ public var activateSearch: (() -> Void)?
+ public var deletePeerChat: ((PeerId) -> Void)?
+ public var updatePeerGrouping: ((PeerId, Bool) -> Void)?
+ public var presentAlert: ((String) -> Void)?
+ public var toggleArchivedFolderHiddenByDefault: (() -> Void)?
private var theme: PresentationTheme
@@ -338,7 +349,7 @@ final class ChatListNode: ListView {
private(set) var currentState: ChatListNodeState
private let statePromise: ValuePromise
- var state: Signal {
+ public var state: Signal {
return self.statePromise.get()
}
@@ -348,7 +359,7 @@ final class ChatListNode: ListView {
private var activityStatusesDisposable: Disposable?
private let scrollToTopOptionPromise = Promise(.none)
- var scrollToTopOption: Signal {
+ public var scrollToTopOption: Signal {
return self.scrollToTopOptionPromise.get()
}
@@ -361,8 +372,8 @@ final class ChatListNode: ListView {
}
}
- var contentOffsetChanged: ((ListViewVisibleContentOffset) -> Void)?
- var contentScrollingEnded: ((ListView) -> Bool)?
+ public var contentOffsetChanged: ((ListViewVisibleContentOffset) -> Void)?
+ public var contentScrollingEnded: ((ListView) -> Bool)?
private let visibleUnreadCounts = ValuePromise(ChatListVisibleUnreadCounts())
private var visibleUnreadCountsValue = ChatListVisibleUnreadCounts() {
@@ -373,19 +384,19 @@ final class ChatListNode: ListView {
}
}
- var isEmptyUpdated: ((ChatListNodeEmptyState) -> Void)?
+ public var isEmptyUpdated: ((ChatListNodeEmptyState) -> Void)?
private var currentIsEmptyState: ChatListNodeEmptyState?
- var addedVisibleChatsWithPeerIds: (([PeerId]) -> Void)?
+ public var addedVisibleChatsWithPeerIds: (([PeerId]) -> Void)?
private let currentRemovingPeerId = Atomic(value: nil)
- func setCurrentRemovingPeerId(_ peerId: PeerId?) {
+ public func setCurrentRemovingPeerId(_ peerId: PeerId?) {
let _ = self.currentRemovingPeerId.swap(peerId)
}
private var hapticFeedback: HapticFeedback?
- init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, mode: ChatListNodeMode, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
+ public init(context: AccountContext, groupId: PeerGroupId, controlsHistoryPreload: Bool, mode: ChatListNodeMode, theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
self.context = context
self.groupId = groupId
self.controlsHistoryPreload = controlsHistoryPreload
@@ -1068,7 +1079,7 @@ final class ChatListNode: ListView {
self.activityStatusesDisposable?.dispose()
}
- func updateThemeAndStrings(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
+ public func updateThemeAndStrings(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
if theme !== self.currentState.presentationData.theme || strings !== self.currentState.presentationData.strings || dateTimeFormat != self.currentState.presentationData.dateTimeFormat || disableAnimations != self.currentState.presentationData.disableAnimations {
self.theme = theme
if self.keepTopItemOverscrollBackground != nil {
@@ -1084,7 +1095,7 @@ final class ChatListNode: ListView {
}
}
- func updateState(_ f: (ChatListNodeState) -> ChatListNodeState) {
+ public func updateState(_ f: (ChatListNodeState) -> ChatListNodeState) {
let state = f(self.currentState)
if state != self.currentState {
self.currentState = state
@@ -1222,7 +1233,7 @@ final class ChatListNode: ListView {
}
}
- func updateLayout(transition: ContainedViewLayoutTransition, updateSizeAndInsets: ListViewUpdateSizeAndInsets) {
+ public func updateLayout(transition: ContainedViewLayoutTransition, updateSizeAndInsets: ListViewUpdateSizeAndInsets) {
self.transaction(deleteIndices: [], insertIndicesAndItems: [], updateIndicesAndItems: [], options: [.Synchronous, .LowLatency], scrollToItem: nil, updateSizeAndInsets: updateSizeAndInsets, stationaryItemRange: nil, updateOpaqueState: nil, completion: { _ in })
if !self.dequeuedInitialTransitionOnLayout {
@@ -1231,7 +1242,7 @@ final class ChatListNode: ListView {
}
}
- func scrollToPosition(_ position: ChatListNodeScrollPosition) {
+ public func scrollToPosition(_ position: ChatListNodeScrollPosition) {
if let view = self.chatListView?.originalView {
if case .auto = position {
switch self.visibleContentOffset() {
@@ -1295,7 +1306,7 @@ final class ChatListNode: ListView {
|> switchToLatest
}
- func scrollToEarliestUnread(earlierThan: ChatListIndex?) {
+ public func scrollToEarliestUnread(earlierThan: ChatListIndex?) {
let _ = (relativeUnreadChatListIndex(position: .earlier(than: earlierThan)) |> deliverOnMainQueue).start(next: { [weak self] index in
guard let strongSelf = self else {
return
@@ -1313,7 +1324,7 @@ final class ChatListNode: ListView {
})
}
- func selectChat(_ option: ChatListSelectionOption) {
+ public func selectChat(_ option: ChatListSelectionOption) {
guard let interaction = self.interaction else {
return
}
@@ -1326,15 +1337,6 @@ final class ChatListNode: ListView {
return
}
-// if interaction.highlightedChatLocation == nil {
-// let location: ChatListNodeLocation = .scroll(index: ChatListIndex.absoluteUpperBound, sourceIndex: ChatListIndex.absoluteLowerBound
-// , scrollPosition: .top(0.0), animated: true)
-// self.currentLocation = location
-// self.chatListLocation.set(location)
-// //interaction.highlightedChatLocation = ChatListHighlightedLocation(location: .peer(0), progress: 1.0)
-// return
-// }
-
let entryCount = chatListView.filteredEntries.count
var current: (ChatListIndex, PeerId, Int)? = nil
var previous: (ChatListIndex, PeerId)? = nil
@@ -1421,10 +1423,9 @@ final class ChatListNode: ListView {
}
private func enqueueHistoryPreloadUpdate() {
-
}
- func updateSelectedChatLocation(_ chatLocation: ChatLocation?, progress: CGFloat, transition: ContainedViewLayoutTransition) {
+ public func updateSelectedChatLocation(_ chatLocation: ChatLocation?, progress: CGFloat, transition: ContainedViewLayoutTransition) {
guard let interaction = self.interaction else {
return
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift b/submodules/ChatListUI/Sources/Node/ChatListNodeEntries.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListNodeEntries.swift
rename to submodules/ChatListUI/Sources/Node/ChatListNodeEntries.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListNodeLocation.swift b/submodules/ChatListUI/Sources/Node/ChatListNodeLocation.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListNodeLocation.swift
rename to submodules/ChatListUI/Sources/Node/ChatListNodeLocation.swift
diff --git a/submodules/ChatListUI/Sources/Node/ChatListPresentationData.swift b/submodules/ChatListUI/Sources/Node/ChatListPresentationData.swift
new file mode 100644
index 0000000000..da0d405e97
--- /dev/null
+++ b/submodules/ChatListUI/Sources/Node/ChatListPresentationData.swift
@@ -0,0 +1,22 @@
+import Foundation
+import UIKit
+import TelegramPresentationData
+import TelegramUIPreferences
+
+public final class ChatListPresentationData {
+ public let theme: PresentationTheme
+ public let strings: PresentationStrings
+ public let dateTimeFormat: PresentationDateTimeFormat
+ public let nameSortOrder: PresentationPersonNameOrder
+ public let nameDisplayOrder: PresentationPersonNameOrder
+ public let disableAnimations: Bool
+
+ public init(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
+ self.theme = theme
+ self.strings = strings
+ self.dateTimeFormat = dateTimeFormat
+ self.nameSortOrder = nameSortOrder
+ self.nameDisplayOrder = nameDisplayOrder
+ self.disableAnimations = disableAnimations
+ }
+}
diff --git a/submodules/TelegramUI/TelegramUI/ChatListStatusNode.swift b/submodules/ChatListUI/Sources/Node/ChatListStatusNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListStatusNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListStatusNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift b/submodules/ChatListUI/Sources/Node/ChatListTypingNode.swift
similarity index 99%
rename from submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift
rename to submodules/ChatListUI/Sources/Node/ChatListTypingNode.swift
index 0b1603b462..5eeed83f05 100644
--- a/submodules/TelegramUI/TelegramUI/ChatListTypingNode.swift
+++ b/submodules/ChatListUI/Sources/Node/ChatListTypingNode.swift
@@ -6,6 +6,7 @@ import TelegramCore
import Display
import SwiftSignalKit
import TelegramPresentationData
+import ChatTitleActivityNode
private let textFont = Font.regular(15.0)
diff --git a/submodules/TelegramUI/TelegramUI/ChatListViewTransition.swift b/submodules/ChatListUI/Sources/Node/ChatListViewTransition.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatListViewTransition.swift
rename to submodules/ChatListUI/Sources/Node/ChatListViewTransition.swift
diff --git a/submodules/ChatTitleActivityNode/ChatTitleActivityNode_Xcode.xcodeproj/project.pbxproj b/submodules/ChatTitleActivityNode/ChatTitleActivityNode_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..8b694c308c
--- /dev/null
+++ b/submodules/ChatTitleActivityNode/ChatTitleActivityNode_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,583 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CB2C2302B02E00FAB518 /* ChatTitleActivityNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CB2A2302B02E00FAB518 /* ChatTitleActivityNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CB372302B0C400FAB518 /* ChatTitleActivityNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB362302B0C400FAB518 /* ChatTitleActivityNode.swift */; };
+ D0C9CB3A2302B0D800FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB392302B0D800FAB518 /* UIKit.framework */; };
+ D0C9CB3C2302B0DD00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB3B2302B0DD00FAB518 /* Foundation.framework */; };
+ D0C9CB3E2302B0DE00FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB3D2302B0DE00FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9CB402302B0E300FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB3F2302B0E300FAB518 /* Display.framework */; };
+ D0C9CB462302B19A00FAB518 /* ChatTitleActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB452302B19A00FAB518 /* ChatTitleActivityContentNode.swift */; };
+ D0C9CB482302B1A600FAB518 /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB472302B1A600FAB518 /* LegacyComponents.framework */; };
+ D0C9CB4E2302B22800FAB518 /* ChatTypingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB492302B22700FAB518 /* ChatTypingActivityContentNode.swift */; };
+ D0C9CB4F2302B22800FAB518 /* ChatPlayingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4A2302B22700FAB518 /* ChatPlayingActivityContentNode.swift */; };
+ D0C9CB502302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4B2302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift */; };
+ D0C9CB512302B22800FAB518 /* ChatUploadingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4C2302B22800FAB518 /* ChatUploadingActivityContentNode.swift */; };
+ D0C9CB522302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB4D2302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CB272302B02E00FAB518 /* ChatTitleActivityNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = ChatTitleActivityNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB2A2302B02E00FAB518 /* ChatTitleActivityNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ChatTitleActivityNode.h; sourceTree = ""; };
+ D0C9CB2B2302B02E00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CB362302B0C400FAB518 /* ChatTitleActivityNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityNode.swift; sourceTree = ""; };
+ D0C9CB392302B0D800FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CB3B2302B0DD00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CB3D2302B0DE00FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB3F2302B0E300FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB452302B19A00FAB518 /* ChatTitleActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB472302B1A600FAB518 /* LegacyComponents.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LegacyComponents.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB492302B22700FAB518 /* ChatTypingActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatTypingActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4A2302B22700FAB518 /* ChatPlayingActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatPlayingActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4B2302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatRecordingVideoActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4C2302B22800FAB518 /* ChatUploadingActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatUploadingActivityContentNode.swift; sourceTree = ""; };
+ D0C9CB4D2302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatRecordingVoiceActivityContentNode.swift; sourceTree = ""; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CB242302B02E00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB482302B1A600FAB518 /* LegacyComponents.framework in Frameworks */,
+ D0C9CB402302B0E300FAB518 /* Display.framework in Frameworks */,
+ D0C9CB3E2302B0DE00FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9CB3C2302B0DD00FAB518 /* Foundation.framework in Frameworks */,
+ D0C9CB3A2302B0D800FAB518 /* UIKit.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CB1D2302B02E00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB2B2302B02E00FAB518 /* Info.plist */,
+ D0C9CB292302B02E00FAB518 /* Sources */,
+ D0C9CB282302B02E00FAB518 /* Products */,
+ D0C9CB382302B0D500FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9CB282302B02E00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB272302B02E00FAB518 /* ChatTitleActivityNode.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CB292302B02E00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB4A2302B22700FAB518 /* ChatPlayingActivityContentNode.swift */,
+ D0C9CB4B2302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift */,
+ D0C9CB4D2302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift */,
+ D0C9CB492302B22700FAB518 /* ChatTypingActivityContentNode.swift */,
+ D0C9CB4C2302B22800FAB518 /* ChatUploadingActivityContentNode.swift */,
+ D0C9CB452302B19A00FAB518 /* ChatTitleActivityContentNode.swift */,
+ D0C9CB362302B0C400FAB518 /* ChatTitleActivityNode.swift */,
+ D0C9CB2A2302B02E00FAB518 /* ChatTitleActivityNode.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CB382302B0D500FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB472302B1A600FAB518 /* LegacyComponents.framework */,
+ D0C9CB3F2302B0E300FAB518 /* Display.framework */,
+ D0C9CB3D2302B0DE00FAB518 /* AsyncDisplayKit.framework */,
+ D0C9CB3B2302B0DD00FAB518 /* Foundation.framework */,
+ D0C9CB392302B0D800FAB518 /* UIKit.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CB222302B02E00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB2C2302B02E00FAB518 /* ChatTitleActivityNode.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CB262302B02E00FAB518 /* ChatTitleActivityNode */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CB2F2302B02E00FAB518 /* Build configuration list for PBXNativeTarget "ChatTitleActivityNode" */;
+ buildPhases = (
+ D0C9CB222302B02E00FAB518 /* Headers */,
+ D0C9CB232302B02E00FAB518 /* Sources */,
+ D0C9CB242302B02E00FAB518 /* Frameworks */,
+ D0C9CB252302B02E00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = ChatTitleActivityNode;
+ productName = ChatTitleActivityNode;
+ productReference = D0C9CB272302B02E00FAB518 /* ChatTitleActivityNode.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CB1E2302B02E00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CB262302B02E00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CB212302B02E00FAB518 /* Build configuration list for PBXProject "ChatTitleActivityNode_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CB1D2302B02E00FAB518;
+ productRefGroup = D0C9CB282302B02E00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CB262302B02E00FAB518 /* ChatTitleActivityNode */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CB252302B02E00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CB232302B02E00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB372302B0C400FAB518 /* ChatTitleActivityNode.swift in Sources */,
+ D0C9CB4F2302B22800FAB518 /* ChatPlayingActivityContentNode.swift in Sources */,
+ D0C9CB522302B22800FAB518 /* ChatRecordingVoiceActivityContentNode.swift in Sources */,
+ D0C9CB4E2302B22800FAB518 /* ChatTypingActivityContentNode.swift in Sources */,
+ D0C9CB462302B19A00FAB518 /* ChatTitleActivityContentNode.swift in Sources */,
+ D0C9CB512302B22800FAB518 /* ChatUploadingActivityContentNode.swift in Sources */,
+ D0C9CB502302B22800FAB518 /* ChatRecordingVideoActivityContentNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CB2D2302B02E00FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CB2E2302B02E00FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB302302B02E00FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ChatTitleActivityNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CB312302B02E00FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ChatTitleActivityNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB322302B05800FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CB332302B05800FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ChatTitleActivityNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CB342302B06400FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+ D0C9CB352302B06400FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.ChatTitleActivityNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9CB212302B02E00FAB518 /* Build configuration list for PBXProject "ChatTitleActivityNode_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB2D2302B02E00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB322302B05800FAB518 /* DebugHockeyapp */,
+ D0C9CB2E2302B02E00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB342302B06400FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CB2F2302B02E00FAB518 /* Build configuration list for PBXNativeTarget "ChatTitleActivityNode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB302302B02E00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB332302B05800FAB518 /* DebugHockeyapp */,
+ D0C9CB312302B02E00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB352302B06400FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CB1E2302B02E00FAB518 /* Project object */;
+}
diff --git a/submodules/ChatTitleActivityNode/Info.plist b/submodules/ChatTitleActivityNode/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/ChatTitleActivityNode/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ChatPlayingActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatPlayingActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatPlayingActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatPlayingActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatRecordingVideoActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatRecordingVideoActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatRecordingVideoActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatRecordingVideoActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatRecordingVoiceActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatRecordingVoiceActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatRecordingVoiceActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatRecordingVoiceActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatTitleActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityContentNode.swift
similarity index 79%
rename from submodules/TelegramUI/TelegramUI/ChatTitleActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatTitleActivityContentNode.swift
index dd4a4b4275..27c2014190 100644
--- a/submodules/TelegramUI/TelegramUI/ChatTitleActivityContentNode.swift
+++ b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityContentNode.swift
@@ -7,28 +7,28 @@ import LegacyComponents
private let transitionDuration = 0.2
private let animationKey = "animation"
-class ChatTitleActivityIndicatorNode: ASDisplayNode {
- var duration: CFTimeInterval {
+public class ChatTitleActivityIndicatorNode: ASDisplayNode {
+ public var duration: CFTimeInterval {
return 0.0
}
- var timingFunction: CAMediaTimingFunction {
+ public var timingFunction: CAMediaTimingFunction {
return CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
}
- var color: UIColor? {
+ public var color: UIColor? {
didSet {
self.setNeedsDisplay()
}
}
- var progress: CGFloat = 0.0 {
+ public var progress: CGFloat = 0.0 {
didSet {
self.setNeedsDisplay()
}
}
- init(color: UIColor) {
+ public init(color: UIColor) {
self.color = color
super.init()
@@ -68,21 +68,21 @@ class ChatTitleActivityIndicatorNode: ASDisplayNode {
self.pop_removeAnimation(forKey: animationKey)
}
- override func didEnterHierarchy() {
+ override public func didEnterHierarchy() {
super.didEnterHierarchy()
self.startAnimation()
}
- override func didExitHierarchy() {
+ override public func didExitHierarchy() {
super.didExitHierarchy()
self.stopAnimation()
}
}
-class ChatTitleActivityContentNode: ASDisplayNode {
- let textNode: ImmediateTextNode
+public class ChatTitleActivityContentNode: ASDisplayNode {
+ public let textNode: ImmediateTextNode
- init(text: NSAttributedString) {
+ public init(text: NSAttributedString) {
self.textNode = ImmediateTextNode()
self.textNode.displaysAsynchronously = false
self.textNode.maximumNumberOfLines = 1
@@ -95,7 +95,7 @@ class ChatTitleActivityContentNode: ASDisplayNode {
self.textNode.attributedText = text
}
- func animateOut(to: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle, completion: @escaping () -> Void) {
+ public func animateOut(to: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle, completion: @escaping () -> Void) {
self.layer.animateAlpha(from: 1.0, to: 0.0, duration: transitionDuration, removeOnCompletion: false, completion: { _ in
completion()
})
@@ -105,7 +105,7 @@ class ChatTitleActivityContentNode: ASDisplayNode {
}
}
- func animateIn(from: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle) {
+ public func animateIn(from: ChatTitleActivityNodeState, style: ChatTitleActivityAnimationStyle) {
self.layer.animateAlpha(from: 0.0, to: 1.0, duration: transitionDuration)
if case .slide = style {
@@ -113,7 +113,7 @@ class ChatTitleActivityContentNode: ASDisplayNode {
}
}
- func updateLayout(_ constrainedSize: CGSize, alignment: NSTextAlignment) -> CGSize {
+ public func updateLayout(_ constrainedSize: CGSize, alignment: NSTextAlignment) -> CGSize {
let size = self.textNode.updateLayout(constrainedSize)
self.textNode.bounds = CGRect(origin: CGPoint(), size: size)
if case .center = alignment {
diff --git a/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.h b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.h
new file mode 100644
index 0000000000..0d41a1270b
--- /dev/null
+++ b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.h
@@ -0,0 +1,19 @@
+//
+// ChatTitleActivityNode.h
+// ChatTitleActivityNode
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for ChatTitleActivityNode.
+FOUNDATION_EXPORT double ChatTitleActivityNodeVersionNumber;
+
+//! Project version string for ChatTitleActivityNode.
+FOUNDATION_EXPORT const unsigned char ChatTitleActivityNodeVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/ChatTitleActivityNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.swift
similarity index 95%
rename from submodules/TelegramUI/TelegramUI/ChatTitleActivityNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.swift
index 5d41598b84..c345f428bb 100644
--- a/submodules/TelegramUI/TelegramUI/ChatTitleActivityNode.swift
+++ b/submodules/ChatTitleActivityNode/Sources/ChatTitleActivityNode.swift
@@ -43,7 +43,7 @@ public enum ChatTitleActivityNodeState: Equatable {
}
}
- var string: String? {
+ public var string: String? {
if case let .info(text, _) = self {
return text.string
}
@@ -51,12 +51,16 @@ public enum ChatTitleActivityNodeState: Equatable {
}
}
-class ChatTitleActivityNode: ASDisplayNode {
- private(set) var state: ChatTitleActivityNodeState = .none
+public class ChatTitleActivityNode: ASDisplayNode {
+ public private(set) var state: ChatTitleActivityNodeState = .none
private var contentNode: ChatTitleActivityContentNode?
private var nextContentNode: ChatTitleActivityContentNode?
+ override public init() {
+ super.init()
+ }
+
public func transitionToState(_ state: ChatTitleActivityNodeState, animation: ChatTitleActivityAnimationStyle = .crossfade, completion: @escaping () -> Void = {}) -> Bool {
if self.state != state {
let currentState = self.state
diff --git a/submodules/TelegramUI/TelegramUI/ChatTypingActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatTypingActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatTypingActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatTypingActivityContentNode.swift
diff --git a/submodules/TelegramUI/TelegramUI/ChatUploadingActivityContentNode.swift b/submodules/ChatTitleActivityNode/Sources/ChatUploadingActivityContentNode.swift
similarity index 100%
rename from submodules/TelegramUI/TelegramUI/ChatUploadingActivityContentNode.swift
rename to submodules/ChatTitleActivityNode/Sources/ChatUploadingActivityContentNode.swift
diff --git a/submodules/ContextUI/ContextUI_Xcode.xcodeproj/project.pbxproj b/submodules/ContextUI/ContextUI_Xcode.xcodeproj/project.pbxproj
index fe0404253d..9f3333daec 100644
--- a/submodules/ContextUI/ContextUI_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/ContextUI/ContextUI_Xcode.xcodeproj/project.pbxproj
@@ -18,6 +18,7 @@
D09E778322F8E67300B9CCA7 /* ContextActionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09E778222F8E67300B9CCA7 /* ContextActionNode.swift */; };
D09E778522F8E83600B9CCA7 /* ContextContentContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09E778422F8E83600B9CCA7 /* ContextContentContainerNode.swift */; };
D09E778D22FA055100B9CCA7 /* ContextContentSourceNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D09E778C22FA055100B9CCA7 /* ContextContentSourceNode.swift */; };
+ D0C9CBE42302D45F00FAB518 /* TextSelectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBE32302D45F00FAB518 /* TextSelectionNode.framework */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
@@ -34,6 +35,7 @@
D09E778222F8E67300B9CCA7 /* ContextActionNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextActionNode.swift; sourceTree = ""; };
D09E778422F8E83600B9CCA7 /* ContextContentContainerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextContentContainerNode.swift; sourceTree = ""; };
D09E778C22FA055100B9CCA7 /* ContextContentSourceNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContextContentSourceNode.swift; sourceTree = ""; };
+ D0C9CBE32302D45F00FAB518 /* TextSelectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TextSelectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -41,6 +43,7 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D0C9CBE42302D45F00FAB518 /* TextSelectionNode.framework in Frameworks */,
D09E777F22F8E47000B9CCA7 /* TelegramPresentationData.framework in Frameworks */,
D038AC7922F8A08A00320981 /* AsyncDisplayKit.framework in Frameworks */,
D038AC7522F8A06200320981 /* Display.framework in Frameworks */,
@@ -86,6 +89,7 @@
D038AC6F22F8A05A00320981 /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D0C9CBE32302D45F00FAB518 /* TextSelectionNode.framework */,
D09E777E22F8E47000B9CCA7 /* TelegramPresentationData.framework */,
D038AC7822F8A08A00320981 /* AsyncDisplayKit.framework */,
D038AC7422F8A06200320981 /* Display.framework */,
diff --git a/submodules/ContextUI/Sources/ContextContentSourceNode.swift b/submodules/ContextUI/Sources/ContextContentSourceNode.swift
index bbfd09e73f..3c37d7090b 100644
--- a/submodules/ContextUI/Sources/ContextContentSourceNode.swift
+++ b/submodules/ContextUI/Sources/ContextContentSourceNode.swift
@@ -6,6 +6,7 @@ public final class ContextContentContainingNode: ASDisplayNode {
public let contentNode: ContextContentNode
public var contentRect: CGRect = CGRect()
public var isExtractedToContextPreview: Bool = false
+ public var willUpdateIsExtractedToContextPreview: ((Bool) -> Void)?
public var isExtractedToContextPreviewUpdated: ((Bool) -> Void)?
public var updateAbsoluteRect: ((CGRect, CGSize) -> Void)?
public var applyAbsoluteOffset: ((CGFloat, ContainedViewLayoutTransitionCurve, Double) -> Void)?
diff --git a/submodules/ContextUI/Sources/ContextController.swift b/submodules/ContextUI/Sources/ContextController.swift
index 7fa0992834..2e045b0cdf 100644
--- a/submodules/ContextUI/Sources/ContextController.swift
+++ b/submodules/ContextUI/Sources/ContextController.swift
@@ -3,6 +3,7 @@ import UIKit
import AsyncDisplayKit
import Display
import TelegramPresentationData
+import TextSelectionNode
public enum ContextMenuActionItemTextLayout {
case singleLine
@@ -115,14 +116,14 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
super.init()
- if #available(iOS 10.0, *) {
+ /*if #available(iOS 10.0, *) {
let propertyAnimator = UIViewPropertyAnimator(duration: 0.4, curve: .linear)
propertyAnimator.isInterruptible = true
propertyAnimator.addAnimations {
self.effectView.effect = makeCustomZoomBlurEffect()
}
self.propertyAnimator = propertyAnimator
- }
+ }*/
self.scrollNode.view.delegate = self
@@ -250,7 +251,7 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
}
self.dimNode.alpha = 1.0
- self.dimNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.25)
+ self.dimNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
if let _ = self.propertyAnimator {
if #available(iOSApplicationExtension 10.0, iOS 10.0, *) {
self.displayLinkAnimator = DisplayLinkAnimator(duration: 0.25, from: 0.0, to: 1.0, update: { [weak self] value in
@@ -261,50 +262,10 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
})
}
} else {
- UIView.animate(withDuration: 0.25, animations: {
- if #available(iOS 9.0, *) {
- if self.theme.chatList.searchBarKeyboardColor == .dark {
- if #available(iOSApplicationExtension 10.0, iOS 10.0, *) {
- if #available(iOSApplicationExtension 13.0, iOS 13.0, *) {
- self.effectView.effect = UIBlurEffect(style: .dark)
- } else {
- self.effectView.effect = UIBlurEffect(style: .regular)
- if self.effectView.subviews.count == 2 {
- self.effectView.subviews[1].isHidden = true
- }
- }
- } else {
- self.effectView.effect = UIBlurEffect(style: .dark)
- }
- } else {
- if #available(iOSApplicationExtension 10.0, iOS 10.0, *) {
- self.effectView.effect = UIBlurEffect(style: .regular)
- } else {
- self.effectView.effect = UIBlurEffect(style: .light)
- }
- }
- } else {
- self.effectView.alpha = 1.0
- }
- }, completion: { [weak self] _ in
- guard let strongSelf = self else {
- return
- }
- if strongSelf.theme.chatList.searchBarKeyboardColor == .dark {
- if #available(iOSApplicationExtension 13.0, iOS 13.0, *) {
- } else {
- if strongSelf.effectView.subviews.count == 2 {
- strongSelf.effectView.subviews[1].isHidden = true
- }
- }
- }
+ UIView.animate(withDuration: 0.2, animations: {
+ self.effectView.effect = makeCustomZoomBlurEffect()
})
}
- if #available(iOSApplicationExtension 13.0, iOS 13.0, *) {
- } else {
- //self.effectView.subviews[1].layer.removeAnimation(forKey: "backgroundColor")
- }
-
self.actionsContainerNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.2)
let springDuration: Double = 0.42
@@ -332,11 +293,14 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
if let putBackInfo = putBackInfo, let contentParentNode = self.contentParentNode, let parentSupernode = contentParentNode.supernode {
self.originalProjectedContentViewFrame = (parentSupernode.view.convert(contentParentNode.frame, to: self.view), contentParentNode.view.convert(contentParentNode.contentRect, to: self.view))
- self.clippingNode.layer.animateFrame(from: self.clippingNode.frame, to: putBackInfo.contentAreaInScreenSpace, duration: 0.3, timingFunction: CAMediaTimingFunctionName.easeInEaseOut.rawValue, removeOnCompletion: false)
- self.clippingNode.layer.animateBoundsOriginYAdditive(from: 0.0, to: putBackInfo.contentAreaInScreenSpace.minY, duration: 0.3, timingFunction: CAMediaTimingFunctionName.easeInEaseOut.rawValue, removeOnCompletion: false)
+ self.clippingNode.layer.animateFrame(from: self.clippingNode.frame, to: putBackInfo.contentAreaInScreenSpace, duration: 0.2, timingFunction: CAMediaTimingFunctionName.easeInEaseOut.rawValue, removeOnCompletion: false)
+ self.clippingNode.layer.animateBoundsOriginYAdditive(from: 0.0, to: putBackInfo.contentAreaInScreenSpace.minY, duration: 0.2, timingFunction: CAMediaTimingFunctionName.easeInEaseOut.rawValue, removeOnCompletion: false)
}
let contentParentNode = self.contentParentNode
+
+ contentParentNode?.willUpdateIsExtractedToContextPreview?(false)
+
let intermediateCompletion: () -> Void = { [weak contentParentNode] in
if completedEffect && completedContentNode && completedActionsNode {
switch result {
@@ -356,7 +320,7 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
if let propertyAnimator = self.propertyAnimator {
if #available(iOSApplicationExtension 10.0, iOS 10.0, *) {
- self.displayLinkAnimator = DisplayLinkAnimator(duration: 0.22, from: (propertyAnimator as? UIViewPropertyAnimator)?.fractionComplete ?? 0.2, to: 0.0, update: { [weak self] value in
+ self.displayLinkAnimator = DisplayLinkAnimator(duration: 0.2, from: (propertyAnimator as? UIViewPropertyAnimator)?.fractionComplete ?? 0.2, to: 0.0, update: { [weak self] value in
(self?.propertyAnimator as? UIViewPropertyAnimator)?.fractionComplete = value
}, completion: { [weak self] in
self?.effectView.isHidden = true
@@ -365,7 +329,7 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
})
}
} else {
- UIView.animate(withDuration: 0.3, animations: {
+ UIView.animate(withDuration: 0.2, animations: {
if #available(iOS 9.0, *) {
self.effectView.effect = nil
} else {
@@ -377,22 +341,22 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
})
}
- self.dimNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false)
- self.actionsContainerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { _ in
+ self.dimNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false)
+ self.actionsContainerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { _ in
completedActionsNode = true
intermediateCompletion()
})
- self.actionsContainerNode.layer.animateScale(from: 1.0, to: 0.1, duration: 0.3, removeOnCompletion: false)
+ self.actionsContainerNode.layer.animateScale(from: 1.0, to: 0.1, duration: 0.2, removeOnCompletion: false)
if case .default = result, let originalProjectedContentViewFrame = self.originalProjectedContentViewFrame, let contentParentNode = self.contentParentNode {
let localSourceFrame = self.view.convert(originalProjectedContentViewFrame.1, to: self.scrollNode.view)
- self.actionsContainerNode.layer.animatePosition(from: CGPoint(), to: CGPoint(x: localSourceFrame.center.x - self.actionsContainerNode.position.x, y: localSourceFrame.center.y - self.actionsContainerNode.position.y), duration: 0.3, removeOnCompletion: false, additive: true)
+ self.actionsContainerNode.layer.animatePosition(from: CGPoint(), to: CGPoint(x: localSourceFrame.center.x - self.actionsContainerNode.position.x, y: localSourceFrame.center.y - self.actionsContainerNode.position.y), duration: 0.2, removeOnCompletion: false, additive: true)
let contentContainerOffset = CGPoint(x: localSourceFrame.center.x - self.contentContainerNode.frame.center.x - contentParentNode.contentRect.minX, y: localSourceFrame.center.y - self.contentContainerNode.frame.center.y - contentParentNode.contentRect.minY)
- self.contentContainerNode.layer.animatePosition(from: CGPoint(), to: contentContainerOffset, duration: 0.3, removeOnCompletion: false, additive: true, completion: { _ in
+ self.contentContainerNode.layer.animatePosition(from: CGPoint(), to: contentContainerOffset, duration: 0.2, removeOnCompletion: false, additive: true, completion: { _ in
completedContentNode = true
intermediateCompletion()
})
contentParentNode.updateAbsoluteRect?(self.contentContainerNode.frame.offsetBy(dx: 0.0, dy: -self.scrollNode.view.contentOffset.y + contentContainerOffset.y), self.bounds.size)
- contentParentNode.applyAbsoluteOffset?(-contentContainerOffset.y, .easeInOut, 0.3)
+ contentParentNode.applyAbsoluteOffset?(-contentContainerOffset.y, .easeInOut, 0.2)
} else if let contentParentNode = self.contentParentNode {
if let snapshotView = contentParentNode.contentNode.view.snapshotContentTree() {
self.contentContainerNode.view.addSubview(snapshotView)
@@ -402,7 +366,7 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
contentParentNode.isExtractedToContextPreview = false
contentParentNode.isExtractedToContextPreviewUpdated?(false)
- self.contentContainerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.3, removeOnCompletion: false, completion: { _ in
+ self.contentContainerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { _ in
completedContentNode = true
intermediateCompletion()
})
@@ -520,12 +484,17 @@ private final class ContextControllerNode: ViewControllerTracingNode, UIScrollVi
return nil
}
let mappedPoint = self.view.convert(point, to: self.scrollNode.view)
- if self.contentContainerNode.frame.contains(mappedPoint), let contentParentNode = self.contentParentNode, contentParentNode.contentRect.contains(mappedPoint) {
- return self.contentContainerNode.hitTest(mappedPoint, with: event)
- }
if self.actionsContainerNode.frame.contains(mappedPoint) {
return self.actionsContainerNode.hitTest(self.view.convert(point, to: self.actionsContainerNode.view), with: event)
}
+ if let contentParentNode = self.contentParentNode {
+ let contentPoint = self.view.convert(point, to: contentParentNode.contentNode.view)
+ if let result = contentParentNode.contentNode.hitTest(contentPoint, with: event) {
+ if result is TextSelectionNodeView {
+ return result
+ }
+ }
+ }
return self.dimNode.view
}
@@ -587,7 +556,7 @@ public final class ContextController: ViewController {
override public func loadDisplayNode() {
self.displayNode = ContextControllerNode(controller: self, theme: self.theme, strings: self.strings, source: self.source, items: self.items, beginDismiss: { [weak self] result in
- self?.dismiss(result: result)
+ self?.dismiss(result: result, completion: nil)
}, recognizer: self.recognizer)
self.displayNodeDidLoad()
@@ -618,16 +587,17 @@ public final class ContextController: ViewController {
}
}
- private func dismiss(result: ContextMenuActionResult) {
+ private func dismiss(result: ContextMenuActionResult, completion: (() -> Void)?) {
if !self.wasDismissed {
self.wasDismissed = true
self.controllerNode.animateOut(result: result, completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: false, completion: nil)
+ completion?()
})
}
}
- public func dismiss() {
- self.dismiss(result: .default)
+ override public func dismiss(completion: (() -> Void)? = nil) {
+ self.dismiss(result: .default, completion: completion)
}
}
diff --git a/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem_Xcode.xcodeproj/project.pbxproj b/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..718308169e
--- /dev/null
+++ b/submodules/DeleteChatPeerActionSheetItem/DeleteChatPeerActionSheetItem_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,571 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CB622302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CB602302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CB6D2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB6C2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift */; };
+ D0C9CB702302B33600FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB6F2302B33600FAB518 /* Foundation.framework */; };
+ D0C9CB722302B33B00FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB712302B33B00FAB518 /* UIKit.framework */; };
+ D0C9CB742302B33E00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB732302B33E00FAB518 /* Display.framework */; };
+ D0C9CB762302B34200FAB518 /* Postbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB752302B34200FAB518 /* Postbox.framework */; };
+ D0C9CB782302B34A00FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB772302B34A00FAB518 /* TelegramCore.framework */; };
+ D0C9CB7A2302B35100FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB792302B35100FAB518 /* TelegramPresentationData.framework */; };
+ D0C9CB7C2302B35600FAB518 /* AvatarNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB7B2302B35600FAB518 /* AvatarNode.framework */; };
+ D0C9CB7E2302B35D00FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB7D2302B35D00FAB518 /* AccountContext.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CB5D2302B28D00FAB518 /* DeleteChatPeerActionSheetItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = DeleteChatPeerActionSheetItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB602302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeleteChatPeerActionSheetItem.h; sourceTree = ""; };
+ D0C9CB612302B28D00FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CB6C2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeleteChatPeerActionSheetItem.swift; sourceTree = ""; };
+ D0C9CB6F2302B33600FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CB712302B33B00FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CB732302B33E00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB752302B34200FAB518 /* Postbox.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Postbox.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB772302B34A00FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB792302B35100FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB7B2302B35600FAB518 /* AvatarNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AvatarNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB7D2302B35D00FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CB5A2302B28D00FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB7E2302B35D00FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9CB7C2302B35600FAB518 /* AvatarNode.framework in Frameworks */,
+ D0C9CB7A2302B35100FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9CB782302B34A00FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9CB762302B34200FAB518 /* Postbox.framework in Frameworks */,
+ D0C9CB742302B33E00FAB518 /* Display.framework in Frameworks */,
+ D0C9CB722302B33B00FAB518 /* UIKit.framework in Frameworks */,
+ D0C9CB702302B33600FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CB532302B28D00FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB612302B28D00FAB518 /* Info.plist */,
+ D0C9CB5F2302B28D00FAB518 /* Sources */,
+ D0C9CB5E2302B28D00FAB518 /* Products */,
+ D0C9CB6E2302B33400FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9CB5E2302B28D00FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB5D2302B28D00FAB518 /* DeleteChatPeerActionSheetItem.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CB5F2302B28D00FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB6C2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift */,
+ D0C9CB602302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CB6E2302B33400FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB7D2302B35D00FAB518 /* AccountContext.framework */,
+ D0C9CB7B2302B35600FAB518 /* AvatarNode.framework */,
+ D0C9CB792302B35100FAB518 /* TelegramPresentationData.framework */,
+ D0C9CB772302B34A00FAB518 /* TelegramCore.framework */,
+ D0C9CB752302B34200FAB518 /* Postbox.framework */,
+ D0C9CB732302B33E00FAB518 /* Display.framework */,
+ D0C9CB712302B33B00FAB518 /* UIKit.framework */,
+ D0C9CB6F2302B33600FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CB582302B28D00FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB622302B28D00FAB518 /* DeleteChatPeerActionSheetItem.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CB5C2302B28D00FAB518 /* DeleteChatPeerActionSheetItem */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CB652302B28D00FAB518 /* Build configuration list for PBXNativeTarget "DeleteChatPeerActionSheetItem" */;
+ buildPhases = (
+ D0C9CB582302B28D00FAB518 /* Headers */,
+ D0C9CB592302B28D00FAB518 /* Sources */,
+ D0C9CB5A2302B28D00FAB518 /* Frameworks */,
+ D0C9CB5B2302B28D00FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = DeleteChatPeerActionSheetItem;
+ productName = DeleteChatPeerActionSheetItem;
+ productReference = D0C9CB5D2302B28D00FAB518 /* DeleteChatPeerActionSheetItem.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CB542302B28D00FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CB5C2302B28D00FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CB572302B28D00FAB518 /* Build configuration list for PBXProject "DeleteChatPeerActionSheetItem_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CB532302B28D00FAB518;
+ productRefGroup = D0C9CB5E2302B28D00FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CB5C2302B28D00FAB518 /* DeleteChatPeerActionSheetItem */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CB5B2302B28D00FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CB592302B28D00FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB6D2302B32200FAB518 /* DeleteChatPeerActionSheetItem.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CB632302B28D00FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CB642302B28D00FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB662302B28D00FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.DeleteChatPeerActionSheetItem;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CB672302B28D00FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.DeleteChatPeerActionSheetItem;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB682302B2C800FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+ D0C9CB692302B2C800FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.DeleteChatPeerActionSheetItem;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+ D0C9CB6A2302B2CC00FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CB6B2302B2CC00FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.DeleteChatPeerActionSheetItem;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9CB572302B28D00FAB518 /* Build configuration list for PBXProject "DeleteChatPeerActionSheetItem_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB632302B28D00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB6A2302B2CC00FAB518 /* DebugHockeyapp */,
+ D0C9CB642302B28D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB682302B2C800FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CB652302B28D00FAB518 /* Build configuration list for PBXNativeTarget "DeleteChatPeerActionSheetItem" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB662302B28D00FAB518 /* DebugAppStoreLLC */,
+ D0C9CB6B2302B2CC00FAB518 /* DebugHockeyapp */,
+ D0C9CB672302B28D00FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB692302B2C800FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CB542302B28D00FAB518 /* Project object */;
+}
diff --git a/submodules/DeleteChatPeerActionSheetItem/Info.plist b/submodules/DeleteChatPeerActionSheetItem/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/DeleteChatPeerActionSheetItem/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.h b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.h
new file mode 100644
index 0000000000..eff87f3b1f
--- /dev/null
+++ b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.h
@@ -0,0 +1,19 @@
+//
+// DeleteChatPeerActionSheetItem.h
+// DeleteChatPeerActionSheetItem
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for DeleteChatPeerActionSheetItem.
+FOUNDATION_EXPORT double DeleteChatPeerActionSheetItemVersionNumber;
+
+//! Project version string for DeleteChatPeerActionSheetItem.
+FOUNDATION_EXPORT const unsigned char DeleteChatPeerActionSheetItemVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift
similarity index 92%
rename from submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift
rename to submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift
index 41fea3f083..415c3881a5 100644
--- a/submodules/TelegramUI/TelegramUI/DeleteChatPeerActionSheetItem.swift
+++ b/submodules/DeleteChatPeerActionSheetItem/Sources/DeleteChatPeerActionSheetItem.swift
@@ -7,19 +7,19 @@ import TelegramPresentationData
import AvatarNode
import AccountContext
-enum DeleteChatPeerAction {
+public enum DeleteChatPeerAction {
case delete
case clearHistory
}
-final class DeleteChatPeerActionSheetItem: ActionSheetItem {
+public final class DeleteChatPeerActionSheetItem: ActionSheetItem {
let context: AccountContext
let peer: Peer
let chatPeer: Peer
let action: DeleteChatPeerAction
let strings: PresentationStrings
- init(context: AccountContext, peer: Peer, chatPeer: Peer, action: DeleteChatPeerAction, strings: PresentationStrings) {
+ public init(context: AccountContext, peer: Peer, chatPeer: Peer, action: DeleteChatPeerAction, strings: PresentationStrings) {
self.context = context
self.peer = peer
self.chatPeer = chatPeer
@@ -27,11 +27,11 @@ final class DeleteChatPeerActionSheetItem: ActionSheetItem {
self.strings = strings
}
- func node(theme: ActionSheetControllerTheme) -> ActionSheetItemNode {
+ public func node(theme: ActionSheetControllerTheme) -> ActionSheetItemNode {
return DeleteChatPeerActionSheetItemNode(theme: theme, strings: self.strings, context: self.context, peer: self.peer, chatPeer: self.chatPeer, action: self.action)
}
- func updateNode(_ node: ActionSheetItemNode) {
+ public func updateNode(_ node: ActionSheetItemNode) {
}
}
diff --git a/submodules/Display/Display/ContextMenuController.swift b/submodules/Display/Display/ContextMenuController.swift
index e4d2ab6d79..eb5e921664 100644
--- a/submodules/Display/Display/ContextMenuController.swift
+++ b/submodules/Display/Display/ContextMenuController.swift
@@ -4,9 +4,11 @@ import AsyncDisplayKit
public final class ContextMenuControllerPresentationArguments {
fileprivate let sourceNodeAndRect: () -> (ASDisplayNode, CGRect, ASDisplayNode, CGRect)?
+ fileprivate let bounce: Bool
- public init(sourceNodeAndRect: @escaping () -> (ASDisplayNode, CGRect, ASDisplayNode, CGRect)?) {
+ public init(sourceNodeAndRect: @escaping () -> (ASDisplayNode, CGRect, ASDisplayNode, CGRect)?, bounce: Bool = true) {
self.sourceNodeAndRect = sourceNodeAndRect
+ self.bounce = bounce
}
}
@@ -45,9 +47,9 @@ public final class ContextMenuController: ViewController, KeyShortcutResponder {
override public func loadDisplayNode() {
self.displayNode = ContextMenuNode(actions: self.actions, dismiss: { [weak self] in
self?.dismissed?()
- self?.contextMenuNode.animateOut {
+ self?.contextMenuNode.animateOut(bounce: (self?.presentationArguments as? ContextMenuControllerPresentationArguments)?.bounce ?? true, completion: {
self?.presentingViewController?.dismiss(animated: false)
- }
+ })
}, catchTapsOutside: self.catchTapsOutside, hasHapticFeedback: self.hasHapticFeedback)
self.displayNodeDidLoad()
}
@@ -55,14 +57,14 @@ public final class ContextMenuController: ViewController, KeyShortcutResponder {
override public func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
- self.contextMenuNode.animateIn()
+ self.contextMenuNode.animateIn(bounce: (self.presentationArguments as? ContextMenuControllerPresentationArguments)?.bounce ?? true)
}
override public func dismiss(completion: (() -> Void)? = nil) {
self.dismissed?()
- self.contextMenuNode.animateOut { [weak self] in
+ self.contextMenuNode.animateOut(bounce: (self.presentationArguments as? ContextMenuControllerPresentationArguments)?.bounce ?? true, completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: false)
- }
+ })
}
override public func containerLayoutUpdated(_ layout: ContainerViewLayout, transition: ContainedViewLayoutTransition) {
@@ -70,9 +72,9 @@ public final class ContextMenuController: ViewController, KeyShortcutResponder {
if self.layout != nil && self.layout! != layout {
self.dismissed?()
- self.contextMenuNode.animateOut { [weak self] in
+ self.contextMenuNode.animateOut(bounce: (self.presentationArguments as? ContextMenuControllerPresentationArguments)?.bounce ?? true, completion: { [weak self] in
self?.presentingViewController?.dismiss(animated: false)
- }
+ })
} else {
self.layout = layout
@@ -90,7 +92,5 @@ public final class ContextMenuController: ViewController, KeyShortcutResponder {
override public func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
-
- self.contextMenuNode.animateIn()
}
}
diff --git a/submodules/Display/Display/ContextMenuNode.swift b/submodules/Display/Display/ContextMenuNode.swift
index 447e1fadcf..7c3f9ffc4b 100644
--- a/submodules/Display/Display/ContextMenuNode.swift
+++ b/submodules/Display/Display/ContextMenuNode.swift
@@ -221,21 +221,27 @@ final class ContextMenuNode: ASDisplayNode {
self.scrollNode.layout()
}
- func animateIn() {
- self.containerNode.layer.animateSpring(from: NSNumber(value: Float(0.2)), to: NSNumber(value: Float(1.0)), keyPath: "transform.scale", duration: 0.4)
+ func animateIn(bounce: Bool) {
+ if bounce {
+ self.containerNode.layer.animateSpring(from: NSNumber(value: Float(0.2)), to: NSNumber(value: Float(1.0)), keyPath: "transform.scale", duration: 0.4)
+ let containerPosition = self.containerNode.layer.position
+ self.containerNode.layer.animateSpring(from: NSValue(cgPoint: CGPoint(x: containerPosition.x, y: containerPosition.y + (self.arrowOnBottom ? 1.0 : -1.0) * self.containerNode.bounds.size.height / 2.0)), to: NSValue(cgPoint: containerPosition), keyPath: "position", duration: 0.4)
+ }
- let containerPosition = self.containerNode.layer.position
- self.containerNode.layer.animateSpring(from: NSValue(cgPoint: CGPoint(x: containerPosition.x, y: containerPosition.y + (self.arrowOnBottom ? 1.0 : -1.0) * self.containerNode.bounds.size.height / 2.0)), to: NSValue(cgPoint: containerPosition), keyPath: "position", duration: 0.4)
-
- self.containerNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.1)
+ self.containerNode.allowsGroupOpacity = true
+ self.containerNode.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.1, completion: { [weak self] _ in
+ self?.containerNode.allowsGroupOpacity = false
+ })
if let feedback = self.feedback {
feedback.impact(.light)
}
}
- func animateOut(completion: @escaping () -> Void) {
- self.containerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { _ in
+ func animateOut(bounce: Bool, completion: @escaping () -> Void) {
+ self.containerNode.allowsGroupOpacity = true
+ self.containerNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak self] _ in
+ self?.containerNode.allowsGroupOpacity = false
completion()
})
}
diff --git a/submodules/Display/Display/LinkHighlightingNode.swift b/submodules/Display/Display/LinkHighlightingNode.swift
index 5600a3cbd2..611616965e 100644
--- a/submodules/Display/Display/LinkHighlightingNode.swift
+++ b/submodules/Display/Display/LinkHighlightingNode.swift
@@ -10,6 +10,9 @@ private enum CornerType {
}
private func drawFullCorner(context: CGContext, color: UIColor, at point: CGPoint, type: CornerType, radius: CGFloat) {
+ if radius.isZero {
+ return
+ }
context.setFillColor(color.cgColor)
switch type {
case .topLeft:
diff --git a/submodules/Display/Display/TextNode.swift b/submodules/Display/Display/TextNode.swift
index 7a0bc0a530..7ba43f2cfb 100644
--- a/submodules/Display/Display/TextNode.swift
+++ b/submodules/Display/Display/TextNode.swift
@@ -110,7 +110,7 @@ public final class TextNodeLayoutArguments {
}
public final class TextNodeLayout: NSObject {
- fileprivate let attributedString: NSAttributedString?
+ public let attributedString: NSAttributedString?
fileprivate let maximumNumberOfLines: Int
fileprivate let truncationType: CTLineTruncationType
fileprivate let backgroundColor: UIColor?
@@ -210,9 +210,82 @@ public final class TextNodeLayout: NSObject {
}
}
- public func attributesAtPoint(_ point: CGPoint) -> (Int, [NSAttributedString.Key: Any])? {
+ public func attributesAtPoint(_ point: CGPoint, orNearest: Bool) -> (Int, [NSAttributedString.Key: Any])? {
if let attributedString = self.attributedString {
let transformedPoint = CGPoint(x: point.x - self.insets.left, y: point.y - self.insets.top)
+ if orNearest {
+ var lineIndex = -1
+ var closestLine: (Int, CGRect, CGFloat)?
+ for line in self.lines {
+ lineIndex += 1
+ var lineFrame = CGRect(origin: CGPoint(x: line.frame.origin.x, y: line.frame.origin.y - line.frame.size.height + self.firstLineOffset), size: line.frame.size)
+ switch self.alignment {
+ case .center:
+ lineFrame.origin.x = floor((self.size.width - lineFrame.size.width) / 2.0)
+ case .natural:
+ if line.isRTL {
+ lineFrame.origin.x = self.size.width - lineFrame.size.width
+ }
+ lineFrame = displayLineFrame(frame: lineFrame, isRTL: line.isRTL, boundingRect: CGRect(origin: CGPoint(), size: self.size), cutout: self.cutout)
+ default:
+ break
+ }
+
+ let currentDistance = (lineFrame.center.y - point.y) * (lineFrame.center.y - point.y)
+ if let current = closestLine {
+ if current.2 > currentDistance {
+ closestLine = (lineIndex, lineFrame, currentDistance)
+ }
+ } else {
+ closestLine = (lineIndex, lineFrame, currentDistance)
+ }
+ }
+
+ if let (index, lineFrame, _) = closestLine {
+ let line = self.lines[index]
+
+ let lineRange = CTLineGetStringRange(line.line)
+ var index: Int
+ if transformedPoint.x <= lineFrame.minX {
+ index = lineRange.location
+ } else if transformedPoint.x >= lineFrame.maxX {
+ index = lineRange.location + lineRange.length
+ } else {
+ index = CTLineGetStringIndexForPosition(line.line, CGPoint(x: transformedPoint.x - lineFrame.minX, y: floor(lineFrame.height / 2.0)))
+ if index != 0 {
+ var glyphStart: CGFloat = 0.0
+ CTLineGetOffsetForStringIndex(line.line, index, &glyphStart)
+ if transformedPoint.x < glyphStart {
+ var closestLowerIndex: Int?
+ let glyphRuns = CTLineGetGlyphRuns(line.line) as NSArray
+ if glyphRuns.count != 0 {
+ for run in glyphRuns {
+ let run = run as! CTRun
+ let glyphCount = CTRunGetGlyphCount(run)
+ for i in 0 ..< glyphCount {
+ var glyphIndex: CFIndex = 0
+ CTRunGetStringIndices(run, CFRangeMake(i, 1), &glyphIndex)
+ if glyphIndex < index {
+ if let closestLowerIndexValue = closestLowerIndex {
+ if closestLowerIndexValue < glyphIndex {
+ closestLowerIndex = glyphIndex
+ }
+ } else {
+ closestLowerIndex = glyphIndex
+ }
+ }
+ }
+ }
+ }
+ if let closestLowerIndex = closestLowerIndex {
+ index = closestLowerIndex
+ }
+ }
+ }
+ }
+ return (index, [:])
+ }
+ }
var lineIndex = -1
for line in self.lines {
lineIndex += 1
@@ -231,12 +304,58 @@ public final class TextNodeLayout: NSObject {
if lineFrame.contains(transformedPoint) {
var index = CTLineGetStringIndexForPosition(line.line, CGPoint(x: transformedPoint.x - lineFrame.minX, y: transformedPoint.y - lineFrame.minY))
if index == attributedString.length {
- index -= 1
+ var closestLowerIndex: Int?
+ let glyphRuns = CTLineGetGlyphRuns(line.line) as NSArray
+ if glyphRuns.count != 0 {
+ for run in glyphRuns {
+ let run = run as! CTRun
+ let glyphCount = CTRunGetGlyphCount(run)
+ for i in 0 ..< glyphCount {
+ var glyphIndex: CFIndex = 0
+ CTRunGetStringIndices(run, CFRangeMake(i, 1), &glyphIndex)
+ if glyphIndex < index {
+ if let closestLowerIndexValue = closestLowerIndex {
+ if closestLowerIndexValue < glyphIndex {
+ closestLowerIndex = glyphIndex
+ }
+ } else {
+ closestLowerIndex = glyphIndex
+ }
+ }
+ }
+ }
+ }
+ if let closestLowerIndex = closestLowerIndex {
+ index = closestLowerIndex
+ }
} else if index != 0 {
var glyphStart: CGFloat = 0.0
CTLineGetOffsetForStringIndex(line.line, index, &glyphStart)
if transformedPoint.x < glyphStart {
- index -= 1
+ var closestLowerIndex: Int?
+ let glyphRuns = CTLineGetGlyphRuns(line.line) as NSArray
+ if glyphRuns.count != 0 {
+ for run in glyphRuns {
+ let run = run as! CTRun
+ let glyphCount = CTRunGetGlyphCount(run)
+ for i in 0 ..< glyphCount {
+ var glyphIndex: CFIndex = 0
+ CTRunGetStringIndices(run, CFRangeMake(i, 1), &glyphIndex)
+ if glyphIndex < index {
+ if let closestLowerIndexValue = closestLowerIndex {
+ if closestLowerIndexValue < glyphIndex {
+ closestLowerIndex = glyphIndex
+ }
+ } else {
+ closestLowerIndex = glyphIndex
+ }
+ }
+ }
+ }
+ }
+ if let closestLowerIndex = closestLowerIndex {
+ index = closestLowerIndex
+ }
}
}
if index >= 0 && index < attributedString.length {
@@ -263,12 +382,58 @@ public final class TextNodeLayout: NSObject {
if lineFrame.offsetBy(dx: 0.0, dy: -lineFrame.size.height).insetBy(dx: -3.0, dy: -3.0).contains(transformedPoint) {
var index = CTLineGetStringIndexForPosition(line.line, CGPoint(x: transformedPoint.x - lineFrame.minX, y: transformedPoint.y - lineFrame.minY))
if index == attributedString.length {
- index -= 1
+ var closestLowerIndex: Int?
+ let glyphRuns = CTLineGetGlyphRuns(line.line) as NSArray
+ if glyphRuns.count != 0 {
+ for run in glyphRuns {
+ let run = run as! CTRun
+ let glyphCount = CTRunGetGlyphCount(run)
+ for i in 0 ..< glyphCount {
+ var glyphIndex: CFIndex = 0
+ CTRunGetStringIndices(run, CFRangeMake(i, 1), &glyphIndex)
+ if glyphIndex < index {
+ if let closestLowerIndexValue = closestLowerIndex {
+ if closestLowerIndexValue < glyphIndex {
+ closestLowerIndex = glyphIndex
+ }
+ } else {
+ closestLowerIndex = glyphIndex
+ }
+ }
+ }
+ }
+ }
+ if let closestLowerIndex = closestLowerIndex {
+ index = closestLowerIndex
+ }
} else if index != 0 {
var glyphStart: CGFloat = 0.0
CTLineGetOffsetForStringIndex(line.line, index, &glyphStart)
if transformedPoint.x < glyphStart {
- index -= 1
+ var closestLowerIndex: Int?
+ let glyphRuns = CTLineGetGlyphRuns(line.line) as NSArray
+ if glyphRuns.count != 0 {
+ for run in glyphRuns {
+ let run = run as! CTRun
+ let glyphCount = CTRunGetGlyphCount(run)
+ for i in 0 ..< glyphCount {
+ var glyphIndex: CFIndex = 0
+ CTRunGetStringIndices(run, CFRangeMake(i, 1), &glyphIndex)
+ if glyphIndex < index {
+ if let closestLowerIndexValue = closestLowerIndex {
+ if closestLowerIndexValue < glyphIndex {
+ closestLowerIndex = glyphIndex
+ }
+ } else {
+ closestLowerIndex = glyphIndex
+ }
+ }
+ }
+ }
+ }
+ if let closestLowerIndex = closestLowerIndex {
+ index = closestLowerIndex
+ }
}
}
if index >= 0 && index < attributedString.length {
@@ -430,6 +595,41 @@ public final class TextNodeLayout: NSObject {
}
return nil
}
+
+ public func rangeRects(in range: NSRange) -> [CGRect]? {
+ guard let _ = self.attributedString, range.length != 0 else {
+ return nil
+ }
+ var rects: [(CGRect, CGRect)] = []
+ for line in self.lines {
+ let lineRange = NSIntersectionRange(range, line.range)
+ if lineRange.length != 0 {
+ var leftOffset: CGFloat = 0.0
+ if lineRange.location != line.range.location || line.isRTL {
+ leftOffset = floor(CTLineGetOffsetForStringIndex(line.line, lineRange.location, nil))
+ }
+ var rightOffset: CGFloat = line.frame.width
+ if lineRange.location + lineRange.length != line.range.upperBound || line.isRTL {
+ var secondaryOffset: CGFloat = 0.0
+ let rawOffset = CTLineGetOffsetForStringIndex(line.line, lineRange.location + lineRange.length, &secondaryOffset)
+ rightOffset = ceil(rawOffset)
+ if !rawOffset.isEqual(to: secondaryOffset) {
+ rightOffset = ceil(secondaryOffset)
+ }
+ }
+ var lineFrame = CGRect(origin: CGPoint(x: line.frame.origin.x, y: line.frame.origin.y - line.frame.size.height + self.firstLineOffset), size: line.frame.size)
+
+ lineFrame = displayLineFrame(frame: lineFrame, isRTL: line.isRTL, boundingRect: CGRect(origin: CGPoint(), size: self.size), cutout: self.cutout)
+
+ let width = max(0.0, abs(rightOffset - leftOffset))
+ rects.append((lineFrame, CGRect(origin: CGPoint(x: lineFrame.minX + (leftOffset < rightOffset ? leftOffset : rightOffset) + self.insets.left, y: lineFrame.minY + self.insets.top), size: CGSize(width: width, height: lineFrame.size.height))))
+ }
+ }
+ if !rects.isEmpty {
+ return rects.map { $1 }
+ }
+ return nil
+ }
}
private final class TextAccessibilityOverlayElement: UIAccessibilityElement {
@@ -550,9 +750,9 @@ public class TextNode: ASDisplayNode {
self.clipsToBounds = false
}
- public func attributesAtPoint(_ point: CGPoint) -> (Int, [NSAttributedString.Key: Any])? {
+ public func attributesAtPoint(_ point: CGPoint, orNearest: Bool = false) -> (Int, [NSAttributedString.Key: Any])? {
if let cachedLayout = self.cachedLayout {
- return cachedLayout.attributesAtPoint(point)
+ return cachedLayout.attributesAtPoint(point, orNearest: orNearest)
} else {
return nil
}
@@ -574,6 +774,14 @@ public class TextNode: ASDisplayNode {
}
}
+ public func rangeRects(in range: NSRange) -> [CGRect]? {
+ if let cachedLayout = self.cachedLayout {
+ return cachedLayout.rangeRects(in: range)
+ } else {
+ return nil
+ }
+ }
+
public func lineAndAttributeRects(name: String, at index: Int) -> [(CGRect, CGRect)]? {
if let cachedLayout = self.cachedLayout {
return cachedLayout.lineAndAttributeRects(name: name, at: index)
@@ -861,7 +1069,15 @@ public class TextNode: ASDisplayNode {
lineFrame = displayLineFrame(frame: lineFrame, isRTL: line.isRTL, boundingRect: CGRect(origin: CGPoint(), size: bounds.size), cutout: layout.cutout)
}
context.textPosition = CGPoint(x: lineFrame.minX, y: lineFrame.minY)
- CTLineDraw(line.line, context)
+
+ let glyphRuns = CTLineGetGlyphRuns(line.line) as NSArray
+ if glyphRuns.count != 0 {
+ for run in glyphRuns {
+ let run = run as! CTRun
+ let glyphCount = CTRunGetGlyphCount(run)
+ CTRunDraw(run, context, CFRangeMake(0, glyphCount))
+ }
+ }
if !line.strikethroughs.isEmpty {
for strikethrough in line.strikethroughs {
diff --git a/submodules/Display/Display/UIKitUtils.m b/submodules/Display/Display/UIKitUtils.m
index bbf485f230..14f981b2a8 100644
--- a/submodules/Display/Display/UIKitUtils.m
+++ b/submodules/Display/Display/UIKitUtils.m
@@ -116,7 +116,7 @@ void testZoomBlurEffect(UIVisualEffect *effect) {
UIBlurEffect *makeCustomZoomBlurEffect() {
NSString *string = [@[@"_", @"UI", @"Custom", @"BlurEffect"] componentsJoinedByString:@""];
CustomBlurEffect *result = (CustomBlurEffect *)[NSClassFromString(string) effectWithStyle:0];
- result.blurRadius = 7.0;
+ result.blurRadius = 9.0;
result.zoom = 0.015;
result.colorTint = nil;
result.colorTintAlpha = 0.0;
diff --git a/submodules/LanguageSuggestionUI/Info.plist b/submodules/LanguageSuggestionUI/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj/project.pbxproj b/submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..7112528dec
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/LanguageSuggestionUI_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,575 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CB942302B55400FAB518 /* LanguageSuggestionUI.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CB922302B55400FAB518 /* LanguageSuggestionUI.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CB9F2302B5CF00FAB518 /* LanguageSuggestionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CB9E2302B5CF00FAB518 /* LanguageSuggestionController.swift */; };
+ D0C9CBA22302B60B00FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA12302B60A00FAB518 /* Foundation.framework */; };
+ D0C9CBA42302B61000FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA32302B61000FAB518 /* UIKit.framework */; };
+ D0C9CBA62302B61100FAB518 /* SwiftSignalKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA52302B61100FAB518 /* SwiftSignalKit.framework */; };
+ D0C9CBA82302B61600FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA72302B61600FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9CBAA2302B61B00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBA92302B61B00FAB518 /* Display.framework */; };
+ D0C9CBAC2302B62300FAB518 /* TelegramCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBAB2302B62300FAB518 /* TelegramCore.framework */; };
+ D0C9CBAE2302B62900FAB518 /* TelegramPresentationData.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBAD2302B62900FAB518 /* TelegramPresentationData.framework */; };
+ D0C9CBB02302B62E00FAB518 /* ActivityIndicator.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBAF2302B62E00FAB518 /* ActivityIndicator.framework */; };
+ D0C9CBB22302B63500FAB518 /* AccountContext.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBB12302B63500FAB518 /* AccountContext.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CB8F2302B55400FAB518 /* LanguageSuggestionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = LanguageSuggestionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB922302B55400FAB518 /* LanguageSuggestionUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LanguageSuggestionUI.h; sourceTree = ""; };
+ D0C9CB932302B55400FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CB9E2302B5CF00FAB518 /* LanguageSuggestionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LanguageSuggestionController.swift; sourceTree = ""; };
+ D0C9CBA12302B60A00FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CBA32302B61000FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CBA52302B61100FAB518 /* SwiftSignalKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SwiftSignalKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBA72302B61600FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBA92302B61B00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBAB2302B62300FAB518 /* TelegramCore.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBAD2302B62900FAB518 /* TelegramPresentationData.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TelegramPresentationData.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBAF2302B62E00FAB518 /* ActivityIndicator.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ActivityIndicator.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBB12302B63500FAB518 /* AccountContext.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AccountContext.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CB8C2302B55400FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CBB22302B63500FAB518 /* AccountContext.framework in Frameworks */,
+ D0C9CBB02302B62E00FAB518 /* ActivityIndicator.framework in Frameworks */,
+ D0C9CBAE2302B62900FAB518 /* TelegramPresentationData.framework in Frameworks */,
+ D0C9CBAC2302B62300FAB518 /* TelegramCore.framework in Frameworks */,
+ D0C9CBAA2302B61B00FAB518 /* Display.framework in Frameworks */,
+ D0C9CBA82302B61600FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9CBA62302B61100FAB518 /* SwiftSignalKit.framework in Frameworks */,
+ D0C9CBA42302B61000FAB518 /* UIKit.framework in Frameworks */,
+ D0C9CBA22302B60B00FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CB852302B55400FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB932302B55400FAB518 /* Info.plist */,
+ D0C9CB912302B55400FAB518 /* Sources */,
+ D0C9CB902302B55400FAB518 /* Products */,
+ D0C9CBA02302B60900FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9CB902302B55400FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB8F2302B55400FAB518 /* LanguageSuggestionUI.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CB912302B55400FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CB9E2302B5CF00FAB518 /* LanguageSuggestionController.swift */,
+ D0C9CB922302B55400FAB518 /* LanguageSuggestionUI.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CBA02302B60900FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBB12302B63500FAB518 /* AccountContext.framework */,
+ D0C9CBAF2302B62E00FAB518 /* ActivityIndicator.framework */,
+ D0C9CBAD2302B62900FAB518 /* TelegramPresentationData.framework */,
+ D0C9CBAB2302B62300FAB518 /* TelegramCore.framework */,
+ D0C9CBA92302B61B00FAB518 /* Display.framework */,
+ D0C9CBA72302B61600FAB518 /* AsyncDisplayKit.framework */,
+ D0C9CBA52302B61100FAB518 /* SwiftSignalKit.framework */,
+ D0C9CBA32302B61000FAB518 /* UIKit.framework */,
+ D0C9CBA12302B60A00FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CB8A2302B55400FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB942302B55400FAB518 /* LanguageSuggestionUI.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CB8E2302B55400FAB518 /* LanguageSuggestionUI */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CB972302B55400FAB518 /* Build configuration list for PBXNativeTarget "LanguageSuggestionUI" */;
+ buildPhases = (
+ D0C9CB8A2302B55400FAB518 /* Headers */,
+ D0C9CB8B2302B55400FAB518 /* Sources */,
+ D0C9CB8C2302B55400FAB518 /* Frameworks */,
+ D0C9CB8D2302B55400FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = LanguageSuggestionUI;
+ productName = LanguageSuggestionUI;
+ productReference = D0C9CB8F2302B55400FAB518 /* LanguageSuggestionUI.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CB862302B55400FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CB8E2302B55400FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CB892302B55400FAB518 /* Build configuration list for PBXProject "LanguageSuggestionUI_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CB852302B55400FAB518;
+ productRefGroup = D0C9CB902302B55400FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CB8E2302B55400FAB518 /* LanguageSuggestionUI */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CB8D2302B55400FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CB8B2302B55400FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CB9F2302B5CF00FAB518 /* LanguageSuggestionController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CB952302B55400FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CB962302B55400FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB982302B55400FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.LanguageSuggestionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CB992302B55400FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.LanguageSuggestionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CB9A2302B59500FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CB9B2302B59500FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.LanguageSuggestionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CB9C2302B5A000FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+ D0C9CB9D2302B5A000FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.LanguageSuggestionUI;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9CB892302B55400FAB518 /* Build configuration list for PBXProject "LanguageSuggestionUI_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB952302B55400FAB518 /* DebugAppStoreLLC */,
+ D0C9CB9A2302B59500FAB518 /* DebugHockeyapp */,
+ D0C9CB962302B55400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB9C2302B5A000FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CB972302B55400FAB518 /* Build configuration list for PBXNativeTarget "LanguageSuggestionUI" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CB982302B55400FAB518 /* DebugAppStoreLLC */,
+ D0C9CB9B2302B59500FAB518 /* DebugHockeyapp */,
+ D0C9CB992302B55400FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CB9D2302B5A000FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CB862302B55400FAB518 /* Project object */;
+}
diff --git a/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionController.swift b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionController.swift
new file mode 100644
index 0000000000..f063030898
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionController.swift
@@ -0,0 +1,370 @@
+import Foundation
+import UIKit
+import SwiftSignalKit
+import AsyncDisplayKit
+import Display
+import TelegramCore
+import TelegramPresentationData
+import ActivityIndicator
+import AccountContext
+
+public struct LanguageSuggestionControllerStrings {
+ let ChooseLanguage: String
+ let Other: String
+ let English: String
+
+ public init(localization: SuggestedLocalizationInfo) {
+ var chooseLanguage = "Choose Your Language"
+ var other = "Other"
+ var english = "English"
+
+ for entry in localization.extractedEntries {
+ switch entry {
+ case let .string(key, value):
+ switch key {
+ case "Localization.ChooseLanguage":
+ chooseLanguage = value
+ case "Localization.LanguageOther":
+ other = value
+ case "Localization.EnglishLanguageName":
+ english = value
+ default:
+ break
+ }
+ default:
+ break
+ }
+ }
+
+ self.ChooseLanguage = chooseLanguage
+ self.Other = other
+ self.English = english
+ }
+
+ public init(bundle: Bundle?) {
+ var chooseLanguage = "Choose Your Language"
+ var other = "Other"
+ var english = "English"
+
+ if let bundle = bundle {
+ for key in LanguageSuggestionControllerStrings.keys {
+ let value = bundle.localizedString(forKey: key, value: nil, table: nil)
+ if value != key {
+ switch key {
+ case "Localization.ChooseLanguage":
+ chooseLanguage = value
+ case "Localization.LanguageOther":
+ other = value
+ case "Localization.EnglishLanguageName":
+ english = value
+ default:
+ break
+ }
+ }
+ }
+ }
+
+ self.ChooseLanguage = chooseLanguage
+ self.Other = other
+ self.English = english
+ }
+
+ public static let keys: [String] = [
+ "Localization.ChooseLanguage",
+ "Localization.LanguageOther",
+ "Localization.EnglishLanguageName"
+ ]
+}
+
+private enum LanguageSuggestionItemType {
+ case localization(String)
+ case disclosure
+ case action
+}
+
+private struct LanguageSuggestionItem {
+ public let type: LanguageSuggestionItemType
+ public let title: String
+ public let subtitle: String?
+ public let action: () -> Void
+
+ public init(type: LanguageSuggestionItemType, title: String, subtitle: String?, action: @escaping () -> Void) {
+ self.type = type
+ self.title = title
+ self.subtitle = subtitle
+ self.action = action
+ }
+}
+
+private final class LanguageSuggestionItemNode: HighlightableButtonNode {
+ private let backgroundNode: ASDisplayNode
+ private let separatorNode: ASDisplayNode
+ private let subtitleNode: ASTextNode
+ private let iconNode: ASImageNode
+
+ let item: LanguageSuggestionItem
+
+ override var isSelected: Bool {
+ didSet {
+ if case .localization = self.item.type {
+ self.iconNode.isHidden = !self.isSelected
+ }
+ }
+ }
+
+ init(theme: PresentationTheme, item: LanguageSuggestionItem) {
+ self.item = item
+
+ self.backgroundNode = ASDisplayNode()
+ self.backgroundNode.isLayerBacked = true
+ self.backgroundNode.backgroundColor = theme.actionSheet.opaqueItemHighlightedBackgroundColor
+ self.backgroundNode.alpha = 0.0
+
+ self.separatorNode = ASDisplayNode()
+ self.separatorNode.backgroundColor = theme.actionSheet.opaqueItemSeparatorColor
+
+ self.subtitleNode = ASTextNode()
+
+ self.iconNode = ASImageNode()
+
+ super.init()
+
+ self.addSubnode(self.subtitleNode)
+ self.addSubnode(self.separatorNode)
+ self.addSubnode(self.iconNode)
+
+ var color: UIColor = theme.actionSheet.primaryTextColor
+ var alignment: ASHorizontalAlignment = .left
+ var inset: CGFloat = 19.0
+ var icon: UIImage?
+ switch item.type {
+ case .action:
+ alignment = .middle
+ color = theme.actionSheet.controlAccentColor
+ inset = 0.0
+ case .disclosure:
+ icon = PresentationResourcesItemList.disclosureArrowImage(theme)
+ case .localization:
+ icon = PresentationResourcesItemList.checkIconImage(theme)
+ }
+
+ self.iconNode.image = icon
+ self.contentHorizontalAlignment = alignment
+ self.setTitle(item.title, with: Font.regular(17.0), with: color, for: [])
+
+ var titleVerticalOffset: CGFloat = 0.0
+ if let subtitle = item.subtitle {
+ self.subtitleNode.attributedText = NSAttributedString(string: subtitle, font: Font.regular(14.0), textColor: theme.actionSheet.secondaryTextColor)
+ titleVerticalOffset = 20.0
+ }
+ self.contentEdgeInsets = UIEdgeInsets(top: 0.0, left: inset, bottom: titleVerticalOffset, right: 0.0)
+
+ self.highligthedChanged = { [weak self] value in
+ if let strongSelf = self {
+ if value {
+ if strongSelf.backgroundNode.supernode == nil {
+ strongSelf.insertSubnode(strongSelf.backgroundNode, at: 0)
+ }
+ strongSelf.backgroundNode.layer.removeAnimation(forKey: "opacity")
+ strongSelf.backgroundNode.alpha = 1.0
+ } else if !strongSelf.backgroundNode.alpha.isZero {
+ strongSelf.backgroundNode.alpha = 0.0
+ strongSelf.backgroundNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.25)
+ }
+ }
+ }
+ }
+
+ override func didLoad() {
+ super.didLoad()
+
+ self.addTarget(self, action: #selector(self.pressed), forControlEvents: .touchUpInside)
+ }
+
+ @objc func pressed() {
+ self.item.action()
+ }
+
+ public func updateLayout(_ constrainedSize: CGSize) -> CGSize {
+ let bounds = CGRect(origin: CGPoint(), size: CGSize(width: constrainedSize.width, height: self.item.subtitle != nil ? 58.0 : 44.0))
+ self.backgroundNode.frame = bounds
+
+ let subtitleSize = self.subtitleNode.measure(bounds.size)
+ self.subtitleNode.frame = CGRect(origin: CGPoint(x: 19.0, y: 31.0), size: subtitleSize)
+ self.separatorNode.frame = CGRect(x: 0.0, y: bounds.height - UIScreenPixel, width: bounds.width, height: UIScreenPixel)
+ if let icon = self.iconNode.image {
+ self.iconNode.frame = CGRect(origin: CGPoint(x: bounds.width - icon.size.width - 19.0, y: floorToScreenPixels((bounds.height - icon.size.height) / 2.0)), size: icon.size)
+ }
+ return bounds.size
+ }
+}
+
+private final class LanguageSuggestionAlertContentNode: AlertContentNode {
+ private var validLayout: CGSize?
+
+ private let titleNode: ASTextNode
+ private let subtitleNode: ASTextNode
+ private let titleSeparatorNode: ASDisplayNode
+ private let activityIndicator: ActivityIndicator
+
+ private var nodes: [LanguageSuggestionItemNode]
+
+ private let disposable = MetaDisposable()
+
+ override var dismissOnOutsideTap: Bool {
+ return self.isUserInteractionEnabled
+ }
+
+ init(theme: PresentationTheme, strings: LanguageSuggestionControllerStrings, englishStrings: LanguageSuggestionControllerStrings, suggestedLocalization: LocalizationInfo, openSelection: @escaping () -> Void, applyLocalization: @escaping (String, () -> Void) -> Void, dismiss: @escaping () -> Void) {
+ let selectedLocalization = ValuePromise(suggestedLocalization.languageCode, ignoreRepeated: true)
+
+ self.titleNode = ASTextNode()
+ self.titleNode.attributedText = NSAttributedString(string: strings.ChooseLanguage, font: Font.bold(17.0), textColor: theme.actionSheet.primaryTextColor, paragraphAlignment: .center)
+ self.titleNode.maximumNumberOfLines = 2
+
+ self.subtitleNode = ASTextNode()
+ self.subtitleNode.attributedText = NSAttributedString(string: englishStrings.ChooseLanguage, font: Font.regular(14.0), textColor: theme.actionSheet.secondaryTextColor, paragraphAlignment: .center)
+ self.subtitleNode.maximumNumberOfLines = 2
+
+ self.titleSeparatorNode = ASDisplayNode()
+ self.titleSeparatorNode.backgroundColor = theme.actionSheet.opaqueItemSeparatorColor
+
+ self.activityIndicator = ActivityIndicator(type: .custom(theme.actionSheet.controlAccentColor, 22.0, 1.0, false))
+ self.activityIndicator.isHidden = true
+
+ var items: [LanguageSuggestionItem] = []
+ items.append(LanguageSuggestionItem(type: .localization(suggestedLocalization.languageCode), title: suggestedLocalization.localizedTitle, subtitle: suggestedLocalization.title, action: {
+ selectedLocalization.set(suggestedLocalization.languageCode)
+ }))
+ items.append(LanguageSuggestionItem(type: .localization("en"), title: strings.English, subtitle: englishStrings.English, action: {
+ selectedLocalization.set("en")
+ }))
+ items.append(LanguageSuggestionItem(type: .disclosure, title: strings.Other, subtitle: englishStrings.Other != strings.Other ? englishStrings.Other : nil, action: {
+ openSelection()
+ }))
+
+ var applyImpl: (() -> Void)?
+ items.append(LanguageSuggestionItem(type: .action, title: "OK", subtitle: nil, action: {
+ applyImpl?()
+ }))
+
+ self.nodes = items.map { LanguageSuggestionItemNode(theme: theme, item: $0) }
+
+ super.init()
+
+ self.addSubnode(self.titleNode)
+ self.addSubnode(self.subtitleNode)
+ self.addSubnode(self.titleSeparatorNode)
+ self.addSubnode(self.activityIndicator)
+ for node in self.nodes {
+ self.addSubnode(node)
+ }
+
+ self.disposable.set(selectedLocalization.get().start(next: { [weak self] selectedCode in
+ if let strongSelf = self {
+ for node in strongSelf.nodes {
+ if case let .localization(code) = node.item.type {
+ node.isSelected = code == selectedCode
+ }
+ }
+ }
+ }))
+
+ applyImpl = { [weak self] in
+ if let strongSelf = self {
+ strongSelf.isUserInteractionEnabled = false
+
+ _ = (selectedLocalization.get()
+ |> take(1)).start(next: { selectedCode in
+ applyLocalization(selectedCode, { [weak self] in
+ if let strongSelf = self {
+ strongSelf.activityIndicator.isHidden = false
+ if let lastNode = strongSelf.nodes.last {
+ lastNode.isHidden = true
+ }
+ }
+ })
+ })
+ }
+ }
+ }
+
+ deinit {
+ self.disposable.dispose()
+ }
+
+ override func updateLayout(size: CGSize, transition: ContainedViewLayoutTransition) -> CGSize {
+ var size = size
+ size.width = min(size.width, 270.0)
+
+ self.validLayout = size
+
+ var origin: CGPoint = CGPoint(x: 0.0, y: 17.0)
+
+ let titleSize = self.titleNode.measure(size)
+ transition.updateFrame(node: self.titleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - titleSize.width) / 2.0), y: origin.y), size: titleSize))
+ origin.y += titleSize.height + 3.0
+
+ let subtitleSize = self.subtitleNode.measure(size)
+ transition.updateFrame(node: self.subtitleNode, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - subtitleSize.width) / 2.0), y: origin.y), size: subtitleSize))
+ origin.y += subtitleSize.height + 17.0
+ transition.updateFrame(node: self.titleSeparatorNode, frame: CGRect(x: 0.0, y: origin.y - UIScreenPixel, width: size.width, height: UIScreenPixel))
+
+ var lastNodeSize: CGSize?
+ for node in self.nodes {
+ let size = node.updateLayout(size)
+ transition.updateFrame(node: node, frame: CGRect(origin: origin, size: size))
+ origin.y += size.height
+ lastNodeSize = size
+ }
+
+ if let lastSize = lastNodeSize {
+ let indicatorSize = self.activityIndicator.measure(CGSize(width: 100.0, height: 100.0))
+ transition.updateFrame(node: self.activityIndicator, frame: CGRect(origin: CGPoint(x: floorToScreenPixels((size.width - indicatorSize.width) / 2.0), y: origin.y - lastSize.height + floorToScreenPixels((lastSize.height - indicatorSize.height) / 2.0)), size: indicatorSize))
+ }
+
+ return CGSize(width: size.width, height: origin.y - UIScreenPixel)
+ }
+}
+
+public func languageSuggestionController(context: AccountContext, suggestedLocalization: SuggestedLocalizationInfo, currentLanguageCode: String, openSelection: @escaping () -> Void) -> AlertController? {
+ guard let localization = suggestedLocalization.availableLocalizations.filter({ $0.languageCode == suggestedLocalization.languageCode }).first else {
+ return nil
+ }
+
+ let theme = context.sharedContext.currentPresentationData.with { $0 }.theme
+ let strings = LanguageSuggestionControllerStrings(localization: suggestedLocalization)
+ guard let mainPath = Bundle.main.path(forResource: "en", ofType: "lproj") else {
+ return nil
+ }
+ let englishStrings = LanguageSuggestionControllerStrings(bundle: Bundle(path: mainPath))
+
+ let disposable = MetaDisposable()
+
+ var dismissImpl: ((Bool) -> Void)?
+ let contentNode = LanguageSuggestionAlertContentNode(theme: theme, strings: strings, englishStrings: englishStrings, suggestedLocalization: localization, openSelection: {
+ dismissImpl?(true)
+ openSelection()
+ }, applyLocalization: { languageCode, startActivity in
+ if languageCode == currentLanguageCode {
+ dismissImpl?(true)
+ } else {
+ startActivity()
+ disposable.set((downloadAndApplyLocalization(accountManager: context.sharedContext.accountManager, postbox: context.account.postbox, network: context.account.network, languageCode: languageCode)
+ |> deliverOnMainQueue).start(completed: {
+ dismissImpl?(true)
+ }))
+ }
+ }, dismiss: {
+ dismissImpl?(true)
+ })
+ let controller = AlertController(theme: AlertControllerTheme(presentationTheme: theme), contentNode: contentNode)
+ dismissImpl = { [weak controller] animated in
+ if animated {
+ controller?.dismissAnimated()
+ } else {
+ controller?.dismiss()
+ }
+ }
+ return controller
+}
diff --git a/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionUI.h b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionUI.h
new file mode 100644
index 0000000000..60b73de811
--- /dev/null
+++ b/submodules/LanguageSuggestionUI/Sources/LanguageSuggestionUI.h
@@ -0,0 +1,19 @@
+//
+// LanguageSuggestionUI.h
+// LanguageSuggestionUI
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for LanguageSuggestionUI.
+FOUNDATION_EXPORT double LanguageSuggestionUIVersionNumber;
+
+//! Project version string for LanguageSuggestionUI.
+FOUNDATION_EXPORT const unsigned char LanguageSuggestionUIVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/LegacyComponents/LegacyComponents/TGCameraController.m b/submodules/LegacyComponents/LegacyComponents/TGCameraController.m
index 0afd5b81ef..f811b49866 100644
--- a/submodules/LegacyComponents/LegacyComponents/TGCameraController.m
+++ b/submodules/LegacyComponents/LegacyComponents/TGCameraController.m
@@ -1173,7 +1173,7 @@ static CGPoint TGCameraControllerClampPointToScreenSize(__unused id self, __unus
TGMediaSelectionContext *selectionContext = _selectionContext;
if (selectionContext == nil)
{
- selectionContext = [[TGMediaSelectionContext alloc] initWithGroupingAllowed:self.allowGrouping selectionLimit:30];
+ selectionContext = [[TGMediaSelectionContext alloc] initWithGroupingAllowed:self.allowGrouping selectionLimit:100];
if (self.allowGrouping)
selectionContext.grouping = true;
_selectionContext = selectionContext;
diff --git a/submodules/LegacyComponents/LegacyComponents/TGClipboardPreviewItemView.m b/submodules/LegacyComponents/LegacyComponents/TGClipboardPreviewItemView.m
index f6bf824a74..8d05d42cb2 100644
--- a/submodules/LegacyComponents/LegacyComponents/TGClipboardPreviewItemView.m
+++ b/submodules/LegacyComponents/LegacyComponents/TGClipboardPreviewItemView.m
@@ -60,7 +60,7 @@ const CGFloat TGClipboardPreviewEdgeInset = 8.0f;
[_collectionView registerClass:[TGClipboardPreviewCell class] forCellWithReuseIdentifier:TGClipboardPreviewCellIdentifier];
[self addSubview:_collectionView];
- _selectionContext = [[TGMediaSelectionContext alloc] initWithGroupingAllowed:false selectionLimit:30];
+ _selectionContext = [[TGMediaSelectionContext alloc] initWithGroupingAllowed:false selectionLimit:100];
for (UIImage *image in _images)
{
diff --git a/submodules/LegacyComponents/LegacyComponents/TGMediaSelectionContext.m b/submodules/LegacyComponents/LegacyComponents/TGMediaSelectionContext.m
index baa2cc218b..bc24af169c 100644
--- a/submodules/LegacyComponents/LegacyComponents/TGMediaSelectionContext.m
+++ b/submodules/LegacyComponents/LegacyComponents/TGMediaSelectionContext.m
@@ -23,7 +23,7 @@
- (instancetype)init
{
- return [self initWithGroupingAllowed:false selectionLimit:30];
+ return [self initWithGroupingAllowed:false selectionLimit:100];
}
- (instancetype)initWithGroupingAllowed:(bool)allowGrouping selectionLimit:(int)selectionLimit
diff --git a/submodules/LegacyComponents/LegacyComponents/TGPassportAttachMenu.m b/submodules/LegacyComponents/LegacyComponents/TGPassportAttachMenu.m
index de20055193..2372fe11d1 100644
--- a/submodules/LegacyComponents/LegacyComponents/TGPassportAttachMenu.m
+++ b/submodules/LegacyComponents/LegacyComponents/TGPassportAttachMenu.m
@@ -51,7 +51,7 @@
__weak TGMenuSheetController *weakController = controller;
__weak TGViewController *weakParentController = parentController;
- TGAttachmentCarouselItemView *carouselItem = [[TGAttachmentCarouselItemView alloc] initWithContext:context camera:true selfPortrait:intent == TGPassportAttachIntentSelfie forProfilePhoto:false assetType:TGMediaAssetPhotoType saveEditedPhotos:false allowGrouping:false allowSelection:intent == TGPassportAttachIntentMultiple allowEditing:true document:true selectionLimit: 10];
+ TGAttachmentCarouselItemView *carouselItem = [[TGAttachmentCarouselItemView alloc] initWithContext:context camera:true selfPortrait:intent == TGPassportAttachIntentSelfie forProfilePhoto:false assetType:TGMediaAssetPhotoType saveEditedPhotos:false allowGrouping:false allowSelection:intent == TGPassportAttachIntentMultiple allowEditing:true document:true selectionLimit:10];
__weak TGAttachmentCarouselItemView *weakCarouselItem = carouselItem;
carouselItem.onlyCrop = true;
carouselItem.parentController = parentController;
diff --git a/submodules/StickerResources/Sources/StickerResources.swift b/submodules/StickerResources/Sources/StickerResources.swift
index d2e98f69d0..497fb6c292 100644
--- a/submodules/StickerResources/Sources/StickerResources.swift
+++ b/submodules/StickerResources/Sources/StickerResources.swift
@@ -9,14 +9,14 @@ import Tuples
import ImageBlur
private func imageFromAJpeg(data: Data) -> (UIImage, UIImage)? {
- if let (colorData, alphaData) = data.withUnsafeBytes({ (bytes: UnsafePointer) -> (Data, Data)? in
+ if let (colorData, alphaData) = data.withUnsafeBytes({ bytes -> (Data, Data)? in
var colorSize: Int32 = 0
- memcpy(&colorSize, bytes, 4)
+ memcpy(&colorSize, bytes.baseAddress, 4)
if colorSize < 0 || Int(colorSize) > data.count - 8 {
return nil
}
var alphaSize: Int32 = 0
- memcpy(&alphaSize, bytes.advanced(by: 4 + Int(colorSize)), 4)
+ memcpy(&alphaSize, bytes.baseAddress?.advanced(by: 4 + Int(colorSize)), 4)
if alphaSize < 0 || Int(alphaSize) > data.count - Int(colorSize) - 8 {
return nil
}
@@ -265,7 +265,6 @@ public func chatMessageAnimatedStickerBackingData(postbox: Postbox, fileReferenc
public func chatMessageLegacySticker(account: Account, file: TelegramMediaFile, small: Bool, fitSize: CGSize, fetched: Bool = false, onlyFullSize: Bool = false) -> Signal<(TransformImageArguments) -> DrawingContext?, NoError> {
let signal = chatMessageStickerDatas(postbox: account.postbox, file: file, small: small, fetched: fetched, onlyFullSize: onlyFullSize, synchronousLoad: false)
return signal |> map { value in
- let thumbnailData = value._0
let fullSizeData = value._1
let fullSizeComplete = value._2
return { preArguments in
diff --git a/submodules/TelegramPresentationData/Sources/ChatMessageBubbleImages.swift b/submodules/TelegramPresentationData/Sources/ChatMessageBubbleImages.swift
index b22f833df9..a20f6152de 100644
--- a/submodules/TelegramPresentationData/Sources/ChatMessageBubbleImages.swift
+++ b/submodules/TelegramPresentationData/Sources/ChatMessageBubbleImages.swift
@@ -1,7 +1,6 @@
import Foundation
import UIKit
import Display
-import TelegramPresentationData
import TelegramCore
public enum MessageBubbleImageNeighbors {
diff --git a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift
index 5fe228a8fe..f00b107d68 100644
--- a/submodules/TelegramPresentationData/Sources/PresentationStrings.swift
+++ b/submodules/TelegramPresentationData/Sources/PresentationStrings.swift
@@ -424,958 +424,958 @@ public final class PresentationStrings {
public var SettingsSearch_Synonyms_Privacy_Data_ContactsSync: String { return self._s[219]! }
public var Notification_CallCanceledShort: String { return self._s[220]! }
public var Passport_Phone_Help: String { return self._s[221]! }
- public var Chat_AttachmentLimitExceeded: String { return self._s[223]! }
- public var Passport_Language_az: String { return self._s[224]! }
- public var CreatePoll_TextPlaceholder: String { return self._s[226]! }
- public var VoiceOver_Chat_AnonymousPoll: String { return self._s[227]! }
- public var Passport_Identity_DocumentNumber: String { return self._s[228]! }
- public var PhotoEditor_CurvesRed: String { return self._s[229]! }
- public var PhoneNumberHelp_Alert: String { return self._s[231]! }
- public var SocksProxySetup_Port: String { return self._s[232]! }
- public var Checkout_PayNone: String { return self._s[233]! }
- public var AutoDownloadSettings_WiFi: String { return self._s[234]! }
- public var GroupInfo_GroupType: String { return self._s[235]! }
- public var StickerSettings_ContextHide: String { return self._s[236]! }
- public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[237]! }
- public var Group_Setup_HistoryTitle: String { return self._s[239]! }
- public var Passport_Identity_FilesUploadNew: String { return self._s[240]! }
- public var PasscodeSettings_AutoLock: String { return self._s[241]! }
- public var Passport_Title: String { return self._s[242]! }
- public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[243]! }
- public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[244]! }
- public var GroupPermission_NoSendGifs: String { return self._s[245]! }
- public var PrivacySettings_PasscodeOn: String { return self._s[246]! }
+ public var Passport_Language_az: String { return self._s[223]! }
+ public var CreatePoll_TextPlaceholder: String { return self._s[225]! }
+ public var VoiceOver_Chat_AnonymousPoll: String { return self._s[226]! }
+ public var Passport_Identity_DocumentNumber: String { return self._s[227]! }
+ public var PhotoEditor_CurvesRed: String { return self._s[228]! }
+ public var PhoneNumberHelp_Alert: String { return self._s[230]! }
+ public var SocksProxySetup_Port: String { return self._s[231]! }
+ public var Checkout_PayNone: String { return self._s[232]! }
+ public var AutoDownloadSettings_WiFi: String { return self._s[233]! }
+ public var GroupInfo_GroupType: String { return self._s[234]! }
+ public var StickerSettings_ContextHide: String { return self._s[235]! }
+ public var Passport_Address_OneOfTypeTemporaryRegistration: String { return self._s[236]! }
+ public var Group_Setup_HistoryTitle: String { return self._s[238]! }
+ public var Passport_Identity_FilesUploadNew: String { return self._s[239]! }
+ public var PasscodeSettings_AutoLock: String { return self._s[240]! }
+ public var Passport_Title: String { return self._s[241]! }
+ public var VoiceOver_Chat_ContactPhoneNumber: String { return self._s[242]! }
+ public var Channel_AdminLogFilter_EventsNewSubscribers: String { return self._s[243]! }
+ public var GroupPermission_NoSendGifs: String { return self._s[244]! }
+ public var PrivacySettings_PasscodeOn: String { return self._s[245]! }
public func Conversation_ScheduleMessage_SendTomorrow(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[247]!, self._r[247]!, [_0])
+ return formatWithArgumentRanges(self._s[246]!, self._r[246]!, [_0])
}
- public var State_WaitingForNetwork: String { return self._s[249]! }
+ public var State_WaitingForNetwork: String { return self._s[248]! }
public func Notification_Invited(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[250]!, self._r[250]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[249]!, self._r[249]!, [_0, _1])
}
- public var Calls_NotNow: String { return self._s[252]! }
+ public var Calls_NotNow: String { return self._s[251]! }
public func Channel_DiscussionGroup_HeaderSet(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[253]!, self._r[253]!, [_0])
+ return formatWithArgumentRanges(self._s[252]!, self._r[252]!, [_0])
}
- public var UserInfo_SendMessage: String { return self._s[254]! }
- public var TwoStepAuth_PasswordSet: String { return self._s[255]! }
- public var Passport_DeleteDocument: String { return self._s[256]! }
- public var SocksProxySetup_AddProxyTitle: String { return self._s[257]! }
+ public var UserInfo_SendMessage: String { return self._s[253]! }
+ public var TwoStepAuth_PasswordSet: String { return self._s[254]! }
+ public var Passport_DeleteDocument: String { return self._s[255]! }
+ public var SocksProxySetup_AddProxyTitle: String { return self._s[256]! }
public func PUSH_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[258]!, self._r[258]!, [_1])
+ return formatWithArgumentRanges(self._s[257]!, self._r[257]!, [_1])
}
- public var GroupRemoved_Remove: String { return self._s[259]! }
- public var Passport_FieldIdentity: String { return self._s[260]! }
- public var Group_Setup_TypePrivateHelp: String { return self._s[261]! }
- public var Conversation_Processing: String { return self._s[264]! }
- public var ChatSettings_AutoPlayAnimations: String { return self._s[266]! }
- public var AuthSessions_LogOutApplicationsHelp: String { return self._s[269]! }
- public var Month_GenFebruary: String { return self._s[270]! }
+ public var GroupRemoved_Remove: String { return self._s[258]! }
+ public var Passport_FieldIdentity: String { return self._s[259]! }
+ public var Group_Setup_TypePrivateHelp: String { return self._s[260]! }
+ public var Conversation_Processing: String { return self._s[263]! }
+ public var ChatSettings_AutoPlayAnimations: String { return self._s[265]! }
+ public var AuthSessions_LogOutApplicationsHelp: String { return self._s[268]! }
+ public var Month_GenFebruary: String { return self._s[269]! }
public func Login_InvalidPhoneEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[272]!, self._r[272]!, [_1, _2, _3, _4, _5])
+ return formatWithArgumentRanges(self._s[271]!, self._r[271]!, [_1, _2, _3, _4, _5])
}
- public var Passport_Identity_TypeIdentityCard: String { return self._s[273]! }
- public var AutoDownloadSettings_DataUsageMedium: String { return self._s[275]! }
- public var GroupInfo_AddParticipant: String { return self._s[276]! }
- public var KeyCommand_SendMessage: String { return self._s[277]! }
- public var VoiceOver_Chat_YourContact: String { return self._s[279]! }
- public var Map_LiveLocationShowAll: String { return self._s[280]! }
- public var WallpaperSearch_ColorOrange: String { return self._s[282]! }
- public var Appearance_AppIconDefaultX: String { return self._s[283]! }
- public var Checkout_Receipt_Title: String { return self._s[284]! }
- public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[285]! }
- public var WallpaperPreview_PreviewTopText: String { return self._s[286]! }
- public var Message_Contact: String { return self._s[287]! }
- public var Call_StatusIncoming: String { return self._s[288]! }
+ public var Passport_Identity_TypeIdentityCard: String { return self._s[272]! }
+ public var AutoDownloadSettings_DataUsageMedium: String { return self._s[274]! }
+ public var GroupInfo_AddParticipant: String { return self._s[275]! }
+ public var KeyCommand_SendMessage: String { return self._s[276]! }
+ public var VoiceOver_Chat_YourContact: String { return self._s[278]! }
+ public var Map_LiveLocationShowAll: String { return self._s[279]! }
+ public var WallpaperSearch_ColorOrange: String { return self._s[281]! }
+ public var Appearance_AppIconDefaultX: String { return self._s[282]! }
+ public var Checkout_Receipt_Title: String { return self._s[283]! }
+ public var Group_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[284]! }
+ public var WallpaperPreview_PreviewTopText: String { return self._s[285]! }
+ public var Message_Contact: String { return self._s[286]! }
+ public var Call_StatusIncoming: String { return self._s[287]! }
public func Channel_AdminLog_MessageKickedName(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[289]!, self._r[289]!, [_1])
+ return formatWithArgumentRanges(self._s[288]!, self._r[288]!, [_1])
}
public func PUSH_ENCRYPTED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[291]!, self._r[291]!, [_1])
+ return formatWithArgumentRanges(self._s[290]!, self._r[290]!, [_1])
}
- public var VoiceOver_Media_PlaybackRate: String { return self._s[292]! }
- public var Passport_FieldIdentityDetailsHelp: String { return self._s[293]! }
- public var Conversation_ViewChannel: String { return self._s[294]! }
+ public var VoiceOver_Media_PlaybackRate: String { return self._s[291]! }
+ public var Passport_FieldIdentityDetailsHelp: String { return self._s[292]! }
+ public var Conversation_ViewChannel: String { return self._s[293]! }
public func Time_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[295]!, self._r[295]!, [_0])
+ return formatWithArgumentRanges(self._s[294]!, self._r[294]!, [_0])
}
- public var Passport_Language_nl: String { return self._s[297]! }
- public var Camera_Retake: String { return self._s[298]! }
+ public var Passport_Language_nl: String { return self._s[296]! }
+ public var Camera_Retake: String { return self._s[297]! }
public func UserInfo_BlockActionTitle(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[299]!, self._r[299]!, [_0])
+ return formatWithArgumentRanges(self._s[298]!, self._r[298]!, [_0])
}
- public var AuthSessions_LogOutApplications: String { return self._s[300]! }
- public var ApplyLanguage_ApplySuccess: String { return self._s[301]! }
- public var Tour_Title6: String { return self._s[302]! }
- public var Map_ChooseAPlace: String { return self._s[303]! }
- public var CallSettings_Never: String { return self._s[305]! }
+ public var AuthSessions_LogOutApplications: String { return self._s[299]! }
+ public var ApplyLanguage_ApplySuccess: String { return self._s[300]! }
+ public var Tour_Title6: String { return self._s[301]! }
+ public var Map_ChooseAPlace: String { return self._s[302]! }
+ public var CallSettings_Never: String { return self._s[304]! }
public func Notification_ChangedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[306]!, self._r[306]!, [_0])
+ return formatWithArgumentRanges(self._s[305]!, self._r[305]!, [_0])
}
- public var ChannelRemoved_RemoveInfo: String { return self._s[307]! }
+ public var ChannelRemoved_RemoveInfo: String { return self._s[306]! }
public func AutoDownloadSettings_PreloadVideoInfo(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[308]!, self._r[308]!, [_0])
+ return formatWithArgumentRanges(self._s[307]!, self._r[307]!, [_0])
}
- public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[309]! }
+ public var SettingsSearch_Synonyms_Notifications_MessageNotificationsExceptions: String { return self._s[308]! }
public func Conversation_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[310]!, self._r[310]!, [_0])
+ return formatWithArgumentRanges(self._s[309]!, self._r[309]!, [_0])
}
- public var GroupInfo_InviteLink_Title: String { return self._s[311]! }
+ public var GroupInfo_InviteLink_Title: String { return self._s[310]! }
public func Channel_AdminLog_MessageUnkickedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[312]!, self._r[312]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[311]!, self._r[311]!, [_1, _2])
}
- public var KeyCommand_ScrollUp: String { return self._s[313]! }
- public var ContactInfo_URLLabelHomepage: String { return self._s[314]! }
- public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[315]! }
+ public var KeyCommand_ScrollUp: String { return self._s[312]! }
+ public var ContactInfo_URLLabelHomepage: String { return self._s[313]! }
+ public var Channel_OwnershipTransfer_ChangeOwner: String { return self._s[314]! }
public func Channel_AdminLog_DisabledSlowmode(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[316]!, self._r[316]!, [_0])
+ return formatWithArgumentRanges(self._s[315]!, self._r[315]!, [_0])
}
public func Conversation_EncryptedPlaceholderTitleOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[317]!, self._r[317]!, [_0])
+ return formatWithArgumentRanges(self._s[316]!, self._r[316]!, [_0])
}
- public var CallFeedback_ReasonDistortedSpeech: String { return self._s[318]! }
- public var Watch_LastSeen_WithinAWeek: String { return self._s[319]! }
- public var Weekday_Tuesday: String { return self._s[321]! }
- public var ScheduledMessages_Delete: String { return self._s[323]! }
- public var UserInfo_StartSecretChat: String { return self._s[324]! }
- public var Passport_Identity_FilesTitle: String { return self._s[325]! }
- public var Permissions_NotificationsAllow_v0: String { return self._s[326]! }
- public var DialogList_DeleteConversationConfirmation: String { return self._s[328]! }
- public var ChatList_UndoArchiveRevealedTitle: String { return self._s[329]! }
- public var AuthSessions_Sessions: String { return self._s[330]! }
+ public var CallFeedback_ReasonDistortedSpeech: String { return self._s[317]! }
+ public var Watch_LastSeen_WithinAWeek: String { return self._s[318]! }
+ public var Weekday_Tuesday: String { return self._s[320]! }
+ public var ScheduledMessages_Delete: String { return self._s[322]! }
+ public var UserInfo_StartSecretChat: String { return self._s[323]! }
+ public var Passport_Identity_FilesTitle: String { return self._s[324]! }
+ public var Permissions_NotificationsAllow_v0: String { return self._s[325]! }
+ public var DialogList_DeleteConversationConfirmation: String { return self._s[327]! }
+ public var ChatList_UndoArchiveRevealedTitle: String { return self._s[328]! }
+ public var AuthSessions_Sessions: String { return self._s[329]! }
public func Settings_KeepPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[332]!, self._r[332]!, [_0])
+ return formatWithArgumentRanges(self._s[331]!, self._r[331]!, [_0])
}
- public var TwoStepAuth_RecoveryEmailChangeDescription: String { return self._s[333]! }
- public var Call_StatusWaiting: String { return self._s[334]! }
- public var CreateGroup_SoftUserLimitAlert: String { return self._s[335]! }
- public var FastTwoStepSetup_HintHelp: String { return self._s[336]! }
- public var WallpaperPreview_CustomColorBottomText: String { return self._s[337]! }
- public var LogoutOptions_AddAccountText: String { return self._s[338]! }
- public var PasscodeSettings_6DigitCode: String { return self._s[339]! }
- public var Settings_LogoutConfirmationText: String { return self._s[340]! }
- public var Passport_Identity_TypePassport: String { return self._s[342]! }
+ public var TwoStepAuth_RecoveryEmailChangeDescription: String { return self._s[332]! }
+ public var Call_StatusWaiting: String { return self._s[333]! }
+ public var CreateGroup_SoftUserLimitAlert: String { return self._s[334]! }
+ public var FastTwoStepSetup_HintHelp: String { return self._s[335]! }
+ public var WallpaperPreview_CustomColorBottomText: String { return self._s[336]! }
+ public var LogoutOptions_AddAccountText: String { return self._s[337]! }
+ public var PasscodeSettings_6DigitCode: String { return self._s[338]! }
+ public var Settings_LogoutConfirmationText: String { return self._s[339]! }
+ public var Passport_Identity_TypePassport: String { return self._s[341]! }
public func PUSH_MESSAGE_VIDEOS(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[345]!, self._r[345]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[344]!, self._r[344]!, [_1, _2])
}
- public var SocksProxySetup_SaveProxy: String { return self._s[346]! }
- public var AccessDenied_SaveMedia: String { return self._s[347]! }
- public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[349]! }
- public var Settings_Title: String { return self._s[351]! }
- public var VoiceOver_Chat_RecordModeVideoMessageInfo: String { return self._s[352]! }
- public var Contacts_InviteSearchLabel: String { return self._s[354]! }
- public var ConvertToSupergroup_Title: String { return self._s[355]! }
+ public var SocksProxySetup_SaveProxy: String { return self._s[345]! }
+ public var AccessDenied_SaveMedia: String { return self._s[346]! }
+ public var Checkout_ErrorInvoiceAlreadyPaid: String { return self._s[348]! }
+ public var Settings_Title: String { return self._s[350]! }
+ public var VoiceOver_Chat_RecordModeVideoMessageInfo: String { return self._s[351]! }
+ public var Contacts_InviteSearchLabel: String { return self._s[353]! }
+ public var ConvertToSupergroup_Title: String { return self._s[354]! }
public func Channel_AdminLog_CaptionEdited(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[356]!, self._r[356]!, [_0])
+ return formatWithArgumentRanges(self._s[355]!, self._r[355]!, [_0])
}
- public var InfoPlist_NSSiriUsageDescription: String { return self._s[357]! }
+ public var InfoPlist_NSSiriUsageDescription: String { return self._s[356]! }
public func PUSH_MESSAGE_CHANNEL_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[358]!, self._r[358]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[357]!, self._r[357]!, [_1, _2, _3])
}
- public var ChatSettings_AutomaticPhotoDownload: String { return self._s[359]! }
- public var UserInfo_BotHelp: String { return self._s[360]! }
- public var PrivacySettings_LastSeenEverybody: String { return self._s[361]! }
- public var Checkout_Name: String { return self._s[362]! }
- public var AutoDownloadSettings_DataUsage: String { return self._s[363]! }
- public var Channel_BanUser_BlockFor: String { return self._s[364]! }
- public var Checkout_ShippingAddress: String { return self._s[365]! }
- public var AutoDownloadSettings_MaxVideoSize: String { return self._s[366]! }
- public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[367]! }
- public var Privacy_Forwards: String { return self._s[368]! }
- public var Channel_BanUser_PermissionSendPolls: String { return self._s[369]! }
- public var Appearance_ThemeCarouselNewNight: String { return self._s[370]! }
+ public var ChatSettings_AutomaticPhotoDownload: String { return self._s[358]! }
+ public var UserInfo_BotHelp: String { return self._s[359]! }
+ public var PrivacySettings_LastSeenEverybody: String { return self._s[360]! }
+ public var Checkout_Name: String { return self._s[361]! }
+ public var AutoDownloadSettings_DataUsage: String { return self._s[362]! }
+ public var Channel_BanUser_BlockFor: String { return self._s[363]! }
+ public var Checkout_ShippingAddress: String { return self._s[364]! }
+ public var AutoDownloadSettings_MaxVideoSize: String { return self._s[365]! }
+ public var Privacy_PaymentsClearInfoDoneHelp: String { return self._s[366]! }
+ public var Privacy_Forwards: String { return self._s[367]! }
+ public var Channel_BanUser_PermissionSendPolls: String { return self._s[368]! }
+ public var Appearance_ThemeCarouselNewNight: String { return self._s[369]! }
public func SecretVideo_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[373]!, self._r[373]!, [_0])
+ return formatWithArgumentRanges(self._s[372]!, self._r[372]!, [_0])
}
- public var Contacts_SortedByName: String { return self._s[374]! }
- public var Group_OwnershipTransfer_Title: String { return self._s[375]! }
- public var VoiceOver_Chat_OpenHint: String { return self._s[376]! }
- public var Group_LeaveGroup: String { return self._s[377]! }
- public var Settings_UsernameEmpty: String { return self._s[378]! }
+ public var Contacts_SortedByName: String { return self._s[373]! }
+ public var Group_OwnershipTransfer_Title: String { return self._s[374]! }
+ public var VoiceOver_Chat_OpenHint: String { return self._s[375]! }
+ public var Group_LeaveGroup: String { return self._s[376]! }
+ public var Settings_UsernameEmpty: String { return self._s[377]! }
public func Notification_PinnedPollMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[379]!, self._r[379]!, [_0])
+ return formatWithArgumentRanges(self._s[378]!, self._r[378]!, [_0])
}
public func TwoStepAuth_ConfirmEmailDescription(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[380]!, self._r[380]!, [_1])
+ return formatWithArgumentRanges(self._s[379]!, self._r[379]!, [_1])
}
public func Channel_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[381]!, self._r[381]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[380]!, self._r[380]!, [_1, _2])
}
- public var Message_ImageExpired: String { return self._s[382]! }
- public var TwoStepAuth_RecoveryFailed: String { return self._s[384]! }
- public var UserInfo_AddToExisting: String { return self._s[385]! }
- public var TwoStepAuth_EnabledSuccess: String { return self._s[386]! }
- public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[387]! }
+ public var Message_ImageExpired: String { return self._s[381]! }
+ public var TwoStepAuth_RecoveryFailed: String { return self._s[383]! }
+ public var UserInfo_AddToExisting: String { return self._s[384]! }
+ public var TwoStepAuth_EnabledSuccess: String { return self._s[385]! }
+ public var SettingsSearch_Synonyms_Appearance_ChatBackground_SetColor: String { return self._s[386]! }
public func PUSH_CHANNEL_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[388]!, self._r[388]!, [_1])
+ return formatWithArgumentRanges(self._s[387]!, self._r[387]!, [_1])
}
- public var Notifications_GroupNotificationsAlert: String { return self._s[389]! }
- public var Passport_Language_km: String { return self._s[390]! }
- public var SocksProxySetup_AdNoticeHelp: String { return self._s[392]! }
- public var VoiceOver_Media_PlaybackPlay: String { return self._s[393]! }
- public var Notification_CallMissedShort: String { return self._s[394]! }
- public var ReportPeer_ReasonOther_Send: String { return self._s[395]! }
- public var Watch_Compose_Send: String { return self._s[396]! }
- public var Passport_Identity_TypeInternalPassportUploadScan: String { return self._s[399]! }
- public var Conversation_HoldForVideo: String { return self._s[400]! }
- public var CheckoutInfo_ErrorCityInvalid: String { return self._s[402]! }
- public var Appearance_AutoNightThemeDisabled: String { return self._s[404]! }
- public var Channel_LinkItem: String { return self._s[405]! }
+ public var Notifications_GroupNotificationsAlert: String { return self._s[388]! }
+ public var Passport_Language_km: String { return self._s[389]! }
+ public var SocksProxySetup_AdNoticeHelp: String { return self._s[391]! }
+ public var VoiceOver_Media_PlaybackPlay: String { return self._s[392]! }
+ public var Notification_CallMissedShort: String { return self._s[393]! }
+ public var ReportPeer_ReasonOther_Send: String { return self._s[394]! }
+ public var Watch_Compose_Send: String { return self._s[395]! }
+ public var Passport_Identity_TypeInternalPassportUploadScan: String { return self._s[398]! }
+ public var Conversation_HoldForVideo: String { return self._s[399]! }
+ public var CheckoutInfo_ErrorCityInvalid: String { return self._s[401]! }
+ public var Appearance_AutoNightThemeDisabled: String { return self._s[403]! }
+ public var Channel_LinkItem: String { return self._s[404]! }
public func PrivacySettings_LastSeenContactsMinusPlus(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[406]!, self._r[406]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[405]!, self._r[405]!, [_0, _1])
}
public func Passport_Identity_NativeNameTitle(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[409]!, self._r[409]!, [_0])
+ return formatWithArgumentRanges(self._s[408]!, self._r[408]!, [_0])
}
- public var VoiceOver_Recording_StopAndPreview: String { return self._s[410]! }
- public var Passport_Language_dv: String { return self._s[411]! }
- public var Undo_LeftChannel: String { return self._s[412]! }
- public var Notifications_ExceptionsMuted: String { return self._s[413]! }
- public var ChatList_UnhideAction: String { return self._s[414]! }
- public var Conversation_ContextMenuShare: String { return self._s[415]! }
- public var Conversation_ContextMenuStickerPackInfo: String { return self._s[416]! }
- public var ShareFileTip_Title: String { return self._s[417]! }
- public var NotificationsSound_Chord: String { return self._s[418]! }
+ public var VoiceOver_Recording_StopAndPreview: String { return self._s[409]! }
+ public var Passport_Language_dv: String { return self._s[410]! }
+ public var Undo_LeftChannel: String { return self._s[411]! }
+ public var Notifications_ExceptionsMuted: String { return self._s[412]! }
+ public var ChatList_UnhideAction: String { return self._s[413]! }
+ public var Conversation_ContextMenuShare: String { return self._s[414]! }
+ public var Conversation_ContextMenuStickerPackInfo: String { return self._s[415]! }
+ public var ShareFileTip_Title: String { return self._s[416]! }
+ public var NotificationsSound_Chord: String { return self._s[417]! }
public func PUSH_CHAT_RETURNED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[419]!, self._r[419]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[418]!, self._r[418]!, [_1, _2])
}
- public var Passport_Address_EditTemporaryRegistration: String { return self._s[420]! }
+ public var Passport_Address_EditTemporaryRegistration: String { return self._s[419]! }
public func Notification_Joined(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[421]!, self._r[421]!, [_0])
+ return formatWithArgumentRanges(self._s[420]!, self._r[420]!, [_0])
}
- public var Notification_CallOutgoingShort: String { return self._s[423]! }
+ public var Notification_CallOutgoingShort: String { return self._s[422]! }
public func Watch_Time_ShortFullAt(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[424]!, self._r[424]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[423]!, self._r[423]!, [_1, _2])
}
- public var Passport_Address_TypeUtilityBill: String { return self._s[425]! }
- public var Privacy_Forwards_LinkIfAllowed: String { return self._s[426]! }
- public var ReportPeer_Report: String { return self._s[427]! }
- public var SettingsSearch_Synonyms_Proxy_Title: String { return self._s[428]! }
- public var GroupInfo_DeactivatedStatus: String { return self._s[429]! }
+ public var Passport_Address_TypeUtilityBill: String { return self._s[424]! }
+ public var Privacy_Forwards_LinkIfAllowed: String { return self._s[425]! }
+ public var ReportPeer_Report: String { return self._s[426]! }
+ public var SettingsSearch_Synonyms_Proxy_Title: String { return self._s[427]! }
+ public var GroupInfo_DeactivatedStatus: String { return self._s[428]! }
public func VoiceOver_Chat_MusicTitle(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[430]!, self._r[430]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[429]!, self._r[429]!, [_1, _2])
}
- public var StickerPack_Send: String { return self._s[431]! }
- public var Login_CodeSentInternal: String { return self._s[432]! }
- public var GroupInfo_InviteLink_LinkSection: String { return self._s[433]! }
+ public var StickerPack_Send: String { return self._s[430]! }
+ public var Login_CodeSentInternal: String { return self._s[431]! }
+ public var GroupInfo_InviteLink_LinkSection: String { return self._s[432]! }
public func Channel_AdminLog_MessageDeleted(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[434]!, self._r[434]!, [_0])
+ return formatWithArgumentRanges(self._s[433]!, self._r[433]!, [_0])
}
public func Conversation_EncryptionWaiting(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[436]!, self._r[436]!, [_0])
+ return formatWithArgumentRanges(self._s[435]!, self._r[435]!, [_0])
}
- public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[437]! }
+ public var Channel_BanUser_PermissionSendStickersAndGifs: String { return self._s[436]! }
public func PUSH_PINNED_GAME(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[438]!, self._r[438]!, [_1])
+ return formatWithArgumentRanges(self._s[437]!, self._r[437]!, [_1])
}
- public var ReportPeer_ReasonViolence: String { return self._s[440]! }
- public var Map_Locating: String { return self._s[441]! }
+ public var ReportPeer_ReasonViolence: String { return self._s[439]! }
+ public var Map_Locating: String { return self._s[440]! }
public func VoiceOver_Chat_VideoFrom(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[442]!, self._r[442]!, [_0])
+ return formatWithArgumentRanges(self._s[441]!, self._r[441]!, [_0])
}
- public var AutoDownloadSettings_GroupChats: String { return self._s[444]! }
- public var CheckoutInfo_SaveInfo: String { return self._s[445]! }
- public var SharedMedia_EmptyLinksText: String { return self._s[447]! }
- public var Passport_Address_CityPlaceholder: String { return self._s[448]! }
- public var CheckoutInfo_ErrorStateInvalid: String { return self._s[449]! }
- public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[450]! }
- public var Channel_AdminLog_CanAddAdmins: String { return self._s[452]! }
+ public var AutoDownloadSettings_GroupChats: String { return self._s[443]! }
+ public var CheckoutInfo_SaveInfo: String { return self._s[444]! }
+ public var SharedMedia_EmptyLinksText: String { return self._s[446]! }
+ public var Passport_Address_CityPlaceholder: String { return self._s[447]! }
+ public var CheckoutInfo_ErrorStateInvalid: String { return self._s[448]! }
+ public var Privacy_ProfilePhoto_CustomHelp: String { return self._s[449]! }
+ public var Channel_AdminLog_CanAddAdmins: String { return self._s[451]! }
public func PUSH_CHANNEL_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[453]!, self._r[453]!, [_1])
+ return formatWithArgumentRanges(self._s[452]!, self._r[452]!, [_1])
}
public func Time_MonthOfYear_m8(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[454]!, self._r[454]!, [_0])
+ return formatWithArgumentRanges(self._s[453]!, self._r[453]!, [_0])
}
- public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[455]! }
- public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[456]! }
- public var ChangePhoneNumberCode_Code: String { return self._s[457]! }
+ public var InfoPlist_NSLocationWhenInUseUsageDescription: String { return self._s[454]! }
+ public var GroupInfo_InviteLink_RevokeAlert_Success: String { return self._s[455]! }
+ public var ChangePhoneNumberCode_Code: String { return self._s[456]! }
public func UserInfo_NotificationsDefaultSound(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[458]!, self._r[458]!, [_0])
+ return formatWithArgumentRanges(self._s[457]!, self._r[457]!, [_0])
}
- public var TwoStepAuth_SetupEmail: String { return self._s[459]! }
- public var HashtagSearch_AllChats: String { return self._s[460]! }
- public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[462]! }
+ public var TwoStepAuth_SetupEmail: String { return self._s[458]! }
+ public var HashtagSearch_AllChats: String { return self._s[459]! }
+ public var SettingsSearch_Synonyms_Data_AutoDownloadUsingCellular: String { return self._s[461]! }
public func ChatList_DeleteForEveryone(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[463]!, self._r[463]!, [_0])
+ return formatWithArgumentRanges(self._s[462]!, self._r[462]!, [_0])
}
- public var PhotoEditor_QualityHigh: String { return self._s[465]! }
+ public var PhotoEditor_QualityHigh: String { return self._s[464]! }
public func Passport_Phone_UseTelegramNumber(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[466]!, self._r[466]!, [_0])
+ return formatWithArgumentRanges(self._s[465]!, self._r[465]!, [_0])
}
- public var ApplyLanguage_ApplyLanguageAction: String { return self._s[467]! }
- public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[468]! }
- public var Message_LiveLocation: String { return self._s[469]! }
- public var Cache_LowDiskSpaceText: String { return self._s[470]! }
- public var Conversation_SendMessage: String { return self._s[471]! }
- public var AuthSessions_EmptyTitle: String { return self._s[472]! }
- public var Privacy_PhoneNumber: String { return self._s[473]! }
- public var PeopleNearby_CreateGroup: String { return self._s[474]! }
- public var CallSettings_UseLessData: String { return self._s[475]! }
- public var NetworkUsageSettings_MediaDocumentDataSection: String { return self._s[476]! }
- public var Stickers_AddToFavorites: String { return self._s[477]! }
- public var PhotoEditor_QualityLow: String { return self._s[478]! }
- public var Watch_UserInfo_Unblock: String { return self._s[479]! }
- public var Settings_Logout: String { return self._s[480]! }
+ public var ApplyLanguage_ApplyLanguageAction: String { return self._s[466]! }
+ public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsPreview: String { return self._s[467]! }
+ public var Message_LiveLocation: String { return self._s[468]! }
+ public var Cache_LowDiskSpaceText: String { return self._s[469]! }
+ public var Conversation_SendMessage: String { return self._s[470]! }
+ public var AuthSessions_EmptyTitle: String { return self._s[471]! }
+ public var Privacy_PhoneNumber: String { return self._s[472]! }
+ public var PeopleNearby_CreateGroup: String { return self._s[473]! }
+ public var CallSettings_UseLessData: String { return self._s[474]! }
+ public var NetworkUsageSettings_MediaDocumentDataSection: String { return self._s[475]! }
+ public var Stickers_AddToFavorites: String { return self._s[476]! }
+ public var PhotoEditor_QualityLow: String { return self._s[477]! }
+ public var Watch_UserInfo_Unblock: String { return self._s[478]! }
+ public var Settings_Logout: String { return self._s[479]! }
public func PUSH_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[481]!, self._r[481]!, [_1])
+ return formatWithArgumentRanges(self._s[480]!, self._r[480]!, [_1])
}
- public var ContactInfo_PhoneLabelWork: String { return self._s[482]! }
- public var ChannelInfo_Stats: String { return self._s[483]! }
- public var TextFormat_Link: String { return self._s[484]! }
+ public var ContactInfo_PhoneLabelWork: String { return self._s[481]! }
+ public var ChannelInfo_Stats: String { return self._s[482]! }
+ public var TextFormat_Link: String { return self._s[483]! }
public func Date_ChatDateHeader(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[485]!, self._r[485]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[484]!, self._r[484]!, [_1, _2])
}
public func Message_ForwardedMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[486]!, self._r[486]!, [_0])
+ return formatWithArgumentRanges(self._s[485]!, self._r[485]!, [_0])
}
- public var Watch_Notification_Joined: String { return self._s[487]! }
- public var Group_Setup_TypePublicHelp: String { return self._s[488]! }
- public var Passport_Scans_UploadNew: String { return self._s[489]! }
- public var Checkout_LiabilityAlertTitle: String { return self._s[490]! }
- public var DialogList_Title: String { return self._s[493]! }
- public var NotificationSettings_ContactJoined: String { return self._s[494]! }
- public var GroupInfo_LabelAdmin: String { return self._s[495]! }
- public var KeyCommand_ChatInfo: String { return self._s[496]! }
- public var Conversation_EditingCaptionPanelTitle: String { return self._s[497]! }
- public var Call_ReportIncludeLog: String { return self._s[498]! }
+ public var Watch_Notification_Joined: String { return self._s[486]! }
+ public var Group_Setup_TypePublicHelp: String { return self._s[487]! }
+ public var Passport_Scans_UploadNew: String { return self._s[488]! }
+ public var Checkout_LiabilityAlertTitle: String { return self._s[489]! }
+ public var DialogList_Title: String { return self._s[492]! }
+ public var NotificationSettings_ContactJoined: String { return self._s[493]! }
+ public var GroupInfo_LabelAdmin: String { return self._s[494]! }
+ public var KeyCommand_ChatInfo: String { return self._s[495]! }
+ public var Conversation_EditingCaptionPanelTitle: String { return self._s[496]! }
+ public var Call_ReportIncludeLog: String { return self._s[497]! }
public func Notifications_ExceptionsChangeSound(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[501]!, self._r[501]!, [_0])
+ return formatWithArgumentRanges(self._s[500]!, self._r[500]!, [_0])
}
- public var LocalGroup_IrrelevantWarning: String { return self._s[502]! }
- public var ChatAdmins_AllMembersAreAdmins: String { return self._s[503]! }
- public var Conversation_DefaultRestrictedInline: String { return self._s[504]! }
- public var Message_Sticker: String { return self._s[505]! }
- public var LastSeen_JustNow: String { return self._s[507]! }
- public var Passport_Email_EmailPlaceholder: String { return self._s[509]! }
- public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[510]! }
- public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[511]! }
- public var Channel_EditAdmin_PermissionsHeader: String { return self._s[512]! }
- public var TwoStepAuth_Email: String { return self._s[513]! }
- public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[514]! }
- public var PhotoEditor_BlurToolOff: String { return self._s[515]! }
- public var Message_PinnedStickerMessage: String { return self._s[516]! }
- public var ContactInfo_PhoneLabelPager: String { return self._s[517]! }
- public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[518]! }
- public var Passport_DiscardMessageTitle: String { return self._s[519]! }
- public var Privacy_PaymentsTitle: String { return self._s[520]! }
- public var Channel_DiscussionGroup_Header: String { return self._s[522]! }
- public var VoiceOver_Chat_OptionSelected: String { return self._s[523]! }
- public var Appearance_ColorTheme: String { return self._s[524]! }
- public var UserInfo_ShareContact: String { return self._s[525]! }
- public var Passport_Address_TypePassportRegistration: String { return self._s[526]! }
- public var Common_More: String { return self._s[527]! }
- public var Watch_Message_Call: String { return self._s[528]! }
- public var Profile_EncryptionKey: String { return self._s[531]! }
- public var Privacy_TopPeers: String { return self._s[532]! }
- public var Conversation_StopPollConfirmation: String { return self._s[533]! }
- public var Privacy_TopPeersWarning: String { return self._s[535]! }
- public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[536]! }
- public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[537]! }
- public var DialogList_SearchSectionMessages: String { return self._s[540]! }
- public var Appearance_ThemePreview_ChatList_8_Name: String { return self._s[541]! }
- public var Notifications_ChannelNotifications: String { return self._s[542]! }
- public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[543]! }
- public var Passport_Language_sk: String { return self._s[544]! }
- public var Notification_MessageLifetime1h: String { return self._s[545]! }
- public var Wallpaper_ResetWallpapersInfo: String { return self._s[546]! }
- public var Call_ReportSkip: String { return self._s[548]! }
- public var Cache_ServiceFiles: String { return self._s[549]! }
- public var Group_ErrorAddTooMuchAdmins: String { return self._s[550]! }
- public var VoiceOver_Chat_YourFile: String { return self._s[551]! }
- public var Map_Hybrid: String { return self._s[552]! }
- public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[554]! }
- public var ChatSettings_AutoDownloadVideos: String { return self._s[556]! }
- public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[557]! }
- public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[558]! }
- public var SocksProxySetup_ProxyTelegram: String { return self._s[561]! }
+ public var LocalGroup_IrrelevantWarning: String { return self._s[501]! }
+ public var ChatAdmins_AllMembersAreAdmins: String { return self._s[502]! }
+ public var Conversation_DefaultRestrictedInline: String { return self._s[503]! }
+ public var Message_Sticker: String { return self._s[504]! }
+ public var LastSeen_JustNow: String { return self._s[506]! }
+ public var Passport_Email_EmailPlaceholder: String { return self._s[508]! }
+ public var SettingsSearch_Synonyms_AppLanguage: String { return self._s[509]! }
+ public var Channel_AdminLogFilter_EventsEditedMessages: String { return self._s[510]! }
+ public var Channel_EditAdmin_PermissionsHeader: String { return self._s[511]! }
+ public var TwoStepAuth_Email: String { return self._s[512]! }
+ public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsSound: String { return self._s[513]! }
+ public var PhotoEditor_BlurToolOff: String { return self._s[514]! }
+ public var Message_PinnedStickerMessage: String { return self._s[515]! }
+ public var ContactInfo_PhoneLabelPager: String { return self._s[516]! }
+ public var SettingsSearch_Synonyms_Appearance_TextSize: String { return self._s[517]! }
+ public var Passport_DiscardMessageTitle: String { return self._s[518]! }
+ public var Privacy_PaymentsTitle: String { return self._s[519]! }
+ public var Channel_DiscussionGroup_Header: String { return self._s[521]! }
+ public var VoiceOver_Chat_OptionSelected: String { return self._s[522]! }
+ public var Appearance_ColorTheme: String { return self._s[523]! }
+ public var UserInfo_ShareContact: String { return self._s[524]! }
+ public var Passport_Address_TypePassportRegistration: String { return self._s[525]! }
+ public var Common_More: String { return self._s[526]! }
+ public var Watch_Message_Call: String { return self._s[527]! }
+ public var Profile_EncryptionKey: String { return self._s[530]! }
+ public var Privacy_TopPeers: String { return self._s[531]! }
+ public var Conversation_StopPollConfirmation: String { return self._s[532]! }
+ public var Privacy_TopPeersWarning: String { return self._s[534]! }
+ public var SettingsSearch_Synonyms_Data_DownloadInBackground: String { return self._s[535]! }
+ public var SettingsSearch_Synonyms_Data_Storage_KeepMedia: String { return self._s[536]! }
+ public var DialogList_SearchSectionMessages: String { return self._s[539]! }
+ public var Appearance_ThemePreview_ChatList_8_Name: String { return self._s[540]! }
+ public var Notifications_ChannelNotifications: String { return self._s[541]! }
+ public var CheckoutInfo_ShippingInfoAddress1Placeholder: String { return self._s[542]! }
+ public var Passport_Language_sk: String { return self._s[543]! }
+ public var Notification_MessageLifetime1h: String { return self._s[544]! }
+ public var Wallpaper_ResetWallpapersInfo: String { return self._s[545]! }
+ public var Call_ReportSkip: String { return self._s[547]! }
+ public var Cache_ServiceFiles: String { return self._s[548]! }
+ public var Group_ErrorAddTooMuchAdmins: String { return self._s[549]! }
+ public var VoiceOver_Chat_YourFile: String { return self._s[550]! }
+ public var Map_Hybrid: String { return self._s[551]! }
+ public var Contacts_SearchUsersAndGroupsLabel: String { return self._s[553]! }
+ public var ChatSettings_AutoDownloadVideos: String { return self._s[555]! }
+ public var Channel_BanUser_PermissionEmbedLinks: String { return self._s[556]! }
+ public var InfoPlist_NSLocationAlwaysAndWhenInUseUsageDescription: String { return self._s[557]! }
+ public var SocksProxySetup_ProxyTelegram: String { return self._s[560]! }
public func PUSH_MESSAGE_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[562]!, self._r[562]!, [_1])
+ return formatWithArgumentRanges(self._s[561]!, self._r[561]!, [_1])
}
- public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[564]! }
+ public var Channel_Username_CreatePrivateLinkHelp: String { return self._s[563]! }
public func PUSH_CHAT_TITLE_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[565]!, self._r[565]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[564]!, self._r[564]!, [_1, _2])
}
- public var Conversation_LiveLocationYou: String { return self._s[566]! }
- public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[567]! }
- public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[568]! }
- public var UserInfo_ShareBot: String { return self._s[571]! }
+ public var Conversation_LiveLocationYou: String { return self._s[565]! }
+ public var SettingsSearch_Synonyms_Privacy_Calls: String { return self._s[566]! }
+ public var SettingsSearch_Synonyms_Notifications_MessageNotificationsPreview: String { return self._s[567]! }
+ public var UserInfo_ShareBot: String { return self._s[570]! }
public func PUSH_AUTH_REGION(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[572]!, self._r[572]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[571]!, self._r[571]!, [_1, _2])
}
- public var PhotoEditor_ShadowsTint: String { return self._s[573]! }
- public var Message_Audio: String { return self._s[574]! }
- public var Passport_Language_lt: String { return self._s[575]! }
+ public var PhotoEditor_ShadowsTint: String { return self._s[572]! }
+ public var Message_Audio: String { return self._s[573]! }
+ public var Passport_Language_lt: String { return self._s[574]! }
public func Message_PinnedTextMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[576]!, self._r[576]!, [_0])
+ return formatWithArgumentRanges(self._s[575]!, self._r[575]!, [_0])
}
- public var Permissions_SiriText_v0: String { return self._s[577]! }
- public var Conversation_FileICloudDrive: String { return self._s[578]! }
- public var Notifications_Badge_IncludeMutedChats: String { return self._s[579]! }
+ public var Permissions_SiriText_v0: String { return self._s[576]! }
+ public var Conversation_FileICloudDrive: String { return self._s[577]! }
+ public var Notifications_Badge_IncludeMutedChats: String { return self._s[578]! }
public func Notification_NewAuthDetected(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String, _ _6: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[580]!, self._r[580]!, [_1, _2, _3, _4, _5, _6])
+ return formatWithArgumentRanges(self._s[579]!, self._r[579]!, [_1, _2, _3, _4, _5, _6])
}
- public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[581]! }
+ public var DialogList_ProxyConnectionIssuesTooltip: String { return self._s[580]! }
public func Time_MonthOfYear_m5(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[582]!, self._r[582]!, [_0])
+ return formatWithArgumentRanges(self._s[581]!, self._r[581]!, [_0])
}
- public var Channel_SignMessages: String { return self._s[583]! }
+ public var Channel_SignMessages: String { return self._s[582]! }
public func PUSH_MESSAGE_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[584]!, self._r[584]!, [_1])
+ return formatWithArgumentRanges(self._s[583]!, self._r[583]!, [_1])
}
- public var Compose_ChannelTokenListPlaceholder: String { return self._s[585]! }
- public var Passport_ScanPassport: String { return self._s[586]! }
- public var Watch_Suggestion_Thanks: String { return self._s[587]! }
- public var BlockedUsers_AddNew: String { return self._s[588]! }
+ public var Compose_ChannelTokenListPlaceholder: String { return self._s[584]! }
+ public var Passport_ScanPassport: String { return self._s[585]! }
+ public var Watch_Suggestion_Thanks: String { return self._s[586]! }
+ public var BlockedUsers_AddNew: String { return self._s[587]! }
public func PUSH_CHAT_MESSAGE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[589]!, self._r[589]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[588]!, self._r[588]!, [_1, _2])
}
- public var Watch_Message_Invoice: String { return self._s[590]! }
- public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[591]! }
- public var Month_GenJuly: String { return self._s[592]! }
- public var SocksProxySetup_ProxySocks5: String { return self._s[593]! }
- public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[595]! }
- public var Notification_ChannelInviterSelf: String { return self._s[596]! }
- public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[597]! }
+ public var Watch_Message_Invoice: String { return self._s[589]! }
+ public var SettingsSearch_Synonyms_Privacy_LastSeen: String { return self._s[590]! }
+ public var Month_GenJuly: String { return self._s[591]! }
+ public var SocksProxySetup_ProxySocks5: String { return self._s[592]! }
+ public var Notification_Exceptions_DeleteAllConfirmation: String { return self._s[594]! }
+ public var Notification_ChannelInviterSelf: String { return self._s[595]! }
+ public var CheckoutInfo_ReceiverInfoEmail: String { return self._s[596]! }
public func ApplyLanguage_ChangeLanguageUnofficialText(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[598]!, self._r[598]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[597]!, self._r[597]!, [_1, _2])
}
- public var CheckoutInfo_Title: String { return self._s[599]! }
- public var Watch_Stickers_RecentPlaceholder: String { return self._s[600]! }
+ public var CheckoutInfo_Title: String { return self._s[598]! }
+ public var Watch_Stickers_RecentPlaceholder: String { return self._s[599]! }
public func Map_DistanceAway(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[601]!, self._r[601]!, [_0])
+ return formatWithArgumentRanges(self._s[600]!, self._r[600]!, [_0])
}
- public var Passport_Identity_MainPage: String { return self._s[602]! }
- public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[603]! }
- public var Passport_Language_de: String { return self._s[604]! }
- public var Update_Title: String { return self._s[605]! }
- public var ContactInfo_PhoneLabelWorkFax: String { return self._s[606]! }
- public var Channel_AdminLog_BanEmbedLinks: String { return self._s[607]! }
- public var Passport_Email_UseTelegramEmailHelp: String { return self._s[608]! }
- public var Notifications_ChannelNotificationsPreview: String { return self._s[609]! }
- public var NotificationsSound_Telegraph: String { return self._s[610]! }
- public var Watch_LastSeen_ALongTimeAgo: String { return self._s[611]! }
- public var ChannelMembers_WhoCanAddMembers: String { return self._s[612]! }
+ public var Passport_Identity_MainPage: String { return self._s[601]! }
+ public var TwoStepAuth_ConfirmEmailResendCode: String { return self._s[602]! }
+ public var Passport_Language_de: String { return self._s[603]! }
+ public var Update_Title: String { return self._s[604]! }
+ public var ContactInfo_PhoneLabelWorkFax: String { return self._s[605]! }
+ public var Channel_AdminLog_BanEmbedLinks: String { return self._s[606]! }
+ public var Passport_Email_UseTelegramEmailHelp: String { return self._s[607]! }
+ public var Notifications_ChannelNotificationsPreview: String { return self._s[608]! }
+ public var NotificationsSound_Telegraph: String { return self._s[609]! }
+ public var Watch_LastSeen_ALongTimeAgo: String { return self._s[610]! }
+ public var ChannelMembers_WhoCanAddMembers: String { return self._s[611]! }
public func AutoDownloadSettings_UpTo(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[613]!, self._r[613]!, [_0])
+ return formatWithArgumentRanges(self._s[612]!, self._r[612]!, [_0])
}
- public var Stickers_SuggestAll: String { return self._s[614]! }
- public var Conversation_ForwardTitle: String { return self._s[615]! }
- public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[616]! }
+ public var Stickers_SuggestAll: String { return self._s[613]! }
+ public var Conversation_ForwardTitle: String { return self._s[614]! }
+ public var Appearance_ThemePreview_ChatList_7_Name: String { return self._s[615]! }
public func Notification_JoinedChannel(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[617]!, self._r[617]!, [_0])
+ return formatWithArgumentRanges(self._s[616]!, self._r[616]!, [_0])
}
- public var Calls_NewCall: String { return self._s[618]! }
- public var Call_StatusEnded: String { return self._s[619]! }
- public var AutoDownloadSettings_DataUsageLow: String { return self._s[620]! }
- public var Settings_ProxyConnected: String { return self._s[621]! }
- public var Channel_AdminLogFilter_EventsPinned: String { return self._s[622]! }
- public var PhotoEditor_QualityVeryLow: String { return self._s[623]! }
- public var Channel_AdminLogFilter_EventsDeletedMessages: String { return self._s[624]! }
- public var Passport_PasswordPlaceholder: String { return self._s[625]! }
- public var Message_PinnedInvoice: String { return self._s[626]! }
- public var Passport_Identity_IssueDate: String { return self._s[627]! }
- public var Passport_Language_pl: String { return self._s[628]! }
+ public var Calls_NewCall: String { return self._s[617]! }
+ public var Call_StatusEnded: String { return self._s[618]! }
+ public var AutoDownloadSettings_DataUsageLow: String { return self._s[619]! }
+ public var Settings_ProxyConnected: String { return self._s[620]! }
+ public var Channel_AdminLogFilter_EventsPinned: String { return self._s[621]! }
+ public var PhotoEditor_QualityVeryLow: String { return self._s[622]! }
+ public var Channel_AdminLogFilter_EventsDeletedMessages: String { return self._s[623]! }
+ public var Passport_PasswordPlaceholder: String { return self._s[624]! }
+ public var Message_PinnedInvoice: String { return self._s[625]! }
+ public var Passport_Identity_IssueDate: String { return self._s[626]! }
+ public var Passport_Language_pl: String { return self._s[627]! }
public func ChannelInfo_ChannelForbidden(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[629]!, self._r[629]!, [_0])
+ return formatWithArgumentRanges(self._s[628]!, self._r[628]!, [_0])
}
- public var SocksProxySetup_PasteFromClipboard: String { return self._s[630]! }
- public var Call_StatusConnecting: String { return self._s[631]! }
+ public var SocksProxySetup_PasteFromClipboard: String { return self._s[629]! }
+ public var Call_StatusConnecting: String { return self._s[630]! }
public func Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[632]!, self._r[632]!, [_0])
+ return formatWithArgumentRanges(self._s[631]!, self._r[631]!, [_0])
}
- public var ChatSettings_ConnectionType_UseProxy: String { return self._s[634]! }
- public var Common_Edit: String { return self._s[635]! }
- public var PrivacySettings_LastSeenNobody: String { return self._s[636]! }
+ public var ChatSettings_ConnectionType_UseProxy: String { return self._s[633]! }
+ public var Common_Edit: String { return self._s[634]! }
+ public var PrivacySettings_LastSeenNobody: String { return self._s[635]! }
public func Notification_LeftChat(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[637]!, self._r[637]!, [_0])
+ return formatWithArgumentRanges(self._s[636]!, self._r[636]!, [_0])
}
- public var GroupInfo_ChatAdmins: String { return self._s[638]! }
- public var PrivateDataSettings_Title: String { return self._s[639]! }
- public var Login_CancelPhoneVerificationStop: String { return self._s[640]! }
- public var ChatList_Read: String { return self._s[641]! }
- public var Undo_ChatClearedForBothSides: String { return self._s[642]! }
- public var GroupPermission_SectionTitle: String { return self._s[643]! }
+ public var GroupInfo_ChatAdmins: String { return self._s[637]! }
+ public var PrivateDataSettings_Title: String { return self._s[638]! }
+ public var Login_CancelPhoneVerificationStop: String { return self._s[639]! }
+ public var ChatList_Read: String { return self._s[640]! }
+ public var Undo_ChatClearedForBothSides: String { return self._s[641]! }
+ public var GroupPermission_SectionTitle: String { return self._s[642]! }
public func PUSH_CHAT_LEFT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[645]!, self._r[645]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[644]!, self._r[644]!, [_1, _2])
}
- public var Checkout_ErrorPaymentFailed: String { return self._s[646]! }
- public var Update_UpdateApp: String { return self._s[647]! }
- public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[648]! }
- public var Settings_Appearance: String { return self._s[649]! }
- public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[652]! }
- public var Watch_Location_Access: String { return self._s[653]! }
- public var ShareMenu_CopyShareLink: String { return self._s[655]! }
- public var TwoStepAuth_SetupHintTitle: String { return self._s[656]! }
+ public var Checkout_ErrorPaymentFailed: String { return self._s[645]! }
+ public var Update_UpdateApp: String { return self._s[646]! }
+ public var Group_Username_RevokeExistingUsernamesInfo: String { return self._s[647]! }
+ public var Settings_Appearance: String { return self._s[648]! }
+ public var SettingsSearch_Synonyms_Stickers_SuggestStickers: String { return self._s[651]! }
+ public var Watch_Location_Access: String { return self._s[652]! }
+ public var ShareMenu_CopyShareLink: String { return self._s[654]! }
+ public var TwoStepAuth_SetupHintTitle: String { return self._s[655]! }
public func DialogList_SingleRecordingVideoMessageSuffix(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[658]!, self._r[658]!, [_0])
+ return formatWithArgumentRanges(self._s[657]!, self._r[657]!, [_0])
}
- public var Notifications_ClassicTones: String { return self._s[659]! }
- public var Weekday_ShortWednesday: String { return self._s[660]! }
- public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[661]! }
- public var Undo_LeftGroup: String { return self._s[664]! }
- public var Conversation_LinkDialogCopy: String { return self._s[665]! }
- public var KeyCommand_FocusOnInputField: String { return self._s[667]! }
- public var Contacts_SelectAll: String { return self._s[668]! }
- public var Preview_SaveToCameraRoll: String { return self._s[669]! }
- public var PrivacySettings_PasscodeOff: String { return self._s[670]! }
- public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[671]! }
- public var Wallpaper_Title: String { return self._s[672]! }
- public var Conversation_FilePhotoOrVideo: String { return self._s[673]! }
- public var AccessDenied_Camera: String { return self._s[674]! }
- public var Watch_Compose_CurrentLocation: String { return self._s[675]! }
- public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[677]! }
+ public var Notifications_ClassicTones: String { return self._s[658]! }
+ public var Weekday_ShortWednesday: String { return self._s[659]! }
+ public var WallpaperPreview_SwipeColorsBottomText: String { return self._s[660]! }
+ public var Undo_LeftGroup: String { return self._s[663]! }
+ public var Conversation_LinkDialogCopy: String { return self._s[664]! }
+ public var KeyCommand_FocusOnInputField: String { return self._s[666]! }
+ public var Contacts_SelectAll: String { return self._s[667]! }
+ public var Preview_SaveToCameraRoll: String { return self._s[668]! }
+ public var PrivacySettings_PasscodeOff: String { return self._s[669]! }
+ public var Appearance_ThemePreview_ChatList_6_Name: String { return self._s[670]! }
+ public var Wallpaper_Title: String { return self._s[671]! }
+ public var Conversation_FilePhotoOrVideo: String { return self._s[672]! }
+ public var AccessDenied_Camera: String { return self._s[673]! }
+ public var Watch_Compose_CurrentLocation: String { return self._s[674]! }
+ public var Channel_DiscussionGroup_MakeHistoryPublicProceed: String { return self._s[676]! }
public func SecretImage_NotViewedYet(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[678]!, self._r[678]!, [_0])
+ return formatWithArgumentRanges(self._s[677]!, self._r[677]!, [_0])
}
- public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[679]! }
- public var Passport_Language_ro: String { return self._s[680]! }
- public var CheckoutInfo_SaveInfoHelp: String { return self._s[681]! }
+ public var GroupInfo_InvitationLinkDoesNotExist: String { return self._s[678]! }
+ public var Passport_Language_ro: String { return self._s[679]! }
+ public var CheckoutInfo_SaveInfoHelp: String { return self._s[680]! }
public func Notification_SecretChatMessageScreenshot(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[682]!, self._r[682]!, [_0])
+ return formatWithArgumentRanges(self._s[681]!, self._r[681]!, [_0])
}
- public var Login_CancelPhoneVerification: String { return self._s[683]! }
- public var State_ConnectingToProxy: String { return self._s[684]! }
- public var Calls_RatingTitle: String { return self._s[685]! }
- public var Generic_ErrorMoreInfo: String { return self._s[686]! }
- public var Appearance_PreviewReplyText: String { return self._s[687]! }
- public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[688]! }
- public var SharedMedia_CategoryLinks: String { return self._s[689]! }
- public var Calls_Missed: String { return self._s[690]! }
- public var Cache_Photos: String { return self._s[694]! }
- public var GroupPermission_NoAddMembers: String { return self._s[695]! }
- public var ScheduledMessages_Title: String { return self._s[696]! }
+ public var Login_CancelPhoneVerification: String { return self._s[682]! }
+ public var State_ConnectingToProxy: String { return self._s[683]! }
+ public var Calls_RatingTitle: String { return self._s[684]! }
+ public var Generic_ErrorMoreInfo: String { return self._s[685]! }
+ public var Appearance_PreviewReplyText: String { return self._s[686]! }
+ public var CheckoutInfo_ShippingInfoPostcodePlaceholder: String { return self._s[687]! }
+ public var SharedMedia_CategoryLinks: String { return self._s[688]! }
+ public var Calls_Missed: String { return self._s[689]! }
+ public var Cache_Photos: String { return self._s[693]! }
+ public var GroupPermission_NoAddMembers: String { return self._s[694]! }
+ public var ScheduledMessages_Title: String { return self._s[695]! }
public func Channel_AdminLog_MessageUnpinned(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[697]!, self._r[697]!, [_0])
+ return formatWithArgumentRanges(self._s[696]!, self._r[696]!, [_0])
}
- public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[698]! }
- public var Settings_ProxyDisabled: String { return self._s[699]! }
+ public var Conversation_ShareBotLocationConfirmationTitle: String { return self._s[697]! }
+ public var Settings_ProxyDisabled: String { return self._s[698]! }
public func Settings_ApplyProxyAlertCredentials(_ _1: String, _ _2: String, _ _3: String, _ _4: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[700]!, self._r[700]!, [_1, _2, _3, _4])
+ return formatWithArgumentRanges(self._s[699]!, self._r[699]!, [_1, _2, _3, _4])
}
public func Conversation_RestrictedMediaTimed(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[701]!, self._r[701]!, [_0])
+ return formatWithArgumentRanges(self._s[700]!, self._r[700]!, [_0])
}
- public var Appearance_Title: String { return self._s[703]! }
+ public var Appearance_Title: String { return self._s[702]! }
public func Time_MonthOfYear_m2(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[705]!, self._r[705]!, [_0])
+ return formatWithArgumentRanges(self._s[704]!, self._r[704]!, [_0])
}
- public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[706]! }
- public var Channel_EditMessageErrorGeneric: String { return self._s[707]! }
- public var Privacy_Calls_IntegrationHelp: String { return self._s[708]! }
- public var Preview_DeletePhoto: String { return self._s[709]! }
- public var Appearance_AppIconFilledX: String { return self._s[710]! }
- public var PrivacySettings_PrivacyTitle: String { return self._s[711]! }
+ public var StickerPacksSettings_ShowStickersButtonHelp: String { return self._s[705]! }
+ public var Channel_EditMessageErrorGeneric: String { return self._s[706]! }
+ public var Privacy_Calls_IntegrationHelp: String { return self._s[707]! }
+ public var Preview_DeletePhoto: String { return self._s[708]! }
+ public var Appearance_AppIconFilledX: String { return self._s[709]! }
+ public var PrivacySettings_PrivacyTitle: String { return self._s[710]! }
public func Conversation_BotInteractiveUrlAlert(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[712]!, self._r[712]!, [_0])
+ return formatWithArgumentRanges(self._s[711]!, self._r[711]!, [_0])
}
- public var Appearance_ThemePreview_Chat_1_ReplyText: String { return self._s[714]! }
- public var Coub_TapForSound: String { return self._s[715]! }
- public var Map_LocatingError: String { return self._s[716]! }
- public var TwoStepAuth_EmailChangeSuccess: String { return self._s[718]! }
- public var Conversation_SendMessage_SendSilently: String { return self._s[719]! }
- public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[720]! }
- public var Passport_ForgottenPassword: String { return self._s[721]! }
- public var GroupInfo_InviteLink_RevokeLink: String { return self._s[722]! }
- public var StickerPacksSettings_ArchivedPacks: String { return self._s[723]! }
- public var Login_TermsOfServiceSignupDecline: String { return self._s[725]! }
- public var Channel_Moderator_AccessLevelRevoke: String { return self._s[726]! }
- public var Message_Location: String { return self._s[727]! }
- public var Passport_Identity_NamePlaceholder: String { return self._s[728]! }
- public var Channel_Management_Title: String { return self._s[729]! }
- public var DialogList_SearchSectionDialogs: String { return self._s[731]! }
- public var Compose_NewChannel_Members: String { return self._s[732]! }
+ public var Appearance_ThemePreview_Chat_1_ReplyText: String { return self._s[713]! }
+ public var Coub_TapForSound: String { return self._s[714]! }
+ public var Map_LocatingError: String { return self._s[715]! }
+ public var TwoStepAuth_EmailChangeSuccess: String { return self._s[717]! }
+ public var Conversation_SendMessage_SendSilently: String { return self._s[718]! }
+ public var VoiceOver_MessageContextOpenMessageMenu: String { return self._s[719]! }
+ public var Passport_ForgottenPassword: String { return self._s[720]! }
+ public var GroupInfo_InviteLink_RevokeLink: String { return self._s[721]! }
+ public var StickerPacksSettings_ArchivedPacks: String { return self._s[722]! }
+ public var Login_TermsOfServiceSignupDecline: String { return self._s[724]! }
+ public var Channel_Moderator_AccessLevelRevoke: String { return self._s[725]! }
+ public var Message_Location: String { return self._s[726]! }
+ public var Passport_Identity_NamePlaceholder: String { return self._s[727]! }
+ public var Channel_Management_Title: String { return self._s[728]! }
+ public var DialogList_SearchSectionDialogs: String { return self._s[730]! }
+ public var Compose_NewChannel_Members: String { return self._s[731]! }
public func DialogList_SingleUploadingFileSuffix(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[733]!, self._r[733]!, [_0])
+ return formatWithArgumentRanges(self._s[732]!, self._r[732]!, [_0])
}
- public var GroupInfo_Location: String { return self._s[734]! }
- public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[735]! }
- public var AutoNightTheme_ScheduledFrom: String { return self._s[736]! }
- public var PhotoEditor_WarmthTool: String { return self._s[737]! }
- public var Passport_Language_tr: String { return self._s[738]! }
+ public var GroupInfo_Location: String { return self._s[733]! }
+ public var Appearance_ThemePreview_ChatList_5_Name: String { return self._s[734]! }
+ public var AutoNightTheme_ScheduledFrom: String { return self._s[735]! }
+ public var PhotoEditor_WarmthTool: String { return self._s[736]! }
+ public var Passport_Language_tr: String { return self._s[737]! }
public func PUSH_MESSAGE_GAME_SCORE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[739]!, self._r[739]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[738]!, self._r[738]!, [_1, _2, _3])
}
- public var Login_ResetAccountProtected_Reset: String { return self._s[741]! }
- public var Watch_PhotoView_Title: String { return self._s[742]! }
- public var Passport_Phone_Delete: String { return self._s[743]! }
- public var Undo_ChatDeletedForBothSides: String { return self._s[744]! }
- public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[745]! }
- public var GroupInfo_Permissions: String { return self._s[746]! }
- public var PasscodeSettings_TurnPasscodeOff: String { return self._s[747]! }
- public var Profile_ShareContactButton: String { return self._s[748]! }
- public var ChatSettings_Other: String { return self._s[749]! }
- public var UserInfo_NotificationsDisabled: String { return self._s[750]! }
- public var CheckoutInfo_ShippingInfoCity: String { return self._s[751]! }
- public var LastSeen_WithinAMonth: String { return self._s[752]! }
- public var VoiceOver_Chat_PlayHint: String { return self._s[753]! }
- public var Conversation_ReportGroupLocation: String { return self._s[754]! }
- public var Conversation_EncryptionCanceled: String { return self._s[755]! }
- public var MediaPicker_GroupDescription: String { return self._s[756]! }
- public var WebSearch_Images: String { return self._s[757]! }
+ public var Login_ResetAccountProtected_Reset: String { return self._s[740]! }
+ public var Watch_PhotoView_Title: String { return self._s[741]! }
+ public var Passport_Phone_Delete: String { return self._s[742]! }
+ public var Undo_ChatDeletedForBothSides: String { return self._s[743]! }
+ public var Conversation_EditingMessageMediaEditCurrentPhoto: String { return self._s[744]! }
+ public var GroupInfo_Permissions: String { return self._s[745]! }
+ public var PasscodeSettings_TurnPasscodeOff: String { return self._s[746]! }
+ public var Profile_ShareContactButton: String { return self._s[747]! }
+ public var ChatSettings_Other: String { return self._s[748]! }
+ public var UserInfo_NotificationsDisabled: String { return self._s[749]! }
+ public var CheckoutInfo_ShippingInfoCity: String { return self._s[750]! }
+ public var LastSeen_WithinAMonth: String { return self._s[751]! }
+ public var VoiceOver_Chat_PlayHint: String { return self._s[752]! }
+ public var Conversation_ReportGroupLocation: String { return self._s[753]! }
+ public var Conversation_EncryptionCanceled: String { return self._s[754]! }
+ public var MediaPicker_GroupDescription: String { return self._s[755]! }
+ public var WebSearch_Images: String { return self._s[756]! }
public func Channel_Management_PromotedBy(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[758]!, self._r[758]!, [_0])
+ return formatWithArgumentRanges(self._s[757]!, self._r[757]!, [_0])
}
- public var Message_Photo: String { return self._s[759]! }
- public var PasscodeSettings_HelpBottom: String { return self._s[760]! }
- public var AutoDownloadSettings_VideosTitle: String { return self._s[761]! }
- public var VoiceOver_Media_PlaybackRateChange: String { return self._s[762]! }
- public var Passport_Identity_AddDriversLicense: String { return self._s[763]! }
- public var TwoStepAuth_EnterPasswordPassword: String { return self._s[764]! }
- public var NotificationsSound_Calypso: String { return self._s[765]! }
- public var Map_Map: String { return self._s[766]! }
- public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[768]! }
- public var ChatSettings_TextSizeUnits: String { return self._s[769]! }
+ public var Message_Photo: String { return self._s[758]! }
+ public var PasscodeSettings_HelpBottom: String { return self._s[759]! }
+ public var AutoDownloadSettings_VideosTitle: String { return self._s[760]! }
+ public var VoiceOver_Media_PlaybackRateChange: String { return self._s[761]! }
+ public var Passport_Identity_AddDriversLicense: String { return self._s[762]! }
+ public var TwoStepAuth_EnterPasswordPassword: String { return self._s[763]! }
+ public var NotificationsSound_Calypso: String { return self._s[764]! }
+ public var Map_Map: String { return self._s[765]! }
+ public var CheckoutInfo_ReceiverInfoTitle: String { return self._s[767]! }
+ public var ChatSettings_TextSizeUnits: String { return self._s[768]! }
public func VoiceOver_Chat_FileFrom(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[770]!, self._r[770]!, [_0])
+ return formatWithArgumentRanges(self._s[769]!, self._r[769]!, [_0])
}
- public var Common_of: String { return self._s[771]! }
- public var Conversation_ForwardContacts: String { return self._s[774]! }
+ public var Common_of: String { return self._s[770]! }
+ public var Conversation_ForwardContacts: String { return self._s[773]! }
public func Call_AnsweringWithAccount(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[776]!, self._r[776]!, [_0])
+ return formatWithArgumentRanges(self._s[775]!, self._r[775]!, [_0])
}
- public var Passport_Language_hy: String { return self._s[777]! }
- public var Notifications_MessageNotificationsHelp: String { return self._s[778]! }
- public var AutoDownloadSettings_Reset: String { return self._s[779]! }
- public var Paint_ClearConfirm: String { return self._s[780]! }
- public var Camera_VideoMode: String { return self._s[781]! }
+ public var Passport_Language_hy: String { return self._s[776]! }
+ public var Notifications_MessageNotificationsHelp: String { return self._s[777]! }
+ public var AutoDownloadSettings_Reset: String { return self._s[778]! }
+ public var Paint_ClearConfirm: String { return self._s[779]! }
+ public var Camera_VideoMode: String { return self._s[780]! }
public func Conversation_RestrictedStickersTimed(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[782]!, self._r[782]!, [_0])
+ return formatWithArgumentRanges(self._s[781]!, self._r[781]!, [_0])
}
- public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[783]! }
- public var Conversation_ViewBackground: String { return self._s[784]! }
- public var Passport_Language_el: String { return self._s[785]! }
- public var PhotoEditor_Original: String { return self._s[786]! }
- public var Settings_FAQ_Button: String { return self._s[788]! }
- public var Channel_Setup_PublicNoLink: String { return self._s[790]! }
- public var Conversation_UnsupportedMedia: String { return self._s[791]! }
- public var Conversation_SlideToCancel: String { return self._s[792]! }
- public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[793]! }
- public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[794]! }
- public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[795]! }
- public var Conversation_ReportSpamChannelConfirmation: String { return self._s[796]! }
- public var AutoNightTheme_NotAvailable: String { return self._s[797]! }
- public var Conversation_Owner: String { return self._s[798]! }
- public var Common_Create: String { return self._s[799]! }
- public var Settings_ApplyProxyAlertEnable: String { return self._s[800]! }
- public var Localization_ChooseLanguage: String { return self._s[802]! }
- public var Settings_Proxy: String { return self._s[805]! }
- public var Privacy_TopPeersHelp: String { return self._s[806]! }
- public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[807]! }
- public var Chat_UnsendMyMessages: String { return self._s[808]! }
+ public var Privacy_Calls_AlwaysAllow_Placeholder: String { return self._s[782]! }
+ public var Conversation_ViewBackground: String { return self._s[783]! }
+ public var Passport_Language_el: String { return self._s[784]! }
+ public var PhotoEditor_Original: String { return self._s[785]! }
+ public var Settings_FAQ_Button: String { return self._s[787]! }
+ public var Channel_Setup_PublicNoLink: String { return self._s[789]! }
+ public var Conversation_UnsupportedMedia: String { return self._s[790]! }
+ public var Conversation_SlideToCancel: String { return self._s[791]! }
+ public var Appearance_ThemePreview_ChatList_4_Name: String { return self._s[792]! }
+ public var Passport_Identity_OneOfTypeInternalPassport: String { return self._s[793]! }
+ public var CheckoutInfo_ShippingInfoPostcode: String { return self._s[794]! }
+ public var Conversation_ReportSpamChannelConfirmation: String { return self._s[795]! }
+ public var AutoNightTheme_NotAvailable: String { return self._s[796]! }
+ public var Conversation_Owner: String { return self._s[797]! }
+ public var Common_Create: String { return self._s[798]! }
+ public var Settings_ApplyProxyAlertEnable: String { return self._s[799]! }
+ public var Localization_ChooseLanguage: String { return self._s[801]! }
+ public var Settings_Proxy: String { return self._s[804]! }
+ public var Privacy_TopPeersHelp: String { return self._s[805]! }
+ public var CheckoutInfo_ShippingInfoCountryPlaceholder: String { return self._s[806]! }
+ public var Chat_UnsendMyMessages: String { return self._s[807]! }
public func VoiceOver_Chat_Duration(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[809]!, self._r[809]!, [_0])
+ return formatWithArgumentRanges(self._s[808]!, self._r[808]!, [_0])
}
- public var TwoStepAuth_ConfirmationAbort: String { return self._s[810]! }
+ public var TwoStepAuth_ConfirmationAbort: String { return self._s[809]! }
public func Contacts_AccessDeniedHelpPortrait(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[812]!, self._r[812]!, [_0])
+ return formatWithArgumentRanges(self._s[811]!, self._r[811]!, [_0])
}
- public var Contacts_SortedByPresence: String { return self._s[813]! }
- public var Passport_Identity_SurnamePlaceholder: String { return self._s[814]! }
- public var Cache_Title: String { return self._s[815]! }
+ public var Contacts_SortedByPresence: String { return self._s[812]! }
+ public var Passport_Identity_SurnamePlaceholder: String { return self._s[813]! }
+ public var Cache_Title: String { return self._s[814]! }
public func Login_PhoneBannedEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[816]!, self._r[816]!, [_0])
+ return formatWithArgumentRanges(self._s[815]!, self._r[815]!, [_0])
}
- public var TwoStepAuth_EmailCodeExpired: String { return self._s[817]! }
- public var Channel_Moderator_Title: String { return self._s[818]! }
- public var InstantPage_AutoNightTheme: String { return self._s[820]! }
+ public var TwoStepAuth_EmailCodeExpired: String { return self._s[816]! }
+ public var Channel_Moderator_Title: String { return self._s[817]! }
+ public var InstantPage_AutoNightTheme: String { return self._s[819]! }
public func PUSH_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[823]!, self._r[823]!, [_1])
+ return formatWithArgumentRanges(self._s[822]!, self._r[822]!, [_1])
}
- public var Passport_Scans_Upload: String { return self._s[824]! }
- public var Undo_Undo: String { return self._s[826]! }
- public var Contacts_AccessDeniedHelpON: String { return self._s[827]! }
- public var TwoStepAuth_RemovePassword: String { return self._s[828]! }
- public var Common_Delete: String { return self._s[829]! }
- public var Contacts_AddPeopleNearby: String { return self._s[831]! }
- public var Conversation_ContextMenuDelete: String { return self._s[832]! }
- public var SocksProxySetup_Credentials: String { return self._s[833]! }
- public var PasscodeSettings_AutoLock_Disabled: String { return self._s[835]! }
- public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[838]! }
- public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[839]! }
- public var Passport_Language_id: String { return self._s[841]! }
- public var WallpaperSearch_ColorTeal: String { return self._s[842]! }
- public var ChannelIntro_Title: String { return self._s[843]! }
+ public var Passport_Scans_Upload: String { return self._s[823]! }
+ public var Undo_Undo: String { return self._s[825]! }
+ public var Contacts_AccessDeniedHelpON: String { return self._s[826]! }
+ public var TwoStepAuth_RemovePassword: String { return self._s[827]! }
+ public var Common_Delete: String { return self._s[828]! }
+ public var Contacts_AddPeopleNearby: String { return self._s[830]! }
+ public var Conversation_ContextMenuDelete: String { return self._s[831]! }
+ public var SocksProxySetup_Credentials: String { return self._s[832]! }
+ public var PasscodeSettings_AutoLock_Disabled: String { return self._s[834]! }
+ public var Passport_Address_OneOfTypeRentalAgreement: String { return self._s[837]! }
+ public var Conversation_ShareBotContactConfirmationTitle: String { return self._s[838]! }
+ public var Passport_Language_id: String { return self._s[840]! }
+ public var WallpaperSearch_ColorTeal: String { return self._s[841]! }
+ public var ChannelIntro_Title: String { return self._s[842]! }
public func Channel_AdminLog_MessageToggleSignaturesOff(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[844]!, self._r[844]!, [_0])
+ return formatWithArgumentRanges(self._s[843]!, self._r[843]!, [_0])
}
- public var VoiceOver_Chat_OpenLinkHint: String { return self._s[846]! }
- public var VoiceOver_Chat_Reply: String { return self._s[847]! }
- public var Channel_Info_Description: String { return self._s[848]! }
- public var Stickers_FavoriteStickers: String { return self._s[849]! }
- public var Channel_BanUser_PermissionAddMembers: String { return self._s[850]! }
- public var Notifications_DisplayNamesOnLockScreen: String { return self._s[851]! }
- public var Calls_NoMissedCallsPlacehoder: String { return self._s[852]! }
- public var Group_PublicLink_Placeholder: String { return self._s[853]! }
- public var Notifications_ExceptionsDefaultSound: String { return self._s[854]! }
+ public var VoiceOver_Chat_OpenLinkHint: String { return self._s[845]! }
+ public var VoiceOver_Chat_Reply: String { return self._s[846]! }
+ public var Channel_Info_Description: String { return self._s[847]! }
+ public var Stickers_FavoriteStickers: String { return self._s[848]! }
+ public var Channel_BanUser_PermissionAddMembers: String { return self._s[849]! }
+ public var Notifications_DisplayNamesOnLockScreen: String { return self._s[850]! }
+ public var Calls_NoMissedCallsPlacehoder: String { return self._s[851]! }
+ public var Group_PublicLink_Placeholder: String { return self._s[852]! }
+ public var Notifications_ExceptionsDefaultSound: String { return self._s[853]! }
public func PUSH_CHANNEL_MESSAGE_POLL(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[855]!, self._r[855]!, [_1])
+ return formatWithArgumentRanges(self._s[854]!, self._r[854]!, [_1])
}
- public var TextFormat_Underline: String { return self._s[856]! }
+ public var TextFormat_Underline: String { return self._s[855]! }
public func DialogList_SearchSubtitleFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[857]!, self._r[857]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[856]!, self._r[856]!, [_1, _2])
}
public func Channel_AdminLog_MessageRemovedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[858]!, self._r[858]!, [_0])
+ return formatWithArgumentRanges(self._s[857]!, self._r[857]!, [_0])
}
- public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[859]! }
+ public var Appearance_ThemePreview_ChatList_3_Name: String { return self._s[858]! }
public func Channel_OwnershipTransfer_TransferCompleted(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[860]!, self._r[860]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[859]!, self._r[859]!, [_1, _2])
}
- public var GroupPermission_Delete: String { return self._s[861]! }
- public var Passport_Language_uk: String { return self._s[862]! }
- public var StickerPack_HideStickers: String { return self._s[864]! }
- public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[865]! }
+ public var GroupPermission_Delete: String { return self._s[860]! }
+ public var Passport_Language_uk: String { return self._s[861]! }
+ public var StickerPack_HideStickers: String { return self._s[863]! }
+ public var ChangePhoneNumberNumber_NumberPlaceholder: String { return self._s[864]! }
public func PUSH_CHAT_MESSAGE_PHOTO(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[866]!, self._r[866]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[865]!, self._r[865]!, [_1, _2])
}
- public var Activity_UploadingVideoMessage: String { return self._s[867]! }
+ public var Activity_UploadingVideoMessage: String { return self._s[866]! }
public func GroupPermission_ApplyAlertText(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[868]!, self._r[868]!, [_0])
+ return formatWithArgumentRanges(self._s[867]!, self._r[867]!, [_0])
}
- public var Channel_TitleInfo: String { return self._s[869]! }
- public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[870]! }
- public var Settings_CallSettings: String { return self._s[871]! }
- public var Camera_SquareMode: String { return self._s[872]! }
- public var Conversation_SendMessage_ScheduleMessage: String { return self._s[873]! }
- public var GroupInfo_SharedMediaNone: String { return self._s[874]! }
+ public var Channel_TitleInfo: String { return self._s[868]! }
+ public var StickerPacksSettings_ArchivedPacks_Info: String { return self._s[869]! }
+ public var Settings_CallSettings: String { return self._s[870]! }
+ public var Camera_SquareMode: String { return self._s[871]! }
+ public var Conversation_SendMessage_ScheduleMessage: String { return self._s[872]! }
+ public var GroupInfo_SharedMediaNone: String { return self._s[873]! }
public func PUSH_MESSAGE_VIDEO_SECRET(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[875]!, self._r[875]!, [_1])
+ return formatWithArgumentRanges(self._s[874]!, self._r[874]!, [_1])
}
- public var Bot_GenericBotStatus: String { return self._s[876]! }
- public var Application_Update: String { return self._s[878]! }
- public var Month_ShortJanuary: String { return self._s[879]! }
- public var Contacts_PermissionsKeepDisabled: String { return self._s[880]! }
- public var Channel_AdminLog_BanReadMessages: String { return self._s[881]! }
- public var Settings_AppLanguage_Unofficial: String { return self._s[882]! }
- public var Passport_Address_Street2Placeholder: String { return self._s[883]! }
+ public var Bot_GenericBotStatus: String { return self._s[875]! }
+ public var Application_Update: String { return self._s[877]! }
+ public var Month_ShortJanuary: String { return self._s[878]! }
+ public var Contacts_PermissionsKeepDisabled: String { return self._s[879]! }
+ public var Channel_AdminLog_BanReadMessages: String { return self._s[880]! }
+ public var Settings_AppLanguage_Unofficial: String { return self._s[881]! }
+ public var Passport_Address_Street2Placeholder: String { return self._s[882]! }
public func Map_LiveLocationShortHour(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[884]!, self._r[884]!, [_0])
+ return formatWithArgumentRanges(self._s[883]!, self._r[883]!, [_0])
}
- public var NetworkUsageSettings_Cellular: String { return self._s[885]! }
- public var Appearance_PreviewOutgoingText: String { return self._s[886]! }
- public var Notifications_PermissionsAllowInSettings: String { return self._s[887]! }
- public var AutoDownloadSettings_OnForAll: String { return self._s[889]! }
- public var Map_Directions: String { return self._s[890]! }
- public var Passport_FieldIdentityTranslationHelp: String { return self._s[892]! }
- public var Appearance_ThemeDay: String { return self._s[893]! }
- public var LogoutOptions_LogOut: String { return self._s[894]! }
- public var Group_PublicLink_Title: String { return self._s[896]! }
- public var Channel_AddBotErrorNoRights: String { return self._s[897]! }
- public var Passport_Identity_AddPassport: String { return self._s[898]! }
- public var LocalGroup_ButtonTitle: String { return self._s[899]! }
- public var Call_Message: String { return self._s[900]! }
- public var PhotoEditor_ExposureTool: String { return self._s[901]! }
- public var Passport_FieldOneOf_Delimeter: String { return self._s[903]! }
- public var Channel_AdminLog_CanBanUsers: String { return self._s[905]! }
- public var Appearance_ThemePreview_ChatList_2_Name: String { return self._s[906]! }
- public var Appearance_Preview: String { return self._s[907]! }
- public var Compose_ChannelMembers: String { return self._s[908]! }
- public var Conversation_DeleteManyMessages: String { return self._s[909]! }
- public var ReportPeer_ReasonOther_Title: String { return self._s[910]! }
- public var Checkout_ErrorProviderAccountTimeout: String { return self._s[911]! }
- public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[912]! }
- public var Channel_Stickers_CreateYourOwn: String { return self._s[915]! }
- public var Conversation_UpdateTelegram: String { return self._s[916]! }
+ public var NetworkUsageSettings_Cellular: String { return self._s[884]! }
+ public var Appearance_PreviewOutgoingText: String { return self._s[885]! }
+ public var Notifications_PermissionsAllowInSettings: String { return self._s[886]! }
+ public var AutoDownloadSettings_OnForAll: String { return self._s[888]! }
+ public var Map_Directions: String { return self._s[889]! }
+ public var Passport_FieldIdentityTranslationHelp: String { return self._s[891]! }
+ public var Appearance_ThemeDay: String { return self._s[892]! }
+ public var LogoutOptions_LogOut: String { return self._s[893]! }
+ public var Group_PublicLink_Title: String { return self._s[895]! }
+ public var Channel_AddBotErrorNoRights: String { return self._s[896]! }
+ public var Passport_Identity_AddPassport: String { return self._s[897]! }
+ public var LocalGroup_ButtonTitle: String { return self._s[898]! }
+ public var Call_Message: String { return self._s[899]! }
+ public var PhotoEditor_ExposureTool: String { return self._s[900]! }
+ public var Passport_FieldOneOf_Delimeter: String { return self._s[902]! }
+ public var Channel_AdminLog_CanBanUsers: String { return self._s[904]! }
+ public var Appearance_ThemePreview_ChatList_2_Name: String { return self._s[905]! }
+ public var Appearance_Preview: String { return self._s[906]! }
+ public var Compose_ChannelMembers: String { return self._s[907]! }
+ public var Conversation_DeleteManyMessages: String { return self._s[908]! }
+ public var ReportPeer_ReasonOther_Title: String { return self._s[909]! }
+ public var Checkout_ErrorProviderAccountTimeout: String { return self._s[910]! }
+ public var TwoStepAuth_ResetAccountConfirmation: String { return self._s[911]! }
+ public var Channel_Stickers_CreateYourOwn: String { return self._s[914]! }
+ public var Conversation_UpdateTelegram: String { return self._s[915]! }
public func Notification_PinnedPhotoMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[917]!, self._r[917]!, [_0])
+ return formatWithArgumentRanges(self._s[916]!, self._r[916]!, [_0])
}
public func PUSH_PINNED_GIF(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[918]!, self._r[918]!, [_1])
+ return formatWithArgumentRanges(self._s[917]!, self._r[917]!, [_1])
}
- public var GroupInfo_Administrators_Title: String { return self._s[919]! }
- public var Privacy_Forwards_PreviewMessageText: String { return self._s[920]! }
+ public var GroupInfo_Administrators_Title: String { return self._s[918]! }
+ public var Privacy_Forwards_PreviewMessageText: String { return self._s[919]! }
public func PrivacySettings_LastSeenNobodyPlus(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[921]!, self._r[921]!, [_0])
+ return formatWithArgumentRanges(self._s[920]!, self._r[920]!, [_0])
}
- public var Tour_Title3: String { return self._s[922]! }
- public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[923]! }
- public var Clipboard_SendPhoto: String { return self._s[927]! }
- public var MediaPicker_Videos: String { return self._s[928]! }
- public var Passport_Email_Title: String { return self._s[929]! }
+ public var Tour_Title3: String { return self._s[921]! }
+ public var Channel_EditAdmin_PermissionInviteSubscribers: String { return self._s[922]! }
+ public var Clipboard_SendPhoto: String { return self._s[926]! }
+ public var MediaPicker_Videos: String { return self._s[927]! }
+ public var Passport_Email_Title: String { return self._s[928]! }
public func PrivacySettings_LastSeenEverybodyMinus(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[930]!, self._r[930]!, [_0])
+ return formatWithArgumentRanges(self._s[929]!, self._r[929]!, [_0])
}
- public var StickerPacksSettings_Title: String { return self._s[931]! }
- public var Conversation_MessageDialogDelete: String { return self._s[932]! }
- public var Privacy_Calls_CustomHelp: String { return self._s[934]! }
- public var Message_Wallpaper: String { return self._s[935]! }
- public var MemberSearch_BotSection: String { return self._s[936]! }
- public var GroupInfo_SetSound: String { return self._s[937]! }
- public var Core_ServiceUserStatus: String { return self._s[938]! }
- public var LiveLocationUpdated_JustNow: String { return self._s[939]! }
- public var Call_StatusFailed: String { return self._s[940]! }
- public var TwoStepAuth_SetupPasswordDescription: String { return self._s[941]! }
- public var TwoStepAuth_SetPassword: String { return self._s[942]! }
- public var Permissions_PeopleNearbyText_v0: String { return self._s[943]! }
+ public var StickerPacksSettings_Title: String { return self._s[930]! }
+ public var Conversation_MessageDialogDelete: String { return self._s[931]! }
+ public var Privacy_Calls_CustomHelp: String { return self._s[933]! }
+ public var Message_Wallpaper: String { return self._s[934]! }
+ public var MemberSearch_BotSection: String { return self._s[935]! }
+ public var GroupInfo_SetSound: String { return self._s[936]! }
+ public var Core_ServiceUserStatus: String { return self._s[937]! }
+ public var LiveLocationUpdated_JustNow: String { return self._s[938]! }
+ public var Call_StatusFailed: String { return self._s[939]! }
+ public var TwoStepAuth_SetupPasswordDescription: String { return self._s[940]! }
+ public var TwoStepAuth_SetPassword: String { return self._s[941]! }
+ public var Permissions_PeopleNearbyText_v0: String { return self._s[942]! }
public func SocksProxySetup_ProxyStatusPing(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[945]!, self._r[945]!, [_0])
+ return formatWithArgumentRanges(self._s[944]!, self._r[944]!, [_0])
}
- public var Calls_SubmitRating: String { return self._s[946]! }
- public var Profile_Username: String { return self._s[947]! }
- public var Bot_DescriptionTitle: String { return self._s[948]! }
- public var MaskStickerSettings_Title: String { return self._s[949]! }
- public var SharedMedia_CategoryOther: String { return self._s[950]! }
- public var GroupInfo_SetGroupPhoto: String { return self._s[951]! }
- public var Common_NotNow: String { return self._s[952]! }
- public var CallFeedback_IncludeLogsInfo: String { return self._s[953]! }
- public var Conversation_ShareMyPhoneNumber: String { return self._s[954]! }
- public var Map_Location: String { return self._s[955]! }
- public var Invitation_JoinGroup: String { return self._s[956]! }
- public var AutoDownloadSettings_Title: String { return self._s[958]! }
- public var Conversation_DiscardVoiceMessageDescription: String { return self._s[959]! }
- public var Channel_ErrorAddBlocked: String { return self._s[960]! }
- public var Conversation_UnblockUser: String { return self._s[961]! }
- public var Watch_Bot_Restart: String { return self._s[962]! }
- public var TwoStepAuth_Title: String { return self._s[963]! }
- public var Channel_AdminLog_BanSendMessages: String { return self._s[964]! }
- public var Checkout_ShippingMethod: String { return self._s[965]! }
- public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[966]! }
+ public var Calls_SubmitRating: String { return self._s[945]! }
+ public var Profile_Username: String { return self._s[946]! }
+ public var Bot_DescriptionTitle: String { return self._s[947]! }
+ public var MaskStickerSettings_Title: String { return self._s[948]! }
+ public var SharedMedia_CategoryOther: String { return self._s[949]! }
+ public var GroupInfo_SetGroupPhoto: String { return self._s[950]! }
+ public var Common_NotNow: String { return self._s[951]! }
+ public var CallFeedback_IncludeLogsInfo: String { return self._s[952]! }
+ public var Conversation_ShareMyPhoneNumber: String { return self._s[953]! }
+ public var Map_Location: String { return self._s[954]! }
+ public var Invitation_JoinGroup: String { return self._s[955]! }
+ public var AutoDownloadSettings_Title: String { return self._s[957]! }
+ public var Conversation_DiscardVoiceMessageDescription: String { return self._s[958]! }
+ public var Channel_ErrorAddBlocked: String { return self._s[959]! }
+ public var Conversation_UnblockUser: String { return self._s[960]! }
+ public var Watch_Bot_Restart: String { return self._s[961]! }
+ public var TwoStepAuth_Title: String { return self._s[962]! }
+ public var Channel_AdminLog_BanSendMessages: String { return self._s[963]! }
+ public var Checkout_ShippingMethod: String { return self._s[964]! }
+ public var Passport_Identity_OneOfTypeIdentityCard: String { return self._s[965]! }
public func PUSH_CHAT_MESSAGE_STICKER(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[967]!, self._r[967]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[966]!, self._r[966]!, [_1, _2, _3])
}
public func Chat_UnsendMyMessagesAlertTitle(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[969]!, self._r[969]!, [_0])
+ return formatWithArgumentRanges(self._s[968]!, self._r[968]!, [_0])
}
public func Channel_Username_LinkHint(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[970]!, self._r[970]!, [_0])
+ return formatWithArgumentRanges(self._s[969]!, self._r[969]!, [_0])
}
- public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[971]! }
- public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[972]! }
- public var AuthSessions_TerminateOtherSessions: String { return self._s[973]! }
- public var Contacts_FailedToSendInvitesMessage: String { return self._s[974]! }
- public var PrivacySettings_TwoStepAuth: String { return self._s[975]! }
- public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[976]! }
- public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[977]! }
- public var Conversation_EditingMessagePanelMedia: String { return self._s[978]! }
- public var Checkout_PaymentMethod_Title: String { return self._s[979]! }
- public var SocksProxySetup_Connection: String { return self._s[980]! }
- public var Group_MessagePhotoRemoved: String { return self._s[981]! }
- public var Channel_Stickers_NotFound: String { return self._s[983]! }
- public var Group_About_Help: String { return self._s[984]! }
- public var Notification_PassportValueProofOfIdentity: String { return self._s[985]! }
- public var PeopleNearby_Title: String { return self._s[987]! }
+ public var Appearance_ThemePreview_ChatList_1_Name: String { return self._s[970]! }
+ public var SettingsSearch_Synonyms_Data_AutoplayGifs: String { return self._s[971]! }
+ public var AuthSessions_TerminateOtherSessions: String { return self._s[972]! }
+ public var Contacts_FailedToSendInvitesMessage: String { return self._s[973]! }
+ public var PrivacySettings_TwoStepAuth: String { return self._s[974]! }
+ public var Notification_Exceptions_PreviewAlwaysOn: String { return self._s[975]! }
+ public var SettingsSearch_Synonyms_Privacy_Passcode: String { return self._s[976]! }
+ public var Conversation_EditingMessagePanelMedia: String { return self._s[977]! }
+ public var Checkout_PaymentMethod_Title: String { return self._s[978]! }
+ public var SocksProxySetup_Connection: String { return self._s[979]! }
+ public var Group_MessagePhotoRemoved: String { return self._s[980]! }
+ public var Channel_Stickers_NotFound: String { return self._s[982]! }
+ public var Group_About_Help: String { return self._s[983]! }
+ public var Notification_PassportValueProofOfIdentity: String { return self._s[984]! }
+ public var PeopleNearby_Title: String { return self._s[986]! }
public func ApplyLanguage_ChangeLanguageOfficialText(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[988]!, self._r[988]!, [_1])
+ return formatWithArgumentRanges(self._s[987]!, self._r[987]!, [_1])
}
- public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[990]! }
- public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[991]! }
- public var SocksProxySetup_Password: String { return self._s[992]! }
- public var Notifications_PermissionsEnable: String { return self._s[993]! }
- public var TwoStepAuth_ChangeEmail: String { return self._s[995]! }
+ public var CheckoutInfo_ShippingInfoStatePlaceholder: String { return self._s[989]! }
+ public var Notifications_GroupNotificationsExceptionsHelp: String { return self._s[990]! }
+ public var SocksProxySetup_Password: String { return self._s[991]! }
+ public var Notifications_PermissionsEnable: String { return self._s[992]! }
+ public var TwoStepAuth_ChangeEmail: String { return self._s[994]! }
public func Channel_AdminLog_MessageInvitedName(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[996]!, self._r[996]!, [_1])
+ return formatWithArgumentRanges(self._s[995]!, self._r[995]!, [_1])
}
public func Time_MonthOfYear_m10(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[998]!, self._r[998]!, [_0])
+ return formatWithArgumentRanges(self._s[997]!, self._r[997]!, [_0])
}
- public var Passport_Identity_TypeDriversLicense: String { return self._s[999]! }
- public var ArchivedPacksAlert_Title: String { return self._s[1000]! }
+ public var Passport_Identity_TypeDriversLicense: String { return self._s[998]! }
+ public var ArchivedPacksAlert_Title: String { return self._s[999]! }
public func Time_PreciseDate_m7(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1001]!, self._r[1001]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[1000]!, self._r[1000]!, [_1, _2, _3])
}
- public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[1002]! }
- public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[1004]! }
- public var Conversation_StatusTyping: String { return self._s[1005]! }
- public var Broadcast_AdminLog_EmptyText: String { return self._s[1006]! }
- public var Notification_PassportValueProofOfAddress: String { return self._s[1007]! }
- public var UserInfo_CreateNewContact: String { return self._s[1008]! }
- public var Passport_Identity_FrontSide: String { return self._s[1009]! }
- public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[1010]! }
- public var Calls_CallTabTitle: String { return self._s[1011]! }
- public var Channel_AdminLog_ChannelEmptyText: String { return self._s[1012]! }
+ public var PrivacyLastSeenSettings_GroupsAndChannelsHelp: String { return self._s[1001]! }
+ public var Privacy_Calls_NeverAllow_Placeholder: String { return self._s[1003]! }
+ public var Conversation_StatusTyping: String { return self._s[1004]! }
+ public var Broadcast_AdminLog_EmptyText: String { return self._s[1005]! }
+ public var Notification_PassportValueProofOfAddress: String { return self._s[1006]! }
+ public var UserInfo_CreateNewContact: String { return self._s[1007]! }
+ public var Passport_Identity_FrontSide: String { return self._s[1008]! }
+ public var Login_PhoneNumberAlreadyAuthorizedSwitch: String { return self._s[1009]! }
+ public var Calls_CallTabTitle: String { return self._s[1010]! }
+ public var Channel_AdminLog_ChannelEmptyText: String { return self._s[1011]! }
public func Login_BannedPhoneBody(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1014]!, self._r[1014]!, [_0])
+ return formatWithArgumentRanges(self._s[1013]!, self._r[1013]!, [_0])
}
- public var Watch_UserInfo_MuteTitle: String { return self._s[1015]! }
- public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[1016]! }
- public var SharedMedia_EmptyMusicText: String { return self._s[1017]! }
- public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[1018]! }
- public var Paint_Stickers: String { return self._s[1019]! }
- public var Privacy_GroupsAndChannels: String { return self._s[1020]! }
- public var UserInfo_AddContact: String { return self._s[1022]! }
+ public var Watch_UserInfo_MuteTitle: String { return self._s[1014]! }
+ public var Group_EditAdmin_RankAdminPlaceholder: String { return self._s[1015]! }
+ public var SharedMedia_EmptyMusicText: String { return self._s[1016]! }
+ public var PasscodeSettings_AutoLock_IfAwayFor_1minute: String { return self._s[1017]! }
+ public var Paint_Stickers: String { return self._s[1018]! }
+ public var Privacy_GroupsAndChannels: String { return self._s[1019]! }
+ public var UserInfo_AddContact: String { return self._s[1021]! }
public func Conversation_MessageViaUser(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1023]!, self._r[1023]!, [_0])
+ return formatWithArgumentRanges(self._s[1022]!, self._r[1022]!, [_0])
}
- public var PhoneNumberHelp_ChangeNumber: String { return self._s[1025]! }
+ public var PhoneNumberHelp_ChangeNumber: String { return self._s[1024]! }
public func ChatList_ClearChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1027]!, self._r[1027]!, [_0])
+ return formatWithArgumentRanges(self._s[1026]!, self._r[1026]!, [_0])
}
- public var DialogList_NoMessagesTitle: String { return self._s[1028]! }
- public var EditProfile_NameAndPhotoHelp: String { return self._s[1029]! }
- public var BlockedUsers_BlockUser: String { return self._s[1030]! }
- public var Notifications_PermissionsOpenSettings: String { return self._s[1031]! }
- public var MediaPicker_UngroupDescription: String { return self._s[1032]! }
- public var Watch_NoConnection: String { return self._s[1033]! }
- public var Month_GenSeptember: String { return self._s[1034]! }
- public var Conversation_ViewGroup: String { return self._s[1035]! }
- public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[1038]! }
- public var Privacy_Forwards_AlwaysLink: String { return self._s[1039]! }
- public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1040]! }
- public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[1041]! }
- public var MediaPicker_CameraRoll: String { return self._s[1043]! }
- public var Month_GenAugust: String { return self._s[1044]! }
- public var AccessDenied_VideoMessageMicrophone: String { return self._s[1045]! }
- public var SharedMedia_EmptyText: String { return self._s[1046]! }
- public var Map_ShareLiveLocation: String { return self._s[1047]! }
- public var Calls_All: String { return self._s[1048]! }
- public var Appearance_ThemeNight: String { return self._s[1051]! }
- public var Conversation_HoldForAudio: String { return self._s[1052]! }
- public var SettingsSearch_Synonyms_Support: String { return self._s[1055]! }
- public var GroupInfo_GroupHistoryHidden: String { return self._s[1056]! }
- public var SocksProxySetup_Secret: String { return self._s[1057]! }
+ public var DialogList_NoMessagesTitle: String { return self._s[1027]! }
+ public var EditProfile_NameAndPhotoHelp: String { return self._s[1028]! }
+ public var BlockedUsers_BlockUser: String { return self._s[1029]! }
+ public var Notifications_PermissionsOpenSettings: String { return self._s[1030]! }
+ public var MediaPicker_UngroupDescription: String { return self._s[1031]! }
+ public var Watch_NoConnection: String { return self._s[1032]! }
+ public var Month_GenSeptember: String { return self._s[1033]! }
+ public var Conversation_ViewGroup: String { return self._s[1034]! }
+ public var Channel_AdminLogFilter_EventsLeavingSubscribers: String { return self._s[1037]! }
+ public var Privacy_Forwards_AlwaysLink: String { return self._s[1038]! }
+ public var Channel_OwnershipTransfer_ErrorAdminsTooMuch: String { return self._s[1039]! }
+ public var Passport_FieldOneOf_FinalDelimeter: String { return self._s[1040]! }
+ public var MediaPicker_CameraRoll: String { return self._s[1042]! }
+ public var Month_GenAugust: String { return self._s[1043]! }
+ public var AccessDenied_VideoMessageMicrophone: String { return self._s[1044]! }
+ public var SharedMedia_EmptyText: String { return self._s[1045]! }
+ public var Map_ShareLiveLocation: String { return self._s[1046]! }
+ public var Calls_All: String { return self._s[1047]! }
+ public var Appearance_ThemeNight: String { return self._s[1050]! }
+ public var Conversation_HoldForAudio: String { return self._s[1051]! }
+ public var SettingsSearch_Synonyms_Support: String { return self._s[1054]! }
+ public var GroupInfo_GroupHistoryHidden: String { return self._s[1055]! }
+ public var SocksProxySetup_Secret: String { return self._s[1056]! }
public func Activity_RemindAboutChannel(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1058]!, self._r[1058]!, [_0])
+ return formatWithArgumentRanges(self._s[1057]!, self._r[1057]!, [_0])
}
- public var Channel_BanList_RestrictedTitle: String { return self._s[1060]! }
- public var Conversation_Location: String { return self._s[1061]! }
+ public var Channel_BanList_RestrictedTitle: String { return self._s[1059]! }
+ public var Conversation_Location: String { return self._s[1060]! }
public func AutoDownloadSettings_UpToFor(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1062]!, self._r[1062]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[1061]!, self._r[1061]!, [_1, _2])
}
- public var ChatSettings_AutoDownloadPhotos: String { return self._s[1064]! }
- public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1065]! }
- public var Notifications_PermissionsText: String { return self._s[1066]! }
- public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1067]! }
- public var Call_Flip: String { return self._s[1068]! }
- public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1070]! }
- public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1072]! }
- public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1074]! }
- public var Channel_TooMuchBots: String { return self._s[1076]! }
- public var Passport_DeletePassportConfirmation: String { return self._s[1077]! }
- public var Login_InvalidCodeError: String { return self._s[1078]! }
- public var StickerPacksSettings_FeaturedPacks: String { return self._s[1079]! }
+ public var ChatSettings_AutoDownloadPhotos: String { return self._s[1063]! }
+ public var SettingsSearch_Synonyms_Privacy_Title: String { return self._s[1064]! }
+ public var Notifications_PermissionsText: String { return self._s[1065]! }
+ public var SettingsSearch_Synonyms_Data_SaveIncomingPhotos: String { return self._s[1066]! }
+ public var Call_Flip: String { return self._s[1067]! }
+ public var SocksProxySetup_ProxyStatusConnecting: String { return self._s[1069]! }
+ public var Channel_EditAdmin_PermissionPinMessages: String { return self._s[1071]! }
+ public var TwoStepAuth_ReEnterPasswordDescription: String { return self._s[1073]! }
+ public var Channel_TooMuchBots: String { return self._s[1075]! }
+ public var Passport_DeletePassportConfirmation: String { return self._s[1076]! }
+ public var Login_InvalidCodeError: String { return self._s[1077]! }
+ public var StickerPacksSettings_FeaturedPacks: String { return self._s[1078]! }
public func ChatList_DeleteSecretChatConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1080]!, self._r[1080]!, [_0])
+ return formatWithArgumentRanges(self._s[1079]!, self._r[1079]!, [_0])
}
public func GroupInfo_InvitationLinkAcceptChannel(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[1081]!, self._r[1081]!, [_0])
+ return formatWithArgumentRanges(self._s[1080]!, self._r[1080]!, [_0])
}
- public var VoiceOver_Navigation_ProxySettings: String { return self._s[1082]! }
- public var Call_CallInProgressTitle: String { return self._s[1083]! }
- public var Month_ShortSeptember: String { return self._s[1084]! }
- public var Watch_ChannelInfo_Title: String { return self._s[1085]! }
- public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1088]! }
- public var DialogList_PasscodeLockHelp: String { return self._s[1089]! }
- public var Chat_MultipleTextMessagesDisabled: String { return self._s[1090]! }
- public var Notifications_Badge_IncludePublicGroups: String { return self._s[1091]! }
- public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1092]! }
- public var PhotoEditor_CropReset: String { return self._s[1093]! }
- public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1095]! }
- public var Channel_Management_LabelEditor: String { return self._s[1096]! }
- public var Passport_Identity_LatinNameHelp: String { return self._s[1098]! }
- public var PhotoEditor_HighlightsTool: String { return self._s[1099]! }
- public var UserInfo_Title: String { return self._s[1100]! }
- public var ChatList_HideAction: String { return self._s[1101]! }
- public var AccessDenied_Title: String { return self._s[1102]! }
- public var DialogList_SearchLabel: String { return self._s[1103]! }
- public var Group_Setup_HistoryHidden: String { return self._s[1104]! }
- public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1105]! }
- public var State_Updating: String { return self._s[1107]! }
- public var Contacts_TabTitle: String { return self._s[1108]! }
- public var Notifications_Badge_CountUnreadMessages: String { return self._s[1110]! }
- public var GroupInfo_GroupHistory: String { return self._s[1111]! }
- public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1112]! }
- public var Wallpaper_SetColor: String { return self._s[1113]! }
- public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1114]! }
- public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1115]! }
+ public var VoiceOver_Navigation_ProxySettings: String { return self._s[1081]! }
+ public var Call_CallInProgressTitle: String { return self._s[1082]! }
+ public var Month_ShortSeptember: String { return self._s[1083]! }
+ public var Watch_ChannelInfo_Title: String { return self._s[1084]! }
+ public var ChatList_DeleteSavedMessagesConfirmation: String { return self._s[1087]! }
+ public var DialogList_PasscodeLockHelp: String { return self._s[1088]! }
+ public var Chat_MultipleTextMessagesDisabled: String { return self._s[1089]! }
+ public var Notifications_Badge_IncludePublicGroups: String { return self._s[1090]! }
+ public var Channel_AdminLogFilter_EventsTitle: String { return self._s[1091]! }
+ public var PhotoEditor_CropReset: String { return self._s[1092]! }
+ public var Group_Username_CreatePrivateLinkHelp: String { return self._s[1094]! }
+ public var Channel_Management_LabelEditor: String { return self._s[1095]! }
+ public var Passport_Identity_LatinNameHelp: String { return self._s[1097]! }
+ public var PhotoEditor_HighlightsTool: String { return self._s[1098]! }
+ public var UserInfo_Title: String { return self._s[1099]! }
+ public var ChatList_HideAction: String { return self._s[1100]! }
+ public var AccessDenied_Title: String { return self._s[1101]! }
+ public var DialogList_SearchLabel: String { return self._s[1102]! }
+ public var Group_Setup_HistoryHidden: String { return self._s[1103]! }
+ public var TwoStepAuth_PasswordChangeSuccess: String { return self._s[1104]! }
+ public var State_Updating: String { return self._s[1106]! }
+ public var Contacts_TabTitle: String { return self._s[1107]! }
+ public var Notifications_Badge_CountUnreadMessages: String { return self._s[1109]! }
+ public var GroupInfo_GroupHistory: String { return self._s[1110]! }
+ public var Conversation_UnsupportedMediaPlaceholder: String { return self._s[1111]! }
+ public var Wallpaper_SetColor: String { return self._s[1112]! }
+ public var CheckoutInfo_ShippingInfoCountry: String { return self._s[1113]! }
+ public var SettingsSearch_Synonyms_SavedMessages: String { return self._s[1114]! }
+ public var Chat_AttachmentLimitReached: String { return self._s[1115]! }
public var Passport_Identity_OneOfTypeDriversLicense: String { return self._s[1116]! }
public var Contacts_NotRegisteredSection: String { return self._s[1117]! }
public func Time_PreciseDate_m4(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
@@ -2752,1690 +2752,1692 @@ public final class PresentationStrings {
public var PhotoEditor_QualityTool: String { return self._s[2364]! }
public var Login_SendCodeViaSms: String { return self._s[2365]! }
public var SettingsSearch_Synonyms_Privacy_DeleteAccountIfAwayFor: String { return self._s[2366]! }
- public var Login_EmailNotConfiguredError: String { return self._s[2367]! }
- public var SocksProxySetup_Status: String { return self._s[2368]! }
- public var PrivacyPolicy_Accept: String { return self._s[2369]! }
- public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2370]! }
- public var Appearance_AppIconClassicX: String { return self._s[2371]! }
+ public var Chat_SlowmodeAttachmentLimitReached: String { return self._s[2367]! }
+ public var Login_EmailNotConfiguredError: String { return self._s[2368]! }
+ public var SocksProxySetup_Status: String { return self._s[2369]! }
+ public var PrivacyPolicy_Accept: String { return self._s[2370]! }
+ public var Notifications_ExceptionsMessagePlaceholder: String { return self._s[2371]! }
+ public var Appearance_AppIconClassicX: String { return self._s[2372]! }
public func PUSH_CHAT_MESSAGE_TEXT(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2372]!, self._r[2372]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[2373]!, self._r[2373]!, [_1, _2, _3])
}
- public var OwnershipTransfer_SecurityRequirements: String { return self._s[2373]! }
- public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2374]! }
- public var AutoNightTheme_Automatic: String { return self._s[2375]! }
- public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2376]! }
- public var Privacy_ContactsSyncHelp: String { return self._s[2377]! }
- public var Cache_Help: String { return self._s[2378]! }
- public var Group_ErrorAccessDenied: String { return self._s[2379]! }
- public var Passport_Language_fa: String { return self._s[2380]! }
- public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2381]! }
- public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2382]! }
- public var PrivacySettings_LastSeen: String { return self._s[2383]! }
+ public var OwnershipTransfer_SecurityRequirements: String { return self._s[2374]! }
+ public var InfoPlist_NSLocationAlwaysUsageDescription: String { return self._s[2375]! }
+ public var AutoNightTheme_Automatic: String { return self._s[2376]! }
+ public var Channel_Username_InvalidStartsWithNumber: String { return self._s[2377]! }
+ public var Privacy_ContactsSyncHelp: String { return self._s[2378]! }
+ public var Cache_Help: String { return self._s[2379]! }
+ public var Group_ErrorAccessDenied: String { return self._s[2380]! }
+ public var Passport_Language_fa: String { return self._s[2381]! }
+ public var Login_ResetAccountProtected_TimerTitle: String { return self._s[2382]! }
+ public var VoiceOver_Chat_YourVideoMessage: String { return self._s[2383]! }
+ public var PrivacySettings_LastSeen: String { return self._s[2384]! }
public func DialogList_MultipleTyping(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2384]!, self._r[2384]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[2385]!, self._r[2385]!, [_0, _1])
}
- public var Preview_SaveGif: String { return self._s[2388]! }
- public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2389]! }
- public var Profile_About: String { return self._s[2390]! }
- public var Channel_About_Placeholder: String { return self._s[2391]! }
- public var Login_InfoTitle: String { return self._s[2392]! }
+ public var Preview_SaveGif: String { return self._s[2389]! }
+ public var SettingsSearch_Synonyms_Privacy_TwoStepAuth: String { return self._s[2390]! }
+ public var Profile_About: String { return self._s[2391]! }
+ public var Channel_About_Placeholder: String { return self._s[2392]! }
+ public var Login_InfoTitle: String { return self._s[2393]! }
public func TwoStepAuth_SetupPendingEmail(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2393]!, self._r[2393]!, [_0])
+ return formatWithArgumentRanges(self._s[2394]!, self._r[2394]!, [_0])
}
- public var Watch_Suggestion_CantTalk: String { return self._s[2395]! }
- public var ContactInfo_Title: String { return self._s[2396]! }
- public var Media_ShareThisVideo: String { return self._s[2397]! }
- public var Weekday_ShortFriday: String { return self._s[2398]! }
- public var AccessDenied_Contacts: String { return self._s[2400]! }
- public var Notification_CallIncomingShort: String { return self._s[2401]! }
- public var Group_Setup_TypePublic: String { return self._s[2402]! }
- public var Notifications_MessageNotificationsExceptions: String { return self._s[2403]! }
- public var Notifications_Badge_IncludeChannels: String { return self._s[2404]! }
- public var Notifications_MessageNotificationsPreview: String { return self._s[2407]! }
- public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2408]! }
- public var Group_ErrorAddTooMuchBots: String { return self._s[2409]! }
- public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2410]! }
- public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2411]! }
- public var DialogList_Typing: String { return self._s[2412]! }
- public var CallFeedback_IncludeLogs: String { return self._s[2414]! }
- public var Checkout_Phone: String { return self._s[2416]! }
- public var Login_InfoFirstNamePlaceholder: String { return self._s[2419]! }
- public var Privacy_Calls_Integration: String { return self._s[2420]! }
- public var Notifications_PermissionsAllow: String { return self._s[2421]! }
- public var TwoStepAuth_AddHintDescription: String { return self._s[2425]! }
- public var Settings_ChatSettings: String { return self._s[2426]! }
+ public var Watch_Suggestion_CantTalk: String { return self._s[2396]! }
+ public var ContactInfo_Title: String { return self._s[2397]! }
+ public var Media_ShareThisVideo: String { return self._s[2398]! }
+ public var Weekday_ShortFriday: String { return self._s[2399]! }
+ public var AccessDenied_Contacts: String { return self._s[2401]! }
+ public var Notification_CallIncomingShort: String { return self._s[2402]! }
+ public var Group_Setup_TypePublic: String { return self._s[2403]! }
+ public var Notifications_MessageNotificationsExceptions: String { return self._s[2404]! }
+ public var Notifications_Badge_IncludeChannels: String { return self._s[2405]! }
+ public var Notifications_MessageNotificationsPreview: String { return self._s[2408]! }
+ public var ConversationProfile_ErrorCreatingConversation: String { return self._s[2409]! }
+ public var Group_ErrorAddTooMuchBots: String { return self._s[2410]! }
+ public var Privacy_GroupsAndChannels_CustomShareHelp: String { return self._s[2411]! }
+ public var Permissions_CellularDataAllowInSettings_v0: String { return self._s[2412]! }
+ public var DialogList_Typing: String { return self._s[2413]! }
+ public var CallFeedback_IncludeLogs: String { return self._s[2415]! }
+ public var Checkout_Phone: String { return self._s[2417]! }
+ public var Login_InfoFirstNamePlaceholder: String { return self._s[2420]! }
+ public var Privacy_Calls_Integration: String { return self._s[2421]! }
+ public var Notifications_PermissionsAllow: String { return self._s[2422]! }
+ public var TwoStepAuth_AddHintDescription: String { return self._s[2426]! }
+ public var Settings_ChatSettings: String { return self._s[2427]! }
public func PUSH_MESSAGE_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2427]!, self._r[2427]!, [_1])
+ return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_1])
}
public func Channel_AdminLog_MessageInvitedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2428]!, self._r[2428]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2429]!, self._r[2429]!, [_1, _2])
}
- public var GroupRemoved_DeleteUser: String { return self._s[2430]! }
+ public var GroupRemoved_DeleteUser: String { return self._s[2431]! }
public func Channel_AdminLog_PollStopped(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2431]!, self._r[2431]!, [_0])
+ return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_0])
}
public func PUSH_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2432]!, self._r[2432]!, [_1])
+ return formatWithArgumentRanges(self._s[2433]!, self._r[2433]!, [_1])
}
- public var Login_ContinueWithLocalization: String { return self._s[2433]! }
- public var Watch_Message_ForwardedFrom: String { return self._s[2434]! }
- public var TwoStepAuth_EnterEmailCode: String { return self._s[2436]! }
- public var Conversation_Unblock: String { return self._s[2437]! }
- public var PrivacySettings_DataSettings: String { return self._s[2438]! }
- public var Group_PublicLink_Info: String { return self._s[2439]! }
- public var Notifications_InAppNotificationsVibrate: String { return self._s[2440]! }
+ public var Login_ContinueWithLocalization: String { return self._s[2434]! }
+ public var Watch_Message_ForwardedFrom: String { return self._s[2435]! }
+ public var TwoStepAuth_EnterEmailCode: String { return self._s[2437]! }
+ public var Conversation_Unblock: String { return self._s[2438]! }
+ public var PrivacySettings_DataSettings: String { return self._s[2439]! }
+ public var Group_PublicLink_Info: String { return self._s[2440]! }
+ public var Notifications_InAppNotificationsVibrate: String { return self._s[2441]! }
public func Privacy_GroupsAndChannels_InviteToChannelError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2441]!, self._r[2441]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[2442]!, self._r[2442]!, [_0, _1])
}
- public var PrivacySettings_Passcode: String { return self._s[2444]! }
- public var Call_Mute: String { return self._s[2445]! }
- public var Passport_Language_dz: String { return self._s[2446]! }
- public var Passport_Language_tk: String { return self._s[2447]! }
+ public var PrivacySettings_Passcode: String { return self._s[2445]! }
+ public var Call_Mute: String { return self._s[2446]! }
+ public var Passport_Language_dz: String { return self._s[2447]! }
+ public var Passport_Language_tk: String { return self._s[2448]! }
public func Login_EmailCodeSubject(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2448]!, self._r[2448]!, [_0])
+ return formatWithArgumentRanges(self._s[2449]!, self._r[2449]!, [_0])
}
- public var Settings_Search: String { return self._s[2449]! }
- public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2450]! }
- public var Conversation_ContextMenuReply: String { return self._s[2451]! }
- public var WallpaperSearch_ColorBrown: String { return self._s[2452]! }
- public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2453]! }
- public var Tour_Title1: String { return self._s[2454]! }
- public var Conversation_ClearGroupHistory: String { return self._s[2456]! }
- public var WallpaperPreview_Motion: String { return self._s[2457]! }
+ public var Settings_Search: String { return self._s[2450]! }
+ public var InfoPlist_NSPhotoLibraryUsageDescription: String { return self._s[2451]! }
+ public var Conversation_ContextMenuReply: String { return self._s[2452]! }
+ public var WallpaperSearch_ColorBrown: String { return self._s[2453]! }
+ public var Chat_AttachmentMultipleForwardDisabled: String { return self._s[2454]! }
+ public var Tour_Title1: String { return self._s[2455]! }
+ public var Conversation_ClearGroupHistory: String { return self._s[2457]! }
+ public var WallpaperPreview_Motion: String { return self._s[2458]! }
public func Checkout_PasswordEntry_Text(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2458]!, self._r[2458]!, [_0])
+ return formatWithArgumentRanges(self._s[2459]!, self._r[2459]!, [_0])
}
- public var Call_RateCall: String { return self._s[2459]! }
- public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2460]! }
- public var Passport_PasswordCompleteSetup: String { return self._s[2461]! }
- public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2462]! }
- public var UserInfo_LastNamePlaceholder: String { return self._s[2464]! }
+ public var Call_RateCall: String { return self._s[2460]! }
+ public var Channel_AdminLog_BanSendStickersAndGifs: String { return self._s[2461]! }
+ public var Passport_PasswordCompleteSetup: String { return self._s[2462]! }
+ public var Conversation_InputTextSilentBroadcastPlaceholder: String { return self._s[2463]! }
+ public var UserInfo_LastNamePlaceholder: String { return self._s[2465]! }
public func Login_WillCallYou(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2466]!, self._r[2466]!, [_0])
+ return formatWithArgumentRanges(self._s[2467]!, self._r[2467]!, [_0])
}
- public var Compose_Create: String { return self._s[2467]! }
- public var Contacts_InviteToTelegram: String { return self._s[2468]! }
- public var GroupInfo_Notifications: String { return self._s[2469]! }
- public var Message_PinnedLiveLocationMessage: String { return self._s[2471]! }
- public var Month_GenApril: String { return self._s[2472]! }
- public var Appearance_AutoNightTheme: String { return self._s[2473]! }
- public var ChatSettings_AutomaticAudioDownload: String { return self._s[2475]! }
- public var Login_CodeSentSms: String { return self._s[2477]! }
+ public var Compose_Create: String { return self._s[2468]! }
+ public var Contacts_InviteToTelegram: String { return self._s[2469]! }
+ public var GroupInfo_Notifications: String { return self._s[2470]! }
+ public var Message_PinnedLiveLocationMessage: String { return self._s[2472]! }
+ public var Month_GenApril: String { return self._s[2473]! }
+ public var Appearance_AutoNightTheme: String { return self._s[2474]! }
+ public var ChatSettings_AutomaticAudioDownload: String { return self._s[2476]! }
+ public var Login_CodeSentSms: String { return self._s[2478]! }
public func UserInfo_UnblockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2478]!, self._r[2478]!, [_0])
+ return formatWithArgumentRanges(self._s[2479]!, self._r[2479]!, [_0])
}
- public var EmptyGroupInfo_Line3: String { return self._s[2479]! }
- public var LogoutOptions_ContactSupportText: String { return self._s[2480]! }
- public var Passport_Language_hr: String { return self._s[2481]! }
- public var Common_ActionNotAllowedError: String { return self._s[2482]! }
+ public var EmptyGroupInfo_Line3: String { return self._s[2480]! }
+ public var LogoutOptions_ContactSupportText: String { return self._s[2481]! }
+ public var Passport_Language_hr: String { return self._s[2482]! }
+ public var Common_ActionNotAllowedError: String { return self._s[2483]! }
public func Channel_AdminLog_MessageRestrictedNewSetting(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2483]!, self._r[2483]!, [_0])
+ return formatWithArgumentRanges(self._s[2484]!, self._r[2484]!, [_0])
}
- public var GroupInfo_InviteLink_CopyLink: String { return self._s[2484]! }
- public var Appearance_ThemePreview_ChatList_8_Text: String { return self._s[2485]! }
- public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2486]! }
- public var Privacy_SecretChatsTitle: String { return self._s[2487]! }
- public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2489]! }
- public var GroupInfo_AddUserLeftError: String { return self._s[2490]! }
- public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2491]! }
- public var LogoutOptions_ContactSupportTitle: String { return self._s[2492]! }
- public var Channel_AddBotErrorHaveRights: String { return self._s[2493]! }
- public var Preview_DeleteGif: String { return self._s[2494]! }
- public var GroupInfo_Permissions_Exceptions: String { return self._s[2495]! }
- public var Group_ErrorNotMutualContact: String { return self._s[2496]! }
- public var Notification_MessageLifetime5s: String { return self._s[2497]! }
+ public var GroupInfo_InviteLink_CopyLink: String { return self._s[2485]! }
+ public var Appearance_ThemePreview_ChatList_8_Text: String { return self._s[2486]! }
+ public var Conversation_InputTextBroadcastPlaceholder: String { return self._s[2487]! }
+ public var Privacy_SecretChatsTitle: String { return self._s[2488]! }
+ public var Notification_SecretChatMessageScreenshotSelf: String { return self._s[2490]! }
+ public var GroupInfo_AddUserLeftError: String { return self._s[2491]! }
+ public var AutoDownloadSettings_TypePrivateChats: String { return self._s[2492]! }
+ public var LogoutOptions_ContactSupportTitle: String { return self._s[2493]! }
+ public var Channel_AddBotErrorHaveRights: String { return self._s[2494]! }
+ public var Preview_DeleteGif: String { return self._s[2495]! }
+ public var GroupInfo_Permissions_Exceptions: String { return self._s[2496]! }
+ public var Group_ErrorNotMutualContact: String { return self._s[2497]! }
+ public var Notification_MessageLifetime5s: String { return self._s[2498]! }
public func Watch_LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2498]!, self._r[2498]!, [_0])
+ return formatWithArgumentRanges(self._s[2499]!, self._r[2499]!, [_0])
}
- public var VoiceOver_Chat_Video: String { return self._s[2499]! }
- public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2501]! }
- public var ReportSpam_DeleteThisChat: String { return self._s[2502]! }
- public var Passport_Address_AddBankStatement: String { return self._s[2503]! }
- public var Notification_CallIncoming: String { return self._s[2504]! }
- public var Compose_NewGroupTitle: String { return self._s[2505]! }
- public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2507]! }
- public var Passport_Address_Postcode: String { return self._s[2509]! }
+ public var VoiceOver_Chat_Video: String { return self._s[2500]! }
+ public var Channel_OwnershipTransfer_ErrorPublicChannelsTooMuch: String { return self._s[2502]! }
+ public var ReportSpam_DeleteThisChat: String { return self._s[2503]! }
+ public var Passport_Address_AddBankStatement: String { return self._s[2504]! }
+ public var Notification_CallIncoming: String { return self._s[2505]! }
+ public var Compose_NewGroupTitle: String { return self._s[2506]! }
+ public var TwoStepAuth_RecoveryCodeHelp: String { return self._s[2508]! }
+ public var Passport_Address_Postcode: String { return self._s[2510]! }
public func LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2510]!, self._r[2510]!, [_0])
+ return formatWithArgumentRanges(self._s[2511]!, self._r[2511]!, [_0])
}
- public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2511]! }
- public var VoiceOver_Chat_YourMusic: String { return self._s[2512]! }
- public var WallpaperColors_Title: String { return self._s[2513]! }
- public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2514]! }
- public var VoiceOver_MessageContextForward: String { return self._s[2515]! }
- public var GroupPermission_Duration: String { return self._s[2516]! }
+ public var Checkout_NewCard_SaveInfoHelp: String { return self._s[2512]! }
+ public var VoiceOver_Chat_YourMusic: String { return self._s[2513]! }
+ public var WallpaperColors_Title: String { return self._s[2514]! }
+ public var SocksProxySetup_ShareQRCodeInfo: String { return self._s[2515]! }
+ public var VoiceOver_MessageContextForward: String { return self._s[2516]! }
+ public var GroupPermission_Duration: String { return self._s[2517]! }
public func Cache_Clear(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2517]!, self._r[2517]!, [_0])
+ return formatWithArgumentRanges(self._s[2518]!, self._r[2518]!, [_0])
}
- public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2518]! }
- public var Username_Placeholder: String { return self._s[2519]! }
- public var CallFeedback_WhatWentWrong: String { return self._s[2520]! }
- public var Passport_FieldAddressUploadHelp: String { return self._s[2521]! }
- public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2522]! }
+ public var Bot_GroupStatusDoesNotReadHistory: String { return self._s[2519]! }
+ public var Username_Placeholder: String { return self._s[2520]! }
+ public var CallFeedback_WhatWentWrong: String { return self._s[2521]! }
+ public var Passport_FieldAddressUploadHelp: String { return self._s[2522]! }
+ public var Permissions_NotificationsAllowInSettings_v0: String { return self._s[2523]! }
public func Channel_AdminLog_MessageChangedUnlinkedChannel(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2524]!, self._r[2524]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2525]!, self._r[2525]!, [_1, _2])
}
- public var Passport_PasswordDescription: String { return self._s[2525]! }
- public var Channel_MessagePhotoUpdated: String { return self._s[2526]! }
- public var MediaPicker_TapToUngroupDescription: String { return self._s[2527]! }
- public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2528]! }
- public var AttachmentMenu_PhotoOrVideo: String { return self._s[2529]! }
- public var Conversation_ContextMenuMore: String { return self._s[2530]! }
- public var Privacy_PaymentsClearInfo: String { return self._s[2531]! }
- public var CallSettings_TabIcon: String { return self._s[2532]! }
- public var KeyCommand_Find: String { return self._s[2533]! }
- public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[2534]! }
- public var Message_PinnedGame: String { return self._s[2535]! }
- public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[2536]! }
- public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2538]! }
- public var Login_CallRequestState2: String { return self._s[2540]! }
- public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2542]! }
+ public var Passport_PasswordDescription: String { return self._s[2526]! }
+ public var Channel_MessagePhotoUpdated: String { return self._s[2527]! }
+ public var MediaPicker_TapToUngroupDescription: String { return self._s[2528]! }
+ public var SettingsSearch_Synonyms_Notifications_BadgeCountUnreadMessages: String { return self._s[2529]! }
+ public var AttachmentMenu_PhotoOrVideo: String { return self._s[2530]! }
+ public var Conversation_ContextMenuMore: String { return self._s[2531]! }
+ public var Privacy_PaymentsClearInfo: String { return self._s[2532]! }
+ public var CallSettings_TabIcon: String { return self._s[2533]! }
+ public var KeyCommand_Find: String { return self._s[2534]! }
+ public var Appearance_ThemePreview_ChatList_7_Text: String { return self._s[2535]! }
+ public var Message_PinnedGame: String { return self._s[2536]! }
+ public var VoiceOver_Chat_ForwardedFromYou: String { return self._s[2537]! }
+ public var Notifications_Badge_CountUnreadMessages_InfoOff: String { return self._s[2539]! }
+ public var Login_CallRequestState2: String { return self._s[2541]! }
+ public var CheckoutInfo_ReceiverInfoNamePlaceholder: String { return self._s[2543]! }
public func VoiceOver_Chat_PhotoFrom(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2543]!, self._r[2543]!, [_0])
+ return formatWithArgumentRanges(self._s[2544]!, self._r[2544]!, [_0])
}
public func Checkout_PayPrice(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2545]!, self._r[2545]!, [_0])
+ return formatWithArgumentRanges(self._s[2546]!, self._r[2546]!, [_0])
}
- public var WallpaperPreview_Blurred: String { return self._s[2546]! }
- public var Conversation_InstantPagePreview: String { return self._s[2547]! }
+ public var WallpaperPreview_Blurred: String { return self._s[2547]! }
+ public var Conversation_InstantPagePreview: String { return self._s[2548]! }
public func DialogList_SingleUploadingVideoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2548]!, self._r[2548]!, [_0])
+ return formatWithArgumentRanges(self._s[2549]!, self._r[2549]!, [_0])
}
- public var SecretTimer_VideoDescription: String { return self._s[2551]! }
- public var WallpaperSearch_ColorRed: String { return self._s[2552]! }
- public var GroupPermission_NoPinMessages: String { return self._s[2553]! }
- public var Passport_Language_es: String { return self._s[2554]! }
- public var Permissions_ContactsAllow_v0: String { return self._s[2556]! }
- public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2557]! }
+ public var SecretTimer_VideoDescription: String { return self._s[2552]! }
+ public var WallpaperSearch_ColorRed: String { return self._s[2553]! }
+ public var GroupPermission_NoPinMessages: String { return self._s[2554]! }
+ public var Passport_Language_es: String { return self._s[2555]! }
+ public var Permissions_ContactsAllow_v0: String { return self._s[2557]! }
+ public var Conversation_EditingMessageMediaEditCurrentVideo: String { return self._s[2558]! }
public func PUSH_CHAT_MESSAGE_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2558]!, self._r[2558]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2559]!, self._r[2559]!, [_1, _2])
}
- public var Privacy_Forwards_CustomHelp: String { return self._s[2559]! }
- public var WebPreview_GettingLinkInfo: String { return self._s[2560]! }
- public var Watch_UserInfo_Unmute: String { return self._s[2561]! }
- public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2562]! }
- public var AccessDenied_CameraRestricted: String { return self._s[2564]! }
+ public var Privacy_Forwards_CustomHelp: String { return self._s[2560]! }
+ public var WebPreview_GettingLinkInfo: String { return self._s[2561]! }
+ public var Watch_UserInfo_Unmute: String { return self._s[2562]! }
+ public var GroupInfo_ChannelListNamePlaceholder: String { return self._s[2563]! }
+ public var AccessDenied_CameraRestricted: String { return self._s[2565]! }
public func Conversation_Kilobytes(_ _0: Int) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2565]!, self._r[2565]!, ["\(_0)"])
+ return formatWithArgumentRanges(self._s[2566]!, self._r[2566]!, ["\(_0)"])
}
- public var ChatList_ReadAll: String { return self._s[2567]! }
- public var Settings_CopyUsername: String { return self._s[2568]! }
- public var Contacts_SearchLabel: String { return self._s[2569]! }
- public var Map_OpenInYandexNavigator: String { return self._s[2571]! }
- public var PasscodeSettings_EncryptData: String { return self._s[2572]! }
- public var WallpaperSearch_ColorPrefix: String { return self._s[2573]! }
- public var Notifications_GroupNotificationsPreview: String { return self._s[2574]! }
- public var DialogList_AdNoticeAlert: String { return self._s[2575]! }
- public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2577]! }
- public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2578]! }
- public var Localization_LanguageCustom: String { return self._s[2579]! }
- public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2580]! }
- public var CallFeedback_Title: String { return self._s[2581]! }
- public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[2584]! }
- public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2585]! }
- public var Conversation_InfoGroup: String { return self._s[2586]! }
- public var Compose_NewMessage: String { return self._s[2587]! }
- public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2588]! }
- public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2589]! }
- public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2590]! }
+ public var ChatList_ReadAll: String { return self._s[2568]! }
+ public var Settings_CopyUsername: String { return self._s[2569]! }
+ public var Contacts_SearchLabel: String { return self._s[2570]! }
+ public var Map_OpenInYandexNavigator: String { return self._s[2572]! }
+ public var PasscodeSettings_EncryptData: String { return self._s[2573]! }
+ public var WallpaperSearch_ColorPrefix: String { return self._s[2574]! }
+ public var Notifications_GroupNotificationsPreview: String { return self._s[2575]! }
+ public var DialogList_AdNoticeAlert: String { return self._s[2576]! }
+ public var CheckoutInfo_ShippingInfoAddress1: String { return self._s[2578]! }
+ public var CheckoutInfo_ShippingInfoAddress2: String { return self._s[2579]! }
+ public var Localization_LanguageCustom: String { return self._s[2580]! }
+ public var Passport_Identity_TypeDriversLicenseUploadScan: String { return self._s[2581]! }
+ public var CallFeedback_Title: String { return self._s[2582]! }
+ public var VoiceOver_Chat_RecordPreviewVoiceMessage: String { return self._s[2585]! }
+ public var Passport_Address_OneOfTypePassportRegistration: String { return self._s[2586]! }
+ public var Conversation_InfoGroup: String { return self._s[2587]! }
+ public var Compose_NewMessage: String { return self._s[2588]! }
+ public var FastTwoStepSetup_HintPlaceholder: String { return self._s[2589]! }
+ public var ChatSettings_AutoDownloadVideoMessages: String { return self._s[2590]! }
+ public var Channel_DiscussionGroup_UnlinkChannel: String { return self._s[2591]! }
public func Passport_Scans_ScanIndex(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2591]!, self._r[2591]!, [_0])
+ return formatWithArgumentRanges(self._s[2592]!, self._r[2592]!, [_0])
}
- public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2592]! }
- public var Login_CancelSignUpConfirmation: String { return self._s[2593]! }
- public var ChangePhoneNumberCode_Help: String { return self._s[2594]! }
- public var PrivacySettings_DeleteAccountHelp: String { return self._s[2595]! }
- public var Channel_BlackList_Title: String { return self._s[2596]! }
- public var UserInfo_PhoneCall: String { return self._s[2597]! }
- public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2599]! }
- public var State_connecting: String { return self._s[2600]! }
- public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[2601]! }
+ public var Channel_AdminLog_CanDeleteMessages: String { return self._s[2593]! }
+ public var Login_CancelSignUpConfirmation: String { return self._s[2594]! }
+ public var ChangePhoneNumberCode_Help: String { return self._s[2595]! }
+ public var PrivacySettings_DeleteAccountHelp: String { return self._s[2596]! }
+ public var Channel_BlackList_Title: String { return self._s[2597]! }
+ public var UserInfo_PhoneCall: String { return self._s[2598]! }
+ public var Passport_Address_OneOfTypeBankStatement: String { return self._s[2600]! }
+ public var State_connecting: String { return self._s[2601]! }
+ public var Appearance_ThemePreview_ChatList_6_Text: String { return self._s[2602]! }
public func DialogList_SingleRecordingAudioSuffix(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2602]!, self._r[2602]!, [_0])
+ return formatWithArgumentRanges(self._s[2603]!, self._r[2603]!, [_0])
}
- public var Notifications_GroupNotifications: String { return self._s[2603]! }
- public var Passport_Identity_EditPassport: String { return self._s[2604]! }
- public var EnterPasscode_RepeatNewPasscode: String { return self._s[2606]! }
- public var Localization_EnglishLanguageName: String { return self._s[2607]! }
- public var Share_AuthDescription: String { return self._s[2608]! }
- public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2609]! }
- public var Passport_Identity_Surname: String { return self._s[2610]! }
- public var Compose_TokenListPlaceholder: String { return self._s[2611]! }
- public var Passport_Identity_OneOfTypePassport: String { return self._s[2612]! }
- public var Settings_AboutEmpty: String { return self._s[2613]! }
- public var Conversation_Unmute: String { return self._s[2614]! }
- public var CreateGroup_ChannelsTooMuch: String { return self._s[2616]! }
+ public var Notifications_GroupNotifications: String { return self._s[2604]! }
+ public var Passport_Identity_EditPassport: String { return self._s[2605]! }
+ public var EnterPasscode_RepeatNewPasscode: String { return self._s[2607]! }
+ public var Localization_EnglishLanguageName: String { return self._s[2608]! }
+ public var Share_AuthDescription: String { return self._s[2609]! }
+ public var SettingsSearch_Synonyms_Notifications_ChannelNotificationsAlert: String { return self._s[2610]! }
+ public var Passport_Identity_Surname: String { return self._s[2611]! }
+ public var Compose_TokenListPlaceholder: String { return self._s[2612]! }
+ public var Passport_Identity_OneOfTypePassport: String { return self._s[2613]! }
+ public var Settings_AboutEmpty: String { return self._s[2614]! }
+ public var Conversation_Unmute: String { return self._s[2615]! }
+ public var CreateGroup_ChannelsTooMuch: String { return self._s[2617]! }
public func PUSH_CONTACT_JOINED(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2617]!, self._r[2617]!, [_1])
+ return formatWithArgumentRanges(self._s[2618]!, self._r[2618]!, [_1])
}
- public var Login_CodeSentCall: String { return self._s[2618]! }
- public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2620]! }
- public var ChatSettings_Appearance: String { return self._s[2621]! }
- public var Appearance_PickAccentColor: String { return self._s[2622]! }
+ public var Login_CodeSentCall: String { return self._s[2619]! }
+ public var ContactInfo_PhoneLabelHomeFax: String { return self._s[2621]! }
+ public var ChatSettings_Appearance: String { return self._s[2622]! }
+ public var Appearance_PickAccentColor: String { return self._s[2623]! }
public func PUSH_CHAT_MESSAGE_NOTEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2623]!, self._r[2623]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2624]!, self._r[2624]!, [_1, _2])
}
public func PUSH_MESSAGE_GEO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2624]!, self._r[2624]!, [_1])
+ return formatWithArgumentRanges(self._s[2625]!, self._r[2625]!, [_1])
}
- public var Notification_CallMissed: String { return self._s[2625]! }
- public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2626]! }
- public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2627]! }
- public var ChatAdmins_AdminLabel: String { return self._s[2629]! }
- public var KeyCommand_JumpToNextChat: String { return self._s[2630]! }
- public var Conversation_StopPollConfirmationTitle: String { return self._s[2632]! }
- public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2633]! }
- public var Month_GenJune: String { return self._s[2634]! }
- public var Watch_Location_Current: String { return self._s[2635]! }
- public var Conversation_TitleMute: String { return self._s[2636]! }
+ public var Notification_CallMissed: String { return self._s[2626]! }
+ public var SettingsSearch_Synonyms_Appearance_ChatBackground_Custom: String { return self._s[2627]! }
+ public var Channel_AdminLogFilter_EventsInfo: String { return self._s[2628]! }
+ public var ChatAdmins_AdminLabel: String { return self._s[2630]! }
+ public var KeyCommand_JumpToNextChat: String { return self._s[2631]! }
+ public var Conversation_StopPollConfirmationTitle: String { return self._s[2633]! }
+ public var ChangePhoneNumberCode_CodePlaceholder: String { return self._s[2634]! }
+ public var Month_GenJune: String { return self._s[2635]! }
+ public var Watch_Location_Current: String { return self._s[2636]! }
+ public var Conversation_TitleMute: String { return self._s[2637]! }
public func PUSH_CHANNEL_MESSAGE_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2637]!, self._r[2637]!, [_1])
+ return formatWithArgumentRanges(self._s[2638]!, self._r[2638]!, [_1])
}
- public var GroupInfo_DeleteAndExit: String { return self._s[2638]! }
+ public var GroupInfo_DeleteAndExit: String { return self._s[2639]! }
public func Conversation_Moderate_DeleteAllMessages(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2639]!, self._r[2639]!, [_0])
+ return formatWithArgumentRanges(self._s[2640]!, self._r[2640]!, [_0])
}
- public var Call_ReportPlaceholder: String { return self._s[2640]! }
- public var Chat_SlowmodeSendError: String { return self._s[2641]! }
- public var MaskStickerSettings_Info: String { return self._s[2642]! }
+ public var Call_ReportPlaceholder: String { return self._s[2641]! }
+ public var Chat_SlowmodeSendError: String { return self._s[2642]! }
+ public var MaskStickerSettings_Info: String { return self._s[2643]! }
public func GroupInfo_AddParticipantConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2643]!, self._r[2643]!, [_0])
+ return formatWithArgumentRanges(self._s[2644]!, self._r[2644]!, [_0])
}
- public var Checkout_NewCard_PostcodeTitle: String { return self._s[2644]! }
- public var Passport_Address_RegionPlaceholder: String { return self._s[2646]! }
- public var Contacts_ShareTelegram: String { return self._s[2647]! }
- public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2648]! }
- public var Channel_ErrorAccessDenied: String { return self._s[2649]! }
- public var UserInfo_ScamBotWarning: String { return self._s[2651]! }
- public var Stickers_GroupChooseStickerPack: String { return self._s[2652]! }
- public var Call_ConnectionErrorTitle: String { return self._s[2653]! }
- public var UserInfo_NotificationsEnable: String { return self._s[2654]! }
- public var ArchivedChats_IntroText1: String { return self._s[2655]! }
- public var Tour_Text4: String { return self._s[2658]! }
- public var WallpaperSearch_Recent: String { return self._s[2659]! }
- public var GroupInfo_ScamGroupWarning: String { return self._s[2660]! }
- public var Profile_MessageLifetime2s: String { return self._s[2662]! }
- public var Appearance_ThemePreview_ChatList_5_Text: String { return self._s[2663]! }
- public var Notification_MessageLifetime2s: String { return self._s[2664]! }
+ public var Checkout_NewCard_PostcodeTitle: String { return self._s[2645]! }
+ public var Passport_Address_RegionPlaceholder: String { return self._s[2647]! }
+ public var Contacts_ShareTelegram: String { return self._s[2648]! }
+ public var EnterPasscode_EnterNewPasscodeNew: String { return self._s[2649]! }
+ public var Channel_ErrorAccessDenied: String { return self._s[2650]! }
+ public var UserInfo_ScamBotWarning: String { return self._s[2652]! }
+ public var Stickers_GroupChooseStickerPack: String { return self._s[2653]! }
+ public var Call_ConnectionErrorTitle: String { return self._s[2654]! }
+ public var UserInfo_NotificationsEnable: String { return self._s[2655]! }
+ public var ArchivedChats_IntroText1: String { return self._s[2656]! }
+ public var Tour_Text4: String { return self._s[2659]! }
+ public var WallpaperSearch_Recent: String { return self._s[2660]! }
+ public var GroupInfo_ScamGroupWarning: String { return self._s[2661]! }
+ public var Profile_MessageLifetime2s: String { return self._s[2663]! }
+ public var Appearance_ThemePreview_ChatList_5_Text: String { return self._s[2664]! }
+ public var Notification_MessageLifetime2s: String { return self._s[2665]! }
public func Time_PreciseDate_m10(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2665]!, self._r[2665]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[2666]!, self._r[2666]!, [_1, _2, _3])
}
- public var Cache_ClearCache: String { return self._s[2666]! }
- public var AutoNightTheme_UpdateLocation: String { return self._s[2667]! }
- public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2668]! }
+ public var Cache_ClearCache: String { return self._s[2667]! }
+ public var AutoNightTheme_UpdateLocation: String { return self._s[2668]! }
+ public var Permissions_NotificationsUnreachableText_v0: String { return self._s[2669]! }
public func Channel_AdminLog_MessageChangedGroupUsername(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2672]!, self._r[2672]!, [_0])
+ return formatWithArgumentRanges(self._s[2673]!, self._r[2673]!, [_0])
}
public func Conversation_ShareMyPhoneNumber_StatusSuccess(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2674]!, self._r[2674]!, [_0])
+ return formatWithArgumentRanges(self._s[2675]!, self._r[2675]!, [_0])
}
- public var LocalGroup_Text: String { return self._s[2675]! }
- public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2676]! }
- public var SocksProxySetup_TypeSocks: String { return self._s[2677]! }
- public var ChatList_UnarchiveAction: String { return self._s[2678]! }
- public var AutoNightTheme_Title: String { return self._s[2679]! }
- public var InstantPage_FeedbackButton: String { return self._s[2680]! }
- public var Passport_FieldAddress: String { return self._s[2681]! }
+ public var LocalGroup_Text: String { return self._s[2676]! }
+ public var Channel_AdminLog_EmptyFilterTitle: String { return self._s[2677]! }
+ public var SocksProxySetup_TypeSocks: String { return self._s[2678]! }
+ public var ChatList_UnarchiveAction: String { return self._s[2679]! }
+ public var AutoNightTheme_Title: String { return self._s[2680]! }
+ public var InstantPage_FeedbackButton: String { return self._s[2681]! }
+ public var Passport_FieldAddress: String { return self._s[2682]! }
public func Channel_AdminLog_SetSlowmode(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2682]!, self._r[2682]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2683]!, self._r[2683]!, [_1, _2])
}
- public var Month_ShortMarch: String { return self._s[2683]! }
+ public var Month_ShortMarch: String { return self._s[2684]! }
public func PUSH_MESSAGE_INVOICE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2684]!, self._r[2684]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2685]!, self._r[2685]!, [_1, _2])
}
- public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2685]! }
- public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2686]! }
- public var Passport_FloodError: String { return self._s[2687]! }
- public var SecretGif_Title: String { return self._s[2688]! }
- public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2689]! }
- public var Passport_Language_th: String { return self._s[2691]! }
- public var Passport_Address_Address: String { return self._s[2692]! }
- public var Login_InvalidLastNameError: String { return self._s[2693]! }
- public var Notifications_InAppNotificationsPreview: String { return self._s[2694]! }
- public var Notifications_PermissionsUnreachableTitle: String { return self._s[2695]! }
- public var SettingsSearch_FAQ: String { return self._s[2696]! }
- public var ShareMenu_Send: String { return self._s[2697]! }
- public var WallpaperSearch_ColorYellow: String { return self._s[2699]! }
- public var Month_GenNovember: String { return self._s[2701]! }
- public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2703]! }
+ public var SocksProxySetup_UsernamePlaceholder: String { return self._s[2686]! }
+ public var Conversation_ShareInlineBotLocationConfirmation: String { return self._s[2687]! }
+ public var Passport_FloodError: String { return self._s[2688]! }
+ public var SecretGif_Title: String { return self._s[2689]! }
+ public var NotificationSettings_ShowNotificationsAllAccountsInfoOn: String { return self._s[2690]! }
+ public var Passport_Language_th: String { return self._s[2692]! }
+ public var Passport_Address_Address: String { return self._s[2693]! }
+ public var Login_InvalidLastNameError: String { return self._s[2694]! }
+ public var Notifications_InAppNotificationsPreview: String { return self._s[2695]! }
+ public var Notifications_PermissionsUnreachableTitle: String { return self._s[2696]! }
+ public var SettingsSearch_FAQ: String { return self._s[2697]! }
+ public var ShareMenu_Send: String { return self._s[2698]! }
+ public var WallpaperSearch_ColorYellow: String { return self._s[2700]! }
+ public var Month_GenNovember: String { return self._s[2702]! }
+ public var SettingsSearch_Synonyms_Appearance_LargeEmoji: String { return self._s[2704]! }
public func Conversation_ShareMyPhoneNumberConfirmation(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2704]!, self._r[2704]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2705]!, self._r[2705]!, [_1, _2])
}
- public var Checkout_Email: String { return self._s[2705]! }
- public var NotificationsSound_Tritone: String { return self._s[2706]! }
- public var StickerPacksSettings_ManagingHelp: String { return self._s[2708]! }
+ public var Checkout_Email: String { return self._s[2706]! }
+ public var NotificationsSound_Tritone: String { return self._s[2707]! }
+ public var StickerPacksSettings_ManagingHelp: String { return self._s[2709]! }
public func PUSH_PINNED_ROUND(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2711]!, self._r[2711]!, [_1])
+ return formatWithArgumentRanges(self._s[2712]!, self._r[2712]!, [_1])
}
- public var ChangePhoneNumberNumber_Help: String { return self._s[2712]! }
+ public var ChangePhoneNumberNumber_Help: String { return self._s[2713]! }
public func Checkout_LiabilityAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2713]!, self._r[2713]!, [_1, _1, _1, _2])
+ return formatWithArgumentRanges(self._s[2714]!, self._r[2714]!, [_1, _1, _1, _2])
}
- public var ChatList_UndoArchiveTitle: String { return self._s[2714]! }
- public var Notification_Exceptions_Add: String { return self._s[2715]! }
- public var DialogList_You: String { return self._s[2716]! }
- public var MediaPicker_Send: String { return self._s[2719]! }
- public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2720]! }
- public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[2721]! }
- public var Call_AudioRouteSpeaker: String { return self._s[2722]! }
- public var Watch_UserInfo_Title: String { return self._s[2723]! }
- public var VoiceOver_Chat_PollFinalResults: String { return self._s[2724]! }
- public var Appearance_AccentColor: String { return self._s[2725]! }
+ public var ChatList_UndoArchiveTitle: String { return self._s[2715]! }
+ public var Notification_Exceptions_Add: String { return self._s[2716]! }
+ public var DialogList_You: String { return self._s[2717]! }
+ public var MediaPicker_Send: String { return self._s[2720]! }
+ public var SettingsSearch_Synonyms_Stickers_Title: String { return self._s[2721]! }
+ public var Appearance_ThemePreview_ChatList_4_Text: String { return self._s[2722]! }
+ public var Call_AudioRouteSpeaker: String { return self._s[2723]! }
+ public var Watch_UserInfo_Title: String { return self._s[2724]! }
+ public var VoiceOver_Chat_PollFinalResults: String { return self._s[2725]! }
+ public var Appearance_AccentColor: String { return self._s[2726]! }
public func Login_EmailPhoneSubject(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2726]!, self._r[2726]!, [_0])
+ return formatWithArgumentRanges(self._s[2727]!, self._r[2727]!, [_0])
}
- public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2727]! }
+ public var Permissions_ContactsAllowInSettings_v0: String { return self._s[2728]! }
public func PUSH_CHANNEL_MESSAGE_GAME(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2728]!, self._r[2728]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2729]!, self._r[2729]!, [_1, _2])
}
- public var Conversation_ClousStorageInfo_Description2: String { return self._s[2729]! }
- public var WebSearch_RecentClearConfirmation: String { return self._s[2730]! }
- public var Notification_CallOutgoing: String { return self._s[2731]! }
- public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2732]! }
- public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2733]! }
- public var Call_RecordingDisabledMessage: String { return self._s[2734]! }
- public var Message_Game: String { return self._s[2735]! }
- public var Conversation_PressVolumeButtonForSound: String { return self._s[2736]! }
- public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2737]! }
- public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2738]! }
- public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2739]! }
- public var Date_DialogDateFormat: String { return self._s[2740]! }
- public var WallpaperColors_SetCustomColor: String { return self._s[2741]! }
- public var Notifications_InAppNotifications: String { return self._s[2742]! }
+ public var Conversation_ClousStorageInfo_Description2: String { return self._s[2730]! }
+ public var WebSearch_RecentClearConfirmation: String { return self._s[2731]! }
+ public var Notification_CallOutgoing: String { return self._s[2732]! }
+ public var PrivacySettings_PasscodeAndFaceId: String { return self._s[2733]! }
+ public var Channel_DiscussionGroup_MakeHistoryPublic: String { return self._s[2734]! }
+ public var Call_RecordingDisabledMessage: String { return self._s[2735]! }
+ public var Message_Game: String { return self._s[2736]! }
+ public var Conversation_PressVolumeButtonForSound: String { return self._s[2737]! }
+ public var PrivacyLastSeenSettings_CustomHelp: String { return self._s[2738]! }
+ public var Channel_DiscussionGroup_PrivateGroup: String { return self._s[2739]! }
+ public var Channel_EditAdmin_PermissionAddAdmins: String { return self._s[2740]! }
+ public var Date_DialogDateFormat: String { return self._s[2741]! }
+ public var WallpaperColors_SetCustomColor: String { return self._s[2742]! }
+ public var Notifications_InAppNotifications: String { return self._s[2743]! }
public func Channel_Management_RemovedBy(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2743]!, self._r[2743]!, [_0])
+ return formatWithArgumentRanges(self._s[2744]!, self._r[2744]!, [_0])
}
public func Settings_ApplyProxyAlert(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2744]!, self._r[2744]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2745]!, self._r[2745]!, [_1, _2])
}
- public var NewContact_Title: String { return self._s[2745]! }
+ public var NewContact_Title: String { return self._s[2746]! }
public func AutoDownloadSettings_UpToForAll(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2746]!, self._r[2746]!, [_0])
+ return formatWithArgumentRanges(self._s[2747]!, self._r[2747]!, [_0])
}
- public var Conversation_ViewContactDetails: String { return self._s[2747]! }
+ public var Conversation_ViewContactDetails: String { return self._s[2748]! }
public func PUSH_CHANNEL_MESSAGE_CONTACT(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2749]!, self._r[2749]!, [_1])
+ return formatWithArgumentRanges(self._s[2750]!, self._r[2750]!, [_1])
}
- public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2750]! }
- public var Passport_Identity_ExpiryDateNone: String { return self._s[2751]! }
- public var PrivacySettings_Title: String { return self._s[2752]! }
- public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2755]! }
- public var GroupRemoved_UsersSectionTitle: String { return self._s[2756]! }
- public var VoiceOver_Chat_ContactEmail: String { return self._s[2757]! }
- public var Contacts_PhoneNumber: String { return self._s[2758]! }
- public var Map_ShowPlaces: String { return self._s[2760]! }
- public var ChatAdmins_Title: String { return self._s[2761]! }
- public var InstantPage_Reference: String { return self._s[2763]! }
- public var ReportGroupLocation_Text: String { return self._s[2764]! }
+ public var Checkout_NewCard_CardholderNameTitle: String { return self._s[2751]! }
+ public var Passport_Identity_ExpiryDateNone: String { return self._s[2752]! }
+ public var PrivacySettings_Title: String { return self._s[2753]! }
+ public var Conversation_SilentBroadcastTooltipOff: String { return self._s[2756]! }
+ public var GroupRemoved_UsersSectionTitle: String { return self._s[2757]! }
+ public var VoiceOver_Chat_ContactEmail: String { return self._s[2758]! }
+ public var Contacts_PhoneNumber: String { return self._s[2759]! }
+ public var Map_ShowPlaces: String { return self._s[2761]! }
+ public var ChatAdmins_Title: String { return self._s[2762]! }
+ public var InstantPage_Reference: String { return self._s[2764]! }
+ public var ReportGroupLocation_Text: String { return self._s[2765]! }
public func PUSH_CHAT_MESSAGE_FWD(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2765]!, self._r[2765]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2766]!, self._r[2766]!, [_1, _2])
}
- public var Camera_FlashOff: String { return self._s[2766]! }
- public var Watch_UserInfo_Block: String { return self._s[2767]! }
- public var ChatSettings_Stickers: String { return self._s[2768]! }
- public var ChatSettings_DownloadInBackground: String { return self._s[2769]! }
- public var Appearance_ThemeCarouselTintedNight: String { return self._s[2770]! }
+ public var Camera_FlashOff: String { return self._s[2767]! }
+ public var Watch_UserInfo_Block: String { return self._s[2768]! }
+ public var ChatSettings_Stickers: String { return self._s[2769]! }
+ public var ChatSettings_DownloadInBackground: String { return self._s[2770]! }
+ public var Appearance_ThemeCarouselTintedNight: String { return self._s[2771]! }
public func UserInfo_BlockConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2771]!, self._r[2771]!, [_0])
+ return formatWithArgumentRanges(self._s[2772]!, self._r[2772]!, [_0])
}
- public var Settings_ViewPhoto: String { return self._s[2772]! }
- public var Login_CheckOtherSessionMessages: String { return self._s[2773]! }
- public var AutoDownloadSettings_Cellular: String { return self._s[2774]! }
- public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2775]! }
- public var VoiceOver_MessageContextShare: String { return self._s[2776]! }
+ public var Settings_ViewPhoto: String { return self._s[2773]! }
+ public var Login_CheckOtherSessionMessages: String { return self._s[2774]! }
+ public var AutoDownloadSettings_Cellular: String { return self._s[2775]! }
+ public var SettingsSearch_Synonyms_Notifications_GroupNotificationsExceptions: String { return self._s[2776]! }
+ public var VoiceOver_MessageContextShare: String { return self._s[2777]! }
public func Target_InviteToGroupConfirmation(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2778]!, self._r[2778]!, [_0])
+ return formatWithArgumentRanges(self._s[2779]!, self._r[2779]!, [_0])
}
- public var Privacy_DeleteDrafts: String { return self._s[2779]! }
- public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2780]! }
+ public var Privacy_DeleteDrafts: String { return self._s[2780]! }
+ public var Wallpaper_SetCustomBackgroundInfo: String { return self._s[2781]! }
public func LastSeen_AtDate(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2781]!, self._r[2781]!, [_0])
+ return formatWithArgumentRanges(self._s[2782]!, self._r[2782]!, [_0])
}
- public var DialogList_SavedMessagesHelp: String { return self._s[2782]! }
- public var DialogList_SavedMessages: String { return self._s[2783]! }
- public var GroupInfo_UpgradeButton: String { return self._s[2784]! }
- public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[2786]! }
- public var DialogList_Pin: String { return self._s[2787]! }
+ public var DialogList_SavedMessagesHelp: String { return self._s[2783]! }
+ public var DialogList_SavedMessages: String { return self._s[2784]! }
+ public var GroupInfo_UpgradeButton: String { return self._s[2785]! }
+ public var Appearance_ThemePreview_ChatList_3_Text: String { return self._s[2787]! }
+ public var DialogList_Pin: String { return self._s[2788]! }
public func ForwardedAuthors2(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2788]!, self._r[2788]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[2789]!, self._r[2789]!, [_0, _1])
}
public func Login_PhoneGenericEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2789]!, self._r[2789]!, [_0])
+ return formatWithArgumentRanges(self._s[2790]!, self._r[2790]!, [_0])
}
- public var Notification_Exceptions_AlwaysOn: String { return self._s[2790]! }
- public var UserInfo_NotificationsDisable: String { return self._s[2791]! }
- public var Paint_Outlined: String { return self._s[2792]! }
- public var Activity_PlayingGame: String { return self._s[2793]! }
- public var SearchImages_NoImagesFound: String { return self._s[2794]! }
- public var SocksProxySetup_ProxyType: String { return self._s[2795]! }
- public var AppleWatch_ReplyPresetsHelp: String { return self._s[2797]! }
- public var Conversation_ContextMenuCancelSending: String { return self._s[2798]! }
- public var Settings_AppLanguage: String { return self._s[2799]! }
- public var TwoStepAuth_ResetAccountHelp: String { return self._s[2800]! }
- public var Common_ChoosePhoto: String { return self._s[2801]! }
- public var CallFeedback_ReasonEcho: String { return self._s[2802]! }
+ public var Notification_Exceptions_AlwaysOn: String { return self._s[2791]! }
+ public var UserInfo_NotificationsDisable: String { return self._s[2792]! }
+ public var Paint_Outlined: String { return self._s[2793]! }
+ public var Activity_PlayingGame: String { return self._s[2794]! }
+ public var SearchImages_NoImagesFound: String { return self._s[2795]! }
+ public var SocksProxySetup_ProxyType: String { return self._s[2796]! }
+ public var AppleWatch_ReplyPresetsHelp: String { return self._s[2798]! }
+ public var Conversation_ContextMenuCancelSending: String { return self._s[2799]! }
+ public var Settings_AppLanguage: String { return self._s[2800]! }
+ public var TwoStepAuth_ResetAccountHelp: String { return self._s[2801]! }
+ public var Common_ChoosePhoto: String { return self._s[2802]! }
+ public var CallFeedback_ReasonEcho: String { return self._s[2803]! }
public func PUSH_PINNED_AUDIO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2803]!, self._r[2803]!, [_1])
+ return formatWithArgumentRanges(self._s[2804]!, self._r[2804]!, [_1])
}
- public var Privacy_Calls_AlwaysAllow: String { return self._s[2804]! }
- public var Activity_UploadingVideo: String { return self._s[2805]! }
- public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2806]! }
- public var NetworkUsageSettings_Wifi: String { return self._s[2807]! }
- public var VoiceOver_Editing_ClearText: String { return self._s[2808]! }
- public var Channel_BanUser_PermissionReadMessages: String { return self._s[2809]! }
- public var Checkout_PayWithTouchId: String { return self._s[2810]! }
- public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2811]! }
+ public var Privacy_Calls_AlwaysAllow: String { return self._s[2805]! }
+ public var Activity_UploadingVideo: String { return self._s[2806]! }
+ public var ChannelInfo_DeleteChannelConfirmation: String { return self._s[2807]! }
+ public var NetworkUsageSettings_Wifi: String { return self._s[2808]! }
+ public var VoiceOver_Editing_ClearText: String { return self._s[2809]! }
+ public var Channel_BanUser_PermissionReadMessages: String { return self._s[2810]! }
+ public var Checkout_PayWithTouchId: String { return self._s[2811]! }
+ public var Wallpaper_ResetWallpapersConfirmation: String { return self._s[2812]! }
public func PUSH_LOCKED_MESSAGE(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2813]!, self._r[2813]!, [_1])
+ return formatWithArgumentRanges(self._s[2814]!, self._r[2814]!, [_1])
}
- public var Notifications_ExceptionsNone: String { return self._s[2814]! }
+ public var Notifications_ExceptionsNone: String { return self._s[2815]! }
public func Message_ForwardedMessageShort(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2815]!, self._r[2815]!, [_0])
+ return formatWithArgumentRanges(self._s[2816]!, self._r[2816]!, [_0])
}
public func PUSH_PINNED_GEO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2816]!, self._r[2816]!, [_1])
+ return formatWithArgumentRanges(self._s[2817]!, self._r[2817]!, [_1])
}
- public var AuthSessions_IncompleteAttempts: String { return self._s[2818]! }
- public var Passport_Address_Region: String { return self._s[2821]! }
- public var ChatList_DeleteChat: String { return self._s[2822]! }
- public var LogoutOptions_ClearCacheTitle: String { return self._s[2823]! }
- public var PhotoEditor_TiltShift: String { return self._s[2824]! }
- public var Settings_FAQ_URL: String { return self._s[2825]! }
- public var Passport_Language_sl: String { return self._s[2826]! }
- public var Settings_PrivacySettings: String { return self._s[2828]! }
- public var SharedMedia_TitleLink: String { return self._s[2829]! }
- public var Passport_Identity_TypePassportUploadScan: String { return self._s[2830]! }
- public var Settings_SetProfilePhoto: String { return self._s[2831]! }
- public var Channel_About_Help: String { return self._s[2832]! }
- public var Contacts_PermissionsEnable: String { return self._s[2833]! }
- public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2834]! }
- public var AttachmentMenu_SendAsFiles: String { return self._s[2835]! }
- public var CallFeedback_ReasonInterruption: String { return self._s[2837]! }
- public var Passport_Address_AddTemporaryRegistration: String { return self._s[2838]! }
- public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2839]! }
- public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2840]! }
- public var PrivacySettings_DeleteAccountTitle: String { return self._s[2841]! }
- public var AccessDenied_VideoMessageCamera: String { return self._s[2843]! }
- public var Map_OpenInYandexMaps: String { return self._s[2845]! }
- public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2846]! }
- public var VoiceOver_MessageContextReply: String { return self._s[2847]! }
- public var PhotoEditor_SaturationTool: String { return self._s[2848]! }
+ public var AuthSessions_IncompleteAttempts: String { return self._s[2819]! }
+ public var Passport_Address_Region: String { return self._s[2822]! }
+ public var ChatList_DeleteChat: String { return self._s[2823]! }
+ public var LogoutOptions_ClearCacheTitle: String { return self._s[2824]! }
+ public var PhotoEditor_TiltShift: String { return self._s[2825]! }
+ public var Settings_FAQ_URL: String { return self._s[2826]! }
+ public var Passport_Language_sl: String { return self._s[2827]! }
+ public var Settings_PrivacySettings: String { return self._s[2829]! }
+ public var SharedMedia_TitleLink: String { return self._s[2830]! }
+ public var Passport_Identity_TypePassportUploadScan: String { return self._s[2831]! }
+ public var Settings_SetProfilePhoto: String { return self._s[2832]! }
+ public var Channel_About_Help: String { return self._s[2833]! }
+ public var Contacts_PermissionsEnable: String { return self._s[2834]! }
+ public var SettingsSearch_Synonyms_Notifications_GroupNotificationsAlert: String { return self._s[2835]! }
+ public var AttachmentMenu_SendAsFiles: String { return self._s[2836]! }
+ public var CallFeedback_ReasonInterruption: String { return self._s[2838]! }
+ public var Passport_Address_AddTemporaryRegistration: String { return self._s[2839]! }
+ public var AutoDownloadSettings_AutodownloadVideos: String { return self._s[2840]! }
+ public var ChatSettings_AutoDownloadSettings_Delimeter: String { return self._s[2841]! }
+ public var PrivacySettings_DeleteAccountTitle: String { return self._s[2842]! }
+ public var AccessDenied_VideoMessageCamera: String { return self._s[2844]! }
+ public var Map_OpenInYandexMaps: String { return self._s[2846]! }
+ public var CreateGroup_ErrorLocatedGroupsTooMuch: String { return self._s[2847]! }
+ public var VoiceOver_MessageContextReply: String { return self._s[2848]! }
+ public var PhotoEditor_SaturationTool: String { return self._s[2849]! }
public func PUSH_MESSAGE_STICKER(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2849]!, self._r[2849]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2850]!, self._r[2850]!, [_1, _2])
}
- public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2850]! }
- public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2851]! }
- public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2852]! }
- public var Appearance_TextSize: String { return self._s[2853]! }
+ public var PrivacyPhoneNumberSettings_CustomHelp: String { return self._s[2851]! }
+ public var Notification_Exceptions_NewException_NotificationHeader: String { return self._s[2852]! }
+ public var Group_OwnershipTransfer_ErrorLocatedGroupsTooMuch: String { return self._s[2853]! }
+ public var Appearance_TextSize: String { return self._s[2854]! }
public func LOCAL_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2854]!, self._r[2854]!, [_1, "\(_2)"])
+ return formatWithArgumentRanges(self._s[2855]!, self._r[2855]!, [_1, "\(_2)"])
}
- public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2855]! }
- public var Channel_Username_InvalidTooShort: String { return self._s[2857]! }
+ public var Appearance_ThemePreview_ChatList_2_Text: String { return self._s[2856]! }
+ public var Channel_Username_InvalidTooShort: String { return self._s[2858]! }
public func Group_OwnershipTransfer_DescriptionInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2858]!, self._r[2858]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2859]!, self._r[2859]!, [_1, _2])
}
public func PUSH_CHAT_MESSAGE_GAME(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2859]!, self._r[2859]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[2860]!, self._r[2860]!, [_1, _2, _3])
}
- public var GroupInfo_PublicLinkAdd: String { return self._s[2860]! }
- public var Passport_PassportInformation: String { return self._s[2863]! }
- public var WatchRemote_AlertTitle: String { return self._s[2864]! }
- public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2865]! }
- public var ConvertToSupergroup_HelpText: String { return self._s[2867]! }
+ public var GroupInfo_PublicLinkAdd: String { return self._s[2861]! }
+ public var Passport_PassportInformation: String { return self._s[2864]! }
+ public var WatchRemote_AlertTitle: String { return self._s[2865]! }
+ public var Privacy_GroupsAndChannels_NeverAllow: String { return self._s[2866]! }
+ public var ConvertToSupergroup_HelpText: String { return self._s[2868]! }
public func Time_MonthOfYear_m7(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2868]!, self._r[2868]!, [_0])
+ return formatWithArgumentRanges(self._s[2869]!, self._r[2869]!, [_0])
}
public func PUSH_PHONE_CALL_REQUEST(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2869]!, self._r[2869]!, [_1])
+ return formatWithArgumentRanges(self._s[2870]!, self._r[2870]!, [_1])
}
- public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2870]! }
- public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2872]! }
- public var AccessDenied_CameraDisabled: String { return self._s[2873]! }
+ public var Privacy_GroupsAndChannels_CustomHelp: String { return self._s[2871]! }
+ public var TwoStepAuth_RecoveryCodeInvalid: String { return self._s[2873]! }
+ public var AccessDenied_CameraDisabled: String { return self._s[2874]! }
public func Channel_Username_UsernameIsAvailable(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2874]!, self._r[2874]!, [_0])
+ return formatWithArgumentRanges(self._s[2875]!, self._r[2875]!, [_0])
}
- public var PhotoEditor_ContrastTool: String { return self._s[2877]! }
+ public var PhotoEditor_ContrastTool: String { return self._s[2878]! }
public func PUSH_PINNED_DOC(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2878]!, self._r[2878]!, [_1])
+ return formatWithArgumentRanges(self._s[2879]!, self._r[2879]!, [_1])
}
- public var DialogList_Draft: String { return self._s[2879]! }
- public var Privacy_TopPeersDelete: String { return self._s[2881]! }
- public var LoginPassword_PasswordPlaceholder: String { return self._s[2882]! }
- public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2883]! }
- public var WebSearch_RecentSectionClear: String { return self._s[2884]! }
- public var Watch_ChatList_NoConversationsTitle: String { return self._s[2886]! }
- public var Common_Done: String { return self._s[2888]! }
- public var AuthSessions_EmptyText: String { return self._s[2889]! }
- public var Conversation_ShareBotContactConfirmation: String { return self._s[2890]! }
- public var Tour_Title5: String { return self._s[2891]! }
+ public var DialogList_Draft: String { return self._s[2880]! }
+ public var Privacy_TopPeersDelete: String { return self._s[2882]! }
+ public var LoginPassword_PasswordPlaceholder: String { return self._s[2883]! }
+ public var Passport_Identity_TypeIdentityCardUploadScan: String { return self._s[2884]! }
+ public var WebSearch_RecentSectionClear: String { return self._s[2885]! }
+ public var Watch_ChatList_NoConversationsTitle: String { return self._s[2887]! }
+ public var Common_Done: String { return self._s[2889]! }
+ public var AuthSessions_EmptyText: String { return self._s[2890]! }
+ public var Conversation_ShareBotContactConfirmation: String { return self._s[2891]! }
+ public var Tour_Title5: String { return self._s[2892]! }
public func Map_DirectionsDriveEta(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2892]!, self._r[2892]!, [_0])
+ return formatWithArgumentRanges(self._s[2893]!, self._r[2893]!, [_0])
}
- public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2893]! }
- public var Conversation_LinkDialogSave: String { return self._s[2894]! }
- public var GroupInfo_ActionRestrict: String { return self._s[2895]! }
- public var Checkout_Title: String { return self._s[2896]! }
- public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2898]! }
- public var Channel_AdminLog_CanChangeInfo: String { return self._s[2900]! }
- public var Notification_RenamedGroup: String { return self._s[2901]! }
- public var PeopleNearby_Groups: String { return self._s[2902]! }
- public var Checkout_PayWithFaceId: String { return self._s[2903]! }
- public var Channel_BanList_BlockedTitle: String { return self._s[2904]! }
- public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2906]! }
- public var Checkout_WebConfirmation_Title: String { return self._s[2907]! }
- public var Notifications_MessageNotificationsAlert: String { return self._s[2908]! }
+ public var ApplyLanguage_UnsufficientDataTitle: String { return self._s[2894]! }
+ public var Conversation_LinkDialogSave: String { return self._s[2895]! }
+ public var GroupInfo_ActionRestrict: String { return self._s[2896]! }
+ public var Checkout_Title: String { return self._s[2897]! }
+ public var Channel_DiscussionGroup_HeaderLabel: String { return self._s[2899]! }
+ public var Channel_AdminLog_CanChangeInfo: String { return self._s[2901]! }
+ public var Notification_RenamedGroup: String { return self._s[2902]! }
+ public var PeopleNearby_Groups: String { return self._s[2903]! }
+ public var Checkout_PayWithFaceId: String { return self._s[2904]! }
+ public var Channel_BanList_BlockedTitle: String { return self._s[2905]! }
+ public var SettingsSearch_Synonyms_Notifications_InAppNotificationsSound: String { return self._s[2907]! }
+ public var Checkout_WebConfirmation_Title: String { return self._s[2908]! }
+ public var Notifications_MessageNotificationsAlert: String { return self._s[2909]! }
public func Activity_RemindAboutGroup(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2909]!, self._r[2909]!, [_0])
+ return formatWithArgumentRanges(self._s[2910]!, self._r[2910]!, [_0])
}
- public var Profile_AddToExisting: String { return self._s[2911]! }
+ public var Profile_AddToExisting: String { return self._s[2912]! }
public func Profile_CreateEncryptedChatOutdatedError(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2912]!, self._r[2912]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[2913]!, self._r[2913]!, [_0, _1])
}
- public var Cache_Files: String { return self._s[2914]! }
- public var Permissions_PrivacyPolicy: String { return self._s[2915]! }
- public var SocksProxySetup_ConnectAndSave: String { return self._s[2916]! }
- public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2917]! }
- public var AutoDownloadSettings_TypeContacts: String { return self._s[2919]! }
- public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2921]! }
- public var Calls_NoCallsPlaceholder: String { return self._s[2922]! }
- public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2923]! }
- public var VoiceOver_AttachMedia: String { return self._s[2925]! }
- public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2926]! }
+ public var Cache_Files: String { return self._s[2915]! }
+ public var Permissions_PrivacyPolicy: String { return self._s[2916]! }
+ public var SocksProxySetup_ConnectAndSave: String { return self._s[2917]! }
+ public var UserInfo_NotificationsDefaultDisabled: String { return self._s[2918]! }
+ public var AutoDownloadSettings_TypeContacts: String { return self._s[2920]! }
+ public var Appearance_ThemePreview_ChatList_1_Text: String { return self._s[2922]! }
+ public var Calls_NoCallsPlaceholder: String { return self._s[2923]! }
+ public var Channel_Username_RevokeExistingUsernamesInfo: String { return self._s[2924]! }
+ public var VoiceOver_AttachMedia: String { return self._s[2926]! }
+ public var Notifications_ExceptionsGroupPlaceholder: String { return self._s[2927]! }
public func PUSH_CHAT_MESSAGE_INVOICE(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2927]!, self._r[2927]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[2928]!, self._r[2928]!, [_1, _2, _3])
}
- public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2928]! }
- public var Conversation_SetReminder_Title: String { return self._s[2929]! }
- public var Passport_FieldAddressHelp: String { return self._s[2930]! }
- public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2931]! }
+ public var SettingsSearch_Synonyms_Notifications_GroupNotificationsSound: String { return self._s[2929]! }
+ public var Conversation_SetReminder_Title: String { return self._s[2930]! }
+ public var Passport_FieldAddressHelp: String { return self._s[2931]! }
+ public var Privacy_GroupsAndChannels_InviteToChannelMultipleError: String { return self._s[2932]! }
public func Login_TermsOfService_ProceedBot(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2932]!, self._r[2932]!, [_0])
+ return formatWithArgumentRanges(self._s[2933]!, self._r[2933]!, [_0])
}
- public var Channel_AdminLog_EmptyTitle: String { return self._s[2933]! }
- public var Privacy_Calls_NeverAllow_Title: String { return self._s[2935]! }
- public var Login_UnknownError: String { return self._s[2936]! }
- public var Group_UpgradeNoticeText2: String { return self._s[2938]! }
- public var Watch_Compose_AddContact: String { return self._s[2939]! }
- public var Web_Error: String { return self._s[2940]! }
- public var Gif_Search: String { return self._s[2941]! }
- public var Profile_MessageLifetime1h: String { return self._s[2942]! }
- public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2943]! }
- public var Channel_Username_CheckingUsername: String { return self._s[2944]! }
- public var CallFeedback_ReasonSilentRemote: String { return self._s[2945]! }
- public var AutoDownloadSettings_TypeChannels: String { return self._s[2946]! }
- public var Channel_AboutItem: String { return self._s[2947]! }
- public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2949]! }
- public var VoiceOver_Chat_VoiceMessage: String { return self._s[2950]! }
- public var GroupInfo_SharedMedia: String { return self._s[2951]! }
+ public var Channel_AdminLog_EmptyTitle: String { return self._s[2934]! }
+ public var Privacy_Calls_NeverAllow_Title: String { return self._s[2936]! }
+ public var Login_UnknownError: String { return self._s[2937]! }
+ public var Group_UpgradeNoticeText2: String { return self._s[2939]! }
+ public var Watch_Compose_AddContact: String { return self._s[2940]! }
+ public var Web_Error: String { return self._s[2941]! }
+ public var Gif_Search: String { return self._s[2942]! }
+ public var Profile_MessageLifetime1h: String { return self._s[2943]! }
+ public var CheckoutInfo_ReceiverInfoEmailPlaceholder: String { return self._s[2944]! }
+ public var Channel_Username_CheckingUsername: String { return self._s[2945]! }
+ public var CallFeedback_ReasonSilentRemote: String { return self._s[2946]! }
+ public var AutoDownloadSettings_TypeChannels: String { return self._s[2947]! }
+ public var Channel_AboutItem: String { return self._s[2948]! }
+ public var Privacy_GroupsAndChannels_AlwaysAllow_Placeholder: String { return self._s[2950]! }
+ public var VoiceOver_Chat_VoiceMessage: String { return self._s[2951]! }
+ public var GroupInfo_SharedMedia: String { return self._s[2952]! }
public func Channel_AdminLog_MessagePromotedName(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2952]!, self._r[2952]!, [_1])
+ return formatWithArgumentRanges(self._s[2953]!, self._r[2953]!, [_1])
}
- public var Call_PhoneCallInProgressMessage: String { return self._s[2953]! }
+ public var Call_PhoneCallInProgressMessage: String { return self._s[2954]! }
public func PUSH_CHANNEL_ALBUM(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2954]!, self._r[2954]!, [_1])
+ return formatWithArgumentRanges(self._s[2955]!, self._r[2955]!, [_1])
}
- public var ChatList_UndoArchiveRevealedText: String { return self._s[2955]! }
- public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2956]! }
- public var Conversation_SearchByName_Placeholder: String { return self._s[2957]! }
- public var CreatePoll_AddOption: String { return self._s[2958]! }
- public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2959]! }
- public var Group_UpgradeNoticeHeader: String { return self._s[2960]! }
- public var Channel_Management_AddModerator: String { return self._s[2961]! }
- public var AutoDownloadSettings_MaxFileSize: String { return self._s[2962]! }
- public var StickerPacksSettings_ShowStickersButton: String { return self._s[2963]! }
- public var NotificationsSound_Hello: String { return self._s[2964]! }
- public var SocksProxySetup_SavedProxies: String { return self._s[2965]! }
- public var Channel_Stickers_Placeholder: String { return self._s[2967]! }
+ public var ChatList_UndoArchiveRevealedText: String { return self._s[2956]! }
+ public var GroupInfo_InviteLink_RevokeAlert_Text: String { return self._s[2957]! }
+ public var Conversation_SearchByName_Placeholder: String { return self._s[2958]! }
+ public var CreatePoll_AddOption: String { return self._s[2959]! }
+ public var GroupInfo_Permissions_SearchPlaceholder: String { return self._s[2960]! }
+ public var Group_UpgradeNoticeHeader: String { return self._s[2961]! }
+ public var Channel_Management_AddModerator: String { return self._s[2962]! }
+ public var AutoDownloadSettings_MaxFileSize: String { return self._s[2963]! }
+ public var StickerPacksSettings_ShowStickersButton: String { return self._s[2964]! }
+ public var NotificationsSound_Hello: String { return self._s[2965]! }
+ public var SocksProxySetup_SavedProxies: String { return self._s[2966]! }
+ public var Channel_Stickers_Placeholder: String { return self._s[2968]! }
public func Login_EmailCodeBody(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2968]!, self._r[2968]!, [_0])
+ return formatWithArgumentRanges(self._s[2969]!, self._r[2969]!, [_0])
}
- public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2969]! }
- public var Channel_Management_AddModeratorHelp: String { return self._s[2970]! }
- public var ContactInfo_BirthdayLabel: String { return self._s[2971]! }
- public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2972]! }
- public var AutoDownloadSettings_Channels: String { return self._s[2973]! }
- public var Passport_Language_mn: String { return self._s[2974]! }
- public var Notifications_ResetAllNotificationsHelp: String { return self._s[2977]! }
- public var Passport_Language_ja: String { return self._s[2979]! }
- public var Settings_About_Title: String { return self._s[2980]! }
- public var Settings_NotificationsAndSounds: String { return self._s[2981]! }
- public var ChannelInfo_DeleteGroup: String { return self._s[2982]! }
- public var Settings_BlockedUsers: String { return self._s[2983]! }
+ public var PrivacyPolicy_DeclineDeclineAndDelete: String { return self._s[2970]! }
+ public var Channel_Management_AddModeratorHelp: String { return self._s[2971]! }
+ public var ContactInfo_BirthdayLabel: String { return self._s[2972]! }
+ public var ChangePhoneNumberCode_RequestingACall: String { return self._s[2973]! }
+ public var AutoDownloadSettings_Channels: String { return self._s[2974]! }
+ public var Passport_Language_mn: String { return self._s[2975]! }
+ public var Notifications_ResetAllNotificationsHelp: String { return self._s[2978]! }
+ public var GroupInfo_Permissions_SlowmodeValue_Off: String { return self._s[2979]! }
+ public var Passport_Language_ja: String { return self._s[2981]! }
+ public var Settings_About_Title: String { return self._s[2982]! }
+ public var Settings_NotificationsAndSounds: String { return self._s[2983]! }
+ public var ChannelInfo_DeleteGroup: String { return self._s[2984]! }
+ public var Settings_BlockedUsers: String { return self._s[2985]! }
public func Time_MonthOfYear_m4(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2984]!, self._r[2984]!, [_0])
+ return formatWithArgumentRanges(self._s[2986]!, self._r[2986]!, [_0])
}
- public var AutoDownloadSettings_PreloadVideo: String { return self._s[2985]! }
- public var Passport_Address_AddResidentialAddress: String { return self._s[2986]! }
- public var Channel_Username_Title: String { return self._s[2987]! }
+ public var AutoDownloadSettings_PreloadVideo: String { return self._s[2987]! }
+ public var Passport_Address_AddResidentialAddress: String { return self._s[2988]! }
+ public var Channel_Username_Title: String { return self._s[2989]! }
public func Notification_RemovedGroupPhoto(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2988]!, self._r[2988]!, [_0])
+ return formatWithArgumentRanges(self._s[2990]!, self._r[2990]!, [_0])
}
- public var AttachmentMenu_File: String { return self._s[2990]! }
- public var AppleWatch_Title: String { return self._s[2991]! }
- public var Activity_RecordingVideoMessage: String { return self._s[2992]! }
+ public var AttachmentMenu_File: String { return self._s[2992]! }
+ public var AppleWatch_Title: String { return self._s[2993]! }
+ public var Activity_RecordingVideoMessage: String { return self._s[2994]! }
public func Channel_DiscussionGroup_PublicChannelLink(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[2993]!, self._r[2993]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[2995]!, self._r[2995]!, [_1, _2])
}
- public var Weekday_Saturday: String { return self._s[2994]! }
- public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2995]! }
- public var Profile_CreateEncryptedChatError: String { return self._s[2996]! }
- public var Common_Next: String { return self._s[2998]! }
- public var Channel_Stickers_YourStickers: String { return self._s[3000]! }
- public var Call_AudioRouteHeadphones: String { return self._s[3001]! }
- public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3003]! }
- public var Watch_Contacts_NoResults: String { return self._s[3005]! }
- public var PhotoEditor_TintTool: String { return self._s[3008]! }
- public var LoginPassword_ResetAccount: String { return self._s[3010]! }
- public var Settings_SavedMessages: String { return self._s[3011]! }
- public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3012]! }
- public var Bot_GenericSupportStatus: String { return self._s[3013]! }
- public var StickerPack_Add: String { return self._s[3014]! }
- public var Checkout_TotalAmount: String { return self._s[3015]! }
- public var Your_cards_number_is_invalid: String { return self._s[3016]! }
- public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3017]! }
- public var VoiceOver_Chat_VideoMessage: String { return self._s[3018]! }
+ public var Weekday_Saturday: String { return self._s[2996]! }
+ public var WallpaperPreview_SwipeColorsTopText: String { return self._s[2997]! }
+ public var Profile_CreateEncryptedChatError: String { return self._s[2998]! }
+ public var Common_Next: String { return self._s[3000]! }
+ public var Channel_Stickers_YourStickers: String { return self._s[3002]! }
+ public var Call_AudioRouteHeadphones: String { return self._s[3003]! }
+ public var TwoStepAuth_EnterPasswordForgot: String { return self._s[3005]! }
+ public var Watch_Contacts_NoResults: String { return self._s[3007]! }
+ public var PhotoEditor_TintTool: String { return self._s[3010]! }
+ public var LoginPassword_ResetAccount: String { return self._s[3012]! }
+ public var Settings_SavedMessages: String { return self._s[3013]! }
+ public var SettingsSearch_Synonyms_Appearance_Animations: String { return self._s[3014]! }
+ public var Bot_GenericSupportStatus: String { return self._s[3015]! }
+ public var StickerPack_Add: String { return self._s[3016]! }
+ public var Checkout_TotalAmount: String { return self._s[3017]! }
+ public var Your_cards_number_is_invalid: String { return self._s[3018]! }
+ public var SettingsSearch_Synonyms_Appearance_AutoNightTheme: String { return self._s[3019]! }
+ public var VoiceOver_Chat_VideoMessage: String { return self._s[3020]! }
public func ChangePhoneNumberCode_CallTimer(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3019]!, self._r[3019]!, [_0])
+ return formatWithArgumentRanges(self._s[3021]!, self._r[3021]!, [_0])
}
public func GroupPermission_AddedInfo(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3020]!, self._r[3020]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3022]!, self._r[3022]!, [_1, _2])
}
- public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3021]! }
+ public var ChatSettings_ConnectionType_UseSocks5: String { return self._s[3023]! }
public func PUSH_CHAT_PHOTO_EDITED(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3023]!, self._r[3023]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3025]!, self._r[3025]!, [_1, _2])
}
public func Conversation_RestrictedTextTimed(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3024]!, self._r[3024]!, [_0])
+ return formatWithArgumentRanges(self._s[3026]!, self._r[3026]!, [_0])
}
- public var GroupInfo_InviteLink_ShareLink: String { return self._s[3025]! }
- public var StickerPack_Share: String { return self._s[3026]! }
- public var Passport_DeleteAddress: String { return self._s[3027]! }
- public var Settings_Passport: String { return self._s[3028]! }
- public var SharedMedia_EmptyFilesText: String { return self._s[3029]! }
- public var Conversation_DeleteMessagesForMe: String { return self._s[3030]! }
- public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3031]! }
- public var Contacts_PermissionsText: String { return self._s[3032]! }
- public var Group_Setup_HistoryVisible: String { return self._s[3033]! }
- public var Passport_Address_AddRentalAgreement: String { return self._s[3035]! }
- public var SocksProxySetup_Title: String { return self._s[3036]! }
- public var Notification_Mute1h: String { return self._s[3037]! }
+ public var GroupInfo_InviteLink_ShareLink: String { return self._s[3027]! }
+ public var StickerPack_Share: String { return self._s[3028]! }
+ public var Passport_DeleteAddress: String { return self._s[3029]! }
+ public var Settings_Passport: String { return self._s[3030]! }
+ public var SharedMedia_EmptyFilesText: String { return self._s[3031]! }
+ public var Conversation_DeleteMessagesForMe: String { return self._s[3032]! }
+ public var PasscodeSettings_AutoLock_IfAwayFor_1hour: String { return self._s[3033]! }
+ public var Contacts_PermissionsText: String { return self._s[3034]! }
+ public var Group_Setup_HistoryVisible: String { return self._s[3035]! }
+ public var Passport_Address_AddRentalAgreement: String { return self._s[3037]! }
+ public var SocksProxySetup_Title: String { return self._s[3038]! }
+ public var Notification_Mute1h: String { return self._s[3039]! }
public func Passport_Email_CodeHelp(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3038]!, self._r[3038]!, [_0])
+ return formatWithArgumentRanges(self._s[3040]!, self._r[3040]!, [_0])
}
- public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3039]! }
+ public var NotificationSettings_ShowNotificationsAllAccountsInfoOff: String { return self._s[3041]! }
public func PUSH_PINNED_GEOLIVE(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3040]!, self._r[3040]!, [_1])
+ return formatWithArgumentRanges(self._s[3042]!, self._r[3042]!, [_1])
}
- public var FastTwoStepSetup_PasswordSection: String { return self._s[3041]! }
- public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3044]! }
- public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3046]! }
- public var DialogList_NoMessagesText: String { return self._s[3047]! }
- public var Privacy_ContactsResetConfirmation: String { return self._s[3048]! }
- public var Privacy_Calls_P2PHelp: String { return self._s[3049]! }
- public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3051]! }
- public var Your_cards_expiration_year_is_invalid: String { return self._s[3052]! }
- public var Common_TakePhotoOrVideo: String { return self._s[3053]! }
- public var Call_StatusBusy: String { return self._s[3054]! }
- public var Conversation_PinnedMessage: String { return self._s[3055]! }
- public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3056]! }
- public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3057]! }
- public var Undo_ChatCleared: String { return self._s[3058]! }
- public var AppleWatch_ReplyPresets: String { return self._s[3059]! }
- public var Passport_DiscardMessageDescription: String { return self._s[3061]! }
- public var Login_NetworkError: String { return self._s[3062]! }
+ public var FastTwoStepSetup_PasswordSection: String { return self._s[3043]! }
+ public var NetworkUsageSettings_ResetStatsConfirmation: String { return self._s[3046]! }
+ public var InfoPlist_NSFaceIDUsageDescription: String { return self._s[3048]! }
+ public var DialogList_NoMessagesText: String { return self._s[3049]! }
+ public var Privacy_ContactsResetConfirmation: String { return self._s[3050]! }
+ public var Privacy_Calls_P2PHelp: String { return self._s[3051]! }
+ public var Channel_DiscussionGroup_SearchPlaceholder: String { return self._s[3053]! }
+ public var Your_cards_expiration_year_is_invalid: String { return self._s[3054]! }
+ public var Common_TakePhotoOrVideo: String { return self._s[3055]! }
+ public var Call_StatusBusy: String { return self._s[3056]! }
+ public var Conversation_PinnedMessage: String { return self._s[3057]! }
+ public var AutoDownloadSettings_VoiceMessagesTitle: String { return self._s[3058]! }
+ public var TwoStepAuth_SetupPasswordConfirmFailed: String { return self._s[3059]! }
+ public var Undo_ChatCleared: String { return self._s[3060]! }
+ public var AppleWatch_ReplyPresets: String { return self._s[3061]! }
+ public var Passport_DiscardMessageDescription: String { return self._s[3063]! }
+ public var Login_NetworkError: String { return self._s[3064]! }
public func Notification_PinnedRoundMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3063]!, self._r[3063]!, [_0])
+ return formatWithArgumentRanges(self._s[3065]!, self._r[3065]!, [_0])
}
public func Channel_AdminLog_MessageRemovedChannelUsername(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3064]!, self._r[3064]!, [_0])
+ return formatWithArgumentRanges(self._s[3066]!, self._r[3066]!, [_0])
}
- public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3065]! }
- public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3067]! }
+ public var SocksProxySetup_PasswordPlaceholder: String { return self._s[3067]! }
+ public var Login_ResetAccountProtected_LimitExceeded: String { return self._s[3069]! }
public func Watch_LastSeen_YesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3069]!, self._r[3069]!, [_0])
+ return formatWithArgumentRanges(self._s[3071]!, self._r[3071]!, [_0])
}
- public var Call_ConnectionErrorMessage: String { return self._s[3070]! }
- public var VoiceOver_Chat_Music: String { return self._s[3071]! }
- public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3072]! }
- public var Compose_GroupTokenListPlaceholder: String { return self._s[3074]! }
- public var ConversationMedia_Title: String { return self._s[3075]! }
- public var EncryptionKey_Title: String { return self._s[3077]! }
- public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3078]! }
- public var Notification_Exceptions_AddException: String { return self._s[3079]! }
- public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3080]! }
- public var Profile_MessageLifetime1m: String { return self._s[3081]! }
+ public var Call_ConnectionErrorMessage: String { return self._s[3072]! }
+ public var VoiceOver_Chat_Music: String { return self._s[3073]! }
+ public var SettingsSearch_Synonyms_Notifications_MessageNotificationsSound: String { return self._s[3074]! }
+ public var Compose_GroupTokenListPlaceholder: String { return self._s[3076]! }
+ public var ConversationMedia_Title: String { return self._s[3077]! }
+ public var EncryptionKey_Title: String { return self._s[3079]! }
+ public var TwoStepAuth_EnterPasswordTitle: String { return self._s[3080]! }
+ public var Notification_Exceptions_AddException: String { return self._s[3081]! }
+ public var PrivacySettings_BlockedPeersEmpty: String { return self._s[3082]! }
+ public var Profile_MessageLifetime1m: String { return self._s[3083]! }
public func Channel_AdminLog_MessageUnkickedName(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3082]!, self._r[3082]!, [_1])
+ return formatWithArgumentRanges(self._s[3084]!, self._r[3084]!, [_1])
}
- public var Month_GenMay: String { return self._s[3083]! }
+ public var Month_GenMay: String { return self._s[3085]! }
public func LiveLocationUpdated_TodayAt(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3084]!, self._r[3084]!, [_0])
+ return formatWithArgumentRanges(self._s[3086]!, self._r[3086]!, [_0])
}
- public var PeopleNearby_Users: String { return self._s[3085]! }
- public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3086]! }
- public var AutoDownloadSettings_ResetSettings: String { return self._s[3087]! }
- public var Conversation_EmptyPlaceholder: String { return self._s[3089]! }
- public var Passport_Address_AddPassportRegistration: String { return self._s[3090]! }
- public var Notifications_ChannelNotificationsAlert: String { return self._s[3091]! }
- public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3092]! }
- public var Camera_TapAndHoldForVideo: String { return self._s[3093]! }
- public var Channel_JoinChannel: String { return self._s[3095]! }
- public var Appearance_Animations: String { return self._s[3098]! }
+ public var PeopleNearby_Users: String { return self._s[3087]! }
+ public var ChannelMembers_WhoCanAddMembersAllHelp: String { return self._s[3088]! }
+ public var AutoDownloadSettings_ResetSettings: String { return self._s[3089]! }
+ public var Conversation_EmptyPlaceholder: String { return self._s[3091]! }
+ public var Passport_Address_AddPassportRegistration: String { return self._s[3092]! }
+ public var Notifications_ChannelNotificationsAlert: String { return self._s[3093]! }
+ public var ChatSettings_AutoDownloadUsingCellular: String { return self._s[3094]! }
+ public var Camera_TapAndHoldForVideo: String { return self._s[3095]! }
+ public var Channel_JoinChannel: String { return self._s[3097]! }
+ public var Appearance_Animations: String { return self._s[3100]! }
public func Notification_MessageLifetimeChanged(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3099]!, self._r[3099]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3101]!, self._r[3101]!, [_1, _2])
}
- public var Stickers_GroupStickers: String { return self._s[3101]! }
- public var ConvertToSupergroup_HelpTitle: String { return self._s[3103]! }
- public var Passport_Address_Street: String { return self._s[3104]! }
- public var Conversation_AddContact: String { return self._s[3105]! }
- public var Login_PhonePlaceholder: String { return self._s[3106]! }
- public var Channel_Members_InviteLink: String { return self._s[3108]! }
- public var Bot_Stop: String { return self._s[3109]! }
- public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3111]! }
- public var Notification_PassportValueAddress: String { return self._s[3112]! }
- public var Month_ShortJuly: String { return self._s[3113]! }
- public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3114]! }
- public var Channel_AdminLog_BanSendMedia: String { return self._s[3115]! }
- public var Passport_Identity_ReverseSide: String { return self._s[3116]! }
- public var Watch_Stickers_Recents: String { return self._s[3119]! }
- public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3121]! }
- public var Map_SendThisLocation: String { return self._s[3122]! }
+ public var Stickers_GroupStickers: String { return self._s[3103]! }
+ public var ConvertToSupergroup_HelpTitle: String { return self._s[3105]! }
+ public var Passport_Address_Street: String { return self._s[3106]! }
+ public var Conversation_AddContact: String { return self._s[3107]! }
+ public var Login_PhonePlaceholder: String { return self._s[3108]! }
+ public var Channel_Members_InviteLink: String { return self._s[3110]! }
+ public var Bot_Stop: String { return self._s[3111]! }
+ public var SettingsSearch_Synonyms_Proxy_UseForCalls: String { return self._s[3113]! }
+ public var Notification_PassportValueAddress: String { return self._s[3114]! }
+ public var Month_ShortJuly: String { return self._s[3115]! }
+ public var Passport_Address_TypeTemporaryRegistrationUploadScan: String { return self._s[3116]! }
+ public var Channel_AdminLog_BanSendMedia: String { return self._s[3117]! }
+ public var Passport_Identity_ReverseSide: String { return self._s[3118]! }
+ public var Watch_Stickers_Recents: String { return self._s[3121]! }
+ public var PrivacyLastSeenSettings_EmpryUsersPlaceholder: String { return self._s[3123]! }
+ public var Map_SendThisLocation: String { return self._s[3124]! }
public func Time_MonthOfYear_m1(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3123]!, self._r[3123]!, [_0])
+ return formatWithArgumentRanges(self._s[3125]!, self._r[3125]!, [_0])
}
public func InviteText_SingleContact(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3124]!, self._r[3124]!, [_0])
- }
- public var ConvertToSupergroup_Note: String { return self._s[3125]! }
- public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) {
return formatWithArgumentRanges(self._s[3126]!, self._r[3126]!, [_0])
}
- public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3127]! }
+ public var ConvertToSupergroup_Note: String { return self._s[3127]! }
+ public func FileSize_MB(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3128]!, self._r[3128]!, [_0])
+ }
+ public var NetworkUsageSettings_GeneralDataSection: String { return self._s[3129]! }
public func Compatibility_SecretMediaVersionTooLow(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3128]!, self._r[3128]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[3130]!, self._r[3130]!, [_0, _1])
}
- public var Login_CallRequestState3: String { return self._s[3130]! }
- public var Wallpaper_SearchShort: String { return self._s[3131]! }
- public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3133]! }
- public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3134]! }
- public var Channel_BotDoesntSupportGroups: String { return self._s[3135]! }
+ public var Login_CallRequestState3: String { return self._s[3132]! }
+ public var Wallpaper_SearchShort: String { return self._s[3133]! }
+ public var SettingsSearch_Synonyms_Appearance_ColorTheme: String { return self._s[3135]! }
+ public var PasscodeSettings_UnlockWithFaceId: String { return self._s[3136]! }
+ public var Channel_BotDoesntSupportGroups: String { return self._s[3137]! }
public func PUSH_CHAT_MESSAGE_GEOLIVE(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3136]!, self._r[3136]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3138]!, self._r[3138]!, [_1, _2])
}
- public var Channel_AdminLogFilter_Title: String { return self._s[3137]! }
- public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3139]! }
- public var Notifications_GroupNotificationsExceptions: String { return self._s[3142]! }
+ public var Channel_AdminLogFilter_Title: String { return self._s[3139]! }
+ public var Appearance_ThemePreview_Chat_4_Text: String { return self._s[3141]! }
+ public var Notifications_GroupNotificationsExceptions: String { return self._s[3144]! }
public func FileSize_B(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3143]!, self._r[3143]!, [_0])
+ return formatWithArgumentRanges(self._s[3145]!, self._r[3145]!, [_0])
}
- public var Passport_CorrectErrors: String { return self._s[3144]! }
- public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3145]! }
+ public var Passport_CorrectErrors: String { return self._s[3146]! }
+ public var VoiceOver_Chat_YourAnonymousPoll: String { return self._s[3147]! }
public func Channel_MessageTitleUpdated(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3146]!, self._r[3146]!, [_0])
+ return formatWithArgumentRanges(self._s[3148]!, self._r[3148]!, [_0])
}
- public var Map_SendMyCurrentLocation: String { return self._s[3147]! }
- public var Channel_DiscussionGroup: String { return self._s[3148]! }
+ public var Map_SendMyCurrentLocation: String { return self._s[3149]! }
+ public var Channel_DiscussionGroup: String { return self._s[3150]! }
public func PUSH_PINNED_CONTACT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3149]!, self._r[3149]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3151]!, self._r[3151]!, [_1, _2])
}
- public var SharedMedia_SearchNoResults: String { return self._s[3150]! }
- public var Permissions_NotificationsText_v0: String { return self._s[3151]! }
- public var Appearance_AppIcon: String { return self._s[3152]! }
- public var LoginPassword_FloodError: String { return self._s[3153]! }
- public var Group_Setup_HistoryHiddenHelp: String { return self._s[3155]! }
+ public var SharedMedia_SearchNoResults: String { return self._s[3152]! }
+ public var Permissions_NotificationsText_v0: String { return self._s[3153]! }
+ public var Appearance_AppIcon: String { return self._s[3154]! }
+ public var LoginPassword_FloodError: String { return self._s[3155]! }
+ public var Group_Setup_HistoryHiddenHelp: String { return self._s[3157]! }
public func TwoStepAuth_PendingEmailHelp(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3156]!, self._r[3156]!, [_0])
- }
- public var Passport_Language_bn: String { return self._s[3157]! }
- public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) {
return formatWithArgumentRanges(self._s[3158]!, self._r[3158]!, [_0])
}
- public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3159]!, self._r[3159]!, [_0])
- }
- public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) {
+ public var Passport_Language_bn: String { return self._s[3159]! }
+ public func DialogList_SingleUploadingPhotoSuffix(_ _0: String) -> (String, [(Int, NSRange)]) {
return formatWithArgumentRanges(self._s[3160]!, self._r[3160]!, [_0])
}
- public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3163]! }
- public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3165]! }
- public var Contacts_PermissionsAllow: String { return self._s[3166]! }
- public var ReportPeer_ReasonCopyright: String { return self._s[3167]! }
- public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3168]! }
- public var WallpaperPreview_Pattern: String { return self._s[3169]! }
- public var Paint_Duplicate: String { return self._s[3170]! }
- public var Passport_Address_Country: String { return self._s[3171]! }
- public var Notification_RenamedChannel: String { return self._s[3173]! }
- public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3174]! }
- public var Group_MessagePhotoUpdated: String { return self._s[3175]! }
- public var Channel_BanUser_PermissionSendMedia: String { return self._s[3176]! }
- public var Conversation_ContextMenuBan: String { return self._s[3177]! }
- public var TwoStepAuth_EmailSent: String { return self._s[3178]! }
- public var MessagePoll_NoVotes: String { return self._s[3179]! }
- public var Passport_Language_is: String { return self._s[3180]! }
- public var PeopleNearby_UsersEmpty: String { return self._s[3182]! }
- public var Tour_Text5: String { return self._s[3183]! }
+ public func Notification_PinnedAudioMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3161]!, self._r[3161]!, [_0])
+ }
+ public func Channel_AdminLog_MessageChangedGroupStickerPack(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3162]!, self._r[3162]!, [_0])
+ }
+ public var GroupInfo_InvitationLinkGroupFull: String { return self._s[3165]! }
+ public var Group_EditAdmin_PermissionChangeInfo: String { return self._s[3167]! }
+ public var Contacts_PermissionsAllow: String { return self._s[3168]! }
+ public var ReportPeer_ReasonCopyright: String { return self._s[3169]! }
+ public var Channel_EditAdmin_PermissinAddAdminOn: String { return self._s[3170]! }
+ public var WallpaperPreview_Pattern: String { return self._s[3171]! }
+ public var Paint_Duplicate: String { return self._s[3172]! }
+ public var Passport_Address_Country: String { return self._s[3173]! }
+ public var Notification_RenamedChannel: String { return self._s[3175]! }
+ public var CheckoutInfo_ErrorPostcodeInvalid: String { return self._s[3176]! }
+ public var Group_MessagePhotoUpdated: String { return self._s[3177]! }
+ public var Channel_BanUser_PermissionSendMedia: String { return self._s[3178]! }
+ public var Conversation_ContextMenuBan: String { return self._s[3179]! }
+ public var TwoStepAuth_EmailSent: String { return self._s[3180]! }
+ public var MessagePoll_NoVotes: String { return self._s[3181]! }
+ public var Passport_Language_is: String { return self._s[3182]! }
+ public var PeopleNearby_UsersEmpty: String { return self._s[3184]! }
+ public var Tour_Text5: String { return self._s[3185]! }
public func Call_GroupFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3185]!, self._r[3185]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3187]!, self._r[3187]!, [_1, _2])
}
- public var Undo_SecretChatDeleted: String { return self._s[3186]! }
- public var SocksProxySetup_ShareQRCode: String { return self._s[3187]! }
+ public var Undo_SecretChatDeleted: String { return self._s[3188]! }
+ public var SocksProxySetup_ShareQRCode: String { return self._s[3189]! }
public func VoiceOver_Chat_Size(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3188]!, self._r[3188]!, [_0])
+ return formatWithArgumentRanges(self._s[3190]!, self._r[3190]!, [_0])
}
- public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3189]! }
- public var Paint_Edit: String { return self._s[3191]! }
- public var Undo_DeletedGroup: String { return self._s[3194]! }
- public var LoginPassword_ForgotPassword: String { return self._s[3195]! }
- public var GroupInfo_GroupNamePlaceholder: String { return self._s[3196]! }
+ public var LogoutOptions_ChangePhoneNumberText: String { return self._s[3191]! }
+ public var Paint_Edit: String { return self._s[3193]! }
+ public var Undo_DeletedGroup: String { return self._s[3196]! }
+ public var LoginPassword_ForgotPassword: String { return self._s[3197]! }
+ public var GroupInfo_GroupNamePlaceholder: String { return self._s[3198]! }
public func Notification_Kicked(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3197]!, self._r[3197]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[3199]!, self._r[3199]!, [_0, _1])
}
- public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3198]! }
- public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3199]! }
- public var Passport_Language_uz: String { return self._s[3200]! }
- public var Conversation_PinMessageAlertGroup: String { return self._s[3201]! }
- public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3202]! }
- public var Map_StopLiveLocation: String { return self._s[3204]! }
- public var VoiceOver_MessageContextSend: String { return self._s[3206]! }
- public var PasscodeSettings_Help: String { return self._s[3207]! }
- public var NotificationsSound_Input: String { return self._s[3208]! }
- public var Share_Title: String { return self._s[3211]! }
- public var LogoutOptions_Title: String { return self._s[3212]! }
- public var Login_TermsOfServiceAgree: String { return self._s[3213]! }
- public var Compose_NewEncryptedChatTitle: String { return self._s[3214]! }
- public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3215]! }
- public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3216]! }
- public var EnterPasscode_EnterTitle: String { return self._s[3217]! }
+ public var Conversation_InputTextCaptionPlaceholder: String { return self._s[3200]! }
+ public var AutoDownloadSettings_VideoMessagesTitle: String { return self._s[3201]! }
+ public var Passport_Language_uz: String { return self._s[3202]! }
+ public var Conversation_PinMessageAlertGroup: String { return self._s[3203]! }
+ public var SettingsSearch_Synonyms_Privacy_GroupsAndChannels: String { return self._s[3204]! }
+ public var Map_StopLiveLocation: String { return self._s[3206]! }
+ public var VoiceOver_MessageContextSend: String { return self._s[3208]! }
+ public var PasscodeSettings_Help: String { return self._s[3209]! }
+ public var NotificationsSound_Input: String { return self._s[3210]! }
+ public var Share_Title: String { return self._s[3213]! }
+ public var LogoutOptions_Title: String { return self._s[3214]! }
+ public var Login_TermsOfServiceAgree: String { return self._s[3215]! }
+ public var Compose_NewEncryptedChatTitle: String { return self._s[3216]! }
+ public var Channel_AdminLog_TitleSelectedEvents: String { return self._s[3217]! }
+ public var Channel_EditAdmin_PermissionEditMessages: String { return self._s[3218]! }
+ public var EnterPasscode_EnterTitle: String { return self._s[3219]! }
public func Call_PrivacyErrorMessage(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3218]!, self._r[3218]!, [_0])
+ return formatWithArgumentRanges(self._s[3220]!, self._r[3220]!, [_0])
}
- public var Settings_CopyPhoneNumber: String { return self._s[3219]! }
- public var Conversation_AddToContacts: String { return self._s[3220]! }
+ public var Settings_CopyPhoneNumber: String { return self._s[3221]! }
+ public var Conversation_AddToContacts: String { return self._s[3222]! }
public func VoiceOver_Chat_ReplyFrom(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3221]!, self._r[3221]!, [_0])
- }
- public var NotificationsSound_Keys: String { return self._s[3222]! }
- public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) {
return formatWithArgumentRanges(self._s[3223]!, self._r[3223]!, [_0])
}
- public var Notification_MessageLifetime1w: String { return self._s[3224]! }
- public var Message_Video: String { return self._s[3225]! }
- public var AutoDownloadSettings_CellularTitle: String { return self._s[3226]! }
+ public var NotificationsSound_Keys: String { return self._s[3224]! }
+ public func Call_ParticipantVersionOutdatedError(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3225]!, self._r[3225]!, [_0])
+ }
+ public var Notification_MessageLifetime1w: String { return self._s[3226]! }
+ public var Message_Video: String { return self._s[3227]! }
+ public var AutoDownloadSettings_CellularTitle: String { return self._s[3228]! }
public func PUSH_CHANNEL_MESSAGE_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3227]!, self._r[3227]!, [_1])
+ return formatWithArgumentRanges(self._s[3229]!, self._r[3229]!, [_1])
}
public func Notification_JoinedChat(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3230]!, self._r[3230]!, [_0])
+ return formatWithArgumentRanges(self._s[3232]!, self._r[3232]!, [_0])
}
public func PrivacySettings_LastSeenContactsPlus(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3231]!, self._r[3231]!, [_0])
+ return formatWithArgumentRanges(self._s[3233]!, self._r[3233]!, [_0])
}
- public var Passport_Language_mk: String { return self._s[3232]! }
- public var CreatePoll_CancelConfirmation: String { return self._s[3233]! }
- public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3235]! }
- public var PrivacyPolicy_Decline: String { return self._s[3236]! }
- public var Passport_Identity_DoesNotExpire: String { return self._s[3237]! }
- public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3238]! }
- public var Permissions_SiriAllow_v0: String { return self._s[3240]! }
- public var Appearance_ThemeCarouselNight: String { return self._s[3241]! }
+ public var Passport_Language_mk: String { return self._s[3234]! }
+ public var CreatePoll_CancelConfirmation: String { return self._s[3235]! }
+ public var Conversation_SilentBroadcastTooltipOn: String { return self._s[3237]! }
+ public var PrivacyPolicy_Decline: String { return self._s[3238]! }
+ public var Passport_Identity_DoesNotExpire: String { return self._s[3239]! }
+ public var Channel_AdminLogFilter_EventsRestrictions: String { return self._s[3240]! }
+ public var Permissions_SiriAllow_v0: String { return self._s[3242]! }
+ public var Appearance_ThemeCarouselNight: String { return self._s[3243]! }
public func LOCAL_CHAT_MESSAGE_FWDS(_ _1: String, _ _2: Int) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3242]!, self._r[3242]!, [_1, "\(_2)"])
+ return formatWithArgumentRanges(self._s[3244]!, self._r[3244]!, [_1, "\(_2)"])
}
public func Notification_RenamedChat(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3243]!, self._r[3243]!, [_0])
+ return formatWithArgumentRanges(self._s[3245]!, self._r[3245]!, [_0])
}
- public var Paint_Regular: String { return self._s[3244]! }
- public var ChatSettings_AutoDownloadReset: String { return self._s[3245]! }
- public var SocksProxySetup_ShareLink: String { return self._s[3246]! }
- public var BlockedUsers_SelectUserTitle: String { return self._s[3247]! }
- public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3249]! }
- public var GroupInfo_InviteByLink: String { return self._s[3250]! }
- public var MessageTimer_Custom: String { return self._s[3251]! }
- public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3252]! }
- public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3254]! }
- public var Conversation_SendMessage_SetReminder: String { return self._s[3255]! }
- public var VoiceOver_Chat_Selected: String { return self._s[3256]! }
- public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3257]! }
- public var Channel_Username_InvalidTaken: String { return self._s[3258]! }
- public var Conversation_ClousStorageInfo_Description3: String { return self._s[3259]! }
- public var Settings_ChatBackground: String { return self._s[3260]! }
- public var Channel_Subscribers_Title: String { return self._s[3261]! }
- public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3262]! }
- public var Watch_ConnectionDescription: String { return self._s[3263]! }
- public var ChatList_ArchivedChatsTitle: String { return self._s[3267]! }
- public var Wallpaper_ResetWallpapers: String { return self._s[3268]! }
- public var EditProfile_Title: String { return self._s[3269]! }
- public var NotificationsSound_Bamboo: String { return self._s[3271]! }
- public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3273]! }
- public var Login_SmsRequestState2: String { return self._s[3274]! }
- public var Passport_Language_ar: String { return self._s[3275]! }
+ public var Paint_Regular: String { return self._s[3246]! }
+ public var ChatSettings_AutoDownloadReset: String { return self._s[3247]! }
+ public var SocksProxySetup_ShareLink: String { return self._s[3248]! }
+ public var BlockedUsers_SelectUserTitle: String { return self._s[3249]! }
+ public var VoiceOver_Chat_RecordModeVoiceMessage: String { return self._s[3251]! }
+ public var GroupInfo_InviteByLink: String { return self._s[3252]! }
+ public var MessageTimer_Custom: String { return self._s[3253]! }
+ public var UserInfo_NotificationsDefaultEnabled: String { return self._s[3254]! }
+ public var Passport_Address_TypeTemporaryRegistration: String { return self._s[3256]! }
+ public var Conversation_SendMessage_SetReminder: String { return self._s[3257]! }
+ public var VoiceOver_Chat_Selected: String { return self._s[3258]! }
+ public var ChatSettings_AutoDownloadUsingWiFi: String { return self._s[3259]! }
+ public var Channel_Username_InvalidTaken: String { return self._s[3260]! }
+ public var Conversation_ClousStorageInfo_Description3: String { return self._s[3261]! }
+ public var Settings_ChatBackground: String { return self._s[3262]! }
+ public var Channel_Subscribers_Title: String { return self._s[3263]! }
+ public var ApplyLanguage_ChangeLanguageTitle: String { return self._s[3264]! }
+ public var Watch_ConnectionDescription: String { return self._s[3265]! }
+ public var ChatList_ArchivedChatsTitle: String { return self._s[3269]! }
+ public var Wallpaper_ResetWallpapers: String { return self._s[3270]! }
+ public var EditProfile_Title: String { return self._s[3271]! }
+ public var NotificationsSound_Bamboo: String { return self._s[3273]! }
+ public var Channel_AdminLog_MessagePreviousMessage: String { return self._s[3275]! }
+ public var Login_SmsRequestState2: String { return self._s[3276]! }
+ public var Passport_Language_ar: String { return self._s[3277]! }
public func Message_AuthorPinnedGame(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3276]!, self._r[3276]!, [_0])
+ return formatWithArgumentRanges(self._s[3278]!, self._r[3278]!, [_0])
}
- public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3277]! }
- public var Conversation_MessageDialogEdit: String { return self._s[3278]! }
- public var VoiceOver_Media_PlaybackPause: String { return self._s[3279]! }
+ public var SettingsSearch_Synonyms_EditProfile_Title: String { return self._s[3279]! }
+ public var Conversation_MessageDialogEdit: String { return self._s[3280]! }
+ public var VoiceOver_Media_PlaybackPause: String { return self._s[3281]! }
public func PUSH_AUTH_UNKNOWN(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3280]!, self._r[3280]!, [_1])
+ return formatWithArgumentRanges(self._s[3282]!, self._r[3282]!, [_1])
}
- public var Common_Close: String { return self._s[3281]! }
- public var GroupInfo_PublicLink: String { return self._s[3282]! }
- public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3283]! }
- public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3284]! }
+ public var Common_Close: String { return self._s[3283]! }
+ public var GroupInfo_PublicLink: String { return self._s[3284]! }
+ public var Channel_OwnershipTransfer_ErrorPrivacyRestricted: String { return self._s[3285]! }
+ public var SettingsSearch_Synonyms_Notifications_GroupNotificationsPreview: String { return self._s[3286]! }
public func Channel_AdminLog_MessageToggleInvitesOff(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3288]!, self._r[3288]!, [_0])
- }
- public var UserInfo_About_Placeholder: String { return self._s[3289]! }
- public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) {
return formatWithArgumentRanges(self._s[3290]!, self._r[3290]!, [_0])
}
- public var GroupInfo_Permissions_SectionTitle: String { return self._s[3291]! }
- public var Channel_Info_Banned: String { return self._s[3293]! }
+ public var UserInfo_About_Placeholder: String { return self._s[3291]! }
+ public func Conversation_FileHowToText(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3292]!, self._r[3292]!, [_0])
+ }
+ public var GroupInfo_Permissions_SectionTitle: String { return self._s[3293]! }
+ public var Channel_Info_Banned: String { return self._s[3295]! }
public func Time_MonthOfYear_m11(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3294]!, self._r[3294]!, [_0])
+ return formatWithArgumentRanges(self._s[3296]!, self._r[3296]!, [_0])
}
- public var Appearance_Other: String { return self._s[3295]! }
- public var Passport_Language_my: String { return self._s[3296]! }
- public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3297]! }
+ public var Appearance_Other: String { return self._s[3297]! }
+ public var Passport_Language_my: String { return self._s[3298]! }
+ public var Group_Setup_BasicHistoryHiddenHelp: String { return self._s[3299]! }
public func Time_PreciseDate_m9(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3298]!, self._r[3298]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[3300]!, self._r[3300]!, [_1, _2, _3])
}
- public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3299]! }
- public var Preview_CopyAddress: String { return self._s[3300]! }
+ public var SettingsSearch_Synonyms_Privacy_PasscodeAndFaceId: String { return self._s[3301]! }
+ public var Preview_CopyAddress: String { return self._s[3302]! }
public func DialogList_SinglePlayingGameSuffix(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3301]!, self._r[3301]!, [_0])
+ return formatWithArgumentRanges(self._s[3303]!, self._r[3303]!, [_0])
}
- public var KeyCommand_JumpToPreviousChat: String { return self._s[3302]! }
- public var UserInfo_BotSettings: String { return self._s[3303]! }
- public var LiveLocation_MenuStopAll: String { return self._s[3305]! }
- public var Passport_PasswordCreate: String { return self._s[3306]! }
- public var StickerSettings_MaskContextInfo: String { return self._s[3307]! }
- public var Message_PinnedLocationMessage: String { return self._s[3308]! }
- public var Map_Satellite: String { return self._s[3309]! }
- public var Watch_Message_Unsupported: String { return self._s[3310]! }
- public var Username_TooManyPublicUsernamesError: String { return self._s[3311]! }
- public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3312]! }
+ public var KeyCommand_JumpToPreviousChat: String { return self._s[3304]! }
+ public var UserInfo_BotSettings: String { return self._s[3305]! }
+ public var LiveLocation_MenuStopAll: String { return self._s[3307]! }
+ public var Passport_PasswordCreate: String { return self._s[3308]! }
+ public var StickerSettings_MaskContextInfo: String { return self._s[3309]! }
+ public var Message_PinnedLocationMessage: String { return self._s[3310]! }
+ public var Map_Satellite: String { return self._s[3311]! }
+ public var Watch_Message_Unsupported: String { return self._s[3312]! }
+ public var Username_TooManyPublicUsernamesError: String { return self._s[3313]! }
+ public var TwoStepAuth_EnterPasswordInvalid: String { return self._s[3314]! }
public func Notification_PinnedTextMessage(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3313]!, self._r[3313]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[3315]!, self._r[3315]!, [_0, _1])
}
public func Conversation_OpenBotLinkText(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3314]!, self._r[3314]!, [_0])
+ return formatWithArgumentRanges(self._s[3316]!, self._r[3316]!, [_0])
}
- public var Notifications_ChannelNotificationsHelp: String { return self._s[3315]! }
- public var Privacy_Calls_P2PContacts: String { return self._s[3316]! }
- public var NotificationsSound_None: String { return self._s[3317]! }
- public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3319]! }
- public var AccessDenied_VoiceMicrophone: String { return self._s[3320]! }
+ public var Notifications_ChannelNotificationsHelp: String { return self._s[3317]! }
+ public var Privacy_Calls_P2PContacts: String { return self._s[3318]! }
+ public var NotificationsSound_None: String { return self._s[3319]! }
+ public var Channel_DiscussionGroup_UnlinkGroup: String { return self._s[3321]! }
+ public var AccessDenied_VoiceMicrophone: String { return self._s[3322]! }
public func ApplyLanguage_ChangeLanguageAlreadyActive(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3321]!, self._r[3321]!, [_1])
+ return formatWithArgumentRanges(self._s[3323]!, self._r[3323]!, [_1])
}
- public var Cache_Indexing: String { return self._s[3322]! }
- public var DialogList_RecentTitlePeople: String { return self._s[3324]! }
- public var DialogList_EncryptionRejected: String { return self._s[3325]! }
- public var GroupInfo_Administrators: String { return self._s[3326]! }
- public var Passport_ScanPassportHelp: String { return self._s[3327]! }
- public var Application_Name: String { return self._s[3328]! }
- public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3329]! }
- public var Appearance_ThemeCarouselDay: String { return self._s[3331]! }
- public var Passport_Identity_TranslationHelp: String { return self._s[3332]! }
+ public var Cache_Indexing: String { return self._s[3324]! }
+ public var DialogList_RecentTitlePeople: String { return self._s[3326]! }
+ public var DialogList_EncryptionRejected: String { return self._s[3327]! }
+ public var GroupInfo_Administrators: String { return self._s[3328]! }
+ public var Passport_ScanPassportHelp: String { return self._s[3329]! }
+ public var Application_Name: String { return self._s[3330]! }
+ public var Channel_AdminLogFilter_ChannelEventsInfo: String { return self._s[3331]! }
+ public var Appearance_ThemeCarouselDay: String { return self._s[3333]! }
+ public var Passport_Identity_TranslationHelp: String { return self._s[3334]! }
public func VoiceOver_Chat_VideoMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3333]!, self._r[3333]!, [_0])
- }
- public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3334]!, self._r[3334]!, [_0])
- }
- public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) {
return formatWithArgumentRanges(self._s[3335]!, self._r[3335]!, [_0])
}
- public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3336]! }
- public var Privacy_ChatsTitle: String { return self._s[3337]! }
- public var DialogList_ClearHistoryConfirmation: String { return self._s[3338]! }
- public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3339]! }
- public var Watch_Suggestion_HoldOn: String { return self._s[3340]! }
- public var Group_EditAdmin_TransferOwnership: String { return self._s[3341]! }
- public var Group_LinkedChannel: String { return self._s[3342]! }
- public var VoiceOver_Chat_SeenByRecipient: String { return self._s[3343]! }
- public var SocksProxySetup_RequiredCredentials: String { return self._s[3344]! }
- public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3345]! }
- public var TwoStepAuth_EmailSkipAlert: String { return self._s[3346]! }
- public var ScheduledMessages_RemindersTitle: String { return self._s[3348]! }
- public var Channel_Setup_TypePublic: String { return self._s[3350]! }
+ public func Notification_JoinedGroupByLink(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3336]!, self._r[3336]!, [_0])
+ }
+ public func DialogList_EncryptedChatStartedOutgoing(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3337]!, self._r[3337]!, [_0])
+ }
+ public var Channel_EditAdmin_PermissionDeleteMessages: String { return self._s[3338]! }
+ public var Privacy_ChatsTitle: String { return self._s[3339]! }
+ public var DialogList_ClearHistoryConfirmation: String { return self._s[3340]! }
+ public var SettingsSearch_Synonyms_Data_Storage_ClearCache: String { return self._s[3341]! }
+ public var Watch_Suggestion_HoldOn: String { return self._s[3342]! }
+ public var Group_EditAdmin_TransferOwnership: String { return self._s[3343]! }
+ public var Group_LinkedChannel: String { return self._s[3344]! }
+ public var VoiceOver_Chat_SeenByRecipient: String { return self._s[3345]! }
+ public var SocksProxySetup_RequiredCredentials: String { return self._s[3346]! }
+ public var Passport_Address_TypeRentalAgreementUploadScan: String { return self._s[3347]! }
+ public var TwoStepAuth_EmailSkipAlert: String { return self._s[3348]! }
+ public var ScheduledMessages_RemindersTitle: String { return self._s[3350]! }
+ public var Channel_Setup_TypePublic: String { return self._s[3352]! }
public func Channel_AdminLog_MessageToggleInvitesOn(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3351]!, self._r[3351]!, [_0])
+ return formatWithArgumentRanges(self._s[3353]!, self._r[3353]!, [_0])
}
- public var Channel_TypeSetup_Title: String { return self._s[3353]! }
- public var Map_OpenInMaps: String { return self._s[3355]! }
+ public var Channel_TypeSetup_Title: String { return self._s[3355]! }
+ public var Map_OpenInMaps: String { return self._s[3357]! }
public func PUSH_PINNED_NOTEXT(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3356]!, self._r[3356]!, [_1])
+ return formatWithArgumentRanges(self._s[3358]!, self._r[3358]!, [_1])
}
- public var NotificationsSound_Tremolo: String { return self._s[3358]! }
+ public var NotificationsSound_Tremolo: String { return self._s[3360]! }
public func Date_ChatDateHeaderYear(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3359]!, self._r[3359]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[3361]!, self._r[3361]!, [_1, _2, _3])
}
- public var ConversationProfile_UnknownAddMemberError: String { return self._s[3360]! }
- public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3361]! }
- public var Passport_PasswordHelp: String { return self._s[3362]! }
- public var Login_CodeExpiredError: String { return self._s[3363]! }
- public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3364]! }
- public var Conversation_TitleUnmute: String { return self._s[3365]! }
- public var Passport_Identity_ScansHelp: String { return self._s[3366]! }
- public var Passport_Language_lo: String { return self._s[3367]! }
- public var Camera_FlashAuto: String { return self._s[3368]! }
- public var Conversation_OpenBotLinkOpen: String { return self._s[3369]! }
- public var Common_Cancel: String { return self._s[3370]! }
- public var DialogList_SavedMessagesTooltip: String { return self._s[3371]! }
- public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3372]! }
- public var Appearance_TintAllColors: String { return self._s[3373]! }
+ public var ConversationProfile_UnknownAddMemberError: String { return self._s[3362]! }
+ public var Channel_OwnershipTransfer_PasswordPlaceholder: String { return self._s[3363]! }
+ public var Passport_PasswordHelp: String { return self._s[3364]! }
+ public var Login_CodeExpiredError: String { return self._s[3365]! }
+ public var Channel_EditAdmin_PermissionChangeInfo: String { return self._s[3366]! }
+ public var Conversation_TitleUnmute: String { return self._s[3367]! }
+ public var Passport_Identity_ScansHelp: String { return self._s[3368]! }
+ public var Passport_Language_lo: String { return self._s[3369]! }
+ public var Camera_FlashAuto: String { return self._s[3370]! }
+ public var Conversation_OpenBotLinkOpen: String { return self._s[3371]! }
+ public var Common_Cancel: String { return self._s[3372]! }
+ public var DialogList_SavedMessagesTooltip: String { return self._s[3373]! }
+ public var TwoStepAuth_SetupPasswordTitle: String { return self._s[3374]! }
+ public var Appearance_TintAllColors: String { return self._s[3375]! }
public func PUSH_MESSAGE_FWD(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3374]!, self._r[3374]!, [_1])
+ return formatWithArgumentRanges(self._s[3376]!, self._r[3376]!, [_1])
}
- public var Conversation_ReportSpamConfirmation: String { return self._s[3375]! }
- public var ChatSettings_Title: String { return self._s[3377]! }
- public var Passport_PasswordReset: String { return self._s[3378]! }
- public var SocksProxySetup_TypeNone: String { return self._s[3379]! }
- public var PhoneNumberHelp_Help: String { return self._s[3381]! }
- public var Checkout_EnterPassword: String { return self._s[3382]! }
- public var Share_AuthTitle: String { return self._s[3384]! }
- public var Activity_UploadingDocument: String { return self._s[3385]! }
- public var State_Connecting: String { return self._s[3386]! }
- public var Profile_MessageLifetime1w: String { return self._s[3387]! }
- public var Conversation_ContextMenuReport: String { return self._s[3388]! }
- public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3389]! }
- public var AutoNightTheme_ScheduledTo: String { return self._s[3390]! }
+ public var Conversation_ReportSpamConfirmation: String { return self._s[3377]! }
+ public var ChatSettings_Title: String { return self._s[3379]! }
+ public var Passport_PasswordReset: String { return self._s[3380]! }
+ public var SocksProxySetup_TypeNone: String { return self._s[3381]! }
+ public var PhoneNumberHelp_Help: String { return self._s[3383]! }
+ public var Checkout_EnterPassword: String { return self._s[3384]! }
+ public var Share_AuthTitle: String { return self._s[3386]! }
+ public var Activity_UploadingDocument: String { return self._s[3387]! }
+ public var State_Connecting: String { return self._s[3388]! }
+ public var Profile_MessageLifetime1w: String { return self._s[3389]! }
+ public var Conversation_ContextMenuReport: String { return self._s[3390]! }
+ public var CheckoutInfo_ReceiverInfoPhone: String { return self._s[3391]! }
+ public var AutoNightTheme_ScheduledTo: String { return self._s[3392]! }
public func VoiceOver_Chat_AnonymousPollFrom(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3391]!, self._r[3391]!, [_0])
+ return formatWithArgumentRanges(self._s[3393]!, self._r[3393]!, [_0])
}
- public var AuthSessions_Terminate: String { return self._s[3392]! }
- public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3393]! }
- public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3394]! }
- public var PhotoEditor_Set: String { return self._s[3395]! }
- public var EmptyGroupInfo_Title: String { return self._s[3396]! }
- public var Login_PadPhoneHelp: String { return self._s[3397]! }
- public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3399]! }
- public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3401]! }
- public var NotificationsSound_Complete: String { return self._s[3402]! }
- public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3403]! }
- public var Group_Info_AdminLog: String { return self._s[3404]! }
- public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3405]! }
- public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3406]! }
- public var Conversation_Admin: String { return self._s[3408]! }
- public var Conversation_GifTooltip: String { return self._s[3409]! }
- public var Passport_NotLoggedInMessage: String { return self._s[3410]! }
+ public var AuthSessions_Terminate: String { return self._s[3394]! }
+ public var Checkout_NewCard_CardholderNamePlaceholder: String { return self._s[3395]! }
+ public var KeyCommand_JumpToPreviousUnreadChat: String { return self._s[3396]! }
+ public var PhotoEditor_Set: String { return self._s[3397]! }
+ public var EmptyGroupInfo_Title: String { return self._s[3398]! }
+ public var Login_PadPhoneHelp: String { return self._s[3399]! }
+ public var AutoDownloadSettings_TypeGroupChats: String { return self._s[3401]! }
+ public var PrivacyPolicy_DeclineLastWarning: String { return self._s[3403]! }
+ public var NotificationsSound_Complete: String { return self._s[3404]! }
+ public var SettingsSearch_Synonyms_Privacy_Data_Title: String { return self._s[3405]! }
+ public var Group_Info_AdminLog: String { return self._s[3406]! }
+ public var GroupPermission_NotAvailableInPublicGroups: String { return self._s[3407]! }
+ public var Channel_AdminLog_InfoPanelAlertText: String { return self._s[3408]! }
+ public var Conversation_Admin: String { return self._s[3410]! }
+ public var Conversation_GifTooltip: String { return self._s[3411]! }
+ public var Passport_NotLoggedInMessage: String { return self._s[3412]! }
public func AutoDownloadSettings_OnFor(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3411]!, self._r[3411]!, [_0])
+ return formatWithArgumentRanges(self._s[3413]!, self._r[3413]!, [_0])
}
- public var Profile_MessageLifetimeForever: String { return self._s[3412]! }
- public var SharedMedia_EmptyTitle: String { return self._s[3414]! }
- public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3416]! }
- public var Username_Help: String { return self._s[3417]! }
- public var DialogList_LanguageTooltip: String { return self._s[3419]! }
- public var Map_LoadError: String { return self._s[3420]! }
- public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3421]! }
- public var Channel_AdminLog_AddMembers: String { return self._s[3422]! }
- public var ArchivedChats_IntroTitle2: String { return self._s[3423]! }
- public var Notification_Exceptions_NewException: String { return self._s[3424]! }
- public var TwoStepAuth_EmailTitle: String { return self._s[3425]! }
- public var WatchRemote_AlertText: String { return self._s[3426]! }
- public var ChatSettings_ConnectionType_Title: String { return self._s[3429]! }
+ public var Profile_MessageLifetimeForever: String { return self._s[3414]! }
+ public var SharedMedia_EmptyTitle: String { return self._s[3416]! }
+ public var Channel_Edit_PrivatePublicLinkAlert: String { return self._s[3418]! }
+ public var Username_Help: String { return self._s[3419]! }
+ public var DialogList_LanguageTooltip: String { return self._s[3421]! }
+ public var Map_LoadError: String { return self._s[3422]! }
+ public var Login_PhoneNumberAlreadyAuthorized: String { return self._s[3423]! }
+ public var Channel_AdminLog_AddMembers: String { return self._s[3424]! }
+ public var ArchivedChats_IntroTitle2: String { return self._s[3425]! }
+ public var Notification_Exceptions_NewException: String { return self._s[3426]! }
+ public var TwoStepAuth_EmailTitle: String { return self._s[3427]! }
+ public var WatchRemote_AlertText: String { return self._s[3428]! }
+ public var ChatSettings_ConnectionType_Title: String { return self._s[3431]! }
public func Settings_CheckPhoneNumberTitle(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3430]!, self._r[3430]!, [_0])
+ return formatWithArgumentRanges(self._s[3432]!, self._r[3432]!, [_0])
}
- public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3431]! }
- public var Passport_Address_CountryPlaceholder: String { return self._s[3432]! }
+ public var SettingsSearch_Synonyms_Calls_CallTab: String { return self._s[3433]! }
+ public var Passport_Address_CountryPlaceholder: String { return self._s[3434]! }
public func DialogList_AwaitingEncryption(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3433]!, self._r[3433]!, [_0])
+ return formatWithArgumentRanges(self._s[3435]!, self._r[3435]!, [_0])
}
public func Time_PreciseDate_m6(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3434]!, self._r[3434]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[3436]!, self._r[3436]!, [_1, _2, _3])
}
- public var Group_AdminLog_EmptyText: String { return self._s[3435]! }
- public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3436]! }
- public var Conversation_PrivateChannelTooltip: String { return self._s[3438]! }
- public var ChatList_UndoArchiveText1: String { return self._s[3439]! }
- public var AccessDenied_VideoMicrophone: String { return self._s[3440]! }
- public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3441]! }
- public var Cache_ClearNone: String { return self._s[3442]! }
- public var SocksProxySetup_FailedToConnect: String { return self._s[3443]! }
- public var Permissions_NotificationsTitle_v0: String { return self._s[3444]! }
+ public var Group_AdminLog_EmptyText: String { return self._s[3437]! }
+ public var SettingsSearch_Synonyms_Appearance_Title: String { return self._s[3438]! }
+ public var Conversation_PrivateChannelTooltip: String { return self._s[3440]! }
+ public var ChatList_UndoArchiveText1: String { return self._s[3441]! }
+ public var AccessDenied_VideoMicrophone: String { return self._s[3442]! }
+ public var Conversation_ContextMenuStickerPackAdd: String { return self._s[3443]! }
+ public var Cache_ClearNone: String { return self._s[3444]! }
+ public var SocksProxySetup_FailedToConnect: String { return self._s[3445]! }
+ public var Permissions_NotificationsTitle_v0: String { return self._s[3446]! }
public func Channel_AdminLog_MessageEdited(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3445]!, self._r[3445]!, [_0])
- }
- public var Passport_Identity_Country: String { return self._s[3446]! }
- public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) {
return formatWithArgumentRanges(self._s[3447]!, self._r[3447]!, [_0])
}
- public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3448]!, self._r[3448]!, [_0])
+ public var Passport_Identity_Country: String { return self._s[3448]! }
+ public func ChatSettings_AutoDownloadSettings_TypeFile(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3449]!, self._r[3449]!, [_0])
}
- public var Exceptions_AddToExceptions: String { return self._s[3449]! }
- public var AccessDenied_Settings: String { return self._s[3450]! }
- public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3451]! }
- public var Month_ShortMay: String { return self._s[3452]! }
- public var Compose_NewGroup: String { return self._s[3453]! }
- public var Group_Setup_TypePrivate: String { return self._s[3455]! }
- public var Login_PadPhoneHelpTitle: String { return self._s[3457]! }
- public var Appearance_ThemeDayClassic: String { return self._s[3458]! }
- public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3459]! }
- public var AutoDownloadSettings_OffForAll: String { return self._s[3460]! }
- public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3461]! }
- public var Conversation_typing: String { return self._s[3463]! }
- public var Paint_Masks: String { return self._s[3464]! }
- public var Contacts_DeselectAll: String { return self._s[3465]! }
- public var Username_InvalidTaken: String { return self._s[3466]! }
- public var Call_StatusNoAnswer: String { return self._s[3467]! }
- public var TwoStepAuth_EmailAddSuccess: String { return self._s[3468]! }
- public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3469]! }
- public var Passport_Identity_Selfie: String { return self._s[3470]! }
- public var Login_InfoLastNamePlaceholder: String { return self._s[3471]! }
- public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3472]! }
- public var Conversation_ClearSecretHistory: String { return self._s[3473]! }
- public var PeopleNearby_Description: String { return self._s[3475]! }
- public var NetworkUsageSettings_Title: String { return self._s[3476]! }
- public var Your_cards_security_code_is_invalid: String { return self._s[3478]! }
+ public func Notification_CreatedChat(_ _0: String) -> (String, [(Int, NSRange)]) {
+ return formatWithArgumentRanges(self._s[3450]!, self._r[3450]!, [_0])
+ }
+ public var Exceptions_AddToExceptions: String { return self._s[3451]! }
+ public var AccessDenied_Settings: String { return self._s[3452]! }
+ public var Passport_Address_TypeUtilityBillUploadScan: String { return self._s[3453]! }
+ public var Month_ShortMay: String { return self._s[3454]! }
+ public var Compose_NewGroup: String { return self._s[3455]! }
+ public var Group_Setup_TypePrivate: String { return self._s[3457]! }
+ public var Login_PadPhoneHelpTitle: String { return self._s[3459]! }
+ public var Appearance_ThemeDayClassic: String { return self._s[3460]! }
+ public var Channel_AdminLog_MessagePreviousCaption: String { return self._s[3461]! }
+ public var AutoDownloadSettings_OffForAll: String { return self._s[3462]! }
+ public var Privacy_GroupsAndChannels_WhoCanAddMe: String { return self._s[3463]! }
+ public var Conversation_typing: String { return self._s[3465]! }
+ public var Paint_Masks: String { return self._s[3466]! }
+ public var Contacts_DeselectAll: String { return self._s[3467]! }
+ public var Username_InvalidTaken: String { return self._s[3468]! }
+ public var Call_StatusNoAnswer: String { return self._s[3469]! }
+ public var TwoStepAuth_EmailAddSuccess: String { return self._s[3470]! }
+ public var SettingsSearch_Synonyms_Privacy_BlockedUsers: String { return self._s[3471]! }
+ public var Passport_Identity_Selfie: String { return self._s[3472]! }
+ public var Login_InfoLastNamePlaceholder: String { return self._s[3473]! }
+ public var Privacy_SecretChatsLinkPreviewsHelp: String { return self._s[3474]! }
+ public var Conversation_ClearSecretHistory: String { return self._s[3475]! }
+ public var PeopleNearby_Description: String { return self._s[3477]! }
+ public var NetworkUsageSettings_Title: String { return self._s[3478]! }
+ public var Your_cards_security_code_is_invalid: String { return self._s[3480]! }
public func Notification_LeftChannel(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3480]!, self._r[3480]!, [_0])
+ return formatWithArgumentRanges(self._s[3482]!, self._r[3482]!, [_0])
}
public func Call_CallInProgressMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3481]!, self._r[3481]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3483]!, self._r[3483]!, [_1, _2])
}
- public var SaveIncomingPhotosSettings_From: String { return self._s[3483]! }
- public var VoiceOver_Navigation_Search: String { return self._s[3484]! }
- public var Map_LiveLocationTitle: String { return self._s[3485]! }
- public var Login_InfoAvatarAdd: String { return self._s[3486]! }
- public var Passport_Identity_FilesView: String { return self._s[3487]! }
- public var UserInfo_GenericPhoneLabel: String { return self._s[3488]! }
- public var Privacy_Calls_NeverAllow: String { return self._s[3489]! }
- public var VoiceOver_Chat_File: String { return self._s[3490]! }
+ public var SaveIncomingPhotosSettings_From: String { return self._s[3485]! }
+ public var VoiceOver_Navigation_Search: String { return self._s[3486]! }
+ public var Map_LiveLocationTitle: String { return self._s[3487]! }
+ public var Login_InfoAvatarAdd: String { return self._s[3488]! }
+ public var Passport_Identity_FilesView: String { return self._s[3489]! }
+ public var UserInfo_GenericPhoneLabel: String { return self._s[3490]! }
+ public var Privacy_Calls_NeverAllow: String { return self._s[3491]! }
+ public var VoiceOver_Chat_File: String { return self._s[3492]! }
public func Contacts_AddPhoneNumber(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3491]!, self._r[3491]!, [_0])
+ return formatWithArgumentRanges(self._s[3493]!, self._r[3493]!, [_0])
}
- public var ContactInfo_PhoneNumberHidden: String { return self._s[3492]! }
- public var TwoStepAuth_ConfirmationText: String { return self._s[3493]! }
- public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3494]! }
+ public var ContactInfo_PhoneNumberHidden: String { return self._s[3494]! }
+ public var TwoStepAuth_ConfirmationText: String { return self._s[3495]! }
+ public var ChatSettings_AutomaticVideoMessageDownload: String { return self._s[3496]! }
public func PUSH_CHAT_MESSAGE_VIDEOS(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3495]!, self._r[3495]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[3497]!, self._r[3497]!, [_1, _2, _3])
}
- public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3496]! }
- public var Tour_Title2: String { return self._s[3497]! }
- public var Conversation_FileOpenIn: String { return self._s[3498]! }
- public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3499]! }
- public var Wallpaper_Set: String { return self._s[3500]! }
- public var Passport_Identity_Translations: String { return self._s[3502]! }
+ public var Channel_AdminLogFilter_AdminsAll: String { return self._s[3498]! }
+ public var Tour_Title2: String { return self._s[3499]! }
+ public var Conversation_FileOpenIn: String { return self._s[3500]! }
+ public var Checkout_ErrorPrecheckoutFailed: String { return self._s[3501]! }
+ public var Wallpaper_Set: String { return self._s[3502]! }
+ public var Passport_Identity_Translations: String { return self._s[3504]! }
public func Channel_AdminLog_MessageChangedChannelAbout(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3503]!, self._r[3503]!, [_0])
+ return formatWithArgumentRanges(self._s[3505]!, self._r[3505]!, [_0])
}
- public var Channel_LeaveChannel: String { return self._s[3504]! }
+ public var Channel_LeaveChannel: String { return self._s[3506]! }
public func PINNED_INVOICE(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3505]!, self._r[3505]!, [_1])
+ return formatWithArgumentRanges(self._s[3507]!, self._r[3507]!, [_1])
}
- public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3507]! }
- public var PhotoEditor_HighlightsTint: String { return self._s[3508]! }
- public var Passport_Email_Delete: String { return self._s[3509]! }
- public var Conversation_Mute: String { return self._s[3511]! }
- public var Channel_AddBotAsAdmin: String { return self._s[3512]! }
- public var Channel_AdminLog_CanSendMessages: String { return self._s[3514]! }
- public var Channel_Management_LabelOwner: String { return self._s[3516]! }
+ public var SettingsSearch_Synonyms_Proxy_AddProxy: String { return self._s[3509]! }
+ public var PhotoEditor_HighlightsTint: String { return self._s[3510]! }
+ public var Passport_Email_Delete: String { return self._s[3511]! }
+ public var Conversation_Mute: String { return self._s[3513]! }
+ public var Channel_AddBotAsAdmin: String { return self._s[3514]! }
+ public var Channel_AdminLog_CanSendMessages: String { return self._s[3516]! }
+ public var Channel_Management_LabelOwner: String { return self._s[3518]! }
public func Notification_PassportValuesSentMessage(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3517]!, self._r[3517]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3519]!, self._r[3519]!, [_1, _2])
}
- public var Calls_CallTabDescription: String { return self._s[3518]! }
- public var Passport_Identity_NativeNameHelp: String { return self._s[3519]! }
- public var Common_No: String { return self._s[3520]! }
- public var Weekday_Sunday: String { return self._s[3521]! }
- public var Notification_Reply: String { return self._s[3522]! }
- public var Conversation_ViewMessage: String { return self._s[3523]! }
+ public var Calls_CallTabDescription: String { return self._s[3520]! }
+ public var Passport_Identity_NativeNameHelp: String { return self._s[3521]! }
+ public var Common_No: String { return self._s[3522]! }
+ public var Weekday_Sunday: String { return self._s[3523]! }
+ public var Notification_Reply: String { return self._s[3524]! }
+ public var Conversation_ViewMessage: String { return self._s[3525]! }
public func Checkout_SavePasswordTimeoutAndFaceId(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3524]!, self._r[3524]!, [_0])
+ return formatWithArgumentRanges(self._s[3526]!, self._r[3526]!, [_0])
}
public func Map_LiveLocationPrivateDescription(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3525]!, self._r[3525]!, [_0])
+ return formatWithArgumentRanges(self._s[3527]!, self._r[3527]!, [_0])
}
- public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3526]! }
- public var Message_PinnedDocumentMessage: String { return self._s[3527]! }
- public var DialogList_TabTitle: String { return self._s[3529]! }
- public var ChatSettings_AutoPlayTitle: String { return self._s[3530]! }
- public var Passport_FieldEmail: String { return self._s[3531]! }
- public var Conversation_UnpinMessageAlert: String { return self._s[3532]! }
- public var Passport_Address_TypeBankStatement: String { return self._s[3533]! }
- public var Passport_Identity_ExpiryDate: String { return self._s[3534]! }
- public var Privacy_Calls_P2P: String { return self._s[3535]! }
+ public var SettingsSearch_Synonyms_EditProfile_AddAccount: String { return self._s[3528]! }
+ public var Message_PinnedDocumentMessage: String { return self._s[3529]! }
+ public var DialogList_TabTitle: String { return self._s[3531]! }
+ public var ChatSettings_AutoPlayTitle: String { return self._s[3532]! }
+ public var Passport_FieldEmail: String { return self._s[3533]! }
+ public var Conversation_UnpinMessageAlert: String { return self._s[3534]! }
+ public var Passport_Address_TypeBankStatement: String { return self._s[3535]! }
+ public var Passport_Identity_ExpiryDate: String { return self._s[3536]! }
+ public var Privacy_Calls_P2P: String { return self._s[3537]! }
public func CancelResetAccount_Success(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3537]!, self._r[3537]!, [_0])
+ return formatWithArgumentRanges(self._s[3539]!, self._r[3539]!, [_0])
}
- public var SocksProxySetup_UseForCallsHelp: String { return self._s[3538]! }
+ public var SocksProxySetup_UseForCallsHelp: String { return self._s[3540]! }
public func PUSH_CHAT_ALBUM(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3539]!, self._r[3539]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3541]!, self._r[3541]!, [_1, _2])
}
- public var Stickers_ClearRecent: String { return self._s[3540]! }
- public var EnterPasscode_ChangeTitle: String { return self._s[3541]! }
- public var Passport_InfoText: String { return self._s[3542]! }
- public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3543]! }
+ public var Stickers_ClearRecent: String { return self._s[3542]! }
+ public var EnterPasscode_ChangeTitle: String { return self._s[3543]! }
+ public var Passport_InfoText: String { return self._s[3544]! }
+ public var Checkout_NewCard_SaveInfoEnableHelp: String { return self._s[3545]! }
public func Login_InvalidPhoneEmailSubject(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3544]!, self._r[3544]!, [_0])
+ return formatWithArgumentRanges(self._s[3546]!, self._r[3546]!, [_0])
}
public func Time_PreciseDate_m3(_ _1: String, _ _2: String, _ _3: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3545]!, self._r[3545]!, [_1, _2, _3])
+ return formatWithArgumentRanges(self._s[3547]!, self._r[3547]!, [_1, _2, _3])
}
- public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3546]! }
- public var VoiceOver_Navigation_Compose: String { return self._s[3547]! }
- public var Passport_Identity_EditDriversLicense: String { return self._s[3548]! }
- public var Conversation_TapAndHoldToRecord: String { return self._s[3550]! }
- public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3551]! }
+ public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChannels: String { return self._s[3548]! }
+ public var VoiceOver_Navigation_Compose: String { return self._s[3549]! }
+ public var Passport_Identity_EditDriversLicense: String { return self._s[3550]! }
+ public var Conversation_TapAndHoldToRecord: String { return self._s[3552]! }
+ public var SettingsSearch_Synonyms_Notifications_BadgeIncludeMutedChats: String { return self._s[3553]! }
public func Notification_CallTimeFormat(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3552]!, self._r[3552]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3554]!, self._r[3554]!, [_1, _2])
}
- public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3554]! }
+ public var Channel_EditAdmin_PermissionInviteViaLink: String { return self._s[3556]! }
public func Generic_OpenHiddenLinkAlert(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3556]!, self._r[3556]!, [_0])
+ return formatWithArgumentRanges(self._s[3558]!, self._r[3558]!, [_0])
}
- public var DialogList_Unread: String { return self._s[3557]! }
+ public var DialogList_Unread: String { return self._s[3559]! }
public func PUSH_CHAT_MESSAGE_GIF(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3558]!, self._r[3558]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3560]!, self._r[3560]!, [_1, _2])
}
- public var User_DeletedAccount: String { return self._s[3559]! }
- public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3560]! }
+ public var User_DeletedAccount: String { return self._s[3561]! }
+ public var OwnershipTransfer_SetupTwoStepAuth: String { return self._s[3562]! }
public func Watch_Time_ShortYesterdayAt(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3561]!, self._r[3561]!, [_0])
+ return formatWithArgumentRanges(self._s[3563]!, self._r[3563]!, [_0])
}
- public var UserInfo_NotificationsDefault: String { return self._s[3562]! }
- public var SharedMedia_CategoryMedia: String { return self._s[3563]! }
- public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3564]! }
- public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3565]! }
- public var Watch_ChatList_Compose: String { return self._s[3566]! }
- public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3567]! }
- public var AutoDownloadSettings_Delimeter: String { return self._s[3568]! }
- public var Watch_Microphone_Access: String { return self._s[3569]! }
- public var Group_Setup_HistoryHeader: String { return self._s[3570]! }
- public var Map_SetThisLocation: String { return self._s[3571]! }
- public var Activity_UploadingPhoto: String { return self._s[3572]! }
- public var Conversation_Edit: String { return self._s[3574]! }
- public var Group_ErrorSendRestrictedMedia: String { return self._s[3575]! }
- public var Login_TermsOfServiceDecline: String { return self._s[3576]! }
- public var Message_PinnedContactMessage: String { return self._s[3577]! }
+ public var UserInfo_NotificationsDefault: String { return self._s[3564]! }
+ public var SharedMedia_CategoryMedia: String { return self._s[3565]! }
+ public var SocksProxySetup_ProxyStatusUnavailable: String { return self._s[3566]! }
+ public var Channel_AdminLog_MessageRestrictedForever: String { return self._s[3567]! }
+ public var Watch_ChatList_Compose: String { return self._s[3568]! }
+ public var Notifications_MessageNotificationsExceptionsHelp: String { return self._s[3569]! }
+ public var AutoDownloadSettings_Delimeter: String { return self._s[3570]! }
+ public var Watch_Microphone_Access: String { return self._s[3571]! }
+ public var Group_Setup_HistoryHeader: String { return self._s[3572]! }
+ public var Map_SetThisLocation: String { return self._s[3573]! }
+ public var Activity_UploadingPhoto: String { return self._s[3574]! }
+ public var Conversation_Edit: String { return self._s[3576]! }
+ public var Group_ErrorSendRestrictedMedia: String { return self._s[3577]! }
+ public var Login_TermsOfServiceDecline: String { return self._s[3578]! }
+ public var Message_PinnedContactMessage: String { return self._s[3579]! }
public func Channel_AdminLog_MessageRestrictedNameUsername(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3578]!, self._r[3578]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3580]!, self._r[3580]!, [_1, _2])
}
public func Login_PhoneBannedEmailBody(_ _1: String, _ _2: String, _ _3: String, _ _4: String, _ _5: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3579]!, self._r[3579]!, [_1, _2, _3, _4, _5])
+ return formatWithArgumentRanges(self._s[3581]!, self._r[3581]!, [_1, _2, _3, _4, _5])
}
- public var Appearance_LargeEmoji: String { return self._s[3580]! }
- public var TwoStepAuth_AdditionalPassword: String { return self._s[3582]! }
+ public var Appearance_LargeEmoji: String { return self._s[3582]! }
+ public var TwoStepAuth_AdditionalPassword: String { return self._s[3584]! }
public func PUSH_CHAT_DELETE_YOU(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3583]!, self._r[3583]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3585]!, self._r[3585]!, [_1, _2])
}
- public var Passport_Phone_EnterOtherNumber: String { return self._s[3584]! }
- public var Message_PinnedPhotoMessage: String { return self._s[3585]! }
- public var Passport_FieldPhone: String { return self._s[3586]! }
- public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3587]! }
- public var ChatSettings_AutoPlayGifs: String { return self._s[3588]! }
- public var InfoPlist_NSCameraUsageDescription: String { return self._s[3590]! }
- public var Conversation_Call: String { return self._s[3591]! }
- public var Common_TakePhoto: String { return self._s[3593]! }
- public var Group_EditAdmin_RankTitle: String { return self._s[3594]! }
- public var Channel_NotificationLoading: String { return self._s[3595]! }
+ public var Passport_Phone_EnterOtherNumber: String { return self._s[3586]! }
+ public var Message_PinnedPhotoMessage: String { return self._s[3587]! }
+ public var Passport_FieldPhone: String { return self._s[3588]! }
+ public var TwoStepAuth_RecoveryEmailAddDescription: String { return self._s[3589]! }
+ public var ChatSettings_AutoPlayGifs: String { return self._s[3590]! }
+ public var InfoPlist_NSCameraUsageDescription: String { return self._s[3592]! }
+ public var Conversation_Call: String { return self._s[3593]! }
+ public var Common_TakePhoto: String { return self._s[3595]! }
+ public var Group_EditAdmin_RankTitle: String { return self._s[3596]! }
+ public var Channel_NotificationLoading: String { return self._s[3597]! }
public func Notification_Exceptions_Sound(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3596]!, self._r[3596]!, [_0])
+ return formatWithArgumentRanges(self._s[3598]!, self._r[3598]!, [_0])
}
public func ScheduledMessages_ScheduledDate(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3597]!, self._r[3597]!, [_0])
+ return formatWithArgumentRanges(self._s[3599]!, self._r[3599]!, [_0])
}
public func PUSH_CHANNEL_MESSAGE_VIDEO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3598]!, self._r[3598]!, [_1])
+ return formatWithArgumentRanges(self._s[3600]!, self._r[3600]!, [_1])
}
- public var Permissions_SiriTitle_v0: String { return self._s[3599]! }
+ public var Permissions_SiriTitle_v0: String { return self._s[3601]! }
public func VoiceOver_Chat_VoiceMessageFrom(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3600]!, self._r[3600]!, [_0])
+ return formatWithArgumentRanges(self._s[3602]!, self._r[3602]!, [_0])
}
public func Login_ResetAccountProtected_Text(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3601]!, self._r[3601]!, [_0])
+ return formatWithArgumentRanges(self._s[3603]!, self._r[3603]!, [_0])
}
- public var Channel_MessagePhotoRemoved: String { return self._s[3602]! }
- public var Common_edit: String { return self._s[3603]! }
- public var PrivacySettings_AuthSessions: String { return self._s[3604]! }
- public var Month_ShortJune: String { return self._s[3605]! }
- public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3606]! }
- public var Call_ReportSend: String { return self._s[3607]! }
- public var Watch_LastSeen_JustNow: String { return self._s[3608]! }
- public var Notifications_MessageNotifications: String { return self._s[3609]! }
- public var WallpaperSearch_ColorGreen: String { return self._s[3610]! }
- public var BroadcastListInfo_AddRecipient: String { return self._s[3612]! }
- public var Group_Status: String { return self._s[3613]! }
+ public var Channel_MessagePhotoRemoved: String { return self._s[3604]! }
+ public var Common_edit: String { return self._s[3605]! }
+ public var PrivacySettings_AuthSessions: String { return self._s[3606]! }
+ public var Month_ShortJune: String { return self._s[3607]! }
+ public var PrivacyLastSeenSettings_AlwaysShareWith_Placeholder: String { return self._s[3608]! }
+ public var Call_ReportSend: String { return self._s[3609]! }
+ public var Watch_LastSeen_JustNow: String { return self._s[3610]! }
+ public var Notifications_MessageNotifications: String { return self._s[3611]! }
+ public var WallpaperSearch_ColorGreen: String { return self._s[3612]! }
+ public var BroadcastListInfo_AddRecipient: String { return self._s[3614]! }
+ public var Group_Status: String { return self._s[3615]! }
public func AutoNightTheme_LocationHelp(_ _0: String, _ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3614]!, self._r[3614]!, [_0, _1])
+ return formatWithArgumentRanges(self._s[3616]!, self._r[3616]!, [_0, _1])
}
- public var TextFormat_AddLinkTitle: String { return self._s[3615]! }
- public var ShareMenu_ShareTo: String { return self._s[3616]! }
- public var Conversation_Moderate_Ban: String { return self._s[3617]! }
+ public var TextFormat_AddLinkTitle: String { return self._s[3617]! }
+ public var ShareMenu_ShareTo: String { return self._s[3618]! }
+ public var Conversation_Moderate_Ban: String { return self._s[3619]! }
public func Conversation_DeleteMessagesFor(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3618]!, self._r[3618]!, [_0])
+ return formatWithArgumentRanges(self._s[3620]!, self._r[3620]!, [_0])
}
- public var SharedMedia_ViewInChat: String { return self._s[3619]! }
- public var Map_LiveLocationFor8Hours: String { return self._s[3620]! }
+ public var SharedMedia_ViewInChat: String { return self._s[3621]! }
+ public var Map_LiveLocationFor8Hours: String { return self._s[3622]! }
public func PUSH_PINNED_PHOTO(_ _1: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3621]!, self._r[3621]!, [_1])
+ return formatWithArgumentRanges(self._s[3623]!, self._r[3623]!, [_1])
}
public func PUSH_PINNED_POLL(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3622]!, self._r[3622]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3624]!, self._r[3624]!, [_1, _2])
}
public func Map_AccurateTo(_ _0: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3624]!, self._r[3624]!, [_0])
+ return formatWithArgumentRanges(self._s[3626]!, self._r[3626]!, [_0])
}
- public var Map_OpenInHereMaps: String { return self._s[3625]! }
- public var Appearance_ReduceMotion: String { return self._s[3626]! }
+ public var Map_OpenInHereMaps: String { return self._s[3627]! }
+ public var Appearance_ReduceMotion: String { return self._s[3628]! }
public func PUSH_MESSAGE_TEXT(_ _1: String, _ _2: String) -> (String, [(Int, NSRange)]) {
- return formatWithArgumentRanges(self._s[3627]!, self._r[3627]!, [_1, _2])
+ return formatWithArgumentRanges(self._s[3629]!, self._r[3629]!, [_1, _2])
}
- public var Channel_Setup_TypePublicHelp: String { return self._s[3628]! }
- public var Passport_Identity_EditInternalPassport: String { return self._s[3629]! }
- public var PhotoEditor_Skip: String { return self._s[3630]! }
- public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String {
+ public var Channel_Setup_TypePublicHelp: String { return self._s[3630]! }
+ public var Passport_Identity_EditInternalPassport: String { return self._s[3631]! }
+ public var PhotoEditor_Skip: String { return self._s[3632]! }
+ public func Media_ShareItem(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[0 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String {
+ public func Conversation_SelectedMessages(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[1 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func Media_ShareItem(_ value: Int32) -> String {
+ public func ForwardedContacts(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[2 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func ForwardedVideos(_ value: Int32) -> String {
+ public func StickerPack_StickerCount(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[3 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, _1, _2)
+ public func MuteFor_Days(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[4 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func SharedMedia_Photo(_ value: Int32) -> String {
+ public func ForwardedLocations(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[5 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func ForwardedStickers(_ value: Int32) -> String {
+ public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[6 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func AttachmentMenu_SendItem(_ value: Int32) -> String {
+ public func MuteFor_Hours(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[7 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String {
+ public func MessageTimer_Months(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[8 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String {
+ public func MessageTimer_Years(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[9 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MuteExpires_Minutes(_ value: Int32) -> String {
+ public func Media_ShareVideo(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[10 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MessageTimer_Seconds(_ value: Int32) -> String {
+ public func UserCount(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[11 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, _2, _1, _3)
+ public func MuteExpires_Days(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[12 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func SharedMedia_File(_ value: Int32) -> String {
+ public func InviteText_ContactsCountText(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[13 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[14 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MessageTimer_ShortDays(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func StickerPack_RemoveMaskCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, _2, _1, _3)
- }
- public func ForwardedContacts(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func VoiceOver_Chat_ContactEmailCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MessageTimer_Years(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func SharedMedia_Video(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Watch_UserInfo_Mute(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Notification_GameScoreSelfExtended(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func LastSeen_HoursAgo(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Call_ShortMinutes(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MessageTimer_ShortSeconds(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, _0, _1)
- }
- public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func StickerPack_AddStickerCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func Notification_GameScoreExtended(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func Media_SharePhoto(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Invitation_Members(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Notification_GameScoreSelfSimple(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MessageTimer_ShortWeeks(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func UserCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MessageTimer_ShortHours(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func AttachmentMenu_SendPhoto(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ChatList_SelectedChats(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Notification_GameScoreSimple(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func SharedMedia_Link(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MessagePoll_VotedCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[15 * 6 + Int(form.rawValue)]!, _1, _2)
}
public func ForwardedPhotos(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[16 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func AttachmentMenu_SendGif(_ value: Int32) -> String {
+ public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[17 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, _1, _2)
+ return String(format: self._ps[18 * 6 + Int(form.rawValue)]!, _2, _1, _3)
+ }
+ public func ServiceMessage_GameScoreSelfExtended(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[19 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[20 * 6 + Int(form.rawValue)]!, _2, _1, _3)
+ }
+ public func Wallpaper_DeleteConfirmation(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[21 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MuteExpires_Minutes(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[22 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Forward_ConfirmMultipleFiles(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[23 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_Seconds(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[24 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Notifications_ExceptionMuteExpires_Hours(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[25 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Passport_Scans(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[26 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func SharedMedia_Photo(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[27 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHANNEL_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[28 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func ForwardedMessages(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[29 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ForwardedVideos(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[30 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHAT_MESSAGES(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[31 * 6 + Int(form.rawValue)]!, _2, _1, _3)
+ }
+ public func ForwardedStickers(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[32 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[33 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MuteExpires_Hours(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[34 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func StickerPack_AddMaskCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[35 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func StickerPack_AddStickerCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[36 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_Weeks(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[37 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Notification_GameScoreSelfExtended(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[38 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ServiceMessage_GameScoreExtended(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[39 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func VoiceOver_Chat_ContactPhoneNumberCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[40 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ForwardedFiles(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[41 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[42 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[43 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[44 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func GroupInfo_ParticipantCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[45 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[46 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[47 * 6 + Int(form.rawValue)]!, _1, _2)
}
public func LiveLocation_MenuChatsCount(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[48 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func Watch_LastSeen_HoursAgo(_ value: Int32) -> String {
+ public func ChatList_DeleteConfirmation(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[49 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
+ public func Notifications_Exceptions(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[50 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func LastSeen_HoursAgo(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[51 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Notification_GameScoreSimple(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[52 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Call_Minutes(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[53 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func LastSeen_MinutesAgo(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[54 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Watch_UserInfo_Mute(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[55 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ForwardedAuthorsOthers(_ selector: Int32, _ _0: String, _ _1: String) -> String {
let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, _2, _1, _3)
+ return String(format: self._ps[56 * 6 + Int(form.rawValue)]!, _0, _1)
}
- public func Map_ETAHours(_ value: Int32) -> String {
+ public func ForwardedGifs(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[57 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func StickerPack_RemoveMaskCount(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[58 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MessageTimer_Days(_ value: Int32) -> String {
+ public func Invitation_Members(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[59 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func Map_ETAMinutes(_ value: Int32) -> String {
+ public func LiveLocationUpdated_MinutesAgo(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[60 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func StickerPack_StickerCount(_ value: Int32) -> String {
+ public func MessageTimer_Days(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[61 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MessageTimer_Months(_ value: Int32) -> String {
+ public func MessageTimer_Minutes(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[62 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func SharedMedia_Generic(_ value: Int32) -> String {
+ public func Notifications_ExceptionMuteExpires_Days(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[63 * 6 + Int(form.rawValue)]!, stringValue)
@@ -4445,235 +4447,235 @@ public final class PresentationStrings {
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[64 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func Passport_Scans(_ value: Int32) -> String {
+ public func Notification_GameScoreExtended(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[65 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func Conversation_StatusOnline(_ value: Int32) -> String {
+ public func Call_ShortMinutes(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[66 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MessageTimer_ShortMinutes(_ value: Int32) -> String {
+ public func SharedMedia_File(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[67 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MessageTimer_Weeks(_ value: Int32) -> String {
+ public func ServiceMessage_GameScoreSimple(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[68 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MuteFor_Days(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ChatList_DeleteConfirmation(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func QuickSend_Photos(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MuteExpires_Days(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Call_ShortSeconds(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func AttachmentMenu_SendVideo(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ public func PUSH_CHAT_MESSAGE_PHOTOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func InviteText_ContactsCountText(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MuteExpires_Hours(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Watch_LastSeen_MinutesAgo(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Chat_DeleteMessagesConfirmation(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func StickerPack_AddMaskCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ForwardedVideoMessages(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Call_Minutes(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func PUSH_CHANNEL_MESSAGE_PHOTOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func Conversation_LiveLocationMembersCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ForwardedLocations(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func GroupInfo_ParticipantCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ForwardedFiles(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Media_ShareVideo(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func ForwardedGifs(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_CHAT_MESSAGE_FWDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, _2, _1, _3)
- }
- public func Contacts_ImportersCount(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Conversation_StatusSubscribers(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Conversation_SelectedMessages(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Notifications_Exceptions(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func LastSeen_MinutesAgo(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_CHANNEL_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, _1, _2)
- }
- public func MessageTimer_Minutes(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func MuteFor_Hours(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Conversation_StatusMembers(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func Call_Seconds(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PasscodeSettings_FailedAttempts(_ value: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, value)
- let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue)
- }
- public func PUSH_CHAT_MESSAGE_VIDEOS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
- let form = presentationStringsPluralizationForm(self.lc, selector)
- return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, _2, _1, _3)
+ return String(format: self._ps[69 * 6 + Int(form.rawValue)]!, _2, _1, _3)
}
public func CreatePoll_AddMoreOptions(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[70 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func MessageTimer_Hours(_ value: Int32) -> String {
+ public func PUSH_MESSAGES(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[71 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func PrivacyLastSeenSettings_AddUsers(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[72 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func ForwardedMessages(_ value: Int32) -> String {
+ public func SharedMedia_Video(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[73 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func SharedMedia_Generic(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[74 * 6 + Int(form.rawValue)]!, stringValue)
}
public func SharedMedia_DeleteItemsConfirmation(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
- return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue)
+ return String(format: self._ps[75 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_ShortHours(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[76 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func QuickSend_Photos(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[77 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[78 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func Call_Seconds(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[79 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Call_ShortSeconds(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[80 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Map_ETAMinutes(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[81 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Contacts_ImportersCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[82 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_ShortWeeks(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[83 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func AttachmentMenu_SendItem(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[84 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ForwardedPolls(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[85 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHANNEL_MESSAGE_VIDEOS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[86 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func AttachmentMenu_SendPhoto(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[87 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Conversation_StatusOnline(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[88 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ServiceMessage_GameScoreSelfSimple(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[89 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Map_ETAHours(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[90 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessagePoll_VotedCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[91 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Media_SharePhoto(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[92 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func AttachmentMenu_SendVideo(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[93 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func VoiceOver_Chat_PollVotes(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[94 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHAT_MESSAGE_ROUNDS(_ selector: Int32, _ _2: String, _ _1: String, _ _3: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[95 * 6 + Int(form.rawValue)]!, _2, _1, _3)
+ }
+ public func AttachmentMenu_SendGif(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[96 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func Notifications_ExceptionMuteExpires_Minutes(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[97 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_CHANNEL_MESSAGE_ROUNDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[98 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func Conversation_StatusSubscribers(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[99 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func DialogList_LiveLocationChatsCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[100 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func VoiceOver_Chat_PollOptionCount(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[101 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_ShortMinutes(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[102 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func PUSH_MESSAGE_FWDS(_ selector: Int32, _ _1: String, _ _2: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, selector)
+ return String(format: self._ps[103 * 6 + Int(form.rawValue)]!, _1, _2)
+ }
+ public func Conversation_StatusMembers(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[104 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_ShortSeconds(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[105 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_Hours(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[106 * 6 + Int(form.rawValue)]!, stringValue)
}
public func ForwardedAudios(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[107 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func MessageTimer_ShortDays(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[108 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ChatList_SelectedChats(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[109 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func SharedMedia_Link(_ value: Int32) -> String {
+ let form = presentationStringsPluralizationForm(self.lc, value)
+ let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
+ return String(format: self._ps[110 * 6 + Int(form.rawValue)]!, stringValue)
+ }
+ public func ForwardedVideoMessages(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[111 * 6 + Int(form.rawValue)]!, stringValue)
}
- public func ForwardedPolls(_ value: Int32) -> String {
+ public func Notification_GameScoreSelfSimple(_ value: Int32) -> String {
let form = presentationStringsPluralizationForm(self.lc, value)
let stringValue = presentationStringsFormattedNumber(value, self.groupingSeparator)
return String(format: self._ps[112 * 6 + Int(form.rawValue)]!, stringValue)
diff --git a/submodules/TelegramPresentationData/Sources/PresentationThemeEssentialGraphics.swift b/submodules/TelegramPresentationData/Sources/PresentationThemeEssentialGraphics.swift
index dd8f3bbd2b..cdebca34cd 100644
--- a/submodules/TelegramPresentationData/Sources/PresentationThemeEssentialGraphics.swift
+++ b/submodules/TelegramPresentationData/Sources/PresentationThemeEssentialGraphics.swift
@@ -174,9 +174,13 @@ public final class PrincipalThemeEssentialGraphics {
var outgoingGradientColors: (UIColor, UIColor)?
if let baseColor = presentationTheme.baseColor {
- let colors = baseColor.outgoingGradientColors
- if !colors.0.isEqual(colors.1) {
- outgoingGradientColors = colors
+ if presentationTheme.baseColor == .custom {
+
+ } else [
+ let colors = baseColor.outgoingGradientColors
+ if !colors.0.isEqual(colors.1) {
+ outgoingGradientColors = colors
+ }
}
}
if let outgoingGradientColors = outgoingGradientColors {
diff --git a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift
index 4f5c3f7f14..7f14099b91 100644
--- a/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift
+++ b/submodules/TelegramUI/TelegramUI/ChannelInfoController.swift
@@ -16,6 +16,7 @@ import ShareController
import AlertUI
import GalleryUI
import LegacyUI
+import ChatListUI
private final class ChannelInfoControllerArguments {
let account: Account
diff --git a/submodules/TelegramUI/TelegramUI/ChatController.swift b/submodules/TelegramUI/TelegramUI/ChatController.swift
index bf2a675b4c..f4b50b4c8f 100644
--- a/submodules/TelegramUI/TelegramUI/ChatController.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatController.swift
@@ -34,6 +34,7 @@ import LegacyUI
import InstantPageUI
import LocationUI
import BotPaymentsUI
+import DeleteChatPeerActionSheetItem
public enum ChatControllerPeekActions {
case standard
@@ -256,6 +257,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
private weak var slowmodeTooltipController: ChatSlowmodeHintController?
+ private weak var currentContextController: ContextController?
+
private weak var sendMessageActionsController: ChatSendMessageActionSheetController?
private var screenCaptureEventsDisposable: Disposable?
@@ -544,7 +547,9 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
f(.dismissWithoutContent)
})), at: 0)
}
- strongSelf.window?.presentInGlobalOverlay(ContextController(theme: strongSelf.presentationData.theme, strings: strongSelf.presentationData.strings, source: ChatMessageContextControllerContentSource(chatNode: strongSelf.chatDisplayNode, message: message), items: actions, recognizer: recognizer))
+ let controller = ContextController(theme: strongSelf.presentationData.theme, strings: strongSelf.presentationData.strings, source: ChatMessageContextControllerContentSource(chatNode: strongSelf.chatDisplayNode, message: message), items: actions, recognizer: recognizer)
+ strongSelf.currentContextController = controller
+ strongSelf.window?.presentInGlobalOverlay(controller)
})
}
}, navigateToMessage: { [weak self] fromId, id in
@@ -1003,6 +1008,8 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
self?.present(controller, in: .window(.root), with: arguments)
}, navigationController: { [weak self] in
return self?.navigationController as? NavigationController
+ }, chatControllerNode: { [weak self] in
+ return self?.chatDisplayNode
}, presentGlobalOverlayController: { [weak self] controller, arguments in
self?.presentInGlobalOverlay(controller, with: arguments)
}, callPeer: { [weak self] peerId in
@@ -1320,13 +1327,13 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
})
}, addContact: { [weak self] phoneNumber in
if let strongSelf = self {
- openAddContact(context: strongSelf.context, phoneNumber: phoneNumber, present: { [weak self] controller, arguments in
+ strongSelf.context.sharedContext.openAddContact(context: strongSelf.context, firstName: "", lastName: "", phoneNumber: phoneNumber, label: defaultContactLabel, present: { [weak self] controller, arguments in
self?.present(controller, in: .window(.root), with: arguments)
}, pushController: { [weak self] controller in
if let strongSelf = self {
(strongSelf.navigationController as? NavigationController)?.pushViewController(controller)
}
- })
+ }, completed: {})
}
}, rateCall: { [weak self] message, callId in
if let strongSelf = self {
@@ -1484,6 +1491,37 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
strongSelf.chatDisplayNode.dismissInput()
strongSelf.present(controller, in: .window(.root))
}
+ }, performTextSelectionAction: { [weak self] _, text, action in
+ guard let strongSelf = self else {
+ return
+ }
+ switch action {
+ case .copy:
+ UIPasteboard.general.string = text
+ case .share:
+ let f = {
+ guard let strongSelf = self else {
+ return
+ }
+ let shareController = ShareController(context: strongSelf.context, subject: .text(text), externalShare: true, immediateExternalShare: false)
+ strongSelf.chatDisplayNode.dismissInput()
+ strongSelf.present(shareController, in: .window(.root))
+ }
+ if let currentContextController = strongSelf.currentContextController {
+ currentContextController.dismiss(completion: {
+ f()
+ })
+ } else {
+ f()
+ }
+ case .lookup:
+ let controller = UIReferenceLibraryViewController(term: text)
+ if let window = strongSelf.navigationController?.view.window {
+ controller.popoverPresentationController?.sourceView = window
+ controller.popoverPresentationController?.sourceRect = CGRect(origin: CGPoint(x: window.bounds.width / 2.0, y: window.bounds.size.height - 1.0), size: CGSize(width: 1.0, height: 1.0))
+ window.rootViewController?.present(controller, animated: true)
+ }
+ }
}, requestMessageUpdate: { [weak self] id in
if let strongSelf = self {
strongSelf.chatDisplayNode.historyNode.requestMessageUpdate(id)
@@ -4817,7 +4855,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
guard let strongSelf = self else {
return
}
- strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: strongSelf.presentationData.theme), title: nil, text: strongSelf.presentationData.strings.Chat_AttachmentLimitExceeded, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root))
+ strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: strongSelf.presentationData.theme), title: nil, text: strongSelf.presentationData.strings.Chat_AttachmentLimitReached, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root))
}, presentCantSendMultipleFiles: {
guard let strongSelf = self else {
return
@@ -4949,7 +4987,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
return
}
let inputText = strongSelf.presentationInterfaceState.interfaceState.effectiveInputState.inputText
- var selectionLimit: Int = 30
+ var selectionLimit: Int = 100
if let channel = peer as? TelegramChannel, channel.isRestrictedBySlowmode {
selectionLimit = 10
}
@@ -4987,7 +5025,7 @@ public final class ChatControllerImpl: TelegramBaseController, ChatController, G
guard let strongSelf = self else {
return
}
- strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: strongSelf.presentationData.theme), title: nil, text: strongSelf.presentationData.strings.Chat_AttachmentLimitExceeded, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root))
+ strongSelf.present(standardTextAlertController(theme: AlertControllerTheme(presentationTheme: strongSelf.presentationData.theme), title: nil, text: strongSelf.presentationData.strings.Chat_AttachmentLimitReached, actions: [TextAlertAction(type: .defaultAction, title: strongSelf.presentationData.strings.Common_OK, action: {})]), in: .window(.root))
})
controller.descriptionGenerator = legacyAssetPickerItemGenerator()
controller.completionBlock = { [weak legacyController] signals, silentPosting in
diff --git a/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift b/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift
index 5f3641b92e..7a6a586e2d 100644
--- a/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatControllerInteraction.swift
@@ -6,6 +6,7 @@ import TelegramCore
import Display
import TelegramUIPreferences
import AccountContext
+import TextSelectionNode
struct ChatInterfaceHighlightedState: Equatable {
let messageStableId: UInt32
@@ -71,6 +72,7 @@ public final class ChatControllerInteraction {
let openMessageShareMenu: (MessageId) -> Void
let presentController: (ViewController, Any?) -> Void
let navigationController: () -> NavigationController?
+ let chatControllerNode: () -> ASDisplayNode?
let presentGlobalOverlayController: (ViewController, Any?) -> Void
let callPeer: (PeerId) -> Void
let longTap: (ChatControllerInteractionLongTapAction, Message?) -> Void
@@ -89,6 +91,7 @@ public final class ChatControllerInteraction {
let scheduleCurrentMessage: () -> Void
let sendScheduledMessagesNow: ([MessageId]) -> Void
let editScheduledMessagesTime: ([MessageId]) -> Void
+ let performTextSelectionAction: (UInt32, String, TextSelectionAction) -> Void
let requestMessageUpdate: (MessageId) -> Void
let cancelInteractiveKeyboardGestures: () -> Void
@@ -103,7 +106,7 @@ public final class ChatControllerInteraction {
var searchTextHighightState: String?
var seenOneTimeAnimatedMedia = Set()
- init(openMessage: @escaping (Message, ChatControllerInteractionOpenMessageMode) -> Bool, openPeer: @escaping (PeerId?, ChatControllerInteractionNavigateToPeer, Message?) -> Void, openPeerMention: @escaping (String) -> Void, openMessageContextMenu: @escaping (Message, Bool, ASDisplayNode, CGRect, TapLongTapOrDoubleTapGestureRecognizer?) -> Void, navigateToMessage: @escaping (MessageId, MessageId) -> Void, clickThroughMessage: @escaping () -> Void, toggleMessagesSelection: @escaping ([MessageId], Bool) -> Void, sendCurrentMessage: @escaping (Bool) -> Void, sendMessage: @escaping (String) -> Void, sendSticker: @escaping (FileMediaReference, Bool, ASDisplayNode, CGRect) -> Bool, sendGif: @escaping (FileMediaReference, ASDisplayNode, CGRect) -> Bool, requestMessageActionCallback: @escaping (MessageId, MemoryBuffer?, Bool) -> Void, requestMessageActionUrlAuth: @escaping (String, MessageId, Int32) -> Void, activateSwitchInline: @escaping (PeerId?, String) -> Void, openUrl: @escaping (String, Bool, Bool?) -> Void, shareCurrentLocation: @escaping () -> Void, shareAccountContact: @escaping () -> Void, sendBotCommand: @escaping (MessageId?, String) -> Void, openInstantPage: @escaping (Message, ChatMessageItemAssociatedData?) -> Void, openWallpaper: @escaping (Message) -> Void, openHashtag: @escaping (String?, String) -> Void, updateInputState: @escaping ((ChatTextInputState) -> ChatTextInputState) -> Void, updateInputMode: @escaping ((ChatInputMode) -> ChatInputMode) -> Void, openMessageShareMenu: @escaping (MessageId) -> Void, presentController: @escaping (ViewController, Any?) -> Void, navigationController: @escaping () -> NavigationController?, presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void, callPeer: @escaping (PeerId) -> Void, longTap: @escaping (ChatControllerInteractionLongTapAction, Message?) -> Void, openCheckoutOrReceipt: @escaping (MessageId) -> Void, openSearch: @escaping () -> Void, setupReply: @escaping (MessageId) -> Void, canSetupReply: @escaping (Message) -> Bool, navigateToFirstDateMessage: @escaping(Int32) ->Void, requestRedeliveryOfFailedMessages: @escaping (MessageId) -> Void, addContact: @escaping (String) -> Void, rateCall: @escaping (Message, CallId) -> Void, requestSelectMessagePollOption: @escaping (MessageId, Data) -> Void, openAppStorePage: @escaping () -> Void, displayMessageTooltip: @escaping (MessageId, String, ASDisplayNode?, CGRect?) -> Void, seekToTimecode: @escaping (Message, Double, Bool) -> Void, scheduleCurrentMessage: @escaping () -> Void, sendScheduledMessagesNow: @escaping ([MessageId]) -> Void, editScheduledMessagesTime: @escaping ([MessageId]) -> Void, requestMessageUpdate: @escaping (MessageId) -> Void, cancelInteractiveKeyboardGestures: @escaping () -> Void, automaticMediaDownloadSettings: MediaAutoDownloadSettings, pollActionState: ChatInterfacePollActionState, stickerSettings: ChatInterfaceStickerSettings) {
+ init(openMessage: @escaping (Message, ChatControllerInteractionOpenMessageMode) -> Bool, openPeer: @escaping (PeerId?, ChatControllerInteractionNavigateToPeer, Message?) -> Void, openPeerMention: @escaping (String) -> Void, openMessageContextMenu: @escaping (Message, Bool, ASDisplayNode, CGRect, TapLongTapOrDoubleTapGestureRecognizer?) -> Void, navigateToMessage: @escaping (MessageId, MessageId) -> Void, clickThroughMessage: @escaping () -> Void, toggleMessagesSelection: @escaping ([MessageId], Bool) -> Void, sendCurrentMessage: @escaping (Bool) -> Void, sendMessage: @escaping (String) -> Void, sendSticker: @escaping (FileMediaReference, Bool, ASDisplayNode, CGRect) -> Bool, sendGif: @escaping (FileMediaReference, ASDisplayNode, CGRect) -> Bool, requestMessageActionCallback: @escaping (MessageId, MemoryBuffer?, Bool) -> Void, requestMessageActionUrlAuth: @escaping (String, MessageId, Int32) -> Void, activateSwitchInline: @escaping (PeerId?, String) -> Void, openUrl: @escaping (String, Bool, Bool?) -> Void, shareCurrentLocation: @escaping () -> Void, shareAccountContact: @escaping () -> Void, sendBotCommand: @escaping (MessageId?, String) -> Void, openInstantPage: @escaping (Message, ChatMessageItemAssociatedData?) -> Void, openWallpaper: @escaping (Message) -> Void, openHashtag: @escaping (String?, String) -> Void, updateInputState: @escaping ((ChatTextInputState) -> ChatTextInputState) -> Void, updateInputMode: @escaping ((ChatInputMode) -> ChatInputMode) -> Void, openMessageShareMenu: @escaping (MessageId) -> Void, presentController: @escaping (ViewController, Any?) -> Void, navigationController: @escaping () -> NavigationController?, chatControllerNode: @escaping () -> ASDisplayNode?, presentGlobalOverlayController: @escaping (ViewController, Any?) -> Void, callPeer: @escaping (PeerId) -> Void, longTap: @escaping (ChatControllerInteractionLongTapAction, Message?) -> Void, openCheckoutOrReceipt: @escaping (MessageId) -> Void, openSearch: @escaping () -> Void, setupReply: @escaping (MessageId) -> Void, canSetupReply: @escaping (Message) -> Bool, navigateToFirstDateMessage: @escaping(Int32) ->Void, requestRedeliveryOfFailedMessages: @escaping (MessageId) -> Void, addContact: @escaping (String) -> Void, rateCall: @escaping (Message, CallId) -> Void, requestSelectMessagePollOption: @escaping (MessageId, Data) -> Void, openAppStorePage: @escaping () -> Void, displayMessageTooltip: @escaping (MessageId, String, ASDisplayNode?, CGRect?) -> Void, seekToTimecode: @escaping (Message, Double, Bool) -> Void, scheduleCurrentMessage: @escaping () -> Void, sendScheduledMessagesNow: @escaping ([MessageId]) -> Void, editScheduledMessagesTime: @escaping ([MessageId]) -> Void, performTextSelectionAction: @escaping (UInt32, String, TextSelectionAction) -> Void, requestMessageUpdate: @escaping (MessageId) -> Void, cancelInteractiveKeyboardGestures: @escaping () -> Void, automaticMediaDownloadSettings: MediaAutoDownloadSettings, pollActionState: ChatInterfacePollActionState, stickerSettings: ChatInterfaceStickerSettings) {
self.openMessage = openMessage
self.openPeer = openPeer
self.openPeerMention = openPeerMention
@@ -130,6 +133,7 @@ public final class ChatControllerInteraction {
self.openMessageShareMenu = openMessageShareMenu
self.presentController = presentController
self.navigationController = navigationController
+ self.chatControllerNode = chatControllerNode
self.presentGlobalOverlayController = presentGlobalOverlayController
self.callPeer = callPeer
self.longTap = longTap
@@ -148,6 +152,7 @@ public final class ChatControllerInteraction {
self.scheduleCurrentMessage = scheduleCurrentMessage
self.sendScheduledMessagesNow = sendScheduledMessagesNow
self.editScheduledMessagesTime = editScheduledMessagesTime
+ self.performTextSelectionAction = performTextSelectionAction
self.requestMessageUpdate = requestMessageUpdate
self.cancelInteractiveKeyboardGestures = cancelInteractiveKeyboardGestures
@@ -163,6 +168,8 @@ public final class ChatControllerInteraction {
return false }, openPeer: { _, _, _ in }, openPeerMention: { _ in }, openMessageContextMenu: { _, _, _, _, _ in }, navigateToMessage: { _, _ in }, clickThroughMessage: { }, toggleMessagesSelection: { _, _ in }, sendCurrentMessage: { _ in }, sendMessage: { _ in }, sendSticker: { _, _, _, _ in return false }, sendGif: { _, _, _ in return false }, requestMessageActionCallback: { _, _, _ in }, requestMessageActionUrlAuth: { _, _, _ in }, activateSwitchInline: { _, _ in }, openUrl: { _, _, _ in }, shareCurrentLocation: {}, shareAccountContact: {}, sendBotCommand: { _, _ in }, openInstantPage: { _, _ in }, openWallpaper: { _ in }, openHashtag: { _, _ in }, updateInputState: { _ in }, updateInputMode: { _ in }, openMessageShareMenu: { _ in
}, presentController: { _, _ in }, navigationController: {
return nil
+ }, chatControllerNode: {
+ return nil
}, presentGlobalOverlayController: { _, _ in }, callPeer: { _ in }, longTap: { _, _ in }, openCheckoutOrReceipt: { _ in }, openSearch: { }, setupReply: { _ in
}, canSetupReply: { _ in
return false
@@ -177,6 +184,7 @@ public final class ChatControllerInteraction {
}, scheduleCurrentMessage: {
}, sendScheduledMessagesNow: { _ in
}, editScheduledMessagesTime: { _ in
+ }, performTextSelectionAction: { _, _, _ in
}, requestMessageUpdate: { _ in
}, cancelInteractiveKeyboardGestures: {
}, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings,
diff --git a/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift b/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift
index e39f318c37..b788ea5bc3 100644
--- a/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatInterfaceState.swift
@@ -77,34 +77,6 @@ struct ChatEditMessageState: PostboxCoding, Equatable {
}
}
-final class ChatEmbeddedInterfaceState: PeerChatListEmbeddedInterfaceState {
- let timestamp: Int32
- let text: NSAttributedString
-
- init(timestamp: Int32, text: NSAttributedString) {
- self.timestamp = timestamp
- self.text = text
- }
-
- init(decoder: PostboxDecoder) {
- self.timestamp = decoder.decodeInt32ForKey("d", orElse: 0)
- self.text = ((decoder.decodeObjectForKey("at", decoder: { ChatTextInputStateText(decoder: $0) }) as? ChatTextInputStateText) ?? ChatTextInputStateText()).attributedText()
- }
-
- func encode(_ encoder: PostboxEncoder) {
- encoder.encodeInt32(self.timestamp, forKey: "d")
- encoder.encodeObject(ChatTextInputStateText(attributedText: self.text), forKey: "at")
- }
-
- public func isEqual(to: PeerChatListEmbeddedInterfaceState) -> Bool {
- if let to = to as? ChatEmbeddedInterfaceState {
- return self.timestamp == to.timestamp && self.text.isEqual(to: to.text)
- } else {
- return false
- }
- }
-}
-
struct ChatInterfaceMessageActionsState: PostboxCoding, Equatable {
var closedButtonKeyboardMessageId: MessageId?
var processedSetupReplyMessageId: MessageId?
diff --git a/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift b/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift
deleted file mode 100644
index b333bc0027..0000000000
--- a/submodules/TelegramUI/TelegramUI/ChatListPresentationData.swift
+++ /dev/null
@@ -1,22 +0,0 @@
-import Foundation
-import UIKit
-import TelegramPresentationData
-import TelegramUIPreferences
-
-final class ChatListPresentationData {
- let theme: PresentationTheme
- let strings: PresentationStrings
- let dateTimeFormat: PresentationDateTimeFormat
- let nameSortOrder: PresentationPersonNameOrder
- let nameDisplayOrder: PresentationPersonNameOrder
- let disableAnimations: Bool
-
- init(theme: PresentationTheme, strings: PresentationStrings, dateTimeFormat: PresentationDateTimeFormat, nameSortOrder: PresentationPersonNameOrder, nameDisplayOrder: PresentationPersonNameOrder, disableAnimations: Bool) {
- self.theme = theme
- self.strings = strings
- self.dateTimeFormat = dateTimeFormat
- self.nameSortOrder = nameSortOrder
- self.nameDisplayOrder = nameDisplayOrder
- self.disableAnimations = disableAnimations
- }
-}
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift
index 4e3bb82232..bf0d688081 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleContentNode.swift
@@ -166,4 +166,10 @@ class ChatMessageBubbleContentNode: ASDisplayNode {
func updateHighlightedState(animated: Bool) -> Bool {
return false
}
+
+ func willUpdateIsExtractedToContextPreview(_ value: Bool) {
+ }
+
+ func updateIsExtractedToContextPreview(_ value: Bool) {
+ }
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift
index 3f5b59ccac..4b34033935 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageBubbleItemNode.swift
@@ -13,6 +13,7 @@ import LocalizedPeerData
import ContextUI
import TelegramUniversalVideoContent
import MosaicLayout
+import TextSelectionNode
private func contentNodeMessagesAndClassesForItem(_ item: ChatMessageItem) -> [(Message, AnyClass)] {
var result: [(Message, AnyClass)] = []
@@ -167,6 +168,8 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
private var appliedItem: ChatMessageItem?
private var appliedForwardInfo: (Peer?, String?)?
+ private var tapRecognizer: TapLongTapOrDoubleTapGestureRecognizer?
+
override var visibility: ListViewItemNodeVisibility {
didSet {
if self.visibility != oldValue {
@@ -205,6 +208,14 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
self?.accessibilityElementDidBecomeFocused()
}
+ self.contextSourceNode.willUpdateIsExtractedToContextPreview = { [weak self] isExtractedToContextPreview in
+ guard let strongSelf = self, let item = strongSelf.item else {
+ return
+ }
+ for contentNode in strongSelf.contentNodes {
+ contentNode.willUpdateIsExtractedToContextPreview(isExtractedToContextPreview)
+ }
+ }
self.contextSourceNode.isExtractedToContextPreviewUpdated = { [weak self] isExtractedToContextPreview in
guard let strongSelf = self, let item = strongSelf.item else {
return
@@ -214,6 +225,10 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
if !isExtractedToContextPreview, let (rect, size) = strongSelf.absoluteRect {
strongSelf.updateAbsoluteRect(rect, within: size)
}
+
+ for contentNode in strongSelf.contentNodes {
+ contentNode.updateIsExtractedToContextPreview(isExtractedToContextPreview)
+ }
}
self.contextSourceNode.updateAbsoluteRect = { [weak self] rect, size in
@@ -338,6 +353,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
}
}
}
+ self.tapRecognizer = recognizer
self.view.addGestureRecognizer(recognizer)
let replyRecognizer = ChatSwipeToReplyRecognizer(target: self, action: #selector(self.swipeToReplyGesture(_:)))
@@ -1569,6 +1585,7 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
strongSelf.contextSourceNode.contentNode.addSubnode(contentNode)
contentNode.visibility = strongSelf.visibility
+ contentNode.updateIsExtractedToContextPreview(strongSelf.contextSourceNode.isExtractedToContextPreview)
}
}
@@ -2185,6 +2202,13 @@ class ChatMessageBubbleItemNode: ChatMessageItemView {
return nil
}
+ if self.contextSourceNode.isExtractedToContextPreview {
+ if let result = super.hitTest(point, with: event) as? TextSelectionNodeView {
+ return result
+ }
+ return nil
+ }
+
if let shareButtonNode = self.shareButtonNode, shareButtonNode.frame.contains(point) {
return shareButtonNode.view
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift b/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift
index b4643abeec..d61b357811 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageItemView.swift
@@ -7,6 +7,7 @@ import TelegramCore
import AccountContext
import LocalizedPeerData
import ContextUI
+import ChatListUI
struct ChatMessageItemWidthFill {
let compactInset: CGFloat
diff --git a/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift b/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift
index 27bc197848..4de4f8bcbb 100644
--- a/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatMessageTextBubbleContentNode.swift
@@ -7,6 +7,7 @@ import Postbox
import TextFormat
import UrlEscaping
import TelegramUniversalVideoContent
+import TextSelectionNode
private final class CachedChatMessageText {
let text: String
@@ -39,6 +40,7 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode {
private let textAccessibilityOverlayNode: TextAccessibilityOverlayNode
private let statusNode: ChatMessageDateAndStatusNode
private var linkHighlightingNode: LinkHighlightingNode?
+ private var textSelectionNode: TextSelectionNode?
private var textHighlightingNodes: [LinkHighlightingNode] = []
@@ -504,4 +506,38 @@ class ChatMessageTextBubbleContentNode: ChatMessageBubbleContentNode {
self.textHighlightingNodes.remove(at: i)
}
}
+
+ override func willUpdateIsExtractedToContextPreview(_ value: Bool) {
+ if !value {
+ if let textSelectionNode = self.textSelectionNode {
+ self.textSelectionNode = nil
+ textSelectionNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak textSelectionNode] _ in
+ textSelectionNode?.removeFromSupernode()
+ })
+ }
+ }
+ }
+
+ override func updateIsExtractedToContextPreview(_ value: Bool) {
+ if value {
+ if self.textSelectionNode == nil, let item = self.item, let rootNode = item.controllerInteraction.chatControllerNode() {
+ let textSelectionNode = TextSelectionNode(theme: TextSelectionTheme(selection: item.presentationData.theme.theme.list.itemAccentColor.withAlphaComponent(0.5), knob: item.presentationData.theme.theme.list.itemAccentColor), textNode: self.textNode, present: { [weak self] c, a in
+ self?.item?.controllerInteraction.presentGlobalOverlayController(c, a)
+ }, rootNode: rootNode, performAction: { [weak self] text, action in
+ guard let strongSelf = self, let item = strongSelf.item else {
+ return
+ }
+ item.controllerInteraction.performTextSelectionAction(item.message.stableId, text, action)
+ })
+ self.textSelectionNode = textSelectionNode
+ self.addSubnode(textSelectionNode)
+ textSelectionNode.frame = self.textNode.frame
+ }
+ } else if let textSelectionNode = self.textSelectionNode {
+ self.textSelectionNode = nil
+ textSelectionNode.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.2, removeOnCompletion: false, completion: { [weak textSelectionNode] _ in
+ textSelectionNode?.removeFromSupernode()
+ })
+ }
+ }
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift
index 1bf5f6d646..28dcdf6c74 100644
--- a/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatRecentActionsControllerNode.swift
@@ -229,6 +229,8 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
}, presentController: { _, _ in
}, navigationController: { [weak self] in
return self?.getNavigationController()
+ }, chatControllerNode: { [weak self] in
+ return self
}, presentGlobalOverlayController: { _, _ in }, callPeer: { _ in }, longTap: { [weak self] action, message in
if let strongSelf = self {
switch action {
@@ -400,6 +402,7 @@ final class ChatRecentActionsControllerNode: ViewControllerTracingNode {
}, scheduleCurrentMessage: {
}, sendScheduledMessagesNow: { _ in
}, editScheduledMessagesTime: { _ in
+ }, performTextSelectionAction: { _, _, _ in
}, requestMessageUpdate: { _ in
}, cancelInteractiveKeyboardGestures: {
}, automaticMediaDownloadSettings: self.automaticMediaDownloadSettings,
diff --git a/submodules/TelegramUI/TelegramUI/ChatSlowmodeItem.swift b/submodules/TelegramUI/TelegramUI/ChatSlowmodeItem.swift
index f0f93b0312..a341b78f3c 100644
--- a/submodules/TelegramUI/TelegramUI/ChatSlowmodeItem.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatSlowmodeItem.swift
@@ -188,7 +188,7 @@ class ChatSlowmodeItemNode: ListViewItemNode {
let valueString: String
if value == 0 {
- valueString = item.strings.Profile_MessageLifetimeForever
+ valueString = item.strings.GroupInfo_Permissions_SlowmodeValue_Off
} else {
valueString = shortTimeIntervalString(strings: item.strings, value: value)
}
diff --git a/submodules/TelegramUI/TelegramUI/ChatTitleView.swift b/submodules/TelegramUI/TelegramUI/ChatTitleView.swift
index a06916499e..cd1ab18e93 100644
--- a/submodules/TelegramUI/TelegramUI/ChatTitleView.swift
+++ b/submodules/TelegramUI/TelegramUI/ChatTitleView.swift
@@ -11,6 +11,7 @@ import TelegramUIPreferences
import ActivityIndicator
import TelegramStringFormatting
import PeerPresenceStatusManager
+import ChatTitleActivityNode
enum ChatTitleContent {
case peer(peerView: PeerView, onlineMemberCount: Int32?, isScheduledMessages: Bool)
diff --git a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
index 9bca752963..cd74bdc14a 100644
--- a/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
+++ b/submodules/TelegramUI/TelegramUI/DeclareEncodables.swift
@@ -3,6 +3,7 @@ import TemporaryCachedPeerDataManager
import TelegramUIPreferences
import TelegramNotices
import InstantPageUI
+import AccountContext
private var telegramUIDeclaredEncodables: Void = {
declareEncodable(InAppNotificationSettings.self, f: { InAppNotificationSettings(decoder: $0) })
diff --git a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift
index aa2171b736..77da42fb97 100644
--- a/submodules/TelegramUI/TelegramUI/GroupInfoController.swift
+++ b/submodules/TelegramUI/TelegramUI/GroupInfoController.swift
@@ -23,6 +23,7 @@ import LegacyUI
import LocationUI
import ItemListPeerItem
import ContactListUI
+import ChatListUI
private final class GroupInfoArguments {
let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift
index ce2caf5d2b..46acae68f3 100644
--- a/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift
+++ b/submodules/TelegramUI/TelegramUI/HashtagSearchController.swift
@@ -7,6 +7,7 @@ import SwiftSignalKit
import TelegramPresentationData
import TelegramBaseController
import AccountContext
+import ChatListUI
final class HashtagSearchController: TelegramBaseController {
private let queue = Queue()
diff --git a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift
index a9b7cf2313..7fa785a382 100644
--- a/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/HashtagSearchControllerNode.swift
@@ -5,6 +5,7 @@ import Postbox
import TelegramCore
import TelegramPresentationData
import AccountContext
+import ChatListUI
final class HashtagSearchControllerNode: ASDisplayNode {
private let toolbarBackgroundNode: ASDisplayNode
diff --git a/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift b/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift
index 1a473abec0..889c414e55 100644
--- a/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift
+++ b/submodules/TelegramUI/TelegramUI/LegacyAttachmentMenu.swift
@@ -36,7 +36,7 @@ func legacyAttachmentMenu(context: AccountContext, peer: Peer, editMediaOptions:
var underlyingViews: [UIView] = []
- var selectionLimit: Int32 = 30
+ var selectionLimit: Int32 = 100
var slowModeEnabled = false
if let channel = peer as? TelegramChannel, channel.isRestrictedBySlowmode {
slowModeEnabled = true
diff --git a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
index 965d436ebd..6f4615c083 100644
--- a/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
+++ b/submodules/TelegramUI/TelegramUI/NavigateToChatController.swift
@@ -6,6 +6,7 @@ import Postbox
import AccountContext
import GalleryUI
import InstantPageUI
+import ChatListUI
public func navigateToChatControllerImpl(_ params: NavigateToChatControllerParams) {
var found = false
diff --git a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift b/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
index 3c566623b4..de32a97c3a 100644
--- a/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/NotificationExceptionControllerNode.swift
@@ -15,6 +15,7 @@ import SearchUI
import ItemListPeerItem
import ContactsPeerItem
import ChatListSearchItemHeader
+import ChatListUI
private final class NotificationExceptionState : Equatable {
let mode:NotificationExceptionMode
diff --git a/submodules/TelegramUI/TelegramUI/OpenAddContact.swift b/submodules/TelegramUI/TelegramUI/OpenAddContact.swift
index c3dbe4f197..22a56ed5a9 100644
--- a/submodules/TelegramUI/TelegramUI/OpenAddContact.swift
+++ b/submodules/TelegramUI/TelegramUI/OpenAddContact.swift
@@ -6,7 +6,7 @@ import DeviceAccess
import AccountContext
import AlertUI
-func openAddContact(context: AccountContext, firstName: String = "", lastName: String = "", phoneNumber: String, label: String = "_$!!$_", present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void = {}) {
+func openAddContactImpl(context: AccountContext, firstName: String = "", lastName: String = "", phoneNumber: String, label: String = "_$!!$_", present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void = {}) {
let _ = (DeviceAccess.authorizationStatus(subject: .contacts)
|> take(1)
|> deliverOnMainQueue).start(next: { value in
diff --git a/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift b/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift
index d62dd2dbb1..249ad1b565 100644
--- a/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/OverlayPlayerControllerNode.swift
@@ -88,6 +88,8 @@ final class OverlayAudioPlayerControllerNode: ViewControllerTracingNode, UIGestu
}, presentController: { _, _ in
}, navigationController: {
return nil
+ }, chatControllerNode: {
+ return nil
}, presentGlobalOverlayController: { _, _ in
}, callPeer: { _ in
}, longTap: { _, _ in
@@ -107,6 +109,7 @@ final class OverlayAudioPlayerControllerNode: ViewControllerTracingNode, UIGestu
}, scheduleCurrentMessage: {
}, sendScheduledMessagesNow: { _ in
}, editScheduledMessagesTime: { _ in
+ }, performTextSelectionAction: { _, _, _ in
}, requestMessageUpdate: { _ in
}, cancelInteractiveKeyboardGestures: {
}, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings, pollActionState: ChatInterfacePollActionState(), stickerSettings: ChatInterfaceStickerSettings(loopAnimatedStickers: false))
diff --git a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift
index 1705e544d1..7741bf05df 100644
--- a/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift
+++ b/submodules/TelegramUI/TelegramUI/PeerMediaCollectionController.swift
@@ -216,6 +216,8 @@ public class PeerMediaCollectionController: TelegramBaseController {
}, presentController: { _, _ in
}, navigationController: {
return nil
+ }, chatControllerNode: {
+ return nil
}, presentGlobalOverlayController: { _, _ in }, callPeer: { _ in
}, longTap: { [weak self] content, _ in
if let strongSelf = self {
@@ -280,6 +282,7 @@ public class PeerMediaCollectionController: TelegramBaseController {
}, scheduleCurrentMessage: {
}, sendScheduledMessagesNow: { _ in
}, editScheduledMessagesTime: { _ in
+ }, performTextSelectionAction: { _, _, _ in
}, requestMessageUpdate: { _ in
}, cancelInteractiveKeyboardGestures: {
}, automaticMediaDownloadSettings: MediaAutoDownloadSettings.defaultSettings,
diff --git a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
index cd97dfd1cf..75b41c4ef3 100644
--- a/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
+++ b/submodules/TelegramUI/TelegramUI/PeerSelectionController.swift
@@ -8,6 +8,7 @@ import TelegramPresentationData
import ProgressNavigationButtonNode
import AccountContext
import SearchUI
+import ChatListUI
public final class PeerSelectionController: ViewController {
private let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift b/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift
index 54a5addd0b..48c6e23346 100644
--- a/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/PeerSelectionControllerNode.swift
@@ -10,6 +10,7 @@ import AccountContext
import SearchBarNode
import SearchUI
import ContactListUI
+import ChatListUI
final class PeerSelectionControllerNode: ASDisplayNode {
private let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping
index 7a4c07a68e..f91d4cd7d8 100644
Binary files a/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping and b/submodules/TelegramUI/TelegramUI/Resources/PresentationStrings.mapping differ
diff --git a/submodules/TelegramUI/TelegramUI/SettingsController.swift b/submodules/TelegramUI/TelegramUI/SettingsController.swift
index 9bd97cc6ac..1e9ffb4884 100644
--- a/submodules/TelegramUI/TelegramUI/SettingsController.swift
+++ b/submodules/TelegramUI/TelegramUI/SettingsController.swift
@@ -26,6 +26,7 @@ import PassportUI
import SearchUI
import ItemListPeerItem
import CallListUI
+import ChatListUI
private let maximumNumberOfAccounts = 3
@@ -1178,12 +1179,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM
actionsDisposable.dispose()
}
- let icon: UIImage?
- if (useSpecialTabBarIcons()) {
- icon = UIImage(bundleImageName: "Chat List/Tabs/NY/IconSettings")
- } else {
- icon = UIImage(bundleImageName: "Chat List/Tabs/IconSettings")
- }
+ let icon = UIImage(bundleImageName: "Chat List/Tabs/IconSettings")
let notificationsFromAllAccounts = accountManager.sharedData(keys: [ApplicationSpecificSharedDataKeys.inAppNotificationSettings])
|> map { sharedData -> Bool in
@@ -1388,7 +1384,7 @@ public func settingsController(context: AccountContext, accountManager: AccountM
})
if let selectedAccount = selectedAccount, let sharedContext = sharedContext {
let accountContext = sharedContext.makeTempAccountContext(account: selectedAccount)
- let chatListController = ChatListController(context: accountContext, groupId: .root, controlsHistoryPreload: false, hideNetworkActivityStatus: true)
+ let chatListController = ChatListController(context: accountContext, groupId: .root, controlsHistoryPreload: false, hideNetworkActivityStatus: true, enableDebugActions: !GlobalExperimentalSettings.isAppStoreBuild)
return chatListController
}
}
diff --git a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
index 074767f9f6..48722fff9b 100644
--- a/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
+++ b/submodules/TelegramUI/TelegramUI/SharedAccountContext.swift
@@ -9,6 +9,7 @@ import TelegramUIPreferences
import AccountContext
import DeviceLocationManager
import LegacyUI
+import ChatListUI
private enum CallStatusText: Equatable {
case none
@@ -979,4 +980,20 @@ public final class SharedAccountContextImpl: SharedAccountContext {
public func makeContactSelectionController(_ params: ContactSelectionControllerParams) -> ContactSelectionController {
return ContactSelectionControllerImpl(params)
}
+
+ public func makeComposeController(context: AccountContext) -> ViewController {
+ return ComposeController(context: context)
+ }
+
+ public func makeProxySettingsController(context: AccountContext) -> ViewController {
+ return proxySettingsController(context: context)
+ }
+
+ public func makeLocalizationListController(context: AccountContext) -> ViewController {
+ return LocalizationListController(context: context)
+ }
+
+ public func openAddContact(context: AccountContext, firstName: String, lastName: String, phoneNumber: String, label: String, present: @escaping (ViewController, Any?) -> Void, pushController: @escaping (ViewController) -> Void, completed: @escaping () -> Void) {
+ openAddContactImpl(context: context, firstName: firstName, lastName: lastName, phoneNumber: phoneNumber, label: label, present: present, pushController: pushController, completed: completed)
+ }
}
diff --git a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
index 66eea1b12d..6e66991fa2 100644
--- a/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
+++ b/submodules/TelegramUI/TelegramUI/TelegramRootController.swift
@@ -9,6 +9,7 @@ import TelegramUIPrivateModule
import AccountContext
import ContactListUI
import CallListUI
+import ChatListUI
public final class TelegramRootController: NavigationController {
private let context: AccountContext
@@ -83,7 +84,7 @@ public final class TelegramRootController: NavigationController {
public func addRootControllers(showCallsTab: Bool) {
let tabBarController = TabBarController(navigationBarPresentationData: NavigationBarPresentationData(presentationData: self.presentationData), theme: TabBarControllerTheme(rootControllerTheme: self.presentationData.theme))
- let chatListController = ChatListController(context: self.context, groupId: .root, controlsHistoryPreload: true)
+ let chatListController = ChatListController(context: self.context, groupId: .root, controlsHistoryPreload: true, enableDebugActions: !GlobalExperimentalSettings.isAppStoreBuild)
if let sharedContext = self.context.sharedContext as? SharedAccountContextImpl {
chatListController.tabBarItem.badgeValue = sharedContext.switchingData.chatListBadge
}
diff --git a/submodules/TelegramUI/TelegramUI/ThemeAccentColorControllerNode.swift b/submodules/TelegramUI/TelegramUI/ThemeAccentColorControllerNode.swift
index de24f4d050..192cce6b3b 100644
--- a/submodules/TelegramUI/TelegramUI/ThemeAccentColorControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ThemeAccentColorControllerNode.swift
@@ -7,6 +7,7 @@ import AsyncDisplayKit
import TelegramCore
import TelegramPresentationData
import TelegramUIPreferences
+import ChatListUI
import AccountContext
final class ThemeAccentColorControllerNode: ASDisplayNode, UIScrollViewDelegate {
diff --git a/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift b/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
index 45de2ca9da..80a6dd75bc 100644
--- a/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
+++ b/submodules/TelegramUI/TelegramUI/ThemePreviewControllerNode.swift
@@ -8,6 +8,7 @@ import TelegramCore
import TelegramPresentationData
import TelegramUIPreferences
import AccountContext
+import ChatListUI
final class ThemePreviewControllerNode: ASDisplayNode, UIScrollViewDelegate {
private let context: AccountContext
diff --git a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
index b5b2d289b7..4315fd3234 100644
--- a/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
+++ b/submodules/TelegramUI/TelegramUI_Xcode.xcodeproj/project.pbxproj
@@ -92,13 +92,6 @@
09D304152173C0E900C00567 /* WatchManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D304142173C0E900C00567 /* WatchManager.swift */; };
09D304182173C15700C00567 /* WatchSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D304172173C15700C00567 /* WatchSettingsController.swift */; };
09D96899221DE92600B1458A /* ID3ArtworkReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D96898221DE92600B1458A /* ID3ArtworkReader.swift */; };
- 09D9689D221F74F000B1458A /* ChatTitleActivityNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D9689C221F74F000B1458A /* ChatTitleActivityNode.swift */; };
- 09D9689F221F760900B1458A /* ChatTitleActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D9689E221F760900B1458A /* ChatTitleActivityContentNode.swift */; };
- 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A0221F7FF100B1458A /* ChatTypingActivityContentNode.swift */; };
- 09D968A3221F800A00B1458A /* ChatUploadingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A2221F800A00B1458A /* ChatUploadingActivityContentNode.swift */; };
- 09D968A5221F801A00B1458A /* ChatPlayingActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A4221F801A00B1458A /* ChatPlayingActivityContentNode.swift */; };
- 09D968A7221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A6221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift */; };
- 09D968A9221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09D968A8221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift */; };
09DD5D5021ECC3C400D7007A /* SuppressContactsWarning.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD5D4F21ECC3C400D7007A /* SuppressContactsWarning.swift */; };
09DD5D5221ED175300D7007A /* WallpaperColorPickerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD5D5121ED175300D7007A /* WallpaperColorPickerNode.swift */; };
09DD88E921BAF65E000766BC /* ItemListAddressItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09DD88E821BAF65E000766BC /* ItemListAddressItem.swift */; };
@@ -119,8 +112,6 @@
09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */; };
09EDAD2E221164440012A50B /* AutodownloadSizeLimitItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2D221164440012A50B /* AutodownloadSizeLimitItem.swift */; };
09EDAD30221164530012A50B /* AutodownloadDataUsagePickerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EDAD2F221164530012A50B /* AutodownloadDataUsagePickerItem.swift */; };
- 09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */; };
- 09F21565225C83E100AEDF6D /* ChatListStatusNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */; };
09F2158D225CF5BC00AEDF6D /* Pasteboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */; };
09F664C021EAAFAF00AB7E26 /* ThemeColorsGridController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */; };
09F664C221EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */; };
@@ -144,7 +135,6 @@
9F06830B21A404C4001D8EDB /* NotificationExceptionSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F06830A21A404C4001D8EDB /* NotificationExceptionSettingsController.swift */; };
D000CABA21EE130D0011B15D /* MapResourceToAvatarSizes.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CAB921EE130D0011B15D /* MapResourceToAvatarSizes.swift */; };
D000CABC21F158AD0011B15D /* PrepareSecretThumbnailData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D000CABB21F158AD0011B15D /* PrepareSecretThumbnailData.swift */; };
- D00580B321E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */; };
D0068FA821760FA300D1B315 /* StoreDownloadedMedia.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */; };
D007019C2029E8F2006B9E34 /* LegacyICloudFileController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D007019B2029E8F2006B9E34 /* LegacyICloudFileController.swift */; };
D007019E2029EFDD006B9E34 /* ICloudResources.swift in Sources */ = {isa = PBXBuildFile; fileRef = D007019D2029EFDD006B9E34 /* ICloudResources.swift */; };
@@ -209,7 +199,6 @@
D015E04F225D2E5900CB9E8A /* WebP.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D015E04E225D2E5900CB9E8A /* WebP.framework */; };
D017734C22049BF800DA06A7 /* UpgradedAccounts.swift in Sources */ = {isa = PBXBuildFile; fileRef = D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */; };
D01776BE1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */; };
- D01847801FFBD12E00075256 /* ChatListPresentationData.swift in Sources */ = {isa = PBXBuildFile; fileRef = D018477F1FFBD12E00075256 /* ChatListPresentationData.swift */; };
D01848E821A03BDA00B6DEBD /* ChatSearchState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01848E721A03BDA00B6DEBD /* ChatSearchState.swift */; };
D0185E882089ED5F005E1A6C /* ProxyListSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0185E872089ED5F005E1A6C /* ProxyListSettingsController.swift */; };
D0185E8A208A01AF005E1A6C /* ProxySettingsActionItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0185E89208A01AF005E1A6C /* ProxySettingsActionItem.swift */; };
@@ -286,11 +275,9 @@
D06350AE2229A7F800FA2B32 /* InChatPrefetchManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06350AD2229A7F800FA2B32 /* InChatPrefetchManager.swift */; };
D0642EFC1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0642EFB1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift */; };
D0671F2D2145AB28000A8AE7 /* LegacyAvatarPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0671F2C2145AB28000A8AE7 /* LegacyAvatarPicker.swift */; };
- D0684A041F6C3AD50059F570 /* ChatListTypingNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0684A031F6C3AD50059F570 /* ChatListTypingNode.swift */; };
D069F5D0212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D069F5CF212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift */; };
D06BB8821F58994B0084FC30 /* LegacyInstantVideoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06BB8811F58994B0084FC30 /* LegacyInstantVideoController.swift */; };
D06E0F8E1F79ABFB003CF3DD /* ChatLoadingNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E0F8D1F79ABFB003CF3DD /* ChatLoadingNode.swift */; };
- D06E4C312134910400088087 /* ChatListEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C302134910400088087 /* ChatListEmptyNode.swift */; };
D06E4C332134A59700088087 /* ThemeAccentColorActionSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */; };
D06E4C352134AE3C00088087 /* ThemeAutoNightSettingsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */; };
D06F1EA41F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D06F1EA31F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift */; };
@@ -311,7 +298,6 @@
D07ABBA5202A14BC003671DE /* LegacyImagePicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07ABBA4202A14BC003671DE /* LegacyImagePicker.swift */; };
D07ABBAB202A1BD1003671DE /* LegacyWallpaperPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07ABBAA202A1BD1003671DE /* LegacyWallpaperPicker.swift */; };
D07BCBFE1F2B792300ED97AA /* LegacyComponents.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D07BCBFD1F2B792300ED97AA /* LegacyComponents.framework */; };
- D07E413B208A432100FCA8F0 /* ChatListTitleProxyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */; };
D07E413D208A494D00FCA8F0 /* ProxyServerActionSheetController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07E413C208A494D00FCA8F0 /* ProxyServerActionSheetController.swift */; };
D081A9A922EB26AE0069C449 /* PhoneLabelController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081A9A822EB26AE0069C449 /* PhoneLabelController.swift */; };
D081E104217F57D2003CD921 /* LanguageLinkPreviewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081E103217F57D2003CD921 /* LanguageLinkPreviewController.swift */; };
@@ -373,7 +359,6 @@
D09E77AB22FA5CEA00B9CCA7 /* Tuples.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E77AA22FA5CEA00B9CCA7 /* Tuples.framework */; };
D09E77AD22FA5CEA00B9CCA7 /* UrlEscaping.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D09E77AC22FA5CEA00B9CCA7 /* UrlEscaping.framework */; };
D0A8998D217A294100759EE6 /* SaveIncomingMediaController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0A8998C217A294100759EE6 /* SaveIncomingMediaController.swift */; };
- D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */; };
D0AA840C1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */; };
D0AB262921C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB262821C307D7008F6685 /* ChatMessagePollBubbleContentNode.swift */; };
D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0AB269D21D56A12008F6685 /* ChannelPermissionsController.swift */; };
@@ -460,7 +445,6 @@
D0C12EB01F9A8D1300600BB2 /* ListMessageDateHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C12EAF1F9A8D1300600BB2 /* ListMessageDateHeader.swift */; };
D0C26D571FDF2388004ABF18 /* OpenChatMessage.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C26D561FDF2388004ABF18 /* OpenChatMessage.swift */; };
D0C45E9F213FFAFD00988156 /* Lottie.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C45E9E213FFAFD00988156 /* Lottie.framework */; };
- D0C683FC21AD797F00A6CAD5 /* ChatListSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */; };
D0C9BFAD22FE316E00FAB518 /* ComposePollUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFAC22FE316E00FAB518 /* ComposePollUI.framework */; };
D0C9BFDF22FE349C00FAB518 /* AlertUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9BFDE22FE349C00FAB518 /* AlertUI.framework */; };
D0C9C00322FE37A500FAB518 /* TouchDownGesture.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C00222FE37A500FAB518 /* TouchDownGesture.framework */; };
@@ -507,6 +491,11 @@
D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */; };
D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA182302297C00FAB518 /* PasscodeUI.framework */; };
D0C9CA8223022E3900FAB518 /* CallListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CA8123022E3900FAB518 /* CallListUI.framework */; };
+ D0C9CAFD2302370900FAB518 /* ChatListUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CAFC2302370900FAB518 /* ChatListUI.framework */; };
+ D0C9CB422302B15500FAB518 /* ChatTitleActivityNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB412302B15500FAB518 /* ChatTitleActivityNode.framework */; };
+ D0C9CB822302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CB812302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework */; };
+ D0C9CBB62302B65600FAB518 /* LanguageSuggestionUI.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */; };
+ D0C9CBD72302C09000FAB518 /* TextSelectionNode.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */; };
D0CAD90120AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */; };
D0CB27CF20C17A4A001ACF93 /* TermsOfServiceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */; };
D0CB27D220C17A7F001ACF93 /* TermsOfServiceControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */; };
@@ -592,7 +581,6 @@
D0EC6CCD1EB9F58800EBF1C3 /* DeclareEncodables.swift in Sources */ = {isa = PBXBuildFile; fileRef = D073CE701DCBF23F007511FD /* DeclareEncodables.swift */; };
D0EC6CCE1EB9F58800EBF1C3 /* AccountContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05811931DD5F9380057C769 /* AccountContext.swift */; };
D0EC6CD11EB9F58800EBF1C3 /* UrlHandling.swift in Sources */ = {isa = PBXBuildFile; fileRef = D023836F1DDF0462004018B6 /* UrlHandling.swift */; };
- D0EC6CD51EB9F58800EBF1C3 /* StoredMessageFromSearchPeer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */; };
D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01D6BFB1E42AB3C006151C6 /* EmojiUtils.swift */; };
D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E305A41E5B2BFB00D7A3A2 /* ValidateAddressNameInteractive.swift */; };
D0EC6CDC1EB9F58800EBF1C3 /* TelegramAccountAuxiliaryMethods.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F3A8AA1E82D83E00B4C64C /* TelegramAccountAuxiliaryMethods.swift */; };
@@ -623,12 +611,6 @@
D0EC6D311EB9F58800EBF1C3 /* RadialTimeoutNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D00C7CE51E378FD00080C3D5 /* RadialTimeoutNode.swift */; };
D0EC6D3A1EB9F58800EBF1C3 /* AudioWaveformNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0568AAC1DF198130022E7DA /* AudioWaveformNode.swift */; };
D0EC6D3B1EB9F58800EBF1C3 /* EditableTokenListNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0BC38621E3F9EFA0044D6FE /* EditableTokenListNode.swift */; };
- D0EC6D4B1EB9F58800EBF1C3 /* ChatListNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF781DCA226F00761F81 /* ChatListNode.swift */; };
- D0EC6D4D1EB9F58800EBF1C3 /* ChatListHoleItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DFB1D6B8A880046BCD6 /* ChatListHoleItem.swift */; };
- D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DFC1D6B8A880046BCD6 /* ChatListItem.swift */; };
- D0EC6D501EB9F58800EBF1C3 /* ChatListNodeEntries.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF7A1DCA24BF00761F81 /* ChatListNodeEntries.swift */; };
- D0EC6D511EB9F58800EBF1C3 /* ChatListViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF7C1DCA273400761F81 /* ChatListViewTransition.swift */; };
- D0EC6D521EB9F58800EBF1C3 /* ChatListNodeLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D07CFF7E1DCA308500761F81 /* ChatListNodeLocation.swift */; };
D0EC6D531EB9F58800EBF1C3 /* ChatHistoryViewForLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E7A1BE1D8C24B900C37A6F /* ChatHistoryViewForLocation.swift */; };
D0EC6D541EB9F58800EBF1C3 /* ChatHistoryEntriesForView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E7A1C01D8C258D00C37A6F /* ChatHistoryEntriesForView.swift */; };
D0EC6D551EB9F58800EBF1C3 /* PreparedChatHistoryViewTransition.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0E7A1C21D8C25D600C37A6F /* PreparedChatHistoryViewTransition.swift */; };
@@ -656,12 +638,6 @@
D0EC6D731EB9F58800EBF1C3 /* AuthorizationSequenceSignUpController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F53BF61E79593500117362 /* AuthorizationSequenceSignUpController.swift */; };
D0EC6D741EB9F58800EBF1C3 /* AuthorizationSequenceSignUpControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F53BF81E79593F00117362 /* AuthorizationSequenceSignUpControllerNode.swift */; };
D0EC6D751EB9F58800EBF1C3 /* TelegramRootController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D05174C21EAE583800A1BF36 /* TelegramRootController.swift */; };
- D0EC6D761EB9F58800EBF1C3 /* ChatListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DF81D6B8A880046BCD6 /* ChatListController.swift */; };
- D0EC6D771EB9F58800EBF1C3 /* ChatListControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69DF91D6B8A880046BCD6 /* ChatListControllerNode.swift */; };
- D0EC6D781EB9F58800EBF1C3 /* ChatListTitleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749611E11DB240057C89A /* ChatListTitleView.swift */; };
- D0EC6D791EB9F58800EBF1C3 /* ChatListTitleLockView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0575AEA1E9FD579006F2541 /* ChatListTitleLockView.swift */; };
- D0EC6D7A1EB9F58800EBF1C3 /* ChatListSearchContainerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E071D6B8A9C0046BCD6 /* ChatListSearchContainerNode.swift */; };
- D0EC6D7B1EB9F58800EBF1C3 /* ChatListRecentPeersListItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */; };
D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749501E1067E40057C89A /* HashtagSearchController.swift */; };
D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D01749521E1068820057C89A /* HashtagSearchControllerNode.swift */; };
D0EC6D811EB9F58800EBF1C3 /* ChatController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0F69E0E1D6B8ACF0046BCD6 /* ChatController.swift */; };
@@ -868,7 +844,6 @@
D0FA08C8204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C7204982DC00DD23FC /* ChatTextInputActionButtonsNode.swift */; };
D0FA08CA2049BEAC00DD23FC /* ChatEmptyNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FA08C92049BEAC00DD23FC /* ChatEmptyNode.swift */; };
D0FAB13E22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FAB13D22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift */; };
- D0FBE84F2273395C00B33B52 /* ChatListArchiveInfoItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FBE84E2273395C00B33B52 /* ChatListArchiveInfoItem.swift */; };
D0FC194D201F82A000FEDBB2 /* OpenResolvedUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC194C201F82A000FEDBB2 /* OpenResolvedUrl.swift */; };
D0FC408E1D5B8E7500261D9D /* TelegramUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FC408D1D5B8E7500261D9D /* TelegramUITests.swift */; };
D0FE4DE41F0AEBB900E8A0B3 /* SharedVideoContextManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0FE4DE31F0AEBB900E8A0B3 /* SharedVideoContextManager.swift */; };
@@ -959,13 +934,6 @@
09D304142173C0E900C00567 /* WatchManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchManager.swift; sourceTree = ""; };
09D304172173C15700C00567 /* WatchSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WatchSettingsController.swift; sourceTree = ""; };
09D96898221DE92600B1458A /* ID3ArtworkReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ID3ArtworkReader.swift; sourceTree = ""; };
- 09D9689C221F74F000B1458A /* ChatTitleActivityNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityNode.swift; sourceTree = ""; };
- 09D9689E221F760900B1458A /* ChatTitleActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTitleActivityContentNode.swift; sourceTree = ""; };
- 09D968A0221F7FF100B1458A /* ChatTypingActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatTypingActivityContentNode.swift; sourceTree = ""; };
- 09D968A2221F800A00B1458A /* ChatUploadingActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatUploadingActivityContentNode.swift; sourceTree = ""; };
- 09D968A4221F801A00B1458A /* ChatPlayingActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatPlayingActivityContentNode.swift; sourceTree = ""; };
- 09D968A6221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecordingVoiceActivityContentNode.swift; sourceTree = ""; };
- 09D968A8221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatRecordingVideoActivityContentNode.swift; sourceTree = ""; };
09DD5D4F21ECC3C400D7007A /* SuppressContactsWarning.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuppressContactsWarning.swift; sourceTree = ""; };
09DD5D5121ED175300D7007A /* WallpaperColorPickerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = WallpaperColorPickerNode.swift; sourceTree = ""; };
09DD88E821BAF65E000766BC /* ItemListAddressItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ItemListAddressItem.swift; sourceTree = ""; };
@@ -986,8 +954,6 @@
09EDAD2B2211552F0012A50B /* AutodownloadMediaCategoryController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadMediaCategoryController.swift; sourceTree = ""; };
09EDAD2D221164440012A50B /* AutodownloadSizeLimitItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadSizeLimitItem.swift; sourceTree = ""; };
09EDAD2F221164530012A50B /* AutodownloadDataUsagePickerItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AutodownloadDataUsagePickerItem.swift; sourceTree = ""; };
- 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListBadgeNode.swift; sourceTree = ""; };
- 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListStatusNode.swift; sourceTree = ""; };
09F2158C225CF5BC00AEDF6D /* Pasteboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Pasteboard.swift; sourceTree = ""; };
09F664BF21EAAFAF00AB7E26 /* ThemeColorsGridController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridController.swift; sourceTree = ""; };
09F664C121EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeColorsGridControllerNode.swift; sourceTree = ""; };
@@ -1018,7 +984,6 @@
D002A0DA1E9C190700A81812 /* SoftwareVideoThumbnailLayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SoftwareVideoThumbnailLayer.swift; sourceTree = ""; };
D002A0DC1E9CD52A00A81812 /* ChatMediaInputRecentGifsItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputRecentGifsItem.swift; sourceTree = ""; };
D003702D1DA43052004308D3 /* ItemListAvatarAndNameItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemListAvatarAndNameItem.swift; sourceTree = ""; };
- D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DeleteChatPeerActionSheetItem.swift; sourceTree = ""; };
D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StoreDownloadedMedia.swift; sourceTree = ""; };
D007019B2029E8F2006B9E34 /* LegacyICloudFileController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyICloudFileController.swift; sourceTree = ""; };
D007019D2029EFDD006B9E34 /* ICloudResources.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ICloudResources.swift; sourceTree = ""; };
@@ -1092,13 +1057,10 @@
D015E04E225D2E5900CB9E8A /* WebP.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = WebP.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D01749501E1067E40057C89A /* HashtagSearchController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchController.swift; sourceTree = ""; };
D01749521E1068820057C89A /* HashtagSearchControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HashtagSearchControllerNode.swift; sourceTree = ""; };
- D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StoredMessageFromSearchPeer.swift; sourceTree = ""; };
D01749561E1087CC0057C89A /* ChatBotStartInputPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatBotStartInputPanelNode.swift; sourceTree = ""; };
- D01749611E11DB240057C89A /* ChatListTitleView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListTitleView.swift; sourceTree = ""; };
D017734B22049BF800DA06A7 /* UpgradedAccounts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = UpgradedAccounts.swift; sourceTree = ""; };
D01776BD1F1E76920044446D /* PeerMediaCollectionSectionsNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerMediaCollectionSectionsNode.swift; sourceTree = ""; };
D0177B831DFB095000A5083A /* FileMediaResourceStatus.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FileMediaResourceStatus.swift; sourceTree = ""; };
- D018477F1FFBD12E00075256 /* ChatListPresentationData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListPresentationData.swift; sourceTree = ""; };
D01848E721A03BDA00B6DEBD /* ChatSearchState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSearchState.swift; sourceTree = ""; };
D0185E872089ED5F005E1A6C /* ProxyListSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyListSettingsController.swift; sourceTree = ""; };
D0185E89208A01AF005E1A6C /* ProxySettingsActionItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxySettingsActionItem.swift; sourceTree = ""; };
@@ -1198,7 +1160,6 @@
D048B338203C532800038D05 /* ChatMediaInputPane.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMediaInputPane.swift; sourceTree = ""; };
D049EAE11E447AD500A2CD3A /* StickersChatInputContextPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StickersChatInputContextPanelNode.swift; sourceTree = ""; };
D049EAE51E44AD5600A2CD3A /* ChatMediaInputMetaSectionItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputMetaSectionItemNode.swift; sourceTree = ""; };
- D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListRecentPeersListItem.swift; sourceTree = ""; };
D049EAF21E44DE2500A2CD3A /* AuthorizationSequenceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceController.swift; sourceTree = ""; };
D04B4D121EEA0A6500711AF6 /* ChatMessageMapBubbleContentNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageMapBubbleContentNode.swift; sourceTree = ""; };
D04BB2B21E44E56200650E93 /* AuthorizationSequenceSplashController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AuthorizationSequenceSplashController.swift; sourceTree = ""; };
@@ -1227,7 +1188,6 @@
D056CD751FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatSwipeToReplyRecognizer.swift; sourceTree = ""; };
D056CD771FF2A6EE00880D28 /* ChatMessageSwipeToReplyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageSwipeToReplyNode.swift; sourceTree = ""; };
D056CD791FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ListMessagePlaybackOverlayNode.swift; sourceTree = ""; };
- D0575AEA1E9FD579006F2541 /* ChatListTitleLockView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListTitleLockView.swift; sourceTree = ""; };
D0575AEC1E9FF1AD006F2541 /* ChatMediaInputTrendingPane.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputTrendingPane.swift; sourceTree = ""; };
D0575AEE1E9FF881006F2541 /* ChatMediaInputTrendingItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMediaInputTrendingItem.swift; sourceTree = ""; };
D0575AF61EA0ED4F006F2541 /* ChatMessageInstantVideoItemNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageInstantVideoItemNode.swift; sourceTree = ""; };
@@ -1255,13 +1215,11 @@
D06350AD2229A7F800FA2B32 /* InChatPrefetchManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InChatPrefetchManager.swift; sourceTree = ""; };
D0642EFB1F3E1E7B00792790 /* ChatHistoryNavigationButtons.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatHistoryNavigationButtons.swift; sourceTree = ""; };
D0671F2C2145AB28000A8AE7 /* LegacyAvatarPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyAvatarPicker.swift; sourceTree = ""; };
- D0684A031F6C3AD50059F570 /* ChatListTypingNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListTypingNode.swift; sourceTree = ""; };
D06879561DB8F22200424BBD /* FetchCachedRepresentations.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchCachedRepresentations.swift; sourceTree = ""; };
D069F5CF212700B90000565A /* StickerPanePeerSpecificSetupGridItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StickerPanePeerSpecificSetupGridItem.swift; sourceTree = ""; };
D06BB8811F58994B0084FC30 /* LegacyInstantVideoController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LegacyInstantVideoController.swift; sourceTree = ""; };
D06E0F8D1F79ABFB003CF3DD /* ChatLoadingNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatLoadingNode.swift; sourceTree = ""; };
D06E4AC31E84806300627D1D /* FetchPhotoLibraryImageResource.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FetchPhotoLibraryImageResource.swift; sourceTree = ""; };
- D06E4C302134910400088087 /* ChatListEmptyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListEmptyNode.swift; sourceTree = ""; };
D06E4C322134A59700088087 /* ThemeAccentColorActionSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeAccentColorActionSheet.swift; sourceTree = ""; };
D06E4C342134AE3C00088087 /* ThemeAutoNightSettingsController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ThemeAutoNightSettingsController.swift; sourceTree = ""; };
D06F1EA31F6C0A5D00FE8B74 /* ChatHistorySearchContainerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatHistorySearchContainerNode.swift; sourceTree = ""; };
@@ -1294,12 +1252,7 @@
D07BCBFD1F2B792300ED97AA /* LegacyComponents.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = LegacyComponents.framework; path = "../LegacyComponents/build/Debug-iphoneos/LegacyComponents.framework"; sourceTree = ""; };
D07CFF731DCA207200761F81 /* PeerSelectionController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerSelectionController.swift; sourceTree = ""; };
D07CFF751DCA224100761F81 /* PeerSelectionControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PeerSelectionControllerNode.swift; sourceTree = ""; };
- D07CFF781DCA226F00761F81 /* ChatListNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListNode.swift; sourceTree = ""; };
- D07CFF7A1DCA24BF00761F81 /* ChatListNodeEntries.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListNodeEntries.swift; sourceTree = ""; };
- D07CFF7C1DCA273400761F81 /* ChatListViewTransition.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListViewTransition.swift; sourceTree = ""; };
- D07CFF7E1DCA308500761F81 /* ChatListNodeLocation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListNodeLocation.swift; sourceTree = ""; };
D07CFF861DCAAE5E00761F81 /* ForwardAccessoryPanelNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ForwardAccessoryPanelNode.swift; sourceTree = ""; };
- D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListTitleProxyNode.swift; sourceTree = ""; };
D07E413C208A494D00FCA8F0 /* ProxyServerActionSheetController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProxyServerActionSheetController.swift; sourceTree = ""; };
D081A9A822EB26AE0069C449 /* PhoneLabelController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PhoneLabelController.swift; sourceTree = ""; };
D081E103217F57D2003CD921 /* LanguageLinkPreviewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LanguageLinkPreviewController.swift; sourceTree = ""; };
@@ -1381,7 +1334,6 @@
D0A11BFD1E7840A50081CE03 /* ChangePhoneNumberControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChangePhoneNumberControllerNode.swift; sourceTree = ""; };
D0A749961E3AA25200AD786E /* NotificationSoundSelection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationSoundSelection.swift; sourceTree = ""; };
D0A8998C217A294100759EE6 /* SaveIncomingMediaController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SaveIncomingMediaController.swift; sourceTree = ""; };
- D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListItemStrings.swift; sourceTree = ""; };
D0AA840B1FEB2BA3005C6E91 /* OverlayPlayerControlsNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OverlayPlayerControlsNode.swift; sourceTree = ""; };
D0AB0BB01D6718DA002C78E7 /* libiconv.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libiconv.tbd; path = usr/lib/libiconv.tbd; sourceTree = SDKROOT; };
D0AB0BB21D6718EB002C78E7 /* libz.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libz.tbd; path = usr/lib/libz.tbd; sourceTree = SDKROOT; };
@@ -1496,7 +1448,6 @@
D0C50E3D1E93D09200F62E39 /* NotificationItemContainerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NotificationItemContainerNode.swift; sourceTree = ""; };
D0C50E3F1E93D3B000F62E39 /* ChatMessageNotificationItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatMessageNotificationItem.swift; sourceTree = ""; };
D0C50E431E93FCD200F62E39 /* notification.caf */ = {isa = PBXFileReference; lastKnownFileType = file; name = notification.caf; path = TelegramUI/Sounds/notification.caf; sourceTree = ""; };
- D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListSelection.swift; sourceTree = ""; };
D0C932351E0988C60074F044 /* ChatButtonKeyboardInputNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatButtonKeyboardInputNode.swift; sourceTree = ""; };
D0C932371E09E0EA0074F044 /* ChatBotInfoItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatBotInfoItem.swift; sourceTree = ""; };
D0C9323B1E0B4AE90074F044 /* DataAndStorageSettingsController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DataAndStorageSettingsController.swift; sourceTree = ""; };
@@ -1547,6 +1498,11 @@
D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = SolidRoundedButtonNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9CA182302297C00FAB518 /* PasscodeUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = PasscodeUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0C9CA8123022E3900FAB518 /* CallListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = CallListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CAFC2302370900FAB518 /* ChatListUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatListUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB412302B15500FAB518 /* ChatTitleActivityNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = ChatTitleActivityNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CB812302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = DeleteChatPeerActionSheetItem.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = LanguageSuggestionUI.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = TextSelectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
D0CAD90020AEECAC00ACD96E /* ChatEditInterfaceMessageState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatEditInterfaceMessageState.swift; sourceTree = ""; };
D0CB27CE20C17A4A001ACF93 /* TermsOfServiceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceController.swift; sourceTree = ""; };
D0CB27D120C17A7F001ACF93 /* TermsOfServiceControllerNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TermsOfServiceControllerNode.swift; sourceTree = ""; };
@@ -1721,11 +1677,6 @@
D0F69CD61D6B87D30046BCD6 /* MediaManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaManager.swift; sourceTree = ""; };
D0F69DB91D6B88190046BCD6 /* TelegramUI.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = TelegramUI.xcconfig; path = TelegramUI/Config/TelegramUI.xcconfig; sourceTree = ""; };
D0F69DC41D6B89E10046BCD6 /* RadialProgressNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RadialProgressNode.swift; sourceTree = ""; };
- D0F69DF81D6B8A880046BCD6 /* ChatListController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListController.swift; sourceTree = ""; };
- D0F69DF91D6B8A880046BCD6 /* ChatListControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListControllerNode.swift; sourceTree = ""; };
- D0F69DFB1D6B8A880046BCD6 /* ChatListHoleItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListHoleItem.swift; sourceTree = ""; };
- D0F69DFC1D6B8A880046BCD6 /* ChatListItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListItem.swift; sourceTree = ""; };
- D0F69E071D6B8A9C0046BCD6 /* ChatListSearchContainerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatListSearchContainerNode.swift; sourceTree = ""; };
D0F69E0E1D6B8ACF0046BCD6 /* ChatController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatController.swift; sourceTree = ""; };
D0F69E0F1D6B8ACF0046BCD6 /* ChatControllerInteraction.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatControllerInteraction.swift; sourceTree = ""; };
D0F69E101D6B8ACF0046BCD6 /* ChatControllerNode.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ChatControllerNode.swift; sourceTree = ""; };
@@ -1769,7 +1720,6 @@
D0FA0AC41E77431A005BB9B7 /* InstalledStickerPacksController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = InstalledStickerPacksController.swift; sourceTree = ""; };
D0FA35001EA6127000E56FFA /* StorageUsageController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StorageUsageController.swift; sourceTree = ""; };
D0FAB13D22EBC25300D8BED2 /* ChatMessageBubbleBackdrop.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatMessageBubbleBackdrop.swift; sourceTree = ""; };
- D0FBE84E2273395C00B33B52 /* ChatListArchiveInfoItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChatListArchiveInfoItem.swift; sourceTree = ""; };
D0FC194C201F82A000FEDBB2 /* OpenResolvedUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenResolvedUrl.swift; sourceTree = ""; };
D0FC40821D5B8E7400261D9D /* TelegramUI.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TelegramUI.h; sourceTree = ""; };
D0FC40831D5B8E7400261D9D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
@@ -1784,6 +1734,11 @@
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
+ D0C9CBD72302C09000FAB518 /* TextSelectionNode.framework in Frameworks */,
+ D0C9CBB62302B65600FAB518 /* LanguageSuggestionUI.framework in Frameworks */,
+ D0C9CB822302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework in Frameworks */,
+ D0C9CB422302B15500FAB518 /* ChatTitleActivityNode.framework in Frameworks */,
+ D0C9CAFD2302370900FAB518 /* ChatListUI.framework in Frameworks */,
D0C9CA8223022E3900FAB518 /* CallListUI.framework in Frameworks */,
D0C9CA192302297C00FAB518 /* PasscodeUI.framework in Frameworks */,
D0C9C9DE2302267200FAB518 /* SolidRoundedButtonNode.framework in Frameworks */,
@@ -2049,13 +2004,6 @@
09D9689B221F74AA00B1458A /* Title Activity Indicator */ = {
isa = PBXGroup;
children = (
- 09D9689C221F74F000B1458A /* ChatTitleActivityNode.swift */,
- 09D9689E221F760900B1458A /* ChatTitleActivityContentNode.swift */,
- 09D968A0221F7FF100B1458A /* ChatTypingActivityContentNode.swift */,
- 09D968A2221F800A00B1458A /* ChatUploadingActivityContentNode.swift */,
- 09D968A6221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift */,
- 09D968A8221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift */,
- 09D968A4221F801A00B1458A /* ChatPlayingActivityContentNode.swift */,
);
name = "Title Activity Indicator";
sourceTree = "";
@@ -2087,7 +2035,6 @@
isa = PBXGroup;
children = (
D09250051FE5371D003F693F /* GlobalExperimentalSettings.swift */,
- D01749541E1082770057C89A /* StoredMessageFromSearchPeer.swift */,
D0068FA721760FA300D1B315 /* StoreDownloadedMedia.swift */,
D0EC55A2210231D600D1992C /* SearchPeerMembers.swift */,
09CE950D2237E45E00A7D2C3 /* CachedFaqInstantPage.swift */,
@@ -2160,13 +2107,6 @@
name = Share;
sourceTree = "";
};
- D0104F261F471702004E4881 /* Instant Page Gallery */ = {
- isa = PBXGroup;
- children = (
- );
- name = "Instant Page Gallery";
- sourceTree = "";
- };
D01590A922BD46690017C33E /* Animation */ = {
isa = PBXGroup;
children = (
@@ -2614,25 +2554,6 @@
name = "Instant Page";
sourceTree = "";
};
- D07CFF771DCA226200761F81 /* Chat List Node */ = {
- isa = PBXGroup;
- children = (
- D07CFF781DCA226F00761F81 /* ChatListNode.swift */,
- D0F69DFB1D6B8A880046BCD6 /* ChatListHoleItem.swift */,
- D0F69DFC1D6B8A880046BCD6 /* ChatListItem.swift */,
- D0FBE84E2273395C00B33B52 /* ChatListArchiveInfoItem.swift */,
- D0AA29AD1F72770D00C050AC /* ChatListItemStrings.swift */,
- D07CFF7A1DCA24BF00761F81 /* ChatListNodeEntries.swift */,
- D07CFF7C1DCA273400761F81 /* ChatListViewTransition.swift */,
- D07CFF7E1DCA308500761F81 /* ChatListNodeLocation.swift */,
- D0684A031F6C3AD50059F570 /* ChatListTypingNode.swift */,
- D018477F1FFBD12E00075256 /* ChatListPresentationData.swift */,
- 09F21562225C776000AEDF6D /* ChatListBadgeNode.swift */,
- 09F21564225C83E100AEDF6D /* ChatListStatusNode.swift */,
- );
- name = "Chat List Node";
- sourceTree = "";
- };
D081E102217F57B2003CD921 /* Language Link Preview */ = {
isa = PBXGroup;
children = (
@@ -2665,6 +2586,11 @@
D08D45281D5E340200A7428A /* Frameworks */ = {
isa = PBXGroup;
children = (
+ D0C9CBD62302C09000FAB518 /* TextSelectionNode.framework */,
+ D0C9CBB52302B65600FAB518 /* LanguageSuggestionUI.framework */,
+ D0C9CB812302B38A00FAB518 /* DeleteChatPeerActionSheetItem.framework */,
+ D0C9CB412302B15500FAB518 /* ChatTitleActivityNode.framework */,
+ D0C9CAFC2302370900FAB518 /* ChatListUI.framework */,
D0C9CA8123022E3900FAB518 /* CallListUI.framework */,
D0C9CA182302297C00FAB518 /* PasscodeUI.framework */,
D0C9C9DD2302267200FAB518 /* SolidRoundedButtonNode.framework */,
@@ -2804,13 +2730,6 @@
name = Frameworks;
sourceTree = "";
};
- D093D81E20699A6000BC3599 /* Form */ = {
- isa = PBXGroup;
- children = (
- );
- name = Form;
- sourceTree = "";
- };
D099EA1D1DE744EE001AF5A8 /* Horizontal List */ = {
isa = PBXGroup;
children = (
@@ -3421,7 +3340,6 @@
children = (
D0F69DBF1D6B89AE0046BCD6 /* Nodes */,
D0F69DD31D6B8A160046BCD6 /* Controllers */,
- D07CFF771DCA226200761F81 /* Chat List Node */,
D0E7A1BB1D8C17EB00C37A6F /* Chat History Node */,
);
name = Components;
@@ -3441,7 +3359,6 @@
D0B2F76B2052A7D600D3BFB9 /* SinglePhoneInputNode.swift */,
D056CD6F1FF147B000880D28 /* IconButtonNode.swift */,
09F85BA621E7DA5F00D73170 /* BlurredImageNode.swift */,
- D00580B221E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift */,
09749BCE21F236F2008FDDE9 /* ModernCheckNode.swift */,
);
name = Nodes;
@@ -3458,7 +3375,6 @@
isa = PBXGroup;
children = (
D01B27931E38F3920022A4C0 /* Item List */,
- D093D81E20699A6000BC3599 /* Form */,
);
name = Controllers;
sourceTree = "";
@@ -3468,7 +3384,7 @@
children = (
D0F69DE71D6B8A590046BCD6 /* Authorization */,
D05174C11EAE582A00A1BF36 /* Root */,
- D0F69DF61D6B8A720046BCD6 /* Chat List */,
+ D017494F1E1067C00057C89A /* Hashtag Search */,
D0F69E0D1D6B8AB90046BCD6 /* Chat */,
D04281F2200E5A70009DDE36 /* Chat Recent Actions */,
D00DE6961E8E8E21003F0D76 /* Share */,
@@ -3501,39 +3417,6 @@
name = Authorization;
sourceTree = "";
};
- D0F69DF61D6B8A720046BCD6 /* Chat List */ = {
- isa = PBXGroup;
- children = (
- D0F69DF81D6B8A880046BCD6 /* ChatListController.swift */,
- D0F69DF91D6B8A880046BCD6 /* ChatListControllerNode.swift */,
- D01749611E11DB240057C89A /* ChatListTitleView.swift */,
- D0575AEA1E9FD579006F2541 /* ChatListTitleLockView.swift */,
- D07E413A208A432100FCA8F0 /* ChatListTitleProxyNode.swift */,
- D06E4C302134910400088087 /* ChatListEmptyNode.swift */,
- D017494F1E1067C00057C89A /* Hashtag Search */,
- D0C683FB21AD797F00A6CAD5 /* ChatListSelection.swift */,
- D0F69E051D6B8A8B0046BCD6 /* Search */,
- );
- name = "Chat List";
- sourceTree = "";
- };
- D0F69E051D6B8A8B0046BCD6 /* Search */ = {
- isa = PBXGroup;
- children = (
- D0F69E071D6B8A9C0046BCD6 /* ChatListSearchContainerNode.swift */,
- D0F69E061D6B8A930046BCD6 /* Recent Peers */,
- );
- name = Search;
- sourceTree = "";
- };
- D0F69E061D6B8A930046BCD6 /* Recent Peers */ = {
- isa = PBXGroup;
- children = (
- D049EAED1E44BB3200A2CD3A /* ChatListRecentPeersListItem.swift */,
- );
- name = "Recent Peers";
- sourceTree = "";
- };
D0F69E0D1D6B8AB90046BCD6 /* Chat */ = {
isa = PBXGroup;
children = (
@@ -3668,7 +3551,6 @@
D0F69E4F1D6B8BC40046BCD6 /* Gallery */,
D0575AF81EA0FD94006F2541 /* Avatar Gallery */,
D0EEE99F2165583B001292A6 /* Document */,
- D0104F261F471702004E4881 /* Instant Page Gallery */,
D07827CC1E03F32C00071108 /* Instant Page */,
D0D748041E7AF62000F4B1F6 /* Stickers */,
D020A9D81FEAE611008C66F7 /* Player */,
@@ -4120,12 +4002,10 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- D0684A041F6C3AD50059F570 /* ChatListTypingNode.swift in Sources */,
D0383EE6207D299600C45548 /* EmojisChatInputPanelItem.swift in Sources */,
D00817E322B47A14008A895F /* TGPresentationAutoNightPreferences.m in Sources */,
D0E1199E229809B6008CAE3A /* ChannelDiscussionGroupActionSheetItem.swift in Sources */,
09EDAD2A220DA6A40012A50B /* VolumeButtons.swift in Sources */,
- 09D968A9221F804700B1458A /* ChatRecordingVideoActivityContentNode.swift in Sources */,
D0E1199A2297F9C6008CAE3A /* ChannelDiscussionGroupSetupController.swift in Sources */,
D083491C209361DC008CFD52 /* AvatarGalleryItemFooterContentNode.swift in Sources */,
090E778A22A9F23C00CD99F5 /* ChannelOwnershipTransferController.swift in Sources */,
@@ -4165,7 +4045,6 @@
D0EC6CCE1EB9F58800EBF1C3 /* AccountContext.swift in Sources */,
D0EC6CD11EB9F58800EBF1C3 /* UrlHandling.swift in Sources */,
09F85BA521E7821500D73170 /* ThemeGridSelectionPanelNode.swift in Sources */,
- D0EC6CD51EB9F58800EBF1C3 /* StoredMessageFromSearchPeer.swift in Sources */,
09CE950E2237E45E00A7D2C3 /* CachedFaqInstantPage.swift in Sources */,
D0EC6CD71EB9F58800EBF1C3 /* EmojiUtils.swift in Sources */,
D0EC6CD91EB9F58800EBF1C3 /* ValidateAddressNameInteractive.swift in Sources */,
@@ -4184,8 +4063,6 @@
D0E8B8BF20447A4600605593 /* SecretChatKeyControllerNode.swift in Sources */,
D02B2B9820810DA00062476B /* StickerPaneSearchStickerItem.swift in Sources */,
D020A9DC1FEAE6E7008C66F7 /* OverlayPlayerControllerNode.swift in Sources */,
- 09D968A1221F7FF100B1458A /* ChatTypingActivityContentNode.swift in Sources */,
- 09D968A3221F800A00B1458A /* ChatUploadingActivityContentNode.swift in Sources */,
090E778622A9B95A00CD99F5 /* PeersNearbyController.swift in Sources */,
D04ECD721FFBF22B00DE9029 /* OpenUrl.swift in Sources */,
D056CD7A1FF3CC2A00880D28 /* ListMessagePlaybackOverlayNode.swift in Sources */,
@@ -4221,7 +4098,6 @@
D0EC6D091EB9F58800EBF1C3 /* info.c in Sources */,
D0EC6D0A1EB9F58800EBF1C3 /* internal.c in Sources */,
D0EC6D0B1EB9F58800EBF1C3 /* opusfile.c in Sources */,
- D01847801FFBD12E00075256 /* ChatListPresentationData.swift in Sources */,
09C500242142BA6400EF253E /* ItemListWebsiteItem.swift in Sources */,
D0EC6D0C1EB9F58800EBF1C3 /* stream.c in Sources */,
09FFBCD72281BB2D00C33B4B /* ChatTextLinkEditController.swift in Sources */,
@@ -4229,7 +4105,6 @@
D0AB269E21D56A12008F6685 /* ChannelPermissionsController.swift in Sources */,
D0B69C3920EBB397003632C7 /* ChatMessageInteractiveInstantVideoNode.swift in Sources */,
09F79A0D21C88E8900820234 /* LegacyWebSearchEditor.swift in Sources */,
- 09F21565225C83E100AEDF6D /* ChatListStatusNode.swift in Sources */,
D056CD701FF147B000880D28 /* IconButtonNode.swift in Sources */,
D0F760DB222034910074F7E5 /* ChannelStatsController.swift in Sources */,
D0FA08CA2049BEAC00DD23FC /* ChatEmptyNode.swift in Sources */,
@@ -4245,7 +4120,6 @@
D0CE67941F7DB45100FFB557 /* ChatMessageContactBubbleContentNode.swift in Sources */,
09749BCD21F23139008FDDE9 /* WallpaperGalleryDecorationNode.swift in Sources */,
09EDAD26220D30980012A50B /* AutodownloadConnectionTypeController.swift in Sources */,
- 09D968A7221F803500B1458A /* ChatRecordingVoiceActivityContentNode.swift in Sources */,
D05D8B3A2192FC460064586F /* LocalizationListController.swift in Sources */,
D0943AFE1FDAE454001522CC /* ChatMultipleAvatarsNavigationNode.swift in Sources */,
D0B21B15220D85DD003F741D /* TabBarAccountSwitchController.swift in Sources */,
@@ -4289,15 +4163,9 @@
D0CE8CE51F6F354400AA2DB0 /* ChatTextInputAccessoryItem.swift in Sources */,
D097C26820DD0A1D007BB4B8 /* PeerReportController.swift in Sources */,
09F664C621EB400A00AB7E26 /* ThemeGridSearchContentNode.swift in Sources */,
- D0EC6D4B1EB9F58800EBF1C3 /* ChatListNode.swift in Sources */,
- D0EC6D4D1EB9F58800EBF1C3 /* ChatListHoleItem.swift in Sources */,
0962E67921B67A9800245FD9 /* ChatMessageAnimatedStickerItemNode.swift in Sources */,
- D0EC6D4E1EB9F58800EBF1C3 /* ChatListItem.swift in Sources */,
D0B2F76A2052920D00D3BFB9 /* UserInfoEditingPhoneItem.swift in Sources */,
D0AEAE272080D6970013176E /* PaneSearchBarNode.swift in Sources */,
- D0EC6D501EB9F58800EBF1C3 /* ChatListNodeEntries.swift in Sources */,
- D0EC6D511EB9F58800EBF1C3 /* ChatListViewTransition.swift in Sources */,
- D0EC6D521EB9F58800EBF1C3 /* ChatListNodeLocation.swift in Sources */,
D0EC6D531EB9F58800EBF1C3 /* ChatHistoryViewForLocation.swift in Sources */,
D06BB8821F58994B0084FC30 /* LegacyInstantVideoController.swift in Sources */,
D0EC6D541EB9F58800EBF1C3 /* ChatHistoryEntriesForView.swift in Sources */,
@@ -4322,7 +4190,6 @@
D0EC6D5D1EB9F58800EBF1C3 /* ListMessageSnippetItemNode.swift in Sources */,
D0EC6D5E1EB9F58800EBF1C3 /* ListMessageHoleItem.swift in Sources */,
D0EC6D5F1EB9F58800EBF1C3 /* GridMessageItem.swift in Sources */,
- 09F21563225C776100AEDF6D /* ChatListBadgeNode.swift in Sources */,
D00817CB22B47A14008A895F /* WatchBridge.swift in Sources */,
D0EC6D601EB9F58800EBF1C3 /* GridHoleItem.swift in Sources */,
D0EC6D611EB9F58800EBF1C3 /* GridMessageSelectionNode.swift in Sources */,
@@ -4339,7 +4206,6 @@
D0EC6D691EB9F58800EBF1C3 /* AuthorizationSequenceSplashController.swift in Sources */,
09E4A805223D4A5A0038140F /* OpenSettings.swift in Sources */,
D0EC6D6A1EB9F58800EBF1C3 /* AuthorizationSequenceSplashControllerNode.swift in Sources */,
- D0C683FC21AD797F00A6CAD5 /* ChatListSelection.swift in Sources */,
D0EC6D6D1EB9F58800EBF1C3 /* AuthorizationSequencePhoneEntryController.swift in Sources */,
D0EC6D6E1EB9F58800EBF1C3 /* AuthorizationSequencePhoneEntryControllerNode.swift in Sources */,
D0B85C211FF70BEC00E795B4 /* AuthorizationSequenceAwaitingAccountResetControllerNode.swift in Sources */,
@@ -4355,15 +4221,9 @@
091954792294754E00E11046 /* AnimatedStickerUtils.swift in Sources */,
D0EC6D741EB9F58800EBF1C3 /* AuthorizationSequenceSignUpControllerNode.swift in Sources */,
D0EC6D751EB9F58800EBF1C3 /* TelegramRootController.swift in Sources */,
- D0EC6D761EB9F58800EBF1C3 /* ChatListController.swift in Sources */,
- D0EC6D771EB9F58800EBF1C3 /* ChatListControllerNode.swift in Sources */,
- D0EC6D781EB9F58800EBF1C3 /* ChatListTitleView.swift in Sources */,
D0F6800A1EE750EE000E5906 /* ChannelBannedMemberController.swift in Sources */,
- D0EC6D791EB9F58800EBF1C3 /* ChatListTitleLockView.swift in Sources */,
D03AA4DF202DBF6F0056C405 /* ChatContextResultPeekContentNode.swift in Sources */,
D00817D622B47A14008A895F /* TGProxyItem.m in Sources */,
- D0EC6D7A1EB9F58800EBF1C3 /* ChatListSearchContainerNode.swift in Sources */,
- D0EC6D7B1EB9F58800EBF1C3 /* ChatListRecentPeersListItem.swift in Sources */,
0910B0ED21FA178C00F8F87D /* WallpaperPreviewMedia.swift in Sources */,
D0EC6D7F1EB9F58800EBF1C3 /* HashtagSearchController.swift in Sources */,
D0EC6D801EB9F58800EBF1C3 /* HashtagSearchControllerNode.swift in Sources */,
@@ -4416,7 +4276,6 @@
09D304152173C0E900C00567 /* WatchManager.swift in Sources */,
9F06830921A404AB001D8EDB /* NotificationExceptionControllerNode.swift in Sources */,
D035734B22B5CCCA00F0920D /* LegacyBuffer.swift in Sources */,
- 09D9689D221F74F000B1458A /* ChatTitleActivityNode.swift in Sources */,
D0EC6D991EB9F58900EBF1C3 /* ChatMessageMediaBubbleContentNode.swift in Sources */,
D0EC6D9A1EB9F58900EBF1C3 /* ChatMessageReplyInfoNode.swift in Sources */,
D0FE4DE41F0AEBB900E8A0B3 /* SharedVideoContextManager.swift in Sources */,
@@ -4426,7 +4285,6 @@
D0750C8222B2E4EE00BE5F6E /* SharedWakeupManager.swift in Sources */,
D0EC6D9D1EB9F58900EBF1C3 /* ChatMessageTextBubbleContentNode.swift in Sources */,
D00817DE22B47A14008A895F /* TGBridgeServer.m in Sources */,
- D0FBE84F2273395C00B33B52 /* ChatListArchiveInfoItem.swift in Sources */,
09F664D021EBCFB900AB7E26 /* WallpaperCropNode.swift in Sources */,
D0EC6D9E1EB9F58900EBF1C3 /* ChatMessageWebpageBubbleContentNode.swift in Sources */,
D0750C8722B2E76300BE5F6E /* ShareExtensionContext.swift in Sources */,
@@ -4446,7 +4304,6 @@
D0EC6DAB1EB9F58900EBF1C3 /* ChatInterfaceStateAccessoryPanels.swift in Sources */,
D0EC6DAC1EB9F58900EBF1C3 /* ChatInterfaceStateInputPanels.swift in Sources */,
D056CD761FF2A30900880D28 /* ChatSwipeToReplyRecognizer.swift in Sources */,
- D00580B321E4B51600CB7CD3 /* DeleteChatPeerActionSheetItem.swift in Sources */,
D091C7A41F8EBB1E00D7DE13 /* ChatPresentationData.swift in Sources */,
09A218F522A15F1400DE6898 /* ThemeSettingsAppIconItem.swift in Sources */,
D0EC6DAD1EB9F58900EBF1C3 /* ChatInterfaceStateNavigationButtons.swift in Sources */,
@@ -4465,7 +4322,6 @@
D0EC6DB51EB9F58900EBF1C3 /* ReplyAccessoryPanelNode.swift in Sources */,
D0EC6DB61EB9F58900EBF1C3 /* ForwardAccessoryPanelNode.swift in Sources */,
D0EC6DB71EB9F58900EBF1C3 /* EditAccessoryPanelNode.swift in Sources */,
- D06E4C312134910400088087 /* ChatListEmptyNode.swift in Sources */,
D0EC6DB81EB9F58900EBF1C3 /* WebpagePreviewAccessoryPanelNode.swift in Sources */,
D0EC6DB91EB9F58900EBF1C3 /* ChatInputNode.swift in Sources */,
099529AC21CDBBB200805E13 /* QRCode.swift in Sources */,
@@ -4558,14 +4414,12 @@
D0EC6DF91EB9F58900EBF1C3 /* PeerMediaCollectionInterfaceStateButtons.swift in Sources */,
09F664C821EB4A2600AB7E26 /* ThemeGridSearchItem.swift in Sources */,
09A218D9229EE1B600DE6898 /* HorizontalStickerGridItem.swift in Sources */,
- D07E413B208A432100FCA8F0 /* ChatListTitleProxyNode.swift in Sources */,
09EC0DED22CB583C00E7185B /* TextLinkHandling.swift in Sources */,
D08984F02114AE0C00918162 /* DataPrivacySettingsController.swift in Sources */,
D0EC6DFB1EB9F58900EBF1C3 /* AvatarGalleryController.swift in Sources */,
D00817DB22B47A14008A895F /* LegacyChatImport.swift in Sources */,
09EDAD2C2211552F0012A50B /* AutodownloadMediaCategoryController.swift in Sources */,
090B48C82200BCA8005083FA /* WallpaperUploadManager.swift in Sources */,
- 09D968A5221F801A00B1458A /* ChatPlayingActivityContentNode.swift in Sources */,
D0E8B8BB2044780600605593 /* ItemListSecretChatKeyItem.swift in Sources */,
D06F31E62135A41C001A0F12 /* ThemeSettingsBrightnessItem.swift in Sources */,
D01590BD22BDAEBC0017C33E /* DDSImage.cpp in Sources */,
@@ -4619,7 +4473,6 @@
D0EC6E321EB9F58900EBF1C3 /* CreateGroupController.swift in Sources */,
D0EC55A3210231D600D1992C /* SearchPeerMembers.swift in Sources */,
D0EC6E331EB9F58900EBF1C3 /* CreateChannelController.swift in Sources */,
- D0AA29AE1F72770D00C050AC /* ChatListItemStrings.swift in Sources */,
D0EC6E351EB9F58900EBF1C3 /* ItemListAvatarAndNameItem.swift in Sources */,
D00ACA5A2022897D0045D427 /* ProcessedPeerRestrictionText.swift in Sources */,
D04203152037162700490EA5 /* MediaInputPaneTrendingItem.swift in Sources */,
@@ -4738,7 +4591,6 @@
09F664C221EAAFCB00AB7E26 /* ThemeColorsGridControllerNode.swift in Sources */,
D0BCC3D420404CC7008126C2 /* ChatMessageActionSheetController.swift in Sources */,
0957DE2322DE28FB001B4D57 /* ThemePreviewController.swift in Sources */,
- 09D9689F221F760900B1458A /* ChatTitleActivityContentNode.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
diff --git a/submodules/TextSelectionNode/Info.plist b/submodules/TextSelectionNode/Info.plist
new file mode 100644
index 0000000000..e1fe4cfb7b
--- /dev/null
+++ b/submodules/TextSelectionNode/Info.plist
@@ -0,0 +1,22 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ $(DEVELOPMENT_LANGUAGE)
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ FMWK
+ CFBundleShortVersionString
+ 1.0
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+
+
diff --git a/submodules/TextSelectionNode/Sources/TextSelectionNode.h b/submodules/TextSelectionNode/Sources/TextSelectionNode.h
new file mode 100644
index 0000000000..4f7466a61b
--- /dev/null
+++ b/submodules/TextSelectionNode/Sources/TextSelectionNode.h
@@ -0,0 +1,19 @@
+//
+// TextSelectionNode.h
+// TextSelectionNode
+//
+// Created by Peter on 8/13/19.
+// Copyright © 2019 Telegram Messenger LLP. All rights reserved.
+//
+
+#import
+
+//! Project version number for TextSelectionNode.
+FOUNDATION_EXPORT double TextSelectionNodeVersionNumber;
+
+//! Project version string for TextSelectionNode.
+FOUNDATION_EXPORT const unsigned char TextSelectionNodeVersionString[];
+
+// In this header, you should import all the public headers of your framework using statements like #import
+
+
diff --git a/submodules/TextSelectionNode/Sources/TextSelectionNode.swift b/submodules/TextSelectionNode/Sources/TextSelectionNode.swift
new file mode 100644
index 0000000000..620678cbe5
--- /dev/null
+++ b/submodules/TextSelectionNode/Sources/TextSelectionNode.swift
@@ -0,0 +1,407 @@
+import Foundation
+import UIKit
+import UIKit.UIGestureRecognizerSubclass
+import AsyncDisplayKit
+import Display
+
+private func findScrollView(view: UIView?) -> UIScrollView? {
+ if let view = view {
+ if let view = view as? UIScrollView {
+ return view
+ }
+ return findScrollView(view: view.superview)
+ } else {
+ return nil
+ }
+}
+
+private func cancelScrollViewGestures(view: UIView?) {
+ if let view = view {
+ if let gestureRecognizers = view.gestureRecognizers {
+ for recognizer in gestureRecognizers {
+ if let recognizer = recognizer as? UIPanGestureRecognizer {
+ switch recognizer.state {
+ case .began, .possible:
+ recognizer.state = .ended
+ default:
+ break
+ }
+ }
+ }
+ }
+ cancelScrollViewGestures(view: view.superview)
+ }
+}
+
+private func generateKnobImage(color: UIColor, inverted: Bool = false) -> UIImage? {
+ let f: (CGSize, CGContext) -> Void = { size, context in
+ context.clear(CGRect(origin: CGPoint(), size: size))
+ context.setFillColor(color.cgColor)
+ context.fill(CGRect(origin: CGPoint(x: (size.width - 2.0) / 2.0, y: size.width / 2.0), size: CGSize(width: 2.0, height: size.height - size.width / 2.0 - 1.0)))
+ context.fillEllipse(in: CGRect(origin: CGPoint(), size: CGSize(width: size.width, height: size.width)))
+ context.fillEllipse(in: CGRect(origin: CGPoint(x: (size.width - 2.0) / 2.0, y: size.width + 2.0), size: CGSize(width: 2.0, height: 2.0)))
+ }
+ let size = CGSize(width: 12.0, height: 12.0 + 2.0 + 2.0)
+ if inverted {
+ return generateImage(size, contextGenerator: f)?.stretchableImage(withLeftCapWidth: Int(size.width / 2.0), topCapHeight: Int(size.height) - (Int(size.width) + 1))
+ } else {
+ return generateImage(size, rotatedContext: f)?.stretchableImage(withLeftCapWidth: Int(size.width / 2.0), topCapHeight: Int(size.width) + 1)
+ }
+}
+
+public final class TextSelectionTheme {
+ public let selection: UIColor
+ public let knob: UIColor
+
+ public init(selection: UIColor, knob: UIColor) {
+ self.selection = selection
+ self.knob = knob
+ }
+}
+
+private enum Knob {
+ case left
+ case right
+}
+
+private final class TextSelectionGetureRecognizer: UIGestureRecognizer, UIGestureRecognizerDelegate {
+ private var longTapTimer: Timer?
+ private var movingKnob: (Knob, CGPoint, CGPoint)?
+ private var currentLocation: CGPoint?
+
+ var beginSelection: ((CGPoint) -> Void)?
+ var knobAtPoint: ((CGPoint) -> (Knob, CGPoint)?)?
+ var moveKnob: ((Knob, CGPoint) -> Void)?
+ var finishedMovingKnob: (() -> Void)?
+ var clearSelection: (() -> Void)?
+
+ override init(target: Any?, action: Selector?) {
+ super.init(target: nil, action: nil)
+
+ self.delegate = self
+ }
+
+ override public func reset() {
+ super.reset()
+
+ self.longTapTimer?.invalidate()
+ self.longTapTimer = nil
+
+ self.movingKnob = nil
+ self.currentLocation = nil
+ }
+
+ override func touchesBegan(_ touches: Set, with event: UIEvent) {
+ super.touchesBegan(touches, with: event)
+
+ let currentLocation = touches.first?.location(in: self.view)
+ self.currentLocation = currentLocation
+
+ if let currentLocation = currentLocation {
+ if let (knob, knobPosition) = self.knobAtPoint?(currentLocation) {
+ self.movingKnob = (knob, knobPosition, currentLocation)
+ cancelScrollViewGestures(view: self.view?.superview)
+ self.state = .began
+ } else if self.longTapTimer == nil {
+ final class TimerTarget: NSObject {
+ let f: () -> Void
+
+ init(_ f: @escaping () -> Void) {
+ self.f = f
+ }
+
+ @objc func event() {
+ self.f()
+ }
+ }
+ let longTapTimer = Timer(timeInterval: 0.3, target: TimerTarget({ [weak self] in
+ self?.longTapEvent()
+ }), selector: #selector(TimerTarget.event), userInfo: nil, repeats: false)
+ self.longTapTimer = longTapTimer
+ RunLoop.main.add(longTapTimer, forMode: .common)
+ }
+ }
+ }
+
+ override func touchesMoved(_ touches: Set, with event: UIEvent) {
+ super.touchesMoved(touches, with: event)
+
+ let currentLocation = touches.first?.location(in: self.view)
+ self.currentLocation = currentLocation
+
+ if let (knob, initialKnobPosition, initialGesturePosition) = self.movingKnob, let currentLocation = currentLocation {
+
+ self.moveKnob?(knob, CGPoint(x: initialKnobPosition.x + currentLocation.x - initialGesturePosition.x, y: initialKnobPosition.y + currentLocation.y - initialGesturePosition.y))
+ }
+ }
+
+ override func touchesEnded(_ touches: Set, with event: UIEvent) {
+ super.touchesEnded(touches, with: event)
+
+ if let longTapTimer = self.longTapTimer {
+ self.longTapTimer = nil
+ longTapTimer.invalidate()
+ self.clearSelection?()
+ } else {
+ if let _ = self.currentLocation, let _ = self.movingKnob {
+ self.finishedMovingKnob?()
+ }
+ }
+ self.state = .ended
+ }
+
+ override func touchesCancelled(_ touches: Set, with event: UIEvent) {
+ super.touchesCancelled(touches, with: event)
+
+ self.state = .cancelled
+ }
+
+ private func longTapEvent() {
+ if let currentLocation = self.currentLocation {
+ self.beginSelection?(currentLocation)
+ self.state = .ended
+ }
+ }
+
+ func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive touch: UITouch) -> Bool {
+ return true
+ }
+
+ @available(iOS 9.0, *)
+ func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldReceive press: UIPress) -> Bool {
+ return true
+ }
+}
+
+public final class TextSelectionNodeView: UIView {
+
+}
+
+public enum TextSelectionAction {
+ case copy
+ case share
+ case lookup
+}
+
+public final class TextSelectionNode: ASDisplayNode {
+ private let theme: TextSelectionTheme
+ private let textNode: TextNode
+ private let present: (ViewController, Any?) -> Void
+ private weak var rootNode: ASDisplayNode?
+ private let performAction: (String, TextSelectionAction) -> Void
+ private var highlightOverlay: LinkHighlightingNode?
+ private let leftKnob: ASImageNode
+ private let rightKnob: ASImageNode
+
+ private var currentRange: (Int, Int)?
+ private var currentRects: [CGRect]?
+
+ public init(theme: TextSelectionTheme, textNode: TextNode, present: @escaping (ViewController, Any?) -> Void, rootNode: ASDisplayNode, performAction: @escaping (String, TextSelectionAction) -> Void) {
+ self.theme = theme
+ self.textNode = textNode
+ self.present = present
+ self.rootNode = rootNode
+ self.performAction = performAction
+ self.leftKnob = ASImageNode()
+ self.leftKnob.isUserInteractionEnabled = false
+ self.leftKnob.image = generateKnobImage(color: theme.knob)
+ self.leftKnob.displaysAsynchronously = false
+ self.leftKnob.displayWithoutProcessing = true
+ self.leftKnob.alpha = 0.0
+ self.rightKnob = ASImageNode()
+ self.rightKnob.isUserInteractionEnabled = false
+ self.rightKnob.image = generateKnobImage(color: theme.knob, inverted: true)
+ self.rightKnob.displaysAsynchronously = false
+ self.rightKnob.displayWithoutProcessing = true
+ self.rightKnob.alpha = 0.0
+
+ super.init()
+
+ self.setViewBlock({
+ return TextSelectionNodeView()
+ })
+
+ self.addSubnode(self.leftKnob)
+ self.addSubnode(self.rightKnob)
+ }
+
+ override public func didLoad() {
+ super.didLoad()
+
+ let recognizer = TextSelectionGetureRecognizer(target: nil, action: nil)
+ recognizer.knobAtPoint = { [weak self] point in
+ guard let strongSelf = self else {
+ return nil
+ }
+ if !strongSelf.leftKnob.alpha.isZero, strongSelf.leftKnob.frame.insetBy(dx: -4.0, dy: -8.0).contains(point) {
+ return (.left, strongSelf.leftKnob.frame.offsetBy(dx: 0.0, dy: strongSelf.leftKnob.frame.width / 2.0).center)
+ }
+ if !strongSelf.rightKnob.alpha.isZero, strongSelf.rightKnob.frame.insetBy(dx: -4.0, dy: -8.0).contains(point) {
+ return (.right, strongSelf.rightKnob.frame.offsetBy(dx: 0.0, dy: -strongSelf.rightKnob.frame.width / 2.0).center)
+ }
+ return nil
+ }
+ recognizer.moveKnob = { [weak self] knob, point in
+ guard let strongSelf = self, let cachedLayout = strongSelf.textNode.cachedLayout, let _ = cachedLayout.attributedString, let currentRange = strongSelf.currentRange else {
+ return
+ }
+
+ let mappedPoint = strongSelf.view.convert(point, to: strongSelf.textNode.view)
+ if let stringIndex = strongSelf.textNode.attributesAtPoint(mappedPoint, orNearest: true)?.0 {
+ //let string = attributedString.string as NSString
+ var updatedMin = currentRange.0
+ var updatedMax = currentRange.1
+ switch knob {
+ case .left:
+ updatedMin = stringIndex
+ case .right:
+ updatedMax = stringIndex
+ }
+ let updatedRange = NSRange(location: min(updatedMin, updatedMax), length: max(updatedMin, updatedMax) - min(updatedMin, updatedMax))
+ if strongSelf.currentRange?.0 != updatedMin || strongSelf.currentRange?.1 != updatedMax {
+ strongSelf.currentRange = (updatedMin, updatedMax)
+ strongSelf.updateSelection(range: updatedRange)
+ }
+
+ if let scrollView = findScrollView(view: strongSelf.view) {
+ let scrollPoint = strongSelf.view.convert(point, to: scrollView)
+ scrollView.scrollRectToVisible(CGRect(origin: CGPoint(x: scrollPoint.x, y: scrollPoint.y - 30.0), size: CGSize(width: 1.0, height: 60.0)), animated: false)
+ }
+ }
+ }
+ recognizer.finishedMovingKnob = { [weak self] in
+ guard let strongSelf = self else {
+ return
+ }
+ strongSelf.displayMenu()
+ }
+ recognizer.beginSelection = { [weak self] point in
+ guard let strongSelf = self, let cachedLayout = strongSelf.textNode.cachedLayout, let attributedString = cachedLayout.attributedString else {
+ return
+ }
+
+ strongSelf.dismissSelection()
+
+ let mappedPoint = strongSelf.view.convert(point, to: strongSelf.textNode.view)
+ var resultRange: NSRange?
+ if let stringIndex = strongSelf.textNode.attributesAtPoint(mappedPoint, orNearest: false)?.0 {
+ let string = attributedString.string as NSString
+
+ let inputRange = CFRangeMake(0, string.length)
+ let flag = UInt(kCFStringTokenizerUnitWord)
+ let locale = CFLocaleCopyCurrent()
+ let tokenizer = CFStringTokenizerCreate( kCFAllocatorDefault, string as CFString, inputRange, flag, locale)
+ var tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer)
+
+ while !tokenType.isEmpty {
+ let currentTokenRange = CFStringTokenizerGetCurrentTokenRange(tokenizer)
+ if currentTokenRange.location <= stringIndex && currentTokenRange.location + currentTokenRange.length > stringIndex {
+ resultRange = NSRange(location: currentTokenRange.location, length: currentTokenRange.length)
+ break
+ }
+ tokenType = CFStringTokenizerAdvanceToNextToken(tokenizer)
+ }
+ if resultRange == nil {
+ resultRange = NSRange(location: stringIndex, length: 1)
+ }
+ }
+
+ strongSelf.currentRange = resultRange.flatMap {
+ ($0.lowerBound, $0.upperBound)
+ }
+ strongSelf.updateSelection(range: resultRange)
+ strongSelf.displayMenu()
+ }
+ recognizer.clearSelection = { [weak self] in
+ self?.dismissSelection()
+ }
+ self.view.addGestureRecognizer(recognizer)
+ }
+
+ private func updateSelection(range: NSRange?) {
+ var rects: [CGRect]?
+
+ if let range = range {
+ rects = self.textNode.rangeRects(in: range)
+ }
+
+ self.currentRects = rects
+
+ if let rects = rects, !rects.isEmpty {
+ let highlightOverlay: LinkHighlightingNode
+ if let current = self.highlightOverlay {
+ highlightOverlay = current
+ } else {
+ highlightOverlay = LinkHighlightingNode(color: self.theme.selection)
+ highlightOverlay.isUserInteractionEnabled = false
+ highlightOverlay.innerRadius = 0.0
+ highlightOverlay.outerRadius = 0.0
+ highlightOverlay.inset = 1.0
+ self.highlightOverlay = highlightOverlay
+ self.insertSubnode(highlightOverlay, at: 0)
+ }
+ highlightOverlay.frame = self.bounds
+ highlightOverlay.updateRects(rects)
+ if let image = self.leftKnob.image {
+ self.leftKnob.frame = CGRect(origin: CGPoint(x: floor(rects[0].minX - 1.0 - image.size.width / 2.0), y: rects[0].minY - 1.0 - image.size.width), size: CGSize(width: image.size.width, height: image.size.width + rects[0].height + 2.0))
+ self.rightKnob.frame = CGRect(origin: CGPoint(x: floor(rects[rects.count - 1].maxX + 1.0 - image.size.width / 2.0), y: rects[rects.count - 1].maxY + 1.0 - (rects[0].height + 2.0)), size: CGSize(width: image.size.width, height: image.size.width + rects[0].height + 2.0))
+ }
+ if self.leftKnob.alpha.isZero {
+ highlightOverlay.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.18)
+ self.leftKnob.alpha = 1.0
+ self.leftKnob.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.18)
+ self.rightKnob.alpha = 1.0
+ self.rightKnob.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.18)
+ }
+ } else if let highlightOverlay = self.highlightOverlay {
+ self.highlightOverlay = nil
+ highlightOverlay.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.18, removeOnCompletion: false, completion: { [weak highlightOverlay] _ in
+ highlightOverlay?.removeFromSupernode()
+ })
+ self.leftKnob.layer.animateAlpha(from: 0.0, to: 1.0, duration: 0.18)
+ self.leftKnob.alpha = 0.0
+ self.leftKnob.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.18)
+ self.rightKnob.alpha = 0.0
+ self.rightKnob.layer.animateAlpha(from: 1.0, to: 0.0, duration: 0.18)
+ }
+ }
+
+ private func dismissSelection() {
+ self.currentRange = nil
+ self.updateSelection(range: nil)
+ }
+
+ private func displayMenu() {
+ guard let currentRects = self.currentRects, !currentRects.isEmpty, let currentRange = self.currentRange, let cachedLayout = self.textNode.cachedLayout, let attributedString = cachedLayout.attributedString else {
+ return
+ }
+ let range = NSRange(location: min(currentRange.0, currentRange.1), length: max(currentRange.0, currentRange.1) - min(currentRange.0, currentRange.1))
+ var completeRect = currentRects[0]
+ for i in 0 ..< currentRects.count {
+ completeRect = completeRect.union(currentRects[i])
+ }
+ completeRect = completeRect.insetBy(dx: 0.0, dy: -12.0)
+
+ let text = (attributedString.string as NSString).substring(with: range)
+
+ var actions: [ContextMenuAction] = []
+ actions.append(ContextMenuAction(content: .text(title: "Copy", accessibilityLabel: "Copy"), action: { [weak self] in
+ self?.performAction(text, .copy)
+ self?.dismissSelection()
+ }))
+ actions.append(ContextMenuAction(content: .text(title: "Look Up", accessibilityLabel: "Look Up"), action: { [weak self] in
+ self?.performAction(text, .lookup)
+ self?.dismissSelection()
+ }))
+ actions.append(ContextMenuAction(content: .text(title: "Share...", accessibilityLabel: "Share"), action: { [weak self] in
+ self?.performAction(text, .share)
+ self?.dismissSelection()
+ }))
+ self.present(ContextMenuController(actions: actions, catchTapsOutside: false, hasHapticFeedback: false), ContextMenuControllerPresentationArguments(sourceNodeAndRect: { [weak self] in
+ guard let strongSelf = self, let rootNode = strongSelf.rootNode else {
+ return nil
+ }
+ return (strongSelf, completeRect, rootNode, rootNode.bounds)
+ }, bounce: false))
+ }
+}
diff --git a/submodules/TextSelectionNode/TextSelectionNode_Xcode.xcodeproj/project.pbxproj b/submodules/TextSelectionNode/TextSelectionNode_Xcode.xcodeproj/project.pbxproj
new file mode 100644
index 0000000000..948771da9d
--- /dev/null
+++ b/submodules/TextSelectionNode/TextSelectionNode_Xcode.xcodeproj/project.pbxproj
@@ -0,0 +1,555 @@
+// !$*UTF8*$!
+{
+ archiveVersion = 1;
+ classes = {
+ };
+ objectVersion = 50;
+ objects = {
+
+/* Begin PBXBuildFile section */
+ D0C9CBCC2302C00600FAB518 /* TextSelectionNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D0C9CBCA2302C00600FAB518 /* TextSelectionNode.h */; settings = {ATTRIBUTES = (Public, ); }; };
+ D0C9CBD92302C2E600FAB518 /* TextSelectionNode.swift in Sources */ = {isa = PBXBuildFile; fileRef = D0C9CBD82302C2E600FAB518 /* TextSelectionNode.swift */; };
+ D0C9CBDC2302C31100FAB518 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBDB2302C31100FAB518 /* Foundation.framework */; };
+ D0C9CBDE2302C31500FAB518 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBDD2302C31500FAB518 /* UIKit.framework */; };
+ D0C9CBE02302C31800FAB518 /* AsyncDisplayKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBDF2302C31800FAB518 /* AsyncDisplayKit.framework */; };
+ D0C9CBE22302C31D00FAB518 /* Display.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D0C9CBE12302C31D00FAB518 /* Display.framework */; };
+/* End PBXBuildFile section */
+
+/* Begin PBXFileReference section */
+ D0C9CBC72302C00600FAB518 /* TextSelectionNode.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = TextSelectionNode.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBCA2302C00600FAB518 /* TextSelectionNode.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = TextSelectionNode.h; sourceTree = ""; };
+ D0C9CBCB2302C00600FAB518 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
+ D0C9CBD82302C2E600FAB518 /* TextSelectionNode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TextSelectionNode.swift; sourceTree = ""; };
+ D0C9CBDB2302C31100FAB518 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
+ D0C9CBDD2302C31500FAB518 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
+ D0C9CBDF2302C31800FAB518 /* AsyncDisplayKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = AsyncDisplayKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ D0C9CBE12302C31D00FAB518 /* Display.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Display.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+/* End PBXFileReference section */
+
+/* Begin PBXFrameworksBuildPhase section */
+ D0C9CBC42302C00600FAB518 /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CBE22302C31D00FAB518 /* Display.framework in Frameworks */,
+ D0C9CBE02302C31800FAB518 /* AsyncDisplayKit.framework in Frameworks */,
+ D0C9CBDE2302C31500FAB518 /* UIKit.framework in Frameworks */,
+ D0C9CBDC2302C31100FAB518 /* Foundation.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXFrameworksBuildPhase section */
+
+/* Begin PBXGroup section */
+ D0C9CBBD2302C00600FAB518 = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBCB2302C00600FAB518 /* Info.plist */,
+ D0C9CBC92302C00600FAB518 /* Sources */,
+ D0C9CBC82302C00600FAB518 /* Products */,
+ D0C9CBDA2302C30E00FAB518 /* Frameworks */,
+ );
+ sourceTree = "";
+ };
+ D0C9CBC82302C00600FAB518 /* Products */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBC72302C00600FAB518 /* TextSelectionNode.framework */,
+ );
+ name = Products;
+ sourceTree = "";
+ };
+ D0C9CBC92302C00600FAB518 /* Sources */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBD82302C2E600FAB518 /* TextSelectionNode.swift */,
+ D0C9CBCA2302C00600FAB518 /* TextSelectionNode.h */,
+ );
+ path = Sources;
+ sourceTree = "";
+ };
+ D0C9CBDA2302C30E00FAB518 /* Frameworks */ = {
+ isa = PBXGroup;
+ children = (
+ D0C9CBE12302C31D00FAB518 /* Display.framework */,
+ D0C9CBDF2302C31800FAB518 /* AsyncDisplayKit.framework */,
+ D0C9CBDD2302C31500FAB518 /* UIKit.framework */,
+ D0C9CBDB2302C31100FAB518 /* Foundation.framework */,
+ );
+ name = Frameworks;
+ sourceTree = "";
+ };
+/* End PBXGroup section */
+
+/* Begin PBXHeadersBuildPhase section */
+ D0C9CBC22302C00600FAB518 /* Headers */ = {
+ isa = PBXHeadersBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CBCC2302C00600FAB518 /* TextSelectionNode.h in Headers */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXHeadersBuildPhase section */
+
+/* Begin PBXNativeTarget section */
+ D0C9CBC62302C00600FAB518 /* TextSelectionNode */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = D0C9CBCF2302C00600FAB518 /* Build configuration list for PBXNativeTarget "TextSelectionNode" */;
+ buildPhases = (
+ D0C9CBC22302C00600FAB518 /* Headers */,
+ D0C9CBC32302C00600FAB518 /* Sources */,
+ D0C9CBC42302C00600FAB518 /* Frameworks */,
+ D0C9CBC52302C00600FAB518 /* Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = TextSelectionNode;
+ productName = TextSelectionNode;
+ productReference = D0C9CBC72302C00600FAB518 /* TextSelectionNode.framework */;
+ productType = "com.apple.product-type.framework";
+ };
+/* End PBXNativeTarget section */
+
+/* Begin PBXProject section */
+ D0C9CBBE2302C00600FAB518 /* Project object */ = {
+ isa = PBXProject;
+ attributes = {
+ DefaultBuildSystemTypeForWorkspace = Latest;
+ LastUpgradeCheck = 1030;
+ ORGANIZATIONNAME = "Telegram Messenger LLP";
+ TargetAttributes = {
+ D0C9CBC62302C00600FAB518 = {
+ CreatedOnToolsVersion = 10.3;
+ LastSwiftMigration = 1030;
+ };
+ };
+ };
+ buildConfigurationList = D0C9CBC12302C00600FAB518 /* Build configuration list for PBXProject "TextSelectionNode_Xcode" */;
+ compatibilityVersion = "Xcode 9.3";
+ developmentRegion = en;
+ hasScannedForEncodings = 0;
+ knownRegions = (
+ en,
+ );
+ mainGroup = D0C9CBBD2302C00600FAB518;
+ productRefGroup = D0C9CBC82302C00600FAB518 /* Products */;
+ projectDirPath = "";
+ projectRoot = "";
+ targets = (
+ D0C9CBC62302C00600FAB518 /* TextSelectionNode */,
+ );
+ };
+/* End PBXProject section */
+
+/* Begin PBXResourcesBuildPhase section */
+ D0C9CBC52302C00600FAB518 /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXResourcesBuildPhase section */
+
+/* Begin PBXSourcesBuildPhase section */
+ D0C9CBC32302C00600FAB518 /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ D0C9CBD92302C2E600FAB518 /* TextSelectionNode.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
+/* End PBXSourcesBuildPhase section */
+
+/* Begin XCBuildConfiguration section */
+ D0C9CBCD2302C00600FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CBCE2302C00600FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CBD02302C00600FAB518 /* DebugAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TextSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugAppStoreLLC;
+ };
+ D0C9CBD12302C00600FAB518 /* ReleaseAppStoreLLC */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TextSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseAppStoreLLC;
+ };
+ D0C9CBD22302C06100FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = dwarf;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ ENABLE_TESTABILITY = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_DYNAMIC_NO_PIC = NO;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_OPTIMIZATION_LEVEL = 0;
+ GCC_PREPROCESSOR_DEFINITIONS = (
+ "DEBUG=1",
+ "$(inherited)",
+ );
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
+ MTL_FAST_MATH = YES;
+ ONLY_ACTIVE_ARCH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CBD32302C06100FAB518 /* DebugHockeyapp */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TextSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_OPTIMIZATION_LEVEL = "-Onone";
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = DebugHockeyapp;
+ };
+ D0C9CBD42302C06E00FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ ALWAYS_SEARCH_USER_PATHS = NO;
+ CLANG_ANALYZER_NONNULL = YES;
+ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
+ CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
+ CLANG_CXX_LIBRARY = "libc++";
+ CLANG_ENABLE_MODULES = YES;
+ CLANG_ENABLE_OBJC_ARC = YES;
+ CLANG_ENABLE_OBJC_WEAK = YES;
+ CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
+ CLANG_WARN_BOOL_CONVERSION = YES;
+ CLANG_WARN_COMMA = YES;
+ CLANG_WARN_CONSTANT_CONVERSION = YES;
+ CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
+ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
+ CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
+ CLANG_WARN_EMPTY_BODY = YES;
+ CLANG_WARN_ENUM_CONVERSION = YES;
+ CLANG_WARN_INFINITE_RECURSION = YES;
+ CLANG_WARN_INT_CONVERSION = YES;
+ CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
+ CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
+ CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
+ CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
+ CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
+ CLANG_WARN_STRICT_PROTOTYPES = YES;
+ CLANG_WARN_SUSPICIOUS_MOVE = YES;
+ CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
+ CLANG_WARN_UNREACHABLE_CODE = YES;
+ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
+ CODE_SIGN_IDENTITY = "iPhone Developer";
+ COPY_PHASE_STRIP = NO;
+ CURRENT_PROJECT_VERSION = 1;
+ DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
+ ENABLE_NS_ASSERTIONS = NO;
+ ENABLE_STRICT_OBJC_MSGSEND = YES;
+ GCC_C_LANGUAGE_STANDARD = gnu11;
+ GCC_NO_COMMON_BLOCKS = YES;
+ GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
+ GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
+ GCC_WARN_UNDECLARED_SELECTOR = YES;
+ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
+ GCC_WARN_UNUSED_FUNCTION = YES;
+ GCC_WARN_UNUSED_VARIABLE = YES;
+ IPHONEOS_DEPLOYMENT_TARGET = 8.0;
+ MTL_ENABLE_DEBUG_INFO = NO;
+ MTL_FAST_MATH = YES;
+ SDKROOT = iphoneos;
+ SWIFT_COMPILATION_MODE = wholemodule;
+ SWIFT_OPTIMIZATION_LEVEL = "-O";
+ VALIDATE_PRODUCT = YES;
+ VERSIONING_SYSTEM = "apple-generic";
+ VERSION_INFO_PREFIX = "";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+ D0C9CBD52302C06E00FAB518 /* ReleaseHockeyappInternal */ = {
+ isa = XCBuildConfiguration;
+ buildSettings = {
+ CLANG_ENABLE_MODULES = YES;
+ CODE_SIGN_IDENTITY = "";
+ CODE_SIGN_STYLE = Manual;
+ DEFINES_MODULE = YES;
+ DEVELOPMENT_TEAM = "";
+ DYLIB_COMPATIBILITY_VERSION = 1;
+ DYLIB_CURRENT_VERSION = 1;
+ DYLIB_INSTALL_NAME_BASE = "@rpath";
+ INFOPLIST_FILE = Info.plist;
+ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks";
+ LD_RUNPATH_SEARCH_PATHS = (
+ "$(inherited)",
+ "@executable_path/Frameworks",
+ "@loader_path/Frameworks",
+ );
+ MACH_O_TYPE = staticlib;
+ PRODUCT_BUNDLE_IDENTIFIER = org.telegram.TextSelectionNode;
+ PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)";
+ PROVISIONING_PROFILE_SPECIFIER = "";
+ SKIP_INSTALL = YES;
+ SWIFT_VERSION = 5.0;
+ TARGETED_DEVICE_FAMILY = "1,2";
+ };
+ name = ReleaseHockeyappInternal;
+ };
+/* End XCBuildConfiguration section */
+
+/* Begin XCConfigurationList section */
+ D0C9CBC12302C00600FAB518 /* Build configuration list for PBXProject "TextSelectionNode_Xcode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CBCD2302C00600FAB518 /* DebugAppStoreLLC */,
+ D0C9CBD22302C06100FAB518 /* DebugHockeyapp */,
+ D0C9CBCE2302C00600FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CBD42302C06E00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+ D0C9CBCF2302C00600FAB518 /* Build configuration list for PBXNativeTarget "TextSelectionNode" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ D0C9CBD02302C00600FAB518 /* DebugAppStoreLLC */,
+ D0C9CBD32302C06100FAB518 /* DebugHockeyapp */,
+ D0C9CBD12302C00600FAB518 /* ReleaseAppStoreLLC */,
+ D0C9CBD52302C06E00FAB518 /* ReleaseHockeyappInternal */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = ReleaseAppStoreLLC;
+ };
+/* End XCConfigurationList section */
+ };
+ rootObject = D0C9CBBE2302C00600FAB518 /* Project object */;
+}